{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "taste-blocks",
  "homepage": "https://github.com/Leonxlnx/taste-skill",
  "items": [
    {
      "name": "9ui-command",
      "type": "registry:component",
      "title": "Command",
      "description": "Provides a searchable command list with grouped items, keyboard navigation, and an optional modal presentation.",
      "author": "borabaloglu",
      "dependencies": [
        "@base-ui/react@1.0.0",
        "clsx@2.1.1",
        "cmdk-base@1.0.0",
        "lucide-react@0.469.0",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/9ui/components/9ui-command/command.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/9ui-command.tsx"
        },
        {
          "path": "registry/sources/9ui/components/9ui-command/9ui-command-dialog.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/9ui-command-dialog.tsx"
        },
        {
          "path": "registry/sources/9ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "command",
            "search",
            "keyboard",
            "listbox",
            "dialog"
          ],
          "renderer": "dom",
          "preview": "previews/9ui-command.tsx",
          "source": {
            "project": "9ui",
            "repository": "https://github.com/borabaloglu/9ui",
            "revision": "3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/9ui-command/command.tsx",
                "upstreamPath": "apps/www/src/components/ui/command.tsx",
                "permalink": "https://github.com/borabaloglu/9ui/blob/3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb/apps/www/src/components/ui/command.tsx",
                "upstreamSha256": "sha256:2118d62bdfb78f92a2af9e20dcd6062daa733d1f89fe1acc59e787aedd3f691a",
                "contentSha256": "sha256:b1b9d3fedb39ef22525b95c539a56f88c7388d9faa7140d63c27acaacebf2769",
                "changes": [
                  "Changed the dialog and cn imports from upstream aliases to source-local relative paths and changed the shortcut margin to a logical RTL-aware utility."
                ]
              },
              {
                "shippedPath": "components/9ui-command/9ui-command-dialog.tsx",
                "upstreamPath": "apps/www/src/components/ui/dialog.tsx",
                "permalink": "https://github.com/borabaloglu/9ui/blob/3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb/apps/www/src/components/ui/dialog.tsx",
                "upstreamSha256": "sha256:fada575542fd784ae7f170ccc067f29f269bc9d78db58a01bee3326a6ff063a6",
                "contentSha256": "sha256:f6e48d42233ee117c8fb78b50ffa76748e349a2ad9154d525559e05399608270",
                "changes": [
                  "Renamed the internal support file, changed Base UI and cn imports to portable source-local subpaths, and replaced physical right/text-left utilities with logical RTL-aware utilities."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/src/lib/utils.ts",
                "permalink": "https://github.com/borabaloglu/9ui/blob/3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb/apps/www/src/lib/utils.ts",
                "upstreamSha256": "sha256:b59c7c66fc6ffec6ff38aeb4b4c518553190be9c32680e46ba1fb3db46f227f0",
                "contentSha256": "sha256:b59c7c66fc6ffec6ff38aeb4b4c518553190be9c32680e46ba1fb3db46f227f0",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/src/components/ui/command.tsx, apps/www/src/components/ui/dialog.tsx, and apps/www/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 borabaloglu"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/borabaloglu/9ui/blob/3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb/LICENSE.md",
              "sha256": "sha256:49bb3c9e3771f566f1d689dc9ffc356bd18621b003f974ada322a171a91d341f",
              "localPath": "registry/sources/9ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/9ui-command/command.tsx",
              "change": "Repointed local aliases to copied support files and changed ml-auto to ms-auto.",
              "reason": "Keep the item self-contained and preserve shortcut alignment in both LTR and RTL directions."
            },
            {
              "shippedPath": "components/9ui-command/9ui-command-dialog.tsx",
              "change": "Renamed the support target, used the Base UI dialog subpath and copied cn helper, and changed right/text-left utilities to end/text-start.",
              "reason": "Avoid a generic public Dialog target while keeping the copied closure portable and RTL-aware."
            }
          ],
          "dedupe": {
            "family": "filterable-command-menu",
            "sourceHash": "sha256:85064d6236d33e0d3a423e7ea84419c33eaf01567cb8004a0b44e625163d3552",
            "contentHash": "sha256:e5d523ab4a5a94433dd7f6815ad409b44b28bf4563e213d3b642aedd5e65d682",
            "structureHash": "sha256:7da5f8c20801a3d1c91b6952968947be64431d0e98ec5831f7ef900dbda5447b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "9ui-meter",
      "type": "registry:component",
      "title": "Meter",
      "description": "Displays a labeled scalar value within a known range using semantic meter markup.",
      "author": "borabaloglu",
      "dependencies": [
        "@base-ui/react@1.0.0",
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/9ui/components/9ui-meter/meter.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/9ui-meter.tsx"
        },
        {
          "path": "registry/sources/9ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "meter",
            "value",
            "range",
            "status",
            "semantic"
          ],
          "renderer": "dom",
          "preview": "previews/9ui-meter.tsx",
          "source": {
            "project": "9ui",
            "repository": "https://github.com/borabaloglu/9ui",
            "revision": "3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/9ui-meter/meter.tsx",
                "upstreamPath": "apps/www/src/components/ui/meter.tsx",
                "permalink": "https://github.com/borabaloglu/9ui/blob/3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb/apps/www/src/components/ui/meter.tsx",
                "upstreamSha256": "sha256:a9539d436fdef8817ae8a58baea11d70b55c5d132697d221b188d76041ca5590",
                "contentSha256": "sha256:dd546eb2823245f0d97a03179fd2ee6a042892fc7bab5d865de6ec0506991945",
                "changes": [
                  "Changed the cn import from the upstream alias to the copied source-local helper and stopped forwarding root-only props and className to the meter track."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/src/lib/utils.ts",
                "permalink": "https://github.com/borabaloglu/9ui/blob/3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb/apps/www/src/lib/utils.ts",
                "upstreamSha256": "sha256:b59c7c66fc6ffec6ff38aeb4b4c518553190be9c32680e46ba1fb3db46f227f0",
                "contentSha256": "sha256:b59c7c66fc6ffec6ff38aeb4b4c518553190be9c32680e46ba1fb3db46f227f0",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/src/components/ui/meter.tsx and apps/www/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 borabaloglu"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/borabaloglu/9ui/blob/3ec1af7cb6b7a3e402fb7955ea6c1142bb700abb/LICENSE.md",
              "sha256": "sha256:49bb3c9e3771f566f1d689dc9ffc356bd18621b003f974ada322a171a91d341f",
              "localPath": "registry/sources/9ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/9ui-meter/meter.tsx",
              "change": "Repointed the cn alias to the copied helper and removed root props and className from Meter.Track.",
              "reason": "Keep the item self-contained while preventing duplicate IDs, ARIA attributes, value props, and root styling on the visual track."
            }
          ],
          "dedupe": {
            "family": "semantic-scalar-meter",
            "sourceHash": "sha256:87fb161f72049922fc873fde6ce11dbdf4a8d4947623ef4e9fa7ffa1fbcdca43",
            "contentHash": "sha256:0f2af3eda1cfd9674051c8e31c1c7989f471bb38a287390a9f5affe131662b7e",
            "structureHash": "sha256:417d1129f60a3bf529a72c54705fd995ea96a8928b44ba2a985781db3388ee3e"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animata-card-stack",
      "type": "registry:component",
      "title": "Card Stack",
      "description": "Cycles a caller-provided stack of cards with click or optional autoplay transitions.",
      "author": "Animata",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.38.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animata/components/animata-card-stack/card-stack.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/card-stack.tsx"
        },
        {
          "path": "registry/sources/animata/hooks/use-prefers-reduced-motion.ts",
          "type": "registry:hook",
          "target": "@hooks/use-prefers-reduced-motion.ts"
        },
        {
          "path": "registry/sources/animata/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "cards",
            "stack",
            "shuffle"
          ],
          "renderer": "dom",
          "preview": "previews/animata-card-stack.tsx",
          "source": {
            "project": "Animata",
            "repository": "https://github.com/codse/animata",
            "revision": "de9aabb0eed14e0db944bb07720961ddc450c672",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animata-card-stack/card-stack.tsx",
                "upstreamPath": "animata/card/card-stack.tsx",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/animata/card/card-stack.tsx",
                "upstreamSha256": "sha256:c970b5741b897f6f8c38649c175ca050f108ae7c443a7eaf619ba9dc08b75fc3",
                "contentSha256": "sha256:b50fa98acae1034f8da1910ca6f90eac8c88ee4a54604b48f0011c5dc77d9167",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Changed the reduced-motion hook import from @/hooks/use-prefers-reduced-motion to ../../hooks/use-prefers-reduced-motion for the same source-batch and registry-target portability."
                ]
              },
              {
                "shippedPath": "hooks/use-prefers-reduced-motion.ts",
                "upstreamPath": "hooks/use-prefers-reduced-motion.ts",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/hooks/use-prefers-reduced-motion.ts",
                "upstreamSha256": "sha256:ac0b2e1b3cc655cc4c1a8bb0f02eb05f1abaca8846c95f6ec569722ca44fd7cb",
                "contentSha256": "sha256:ac0b2e1b3cc655cc4c1a8bb0f02eb05f1abaca8846c95f6ec569722ca44fd7cb",
                "changes": []
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/lib/utils.ts",
                "upstreamSha256": "sha256:5110cb256546ec57496878e69c7e8f338a0ba9caf3ac75eed9babb51dad06ecd",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Removed unrelated absoluteUrl, lerp, and getDistance exports; retained the upstream cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "animata/card/card-stack.tsx, hooks/use-prefers-reduced-motion.ts, and lib/utils.ts",
            "copyright": [
              "Copyright (c) Animata"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/LICENSE.md",
              "sha256": "sha256:ff78804659cbc28380d087cae79c494f243f8ef22b1e2ac5ec119b5de9314f05",
              "localPath": "registry/sources/animata/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animata-card-stack/card-stack.tsx",
              "change": "Changed the cn and reduced-motion hook imports from root aliases to ../../lib/utils and ../../hooks/use-prefers-reduced-motion.",
              "reason": "Resolve the bundled upstream support files from both the source batch and installation target."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed the unrelated absoluteUrl, lerp, and getDistance exports.",
              "reason": "Keep the copied support closure limited to the upstream cn export used by these components."
            }
          ],
          "dedupe": {
            "family": "looping-card-stack",
            "sourceHash": "sha256:d822fdbec3e9d6f20255ce4eb22b5e87057d5a41e457c6e575e9206a3d23af66",
            "contentHash": "sha256:46401e6f53b4a23aa8d7ddaa7118fb1e3028719446266bfe0c3666d0f1b2f54b",
            "structureHash": "sha256:dc4b2cb7f062c09d681b321c449611f0501451c6d25cfd132eb30abf5626a1c7"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animata-disclose-image",
      "type": "registry:component",
      "title": "Disclose Image",
      "description": "Reveals a caller-provided image with paired sliding panels after it loads.",
      "author": "Animata",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animata/components/animata-disclose-image/disclose-image.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/disclose-image.tsx"
        },
        {
          "path": "registry/sources/animata/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "cssVars": {
        "theme": {
          "--ease-slow": "cubic-bezier(.405, 0, .025, 1)",
          "--duration-mid": "3s"
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "image",
            "reveal",
            "panels"
          ],
          "renderer": "dom",
          "preview": "previews/animata-disclose-image.tsx",
          "source": {
            "project": "Animata",
            "repository": "https://github.com/codse/animata",
            "revision": "de9aabb0eed14e0db944bb07720961ddc450c672",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animata-disclose-image/disclose-image.tsx",
                "upstreamPath": "animata/image/disclose-image.tsx",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/animata/image/disclose-image.tsx",
                "upstreamSha256": "sha256:f21230012262949c328f148475ba685b3900b90edbcbea038630fb4ed7966841",
                "contentSha256": "sha256:4cf94bc6284c52320615966eb327bcfc564cffac99251f27ecf20a9280ee45ab",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Added an explicit client boundary and replaced the fixed outer dimensions with a responsive aspect frame that inherits its width from the caller's parent layout.",
                  "Preserved caller onLoad handlers, replaced tw-animate-css-only entrance utilities with core transform transitions, and hid the disclosure panels under reduced motion."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/lib/utils.ts",
                "upstreamSha256": "sha256:5110cb256546ec57496878e69c7e8f338a0ba9caf3ac75eed9babb51dad06ecd",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Removed unrelated absoluteUrl, lerp, and getDistance exports; retained the upstream cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "animata/image/disclose-image.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) Animata"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/LICENSE.md",
              "sha256": "sha256:ff78804659cbc28380d087cae79c494f243f8ef22b1e2ac5ec119b5de9314f05",
              "localPath": "registry/sources/animata/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animata-disclose-image/disclose-image.tsx",
              "change": "Changed the cn import to ../../lib/utils, added an explicit client boundary, replaced fixed dimensions with a parent-sized responsive aspect frame, preserved caller onLoad handlers, replaced plugin-only entrance utilities with core transform transitions, and added a reduced-motion panel fallback.",
              "reason": "Keep the copied component portable and responsive while preserving its paired-panel reveal without requiring undeclared animation CSS or forcing motion-sensitive users through the transition."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed the unrelated absoluteUrl, lerp, and getDistance exports.",
              "reason": "Keep the copied support closure limited to the upstream cn export used by these components."
            }
          ],
          "dedupe": {
            "family": "image-panel-disclosure",
            "sourceHash": "sha256:bf7c023a6de0d2e63612930f9ba41e037fb3c7a60af65cfd3a1c7a00f062481f",
            "contentHash": "sha256:a77df478bc293f5a5d727b6895b6d9388b1e398362505e1e0420f3a73187c5b4",
            "structureHash": "sha256:f993125bd93c627c2d1eb7cc79dda61d0950c376c4231d0f75a793fbd84bd9c9"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animata-sibling-focus-nav",
      "type": "registry:component",
      "title": "Sibling Focus Nav",
      "description": "Dims or blurs sibling links while one navigation item is hovered or keyboard-focused.",
      "author": "Animata",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animata/components/animata-sibling-focus-nav/sibling-focus-nav.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/sibling-focus-nav.tsx"
        },
        {
          "path": "registry/sources/animata/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "navigation",
            "focus",
            "siblings"
          ],
          "renderer": "dom",
          "preview": "previews/animata-sibling-focus-nav.tsx",
          "source": {
            "project": "Animata",
            "repository": "https://github.com/codse/animata",
            "revision": "de9aabb0eed14e0db944bb07720961ddc450c672",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animata-sibling-focus-nav/sibling-focus-nav.tsx",
                "upstreamPath": "animata/container/sibling-focus-nav.tsx",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/animata/container/sibling-focus-nav.tsx",
                "upstreamSha256": "sha256:66edbec2d98ae323de2365b0359ca7b1c6d440f11dcc0cf9bcec823890af84e3",
                "contentSha256": "sha256:c006f2398aa0a06ec436388c3179f4bb8f7ca5dc475e5cd814553975c9bbfe56",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/lib/utils.ts",
                "upstreamSha256": "sha256:5110cb256546ec57496878e69c7e8f338a0ba9caf3ac75eed9babb51dad06ecd",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Removed unrelated absoluteUrl, lerp, and getDistance exports; retained the upstream cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "animata/container/sibling-focus-nav.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) Animata"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/LICENSE.md",
              "sha256": "sha256:ff78804659cbc28380d087cae79c494f243f8ef22b1e2ac5ec119b5de9314f05",
              "localPath": "registry/sources/animata/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animata-sibling-focus-nav/sibling-focus-nav.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils.",
              "reason": "Resolve the bundled upstream utility from both the source batch and installation target without relying on a consumer root alias."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed the unrelated absoluteUrl, lerp, and getDistance exports.",
              "reason": "Keep the copied support closure limited to the upstream cn export used by these components."
            }
          ],
          "dedupe": {
            "family": "sibling-focus-navigation",
            "sourceHash": "sha256:9a32de0fe9a5a618cd18fc53ce707c418fd619d96a187375ad96d1803170861b",
            "contentHash": "sha256:44be3c7aa11e9d6a5f0914e9681ab860395aa0f9ebf8e3511bfcfccbc525521d",
            "structureHash": "sha256:2f1f5da4d93b364b94e907a68534712347a9ae5be295f36dc30bf3a78581a75b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animata-swap-text",
      "type": "registry:component",
      "title": "Swap Text",
      "description": "Swaps between two caller-provided text values on click or hover.",
      "author": "Animata",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animata/components/animata-swap-text/swap-text.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/swap-text.tsx"
        },
        {
          "path": "registry/sources/animata/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "cssVars": {
        "theme": {
          "--ease-slow": "cubic-bezier(.405, 0, .025, 1)"
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "swap",
            "hover"
          ],
          "renderer": "dom",
          "preview": "previews/animata-swap-text.tsx",
          "source": {
            "project": "Animata",
            "repository": "https://github.com/codse/animata",
            "revision": "de9aabb0eed14e0db944bb07720961ddc450c672",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animata-swap-text/swap-text.tsx",
                "upstreamPath": "animata/text/swap-text.tsx",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/animata/text/swap-text.tsx",
                "upstreamSha256": "sha256:97f72d213a2cc55d2bdefaecc4242db3c81fdadc1a4f9694c50d415b9f31a902",
                "contentSha256": "sha256:cbc022c2a5e178a4f8ac9d31bdfdbe9e1d15a5ed85a23ef95d623d1b8dc6cc77",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Added an explicit client boundary.",
                  "Exposed only the visually current phrase as the button accessible name, marked visual duplicates aria-hidden, and exposed persistent click state with aria-pressed.",
                  "Reduced the transform from 1000ms to 300ms, added a reduced-motion path, and synchronized optional hover behavior with keyboard focus while disabling hover-only behavior when clicks are disabled."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/lib/utils.ts",
                "upstreamSha256": "sha256:5110cb256546ec57496878e69c7e8f338a0ba9caf3ac75eed9babb51dad06ecd",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Removed unrelated absoluteUrl, lerp, and getDistance exports; retained the upstream cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "animata/text/swap-text.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) Animata"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/codse/animata/blob/de9aabb0eed14e0db944bb07720961ddc450c672/LICENSE.md",
              "sha256": "sha256:ff78804659cbc28380d087cae79c494f243f8ef22b1e2ac5ec119b5de9314f05",
              "localPath": "registry/sources/animata/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animata-swap-text/swap-text.tsx",
              "change": "Changed the cn import to ../../lib/utils, added a client boundary, made the current phrase the sole accessible name with aria-pressed state, shortened the transition, added reduced-motion handling, and synchronized hover with keyboard focus.",
              "reason": "Preserve the authored two-phrase swap while making its visible state semantic, its optional hover behavior keyboard-equivalent, and its motion bounded and suppressible."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed the unrelated absoluteUrl, lerp, and getDistance exports.",
              "reason": "Keep the copied support closure limited to the upstream cn export used by these components."
            }
          ],
          "dedupe": {
            "family": "interactive-text-swap",
            "sourceHash": "sha256:01f3b5347628e837f179ff103572bb94ddb92066d105ee0ba6c177b410b40089",
            "contentHash": "sha256:8363c1bbd2dc3324d2f6b5da643061313892512266828040e36aeaa01a11bc3e",
            "structureHash": "sha256:3bdacd99804231eef5dd4426cbd806727aae2c6a57ece8364592feaeb9b8a325"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-a-arrow-down",
      "type": "registry:component",
      "title": "Animated A Arrow Down Icon",
      "description": "Renders an animated a arrow down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-a-arrow-down/a-arrow-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-a-arrow-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "a-arrow-down",
            "animated",
            "icon",
            "motion",
            "letter",
            "font-size",
            "text",
            "formatting",
            "smaller"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-a-arrow-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-a-arrow-down/a-arrow-down-icon.tsx",
                "upstreamPath": "icons/lucide/a-arrow-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/a-arrow-down-icon.tsx",
                "upstreamSha256": "sha256:31cad7262f05de17180bb371b0fae9538553a285ccfba68cd846b7e2d96d2bd5",
                "contentSha256": "sha256:77fa786fc245d3f1952ba8822f1fe8592db0619d920473a5d36fe2e28276b56f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/a-arrow-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-a-arrow-down/a-arrow-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-a-arrow-down-icon",
            "sourceHash": "sha256:bf203b6e46ecf9c5d969fd3ac0e475501937b3677d356ba399a674fe7a3ef9ba",
            "contentHash": "sha256:e3ff97164b54203a523543081076a752fb9368df374dcde1f6b5406b85c8d144",
            "structureHash": "sha256:985227841ee1adb78b12418f6548ec0cac5bd53731fc108427f8d8df3d1f2b2a",
            "glyph": {
              "inventoryName": "a-arrow-down",
              "canonicalName": "a-arrow-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-a-arrow-up",
      "type": "registry:component",
      "title": "Animated A Arrow Up Icon",
      "description": "Renders an animated a arrow up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-a-arrow-up/a-arrow-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-a-arrow-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "a-arrow-up",
            "animated",
            "icon",
            "motion",
            "letter",
            "font-size",
            "text",
            "formatting",
            "bigger"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-a-arrow-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-a-arrow-up/a-arrow-up-icon.tsx",
                "upstreamPath": "icons/lucide/a-arrow-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/a-arrow-up-icon.tsx",
                "upstreamSha256": "sha256:f6e5725d9a0251a6748caba135afdc8a3a613b27f90ad125131803ea31ea228f",
                "contentSha256": "sha256:70e6b5940ea81230e71a4cd3de9cd3e9fc9a83a779dab79abad9d9e12d9065af",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/a-arrow-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-a-arrow-up/a-arrow-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-a-arrow-up-icon",
            "sourceHash": "sha256:1e0251e6a883aa2a8655929f19a94453f39768e43f4e835e264ec3c4b178cedf",
            "contentHash": "sha256:57ecf48fd2e27d500007c1f481a22ad6d48b0a70d2f1b53335ea6896659d2ee6",
            "structureHash": "sha256:e3e3bb10a0630664b308d54a382d3e9d79eef19e28ad071809e4468ab456ed55",
            "glyph": {
              "inventoryName": "a-arrow-up",
              "canonicalName": "a-arrow-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-accessibility",
      "type": "registry:component",
      "title": "Animated Accessibility Icon",
      "description": "Renders an animated accessibility SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-accessibility/accessibility-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-accessibility.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "accessibility",
            "animated",
            "icon",
            "motion",
            "a11y",
            "inclusive",
            "handicap"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-accessibility.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-accessibility/accessibility-icon.tsx",
                "upstreamPath": "icons/lucide/accessibility-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/accessibility-icon.tsx",
                "upstreamSha256": "sha256:c58b829a6b210d6b9293fa6c57f410704a5ad2cd607193dddb6cc74768aef7d2",
                "contentSha256": "sha256:06ae68f251f22317d72bbfeca19c1c16c0d26b99eada9495dc967eb54bfc050e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/accessibility-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-accessibility/accessibility-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-accessibility-icon",
            "sourceHash": "sha256:d5e402785dd23a38812462715b1df56bf90cc676e5c888287033659be98bf3bd",
            "contentHash": "sha256:f9177be66e77a1379c827487d0e8d1cf38935d6db4de5c1857fdf12c4b91f2c2",
            "structureHash": "sha256:43fc57905a244bef461d3175a436f0098e6727e625152c46cd6e45d698e196ad",
            "glyph": {
              "inventoryName": "accessibility",
              "canonicalName": "accessibility",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-activity",
      "type": "registry:component",
      "title": "Animated Activity Icon",
      "description": "Renders an animated activity SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-activity/activity-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-activity.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "activity",
            "animated",
            "icon",
            "motion",
            "pulse",
            "health",
            "fitness",
            "monitor"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-activity.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-activity/activity-icon.tsx",
                "upstreamPath": "icons/lucide/activity-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/activity-icon.tsx",
                "upstreamSha256": "sha256:6dd33546019e193f6517497c07d134cc14b30b1c6a766bb1eb3f66f237fb4647",
                "contentSha256": "sha256:a5d2b568232fec567631da2c3e301bfbc2eade9fa0fe03a2207f8df1266bab27",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/activity-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-activity/activity-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-activity-icon",
            "sourceHash": "sha256:76e2ceedfc4f29516cb4ecd60818889badb24671b2ce1b1166176b8014eb7d7f",
            "contentHash": "sha256:d0b8a1e519d074ff6ff253540def721848625de27dffaf67ad360129d906f724",
            "structureHash": "sha256:a3b3e30bb99ff93df90097ca05bea6842e1ece7443e2e7a6e981217702f7e5f7",
            "glyph": {
              "inventoryName": "activity",
              "canonicalName": "activity",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-angry",
      "type": "registry:component",
      "title": "Animated Angry Icon",
      "description": "Renders an animated angry SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-angry/angry-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-angry.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "angry",
            "animated",
            "icon",
            "motion",
            "rage",
            "furious",
            "frustration",
            "error-state",
            "warning"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-angry.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-angry/angry-icon.tsx",
                "upstreamPath": "icons/lucide/angry-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/angry-icon.tsx",
                "upstreamSha256": "sha256:7fa490bc850e1141bb6a5032770d01b0e3738e54327ad92bb7c1dd2b02e223f0",
                "contentSha256": "sha256:1ee2be98b0d7daeb8d65e8bb29774caf41496f4b545714672f10ada23dedf0ad",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/angry-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-angry/angry-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-angry-icon",
            "sourceHash": "sha256:4fca60ecfac783b464671f5917b5b38eccf65c2775787158404c5693a3c73479",
            "contentHash": "sha256:6f412a769c6cca696fa404d49ae8a9d478134e3172986b90d62871945e4b3546",
            "structureHash": "sha256:62e5efe3f943c7190d6106eba7d839e51628c361de49609f4ae2a16b4988065c",
            "glyph": {
              "inventoryName": "angry",
              "canonicalName": "angry",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-annoyed",
      "type": "registry:component",
      "title": "Animated Annoyed Icon",
      "description": "Renders an animated annoyed SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-annoyed/annoyed-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-annoyed.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "annoyed",
            "animated",
            "icon",
            "motion",
            "irritated",
            "unimpressed",
            "tired",
            "minor-error",
            "subtle-feedback"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-annoyed.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-annoyed/annoyed-icon.tsx",
                "upstreamPath": "icons/lucide/annoyed-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/annoyed-icon.tsx",
                "upstreamSha256": "sha256:81262e2082c5fa8cf94bb0bc8c46e4a39896dfab5e223feabe0154c84b79342e",
                "contentSha256": "sha256:0859973049d917e1784049f7300cb50944b5c6826e20dcb259fa1adcdf57acce",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/annoyed-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-annoyed/annoyed-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-annoyed-icon",
            "sourceHash": "sha256:03b982fdb046c2dadf6c0d76ad1e32be00f76f9351ac0b502f919fd1e6ac06ea",
            "contentHash": "sha256:9e46ed642194537c1bfabcd9b4c3a18e6a8ace52935850aa1fc3d6b08a90f751",
            "structureHash": "sha256:a2e8458b61f5e95e4d3a25cbb6974daf740d22655f562d64183a29cc90f6f988",
            "glyph": {
              "inventoryName": "annoyed",
              "canonicalName": "annoyed",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-arrow-down-up",
      "type": "registry:component",
      "title": "Animated Arrow Down Up Icon",
      "description": "Renders an animated arrow down up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-arrow-down-up/arrow-down-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-arrow-down-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "arrow-down-up",
            "animated",
            "icon",
            "motion",
            "sort",
            "filter",
            "swap",
            "order",
            "switch",
            "move"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-arrow-down-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-arrow-down-up/arrow-down-up-icon.tsx",
                "upstreamPath": "icons/lucide/arrow-down-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/arrow-down-up-icon.tsx",
                "upstreamSha256": "sha256:4d8fb0a61d3704d443c9bbf0702e11b80555c37e99a9fc56f7aa8b32575f2ade",
                "contentSha256": "sha256:3831fb488a103a2765f00c839d4c1a757553dfea31abaa49742a05788c3a709a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/arrow-down-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-arrow-down-up/arrow-down-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-arrow-down-up-icon",
            "sourceHash": "sha256:7cbb7cf68a0a4f09e9098bb59ffeac069a9efa38d43c5a3ad29d3577df2f0a77",
            "contentHash": "sha256:4d9c87c6ca603be87ed4e47e31e999cd71276b22fdea475412e4b822e28b13a2",
            "structureHash": "sha256:84608a9acf34712ebe060ea5384c0de5408b0cd85d2816bfdcdda4f497ea6ede",
            "glyph": {
              "inventoryName": "arrow-down-up",
              "canonicalName": "arrow-down-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-arrow-up-0-1",
      "type": "registry:component",
      "title": "Animated Arrow Up 0 1 Icon",
      "description": "Renders an animated arrow up 0 1 SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-arrow-up-0-1/arrow-up-0-1-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-arrow-up-0-1.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "arrow-up-0-1",
            "animated",
            "icon",
            "motion",
            "filter",
            "sort",
            "ascending",
            "numerical",
            "order",
            "rank"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-arrow-up-0-1.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-arrow-up-0-1/arrow-up-0-1-icon.tsx",
                "upstreamPath": "icons/lucide/arrow-up-0-1-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/arrow-up-0-1-icon.tsx",
                "upstreamSha256": "sha256:50b818a146b723ce2b3cf8c1ff03caff0e4b008163d1c42a11b7a898b72bd528",
                "contentSha256": "sha256:0cb32c74b00ae6debb900dea431eaec6676fedb72d76cb6b07bf8b1adc84650c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/arrow-up-0-1-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-arrow-up-0-1/arrow-up-0-1-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-arrow-up-0-1-icon",
            "sourceHash": "sha256:164357290777b6f6c9c9c55c31290d64680bfe2615bc7c1df2c79634e26a7270",
            "contentHash": "sha256:d236759f3a0106e8efdcc93a4539f83ac72ba891a3ee0d76bfd3252ebf72deb6",
            "structureHash": "sha256:e734436afa83712b576fd5939e1668ff2fe60cfe30e75540b808844550eb3080",
            "glyph": {
              "inventoryName": "arrow-up-0-1",
              "canonicalName": "arrow-up-0-1",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-arrow-up-1-0",
      "type": "registry:component",
      "title": "Animated Arrow Up 1 0 Icon",
      "description": "Renders an animated arrow up 1 0 SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-arrow-up-1-0/arrow-up-1-0-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-arrow-up-1-0.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "arrow-up-1-0",
            "animated",
            "icon",
            "motion",
            "filter",
            "sort",
            "descending",
            "numerical",
            "order",
            "rank"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-arrow-up-1-0.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-arrow-up-1-0/arrow-up-1-0-icon.tsx",
                "upstreamPath": "icons/lucide/arrow-up-1-0-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/arrow-up-1-0-icon.tsx",
                "upstreamSha256": "sha256:710524e0dc58cc096f078f70723cfa02777ad54011553e52cbf20ddf2f203ba9",
                "contentSha256": "sha256:df3d6aa5f9e9b778cf3eff2888a56bc5db7257d2ef225a4a40d5220b9203b037",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/arrow-up-1-0-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-arrow-up-1-0/arrow-up-1-0-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-arrow-up-1-0-icon",
            "sourceHash": "sha256:2a3434202ce66f1104c8bf501282f1e5046e9ae9786059205a3ba3720b380450",
            "contentHash": "sha256:7212463308fd96f30f294f588b77fdad6f5f80620ad71c4b4216bccadd143bc7",
            "structureHash": "sha256:50bb353500c27d4482a4f1fa5c7bf11ec7dba41fc0ccc4fc6b1a15ef007ed606",
            "glyph": {
              "inventoryName": "arrow-up-1-0",
              "canonicalName": "arrow-up-1-0",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-arrow-up-a-z",
      "type": "registry:component",
      "title": "Animated Arrow Up A Z Icon",
      "description": "Renders an animated arrow up a z SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-arrow-up-a-z/arrow-up-a-z-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-arrow-up-a-z.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "arrow-up-a-z",
            "animated",
            "icon",
            "motion",
            "filter",
            "sort",
            "ascending",
            "alphabetical",
            "order",
            "rank"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-arrow-up-a-z.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-arrow-up-a-z/arrow-up-a-z-icon.tsx",
                "upstreamPath": "icons/lucide/arrow-up-a-z-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/arrow-up-a-z-icon.tsx",
                "upstreamSha256": "sha256:2bd78a1d5667e39925204dfd1921f3badef3659d44596ad8aa355ae1905b1884",
                "contentSha256": "sha256:d92e063ae3f7edc3bb4f1c8fff1bba808ad4e014306a8d66ebef11a62cd9cbf4",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/arrow-up-a-z-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-arrow-up-a-z/arrow-up-a-z-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-arrow-up-a-z-icon",
            "sourceHash": "sha256:bdf1cdb422e9031ea4bb3fa11490840ed9c72a2ebcab758bd7e65a5d245c8fde",
            "contentHash": "sha256:d078599542e1ffb1a9f33353ff0afc4d499eef99e7f5390c08d1a9a1979a8a3f",
            "structureHash": "sha256:393d0757f654d1072644e57b6f05ba37ca9b369fe791f4f4d20ce1e1b4f3ccaa",
            "glyph": {
              "inventoryName": "arrow-up-a-z",
              "canonicalName": "arrow-up-a-z",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-arrow-up-z-a",
      "type": "registry:component",
      "title": "Animated Arrow Up Z A Icon",
      "description": "Renders an animated arrow up z a SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-arrow-up-z-a/arrow-up-z-a-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-arrow-up-z-a.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "arrow-up-z-a",
            "animated",
            "icon",
            "motion",
            "filter",
            "sort",
            "descending",
            "alphabetical",
            "order",
            "rank"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-arrow-up-z-a.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-arrow-up-z-a/arrow-up-z-a-icon.tsx",
                "upstreamPath": "icons/lucide/arrow-up-z-a-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/arrow-up-z-a-icon.tsx",
                "upstreamSha256": "sha256:c6f4927d98ea3fcae095c4ed80755206368b281dc2fecdb7fa1dc6fa39497500",
                "contentSha256": "sha256:ca67ba4c58abf4041e0efd784db51a1ec6fce220baf4379d04e66654b1c82a57",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/arrow-up-z-a-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-arrow-up-z-a/arrow-up-z-a-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-arrow-up-z-a-icon",
            "sourceHash": "sha256:e62b2e82d43f04f17ca05ac494bb4134f3a278d62e01416d9271058b141a0818",
            "contentHash": "sha256:72b4c2101fdea313d206eb24c76606933775dcfaaf39f55b9e1ee1c30452ade3",
            "structureHash": "sha256:dcc69623d3bb60eb17a5afdf020a5b97a1b3e89af80973b52f2a0a32cf5b68e4",
            "glyph": {
              "inventoryName": "arrow-up-z-a",
              "canonicalName": "arrow-up-z-a",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-atom",
      "type": "registry:component",
      "title": "Animated Atom Icon",
      "description": "Renders an animated atom SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-atom/atom-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-atom.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "atom",
            "animated",
            "icon",
            "motion",
            "nuclear",
            "physics",
            "energy",
            "science",
            "chemistry"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-atom.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-atom/atom-icon.tsx",
                "upstreamPath": "icons/lucide/atom-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/atom-icon.tsx",
                "upstreamSha256": "sha256:075a082b6fdccf2fefca0c8d37f82d544cedecf429349432183a85b02b59abe4",
                "contentSha256": "sha256:30277b62903d8dbaf2d6f1c3147f5c13dd49072ecb9bb8aa0f203a739b75612d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/atom-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-atom/atom-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-atom-icon",
            "sourceHash": "sha256:b05ae5995ec42ed24f1bff016a8a7600bc127bdf6eed4bc0416f85a1d406b05e",
            "contentHash": "sha256:72e390a01a36bc2050abcbd608563c8ed5fd11d299b628345303c1dab458b82c",
            "structureHash": "sha256:b17952ea6976a3f449458e2bd0f1b5193812d6688e0823ad4d2c4152a4e913f9",
            "glyph": {
              "inventoryName": "atom",
              "canonicalName": "atom",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-audio-lines",
      "type": "registry:component",
      "title": "Animated Audio Lines Icon",
      "description": "Renders an animated audio lines SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-audio-lines/audio-lines-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-audio-lines.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "audio-lines",
            "animated",
            "icon",
            "motion",
            "sound",
            "music",
            "waveform",
            "volume",
            "equalizer",
            "voice"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-audio-lines.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-audio-lines/audio-lines-icon.tsx",
                "upstreamPath": "icons/lucide/audio-lines-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/audio-lines-icon.tsx",
                "upstreamSha256": "sha256:54484567599be119afd5c91042723f90e6cb1648c6833494e71813cf19e5b042",
                "contentSha256": "sha256:953eab611ab221d605d6a7e4c25fe466d9c8c2d146bdafea6dbcd6e227110de7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/audio-lines-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-audio-lines/audio-lines-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-audio-lines-icon",
            "sourceHash": "sha256:2bf229d46d5d13ec433b501fcbefe8dbdaa1e0be955aef4f1142bce41f6b046b",
            "contentHash": "sha256:147b8e9c47527d690330da998ff12c6699ac998dd5846b65501591cad55da75a",
            "structureHash": "sha256:01ff3424c9440c553bb5a562688ce84d00ced1ade14ce6dce2a42145a9f1cc60",
            "glyph": {
              "inventoryName": "audio-lines",
              "canonicalName": "audio-lines",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-badge-cent",
      "type": "registry:component",
      "title": "Animated Badge Cent Icon",
      "description": "Renders an animated badge cent SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-badge-cent/badge-cent-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-badge-cent.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "badge-cent",
            "animated",
            "icon",
            "motion",
            "discount",
            "offer",
            "sale",
            "badge",
            "price",
            "deal"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-badge-cent.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-badge-cent/badge-cent-icon.tsx",
                "upstreamPath": "icons/lucide/badge-cent-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/badge-cent-icon.tsx",
                "upstreamSha256": "sha256:c7f240642cfff260be55729b3f3990d873c35e3c5f57cd16cbe74ac58935d333",
                "contentSha256": "sha256:6f97a7fad9618d2d737fd7cce46cdbb111e64e782beb8f07cfd636cfb2605c44",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/badge-cent-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-badge-cent/badge-cent-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-badge-cent-icon",
            "sourceHash": "sha256:a94025050bd94b50205e0b28053a5324f04b485570c9894fd1d7b6e3ac42352b",
            "contentHash": "sha256:26b250cea6616c00cc9171c8aa1efdd5cc602874ee13723218e29f79de7aa9bb",
            "structureHash": "sha256:29161af575004a4badaa61acda91939c5dc7a16bbd95e5280ddb3769aafa302e",
            "glyph": {
              "inventoryName": "badge-cent",
              "canonicalName": "badge-cent",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-badge-dollar",
      "type": "registry:component",
      "title": "Animated Badge Dollar Icon",
      "description": "Renders an animated badge dollar SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-badge-dollar/badge-dollar-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-badge-dollar.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "badge-dollar",
            "badge-dollar-sign",
            "animated",
            "icon",
            "motion",
            "discount",
            "offer",
            "sale",
            "badge",
            "price",
            "deal"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-badge-dollar.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-badge-dollar/badge-dollar-icon.tsx",
                "upstreamPath": "icons/lucide/badge-dollar-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/badge-dollar-icon.tsx",
                "upstreamSha256": "sha256:eb9f9009bba95ede8e7d57661c173776d57890725ca1c3f4c9c47b532313ef12",
                "contentSha256": "sha256:b02fb3fb9e7d20bed0be7c3e921ecf0c1fb3c59170442e52bc414495577da00b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/badge-dollar-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-badge-dollar/badge-dollar-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-badge-dollar-sign-icon",
            "sourceHash": "sha256:d6858a179e3b6cf935c274934c36c57bc455e864b777871f41615fe55b647674",
            "contentHash": "sha256:7df3452315680863aa8c73eb7e58d74a1f1bd59e9f5a0cda349e51fb3400712b",
            "structureHash": "sha256:596c8182b2f3727301e0b21d616ea5e6c23c18428aae75480814bd917592e5d2",
            "glyph": {
              "inventoryName": "badge-dollar",
              "canonicalName": "badge-dollar-sign",
              "aliases": [
                "badge-dollar"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-baggage-claim",
      "type": "registry:component",
      "title": "Animated Baggage Claim Icon",
      "description": "Renders an animated baggage claim SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-baggage-claim/baggage-claim-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-baggage-claim.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "baggage-claim",
            "animated",
            "icon",
            "motion",
            "baggage",
            "luggage",
            "airport",
            "travel",
            "suitcase",
            "claim"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-baggage-claim.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-baggage-claim/baggage-claim-icon.tsx",
                "upstreamPath": "icons/lucide/baggage-claim-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/baggage-claim-icon.tsx",
                "upstreamSha256": "sha256:f63411ec9972d481b0f8960b30bd3f88e2511c6a8ac714fc49c5d697655bf920",
                "contentSha256": "sha256:e03a8db15c69b980827ed124e630231c8eaad528ec0ff4247ecee5daa9bcf350",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/baggage-claim-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-baggage-claim/baggage-claim-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-baggage-claim-icon",
            "sourceHash": "sha256:7902e34924ab3eae63ee49aedd9dc275a69c681d67ac5365c0e13a83f588a4ac",
            "contentHash": "sha256:a3f2078461e40cab3748fa4df6cc2cfe0740dc090a67354db2afda9caa9383ff",
            "structureHash": "sha256:5af79a9c26f57d7ffa91f8c3dc29e055da41e104b9f012a6cd36367aa9acf8e3",
            "glyph": {
              "inventoryName": "baggage-claim",
              "canonicalName": "baggage-claim",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-battery",
      "type": "registry:component",
      "title": "Animated Battery Icon",
      "description": "Renders an animated battery SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-battery/battery-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-battery.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "battery",
            "animated",
            "icon",
            "motion",
            "power",
            "charge",
            "energy",
            "status",
            "level"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-battery.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-battery/battery-icon.tsx",
                "upstreamPath": "icons/lucide/battery-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/battery-icon.tsx",
                "upstreamSha256": "sha256:b5afd047ba6210303dd1dcf8a716c3b19f4710408064938a403013e3b7684c92",
                "contentSha256": "sha256:5ed73ae35988f8e2293b55639c782ea9bab13c5360eb0aac5f9ee8800a785f82",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/battery-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-battery/battery-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-battery-icon",
            "sourceHash": "sha256:1a918a322eb8f0af365f72a5ff01ca9466d7f8bb6c28de0877a0c207f31daa5a",
            "contentHash": "sha256:5311ee8b3ce3e24ad2a963f87ec28f9be043c069bc3e0a9c16b8f6ceba2fb3c2",
            "structureHash": "sha256:cf21ed9fc57bfc7ee1db9373130b1eed836d4182d7b55ec019e567673d7e39dd",
            "glyph": {
              "inventoryName": "battery",
              "canonicalName": "battery",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-battery-full",
      "type": "registry:component",
      "title": "Animated Battery Full Icon",
      "description": "Renders an animated battery full SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-battery-full/battery-full-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-battery-full.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "battery-full",
            "animated",
            "icon",
            "motion",
            "power",
            "charge",
            "energy",
            "full",
            "status"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-battery-full.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-battery-full/battery-full-icon.tsx",
                "upstreamPath": "icons/lucide/battery-full-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/battery-full-icon.tsx",
                "upstreamSha256": "sha256:591a13dea10b17a69d3a7cc5bc04c01447ddb1d00da6a97f885e6f3cfbd183b2",
                "contentSha256": "sha256:8c5befe547ef3a57093884124a38fc6b9135b02d4ffc393e8d796b88378226bc",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/battery-full-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-battery-full/battery-full-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-battery-full-icon",
            "sourceHash": "sha256:da8f0536263ea630ecc29c5c5c87950e9c88c731ae5a2214215c8bbe077402cc",
            "contentHash": "sha256:6934a82c7cf7fe0222d5f79ec9b8a690fe5075add358bde2e87e84a018f4e230",
            "structureHash": "sha256:64ed4ac0a97d34422e9d3d837bd7b521c28221c841db875db627aeaccb49f296",
            "glyph": {
              "inventoryName": "battery-full",
              "canonicalName": "battery-full",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bell",
      "type": "registry:component",
      "title": "Animated Bell Icon",
      "description": "Renders an animated bell SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bell/bell-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bell.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bell",
            "animated",
            "icon",
            "motion",
            "notification",
            "alarm",
            "alert",
            "reminder",
            "ring"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bell.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bell/bell-icon.tsx",
                "upstreamPath": "icons/lucide/bell-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bell-icon.tsx",
                "upstreamSha256": "sha256:7b0bec5b1d6828a8dd2ef647474ba2cdfa1c8edfa52addcac9679e83d4e2f583",
                "contentSha256": "sha256:4987891940e4e2444af0c14704063b64e37fae179cead30c4898247195be3364",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bell-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bell/bell-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bell-icon",
            "sourceHash": "sha256:b2d939d7bce6cada1c19c050619a14ceb226109b7db9e06e688da02f5c6a3311",
            "contentHash": "sha256:9a7a8264b257b6b3dd6ae8e9c7ad661a316a1b3e968fb095c8e9d6db15c9f7a3",
            "structureHash": "sha256:388dfbb3efe8611549a857d6b9c4d6f43c9740fd5a7703821f8bbaa004c45556",
            "glyph": {
              "inventoryName": "bell",
              "canonicalName": "bell",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bell-minus",
      "type": "registry:component",
      "title": "Animated Bell Minus Icon",
      "description": "Renders an animated bell minus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bell-minus/bell-minus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bell-minus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bell-minus",
            "animated",
            "icon",
            "motion",
            "unsubscribe",
            "silent",
            "mute",
            "remove",
            "quiet"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bell-minus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bell-minus/bell-minus-icon.tsx",
                "upstreamPath": "icons/lucide/bell-minus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bell-minus-icon.tsx",
                "upstreamSha256": "sha256:7aa44f40c29f491244f0d24fc493dad21f2e02911d2ab271c21633df54249d69",
                "contentSha256": "sha256:31ed75bf4303e1e49eb9807a378a457672a3f79c88b9d975c318b3a6498c287a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bell-minus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bell-minus/bell-minus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bell-minus-icon",
            "sourceHash": "sha256:94e7685a453eae36fed8b474f30cfeace4cec22631c6ffd5e2fedea50cda552e",
            "contentHash": "sha256:dde502f3812fd6e4b5cd8baecc566b0bd3af0e307e6f331170250646515fe808",
            "structureHash": "sha256:5978b1f8d9a2d5343576a38c6f800ddd0278e0354664cffd0962458a6546136c",
            "glyph": {
              "inventoryName": "bell-minus",
              "canonicalName": "bell-minus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bell-plus",
      "type": "registry:component",
      "title": "Animated Bell Plus Icon",
      "description": "Renders an animated bell plus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bell-plus/bell-plus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bell-plus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bell-plus",
            "animated",
            "icon",
            "motion",
            "subscribe",
            "notify",
            "add",
            "follow",
            "alert"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bell-plus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bell-plus/bell-plus-icon.tsx",
                "upstreamPath": "icons/lucide/bell-plus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bell-plus-icon.tsx",
                "upstreamSha256": "sha256:b6eb09a7b468c0eb5d8656e0149ce04d39d56032dcf122258938a59e4d08652f",
                "contentSha256": "sha256:fd2e926524cc61f7963506921e377a23636057fb898a10c9304768cc916c8111",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bell-plus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bell-plus/bell-plus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bell-plus-icon",
            "sourceHash": "sha256:e4531e606adda618cd741aeb8edce1b7f5ac3e962b81eea692a4ee9f986be404",
            "contentHash": "sha256:24f3a2fa410fd922b357d285b5e2a383d01baab5a61406f83f4181346ba45824",
            "structureHash": "sha256:e619927444146978dbf0a31621be8f5700d5cf576567825b9defe1d75c2b253a",
            "glyph": {
              "inventoryName": "bell-plus",
              "canonicalName": "bell-plus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bell-ring",
      "type": "registry:component",
      "title": "Animated Bell Ring Icon",
      "description": "Renders an animated bell ring SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bell-ring/bell-ring-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bell-ring.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bell-ring",
            "animated",
            "icon",
            "motion",
            "notification",
            "active",
            "alarm",
            "alert",
            "reminder",
            "ringing"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bell-ring.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bell-ring/bell-ring-icon.tsx",
                "upstreamPath": "icons/lucide/bell-ring-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bell-ring-icon.tsx",
                "upstreamSha256": "sha256:f90e8158629159e8ce530af91db645925d32f08628809825b6faa87bc8ab5067",
                "contentSha256": "sha256:4d2fca349eaa9e9efd74cc9690fe6def2125c8f64bd0110927a56774d8969719",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bell-ring-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bell-ring/bell-ring-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bell-ring-icon",
            "sourceHash": "sha256:ef95e4ab64540e99be15b955e31144102a15356a6bc2edb8a9a406df50525947",
            "contentHash": "sha256:fd4891dee3d8b77820f4b3b730519d213dd342b7ca128b897ff303d22e1173c6",
            "structureHash": "sha256:d3a9c491ab8e44fb90440d9f00fb63359ed5281f45a16bbc2579d1bea537d32b",
            "glyph": {
              "inventoryName": "bell-ring",
              "canonicalName": "bell-ring",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-biceps-flexed",
      "type": "registry:component",
      "title": "Animated Biceps Flexed Icon",
      "description": "Renders an animated biceps flexed SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-biceps-flexed/biceps-flexed-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-biceps-flexed.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "biceps-flexed",
            "animated",
            "icon",
            "motion",
            "arm",
            "muscle",
            "strong",
            "workout",
            "fitness",
            "gym"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-biceps-flexed.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-biceps-flexed/biceps-flexed-icon.tsx",
                "upstreamPath": "icons/lucide/biceps-flexed-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/biceps-flexed-icon.tsx",
                "upstreamSha256": "sha256:8e14d6cf85ace5effac2878af8bf31f545d9e9ccfc7ad414aa30155ebf620a07",
                "contentSha256": "sha256:2a1a5fa7f0cb98f37f830d6c8b7b48934cf55d41c2397b1e203e466939452993",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/biceps-flexed-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-biceps-flexed/biceps-flexed-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-biceps-flexed-icon",
            "sourceHash": "sha256:fe0a305c3bb91f6bf7241b69daa007ebb2df893bf290d838a8ef149eeaffdc35",
            "contentHash": "sha256:a26940d70cb63da3df0a11c1f1616256f88376b33623cb2ab2cdf4f4b96b6ca2",
            "structureHash": "sha256:65949c8a481816444f409d2cafda9be219bd926b2f3da7c4215db8b6ab20906a",
            "glyph": {
              "inventoryName": "biceps-flexed",
              "canonicalName": "biceps-flexed",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bike",
      "type": "registry:component",
      "title": "Animated Bike Icon",
      "description": "Renders an animated bike SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bike/bike-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bike.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bike",
            "animated",
            "icon",
            "motion",
            "bicycle",
            "cycle",
            "cycling"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bike.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bike/bike-icon.tsx",
                "upstreamPath": "icons/lucide/bike-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bike-icon.tsx",
                "upstreamSha256": "sha256:b349325bf68654edcbbd2eb856cc49be133f18603ae51f4d1ee277284b20ebea",
                "contentSha256": "sha256:384cdf628ec7be95274f47b4e323fb3a14cd95931c3c5dc80b1ca8c2665e257b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bike-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bike/bike-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bike-icon",
            "sourceHash": "sha256:b3a8a2be4d272a8a45225fa7ba29a8388578ff07290ba451a4534abcac2409c9",
            "contentHash": "sha256:f48dd5e13b9f87246d22377380f22c669a4d5626486fc09cc659ba09fe1703f4",
            "structureHash": "sha256:551712d6a610b061d81dc9c41f429132e777d18de7828ca8f42ebcc7db66f02c",
            "glyph": {
              "inventoryName": "bike",
              "canonicalName": "bike",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bitcoin",
      "type": "registry:component",
      "title": "Animated Bitcoin Icon",
      "description": "Renders an animated bitcoin SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bitcoin/bitcoin-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bitcoin.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bitcoin",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "crypto"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bitcoin.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bitcoin/bitcoin-icon.tsx",
                "upstreamPath": "icons/lucide/bitcoin-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bitcoin-icon.tsx",
                "upstreamSha256": "sha256:bc8a2deabd01f0428e5d039d028283b9309e513294d7c72c4369875a1348e5bf",
                "contentSha256": "sha256:0325bf074447118ab0dc342489d6d24aaef9a4aa1549e55fbc9fbe9cdbd0ee1a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bitcoin-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bitcoin/bitcoin-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bitcoin-icon",
            "sourceHash": "sha256:d08ea1cf9062585e22b365c6dbe0fbf33cd528bb5034406a0dfc79a0389796bf",
            "contentHash": "sha256:e80f7e4c20d650836891d51406a28d37097aaea8a31b835f0f9dfe37b1161406",
            "structureHash": "sha256:8937c9b31d883c2defb26282c2989181a895209a93f254aa79c2ebad8e38b834",
            "glyph": {
              "inventoryName": "bitcoin",
              "canonicalName": "bitcoin",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-blend",
      "type": "registry:component",
      "title": "Animated Blend Icon",
      "description": "Renders an animated blend SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-blend/blend-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-blend.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "blend",
            "animated",
            "icon",
            "motion",
            "mode",
            "overlay",
            "multiply",
            "screen",
            "opacity",
            "color"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-blend.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-blend/blend-icon.tsx",
                "upstreamPath": "icons/lucide/blend-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/blend-icon.tsx",
                "upstreamSha256": "sha256:04a04e06050c37f4f46ffba67a438de748e352b148f8b31c5b4437cb359ee30a",
                "contentSha256": "sha256:2797eaad3c4386929733528af554a1233d8a14e67fd65cab5625663b387470dd",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/blend-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-blend/blend-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-blend-icon",
            "sourceHash": "sha256:55320711796c6a4de8d68cedf25c30a3d5432a843bd846cf9515635d9d0def76",
            "contentHash": "sha256:0cf59315ce025460f653df282dde94b0d3da96be7c0854b4767c8a21463015a5",
            "structureHash": "sha256:3ec87fa930010340e413df4d2616ccc199ca8ed4dec267b42361a66b10e8e404",
            "glyph": {
              "inventoryName": "blend",
              "canonicalName": "blend",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bolt",
      "type": "registry:component",
      "title": "Animated Bolt Icon",
      "description": "Renders an animated bolt SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bolt/bolt-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bolt.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bolt",
            "animated",
            "icon",
            "motion",
            "nut",
            "screw",
            "settings",
            "hardware",
            "fix"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bolt.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bolt/bolt-icon.tsx",
                "upstreamPath": "icons/lucide/bolt-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bolt-icon.tsx",
                "upstreamSha256": "sha256:58454ceb01e4eb19508eab527c3597e1a711d896e142712d2c0218af4dac191c",
                "contentSha256": "sha256:757676baff1409044297de0a296827f269522433087f5f9f0b871d6a4757b051",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bolt-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bolt/bolt-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bolt-icon",
            "sourceHash": "sha256:4fa53a114e1ef4b12c876b1be68ee01354de321a22570e0e30e5dc27f4887f4f",
            "contentHash": "sha256:ce0ce4c304948cf21d545ae3453f92cae6ed69c623e3b4a08fc0c4118e705ed5",
            "structureHash": "sha256:5ac749026a38a710f62db86c3a3923b1e5ee86a16474fbc80e38bb0e0bd8863b",
            "glyph": {
              "inventoryName": "bolt",
              "canonicalName": "bolt",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-book-open",
      "type": "registry:component",
      "title": "Animated Book Open Icon",
      "description": "Renders an animated book open SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-book-open/book-open-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-book-open.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "book-open",
            "animated",
            "icon",
            "motion",
            "book",
            "read",
            "open",
            "library",
            "pages",
            "reading"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-book-open.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-book-open/book-open-icon.tsx",
                "upstreamPath": "icons/lucide/book-open-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/book-open-icon.tsx",
                "upstreamSha256": "sha256:f71e6420857bb23bc2d556e0a562b981c3942558fecfbb381e90e6fbc1a98c1e",
                "contentSha256": "sha256:48c3fa67cfa5f24c564bb01b09d694274443a2bb8395c063e685a9bc239d4759",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/book-open-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-book-open/book-open-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-book-open-icon",
            "sourceHash": "sha256:72d29ec488ce2062c7316aaa839a70eb89604e501b05aca41bee8b25f418ece9",
            "contentHash": "sha256:e4f30fbffacd9b83481133721bd1049c2bca6a1d4d409891ae8245a8f3e0fe41",
            "structureHash": "sha256:e598c06aef8a2fc174e3bc940d0e077245a0b685ef33bc3280c6cad862ca4426",
            "glyph": {
              "inventoryName": "book-open",
              "canonicalName": "book-open",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-book-open-check",
      "type": "registry:component",
      "title": "Animated Book Open Check Icon",
      "description": "Renders an animated book open check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-book-open-check/book-open-check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-book-open-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "book-open-check",
            "animated",
            "icon",
            "motion",
            "book",
            "read",
            "check",
            "library",
            "pages",
            "done"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-book-open-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-book-open-check/book-open-check-icon.tsx",
                "upstreamPath": "icons/lucide/book-open-check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/book-open-check-icon.tsx",
                "upstreamSha256": "sha256:519eb29babddf8293ff9b2a987ad2ab6b7b4d86354af9432df47f7fd6297dd67",
                "contentSha256": "sha256:5d817819777bd7a1920dbb5c6c300072515f251f9ca0a4cb41f712d4335df9e7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/book-open-check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-book-open-check/book-open-check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-book-open-check-icon",
            "sourceHash": "sha256:247e37bc8b14cbeb06dfc1d245fc7dfeedff0b09538c7f4dbdaeb31fb2dcf2ca",
            "contentHash": "sha256:f161a5154882eb20b50aa2950e6713966679fed40311ece9407d6aff0977e1f9",
            "structureHash": "sha256:44a6db7e22b14b71832a845302eb707d29426d7da607c1b759291ca30c183966",
            "glyph": {
              "inventoryName": "book-open-check",
              "canonicalName": "book-open-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-book-open-text",
      "type": "registry:component",
      "title": "Animated Book Open Text Icon",
      "description": "Renders an animated book open text SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-book-open-text/book-open-text-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-book-open-text.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "book-open-text",
            "animated",
            "icon",
            "motion",
            "book",
            "read",
            "text",
            "library",
            "guide",
            "manual"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-book-open-text.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-book-open-text/book-open-text-icon.tsx",
                "upstreamPath": "icons/lucide/book-open-text-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/book-open-text-icon.tsx",
                "upstreamSha256": "sha256:6dfe555899cba40bedd9221c6aea9d7a6dc4617d93f39e1897db31348526e920",
                "contentSha256": "sha256:3a011e320d5394d995764ae2119428d48dd09de614ac57f47afa00139f0bc375",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/book-open-text-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-book-open-text/book-open-text-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-book-open-text-icon",
            "sourceHash": "sha256:0f73cc7d2611684c25dbfd94ec8adc8f67fe34322f6964cabc2501cfab0f0a57",
            "contentHash": "sha256:a9fb439d2ffe41f1fc29a392fa3cbaa85a1be8f5237b127b8cccf7f08a771be9",
            "structureHash": "sha256:8b7790095f45a15d8a68ec79c81e3b1c26c75037032830462d6da06afa69d752",
            "glyph": {
              "inventoryName": "book-open-text",
              "canonicalName": "book-open-text",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bookmark",
      "type": "registry:component",
      "title": "Animated Bookmark Icon",
      "description": "Renders an animated bookmark SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bookmark/bookmark-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bookmark.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bookmark",
            "animated",
            "icon",
            "motion",
            "save",
            "favorite",
            "tag",
            "mark",
            "clip"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bookmark.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bookmark/bookmark-icon.tsx",
                "upstreamPath": "icons/lucide/bookmark-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bookmark-icon.tsx",
                "upstreamSha256": "sha256:52dc6b7309d3cdc12a3fa5662289e01e8cd9ae92b5ab2eb7b918dc1c7660e608",
                "contentSha256": "sha256:9feee6a48f46e6917530f1cbf713f6a0b21f53064ea837c884be031463164841",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bookmark-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bookmark/bookmark-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bookmark-icon",
            "sourceHash": "sha256:cb81f8d6adb421e0a6537e62c18971e277103458758d085ca1365335dde7eb45",
            "contentHash": "sha256:d87708592856da4a2e4d139660e1412b5ccbad1494ebe7d6a0f31004baba0a4a",
            "structureHash": "sha256:8604c6407daac25044bfa13a08b6db62dc8c58b60cf75dcd67880fae2a1b787d",
            "glyph": {
              "inventoryName": "bookmark",
              "canonicalName": "bookmark",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bookmark-check",
      "type": "registry:component",
      "title": "Animated Bookmark Check Icon",
      "description": "Renders an animated bookmark check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bookmark-check/bookmark-check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bookmark-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bookmark-check",
            "animated",
            "icon",
            "motion",
            "saved",
            "favorite",
            "done",
            "added",
            "clip"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bookmark-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bookmark-check/bookmark-check-icon.tsx",
                "upstreamPath": "icons/lucide/bookmark-check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bookmark-check-icon.tsx",
                "upstreamSha256": "sha256:6797c5daa0639a7a9204998aca8d65d079390c2edf4c9bc18d71833762ebbed5",
                "contentSha256": "sha256:e1fd30efc578f68f523f04853c7d6013e49a7399a3dae0c5580c814695cec3ec",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bookmark-check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bookmark-check/bookmark-check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bookmark-check-icon",
            "sourceHash": "sha256:cafe0d03c698dc8ebac41d190b390b16d0a444646339a179219bcc4379a962dc",
            "contentHash": "sha256:485cbf5f8a4b4b0706acf910619128b8fc232133ddc191320338a548a6cec61e",
            "structureHash": "sha256:0fa939feb8ff0646f3ec7d921eb50dbd0ec36d509aa459b0d4d029d59b9e9ce2",
            "glyph": {
              "inventoryName": "bookmark-check",
              "canonicalName": "bookmark-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bookmark-minus",
      "type": "registry:component",
      "title": "Animated Bookmark Minus Icon",
      "description": "Renders an animated bookmark minus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bookmark-minus/bookmark-minus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bookmark-minus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bookmark-minus",
            "animated",
            "icon",
            "motion",
            "unsave",
            "remove",
            "delete",
            "unmark",
            "clip"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bookmark-minus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bookmark-minus/bookmark-minus-icon.tsx",
                "upstreamPath": "icons/lucide/bookmark-minus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bookmark-minus-icon.tsx",
                "upstreamSha256": "sha256:4de4dfbe4431489bf6b70b5ebbb91424171e85a631a597b3ed30ec8913441b60",
                "contentSha256": "sha256:8227bbd10e0fb671f50efb1d2f5a58df93ed5c7b44a4054ef1c800085f147c20",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bookmark-minus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bookmark-minus/bookmark-minus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bookmark-minus-icon",
            "sourceHash": "sha256:e09cff0c909de42eb838040387e02fb803638973e656ae82b90004800785c507",
            "contentHash": "sha256:93ef385387d1a794a65d946c1d0ccd3f6c059a67b4f763e3ed5032895b98ddfa",
            "structureHash": "sha256:736279d777272bc766e1ac9f9df7502199889bafd2c6dc06dcffc722adf54118",
            "glyph": {
              "inventoryName": "bookmark-minus",
              "canonicalName": "bookmark-minus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bookmark-plus",
      "type": "registry:component",
      "title": "Animated Bookmark Plus Icon",
      "description": "Renders an animated bookmark plus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bookmark-plus/bookmark-plus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bookmark-plus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bookmark-plus",
            "animated",
            "icon",
            "motion",
            "save",
            "add",
            "favorite",
            "mark",
            "clip"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bookmark-plus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bookmark-plus/bookmark-plus-icon.tsx",
                "upstreamPath": "icons/lucide/bookmark-plus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bookmark-plus-icon.tsx",
                "upstreamSha256": "sha256:0b52607edae3b9f1d9395694583bef6102cef5120b83b883d8135249ad4478e6",
                "contentSha256": "sha256:4c14035ae547160606fd1e33908799d0eeae1af0a64f67f7f8ce43af58a85d19",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bookmark-plus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bookmark-plus/bookmark-plus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bookmark-plus-icon",
            "sourceHash": "sha256:95ddac3cea8055af64dddc801c0a901aa980993d4cb0f0945d4db6e1d9e1f381",
            "contentHash": "sha256:eba2a640d024f7539df244cdf0d7ecd44c5e30644c97d655c03a87323223074b",
            "structureHash": "sha256:32ab3231169237463f52bd883e31b432aa2f5ac1863bd0d44f99b1dca631ae6e",
            "glyph": {
              "inventoryName": "bookmark-plus",
              "canonicalName": "bookmark-plus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bookmark-x",
      "type": "registry:component",
      "title": "Animated Bookmark X Icon",
      "description": "Renders an animated bookmark x SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bookmark-x/bookmark-x-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bookmark-x.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bookmark-x",
            "animated",
            "icon",
            "motion",
            "unsave",
            "remove",
            "delete",
            "unmark",
            "cancel"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bookmark-x.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bookmark-x/bookmark-x-icon.tsx",
                "upstreamPath": "icons/lucide/bookmark-x-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bookmark-x-icon.tsx",
                "upstreamSha256": "sha256:2b45f6b09fff31adad4e84e332db77977c0dbf27da8f13704d06a4f326817926",
                "contentSha256": "sha256:19c73c822405408abc9e3e1be7aad1022066ae4b4dbf1b3537691e6bcbc00c59",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bookmark-x-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bookmark-x/bookmark-x-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bookmark-x-icon",
            "sourceHash": "sha256:87744429bf43b51fa6d7c1b59f85d8954ba3e4cf24df13d6d3e9de19d824df34",
            "contentHash": "sha256:e6aa6e4a9a037f590fb970863d093e08d0a3e06120c14fea7213d3124f2d4287",
            "structureHash": "sha256:7a3b8ea3ab3eb5a7c3309e2fc4d4a08d117744d4b850afbd036cc412a7f77727",
            "glyph": {
              "inventoryName": "bookmark-x",
              "canonicalName": "bookmark-x",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-box",
      "type": "registry:component",
      "title": "Animated Box Icon",
      "description": "Renders an animated box SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-box/box-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-box.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "box",
            "animated",
            "icon",
            "motion",
            "package",
            "parcel",
            "delivery",
            "shipping"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-box.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-box/box-icon.tsx",
                "upstreamPath": "icons/lucide/box-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/box-icon.tsx",
                "upstreamSha256": "sha256:da141673ce7e3fd1bbcb7ebd6fe026f5701e41343a25c34d9452afdc8ade06d1",
                "contentSha256": "sha256:5c542eadc0af179beb809f7f85b0960260e8395a34a20b44e0fcb0fe28cf272b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/box-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-box/box-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-box-icon",
            "sourceHash": "sha256:4186c1068457ed8f5d1f68d7d4390bae445e228385f515654041da19699028e2",
            "contentHash": "sha256:771f720319c86f347a153cbc6d542fa7d8357ae2ba6db629d5a143c0552e1cfa",
            "structureHash": "sha256:3d69e072383e92131a4871068ebbeaa78191dffac1c84d4d41f64dfdb8cca93f",
            "glyph": {
              "inventoryName": "box",
              "canonicalName": "box",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-boxes",
      "type": "registry:component",
      "title": "Animated Boxes Icon",
      "description": "Renders an animated boxes SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-boxes/boxes-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-boxes.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "boxes",
            "animated",
            "icon",
            "motion",
            "box",
            "packages",
            "inventory",
            "storage",
            "warehouse",
            "shipment",
            "delivery"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-boxes.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-boxes/boxes-icon.tsx",
                "upstreamPath": "icons/lucide/boxes-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/boxes-icon.tsx",
                "upstreamSha256": "sha256:804a3dcacd6f7205a759a9bff597d455d0790f1c97e549e8105d75763c97e66b",
                "contentSha256": "sha256:9b1bb60f96b96ce742665f428ad3e93fc4c3adf4b18cbf67fbc68610bff2be61",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/boxes-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-boxes/boxes-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-boxes-icon",
            "sourceHash": "sha256:85cc5c9587ea9ebf424530e449b013ed5fc41f87a7c2d1333670bd741af17521",
            "contentHash": "sha256:33ba7ee3489099c6ac1f100bb5b4a2703b175a3f1f70da2742421bfc3ec5bba9",
            "structureHash": "sha256:67d9c142141f5ca8c6072f8b3563ec603644a2cd5c05817244dfd509a80a281e",
            "glyph": {
              "inventoryName": "boxes",
              "canonicalName": "boxes",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-brain",
      "type": "registry:component",
      "title": "Animated Brain Icon",
      "description": "Renders an animated brain SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-brain/brain-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-brain.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "brain",
            "animated",
            "icon",
            "motion",
            "mind",
            "thinking",
            "learning",
            "memory",
            "idea",
            "smart"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-brain.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-brain/brain-icon.tsx",
                "upstreamPath": "icons/lucide/brain-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/brain-icon.tsx",
                "upstreamSha256": "sha256:603f7046084c43603458e491a8074d6dbbda3820d46b1f77f1f2b61b3f42b3f6",
                "contentSha256": "sha256:8d3950ebf7d85c87236b08d54639db224ad191fd334b8075798f50c725be4a96",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/brain-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-brain/brain-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-brain-icon",
            "sourceHash": "sha256:da1bae8ae1f150228264b30ff7bc5e14eb643f39b9ea8c70c08f3d28e3776678",
            "contentHash": "sha256:3de8ff04187ba407f8165ca03dd7cb359bfb7cdd966be5f9165fa36b2019d411",
            "structureHash": "sha256:9e06e89be3baf2db7aa725e4dc022d1854bc7fe572668634af69d6dce5402ffc",
            "glyph": {
              "inventoryName": "brain",
              "canonicalName": "brain",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-bring-to-front",
      "type": "registry:component",
      "title": "Animated Bring To Front Icon",
      "description": "Renders an animated bring to front SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-bring-to-front/bring-to-front-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-bring-to-front.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bring-to-front",
            "animated",
            "icon",
            "motion",
            "bring",
            "front",
            "layer",
            "order",
            "stack",
            "move"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-bring-to-front.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-bring-to-front/bring-to-front-icon.tsx",
                "upstreamPath": "icons/lucide/bring-to-front-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/bring-to-front-icon.tsx",
                "upstreamSha256": "sha256:f036cf69ca82b56f85f98c9ff9d896c6325281670055e7de39431495a393ccea",
                "contentSha256": "sha256:72bd7ea43c1db1be11a4dbfc9ba390b61f6ba8089ae41389f6f480e4ba484a11",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/bring-to-front-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-bring-to-front/bring-to-front-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-bring-to-front-icon",
            "sourceHash": "sha256:4859aa7ffe98362da1f0245c30e207cee7e34b64d8cf9ada6a8c456428f93a79",
            "contentHash": "sha256:20b5bbf9ad21b0ada659989ed619fed90a5380928b12e0d736558856f7ccfc41",
            "structureHash": "sha256:2c923ff2c7bdbeae3a1b9ac1c9d914b80f5c71244898a58ac80a7a25deec6bbe",
            "glyph": {
              "inventoryName": "bring-to-front",
              "canonicalName": "bring-to-front",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-area",
      "type": "registry:component",
      "title": "Animated Chart Area Icon",
      "description": "Renders an animated chart area SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-area/chart-area-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-area.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-area",
            "animated",
            "icon",
            "motion",
            "chart",
            "graph",
            "area",
            "analytics",
            "statistics",
            "data"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-area.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-area/chart-area-icon.tsx",
                "upstreamPath": "icons/lucide/chart-area-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-area-icon.tsx",
                "upstreamSha256": "sha256:9c7b6093f888bcab8f49b6d2ad558d1a37ade30cd214467914ab681a07dc2ae9",
                "contentSha256": "sha256:f05c50687169b8e163ef6176b6dd0ee0133f2322b6897477099dde41ba2a99ed",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-area-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-area/chart-area-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-area-icon",
            "sourceHash": "sha256:1b49a55c922e043932b83ebd77e7714d145a216ee58884f01ca416b757f373de",
            "contentHash": "sha256:32706991b9f5bcfe6caaef6a34a223c5ac5d80dba3ec797f62c5213b4d33c0ca",
            "structureHash": "sha256:82eade13568841981977c0cbe888038b633c33c32e9a07e9c34e31584c6e46fa",
            "glyph": {
              "inventoryName": "chart-area",
              "canonicalName": "chart-area",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-bar",
      "type": "registry:component",
      "title": "Animated Chart Bar Icon",
      "description": "Renders an animated chart bar SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-bar/chart-bar-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-bar.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-bar",
            "animated",
            "icon",
            "motion",
            "chart",
            "graph",
            "bar",
            "analytics",
            "statistics",
            "data"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-bar.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-bar/chart-bar-icon.tsx",
                "upstreamPath": "icons/lucide/chart-bar-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-bar-icon.tsx",
                "upstreamSha256": "sha256:4b5c0b722a19c8b827742234769f3d32c7d97a50b88dc1f39718fb2947697891",
                "contentSha256": "sha256:8be0e6a90d013d6fb7dde5d2c450dcda1658a40bab8dba0911cc610145212b69",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-bar-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-bar/chart-bar-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-bar-icon",
            "sourceHash": "sha256:f8d85f6ad3bb52064378dd5cb80f2ccd4f7c3648567a9de00e5f3935a02cf499",
            "contentHash": "sha256:3d78193eac0191865969abeffa4552d75a3b7fc0a4b64cf9c18a274e26a349e3",
            "structureHash": "sha256:3c12f3d2edd7c8b4c8477b4ebff2b0de5cdf804245df0262a8dfe99f16a8c073",
            "glyph": {
              "inventoryName": "chart-bar",
              "canonicalName": "chart-bar",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-column",
      "type": "registry:component",
      "title": "Animated Chart Column Icon",
      "description": "Renders an animated chart column SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-column/chart-column-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-column.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-column",
            "animated",
            "icon",
            "motion",
            "chart",
            "graph",
            "column",
            "analytics",
            "statistics",
            "data"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-column.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-column/chart-column-icon.tsx",
                "upstreamPath": "icons/lucide/chart-column-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-column-icon.tsx",
                "upstreamSha256": "sha256:4e1293a51a955cb941c9dc6cebd714c60b8d3889b2b6662c39ca2322650a35fe",
                "contentSha256": "sha256:0a4dc885ea6e0a56bca5820855542dbdc650ecabb3d8815ec9d9f68c8135b203",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-column-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-column/chart-column-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-column-icon",
            "sourceHash": "sha256:6e7183859356c4cae6c51e974afd627534fa5ba42ab3d6adef797d6d7647b2b6",
            "contentHash": "sha256:b774a8244de2047b3f3493679ee9f35a9f1ef78ebd682d99f4c9e9ad4ec7dfff",
            "structureHash": "sha256:3c12f3d2edd7c8b4c8477b4ebff2b0de5cdf804245df0262a8dfe99f16a8c073",
            "glyph": {
              "inventoryName": "chart-column",
              "canonicalName": "chart-column",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-line",
      "type": "registry:component",
      "title": "Animated Chart Line Icon",
      "description": "Renders an animated chart line SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-line/chart-line-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-line.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-line",
            "animated",
            "icon",
            "motion",
            "chart",
            "graph",
            "line",
            "analytics",
            "statistics",
            "trend"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-line.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-line/chart-line-icon.tsx",
                "upstreamPath": "icons/lucide/chart-line-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-line-icon.tsx",
                "upstreamSha256": "sha256:79270694464e9ef96cf44edcc3a006c066bc1234e72d4627a52abe6c8e4d3611",
                "contentSha256": "sha256:88653c8301aba70a158b5baf447afca06fbcd3675cc436fceac0d11513ccd88c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-line-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-line/chart-line-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-line-icon",
            "sourceHash": "sha256:e04d21a801fecda5fef37e067356eaaeddc2dde76cdd6152e089fe2ee3ed9c34",
            "contentHash": "sha256:da43bce585d5b8c6395f2646791141bc7734096f6b175d5366b3815b2efe3861",
            "structureHash": "sha256:82eade13568841981977c0cbe888038b633c33c32e9a07e9c34e31584c6e46fa",
            "glyph": {
              "inventoryName": "chart-line",
              "canonicalName": "chart-line",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-network",
      "type": "registry:component",
      "title": "Animated Chart Network Icon",
      "description": "Renders an animated chart network SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-network/chart-network-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-network.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-network",
            "animated",
            "icon",
            "motion",
            "chart",
            "graph",
            "network",
            "analytics",
            "statistics",
            "nodes"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-network.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-network/chart-network-icon.tsx",
                "upstreamPath": "icons/lucide/chart-network-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-network-icon.tsx",
                "upstreamSha256": "sha256:6f38f601828f49b39693849d6c69fe1b019591e0b9e90c73c5d00bc03a776e86",
                "contentSha256": "sha256:c7da74a92dc9be530f865ccbbbe4003eeb614644e3d73fa124496827350d74ca",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-network-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-network/chart-network-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-network-icon",
            "sourceHash": "sha256:4230775356e3df7a3a3f13d6996927255fcc6595b8fa2e23a6f6f9d24051a201",
            "contentHash": "sha256:3e945a57fc48a497494c758d4ef7817bafd95f24c70cb7bb68a2e3d7b3b754ec",
            "structureHash": "sha256:0811989aa5fc95e82fcf49a40b24144a6973f64800b45e0c15f0fefdabf4a32e",
            "glyph": {
              "inventoryName": "chart-network",
              "canonicalName": "chart-network",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-no-axes-combined",
      "type": "registry:component",
      "title": "Animated Chart No Axes Combined Icon",
      "description": "Renders an animated chart no axes combined SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-no-axes-combined/chart-no-axes-combined-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-no-axes-combined.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-no-axes-combined",
            "animated",
            "icon",
            "motion",
            "statistics",
            "analytics",
            "diagram",
            "graph",
            "trending-up"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-no-axes-combined.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-no-axes-combined/chart-no-axes-combined-icon.tsx",
                "upstreamPath": "icons/lucide/chart-no-axes-combined-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-no-axes-combined-icon.tsx",
                "upstreamSha256": "sha256:dc1ab0f5afb8f655a74ab45dae54ffab7c2674d8cf94ba8e51736cdd39e9b4d2",
                "contentSha256": "sha256:b368fac1a340983cd471441f5bfe1bec773a0f40fa888880ee8cde8692675ec1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-no-axes-combined-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-no-axes-combined/chart-no-axes-combined-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-no-axes-combined-icon",
            "sourceHash": "sha256:ca1e60e299b1d986ce07ee3dbded142a7db84725ca9760a085a0f39a4cdd7091",
            "contentHash": "sha256:91247b0b72797250296e1e8c295a83972236fa59b5027ca69fd8d67cd6d7c99c",
            "structureHash": "sha256:23211d369ccdf2f1f9675a153a35a675a5e7964714188c78613c99d1fcc88deb",
            "glyph": {
              "inventoryName": "chart-no-axes-combined",
              "canonicalName": "chart-no-axes-combined",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-pie",
      "type": "registry:component",
      "title": "Animated Chart Pie Icon",
      "description": "Renders an animated chart pie SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-pie/chart-pie-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-pie.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-pie",
            "animated",
            "icon",
            "motion",
            "chart",
            "graph",
            "pie",
            "analytics",
            "statistics",
            "circle"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-pie.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-pie/chart-pie-icon.tsx",
                "upstreamPath": "icons/lucide/chart-pie-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-pie-icon.tsx",
                "upstreamSha256": "sha256:8f794a07fec4dc3717076987a078a5191a0a9e712b254792e6324818df45cbdf",
                "contentSha256": "sha256:0e9ded4f72c6e35dee9e9dd370b6b26b7336e214130501fcf29f22ad993aa6e0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-pie-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-pie/chart-pie-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-pie-icon",
            "sourceHash": "sha256:91e8be912d50710d8e9d551d4a9089fb82e93bfc0d8f7d89bc2de721d06b71d8",
            "contentHash": "sha256:4b66c425cea931486d0a287365a5b36a55fa4424fa37e89729c24c31144e1932",
            "structureHash": "sha256:e13f157d65ea08b5e0310ed053c63aa99fffda62ca1ac36aaee93046f85aad53",
            "glyph": {
              "inventoryName": "chart-pie",
              "canonicalName": "chart-pie",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chart-scatter",
      "type": "registry:component",
      "title": "Animated Chart Scatter Icon",
      "description": "Renders an animated chart scatter SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chart-scatter/chart-scatter-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chart-scatter.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chart-scatter",
            "animated",
            "icon",
            "motion",
            "chart",
            "scatter",
            "analytics",
            "data",
            "graph",
            "stats",
            "plot"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chart-scatter.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chart-scatter/chart-scatter-icon.tsx",
                "upstreamPath": "icons/lucide/chart-scatter-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chart-scatter-icon.tsx",
                "upstreamSha256": "sha256:8387e7b5d0723b972e48a57fb5a445668df03b77a1dbef087a930a7a89d29445",
                "contentSha256": "sha256:9d4fedf21e45a3aaf0514d46c407434c255d3334b2f495485c3ed5074ab14eec",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chart-scatter-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chart-scatter/chart-scatter-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chart-scatter-icon",
            "sourceHash": "sha256:e7f7c2a281d49e3546956717b9ba792b118f9b75436538d270fc7307fef94ffc",
            "contentHash": "sha256:9317a8f801795fa9c8425c1089972fb49ab351ea4c0867d1fdb171b1482dc09b",
            "structureHash": "sha256:6229ddc025b5dc87f8ddf41d0330c5b76fef2aa9b9eef4613fac9b2379ff36d7",
            "glyph": {
              "inventoryName": "chart-scatter",
              "canonicalName": "chart-scatter",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-check",
      "type": "registry:component",
      "title": "Animated Check Icon",
      "description": "Renders an animated check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-check/check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "check",
            "animated",
            "icon",
            "motion",
            "tick",
            "done",
            "confirm",
            "success",
            "ok"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-check/check-icon.tsx",
                "upstreamPath": "icons/lucide/check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/check-icon.tsx",
                "upstreamSha256": "sha256:8b76c3f0441ca493f3e8ed7a0f773299eef88511a879bd70a579ea2802e5e50a",
                "contentSha256": "sha256:bbb608e45c0403b098507c3a940f2bb1a4dad69aa55372f2bfb3ee6e11f91c03",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-check/check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-check-icon",
            "sourceHash": "sha256:9926e5b996c6e32ebe25a3e157168465f63b727313fefa3dc32ee71635d997ed",
            "contentHash": "sha256:80cafadf1af4067b4f1a20b77b30283528c177e04695f8f7ecb70b130f97bd00",
            "structureHash": "sha256:b3d66151b6d14460e7a3a6f11aabe56cdbc089b40c1b5828ddd65950d6c32b85",
            "glyph": {
              "inventoryName": "check",
              "canonicalName": "check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-check-check",
      "type": "registry:component",
      "title": "Animated Check Check Icon",
      "description": "Renders an animated check check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-check-check/check-check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-check-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "check-check",
            "animated",
            "icon",
            "motion",
            "check",
            "double",
            "done",
            "all",
            "success",
            "confirm"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-check-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-check-check/check-check-icon.tsx",
                "upstreamPath": "icons/lucide/check-check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/check-check-icon.tsx",
                "upstreamSha256": "sha256:a6aaf05ab2079583f2b163ade21ab8380a07db73a2547d46af7fc39d88327ad8",
                "contentSha256": "sha256:db1623dc6422cf4cea846032fd0ef67fcdce00f69784f59451b835490290051d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/check-check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-check-check/check-check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-check-check-icon",
            "sourceHash": "sha256:ba135c869a820ffb7810c29665771a723670ac5442f6b10326da43cce1e2069d",
            "contentHash": "sha256:4a9702230960becb72b6f60916e7acca16c2e3b9301c510bf7a2e0117261a960",
            "structureHash": "sha256:70cafb84862f4a8034a396ae58f711b3a4108800d09561302bb3fb62cff27084",
            "glyph": {
              "inventoryName": "check-check",
              "canonicalName": "check-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevron-down",
      "type": "registry:component",
      "title": "Animated Chevron Down Icon",
      "description": "Renders an animated chevron down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevron-down/chevron-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevron-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevron-down",
            "animated",
            "icon",
            "motion",
            "down",
            "bottom",
            "expand",
            "south",
            "below"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevron-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevron-down/chevron-down-icon.tsx",
                "upstreamPath": "icons/lucide/chevron-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevron-down-icon.tsx",
                "upstreamSha256": "sha256:1851f052f7bd136ddc9fa5d13cfda0c42dbe000b226404d13461382504d57101",
                "contentSha256": "sha256:4c5c725428f5a5b1402c17a41bbf86a08e683c003e3fb2182b7b6f815ccd71b9",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevron-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevron-down/chevron-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevron-down-icon",
            "sourceHash": "sha256:a29bcac270d087f6a28e69436f01dbf98d67b328c465d4045bb9b927eae3ffbb",
            "contentHash": "sha256:d44981cabc63bab7de360818af36583edbb432f83530f6d1a0f3eb3fa59a4831",
            "structureHash": "sha256:a16331c3716dfa8b14fa15433de2543afaeb61e44028dc9d9128f7c89e2a8e63",
            "glyph": {
              "inventoryName": "chevron-down",
              "canonicalName": "chevron-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevron-left",
      "type": "registry:component",
      "title": "Animated Chevron Left Icon",
      "description": "Renders an animated chevron left SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevron-left/chevron-left-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevron-left.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevron-left",
            "animated",
            "icon",
            "motion",
            "back",
            "carat",
            "left",
            "previous",
            "return"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevron-left.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevron-left/chevron-left-icon.tsx",
                "upstreamPath": "icons/lucide/chevron-left-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevron-left-icon.tsx",
                "upstreamSha256": "sha256:487395e9cfe8a3a2f2b5b86072fa11d9f331edb60d87d7a0bff11250c68739b0",
                "contentSha256": "sha256:72dd7871becf924482446e056a35f34816eaf219ba294bc4150991dea6016cae",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevron-left-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevron-left/chevron-left-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevron-left-icon",
            "sourceHash": "sha256:1f323650a0beef6eecbef538637608edead1b33ea74d0af65dfdb001d02860b4",
            "contentHash": "sha256:d66125b3d0e70003702e75384e144cd51a91135c9689b2ff53c597d4b4956686",
            "structureHash": "sha256:177bfc7300df6c9db1ff45e5cd7665dae8b94eeeb5eae50b977e3fad3b5a6460",
            "glyph": {
              "inventoryName": "chevron-left",
              "canonicalName": "chevron-left",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevron-right",
      "type": "registry:component",
      "title": "Animated Chevron Right Icon",
      "description": "Renders an animated chevron right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevron-right/chevron-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevron-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevron-right",
            "animated",
            "icon",
            "motion",
            "next",
            "carat",
            "right",
            "forward",
            "continue"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevron-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevron-right/chevron-right-icon.tsx",
                "upstreamPath": "icons/lucide/chevron-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevron-right-icon.tsx",
                "upstreamSha256": "sha256:3e8f678e697b8ab431de560cde84964f84836a7db29233151a1ed39695bbe3bc",
                "contentSha256": "sha256:5db006da36935b2af058c904d26f4a5d8fa521b8c2701646d0fe90b6b3d610c0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevron-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevron-right/chevron-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevron-right-icon",
            "sourceHash": "sha256:2e690875e99a1a04c8a1fc20b3f9e590d40bfb682afc1441b3398bc14a84be1f",
            "contentHash": "sha256:d29a526662b726ada69ba0e8d49af85d7220edf0be3a573dc1287fca6430515e",
            "structureHash": "sha256:3cca34a292b9f5f6938f193c6599ca8bb2bde373df07e2a751e3a8116aa0d5bb",
            "glyph": {
              "inventoryName": "chevron-right",
              "canonicalName": "chevron-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevron-up",
      "type": "registry:component",
      "title": "Animated Chevron Up Icon",
      "description": "Renders an animated chevron up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevron-up/chevron-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevron-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevron-up",
            "animated",
            "icon",
            "motion",
            "arrow",
            "direction",
            "collapse",
            "dropdown",
            "less",
            "caret"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevron-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevron-up/chevron-up-icon.tsx",
                "upstreamPath": "icons/lucide/chevron-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevron-up-icon.tsx",
                "upstreamSha256": "sha256:eccf7fcd09ef946c914ed3ebe05b30f775d65e01f6aeccbe8742474d3b0bc87e",
                "contentSha256": "sha256:ca574d63900c2193e05b3b9868a40451b265d199473a36b8c33fefdf7a541768",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevron-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevron-up/chevron-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevron-up-icon",
            "sourceHash": "sha256:a822a7d7b3b706f61c072132b7ec210ce15e837b5bdbd52a141ebaa3164bab62",
            "contentHash": "sha256:426c54337ba41892f41907480909c5f07468bc2584ab10e97b4b7af3ef1250d9",
            "structureHash": "sha256:abe83278b1dfa87450ce8c1fb556d621c93b8dea54a73ce2295dc45046cadf0e",
            "glyph": {
              "inventoryName": "chevron-up",
              "canonicalName": "chevron-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevrons-down",
      "type": "registry:component",
      "title": "Animated Chevrons Down Icon",
      "description": "Renders an animated chevrons down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevrons-down/chevrons-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevrons-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevrons-down",
            "animated",
            "icon",
            "motion",
            "down",
            "rewind",
            "slow",
            "speed",
            "back"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevrons-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevrons-down/chevrons-down-icon.tsx",
                "upstreamPath": "icons/lucide/chevrons-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevrons-down-icon.tsx",
                "upstreamSha256": "sha256:446bfebd9a1fde5dc22cb88280057cdda15b42555d33eebb9ac1e0ce4b97e299",
                "contentSha256": "sha256:d251647113e1169f03803f717aa1027155174c9991b57add11594318afa4b489",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevrons-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevrons-down/chevrons-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevrons-down-icon",
            "sourceHash": "sha256:dd429fa7981f8911b8cddcda0bf64d7710e8d946eef158b14e0e5a4d331f7cbf",
            "contentHash": "sha256:caf446b6636b0e35ce9d455439f97d5726d43c94bd79161293cc3c220ee9b7c6",
            "structureHash": "sha256:8ec4814a35fb9dd467a021e0222dd4751a8f05a7493e8a9a64d4317682f9c42a",
            "glyph": {
              "inventoryName": "chevrons-down",
              "canonicalName": "chevrons-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevrons-left",
      "type": "registry:component",
      "title": "Animated Chevrons Left Icon",
      "description": "Renders an animated chevrons left SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevrons-left/chevrons-left-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevrons-left.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevrons-left",
            "animated",
            "icon",
            "motion",
            "left",
            "double",
            "fast",
            "rewind",
            "back"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevrons-left.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevrons-left/chevrons-left-icon.tsx",
                "upstreamPath": "icons/lucide/chevrons-left-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevrons-left-icon.tsx",
                "upstreamSha256": "sha256:aee7bcfd3c981f2f86ddd47f02e02bdd56850b1134c2fb11868d69c415bb17a2",
                "contentSha256": "sha256:52530fc95bf8db4ed1354945c7c70f56827feb3c4655b803fa4222d84058af8d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevrons-left-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevrons-left/chevrons-left-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevrons-left-icon",
            "sourceHash": "sha256:fe10a4325140ae70dbc59bed9c005f83b3c7bf80ec023af432cfd2edcb2b6eb2",
            "contentHash": "sha256:631c144e2068e5439123b30b1fed99f43e1ee26918f409a826bb05fec7b8a6fa",
            "structureHash": "sha256:c35be751e1b547035e38956a3089bb37327027841f2ceb9c21bb2f0fdb92b6eb",
            "glyph": {
              "inventoryName": "chevrons-left",
              "canonicalName": "chevrons-left",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevrons-left-right",
      "type": "registry:component",
      "title": "Animated Chevrons Left Right Icon",
      "description": "Renders an animated chevrons left right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevrons-left-right/chevrons-left-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevrons-left-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevrons-left-right",
            "animated",
            "icon",
            "motion",
            "expand",
            "width",
            "resize",
            "horizontal",
            "stretch"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevrons-left-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevrons-left-right/chevrons-left-right-icon.tsx",
                "upstreamPath": "icons/lucide/chevrons-left-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevrons-left-right-icon.tsx",
                "upstreamSha256": "sha256:d0f46ec0f37436926ef45588e39d2065519c0c1aef96f365292e9462599c30a1",
                "contentSha256": "sha256:89555a8afe4ad3026fc8d43e19322581754402c4f8a80d1277a91912f2962558",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevrons-left-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevrons-left-right/chevrons-left-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevrons-left-right-icon",
            "sourceHash": "sha256:7c801c833218e086f0133109a3725fd05f34d4a28c2748a6d06429b2725ea82f",
            "contentHash": "sha256:f2f0ba492f706fcb6fcb025e897a7f7a1b605774b45fe6620f89a11ec026ba47",
            "structureHash": "sha256:6d0d7b81775cd816219212240a1f91ba57ce07a228c77602f069b2226279421d",
            "glyph": {
              "inventoryName": "chevrons-left-right",
              "canonicalName": "chevrons-left-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevrons-left-right-ellipsis",
      "type": "registry:component",
      "title": "Animated Chevrons Left Right Ellipsis Icon",
      "description": "Renders an animated chevrons left right ellipsis SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevrons-left-right-ellipsis/chevrons-left-right-ellipsis-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevrons-left-right-ellipsis.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevrons-left-right-ellipsis",
            "animated",
            "icon",
            "motion",
            "network",
            "connection",
            "router",
            "data",
            "sync",
            "internet"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevrons-left-right-ellipsis.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevrons-left-right-ellipsis/chevrons-left-right-ellipsis-icon.tsx",
                "upstreamPath": "icons/lucide/chevrons-left-right-ellipsis-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevrons-left-right-ellipsis-icon.tsx",
                "upstreamSha256": "sha256:e0a3f5407bc22fce379663d2b7646877aa7718b5266d1fb47c006aa347542541",
                "contentSha256": "sha256:05e96479a183c22977b9c8cce6d485026a41cbbf307c3f01c0a5dc9c7a1ec2a9",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevrons-left-right-ellipsis-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevrons-left-right-ellipsis/chevrons-left-right-ellipsis-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevrons-left-right-ellipsis-icon",
            "sourceHash": "sha256:4c77f0e1261bee219d02c7e5406cc472d1c218b66c1a540757f970554fb14544",
            "contentHash": "sha256:6769927d6e53fdc1756b88375446d9fd73328c21465f4f8c13acd62744cb4e0f",
            "structureHash": "sha256:96156f299b998bc1ba9e1287c2fd804754fdd6430fd7ad70e304b7333f91913b",
            "glyph": {
              "inventoryName": "chevrons-left-right-ellipsis",
              "canonicalName": "chevrons-left-right-ellipsis",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevrons-right",
      "type": "registry:component",
      "title": "Animated Chevrons Right Icon",
      "description": "Renders an animated chevrons right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevrons-right/chevrons-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevrons-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevrons-right",
            "animated",
            "icon",
            "motion",
            "right",
            "double",
            "fast",
            "forward",
            "next"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevrons-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevrons-right/chevrons-right-icon.tsx",
                "upstreamPath": "icons/lucide/chevrons-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevrons-right-icon.tsx",
                "upstreamSha256": "sha256:6e7802d6071b6e52057553226a073cb5b576483fbee5b54857ea1fd3adaba5d8",
                "contentSha256": "sha256:f0c234be283c0e50d584abe5d3a5e7b3c1b8871661edb2cb31ab290bcef76eec",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevrons-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevrons-right/chevrons-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevrons-right-icon",
            "sourceHash": "sha256:4469eeca8a8324d6012e880422f1c1b6d6cea4fe539cbc9969aced1ea429bcbd",
            "contentHash": "sha256:065c0b05da28e02985ae28db9fe3a6f0c459abb550770b20e417eb8a34e73c02",
            "structureHash": "sha256:6afc92fdbd7fd72c9ccd5b9a4d0437767ad1ecd4e39dd28819d22cc895adbd07",
            "glyph": {
              "inventoryName": "chevrons-right",
              "canonicalName": "chevrons-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevrons-right-left",
      "type": "registry:component",
      "title": "Animated Chevrons Right Left Icon",
      "description": "Renders an animated chevrons right left SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevrons-right-left/chevrons-right-left-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevrons-right-left.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevrons-right-left",
            "animated",
            "icon",
            "motion",
            "collapse",
            "width",
            "resize",
            "horizontal",
            "compress"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevrons-right-left.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevrons-right-left/chevrons-right-left-icon.tsx",
                "upstreamPath": "icons/lucide/chevrons-right-left-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevrons-right-left-icon.tsx",
                "upstreamSha256": "sha256:988b6c1c0863b796287aa818b8d2f7c60bd3265512928f4b3a20c2b2cdb44bec",
                "contentSha256": "sha256:12f8e242005abb2a7acd12a632cbf354518922c0cbe844331e0d0440c94e7804",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevrons-right-left-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevrons-right-left/chevrons-right-left-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevrons-right-left-icon",
            "sourceHash": "sha256:3631ca52473b95f3fb1654c10f9f22c685c92854deea7aee9f771b03241cb411",
            "contentHash": "sha256:71b676d436c5cebfe5fc37a93ea7baa54322f051b658704e05a2f8cfa653fac9",
            "structureHash": "sha256:6d0d7b81775cd816219212240a1f91ba57ce07a228c77602f069b2226279421d",
            "glyph": {
              "inventoryName": "chevrons-right-left",
              "canonicalName": "chevrons-right-left",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-chevrons-up",
      "type": "registry:component",
      "title": "Animated Chevrons Up Icon",
      "description": "Renders an animated chevrons up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-chevrons-up/chevrons-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-chevrons-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "chevrons-up",
            "animated",
            "icon",
            "motion",
            "up",
            "ahead",
            "fast",
            "speed",
            "boost"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-chevrons-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-chevrons-up/chevrons-up-icon.tsx",
                "upstreamPath": "icons/lucide/chevrons-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/chevrons-up-icon.tsx",
                "upstreamSha256": "sha256:77caba81c1e5febcfda3e5a35d5ce4dbc21c93b1c1c739e6cc6f50055875639e",
                "contentSha256": "sha256:09b3f6dadcb870239c048f5658b018255dee888acae30b5ad3065181494854a5",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/chevrons-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-chevrons-up/chevrons-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-chevrons-up-icon",
            "sourceHash": "sha256:c2e2ff16139d99894d87545432399c1c9355afa1348c7575e2bc8b68daf52883",
            "contentHash": "sha256:3b8a498d6044a1fefc96001f585a7d16858e58529dfa8ded3563bf3c2e42d11a",
            "structureHash": "sha256:234690060f7314ab222c9c10c91cec9043f673d02deadd44b1fb9d1f15c28464",
            "glyph": {
              "inventoryName": "chevrons-up",
              "canonicalName": "chevrons-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-circle-check",
      "type": "registry:component",
      "title": "Animated Circle Check Icon",
      "description": "Renders an animated circle check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-circle-check/circle-check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-circle-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle-check",
            "animated",
            "icon",
            "motion",
            "done",
            "success",
            "complete",
            "task",
            "status"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-circle-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-circle-check/circle-check-icon.tsx",
                "upstreamPath": "icons/lucide/circle-check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/circle-check-icon.tsx",
                "upstreamSha256": "sha256:e66ddcd62a8fd84238cf60f0b6ce29e8aa33f8844ab8594b6f9a995681a1d609",
                "contentSha256": "sha256:fb082822a4b43839c274f23fd905c77c3e41c6b4df651e68a9316f4a3c5a7b95",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/circle-check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-circle-check/circle-check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-circle-check-icon",
            "sourceHash": "sha256:4cc8d6625dde644179fb116c602be406abd08a36ff46c4d3f0231fcf85b84949",
            "contentHash": "sha256:32e8826d2ba40cca7d1200e7cfdf74a81687af3d3b5f4e00a68faac01f6d620c",
            "structureHash": "sha256:d26a162593c7ba13634cf6898962490692e4cf0f569c4304d0b3da1b86a92fd0",
            "glyph": {
              "inventoryName": "circle-check",
              "canonicalName": "circle-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-circle-check-big",
      "type": "registry:component",
      "title": "Animated Circle Check Big Icon",
      "description": "Renders an animated circle check big SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-circle-check-big/circle-check-big-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-circle-check-big.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle-check-big",
            "animated",
            "icon",
            "motion",
            "done",
            "success",
            "complete",
            "task",
            "status"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-circle-check-big.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-circle-check-big/circle-check-big-icon.tsx",
                "upstreamPath": "icons/lucide/circle-check-big-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/circle-check-big-icon.tsx",
                "upstreamSha256": "sha256:ef8d23128e7f65e595a1ad717cf3d6786d481d7fd075f99e3a43edc17e522299",
                "contentSha256": "sha256:bf1d1ababaa1c0b57025e91850517ab8816c2765c8a217d9f801c6043ee9dbdf",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/circle-check-big-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-circle-check-big/circle-check-big-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-circle-check-big-icon",
            "sourceHash": "sha256:fb2ef3bc39eaf221949d6613ea7c0143436db744d9042be86c4a8771a5b89ba3",
            "contentHash": "sha256:c11904e91408df1a95bc7606803a05aa8a703291fd662913c7fb5a84c14faa7d",
            "structureHash": "sha256:91f3236c5d58962870977908a4ed72d4dab3eb1e07934877d3f7c2bc7c5ee4c2",
            "glyph": {
              "inventoryName": "circle-check-big",
              "canonicalName": "circle-check-big",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-circle-chevron-down",
      "type": "registry:component",
      "title": "Animated Circle Chevron Down Icon",
      "description": "Renders an animated circle chevron down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-circle-chevron-down/circle-chevron-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-circle-chevron-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle-chevron-down",
            "animated",
            "icon",
            "motion",
            "expand",
            "dropdown",
            "more",
            "menu",
            "bottom"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-circle-chevron-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-circle-chevron-down/circle-chevron-down-icon.tsx",
                "upstreamPath": "icons/lucide/circle-chevron-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/circle-chevron-down-icon.tsx",
                "upstreamSha256": "sha256:337132c5d6eb9479138129dbe5d6c66b66dea414fca2fa4dc4cbdd7eaa2ebf78",
                "contentSha256": "sha256:c3ac69b07fa66629990c149ba2457d5430f4dde70919fd8ca92c6b011fe29373",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/circle-chevron-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-circle-chevron-down/circle-chevron-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-circle-chevron-down-icon",
            "sourceHash": "sha256:c97d596d5d8a476d5429167eb474cd0378f9add8a4dd487068f2fb6db2d06026",
            "contentHash": "sha256:db51fb0d9510316013c7e9ba55b7c025f4c56f57fd185e1911d7e83a0319cd95",
            "structureHash": "sha256:19abed00ff3e782dcefccc795e85e468df669a275891a2da7ff95cff05a0bac8",
            "glyph": {
              "inventoryName": "circle-chevron-down",
              "canonicalName": "circle-chevron-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-circle-chevron-left",
      "type": "registry:component",
      "title": "Animated Circle Chevron Left Icon",
      "description": "Renders an animated circle chevron left SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-circle-chevron-left/circle-chevron-left-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-circle-chevron-left.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle-chevron-left",
            "animated",
            "icon",
            "motion",
            "back",
            "previous",
            "return",
            "west",
            "history"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-circle-chevron-left.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-circle-chevron-left/circle-chevron-left-icon.tsx",
                "upstreamPath": "icons/lucide/circle-chevron-left-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/circle-chevron-left-icon.tsx",
                "upstreamSha256": "sha256:e6f96188ccbfc1c0dfa182c63276b01e090d4e9f3c75b98cd8ed0ebc5fea0eaf",
                "contentSha256": "sha256:6760f286c156f5f229370b7d191157004872f5b37f87f321992952869b7108e5",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/circle-chevron-left-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-circle-chevron-left/circle-chevron-left-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-circle-chevron-left-icon",
            "sourceHash": "sha256:ad3bda3ee3e3f88297c7f7d6d65ad2354c4dccf315c7967f3fac39068dbcdc65",
            "contentHash": "sha256:ce727e89cb35b9c17fdd549579f16e7f324dc2ae7af8f8833c80c988879839a6",
            "structureHash": "sha256:eafef5ec9269285ee9d1e9cdaad151f09a2c47e26a83b7cbdc1cad3838ffb693",
            "glyph": {
              "inventoryName": "circle-chevron-left",
              "canonicalName": "circle-chevron-left",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-circle-chevron-right",
      "type": "registry:component",
      "title": "Animated Circle Chevron Right Icon",
      "description": "Renders an animated circle chevron right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-circle-chevron-right/circle-chevron-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-circle-chevron-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle-chevron-right",
            "animated",
            "icon",
            "motion",
            "next",
            "forward",
            "more",
            "east",
            "continue"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-circle-chevron-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-circle-chevron-right/circle-chevron-right-icon.tsx",
                "upstreamPath": "icons/lucide/circle-chevron-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/circle-chevron-right-icon.tsx",
                "upstreamSha256": "sha256:040be831c5514acb1ec49b49646913c2f3a128630be9d52981bbcd09132689ff",
                "contentSha256": "sha256:ea5f5be13302c3d3e3cec37d9a3ce75b2ed6c808e4624097e31509b1f946ed7f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/circle-chevron-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-circle-chevron-right/circle-chevron-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-circle-chevron-right-icon",
            "sourceHash": "sha256:823046cd5d7c84fd1e603bd74863cf99a9e03f7429ec7d42f0b9d0fa0cd95c13",
            "contentHash": "sha256:a01750684fa0f8d68e5cb82a7db2d5a549b3c1371b84a47d423a6a5d32d695b1",
            "structureHash": "sha256:19abed00ff3e782dcefccc795e85e468df669a275891a2da7ff95cff05a0bac8",
            "glyph": {
              "inventoryName": "circle-chevron-right",
              "canonicalName": "circle-chevron-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-circle-chevron-up",
      "type": "registry:component",
      "title": "Animated Circle Chevron Up Icon",
      "description": "Renders an animated circle chevron up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-circle-chevron-up/circle-chevron-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-circle-chevron-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle-chevron-up",
            "animated",
            "icon",
            "motion",
            "collapse",
            "less",
            "top",
            "north",
            "up"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-circle-chevron-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-circle-chevron-up/circle-chevron-up-icon.tsx",
                "upstreamPath": "icons/lucide/circle-chevron-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/circle-chevron-up-icon.tsx",
                "upstreamSha256": "sha256:ba453479f31f0d82fe7c4afa4f2ff8f605fd74576f8bc6cdebf8e731e762b177",
                "contentSha256": "sha256:d105539c1df76ffa627281bc875c727c85258b226528de9e988dbcfb945353f5",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/circle-chevron-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-circle-chevron-up/circle-chevron-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-circle-chevron-up-icon",
            "sourceHash": "sha256:423b0e04a0fbb0f1104feb009d7ff8f384c58e77cc0463020eba599b58ebe843",
            "contentHash": "sha256:8cc70d8f8b2e15bd80888198c53421ab07adae4a7fc3bcfb8fc8e9ec7a686c5c",
            "structureHash": "sha256:eafef5ec9269285ee9d1e9cdaad151f09a2c47e26a83b7cbdc1cad3838ffb693",
            "glyph": {
              "inventoryName": "circle-chevron-up",
              "canonicalName": "circle-chevron-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-circle-plus",
      "type": "registry:component",
      "title": "Animated Circle Plus Icon",
      "description": "Renders an animated circle plus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-circle-plus/circle-plus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-circle-plus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle-plus",
            "animated",
            "icon",
            "motion",
            "plus",
            "add",
            "new",
            "create",
            "positive",
            "more"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-circle-plus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-circle-plus/circle-plus-icon.tsx",
                "upstreamPath": "icons/lucide/circle-plus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/circle-plus-icon.tsx",
                "upstreamSha256": "sha256:f8924de2d432d3d1a7959848592bbb711bd3e93a95c5f0293ccf6bb1c0545f15",
                "contentSha256": "sha256:0e6fe98553db71eaae200f334c97319e3373a93b3ad6151a4ede1cd94a3a47ec",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/circle-plus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-circle-plus/circle-plus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-circle-plus-icon",
            "sourceHash": "sha256:368387d470ba5aa1ebce55b9e80351304381581b5a1257278ff9b82807b30ce5",
            "contentHash": "sha256:d82aa3bc8927eb3c75a25d202a39967fd1c249a8e0d1c9fcdc56da0e7c09ee08",
            "structureHash": "sha256:d71b034a8ecc91034f91503b7bd4a99ee5385185943ff745ffa5c928b12b0ceb",
            "glyph": {
              "inventoryName": "circle-plus",
              "canonicalName": "circle-plus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-clipboard",
      "type": "registry:component",
      "title": "Animated Clipboard Icon",
      "description": "Renders an animated clipboard SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-clipboard/clipboard-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-clipboard.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "clipboard",
            "animated",
            "icon",
            "motion",
            "copy",
            "paste",
            "board",
            "task"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-clipboard.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-clipboard/clipboard-icon.tsx",
                "upstreamPath": "icons/lucide/clipboard-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/clipboard-icon.tsx",
                "upstreamSha256": "sha256:2a7b82f96e35fca24ae87a8ecc30579b965e41d2316290e21be9d9f8f19ce7c2",
                "contentSha256": "sha256:dae0a87efc68ea2c743618837fa508f5b85990e25b6075af04cd0324a4723fae",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/clipboard-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-clipboard/clipboard-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-clipboard-icon",
            "sourceHash": "sha256:f07bc4d4e2f1c33480e56b1dbb22dfeb993e14ae7c5b4d069f7d85aea309a13a",
            "contentHash": "sha256:609bba4840f4b0688c0634c567b8a7bf4b7c06a77e3140ff089b2a657c80c8d1",
            "structureHash": "sha256:f7d6372f9476bbd5f20896214600f78c03af29bd97f6a64711abf970ecacc873",
            "glyph": {
              "inventoryName": "clipboard",
              "canonicalName": "clipboard",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-cloud-upload",
      "type": "registry:component",
      "title": "Animated Cloud Upload Icon",
      "description": "Renders an animated cloud upload SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-cloud-upload/cloud-upload-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-cloud-upload.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "cloud-upload",
            "animated",
            "icon",
            "motion",
            "import",
            "file",
            "cloud",
            "server",
            "publish"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-cloud-upload.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-cloud-upload/cloud-upload-icon.tsx",
                "upstreamPath": "icons/lucide/cloud-upload-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/cloud-upload-icon.tsx",
                "upstreamSha256": "sha256:40574b35f55d40aa15fcad00945a0cdb76c947dcef045ceec4589aff3fbf040b",
                "contentSha256": "sha256:47694177c0aeebae496df4c441791e0362dda620c5c3eeb3b9a58378870e86af",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/cloud-upload-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-cloud-upload/cloud-upload-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-cloud-upload-icon",
            "sourceHash": "sha256:7f8d199060323437009ae11186fe8808745f5e16847381d51a8fab93c7f26eb4",
            "contentHash": "sha256:56bbd2b6b9fbaf2d39d27f7e9975c43ca4f60f8a094cdb5c2888ce145e957eb3",
            "structureHash": "sha256:acc2300499e30607483e0b6cf5631f426c9c5f27dc6084211ed5602cd31d9531",
            "glyph": {
              "inventoryName": "cloud-upload",
              "canonicalName": "cloud-upload",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-code",
      "type": "registry:component",
      "title": "Animated Code Icon",
      "description": "Renders an animated code SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-code/code-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-code.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "code",
            "animated",
            "icon",
            "motion",
            "source",
            "programming",
            "html",
            "xml",
            "dev"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-code.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-code/code-icon.tsx",
                "upstreamPath": "icons/lucide/code-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/code-icon.tsx",
                "upstreamSha256": "sha256:aea1a462cfd992f1bf91fe807d802a824b63319129c693217f7777ba867711ad",
                "contentSha256": "sha256:f003108c764c6b153bf4b1bcb634cf64cba2f4ec721296f15fb27520d856ddb6",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/code-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-code/code-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-code-icon",
            "sourceHash": "sha256:addc175a6dedf2ebe0c95fc9baf4cbdf5539886824c638d97c83b38b47ca8693",
            "contentHash": "sha256:2ec74de6b3ae53b0a624737869885fd7a03fcceddfa50e500f723f30c0df231a",
            "structureHash": "sha256:81c51cd08eec7b390ca34c37529c7a1c62e8e2c715244c12de7ed9b4157a9186",
            "glyph": {
              "inventoryName": "code",
              "canonicalName": "code",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-code-xml",
      "type": "registry:component",
      "title": "Animated Code XML Icon",
      "description": "Renders an animated code xml SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-code-xml/code-xml-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-code-xml.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "code-xml",
            "animated",
            "icon",
            "motion",
            "source",
            "programming",
            "html",
            "xml",
            "syntax"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-code-xml.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-code-xml/code-xml-icon.tsx",
                "upstreamPath": "icons/lucide/code-xml-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/code-xml-icon.tsx",
                "upstreamSha256": "sha256:22e9d9a8b82ad63d5807994fa43ca2937f3876d20699a9b2f03e5c67aa60f7fb",
                "contentSha256": "sha256:2616edc850dcd855852aa3a798e7d2fa4a461fff26b64dea607ada03250c381b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/code-xml-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-code-xml/code-xml-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-code-xml-icon",
            "sourceHash": "sha256:4bc9010f9c2525c6e8a174572c71cc42b8a8702824575ec5b1c57676b54584b7",
            "contentHash": "sha256:e8e64f9f2cf3b2ac5e8152800e987e119f3576855cfee08e47c4d0278488c3df",
            "structureHash": "sha256:c13f53264f6cea284da170b4f04d2d8baf63cb2974c7eb7435232f3a7c5bf64f",
            "glyph": {
              "inventoryName": "code-xml",
              "canonicalName": "code-xml",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-coffee",
      "type": "registry:component",
      "title": "Animated Coffee Icon",
      "description": "Renders an animated coffee SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-coffee/coffee-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-coffee.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "coffee",
            "animated",
            "icon",
            "motion",
            "drink",
            "cup",
            "mug",
            "tea",
            "cafe",
            "hot"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-coffee.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-coffee/coffee-icon.tsx",
                "upstreamPath": "icons/lucide/coffee-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/coffee-icon.tsx",
                "upstreamSha256": "sha256:1b03d1f173e2ab7710d717e4851ce7a84aad3fb665c252d92c20d73669558d4d",
                "contentSha256": "sha256:7e3677d6b78319df84df5d39f89ac023dd42536694f8c69be686272b6a529777",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/coffee-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-coffee/coffee-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-coffee-icon",
            "sourceHash": "sha256:d9b2c9d88cf3669ff6741b1800b596036d0d7f7044125eb0359aa107f4ac8e98",
            "contentHash": "sha256:0d80acc9b29b4e7c74e3dad703fc5ce60f6321e91fcde40a83e6ea92754beb85",
            "structureHash": "sha256:58e2ccdce567c7b7801e7883e0aaddfd03d98d19043a607cd5e53b50dfb24e46",
            "glyph": {
              "inventoryName": "coffee",
              "canonicalName": "coffee",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-compass",
      "type": "registry:component",
      "title": "Animated Compass Icon",
      "description": "Renders an animated compass SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-compass/compass-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-compass.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "compass",
            "animated",
            "icon",
            "motion",
            "direction",
            "navigation",
            "explore",
            "travel",
            "map"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-compass.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-compass/compass-icon.tsx",
                "upstreamPath": "icons/lucide/compass-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/compass-icon.tsx",
                "upstreamSha256": "sha256:5ec76ace4c5d5d801d98ec85615c2be0a68b52b76067b32269c6a121d57e09fd",
                "contentSha256": "sha256:d684723e2699a3b8b1977feec77cd159d27eb55662150b84861192bd82d46e3c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/compass-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-compass/compass-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-compass-icon",
            "sourceHash": "sha256:5d6edc3874498ac3eafd7ad78c0de17c3cb8063d77adb216f8bbdf1cc5d53953",
            "contentHash": "sha256:2bd3c16f14e98b3dbf59407913e26fce2f2f2a3a259aa012ad07e73622d819db",
            "structureHash": "sha256:b3911ff5e00751803d3e1e6e97757bc5e7e63d5beb892b5206a8737a807f9cf8",
            "glyph": {
              "inventoryName": "compass",
              "canonicalName": "compass",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-component-cubes",
      "type": "registry:component",
      "title": "Animated Component Cubes Icon",
      "description": "Renders an animated component cubes SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-component-cubes/blocks-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-component-cubes.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "blocks",
            "animated",
            "icon",
            "motion",
            "components",
            "plugin",
            "extension",
            "build",
            "stack"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-component-cubes.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-component-cubes/blocks-icon.tsx",
                "upstreamPath": "icons/lucide/blocks-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/blocks-icon.tsx",
                "upstreamSha256": "sha256:d4bdb8dd0892356a13da5f0d7e4c7fc50ac81322d98af9ea26b46b155430e1cb",
                "contentSha256": "sha256:e7ac87cd1501c7854daff57249c1504c402e17f925eed24c2e3f7e9237692e24",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/blocks-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-component-cubes/blocks-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-blocks-icon",
            "sourceHash": "sha256:594b36141a4211102bd8e6ace0b445767fb411ebd74e20b5e7b1caa9a10401d8",
            "contentHash": "sha256:e3dde04dfe915dee09b5cf7ee6325f6f566a1740c27e629fb518443939618013",
            "structureHash": "sha256:928744c8681da72a485b0d66f7d9acaf6ea2d3a73b44b74408f36ac0d5754d0d",
            "glyph": {
              "inventoryName": "blocks",
              "canonicalName": "blocks",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-contact",
      "type": "registry:component",
      "title": "Animated Contact Icon",
      "description": "Renders an animated contact SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-contact/contact-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-contact.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "contact",
            "animated",
            "icon",
            "motion",
            "user",
            "person",
            "address",
            "phone"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-contact.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-contact/contact-icon.tsx",
                "upstreamPath": "icons/lucide/contact-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/contact-icon.tsx",
                "upstreamSha256": "sha256:0bb8a3d859044da0dd94557a984a79d752e779af6e59ed40dd1bc30cedcf7990",
                "contentSha256": "sha256:845791c0278acaeaf52bbdbe546bb2844700ca5b60c30e6472827ac10ea1d9e1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/contact-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-contact/contact-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-contact-icon",
            "sourceHash": "sha256:9671d3cd800abc4dddb548461e833340158592fd3c4fcdf3f5f8e16ae9f9811b",
            "contentHash": "sha256:dcd715790793677c1a38df8401df40622ed7b3f4dd4967cec2cb916abb43de1e",
            "structureHash": "sha256:d3b7f4557431a2ea87074f31910bf34ce61914a35ceb5ae7edb28227edfe26f4",
            "glyph": {
              "inventoryName": "contact",
              "canonicalName": "contact",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-copy",
      "type": "registry:component",
      "title": "Animated Copy Icon",
      "description": "Renders an animated copy SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-copy/copy-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-copy.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "copy",
            "animated",
            "icon",
            "motion",
            "duplicate",
            "clone"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-copy.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-copy/copy-icon.tsx",
                "upstreamPath": "icons/lucide/copy-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/copy-icon.tsx",
                "upstreamSha256": "sha256:95d6a2176bfa9e67ff478c3dd4b9bd1b5e62e6d0ee28d698f3fe89da4d4fa66d",
                "contentSha256": "sha256:7e04745c206ceb28156f1d83f7152033acb2285bab12eaa2e75919f5671e4c1b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/copy-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-copy/copy-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-copy-icon",
            "sourceHash": "sha256:fb634806a6067e097b559a4c82690e4bbb98a884a9b20f32a46d2709e6f76fda",
            "contentHash": "sha256:f069ac1397968c8791b28260171e0f03799d8afd66a8b7dd34e2d05d3b3a0655",
            "structureHash": "sha256:476e0ff9c6dd2ca234dab858c3a23ec414dd4b36a7d04051f79e91bba89b0582",
            "glyph": {
              "inventoryName": "copy",
              "canonicalName": "copy",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-down-left",
      "type": "registry:component",
      "title": "Animated Corner Down Left Icon",
      "description": "Renders an animated corner down left SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-down-left/corner-down-left-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-down-left.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-down-left",
            "animated",
            "icon",
            "motion",
            "arrow",
            "return",
            "back",
            "corner",
            "left"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-down-left.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-down-left/corner-down-left-icon.tsx",
                "upstreamPath": "icons/lucide/corner-down-left-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-down-left-icon.tsx",
                "upstreamSha256": "sha256:cdff82c4f88c4158c871ff6af1ca29c45204a5ee1aa1c517b56b06d5d471c3d1",
                "contentSha256": "sha256:171fe67e69e218413edc2e5dd6566d196d477f12b671918e324eee37472efc4b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-down-left-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-down-left/corner-down-left-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-down-left-icon",
            "sourceHash": "sha256:1311a28ecf945ca6f6b6cc4f3510ab45f9310a2ac0eeb32ed2bfce0cfdfd64b6",
            "contentHash": "sha256:8a4b2a40767f4c2e2e00601df89ec38908fab10e8f4ba1a3851405360e80f948",
            "structureHash": "sha256:8a5facbe375a973ff2d14921ab7451b736f171755547c6b704d1581bef09152b",
            "glyph": {
              "inventoryName": "corner-down-left",
              "canonicalName": "corner-down-left",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-down-right",
      "type": "registry:component",
      "title": "Animated Corner Down Right Icon",
      "description": "Renders an animated corner down right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-down-right/corner-down-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-down-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-down-right",
            "animated",
            "icon",
            "motion",
            "arrow",
            "next",
            "forward",
            "corner",
            "right"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-down-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-down-right/corner-down-right-icon.tsx",
                "upstreamPath": "icons/lucide/corner-down-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-down-right-icon.tsx",
                "upstreamSha256": "sha256:2f24395ce597566cdc66501a05696601f799f6b7b3ebf74a507e93aa9b1ff7f1",
                "contentSha256": "sha256:f702c2d7558239ece289f98879c62fff6750733e0337b6d3a1f580a194763d5b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-down-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-down-right/corner-down-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-down-right-icon",
            "sourceHash": "sha256:e22ba7e0c7f30e9d7dfe88610473cf589dfb7a586b64ad6e3e64d0380f002b70",
            "contentHash": "sha256:9d6de41a75b28b02c75a01f630476f7f0b91e7e602e203ae98589efe4a8611dc",
            "structureHash": "sha256:9c839832b1c8b50582e847069fc07a559d352c0a35b2a886d391b3729f3d75d0",
            "glyph": {
              "inventoryName": "corner-down-right",
              "canonicalName": "corner-down-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-left-down",
      "type": "registry:component",
      "title": "Animated Corner Left Down Icon",
      "description": "Renders an animated corner left down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-left-down/corner-left-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-left-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-left-down",
            "animated",
            "icon",
            "motion",
            "arrow",
            "return",
            "back",
            "corner",
            "down"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-left-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-left-down/corner-left-down-icon.tsx",
                "upstreamPath": "icons/lucide/corner-left-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-left-down-icon.tsx",
                "upstreamSha256": "sha256:46e4dfa721c5af2d436e91ed0c96d05129206187adcfcc407a1a51065c0944e4",
                "contentSha256": "sha256:1b9bbe032b6c7174b5b43fe7868c31d70e38dadc7fc8fe31c83b90521db9fbec",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-left-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-left-down/corner-left-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-left-down-icon",
            "sourceHash": "sha256:3711eff3857785db2a86b2f418486b5d4576a6de7a536a64b33a6280918d4541",
            "contentHash": "sha256:ca085a339da95ed762e9cd145aa88486f48b1e6ae135cd84d424f01f8c60f5a7",
            "structureHash": "sha256:9c839832b1c8b50582e847069fc07a559d352c0a35b2a886d391b3729f3d75d0",
            "glyph": {
              "inventoryName": "corner-left-down",
              "canonicalName": "corner-left-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-left-up",
      "type": "registry:component",
      "title": "Animated Corner Left Up Icon",
      "description": "Renders an animated corner left up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-left-up/corner-left-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-left-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-left-up",
            "animated",
            "icon",
            "motion",
            "arrow",
            "return",
            "back",
            "corner",
            "up"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-left-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-left-up/corner-left-up-icon.tsx",
                "upstreamPath": "icons/lucide/corner-left-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-left-up-icon.tsx",
                "upstreamSha256": "sha256:769f7cb58511a2bded2f92989e33575c2837a77f08a4a53d9d8fd5944d36c765",
                "contentSha256": "sha256:9be1e0f24eaaa3ed149e3e23387273391cc4967982d564e72c746993dacf3e9a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-left-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-left-up/corner-left-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-left-up-icon",
            "sourceHash": "sha256:d79a7bbeb3f4a11f641457ca76f76817d4797d2ffafc15df6e5d9e7b04314c36",
            "contentHash": "sha256:6ee0dffadd94cf2b90d1dc3c0a4eac5ec8f6ee9adcb3f538fe2e918d18ae0ac8",
            "structureHash": "sha256:8a5facbe375a973ff2d14921ab7451b736f171755547c6b704d1581bef09152b",
            "glyph": {
              "inventoryName": "corner-left-up",
              "canonicalName": "corner-left-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-right-down",
      "type": "registry:component",
      "title": "Animated Corner Right Down Icon",
      "description": "Renders an animated corner right down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-right-down/corner-right-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-right-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-right-down",
            "animated",
            "icon",
            "motion",
            "arrow",
            "next",
            "forward",
            "corner",
            "down"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-right-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-right-down/corner-right-down-icon.tsx",
                "upstreamPath": "icons/lucide/corner-right-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-right-down-icon.tsx",
                "upstreamSha256": "sha256:68d3fb29d3bb3829d656d53f49f0a165454e4602e1dfacf1a9450b3dc7d59ae0",
                "contentSha256": "sha256:8995899c2d85d100a3b2f95dec066014645e8ce043ef6bbea1e926b3153f8e37",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-right-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-right-down/corner-right-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-right-down-icon",
            "sourceHash": "sha256:538844f19d0a6bfd9321cdf6f085a26cfe8771658493c13646dda87c8eb84e49",
            "contentHash": "sha256:5f42009235cc1b8cc611593867a4952cc96460c0f02ede7b9c6657c77c5a2b9e",
            "structureHash": "sha256:9c839832b1c8b50582e847069fc07a559d352c0a35b2a886d391b3729f3d75d0",
            "glyph": {
              "inventoryName": "corner-right-down",
              "canonicalName": "corner-right-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-right-up",
      "type": "registry:component",
      "title": "Animated Corner Right Up Icon",
      "description": "Renders an animated corner right up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-right-up/corner-right-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-right-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-right-up",
            "animated",
            "icon",
            "motion",
            "arrow",
            "next",
            "forward",
            "corner",
            "up"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-right-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-right-up/corner-right-up-icon.tsx",
                "upstreamPath": "icons/lucide/corner-right-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-right-up-icon.tsx",
                "upstreamSha256": "sha256:acb51b34cb34983008119adaf77f6ae5441c20163ef04f5c1d2f0a89582c3b29",
                "contentSha256": "sha256:5300d0c18c6aa3cb348182dde5f03d7981eaf16622c8e2c9096c155badda6f65",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-right-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-right-up/corner-right-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-right-up-icon",
            "sourceHash": "sha256:a4c08e7ce1f43fba2e6f58cb44babc7f2b857619c0928e750f7e85ad1f56fbc8",
            "contentHash": "sha256:e10b715d92f5d817f9e5d0ac1b467933a87929033ae3d1d75a5a9e222ae4018c",
            "structureHash": "sha256:8a5facbe375a973ff2d14921ab7451b736f171755547c6b704d1581bef09152b",
            "glyph": {
              "inventoryName": "corner-right-up",
              "canonicalName": "corner-right-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-up-left",
      "type": "registry:component",
      "title": "Animated Corner Up Left Icon",
      "description": "Renders an animated corner up left SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-up-left/corner-up-left-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-up-left.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-up-left",
            "animated",
            "icon",
            "motion",
            "arrow",
            "return",
            "back",
            "corner",
            "left"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-up-left.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-up-left/corner-up-left-icon.tsx",
                "upstreamPath": "icons/lucide/corner-up-left-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-up-left-icon.tsx",
                "upstreamSha256": "sha256:879682fea3900023cb93e17ec2322f90262ecf4c3b57c2b4e8eb846910937d8e",
                "contentSha256": "sha256:c5446b24e5b0acae6887f51310f35365c3ede938ae7247eb1a16f3a49e87d515",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-up-left-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-up-left/corner-up-left-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-up-left-icon",
            "sourceHash": "sha256:7fb10f76e6f8ad9b8cf4010a615da8d9c0260d0ad4498b765cec576131c160c4",
            "contentHash": "sha256:470b9cdc650a08f2919d6f82117f89af36ac815d4424589ffd82b2266c5fd520",
            "structureHash": "sha256:8a5facbe375a973ff2d14921ab7451b736f171755547c6b704d1581bef09152b",
            "glyph": {
              "inventoryName": "corner-up-left",
              "canonicalName": "corner-up-left",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-corner-up-right",
      "type": "registry:component",
      "title": "Animated Corner Up Right Icon",
      "description": "Renders an animated corner up right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-corner-up-right/corner-up-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-corner-up-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "corner-up-right",
            "animated",
            "icon",
            "motion",
            "arrow",
            "next",
            "forward",
            "corner",
            "right"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-corner-up-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-corner-up-right/corner-up-right-icon.tsx",
                "upstreamPath": "icons/lucide/corner-up-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/corner-up-right-icon.tsx",
                "upstreamSha256": "sha256:f879286872b3d300da21411267be60c2f29266f6dd821e7a50ade22b990a6d79",
                "contentSha256": "sha256:5cc1b4f19aeafa17696bd2fe179fc416e1f1e05cdbc29b9da3bb91692c91c0f7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/corner-up-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-corner-up-right/corner-up-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-corner-up-right-icon",
            "sourceHash": "sha256:eb5fb4a4cc7250b863a5979e0ae73943e7e57488a5daac1b8d1cc1e08a18a3bc",
            "contentHash": "sha256:4ec7ec277eb1b580faab0c253d30d334f93f85a8de3a4613ac5a5bc91e6ec647",
            "structureHash": "sha256:9c839832b1c8b50582e847069fc07a559d352c0a35b2a886d391b3729f3d75d0",
            "glyph": {
              "inventoryName": "corner-up-right",
              "canonicalName": "corner-up-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-credit-card",
      "type": "registry:component",
      "title": "Animated Credit Card Icon",
      "description": "Renders an animated credit card SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-credit-card/credit-card-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-credit-card.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "credit-card",
            "animated",
            "icon",
            "motion",
            "payment",
            "card",
            "debit",
            "credit",
            "money",
            "finance"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-credit-card.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-credit-card/credit-card-icon.tsx",
                "upstreamPath": "icons/lucide/credit-card-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/credit-card-icon.tsx",
                "upstreamSha256": "sha256:699d3e2ad618880b53e23788caf572e08e4255fad6d420e32c7c640ab774dea6",
                "contentSha256": "sha256:06117c7c08696040d2021b97a64049d99c5eefe630fedda7eeb5bbb09906d846",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/credit-card-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-credit-card/credit-card-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-credit-card-icon",
            "sourceHash": "sha256:8c231fb6f260f245ec945b49ef2c980ec6032c07bd1b69af01066ad338092cb9",
            "contentHash": "sha256:17b214793d4599ca695e39eb097bb09f6fe1a4328c8b5879f5c669effa7b32c2",
            "structureHash": "sha256:6a1571ecfecbea05692bbb01fccd1346eea581297c3daf8846a1b55cc69fb320",
            "glyph": {
              "inventoryName": "credit-card",
              "canonicalName": "credit-card",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-diff",
      "type": "registry:component",
      "title": "Animated Diff Icon",
      "description": "Renders an animated diff SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-diff/diff-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-diff.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "diff",
            "animated",
            "icon",
            "motion",
            "patch",
            "compare",
            "difference",
            "math",
            "calculator"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-diff.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-diff/diff-icon.tsx",
                "upstreamPath": "icons/lucide/diff-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/diff-icon.tsx",
                "upstreamSha256": "sha256:640bf5e381fc032b509a29e6e105dbadeb6767c01473708d48d8a45b65c7553f",
                "contentSha256": "sha256:71af9405e8b1245e2ffa3e023035f8993d361835e32f0ea7e3b1dec7fb1fb8f0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/diff-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-diff/diff-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-diff-icon",
            "sourceHash": "sha256:811a0cb0417c739fc5414413229c22e5cbd58d2d76eaa3b550ff43d1a8d84c14",
            "contentHash": "sha256:67b291ee264b90ca79079739a42df5b083ee04c0eb449754187013b6b7eb09c1",
            "structureHash": "sha256:c65b40f425ca35c718f8c61602dbabd6566f5402cef99034a680d9e3604fc51d",
            "glyph": {
              "inventoryName": "diff",
              "canonicalName": "diff",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-dollar-sign",
      "type": "registry:component",
      "title": "Animated Dollar Sign Icon",
      "description": "Renders an animated dollar sign SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-dollar-sign/dollar-sign-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-dollar-sign.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "dollar-sign",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "dollar",
            "usd"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-dollar-sign.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-dollar-sign/dollar-sign-icon.tsx",
                "upstreamPath": "icons/lucide/dollar-sign-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/dollar-sign-icon.tsx",
                "upstreamSha256": "sha256:93784abca92a299dc448a47c13a87c8b7ff9d335a9d132b61a290c25ab4b9cff",
                "contentSha256": "sha256:c20f01f41ceac49f654db6870b1e472d316ca00f6e64c51c4d25daf0146d69f9",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/dollar-sign-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-dollar-sign/dollar-sign-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-dollar-sign-icon",
            "sourceHash": "sha256:4b0ee314028cdf228d782a3cf5ba327b891ee225743ff0cf4ae09e56585d42ec",
            "contentHash": "sha256:1265d2c15d8b4f4ab5e232b45b8444a277079ae022f8667cbc9773720a012169",
            "structureHash": "sha256:8b3d7191580e5986add3b134d24c25f1505283c8e5c46d56a06d8d0019a4115e",
            "glyph": {
              "inventoryName": "dollar-sign",
              "canonicalName": "dollar-sign",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-download",
      "type": "registry:component",
      "title": "Animated Download Icon",
      "description": "Renders an animated download SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-download/download-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-download.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "download",
            "animated",
            "icon",
            "motion",
            "export",
            "file",
            "save",
            "fetch",
            "get"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-download.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-download/download-icon.tsx",
                "upstreamPath": "icons/lucide/download-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/download-icon.tsx",
                "upstreamSha256": "sha256:a78c30763a90ff70df9c8ac47d6109a14538a7f9d3aae281d5bce394600c4b98",
                "contentSha256": "sha256:5eea43818a367da1e822d1ffc86344d3806e7a91ca488cba74c33225d064ad12",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/download-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-download/download-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-download-icon",
            "sourceHash": "sha256:d6c1d75c9b9a9a91519b41e04e9ace7c059bd211be36e9577edbeaa5e36c1843",
            "contentHash": "sha256:571fa97936dd1337ef99cca82b2c35eaab1f60fecf56858a6a4dc52f3ba74f0b",
            "structureHash": "sha256:8bbb3d5ad1b5e9e9755e1d42491d1d738bdc2a41aa136923904ac85e6a4668d4",
            "glyph": {
              "inventoryName": "download",
              "canonicalName": "download",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-ellipsis",
      "type": "registry:component",
      "title": "Animated Ellipsis Icon",
      "description": "Renders an animated ellipsis SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-ellipsis/ellipsis-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-ellipsis.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "ellipsis",
            "animated",
            "icon",
            "motion",
            "options",
            "more",
            "loading",
            "waiting",
            "dots",
            "loader"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-ellipsis.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-ellipsis/ellipsis-icon.tsx",
                "upstreamPath": "icons/lucide/ellipsis-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/ellipsis-icon.tsx",
                "upstreamSha256": "sha256:e7ae9bd47aa8a0103b6f9e283c22240711d47c35e76bd86f282eeffc25f445fa",
                "contentSha256": "sha256:3f683ac5a68c10f7ef947229ba8cb010948adb5124bd42e2405871c44c9b5f92",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/ellipsis-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-ellipsis/ellipsis-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-ellipsis-icon",
            "sourceHash": "sha256:879c66aed67dbfdace3b2723116772abd4043414c1c2658ae0b56a5bace16546",
            "contentHash": "sha256:475bfd1f7dc489531c05c291c74f24c35852037329cd558ba5be65311c873b67",
            "structureHash": "sha256:cb7b54e615df4d9d850dc1a6f45083cc6e9197810ed4648a9f0f8a7862a84d7e",
            "glyph": {
              "inventoryName": "ellipsis",
              "canonicalName": "ellipsis",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-ellipsis-vertical",
      "type": "registry:component",
      "title": "Animated Ellipsis Vertical Icon",
      "description": "Renders an animated ellipsis vertical SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-ellipsis-vertical/ellipsis-vertical-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-ellipsis-vertical.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "ellipsis-vertical",
            "animated",
            "icon",
            "motion",
            "options",
            "more",
            "menu",
            "kebab",
            "actions"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-ellipsis-vertical.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-ellipsis-vertical/ellipsis-vertical-icon.tsx",
                "upstreamPath": "icons/lucide/ellipsis-vertical-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/ellipsis-vertical-icon.tsx",
                "upstreamSha256": "sha256:134a01073180bd1ce301bba3b66e48a956006cb702d7907afb4bd70e90505ad1",
                "contentSha256": "sha256:fd28e3127a11650ee48df4e27c41037bbdb719ee6c74bc2b7bc65e02af0879ae",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/ellipsis-vertical-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-ellipsis-vertical/ellipsis-vertical-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-ellipsis-vertical-icon",
            "sourceHash": "sha256:d44068373213102c3affeefe13511f6f950af30de253334359b85ff5e18ba6cd",
            "contentHash": "sha256:f5eb5e91a5890f1ab1306ec11bc21ef150694e5d2772f306ab2cf76ed1f41470",
            "structureHash": "sha256:cb7b54e615df4d9d850dc1a6f45083cc6e9197810ed4648a9f0f8a7862a84d7e",
            "glyph": {
              "inventoryName": "ellipsis-vertical",
              "canonicalName": "ellipsis-vertical",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-euro",
      "type": "registry:component",
      "title": "Animated Euro Icon",
      "description": "Renders an animated euro SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-euro/euro-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-euro.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "euro",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "eur"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-euro.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-euro/euro-icon.tsx",
                "upstreamPath": "icons/lucide/euro-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/euro-icon.tsx",
                "upstreamSha256": "sha256:26609b59dc952ea92a31e669e106e19153d2eb28676dc2d48b8d914a33b80e56",
                "contentSha256": "sha256:b7f71e588b755e541c30f9575c376c797b911ac6d711272376ee74c26608fd99",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/euro-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-euro/euro-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-euro-icon",
            "sourceHash": "sha256:63b81ea6deeb865eab746d4ceb44ef0f16a9e4b4dc20671284aeb0fe35cf6c78",
            "contentHash": "sha256:f8af7d5fc788342b349651d03f3f0867898868cec7fea980f69c53931d7e9059",
            "structureHash": "sha256:4d2e381473e1ec4a535473d57486e62587aa53e23313f0a490d04d2badc2a0d8",
            "glyph": {
              "inventoryName": "euro",
              "canonicalName": "euro",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-external-link",
      "type": "registry:component",
      "title": "Animated External Link Icon",
      "description": "Renders an animated external link SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-external-link/external-link-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-external-link.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "external-link",
            "animated",
            "icon",
            "motion",
            "external",
            "link",
            "share",
            "open",
            "out"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-external-link.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-external-link/external-link-icon.tsx",
                "upstreamPath": "icons/lucide/external-link-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/external-link-icon.tsx",
                "upstreamSha256": "sha256:96adf292cb83b9da92ec7bf7c2908d6ff2d098578c9a0852c641dd11f3f25032",
                "contentSha256": "sha256:fc7434195f247eac800cf800a6a5dda7d9db82450dd8f81df48b0e79fe3c9a62",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/external-link-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-external-link/external-link-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-external-link-icon",
            "sourceHash": "sha256:82fc2707f5b769b24ca40d3fe95ce602808036ac76b204b0f7b16452aa32cf87",
            "contentHash": "sha256:aa13ab47e4804031422db6440dc3dfb909a1646d784b186979747e56b0a561e6",
            "structureHash": "sha256:75095b4ff2363107ae21339bf7e28ad47b12d09a51a9e8decd2940947f25f8ea",
            "glyph": {
              "inventoryName": "external-link",
              "canonicalName": "external-link",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-eye",
      "type": "registry:component",
      "title": "Animated Eye Icon",
      "description": "Renders an animated eye SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-eye/eye-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-eye.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "eye",
            "animated",
            "icon",
            "motion",
            "show",
            "visible",
            "view",
            "watch",
            "preview",
            "open"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-eye.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-eye/eye-icon.tsx",
                "upstreamPath": "icons/lucide/eye-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/eye-icon.tsx",
                "upstreamSha256": "sha256:81dc667cd30098769f7d686b745ac95f52dd5dadc2e29bd5a17cc44dc5981f53",
                "contentSha256": "sha256:1a02f9d2596c92dfcba70a38e74c70d5fc094b48657daa3a5a0a2fea4235536d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/eye-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-eye/eye-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-eye-icon",
            "sourceHash": "sha256:882897d65e19e82481be2282ff55557f5835b84fe6ab545f345652fdd1cd16ad",
            "contentHash": "sha256:d8bb5d9714b52f2dccbf5bc7aee2cfdeb1b7908cf1e3394c2c376c4e5340b631",
            "structureHash": "sha256:8be2f100944b97250fd97f64fe6a5250518e1e2e63df4bc6bfcf8ec9ed41e5de",
            "glyph": {
              "inventoryName": "eye",
              "canonicalName": "eye",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-eye-closed",
      "type": "registry:component",
      "title": "Animated Eye Closed Icon",
      "description": "Renders an animated eye closed SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-eye-closed/eye-closed-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-eye-closed.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "eye-closed",
            "animated",
            "icon",
            "motion",
            "eye",
            "closed",
            "hide",
            "invisible",
            "conceal",
            "private"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-eye-closed.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-eye-closed/eye-closed-icon.tsx",
                "upstreamPath": "icons/lucide/eye-closed-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/eye-closed-icon.tsx",
                "upstreamSha256": "sha256:e4b4af44d13a8fb4257eb80578121ffeb2437804b0f8b33ea80710893c5aa4d9",
                "contentSha256": "sha256:20174b2bc47b543d92744d76a396b28a85c2ed0298efcd175a17407649846d16",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/eye-closed-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-eye-closed/eye-closed-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-eye-closed-icon",
            "sourceHash": "sha256:b659deb6e293b5a4c5e483ae5b81078d66871b6b08ccb1150b29ac4510985915",
            "contentHash": "sha256:378b42459d1c833dee4f96b32100038d5843c065fb0e57a63b06e809ec8c0126",
            "structureHash": "sha256:ee6f3a308d0473ea4cd907d5726f397755715c28ea70ea81d0deab86b002cb2a",
            "glyph": {
              "inventoryName": "eye-closed",
              "canonicalName": "eye-closed",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-eye-off",
      "type": "registry:component",
      "title": "Animated Eye Off Icon",
      "description": "Renders an animated eye off SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-eye-off/eye-off-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-eye-off.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "eye-off",
            "animated",
            "icon",
            "motion",
            "eye",
            "off",
            "hide",
            "invisible",
            "disable",
            "private"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-eye-off.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-eye-off/eye-off-icon.tsx",
                "upstreamPath": "icons/lucide/eye-off-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/eye-off-icon.tsx",
                "upstreamSha256": "sha256:42686973a38dcb19b2da670d43c5c5ceafcd7833f30e04335f506c208cd9f74a",
                "contentSha256": "sha256:c3607798312d5cfcb2d545fa0605132dfca05a1ad9122f5d762a77215c437aa6",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/eye-off-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-eye-off/eye-off-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-eye-off-icon",
            "sourceHash": "sha256:83ae01bc5ac3b547f30a42cd6746213b19ced33daf94409c6755b576612a3c46",
            "contentHash": "sha256:e9056db192dbb13115ac2965a4ede11c6290124804ef54835d30d808fc2cc843",
            "structureHash": "sha256:3106711a51cd6815930de601cb313919cd683c176f5a7be1a1d45de8dd3dc311",
            "glyph": {
              "inventoryName": "eye-off",
              "canonicalName": "eye-off",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-flame",
      "type": "registry:component",
      "title": "Animated Flame Icon",
      "description": "Renders an animated flame SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-flame/flame-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-flame.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "flame",
            "animated",
            "icon",
            "motion",
            "fire",
            "hot",
            "burn",
            "heat",
            "glow"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-flame.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-flame/flame-icon.tsx",
                "upstreamPath": "icons/lucide/flame-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/flame-icon.tsx",
                "upstreamSha256": "sha256:f94628221f127871162b6058e547ddd16f7d4c85917ec435d8d6ff7bfe146af3",
                "contentSha256": "sha256:30f5f98542de1fa5d57c97354f53b72eed087e6559394547d7339853248ee2e8",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/flame-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-flame/flame-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-flame-icon",
            "sourceHash": "sha256:3e0e917c832549d3c6ecdcdc782d5975d6cae4f8d49455b812be0c1310ca60ae",
            "contentHash": "sha256:c3746f2a85e3e5940a5d0705966511c6632234f6f83eb0c5d3becc3e0607edf9",
            "structureHash": "sha256:130f69ccaeabbf7fd26faefefb1506c089bbb4e0d67c3477280b47c7d27c30d5",
            "glyph": {
              "inventoryName": "flame",
              "canonicalName": "flame",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-folder",
      "type": "registry:component",
      "title": "Animated Folder Icon",
      "description": "Renders an animated folder SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-folder/folder-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-folder.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "folder",
            "animated",
            "icon",
            "motion",
            "file",
            "document",
            "directory",
            "archive"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-folder.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-folder/folder-icon.tsx",
                "upstreamPath": "icons/lucide/folder-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/folder-icon.tsx",
                "upstreamSha256": "sha256:bc053ba6cb6a6ee88c6084d11fabb318bfa05a7c31016eaddc64db58127e9b63",
                "contentSha256": "sha256:b469b5dc86886d60e360a57901411f0ed2e3ed32f5a680e779fcd298cf251c8e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/folder-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-folder/folder-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-folder-icon",
            "sourceHash": "sha256:738578f7cf97f42814b2b78c7ce90951b9f74d9dafb6bc9d8d8e19dd5b890e42",
            "contentHash": "sha256:4c3402cf9f711d46a9a5272fdb305e16df94afbd7f00522b7d69be39a43a8f0d",
            "structureHash": "sha256:cff48eeccaf9b75caa8d88ae3154699bb73fc35d4e52620e2410aa4d6e6dcbb4",
            "glyph": {
              "inventoryName": "folder",
              "canonicalName": "folder",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-folder-open",
      "type": "registry:component",
      "title": "Animated Folder Open Icon",
      "description": "Renders an animated folder open SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-folder-open/folder-open-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-folder-open.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "folder-open",
            "animated",
            "icon",
            "motion",
            "folder",
            "file",
            "document",
            "directory",
            "archive",
            "open"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-folder-open.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-folder-open/folder-open-icon.tsx",
                "upstreamPath": "icons/lucide/folder-open-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/folder-open-icon.tsx",
                "upstreamSha256": "sha256:0997398cc7926f5c40cc433f14134b8ecab03f3324bc0acc213a13b58d18d7d4",
                "contentSha256": "sha256:098861a4b46bfb5b92274f5d172119449851d06840e6aefeaedafea7c4921115",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/folder-open-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-folder-open/folder-open-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-folder-open-icon",
            "sourceHash": "sha256:37038f9107e26be694a9e8fa9aa92a6f48cdce7ac0da0e0df1ae37ce21abd016",
            "contentHash": "sha256:3167495daab9a073248fb581ddcd3d04cc9251db31aac84bd77694d0d0683015",
            "structureHash": "sha256:550a910fe71e91a5239c8b7749fa099e64474a2113887c99ab2c9f3e120499e8",
            "glyph": {
              "inventoryName": "folder-open",
              "canonicalName": "folder-open",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-gamepad",
      "type": "registry:component",
      "title": "Animated Gamepad Icon",
      "description": "Renders an animated gamepad SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-gamepad/gamepad-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-gamepad.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "gamepad",
            "gamepad-2",
            "animated",
            "icon",
            "motion",
            "game",
            "controller",
            "console",
            "play",
            "gaming"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-gamepad.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-gamepad/gamepad-icon.tsx",
                "upstreamPath": "icons/lucide/gamepad-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/gamepad-icon.tsx",
                "upstreamSha256": "sha256:bab7b0118640f95abbf6ca82b0bf183856ae8cbb93e8918b62248ff59b0788b9",
                "contentSha256": "sha256:9dbdc9ec2d3d1ed242c354717638daa79b6915ed9a0afb69d21e25f6f6e22cb6",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/gamepad-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-gamepad/gamepad-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-gamepad-2-icon",
            "sourceHash": "sha256:b5f6a11a7d0b090b3f43d9044e89e72e3849b1878416b0aee43da1cb17725fa7",
            "contentHash": "sha256:a7fdb7749b17782bc112d2011c24aaca48f969003ac378d5a6eba1446d7463b7",
            "structureHash": "sha256:dc93107a2e9b4b52891af0aab604e0a017e268247628a546fe36a90f948161aa",
            "glyph": {
              "inventoryName": "gamepad",
              "canonicalName": "gamepad-2",
              "aliases": [
                "gamepad"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-georgian-lari",
      "type": "registry:component",
      "title": "Animated Georgian Lari Icon",
      "description": "Renders an animated georgian lari SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-georgian-lari/georgian-lari-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-georgian-lari.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "georgian-lari",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "lari",
            "georgia"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-georgian-lari.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-georgian-lari/georgian-lari-icon.tsx",
                "upstreamPath": "icons/lucide/georgian-lari-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/georgian-lari-icon.tsx",
                "upstreamSha256": "sha256:493011d81a21d73c4a50d90ae52696b7703e7655546eb84e1f91ba747beb742c",
                "contentSha256": "sha256:4bc2713ea5f0c923089106d32b94ff0cc1184cc4d354e6e0d5cc4e075c10ee95",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/georgian-lari-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-georgian-lari/georgian-lari-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-georgian-lari-icon",
            "sourceHash": "sha256:d5510b69fd39a764653d191d4b432e6f46b90048ec559a30ef85840419eec88c",
            "contentHash": "sha256:364b9739f7a4887d83546ec6b727d27f4a0a40c17f3e1c2ab0558736526a36c8",
            "structureHash": "sha256:ce46096f3f23f7bfa23ebe4766b8cbd2c0b2e8e73ee18fdc5d20a728004103ae",
            "glyph": {
              "inventoryName": "georgian-lari",
              "canonicalName": "georgian-lari",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-branch",
      "type": "registry:component",
      "title": "Animated Git Branch Icon",
      "description": "Renders an animated git branch SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-branch/git-branch-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-branch.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-branch",
            "animated",
            "icon",
            "motion",
            "git",
            "branch",
            "version-control",
            "vcs",
            "fork"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-branch.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-branch/git-branch-icon.tsx",
                "upstreamPath": "icons/lucide/git-branch-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-branch-icon.tsx",
                "upstreamSha256": "sha256:a8a7ee28978d91c5ae001ef842d07305c7e82a950dc2b4933a5df034a3cf9e9b",
                "contentSha256": "sha256:44e5d5c3e32507d07e5fdc3b36b1c11e90e6702a24c341b1b3943830dd32ac37",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-branch-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-branch/git-branch-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-branch-icon",
            "sourceHash": "sha256:ef366881c9a068d05f8fedfc1097b6a490dc5c78998d1e073e7e593de1fb4f12",
            "contentHash": "sha256:7032aa0d6845650fd05d93b3074cdb0fe8d85748f4939de88f7ac66a839fce33",
            "structureHash": "sha256:8e7dbee6c5f227bdaaa1c7e0542e6f712a9014b11b3b3761284c336bdc4c8c7a",
            "glyph": {
              "inventoryName": "git-branch",
              "canonicalName": "git-branch",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-branch-minus",
      "type": "registry:component",
      "title": "Animated Git Branch Minus Icon",
      "description": "Renders an animated git branch minus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-branch-minus/git-branch-minus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-branch-minus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-branch-minus",
            "animated",
            "icon",
            "motion",
            "git",
            "branch",
            "minus",
            "remove",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-branch-minus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-branch-minus/git-branch-minus-icon.tsx",
                "upstreamPath": "icons/lucide/git-branch-minus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-branch-minus-icon.tsx",
                "upstreamSha256": "sha256:ddfbc25f4c9901ddc1a3adb9c7ec8f308629d1750218030a74cc390401d3cec1",
                "contentSha256": "sha256:17acfe666aa8a278c6f11034ef1c84045b87b9988addc11f71f6de9679f45757",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-branch-minus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-branch-minus/git-branch-minus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-branch-minus-icon",
            "sourceHash": "sha256:13443e82eb9f7e3de43ded0afc9db2d4f6d76f4c78be3248134d97ba3f304e85",
            "contentHash": "sha256:99fe7078e360f6a61409e5f40c67d405d93bbe392be5b363fcf9f1028c6c1615",
            "structureHash": "sha256:6bd6a6e3463c8379cae6e5800c7c766d51c687a56e21d14dd4eeaca444372c7c",
            "glyph": {
              "inventoryName": "git-branch-minus",
              "canonicalName": "git-branch-minus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-branch-plus",
      "type": "registry:component",
      "title": "Animated Git Branch Plus Icon",
      "description": "Renders an animated git branch plus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-branch-plus/git-branch-plus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-branch-plus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-branch-plus",
            "animated",
            "icon",
            "motion",
            "git",
            "branch",
            "plus",
            "add",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-branch-plus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-branch-plus/git-branch-plus-icon.tsx",
                "upstreamPath": "icons/lucide/git-branch-plus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-branch-plus-icon.tsx",
                "upstreamSha256": "sha256:b39ab8465f088256290ac2f6dd874c0fe3c9ed854c7b46a2450f953fcf96e6b3",
                "contentSha256": "sha256:d57bd3d99ec76700635a5d27234a7251d4434f6ee3e2a4554a0776a44a5bd83c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-branch-plus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-branch-plus/git-branch-plus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-branch-plus-icon",
            "sourceHash": "sha256:1bb9b18d590981343d849949c6075574185dded508dff64386829f3aae6c1c4e",
            "contentHash": "sha256:a5460a09d33459d82fae6d149b8d02195711f3d012707efda6a1907a6b159ddd",
            "structureHash": "sha256:fdeb95dca98e23f6e286b1e802183f6993518e5770a50f66014fa776ca773eb9",
            "glyph": {
              "inventoryName": "git-branch-plus",
              "canonicalName": "git-branch-plus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-commit-horizontal",
      "type": "registry:component",
      "title": "Animated Git Commit Horizontal Icon",
      "description": "Renders an animated git commit horizontal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-commit-horizontal/git-commit-horizontal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-commit-horizontal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-commit-horizontal",
            "animated",
            "icon",
            "motion",
            "git",
            "commit",
            "horizontal",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-commit-horizontal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-commit-horizontal/git-commit-horizontal-icon.tsx",
                "upstreamPath": "icons/lucide/git-commit-horizontal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-commit-horizontal-icon.tsx",
                "upstreamSha256": "sha256:f60c6cefbaf9ceb25f515df8178aed32446133f29f5ce30d3fbb72fb0a754d5e",
                "contentSha256": "sha256:4bfe2007e46be5e155ddcfb8170c09b239a9bbad50c57138e52b893d9d7c2570",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-commit-horizontal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-commit-horizontal/git-commit-horizontal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-commit-horizontal-icon",
            "sourceHash": "sha256:5ed6af2cb5787472afc4a7d78d3ab8d6f042363ab318d49fbb7c922a81a7853e",
            "contentHash": "sha256:442c39a8fb3eff1032432e4336823a4aee937c4e57dfd36316d2200590b5a07d",
            "structureHash": "sha256:70a6dd24a89d5604423bd7ccd907a072ca59eb7ac5f3b1bfcfc6db3413369f29",
            "glyph": {
              "inventoryName": "git-commit-horizontal",
              "canonicalName": "git-commit-horizontal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-commit-vertical",
      "type": "registry:component",
      "title": "Animated Git Commit Vertical Icon",
      "description": "Renders an animated git commit vertical SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-commit-vertical/git-commit-vertical-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-commit-vertical.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-commit-vertical",
            "animated",
            "icon",
            "motion",
            "git",
            "commit",
            "vertical",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-commit-vertical.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-commit-vertical/git-commit-vertical-icon.tsx",
                "upstreamPath": "icons/lucide/git-commit-vertical-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-commit-vertical-icon.tsx",
                "upstreamSha256": "sha256:1392485a8f956122ade54c07bef0a8cf06c0e7ad289e1102fa76667240981aa0",
                "contentSha256": "sha256:32ae7918813ea33f943671077e9fbd7702b2b9ee80b7d8cce771e179fe3a0165",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-commit-vertical-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-commit-vertical/git-commit-vertical-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-commit-vertical-icon",
            "sourceHash": "sha256:0b94cc43f8ab76199f2efd26341343225a48cf5eaa272834c68dae544717cf97",
            "contentHash": "sha256:7f4387bde48da22b14f9afa69ce79407d9a2aa58db2e83a2c17249ea831e9f5c",
            "structureHash": "sha256:6e18d29a6c1df13674fc93b8d954e4673bfd9185d031393cc6138ff2bddcf733",
            "glyph": {
              "inventoryName": "git-commit-vertical",
              "canonicalName": "git-commit-vertical",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-compare",
      "type": "registry:component",
      "title": "Animated Git Compare Icon",
      "description": "Renders an animated git compare SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-compare/git-compare-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-compare.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-compare",
            "animated",
            "icon",
            "motion",
            "git",
            "compare",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-compare.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-compare/git-compare-icon.tsx",
                "upstreamPath": "icons/lucide/git-compare-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-compare-icon.tsx",
                "upstreamSha256": "sha256:1f7644deef5e303d55c5273760c1a3a1fe6591c97a8d9187958d1e0f870a4edf",
                "contentSha256": "sha256:3a0d40b8245fb7149392a8fcb03998921704861d74583e4c50a0fa03d50a8290",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-compare-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-compare/git-compare-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-compare-icon",
            "sourceHash": "sha256:59ce325463d046957d384eec2a07a2de059eb4f80d310d87b751cc8ab3e5867a",
            "contentHash": "sha256:f41d56d777f5a177b6f6955b70045a63dcd790b843e862ead1426720547d0080",
            "structureHash": "sha256:c851be9da2dcca7b6758c1ac330b4ce94b60ec4127488295d62550f4a3f16ddc",
            "glyph": {
              "inventoryName": "git-compare",
              "canonicalName": "git-compare",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-compare-arrows",
      "type": "registry:component",
      "title": "Animated Git Compare Arrows Icon",
      "description": "Renders an animated git compare arrows SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-compare-arrows/git-compare-arrows-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-compare-arrows.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-compare-arrows",
            "animated",
            "icon",
            "motion",
            "git",
            "compare",
            "arrows",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-compare-arrows.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-compare-arrows/git-compare-arrows-icon.tsx",
                "upstreamPath": "icons/lucide/git-compare-arrows-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-compare-arrows-icon.tsx",
                "upstreamSha256": "sha256:a8d9def2086c1251d019f8cd084f64c90c31f8e5e972c530f0130bc3c4b6105d",
                "contentSha256": "sha256:33d54e7cc41978dac46fa2b6feceb4962272cbd3eb5a95a751fc57d594462299",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-compare-arrows-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-compare-arrows/git-compare-arrows-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-compare-arrows-icon",
            "sourceHash": "sha256:c93edf97fdebe726ba85f23113ffd1cbeae906e9c3f3da5dbc08f55668cf130f",
            "contentHash": "sha256:088fb7bf10af131f169a5c87e07e80f294709fafd8794169abd20fd2c3aeb818",
            "structureHash": "sha256:f5ad470b8e5735787a19891414d89cbd34e1248a670f7b71adf42a8f8804fa84",
            "glyph": {
              "inventoryName": "git-compare-arrows",
              "canonicalName": "git-compare-arrows",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-fork",
      "type": "registry:component",
      "title": "Animated Git Fork Icon",
      "description": "Renders an animated git fork SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-fork/git-fork-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-fork.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-fork",
            "animated",
            "icon",
            "motion",
            "git",
            "fork",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-fork.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-fork/git-fork-icon.tsx",
                "upstreamPath": "icons/lucide/git-fork-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-fork-icon.tsx",
                "upstreamSha256": "sha256:d58186bc1ce3587e8240695d365f3847fa278a4c041990895ccdbe26023f502e",
                "contentSha256": "sha256:0d07a1318ece26e28a205d248584f0ab6d989c901170756c73ab2c83cd18ceb9",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-fork-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-fork/git-fork-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-fork-icon",
            "sourceHash": "sha256:395c7fd1673360f2bdcaff8b618121022626aa20631c84287b5e859f7d255c94",
            "contentHash": "sha256:43a3dfdcaee98687f1e3b63c089279ff85ac02696d11c679c1aa9b316ca7c643",
            "structureHash": "sha256:0f9d417e4f416073b006b84589fa8660dc9b82381647c1383e4814fae2690a94",
            "glyph": {
              "inventoryName": "git-fork",
              "canonicalName": "git-fork",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-merge",
      "type": "registry:component",
      "title": "Animated Git Merge Icon",
      "description": "Renders an animated git merge SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-merge/git-merge-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-merge.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-merge",
            "animated",
            "icon",
            "motion",
            "git",
            "merge",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-merge.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-merge/git-merge-icon.tsx",
                "upstreamPath": "icons/lucide/git-merge-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-merge-icon.tsx",
                "upstreamSha256": "sha256:d7c86fa91c142b7eb5e24fe139ae1126228827fa26a8f8c245b3646705eeac6e",
                "contentSha256": "sha256:345097be52807b6c50b19da351129e1ea318ecc5c181169a552d0de979cc4c89",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-merge-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-merge/git-merge-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-merge-icon",
            "sourceHash": "sha256:2d259cc833d5c3f4161b7fbee8690cb62de7e80a65aa81db765260c5f736a681",
            "contentHash": "sha256:55b762d80ca0ee2537a658c24f71d3b0d085c4d684ac9c3b9275f955684cd60e",
            "structureHash": "sha256:56107dff870362d9bee7a067f77b23b760fa66bb24dbc52e33dd1dcb9c56d545",
            "glyph": {
              "inventoryName": "git-merge",
              "canonicalName": "git-merge",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-git-merge-conflict",
      "type": "registry:component",
      "title": "Animated Git Merge Conflict Icon",
      "description": "Renders an animated git merge conflict SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-git-merge-conflict/git-merge-conflict-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-git-merge-conflict.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git-merge-conflict",
            "animated",
            "icon",
            "motion",
            "git",
            "merge",
            "conflict",
            "version-control"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-git-merge-conflict.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-git-merge-conflict/git-merge-conflict-icon.tsx",
                "upstreamPath": "icons/lucide/git-merge-conflict-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/git-merge-conflict-icon.tsx",
                "upstreamSha256": "sha256:a0d524a22c64d6f5070bca94a686962ff41ea9b5cb873d54e02d19ff800e30c9",
                "contentSha256": "sha256:e6f7c41822ea7a273aad278c8d30fe14b0b1972c5b0ce01f139e283a1b87b9a2",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/git-merge-conflict-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-git-merge-conflict/git-merge-conflict-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-git-merge-conflict-icon",
            "sourceHash": "sha256:8a8b14d67e355710c88db8a7539dae925f4cc75b46f3e54b3cadd467c32d7d31",
            "contentHash": "sha256:aaba31566e9c225f739d3ab109074b35660b8d3a3fca0cfd5f07fac12b8fbac0",
            "structureHash": "sha256:489477aa9c8ba84844ebe62f8577016d535c472952dc3e6bc77a7f807f3df66a",
            "glyph": {
              "inventoryName": "git-merge-conflict",
              "canonicalName": "git-merge-conflict",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-globe",
      "type": "registry:component",
      "title": "Animated Globe Icon",
      "description": "Renders an animated globe SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-globe/globe-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-globe.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "globe",
            "animated",
            "icon",
            "motion",
            "world",
            "earth",
            "global",
            "internet",
            "planet",
            "map"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-globe.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-globe/globe-icon.tsx",
                "upstreamPath": "icons/lucide/globe-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/globe-icon.tsx",
                "upstreamSha256": "sha256:a44a316b2392198acf31261ac6abd2400a4f5ca73baa422acde8686515e793be",
                "contentSha256": "sha256:4ce22738abdcc3f2015072211ff58bf41e0efde6c36e5ea612dcd14b60a76190",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/globe-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-globe/globe-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-globe-icon",
            "sourceHash": "sha256:deb6b8144ece8b7ed1f61da3f904d6eec1a4aef6e0ca7a1fae6b71e904caeee3",
            "contentHash": "sha256:0d49e3b485e9e5afd339047127dd545527f845341e5a4dce7205a9584c2285dc",
            "structureHash": "sha256:cd8acbfdcdb5a1f0b63c89564902e129396c767989bb68e41b5f21dc7fe5f5ab",
            "glyph": {
              "inventoryName": "globe",
              "canonicalName": "globe",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-globe-lock",
      "type": "registry:component",
      "title": "Animated Globe Lock Icon",
      "description": "Renders an animated globe lock SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-globe-lock/globe-lock-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-globe-lock.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "globe-lock",
            "animated",
            "icon",
            "motion",
            "vpn",
            "private",
            "security",
            "network",
            "encryption"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-globe-lock.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-globe-lock/globe-lock-icon.tsx",
                "upstreamPath": "icons/lucide/globe-lock-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/globe-lock-icon.tsx",
                "upstreamSha256": "sha256:37b64f57dd6385f0e4ca283de7139d3b0fcff39b19e40e4adccde35b284bcf47",
                "contentSha256": "sha256:d5a97353086f2279153c3f6d758329bf491420a66e63a7af2aa0c717f0ccbebb",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/globe-lock-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-globe-lock/globe-lock-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-globe-lock-icon",
            "sourceHash": "sha256:538c236398c29c7b147a1db4aa72dc4407eed858cb69fc3bd136937be19c676c",
            "contentHash": "sha256:584ccfe0b019caf594bb8b3508e7bfab94b0644a8ec2c192b835ddfb2fbc4d78",
            "structureHash": "sha256:e3fe84131d1628c144f4c22ee557b1b5178b75f4018301affa13ac773c996eb2",
            "glyph": {
              "inventoryName": "globe-lock",
              "canonicalName": "globe-lock",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-grid-panels",
      "type": "registry:component",
      "title": "Animated Grid Panels Icon",
      "description": "Renders an animated grid panels SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-grid-panels/layout-grid-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-grid-panels.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "layout-grid",
            "animated",
            "icon",
            "motion",
            "layout",
            "grid",
            "masonry",
            "panel",
            "widgets"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-grid-panels.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-grid-panels/layout-grid-icon.tsx",
                "upstreamPath": "icons/lucide/layout-grid-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/layout-grid-icon.tsx",
                "upstreamSha256": "sha256:5834ef0e01731f1e678134d60ed19f64e29719aa69b99ce6029566aeff5a7578",
                "contentSha256": "sha256:276b6044becd92fc68739352fbb77c905f7322fb52308bfb1e6d14d62f484d6c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/layout-grid-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-grid-panels/layout-grid-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-layout-grid-icon",
            "sourceHash": "sha256:38d984f132739878f53ea7d780db778cd8afdb3995ac65ac2dada1f131474724",
            "contentHash": "sha256:2e4e8c97888b2f0cfde1b9758a76dadc32dfea56bd8740de17f4a177e3f2ea9a",
            "structureHash": "sha256:2316fb92bf5cb8eb5ed121dca4f49987de522f5b1a3116135bdce7b4845ad1c2",
            "glyph": {
              "inventoryName": "layout-grid",
              "canonicalName": "layout-grid",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-hand-coins",
      "type": "registry:component",
      "title": "Animated Hand Coins Icon",
      "description": "Renders an animated hand coins SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-hand-coins/hand-coins-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-hand-coins.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "hand-coins",
            "animated",
            "icon",
            "motion",
            "savings",
            "banking",
            "money",
            "finance",
            "payment",
            "cash"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-hand-coins.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-hand-coins/hand-coins-icon.tsx",
                "upstreamPath": "icons/lucide/hand-coins-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/hand-coins-icon.tsx",
                "upstreamSha256": "sha256:2138584f262ad3de1ae15e39aabbe5de9c85da0930cca8f5a82d8ccf7d00f88b",
                "contentSha256": "sha256:4b5115d8ec521ddf82e79f6249e3e9d737d72c3631012606290fa95347d9fff1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/hand-coins-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-hand-coins/hand-coins-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-hand-coins-icon",
            "sourceHash": "sha256:b0870dc126b23e2a22c2fffeb15628d1621d3da21b464e854802f1131ef93678",
            "contentHash": "sha256:a5230b1853fbf8ce9bfdfcfb1a1e3de09a8da15929ce28e20748e72c1c839947",
            "structureHash": "sha256:fbb517800f63c6d55dc47a119efd376a07272852153290bafec589ff07cccbb3",
            "glyph": {
              "inventoryName": "hand-coins",
              "canonicalName": "hand-coins",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-headphones",
      "type": "registry:component",
      "title": "Animated Headphones Icon",
      "description": "Renders an animated headphones SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-headphones/headphones-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-headphones.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "headphones",
            "animated",
            "icon",
            "motion",
            "music",
            "audio",
            "listen",
            "sound",
            "device"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-headphones.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-headphones/headphones-icon.tsx",
                "upstreamPath": "icons/lucide/headphones-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/headphones-icon.tsx",
                "upstreamSha256": "sha256:32a988ad5157548b7923b2ef1a4e1c46269e8061a4b2c2e96f634bb9ee71022f",
                "contentSha256": "sha256:aa3e6a28b706423fa74d5f5212bae7450c65b5b495fe593ea7e99940665d7654",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
                  "Removed upstream-authored trailing spaces as a purely mechanical whitespace normalization with no rendered SVG change."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/headphones-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-headphones/headphones-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences. Removed upstream-authored trailing spaces as a purely mechanical whitespace normalization with no rendered SVG change.",
              "reason": "Resolve the bundled upstream helper without a consumer alias, ensure controlled animation honors explicit disablement and reduced-motion preferences, and normalize upstream trailing whitespace without changing rendered SVG output."
            }
          ],
          "dedupe": {
            "family": "animated-headphones-icon",
            "sourceHash": "sha256:43bb4ef8e528213d11881d03f0f3f063a9adf83eef0d353146b5dcc6d4a9da76",
            "contentHash": "sha256:04a92f3ecdbad00d373c7b7ea5f14de46ae32738d9fea1dafefe6c625c59261e",
            "structureHash": "sha256:08fcefea78088e7e58372ba5559878bd67f9f373777a38b4169f0fff4aa6e1d8",
            "glyph": {
              "inventoryName": "headphones",
              "canonicalName": "headphones",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-headphones-off",
      "type": "registry:component",
      "title": "Animated Headphones Off Icon",
      "description": "Renders an animated headphones off SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-headphones-off/headphones-off-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-headphones-off.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "headphones-off",
            "headphone-off",
            "animated",
            "icon",
            "motion",
            "mute",
            "silent",
            "no-audio",
            "disabled",
            "quiet"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-headphones-off.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-headphones-off/headphones-off-icon.tsx",
                "upstreamPath": "icons/lucide/headphones-off-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/headphones-off-icon.tsx",
                "upstreamSha256": "sha256:992e1cc3ea6b4ecf3a1d5f5a174192f6d977ae7c25c1ef14b82a78ccf1c0af84",
                "contentSha256": "sha256:76792f1df3abb928890e61d0404739527f8ab86f7a19f0c3eaac32be9a7d8d53",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
                  "Removed upstream-authored trailing spaces as a purely mechanical whitespace normalization with no rendered SVG change."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/headphones-off-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-headphones-off/headphones-off-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences. Removed upstream-authored trailing spaces as a purely mechanical whitespace normalization with no rendered SVG change.",
              "reason": "Resolve the bundled upstream helper without a consumer alias, ensure controlled animation honors explicit disablement and reduced-motion preferences, and normalize upstream trailing whitespace without changing rendered SVG output."
            }
          ],
          "dedupe": {
            "family": "animated-headphone-off-icon",
            "sourceHash": "sha256:7c473ef033a59a9a2d93a05309fa4764c8dd4607100d8f0ddd27e85ab4c5dc41",
            "contentHash": "sha256:81b956e2dda618f374670c185e676c0550abb1f307058f82ab69553b2df4a5c1",
            "structureHash": "sha256:900d2b30a11508a3556742758340acb52b10f5c4690c89cffb23a3404cfbaf95",
            "glyph": {
              "inventoryName": "headphones-off",
              "canonicalName": "headphone-off",
              "aliases": [
                "headphones-off"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-headset",
      "type": "registry:component",
      "title": "Animated Headset Icon",
      "description": "Renders an animated headset SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-headset/headset-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-headset.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "headset",
            "animated",
            "icon",
            "motion",
            "support",
            "call",
            "agent",
            "operator",
            "audio"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-headset.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-headset/headset-icon.tsx",
                "upstreamPath": "icons/lucide/headset-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/headset-icon.tsx",
                "upstreamSha256": "sha256:e4c8a89623836f8d00f57591a2034496a68cf0cc3c6374dca1753c5c572b4684",
                "contentSha256": "sha256:5a357ed1426e7403485059821217fb2957fad5a687d9519dd8b175405fb3740f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/headset-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-headset/headset-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-headset-icon",
            "sourceHash": "sha256:da9d903b6698a822915b7f06a9396a1d58a41d7b4d6bb28c348e183e4860bd9e",
            "contentHash": "sha256:0c47a997c453e359b7c3443fd42285a9760bcc4d3e46883b96affcf045a030ad",
            "structureHash": "sha256:9e4ee4e1d8e16e02bc8d019f442510fd4abfa6db4dcdeb179375a93bfb2138f5",
            "glyph": {
              "inventoryName": "headset",
              "canonicalName": "headset",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-heart",
      "type": "registry:component",
      "title": "Animated Heart Icon",
      "description": "Renders an animated heart SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-heart/heart-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-heart.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "heart",
            "animated",
            "icon",
            "motion",
            "like",
            "love",
            "emotion",
            "favorite",
            "react"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-heart.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-heart/heart-icon.tsx",
                "upstreamPath": "icons/lucide/heart-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/heart-icon.tsx",
                "upstreamSha256": "sha256:3083ffdf4cfa1fc73c7594468a1b1d6e2aef3b00ba1ed496d73b5129fcfe3e60",
                "contentSha256": "sha256:7255977652b93f742ed16520da0c261f1f6ffe1351906034b4d5fe0f400e3a12",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/heart-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-heart/heart-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-heart-icon",
            "sourceHash": "sha256:f939829a577f401fe0b8db040364e64763a503a3080f76cfaf5a5b8756cb74d1",
            "contentHash": "sha256:e7c90f7b34b30935179ee39f973cd93a2f58c1ff79bd659f43a218db8848e40d",
            "structureHash": "sha256:b396d90167882dcf656c3b232400f00fcaf9cb4304c57d0fb7cac5981f6ecf95",
            "glyph": {
              "inventoryName": "heart",
              "canonicalName": "heart",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-house",
      "type": "registry:component",
      "title": "Animated House Icon",
      "description": "Renders an animated house SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-house/house-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-house.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "house",
            "animated",
            "icon",
            "motion",
            "home",
            "main",
            "dashboard",
            "start",
            "root"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-house.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-house/house-icon.tsx",
                "upstreamPath": "icons/lucide/house-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/house-icon.tsx",
                "upstreamSha256": "sha256:c33b141db167719484620e5b9382a6117fb131fbe9a7fa57ca681e04166617e8",
                "contentSha256": "sha256:f56fe586b852be855785f662708153778e5b042325f48343038df7de3dfb162b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/house-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-house/house-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-house-icon",
            "sourceHash": "sha256:cbf20286bd3e4f6cc3be4510ca95f8429d804f9eac2939352ca64c13edc6fad9",
            "contentHash": "sha256:4099dce52e5fd8a16a92ca608a1e20dedeb3bcd5517db732df627b98145c5baf",
            "structureHash": "sha256:aea6a4a383fdef0dd52f8eb9a399ad682204978af21966ceb3f9b4103930bae9",
            "glyph": {
              "inventoryName": "house",
              "canonicalName": "house",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-indian-rupee",
      "type": "registry:component",
      "title": "Animated Indian Rupee Icon",
      "description": "Renders an animated indian rupee SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-indian-rupee/indian-rupee-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-indian-rupee.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "indian-rupee",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "rupee",
            "india"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-indian-rupee.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-indian-rupee/indian-rupee-icon.tsx",
                "upstreamPath": "icons/lucide/indian-rupee-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/indian-rupee-icon.tsx",
                "upstreamSha256": "sha256:edf40328fe71cfb116ace355ce08580ec9a444b9fbc62256b3033b91c1228540",
                "contentSha256": "sha256:e22f46e8b6d5733df83e46cae2a85f847352b7c177105a7d610db119a3eac8dc",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/indian-rupee-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-indian-rupee/indian-rupee-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-indian-rupee-icon",
            "sourceHash": "sha256:2ed892efc4a40ca86308aedba68d6191e93ef642b229a17206b330c2a53ec217",
            "contentHash": "sha256:71f0779a72496b8940f15a1d2edb02f66a1613dafe1caa6199f04a439298fa07",
            "structureHash": "sha256:6211933052908391b356e66f1b6702d14a2b2c925c0c06435987ba9f9726a01f",
            "glyph": {
              "inventoryName": "indian-rupee",
              "canonicalName": "indian-rupee",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-info",
      "type": "registry:component",
      "title": "Animated Info Icon",
      "description": "Renders an animated info SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-info/info-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-info.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "info",
            "animated",
            "icon",
            "motion",
            "help",
            "details",
            "about",
            "tooltip",
            "support"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-info.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-info/info-icon.tsx",
                "upstreamPath": "icons/lucide/info-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/info-icon.tsx",
                "upstreamSha256": "sha256:eccb733872f69af2110a4e1c4846870fecacc22ab4c03839bdf3761631ab0803",
                "contentSha256": "sha256:e0133ef85d7702ccea8b30ce70835a0c531267d3a59f3d67a69580e712432fbe",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/info-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-info/info-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-info-icon",
            "sourceHash": "sha256:c1049333735d3f44c140fb6cfee60b6ae1a647405679086b8c80ec51c59c80c7",
            "contentHash": "sha256:0d0a6bb99e18d300af8b51b606041df688f18be013c262cda959af0b5ccf8e31",
            "structureHash": "sha256:ee8f3661378946c04fa55fae9d76e3f7bc290dbec1ba4abb2c0c7e057a4e8b7f",
            "glyph": {
              "inventoryName": "info",
              "canonicalName": "info",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-key",
      "type": "registry:component",
      "title": "Animated Key Icon",
      "description": "Renders an animated key SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-key/key-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-key.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "key",
            "animated",
            "icon",
            "motion",
            "password",
            "security",
            "access",
            "login",
            "auth"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-key.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-key/key-icon.tsx",
                "upstreamPath": "icons/lucide/key-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/key-icon.tsx",
                "upstreamSha256": "sha256:631dba3ed17bbf924178a5a3d7b5e2a1075b6a85989e9ba6d9c1d239d2b9be88",
                "contentSha256": "sha256:221ce6cd0e0c2f9de6e403f75a651f7ea716231f05a24897de29aea1fddbacf4",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/key-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-key/key-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-key-icon",
            "sourceHash": "sha256:605ed90acea9e8caa144cdb1a34f892308550bc0fa4ce9ef6e0e28bca0bec388",
            "contentHash": "sha256:3ee3c5300e699d419b3fbe2af29377a7c762bbde41a7088700c35580c2285f5a",
            "structureHash": "sha256:6ca33045660a91ed7faae703134e3b030435b94ef1c8ccf1254d67e6dd1c3fec",
            "glyph": {
              "inventoryName": "key",
              "canonicalName": "key",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-key-round",
      "type": "registry:component",
      "title": "Animated Key Round Icon",
      "description": "Renders an animated key round SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-key-round/key-round-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-key-round.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "key-round",
            "animated",
            "icon",
            "motion",
            "password",
            "security",
            "access",
            "login",
            "auth",
            "key"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-key-round.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-key-round/key-round-icon.tsx",
                "upstreamPath": "icons/lucide/key-round-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/key-round-icon.tsx",
                "upstreamSha256": "sha256:d59f5a0ea6598cdfe4a7ba0d8027f6996c3bc0090db5f6d85aa7ec55db687aba",
                "contentSha256": "sha256:70bb6bbd550105d45c76e49e41c94cfc1cd8bdb35964a1eb818dd051e9488196",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/key-round-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-key-round/key-round-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-key-round-icon",
            "sourceHash": "sha256:2807bd97a160ae81d6ad2d6f1f266f50415fe8ce44fa43f34cf5d46039e237b6",
            "contentHash": "sha256:8712787d8a573c0ebe9e0cb7f4061d6ef290228ad38fe2435d83de9d04cff96d",
            "structureHash": "sha256:96676e04ddef9b1579513aa48dd85cc108d447ae120d2c932c722b26a239d9e1",
            "glyph": {
              "inventoryName": "key-round",
              "canonicalName": "key-round",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-key-square",
      "type": "registry:component",
      "title": "Animated Key Square Icon",
      "description": "Renders an animated key square SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-key-square/key-square-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-key-square.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "key-square",
            "animated",
            "icon",
            "motion",
            "password",
            "security",
            "access",
            "login",
            "auth",
            "key"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-key-square.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-key-square/key-square-icon.tsx",
                "upstreamPath": "icons/lucide/key-square-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/key-square-icon.tsx",
                "upstreamSha256": "sha256:69499adae691957049bde133e87508d791a56b053c606b72a9aaffb3bb44242d",
                "contentSha256": "sha256:bd7318a090f052832afd8dcb752bb36d3ce28650c938c8af861150224b16c5ba",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/key-square-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-key-square/key-square-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-key-square-icon",
            "sourceHash": "sha256:8353227ca2523d89d1727a2832609f26b77c012c703caf580d48982ae7bbde3a",
            "contentHash": "sha256:310432fc2e51291c4d5af060ee992b8db5c0bb0eea3cb6f2d293fb7da81c51c1",
            "structureHash": "sha256:99d8a5b684fa6b3e03e7ad62612a19b51c781e131d6b9873350c5dff4dfa5307",
            "glyph": {
              "inventoryName": "key-square",
              "canonicalName": "key-square",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-layers",
      "type": "registry:component",
      "title": "Animated Layers Icon",
      "description": "Renders an animated layers SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-layers/layers-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-layers.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "layers",
            "animated",
            "icon",
            "motion",
            "stack",
            "stacked",
            "levels",
            "architecture"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-layers.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-layers/layers-icon.tsx",
                "upstreamPath": "icons/lucide/layers-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/layers-icon.tsx",
                "upstreamSha256": "sha256:212779a855ce6d7103b4a7dd9fa002b01bec33b60586d98e2afb18df5bb5a669",
                "contentSha256": "sha256:b53691e9e9a8fa45f724080692dd86a6f0076a752782e26b1c3bb7c8208aca6c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/layers-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-layers/layers-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-layers-icon",
            "sourceHash": "sha256:60d8b398cefc9c5092876b5daea603879d12939e61151270d813ee4bda19dd3d",
            "contentHash": "sha256:e0a56e193481e4b7f18847a2f157d41809058d6bd508795b52995fb480740673",
            "structureHash": "sha256:78636597f053b5d759d88d331fdac8db61ce2d046c470ea5051c0ee59c364d37",
            "glyph": {
              "inventoryName": "layers",
              "canonicalName": "layers",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-layout-dashboard-icon",
      "type": "registry:component",
      "title": "Animated Layout Dashboard Icon",
      "description": "Renders an animated layout dashboard SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-layout-dashboard-icon/dashboard-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-layout-dashboard-icon.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "dashboard",
            "layout-dashboard",
            "animated",
            "icon",
            "motion",
            "layout",
            "grid",
            "panel",
            "widgets"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-layout-dashboard-icon.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-layout-dashboard-icon/dashboard-icon.tsx",
                "upstreamPath": "icons/lucide/dashboard-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/dashboard-icon.tsx",
                "upstreamSha256": "sha256:99de2a152f393a28115d0dde112e30c4735a221d9539bf55e5a84c94fa00092b",
                "contentSha256": "sha256:494e3f828a5fd88b5fbf364ae8c47b2a2ecaf70ee572bece210676e4569a9fc0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/dashboard-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-layout-dashboard-icon/dashboard-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-layout-dashboard-icon",
            "sourceHash": "sha256:c072545fff7e82e88dbb67a8b37d6b2baaefd1bd4da4eb1f882926e4dbde718f",
            "contentHash": "sha256:7fa27fbee14ae947a9da1f006e0b3312e49e1d1b36344d2ede9b79543970b21d",
            "structureHash": "sha256:cd4e013955b0a9d92efe81030f27ebe0fae95d7aa687db76b5a541fd678e28ed",
            "glyph": {
              "inventoryName": "dashboard",
              "canonicalName": "layout-dashboard",
              "aliases": [
                "dashboard"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-link",
      "type": "registry:component",
      "title": "Animated Link Icon",
      "description": "Renders an animated link SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-link/link-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-link.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "link",
            "animated",
            "icon",
            "motion",
            "url",
            "hyperlink",
            "connection",
            "website"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-link.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-link/link-icon.tsx",
                "upstreamPath": "icons/lucide/link-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/link-icon.tsx",
                "upstreamSha256": "sha256:f4aa12d152fa3cc0d3b35ef00468c42b20fcf9a90511b5be2b203566c385e77a",
                "contentSha256": "sha256:29a31292230b848b766ee320832c8f0dd8ebabaaa7ae7732a4099ac10efffb94",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/link-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-link/link-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-link-icon",
            "sourceHash": "sha256:569bcf496b66df771eb4a77f74de8a184996d53a156597d0c2f2c83d0ccb9767",
            "contentHash": "sha256:6bf0fac52d3af5d9c9a7f9f99c448bfd3a88dd868f79519eacb11c1955f985eb",
            "structureHash": "sha256:2ea4a2aac888ac9c2eea02157df8b421791c22c8811a9e9f39227ffb14f04cea",
            "glyph": {
              "inventoryName": "link",
              "canonicalName": "link",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-list-chevrons-up-down",
      "type": "registry:component",
      "title": "Animated List Chevrons Up Down Icon",
      "description": "Renders an animated list chevrons up down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-list-chevrons-up-down/list-chevrons-up-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-list-chevrons-up-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "list-chevrons-up-down",
            "animated",
            "icon",
            "motion",
            "list",
            "options",
            "expand",
            "collapse",
            "accordion",
            "menu"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-list-chevrons-up-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-list-chevrons-up-down/list-chevrons-up-down-icon.tsx",
                "upstreamPath": "icons/lucide/list-chevrons-up-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/list-chevrons-up-down-icon.tsx",
                "upstreamSha256": "sha256:561b512eb65eef969bac0f675c1a4135d3b46f17be22a1a9f1239bdcb1d8b21f",
                "contentSha256": "sha256:63761f06bd74fe78db2e7aeddac16cbc64c474aa1ed61c543156da569ec3ca10",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/list-chevrons-up-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-list-chevrons-up-down/list-chevrons-up-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-list-chevrons-up-down-icon",
            "sourceHash": "sha256:589dc9bc8ae95683d630389c8c1646b91897dccb46d7ca719486830f10b9a899",
            "contentHash": "sha256:2c85c39d70a357ed29ad8f7f7a75d2964e726f482c47a1dee4542b15e5bb4380",
            "structureHash": "sha256:428a54f1bfc47627c33b527b9e2822ff38d0ea442ed5778639d88625f82ca6d6",
            "glyph": {
              "inventoryName": "list-chevrons-up-down",
              "canonicalName": "list-chevrons-up-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-list-panels",
      "type": "registry:component",
      "title": "Animated List Panels Icon",
      "description": "Renders an animated list panels SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-list-panels/layout-list-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-list-panels.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "layout-list",
            "animated",
            "icon",
            "motion",
            "layout",
            "list",
            "organize",
            "items",
            "rows"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-list-panels.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-list-panels/layout-list-icon.tsx",
                "upstreamPath": "icons/lucide/layout-list-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/layout-list-icon.tsx",
                "upstreamSha256": "sha256:55d7e4896c50aff86e0831708de97de7cc6d5051af4c640b0e18dcdb6e890cea",
                "contentSha256": "sha256:72d4238e3a7de3f1b3fef486f5e5b171623c81695dab94b8b83fa767d87e8f32",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/layout-list-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-list-panels/layout-list-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-layout-list-icon",
            "sourceHash": "sha256:8195c3ec8d772680a423578dd17600a24fb06dd96066a5635b66f962207446ab",
            "contentHash": "sha256:eb87ec2b3b3b469a296bb5ba9145163c5e27bc5791cfa316b9d3ab893cac0ace",
            "structureHash": "sha256:4ca68debbfb51fc426e7db1d53ccf9bd52f966587e102674e53c7bc61067ffda",
            "glyph": {
              "inventoryName": "layout-list",
              "canonicalName": "layout-list",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-loader",
      "type": "registry:component",
      "title": "Animated Loader Icon",
      "description": "Renders an animated loader SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-loader/loader-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-loader.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "loader",
            "animated",
            "icon",
            "motion",
            "loading",
            "wait",
            "busy",
            "progress",
            "spinner"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-loader.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-loader/loader-icon.tsx",
                "upstreamPath": "icons/lucide/loader-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/loader-icon.tsx",
                "upstreamSha256": "sha256:fd889aa22081454572f30f7bb1f31d2a53e5689bff4a611d633b8ba0cfde1c5c",
                "contentSha256": "sha256:befa597eeb1cb5f4df7f905eab600811e4ceb87ee76eab876e2e3a0b0142189f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/loader-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-loader/loader-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-loader-icon",
            "sourceHash": "sha256:11e51d3a27937ae185a8358cd0a708c0ccfdcf0856e562825e2a8ccf18452ca0",
            "contentHash": "sha256:43787d88671220d7283e105d61a0dc0e0c5e8b70bfd08550dc9cfb393b369349",
            "structureHash": "sha256:0416b8db4b3cd5fe5e179d7f5b0e7db543c4f18474f3abe04b2198f70af299c3",
            "glyph": {
              "inventoryName": "loader",
              "canonicalName": "loader",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-loader-circle",
      "type": "registry:component",
      "title": "Animated Loader Circle Icon",
      "description": "Renders an animated loader circle SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-loader-circle/loader-circle-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-loader-circle.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "loader-circle",
            "animated",
            "icon",
            "motion",
            "loading",
            "progress",
            "spinner",
            "circle",
            "busy",
            "loader"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-loader-circle.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-loader-circle/loader-circle-icon.tsx",
                "upstreamPath": "icons/lucide/loader-circle-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/loader-circle-icon.tsx",
                "upstreamSha256": "sha256:1563adb2198c2526d3a8b208acb68f8794d752a5b10865f82d2a3dcfc76bd577",
                "contentSha256": "sha256:d33c564c2a01452044a1c34f14431d68122a8a6e905d1b0b104497d2499f726d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/loader-circle-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-loader-circle/loader-circle-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-loader-circle-icon",
            "sourceHash": "sha256:ecce28c3cf0af5f18a6dbf46f60ea3f6b05b958757b86333ed595f9b71497b30",
            "contentHash": "sha256:6fee64cb44b971953ad0d4c01da32f165eb8b912437d3d0c5d51901c62ca4c93",
            "structureHash": "sha256:6cd62258e439f147f19ed6bbbe29ff2456e523d72d5d9da1dc74d443ae22583a",
            "glyph": {
              "inventoryName": "loader-circle",
              "canonicalName": "loader-circle",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-lock",
      "type": "registry:component",
      "title": "Animated Lock Icon",
      "description": "Renders an animated lock SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-lock/lock-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-lock.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "lock",
            "animated",
            "icon",
            "motion",
            "security",
            "password",
            "secure",
            "private",
            "access"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-lock.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-lock/lock-icon.tsx",
                "upstreamPath": "icons/lucide/lock-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/lock-icon.tsx",
                "upstreamSha256": "sha256:4392a3cad7380eade9dc2905a4056cf9f7d754f7a72de4be87c0c2d9e7000994",
                "contentSha256": "sha256:b8a79552315ada00ae3454ea69e3c86068862abecf0df6854ea2a61bc1cec988",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/lock-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-lock/lock-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-lock-icon",
            "sourceHash": "sha256:418e25b0ce376bca8de986bedd98b8a724ea745f17351209e3edaa9b0391ea12",
            "contentHash": "sha256:732f1804b86fb9cb2bd5695b6715c1a29115cd2cbc53e53d0380aff477a0198f",
            "structureHash": "sha256:389143dedd65350837f035f23f42bfcd405cae3d8b56e8f752fc2ed7e6c3c3a2",
            "glyph": {
              "inventoryName": "lock",
              "canonicalName": "lock",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-login",
      "type": "registry:component",
      "title": "Animated Login Icon",
      "description": "Renders an animated login SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-login/login-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-login.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "login",
            "log-in",
            "animated",
            "icon",
            "motion",
            "signin",
            "enter",
            "access",
            "auth",
            "account"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-login.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-login/login-icon.tsx",
                "upstreamPath": "icons/lucide/login-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/login-icon.tsx",
                "upstreamSha256": "sha256:c6129d7549a46d27d0bff9035e51a35c5e336729b261d0a53cf952f9fda49280",
                "contentSha256": "sha256:380e86826c70059ed7c696311123ced3fcc57c7ff98ed6e2eea841f99b16032a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/login-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-login/login-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-log-in-icon",
            "sourceHash": "sha256:d552b49d16b2aef6c9e347494cf591d0c4c8be297c4cde3c200bb8836974fa11",
            "contentHash": "sha256:cb20951b8c42ebc4af25c407a00c6de02ab99350149b76a08ed2ba1a8b47ff65",
            "structureHash": "sha256:bb3125a7cf68753bf049c730dcb9e441c50a2c5f273e4e50630302ef4a9682c4",
            "glyph": {
              "inventoryName": "login",
              "canonicalName": "log-in",
              "aliases": [
                "login"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-logout",
      "type": "registry:component",
      "title": "Animated Logout Icon",
      "description": "Renders an animated logout SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-logout/logout-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-logout.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "logout",
            "log-out",
            "animated",
            "icon",
            "motion",
            "signout",
            "exit",
            "leave",
            "close",
            "account"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-logout.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-logout/logout-icon.tsx",
                "upstreamPath": "icons/lucide/logout-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/logout-icon.tsx",
                "upstreamSha256": "sha256:260f32248ab468583ec9e92084ae224a2383eb4eaca4fea068f3bbbb097866f8",
                "contentSha256": "sha256:fdcf052f6f1706869c66e48155614fba162b1f9678b350d2ebc7a13710efb49f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/logout-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-logout/logout-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-log-out-icon",
            "sourceHash": "sha256:c0122978527e15c381bce29a787ecdea279e2b3c188e6df5ae96b608dfcd05c7",
            "contentHash": "sha256:a23e5c414280f06ff89d04f96f56779c8ff10dcd32248741e9dce4504761d1e9",
            "structureHash": "sha256:68017d35a6ded7be8407b34f92640d76d1e2dfbfa5ccd4149d60fdb3d3625dc9",
            "glyph": {
              "inventoryName": "logout",
              "canonicalName": "log-out",
              "aliases": [
                "logout"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-mail",
      "type": "registry:component",
      "title": "Animated Mail Icon",
      "description": "Renders an animated mail SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-mail/mail-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-mail.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "mail",
            "animated",
            "icon",
            "motion",
            "email",
            "message",
            "inbox",
            "send",
            "letter"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-mail.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-mail/mail-icon.tsx",
                "upstreamPath": "icons/lucide/mail-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/mail-icon.tsx",
                "upstreamSha256": "sha256:de8c80797b76b8ac96c586b59c9ece7d87fc36658e9824fa16eb0eb70da9ea12",
                "contentSha256": "sha256:ef2634cbafe740101bdcb3b4bd0e1c2a9621103319c25786d6834a6edb067bab",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/mail-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-mail/mail-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-mail-icon",
            "sourceHash": "sha256:0d0df8c6329e8e7e98bb1d4a2c5122be280e2081974935a3a68a73682448dbfc",
            "contentHash": "sha256:92a514b0998b182354e84a1ac182fe622c0137371c615474b263904f980621c7",
            "structureHash": "sha256:2ac93eba4176601b7716595d705be40598303425d32e847451c743809a0dacd9",
            "glyph": {
              "inventoryName": "mail",
              "canonicalName": "mail",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-mails",
      "type": "registry:component",
      "title": "Animated Mails Icon",
      "description": "Renders an animated mails SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-mails/mails-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-mails.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "mails",
            "animated",
            "icon",
            "motion",
            "email",
            "messages",
            "inbox",
            "conversation",
            "letters"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-mails.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-mails/mails-icon.tsx",
                "upstreamPath": "icons/lucide/mails-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/mails-icon.tsx",
                "upstreamSha256": "sha256:59cb5b63ea859372d07d84c087f63151d0165e3d63d0b552bc276aae3d98eca1",
                "contentSha256": "sha256:dffe353d8d15e1a354df224ec3a01e310d44a91d2854f60a47389d9067d6589d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/mails-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-mails/mails-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-mails-icon",
            "sourceHash": "sha256:a2b14d1440fc4047f046f8e7f34f2c5f608e8066dce4d6deb8d2b6d56ac8e8b1",
            "contentHash": "sha256:3c016c04ad4c0462c364834cd662ad191cbf1f52a0cfabff0aed90a2940d7c0d",
            "structureHash": "sha256:1de26c4d3e7b2ed2c4e7714045a207738ec119218ef66437c3d1a0d3c87e442a",
            "glyph": {
              "inventoryName": "mails",
              "canonicalName": "mails",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-map-pin",
      "type": "registry:component",
      "title": "Animated Map Pin Icon",
      "description": "Renders an animated map pin SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-map-pin/map-pin-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-map-pin.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "map-pin",
            "animated",
            "icon",
            "motion",
            "location",
            "place",
            "marker",
            "gps",
            "map",
            "pin"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-map-pin.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-map-pin/map-pin-icon.tsx",
                "upstreamPath": "icons/lucide/map-pin-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/map-pin-icon.tsx",
                "upstreamSha256": "sha256:d94436cbb3fb338aee542b5bb2d2c944c6f9b9d317d26ed273edb6c445097f1f",
                "contentSha256": "sha256:0fe808e58e68ed2c562b76cc668f4a3449c7326f9933299a263074de2d5506c9",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/map-pin-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-map-pin/map-pin-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-map-pin-icon",
            "sourceHash": "sha256:20e6b1bf6d42bf4227fd28b00f9e88ff4d39e0e0e66f1d9e456880b7371112c8",
            "contentHash": "sha256:5f9656dedb9e1f3a3a8bb72fd1037e55291b6ad1c914e1d6664a11594f1fe752",
            "structureHash": "sha256:01ae53350e7bb4c93bbfcd47ace43fcc176d7b6167379af5d1bf63601d293bbc",
            "glyph": {
              "inventoryName": "map-pin",
              "canonicalName": "map-pin",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-map-pin-check",
      "type": "registry:component",
      "title": "Animated Map Pin Check Icon",
      "description": "Renders an animated map pin check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-map-pin-check/map-pin-check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-map-pin-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "map-pin-check",
            "animated",
            "icon",
            "motion",
            "location",
            "marker",
            "done",
            "complete",
            "pin"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-map-pin-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-map-pin-check/map-pin-check-icon.tsx",
                "upstreamPath": "icons/lucide/map-pin-check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/map-pin-check-icon.tsx",
                "upstreamSha256": "sha256:161772b0b6772fee3fd2eef7973486fd0b667148a2516832926fc586e224f791",
                "contentSha256": "sha256:f9caf5f3ad5c788c63aa1cf01b4b352f5f1d2a607afbbf129e13dc7652f9dcba",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/map-pin-check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-map-pin-check/map-pin-check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-map-pin-check-icon",
            "sourceHash": "sha256:504a1c9489857cc7413ecd6185cc083c0c3c87b2a3fbcd78205e23587386f645",
            "contentHash": "sha256:05a2053159b74e8bbdba85d593af1acc057a1d25dbff7093b8b917c776aa0ae8",
            "structureHash": "sha256:80c016885d8d9f62f28d21fb369ecbc92255e36867659740c57212fcf4e9bb77",
            "glyph": {
              "inventoryName": "map-pin-check",
              "canonicalName": "map-pin-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-map-pin-check-inside",
      "type": "registry:component",
      "title": "Animated Map Pin Check Inside Icon",
      "description": "Renders an animated map pin check inside SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-map-pin-check-inside/map-pin-check-inside-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-map-pin-check-inside.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "map-pin-check-inside",
            "animated",
            "icon",
            "motion",
            "location",
            "marker",
            "done",
            "complete",
            "pin"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-map-pin-check-inside.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-map-pin-check-inside/map-pin-check-inside-icon.tsx",
                "upstreamPath": "icons/lucide/map-pin-check-inside-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/map-pin-check-inside-icon.tsx",
                "upstreamSha256": "sha256:a4244a7dfc06655191555a00e2dc038b24106a0a6303f0e6c9f6016eb6b43543",
                "contentSha256": "sha256:e5fc11bbf778d06f3d53ef9060353867306e57e705ff55ba8edeca764f036445",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/map-pin-check-inside-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-map-pin-check-inside/map-pin-check-inside-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-map-pin-check-inside-icon",
            "sourceHash": "sha256:7bb2e70318d757c5981595a3ed4f4e684ac67e5e52546d431860ed929621d983",
            "contentHash": "sha256:8849cf55872386b018c2b4c045e141457f7d7ad02cb8126e4fa1a392deb2f791",
            "structureHash": "sha256:c53832de3e4d37997b0d321281ab9d6ceafa3608f98a27a24655bff5e4776148",
            "glyph": {
              "inventoryName": "map-pin-check-inside",
              "canonicalName": "map-pin-check-inside",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-map-pinned",
      "type": "registry:component",
      "title": "Animated Map Pinned Icon",
      "description": "Renders an animated map pinned SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-map-pinned/map-pinned-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-map-pinned.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "map-pinned",
            "animated",
            "icon",
            "motion",
            "location",
            "place",
            "marker",
            "gps",
            "map",
            "pin"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-map-pinned.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-map-pinned/map-pinned-icon.tsx",
                "upstreamPath": "icons/lucide/map-pinned-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/map-pinned-icon.tsx",
                "upstreamSha256": "sha256:8fd07c3a98524f681aafcd7aa96d628f5d926cb742de8ca4b9a2b1442c4c2f75",
                "contentSha256": "sha256:6ddaf12c02fed00c3d5852d66548ebce42a4f90fd8079349c5bfd5f5461d1cb2",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/map-pinned-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-map-pinned/map-pinned-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-map-pinned-icon",
            "sourceHash": "sha256:3f15899b342aa78c2fdcf11ec847c096247585326bc9231f5a69c9f228f518e7",
            "contentHash": "sha256:2bc91251a5e7312c4d8faea774a6b1f6d59434a1ae83a3e884edff4389ca9995",
            "structureHash": "sha256:8a5bae08898ff90daab52586844b077258c71a922877a3ec0e83ede6dba47df6",
            "glyph": {
              "inventoryName": "map-pinned",
              "canonicalName": "map-pinned",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-mars",
      "type": "registry:component",
      "title": "Animated Mars Icon",
      "description": "Renders an animated mars SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-mars/mars-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-mars.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "mars",
            "animated",
            "icon",
            "motion",
            "male",
            "symbol",
            "planet",
            "astronomy"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-mars.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-mars/mars-icon.tsx",
                "upstreamPath": "icons/lucide/mars-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/mars-icon.tsx",
                "upstreamSha256": "sha256:0ebe25e10eb41ff11a407f98dbaf1a8a462f3333d97704480963c3fe26805cc2",
                "contentSha256": "sha256:aeb139704e76dd308b51b1000f59d282923d96cf56b1532f7117e282f852dd59",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/mars-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-mars/mars-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-mars-icon",
            "sourceHash": "sha256:3edb6746ec0754fffcd1ba08140acfb49279ea067366743cc0eedb121d2648a6",
            "contentHash": "sha256:4f6bda65469cd0db6108c6690e033abb4b5a353b1185ac6de35151f752663071",
            "structureHash": "sha256:3bef01a3168e22d9087f640f817ee10706ce1ccd790f10630d3b5dbe1fe9fac6",
            "glyph": {
              "inventoryName": "mars",
              "canonicalName": "mars",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-menu",
      "type": "registry:component",
      "title": "Animated Menu Icon",
      "description": "Renders an animated menu SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-menu/menu-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-menu.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "menu",
            "animated",
            "icon",
            "motion",
            "navigation",
            "options",
            "sidebar",
            "list"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-menu.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-menu/menu-icon.tsx",
                "upstreamPath": "icons/lucide/menu-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/menu-icon.tsx",
                "upstreamSha256": "sha256:3552bc35c14b87d4f6f9c024c74a779412bcf8e294893cfd3080b08f3276ff9e",
                "contentSha256": "sha256:7e9ff780337376465d600027f6c89956969a65f74ac8b16e1da9c26c39651a1e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/menu-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-menu/menu-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-menu-icon",
            "sourceHash": "sha256:5468558538c519a305785abe313a61ec9af484b9f093d7d625648187d51f6381",
            "contentHash": "sha256:be8c6ecbe2d1035c67f046d56da6230392d5d1c072541718f00f09acec23c9c9",
            "structureHash": "sha256:c1f8e0d964012f4fb39bec8eaf80cd6164732a776d0d14cf972703ced868d19a",
            "glyph": {
              "inventoryName": "menu",
              "canonicalName": "menu",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-message-circle",
      "type": "registry:component",
      "title": "Animated Message Circle Icon",
      "description": "Renders an animated message circle SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-message-circle/message-circle-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-message-circle.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "message-circle",
            "animated",
            "icon",
            "motion",
            "chat",
            "comment",
            "discussion",
            "reply",
            "feedback"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-message-circle.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-message-circle/message-circle-icon.tsx",
                "upstreamPath": "icons/lucide/message-circle-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/message-circle-icon.tsx",
                "upstreamSha256": "sha256:5f6bc1d17f0781dd0f788e08f675e0ff72f74eaa3013322aa7d46e08de125c00",
                "contentSha256": "sha256:e208388059135e459ba1883f5cf684990fe70943b8c04f9b62ab38002855b0d1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
                  "Removed upstream-authored trailing spaces as a purely mechanical whitespace normalization with no rendered SVG change."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/message-circle-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-message-circle/message-circle-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences. Removed upstream-authored trailing spaces as a purely mechanical whitespace normalization with no rendered SVG change.",
              "reason": "Resolve the bundled upstream helper without a consumer alias, ensure controlled animation honors explicit disablement and reduced-motion preferences, and normalize upstream trailing whitespace without changing rendered SVG output."
            }
          ],
          "dedupe": {
            "family": "animated-message-circle-icon",
            "sourceHash": "sha256:400cd22f70e917fee77e6a9fbf86edb61bc725745ace4f3b9e99f0559def5191",
            "contentHash": "sha256:739968f125e65f82bb84fe2221234c13039212d86fc1ea3a930eb8e1af3962ca",
            "structureHash": "sha256:30bec4a044cdaf7c432c38f3367fc3d8726030a53de9bf5d28628ecd9c9ee36a",
            "glyph": {
              "inventoryName": "message-circle",
              "canonicalName": "message-circle",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-mic",
      "type": "registry:component",
      "title": "Animated Mic Icon",
      "description": "Renders an animated mic SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-mic/mic-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-mic.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "mic",
            "animated",
            "icon",
            "motion",
            "record",
            "voice",
            "sound",
            "audio",
            "speak"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-mic.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-mic/mic-icon.tsx",
                "upstreamPath": "icons/lucide/mic-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/mic-icon.tsx",
                "upstreamSha256": "sha256:2565b0115d09214e94fe01fa3a410a0b53242244fa351cf70e70586795e21349",
                "contentSha256": "sha256:b611e11985b55bb6d839b53ab7519dbabeac78f3e02ef71e6904ae5c3be2edc8",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/mic-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-mic/mic-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-mic-icon",
            "sourceHash": "sha256:615981bf947ca1e3be8fa0e975c1f416b12ed1e702583031f84f24d33fd4c111",
            "contentHash": "sha256:bbf196424cacf35e30aabb90e896ba77768778991afe1596240ed5e03e501d6e",
            "structureHash": "sha256:c0e1f9b0302602d364061e490d21f24748acdae175f1c387306b74a8600af237",
            "glyph": {
              "inventoryName": "mic",
              "canonicalName": "mic",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-mic-off",
      "type": "registry:component",
      "title": "Animated Mic Off Icon",
      "description": "Renders an animated mic off SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-mic-off/mic-off-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-mic-off.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "mic-off",
            "animated",
            "icon",
            "motion",
            "mute",
            "silent",
            "disable",
            "quiet",
            "no-sound"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-mic-off.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-mic-off/mic-off-icon.tsx",
                "upstreamPath": "icons/lucide/mic-off-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/mic-off-icon.tsx",
                "upstreamSha256": "sha256:a6ae632c8adce7f861431208a56ab8a7a7fda6680273cf7acffc30a7b54ab7ce",
                "contentSha256": "sha256:b7b50a55b1d179bf0dbb5870ecd1e5fd084db5c1e3762e638a9c46cff0a43530",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/mic-off-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-mic-off/mic-off-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-mic-off-icon",
            "sourceHash": "sha256:6fc0a9a6e14c1e0e1091fd6345fef710356a3dd58a9598d23af6648d26be41b0",
            "contentHash": "sha256:2649a00db46ec0642a8c55ccba0e5c0d0436ffbb6994d23d5bc0e9ef11821e54",
            "structureHash": "sha256:134b688a307d04eed656f3dc018bb67bb4607fdfafe16375c1d66a718741cbc3",
            "glyph": {
              "inventoryName": "mic-off",
              "canonicalName": "mic-off",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-minus",
      "type": "registry:component",
      "title": "Animated Minus Icon",
      "description": "Renders an animated minus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-minus/minus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-minus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "minus",
            "animated",
            "icon",
            "motion",
            "subtract",
            "remove",
            "decrease",
            "reduce",
            "negative"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-minus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-minus/minus-icon.tsx",
                "upstreamPath": "icons/lucide/minus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/minus-icon.tsx",
                "upstreamSha256": "sha256:910ff2025ca1db949c32203356e0c8b681bc7e5f0c35836be87d6330a25b5acc",
                "contentSha256": "sha256:4f7a7be4a824a81e0bab286bc5b77ac2d94df08a3c62fa831815e5f9dde46e8b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/minus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-minus/minus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-minus-icon",
            "sourceHash": "sha256:bd274b285ff7f23fcbfeb628f131c28b372ab21c150aea525df56387bf98144f",
            "contentHash": "sha256:295e6cc053b1a4c1d750963b47b0587c25ecfa9c9f80949a3cd338a3cd812fd6",
            "structureHash": "sha256:307751405f71eb053a9c7cfd8f1358666c0f815713b7ed892a5ce118aab02793",
            "glyph": {
              "inventoryName": "minus",
              "canonicalName": "minus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-moon",
      "type": "registry:component",
      "title": "Animated Moon Icon",
      "description": "Renders an animated moon SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-moon/moon-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-moon.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "moon",
            "animated",
            "icon",
            "motion",
            "dark",
            "night",
            "weather",
            "dark-mode"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-moon.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-moon/moon-icon.tsx",
                "upstreamPath": "icons/lucide/moon-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/moon-icon.tsx",
                "upstreamSha256": "sha256:14863ab62cf0c583dbf49f9da63a11b7df8382455969dd1593e6decf3473880b",
                "contentSha256": "sha256:7dfb9051e17bdffc0c62a798b08080c883f38f282ee72c580e8a87b981b0af0c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/moon-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-moon/moon-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-moon-icon",
            "sourceHash": "sha256:3dea62db759af7051207efc799cf20eacec3d1043a6ae9335ca7b905b6ae61c8",
            "contentHash": "sha256:9e0ac4df70352fe85a4f00b502d0dcae8ef50a08ba721c34f735bf4dc40b3cfc",
            "structureHash": "sha256:88b10a564e63585ef4aaec22a78664c84bd73c8adaea529d5445be60b70c3e72",
            "glyph": {
              "inventoryName": "moon",
              "canonicalName": "moon",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-mouse-pointer-click",
      "type": "registry:component",
      "title": "Animated Mouse Pointer Click Icon",
      "description": "Renders an animated mouse pointer click SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-mouse-pointer-click/mouse-pointer-click-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-mouse-pointer-click.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "mouse-pointer-click",
            "animated",
            "icon",
            "motion",
            "click",
            "select"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-mouse-pointer-click.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-mouse-pointer-click/mouse-pointer-click-icon.tsx",
                "upstreamPath": "icons/lucide/mouse-pointer-click-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/mouse-pointer-click-icon.tsx",
                "upstreamSha256": "sha256:b460b63c99c9869661dae70c6e0c3859e570389f8a1454469415513266f7470a",
                "contentSha256": "sha256:92786e4d6c53d097a460d490dac120890b3d9ea3c1dd681cc46540d9e292b0c2",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/mouse-pointer-click-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-mouse-pointer-click/mouse-pointer-click-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-mouse-pointer-click-icon",
            "sourceHash": "sha256:f157dba64042ba3ec01ae209d3a2da434178ef7be5fa3406527137bf5a76eb2d",
            "contentHash": "sha256:0aeb67fff62fa0d16383790e3c82e7238fc79d0e9afe44284de82fa136de94ef",
            "structureHash": "sha256:ac18cfd0d5502a4dd11875097f1d59246eb38522f78b8882733792780dd4773a",
            "glyph": {
              "inventoryName": "mouse-pointer-click",
              "canonicalName": "mouse-pointer-click",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-move-diagonal",
      "type": "registry:component",
      "title": "Animated Move Diagonal Icon",
      "description": "Renders an animated move diagonal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-move-diagonal/move-diagonal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-move-diagonal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "move-diagonal",
            "animated",
            "icon",
            "motion",
            "move",
            "diagonal",
            "arrows",
            "resize"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-move-diagonal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-move-diagonal/move-diagonal-icon.tsx",
                "upstreamPath": "icons/lucide/move-diagonal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/move-diagonal-icon.tsx",
                "upstreamSha256": "sha256:3855fda1b4b92d89ef5f094b39bb09ec15b8b44eda348326809caf73cea522fe",
                "contentSha256": "sha256:009a7c4bffed74c46c8486d854ad7819e30857aced67c57a2d34c748843f7ddd",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/move-diagonal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-move-diagonal/move-diagonal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-move-diagonal-icon",
            "sourceHash": "sha256:448260f4930b23b26deeeee420c72334679d4f86e171334a25485390ff20c4b8",
            "contentHash": "sha256:41bc011b58d6cc4c17539d78717eb3f40f3d75a0fad1d144fe8cf39a88c27a30",
            "structureHash": "sha256:1ebd9815306ad883bc4bbe7105878c816515c66ff88f31feca73d73b6caef95a",
            "glyph": {
              "inventoryName": "move-diagonal",
              "canonicalName": "move-diagonal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-move-diagonal-2",
      "type": "registry:component",
      "title": "Animated Move Diagonal 2 Icon",
      "description": "Renders an animated move diagonal 2 SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-move-diagonal-2/move-diagonal-2-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-move-diagonal-2.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "move-diagonal-2",
            "animated",
            "icon",
            "motion",
            "move",
            "diagonal",
            "arrows",
            "resize"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-move-diagonal-2.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-move-diagonal-2/move-diagonal-2-icon.tsx",
                "upstreamPath": "icons/lucide/move-diagonal-2-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/move-diagonal-2-icon.tsx",
                "upstreamSha256": "sha256:6e0a16d84b60f172b1713a7b8ab33f1c6e00daf89f0ea9bda86b5b401a7a0120",
                "contentSha256": "sha256:a915c5e6dfa46b99b0f67338de3d3be2f80eac2356c21a44b32022e3d2204fe4",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/move-diagonal-2-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-move-diagonal-2/move-diagonal-2-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-move-diagonal-2-icon",
            "sourceHash": "sha256:4ae0e258470c1837ade9b04ad8cb6ce617d99ec5b3f18144cb756f82954ddf64",
            "contentHash": "sha256:e5db918562b7073bbffaefad939c6934170ccc01143eca9bf9096ef7b3a3c6e9",
            "structureHash": "sha256:170ab88f1f03fc5189330d428134b9f7b2e4a1bc417ca13889d87d66a4e39264",
            "glyph": {
              "inventoryName": "move-diagonal-2",
              "canonicalName": "move-diagonal-2",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-move-horizontal",
      "type": "registry:component",
      "title": "Animated Move Horizontal Icon",
      "description": "Renders an animated move horizontal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-move-horizontal/move-horizontal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-move-horizontal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "move-horizontal",
            "animated",
            "icon",
            "motion",
            "move",
            "horizontal",
            "arrows",
            "left",
            "right"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-move-horizontal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-move-horizontal/move-horizontal-icon.tsx",
                "upstreamPath": "icons/lucide/move-horizontal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/move-horizontal-icon.tsx",
                "upstreamSha256": "sha256:14335476b21175e05523dad17ef8c6f9ca2a8d38249adf7c772be92b3e564f1a",
                "contentSha256": "sha256:b42d5cdcf14f9ac6321287a3d4e1f5c6e9925b50d4d6df2d64a26bcc32634536",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/move-horizontal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-move-horizontal/move-horizontal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-move-horizontal-icon",
            "sourceHash": "sha256:dfff7118b72c10d614db7a6a4a469ffad3472c82fb5d30745f4571b372baef52",
            "contentHash": "sha256:f4926bd17edc729000a359ddaed44c81a31ddca9f778566b94bc41965ef8a40c",
            "structureHash": "sha256:59bebc6c4d1e7fd809a429b0ac366488cc70a947f7a24ccab2e40afd17864c84",
            "glyph": {
              "inventoryName": "move-horizontal",
              "canonicalName": "move-horizontal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-move-left",
      "type": "registry:component",
      "title": "Animated Move Left Icon",
      "description": "Renders an animated move left SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-move-left/move-left-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-move-left.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "move-left",
            "animated",
            "icon",
            "motion",
            "left",
            "back",
            "move",
            "west",
            "previous"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-move-left.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-move-left/move-left-icon.tsx",
                "upstreamPath": "icons/lucide/move-left-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/move-left-icon.tsx",
                "upstreamSha256": "sha256:4d062458b33e7808fca842d15b34c096c1046eccff94a12eb7d4b3d94f5e9349",
                "contentSha256": "sha256:68a92c99fd8d3e04f1df3e0c5167a25b6767598678715ed8a48329245c8f54ad",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/move-left-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-move-left/move-left-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-move-left-icon",
            "sourceHash": "sha256:ecdad7691f5e14197ed42f19af39680cffad15a2579f46b9a1c572651330c901",
            "contentHash": "sha256:2e4dc0c517d604b41deb416424a3980a9019c7224229ef94d763a5639f8bb6ec",
            "structureHash": "sha256:2e795e2dfdb88717449174933b462d82fded064b2d16bc01d5d98650fe5bd51a",
            "glyph": {
              "inventoryName": "move-left",
              "canonicalName": "move-left",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-move-right",
      "type": "registry:component",
      "title": "Animated Move Right Icon",
      "description": "Renders an animated move right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-move-right/move-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-move-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "move-right",
            "animated",
            "icon",
            "motion",
            "right",
            "next",
            "move",
            "east",
            "forward"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-move-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-move-right/move-right-icon.tsx",
                "upstreamPath": "icons/lucide/move-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/move-right-icon.tsx",
                "upstreamSha256": "sha256:083fb1bbd05501e1dfe3ecff7f2be1740bb90c288c6badbd4e6f07169671d6de",
                "contentSha256": "sha256:f22078681a4abb53054bd82fca6c5ce7a89094bf2e836a2d940bc79b87f33884",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/move-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-move-right/move-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-move-right-icon",
            "sourceHash": "sha256:361963aaf1b79cbbf5ad4738513c13cdb6c775018df4e9786cf3a8fff355d465",
            "contentHash": "sha256:66c761088191ef23c968eb8294c2d66d43fe495bd2db6ab5d1bde441118e91da",
            "structureHash": "sha256:7f2f5bd0d59f74af44d021b5379fdda7eb536bfeee833aed073acfe8885d1702",
            "glyph": {
              "inventoryName": "move-right",
              "canonicalName": "move-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-move-vertical",
      "type": "registry:component",
      "title": "Animated Move Vertical Icon",
      "description": "Renders an animated move vertical SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-move-vertical/move-vertical-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-move-vertical.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "move-vertical",
            "animated",
            "icon",
            "motion",
            "move",
            "vertical",
            "up",
            "down",
            "arrows"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-move-vertical.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-move-vertical/move-vertical-icon.tsx",
                "upstreamPath": "icons/lucide/move-vertical-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/move-vertical-icon.tsx",
                "upstreamSha256": "sha256:26d3bd9999095029746ea5bd7c6259ff88a1b447e3922686db5b5d91366e2e16",
                "contentSha256": "sha256:bf35da10d7c0fcaa22799201f5150f8c9e79ad0761063cf8dc66719c4530ea98",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/move-vertical-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-move-vertical/move-vertical-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-move-vertical-icon",
            "sourceHash": "sha256:279dcef1ade0f51a7a35e84022f4453ca29e428d66d69da25fa0c1dac5ae91ac",
            "contentHash": "sha256:9a8253316f74928013434a3af6bb377d1936fb79f474bd51dd5bc163f3aa6b2f",
            "structureHash": "sha256:4c1fd9deedce0c47a6dbe309d2e173b0c034331ca4088c387ce1afed35a32139",
            "glyph": {
              "inventoryName": "move-vertical",
              "canonicalName": "move-vertical",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-package-open",
      "type": "registry:component",
      "title": "Animated Package Open Icon",
      "description": "Renders an animated package open SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-package-open/package-open-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-package-open.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "package-open",
            "animated",
            "icon",
            "motion",
            "package",
            "unbox",
            "delivery",
            "received",
            "fulfillment"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-package-open.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-package-open/package-open-icon.tsx",
                "upstreamPath": "icons/lucide/package-open-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/package-open-icon.tsx",
                "upstreamSha256": "sha256:8c9a0d4b8cc9959b0d22a7d10500a79380e168bbd5ccde6b6285dfe79f61d53e",
                "contentSha256": "sha256:eb81654764d46200e253fe5693df93da1f78624465d985f727732821750a76f0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/package-open-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-package-open/package-open-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-package-open-icon",
            "sourceHash": "sha256:6fc8d7973e70c18485f36d67003b1467919693347db2c20a806915ae29609502",
            "contentHash": "sha256:25dae75c89e6f3a98fccdbada26ed21d95821519c15f4b68ed49fcc1d8cb69e1",
            "structureHash": "sha256:807c8dbae5ec3b72b2ba3e9303df110993d8f8aec0ca85353bde763b7a155d0f",
            "glyph": {
              "inventoryName": "package-open",
              "canonicalName": "package-open",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-paperclip",
      "type": "registry:component",
      "title": "Animated Paperclip Icon",
      "description": "Renders an animated paperclip SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-paperclip/paperclip-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-paperclip.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "paperclip",
            "animated",
            "icon",
            "motion",
            "attachment",
            "file",
            "document",
            "clip",
            "paper"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-paperclip.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-paperclip/paperclip-icon.tsx",
                "upstreamPath": "icons/lucide/paperclip-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/paperclip-icon.tsx",
                "upstreamSha256": "sha256:81d2cfcf4417ff40c1bda411761a7d91f2683602a1927a29454989cd1fc2efda",
                "contentSha256": "sha256:a837dc6afe5696b67860994ff9ebd5841152438c046055867439414e0cef484a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/paperclip-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-paperclip/paperclip-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-paperclip-icon",
            "sourceHash": "sha256:cce3685ba98a8c2afcdae6ed59e7fc338a0cac543fc629065f9aeba663de60ba",
            "contentHash": "sha256:52d90f0e0daca8ae68f11f96f6e9edf54451be8c6039340df440671da6360ff9",
            "structureHash": "sha256:344ee7cfb4fba2bacbd83da50932fe609827efa5d073ebfc61eb1a311c7f5fdf",
            "glyph": {
              "inventoryName": "paperclip",
              "canonicalName": "paperclip",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-pause",
      "type": "registry:component",
      "title": "Animated Pause Icon",
      "description": "Renders an animated pause SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-pause/pause-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-pause.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "pause",
            "animated",
            "icon",
            "motion",
            "stop",
            "music",
            "video",
            "hold",
            "break"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-pause.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-pause/pause-icon.tsx",
                "upstreamPath": "icons/lucide/pause-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/pause-icon.tsx",
                "upstreamSha256": "sha256:e6a1e9492a4b32b7418be712ed17eb34187b072f74446f82e389f231087cf84c",
                "contentSha256": "sha256:b28c9c2aa5360f4280e1020cd4e144b10fc8daf6cd0072215db2e7a515856ce7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/pause-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-pause/pause-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-pause-icon",
            "sourceHash": "sha256:ccea1bd3726a6c809b749434a60d06dcb5f5318fb7d1b4296f96ed2b3a69a222",
            "contentHash": "sha256:0a07f96f40185e210ef8af5684a790066963e99f6f28790cef7d9b3716be7f06",
            "structureHash": "sha256:b459a2d298f5fcb198d95ab646fd08b256f71e4368f33fa7b284a738e42014eb",
            "glyph": {
              "inventoryName": "pause",
              "canonicalName": "pause",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-philippine-peso",
      "type": "registry:component",
      "title": "Animated Philippine Peso Icon",
      "description": "Renders an animated philippine peso SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-philippine-peso/philippine-peso-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-philippine-peso.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "philippine-peso",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "peso",
            "php"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-philippine-peso.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-philippine-peso/philippine-peso-icon.tsx",
                "upstreamPath": "icons/lucide/philippine-peso-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/philippine-peso-icon.tsx",
                "upstreamSha256": "sha256:66e446479095f2805bd8e330cef502ee4191714df412ec3cd1e783b628038861",
                "contentSha256": "sha256:b957653106b7cebdb9ca353944f0b7e1cb01cd838c07f28823e3586995a4017e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/philippine-peso-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-philippine-peso/philippine-peso-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-philippine-peso-icon",
            "sourceHash": "sha256:b2d1de5e667ef65f8331be685a7d1547a80a8be84667538b8d8fd1bd26dcb8b8",
            "contentHash": "sha256:1fdbadf27511cd75db235de8820216e431aae31073d1b15789a2d97d9702a58c",
            "structureHash": "sha256:4d2e381473e1ec4a535473d57486e62587aa53e23313f0a490d04d2badc2a0d8",
            "glyph": {
              "inventoryName": "philippine-peso",
              "canonicalName": "philippine-peso",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-phone",
      "type": "registry:component",
      "title": "Animated Phone Icon",
      "description": "Renders an animated phone SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-phone/phone-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-phone.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "phone",
            "animated",
            "icon",
            "motion",
            "call",
            "mobile",
            "contact",
            "support",
            "device"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-phone.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-phone/phone-icon.tsx",
                "upstreamPath": "icons/lucide/phone-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/phone-icon.tsx",
                "upstreamSha256": "sha256:5a537b05d2e3550017dea5ebc7f8f24473f26f327cda82dbfeeffacfc667027d",
                "contentSha256": "sha256:f60554354aaaeddbae5aec5462975e0474392a6c3fe0c1a59822ace3dbca883c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/phone-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-phone/phone-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-phone-icon",
            "sourceHash": "sha256:ff64164b07b3d4b704415a04223def38957b615dd45ea5a2de1303d7b04fcb5f",
            "contentHash": "sha256:eeff760689b9a86b64a66946287d3d1e2c9e3de85e5e97e504ceed3684b131a5",
            "structureHash": "sha256:cadb3d4bc4f4de1d24889f3d9b8c59cb17f424f5c3065ba84ff99d023d334e1e",
            "glyph": {
              "inventoryName": "phone",
              "canonicalName": "phone",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-phone-call",
      "type": "registry:component",
      "title": "Animated Phone Call Icon",
      "description": "Renders an animated phone call SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-phone-call/phone-call-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-phone-call.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "phone-call",
            "animated",
            "icon",
            "motion",
            "call",
            "phone",
            "dial",
            "contact",
            "connect"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-phone-call.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-phone-call/phone-call-icon.tsx",
                "upstreamPath": "icons/lucide/phone-call-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/phone-call-icon.tsx",
                "upstreamSha256": "sha256:7940433b08397bedb04093db8cefc7a2134089f70c943b5691d442b1ce8341d9",
                "contentSha256": "sha256:d7d0ecd9eed1810b846f655f8760c72b5efa9b0274555f76bd756966ce4a1c84",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/phone-call-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-phone-call/phone-call-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-phone-call-icon",
            "sourceHash": "sha256:63f33b62342430e5d8ee6e966da09c1960a12636efeb2920bdfc109e8514e061",
            "contentHash": "sha256:5ae1a5532e2af56a40ec0112479bc1e7499ea6d840622d09c8f0f78ee247b271",
            "structureHash": "sha256:71cac616897a904d7b3442df46e02eb94be0dbebb8501c7d9d2f3a7cbdd92d50",
            "glyph": {
              "inventoryName": "phone-call",
              "canonicalName": "phone-call",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-phone-forwarded",
      "type": "registry:component",
      "title": "Animated Phone Forwarded Icon",
      "description": "Renders an animated phone forwarded SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-phone-forwarded/phone-forwarded-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-phone-forwarded.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "phone-forwarded",
            "animated",
            "icon",
            "motion",
            "forward",
            "redirect",
            "transfer",
            "call",
            "route"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-phone-forwarded.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-phone-forwarded/phone-forwarded-icon.tsx",
                "upstreamPath": "icons/lucide/phone-forwarded-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/phone-forwarded-icon.tsx",
                "upstreamSha256": "sha256:e8fee5f96bd7434d311f5a1814fb9c9ff232ab5117498f9cd490e37a9886b7f1",
                "contentSha256": "sha256:32720a69acf548ef11bb7f33068f8c3b9dd419d248666c18f5c147f435e575cd",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/phone-forwarded-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-phone-forwarded/phone-forwarded-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-phone-forwarded-icon",
            "sourceHash": "sha256:d5d45c9d174c19f6dfb2a994f2427726dd0af7aeedf1d124b7f2dcb2b8c7dfe4",
            "contentHash": "sha256:e10470bfdea8e7e68b56f7be5d582690e3deab629e1f14977a9c4e6691687c4d",
            "structureHash": "sha256:1f19a5f1c61af89604c2bf6af0c9b9eaab64cc40788542024ca93c9c8f06213b",
            "glyph": {
              "inventoryName": "phone-forwarded",
              "canonicalName": "phone-forwarded",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-phone-incoming",
      "type": "registry:component",
      "title": "Animated Phone Incoming Icon",
      "description": "Renders an animated phone incoming SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-phone-incoming/phone-incoming-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-phone-incoming.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "phone-incoming",
            "animated",
            "icon",
            "motion",
            "incoming",
            "receive",
            "answer",
            "call",
            "ring"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-phone-incoming.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-phone-incoming/phone-incoming-icon.tsx",
                "upstreamPath": "icons/lucide/phone-incoming-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/phone-incoming-icon.tsx",
                "upstreamSha256": "sha256:d8d0854242ed163d89e9fa7284affb90098bcef864482d82c73e755fcab61bc8",
                "contentSha256": "sha256:f5467d202c98e206549dcb2cd71b390da3459ad9afe949ab0b32884111bb1d70",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/phone-incoming-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-phone-incoming/phone-incoming-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-phone-incoming-icon",
            "sourceHash": "sha256:70032cd8b823e297b7808eec5e89380f3ec4b022417b398f0c33409cc3f46ecf",
            "contentHash": "sha256:e82295fcf2922db2bda98bf331ede7a8adaf1fed092b5f571675e98323d32390",
            "structureHash": "sha256:cbf6a5a652c7091dd3dd19467d4f253d689a34dbdbd520b7bf7b4b955484252f",
            "glyph": {
              "inventoryName": "phone-incoming",
              "canonicalName": "phone-incoming",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-phone-missed",
      "type": "registry:component",
      "title": "Animated Phone Missed Icon",
      "description": "Renders an animated phone missed SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-phone-missed/phone-missed-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-phone-missed.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "phone-missed",
            "animated",
            "icon",
            "motion",
            "missed",
            "declined",
            "unanswered",
            "call",
            "alert"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-phone-missed.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-phone-missed/phone-missed-icon.tsx",
                "upstreamPath": "icons/lucide/phone-missed-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/phone-missed-icon.tsx",
                "upstreamSha256": "sha256:2007846f2638415efb157540f1772c170fc9f445bef65b30979b60c64289af35",
                "contentSha256": "sha256:223f9e59c80dccea54e3964f444dc853b905ab2d20427c588d9a6732383e3608",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/phone-missed-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-phone-missed/phone-missed-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-phone-missed-icon",
            "sourceHash": "sha256:3d89061d65d5127458d761291d2aa79845efec1cff2f14127f213b818447c2b1",
            "contentHash": "sha256:8c186b14594ae8da85f199ceb0418153f27b841d299e398022c20cc509d54656",
            "structureHash": "sha256:71cac616897a904d7b3442df46e02eb94be0dbebb8501c7d9d2f3a7cbdd92d50",
            "glyph": {
              "inventoryName": "phone-missed",
              "canonicalName": "phone-missed",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-play",
      "type": "registry:component",
      "title": "Animated Play Icon",
      "description": "Renders an animated play SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-play/play-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-play.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "play",
            "animated",
            "icon",
            "motion",
            "start",
            "music",
            "video",
            "resume",
            "media"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-play.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-play/play-icon.tsx",
                "upstreamPath": "icons/lucide/play-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/play-icon.tsx",
                "upstreamSha256": "sha256:6979179fc790ca04c2de2a4bc06e786e109e329afdf6e174b48496c6e9fb1ffc",
                "contentSha256": "sha256:1c2b9b050a80db24445dbac04d1327cdc100cd1ad3367fcd89f28fed2c5c1dd1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/play-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-play/play-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-play-icon",
            "sourceHash": "sha256:e8a65bcd21974c390e038ffe46fb4361b291e5d5055641a0593e764a0819ee8b",
            "contentHash": "sha256:ded15174f25ca67ebecb277f16fbdb8a774ee65fadc96c93a944c12d73c9cb4e",
            "structureHash": "sha256:2bf33b106b2a366d486f99b261f69031143922042dadd95282ad0ac9ae221537",
            "glyph": {
              "inventoryName": "play",
              "canonicalName": "play",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-plus",
      "type": "registry:component",
      "title": "Animated Plus Icon",
      "description": "Renders an animated plus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-plus/plus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-plus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "plus",
            "animated",
            "icon",
            "motion",
            "add",
            "new",
            "create",
            "positive"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-plus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-plus/plus-icon.tsx",
                "upstreamPath": "icons/lucide/plus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/plus-icon.tsx",
                "upstreamSha256": "sha256:99efcf0d0f9ca5f440649df876df137ae79b4d7edb9ae276d41c0a05fdf9bc21",
                "contentSha256": "sha256:95d1e4469accfb823caa3785283e987557b11c38ea1870dc79c8ff7a6ceca380",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/plus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-plus/plus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-plus-icon",
            "sourceHash": "sha256:566511ced4a9962d9ef6806ddd915c84a03697170fc952d353a48995e2d80568",
            "contentHash": "sha256:06cb410a94f8d56c1edbe3970510da584c80c6b9f088b4c25b58b8c3c33bad57",
            "structureHash": "sha256:ababed4b4e8f1c3f34951251a80b7603bc6daf8fd96c6a3584f1e80c877d2a5c",
            "glyph": {
              "inventoryName": "plus",
              "canonicalName": "plus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-pound-sterling",
      "type": "registry:component",
      "title": "Animated Pound Sterling Icon",
      "description": "Renders an animated pound sterling SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-pound-sterling/pound-sterling-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-pound-sterling.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "pound-sterling",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "pound",
            "gbp"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-pound-sterling.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-pound-sterling/pound-sterling-icon.tsx",
                "upstreamPath": "icons/lucide/pound-sterling-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/pound-sterling-icon.tsx",
                "upstreamSha256": "sha256:b0b04ef4afde1f19bf641e7c219bf3f08798650f555e54f8c6f1cec920e1ce8d",
                "contentSha256": "sha256:17ba26e3b44899a149b1a881dde52a248f3f07e882316e41ff5a6d42c2d8ceed",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/pound-sterling-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-pound-sterling/pound-sterling-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-pound-sterling-icon",
            "sourceHash": "sha256:e1282e6464375c290a2f28cc3161d3bb0524b5eb771fdfd1cd71406f3188be1f",
            "contentHash": "sha256:15556fb469bd727bb89b79a32326647aed223bcb1b27ac32c99f671f2c95813d",
            "structureHash": "sha256:ce46096f3f23f7bfa23ebe4766b8cbd2c0b2e8e73ee18fdc5d20a728004103ae",
            "glyph": {
              "inventoryName": "pound-sterling",
              "canonicalName": "pound-sterling",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-qr-code",
      "type": "registry:component",
      "title": "Animated Qr Code Icon",
      "description": "Renders an animated qr code SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-qr-code/qr-code-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-qr-code.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "qr-code",
            "animated",
            "icon",
            "motion",
            "qr",
            "code",
            "scan",
            "barcode",
            "reader"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-qr-code.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-qr-code/qr-code-icon.tsx",
                "upstreamPath": "icons/lucide/qr-code-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/qr-code-icon.tsx",
                "upstreamSha256": "sha256:3d98754d1fcef82dbae25c39df9919379a221acae3af0b2aef28ef0f261eceaf",
                "contentSha256": "sha256:f57c5aec45804b19f7a1e53293309859ef0f5b7965eee1765e5f4581c154d988",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/qr-code-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-qr-code/qr-code-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-qr-code-icon",
            "sourceHash": "sha256:185991f3cf7eca40381131e9f5a71ed396e594775b784eee7b44f922b21021d0",
            "contentHash": "sha256:6c09679fbe66a5b269260d4269e05b7e71105bf365af75b42d529700621dc72a",
            "structureHash": "sha256:3651d61efceeb007fa44051da298679b1f0fd99518abbfbf10232056374c03f6",
            "glyph": {
              "inventoryName": "qr-code",
              "canonicalName": "qr-code",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-reply",
      "type": "registry:component",
      "title": "Animated Reply Icon",
      "description": "Renders an animated reply SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-reply/reply-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-reply.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "reply",
            "animated",
            "icon",
            "motion",
            "respond",
            "back",
            "return",
            "answer"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-reply.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-reply/reply-icon.tsx",
                "upstreamPath": "icons/lucide/reply-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/reply-icon.tsx",
                "upstreamSha256": "sha256:0dfe065a16deb522b4f51194990b351b4b407a0a011bc2e9122b6bfbbdcf772a",
                "contentSha256": "sha256:990f74927bbcbe50fd91a3f37f85c17e7c2d0ba10c903190ac3a1cd2fa85a872",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/reply-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-reply/reply-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-reply-icon",
            "sourceHash": "sha256:36c8cdb5eeddc4176b513ba44e860fe445e338ee11e32389f90c2a4fc5c1936e",
            "contentHash": "sha256:f380e33a41ad64e3f9f9d32515b16fa94dda7aec7131182b3c22c2b58dd97ce8",
            "structureHash": "sha256:0e63664ecd5ae88a6120f2220ccb54f8c91f30d2dd7abe25a5bcb97f2d576099",
            "glyph": {
              "inventoryName": "reply",
              "canonicalName": "reply",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-reply-all",
      "type": "registry:component",
      "title": "Animated Reply All Icon",
      "description": "Renders an animated reply all SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-reply-all/reply-all-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-reply-all.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "reply-all",
            "animated",
            "icon",
            "motion",
            "respond-all",
            "group-reply",
            "broadcast",
            "answer"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-reply-all.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-reply-all/reply-all-icon.tsx",
                "upstreamPath": "icons/lucide/reply-all-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/reply-all-icon.tsx",
                "upstreamSha256": "sha256:23d7eb529068d5039d7d97c5118e7dca9a617dc970bf74e0bddcba412e1a75ae",
                "contentSha256": "sha256:3185176721444e67f653874b4ef32bb79c5fb6b5af1700bfd07ce56b1f2ad898",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/reply-all-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-reply-all/reply-all-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-reply-all-icon",
            "sourceHash": "sha256:4e0729eb7a62ff55bcf47a5ba89a30575f54f024dfc80824c5458e7a6eeab56b",
            "contentHash": "sha256:b90c1facc4e5d7b2587acbfbe8bf39945a88f28f4e454d115a1d3f039c9bc1c6",
            "structureHash": "sha256:9581e651a18b190e0dadcbd178c64087a929c317428d97e8108d882351d2d1bf",
            "glyph": {
              "inventoryName": "reply-all",
              "canonicalName": "reply-all",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-rocket",
      "type": "registry:component",
      "title": "Animated Rocket Icon",
      "description": "Renders an animated rocket SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-rocket/rocket-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-rocket.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "rocket",
            "animated",
            "icon",
            "motion",
            "launch",
            "startup",
            "boost",
            "deploy",
            "speed"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-rocket.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-rocket/rocket-icon.tsx",
                "upstreamPath": "icons/lucide/rocket-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/rocket-icon.tsx",
                "upstreamSha256": "sha256:882c4bee84fc3932779711fa5e7593a4a34c8ccd38c1e76fd9b7c77e7f68e378",
                "contentSha256": "sha256:4b7c06f05842e0cfc4078aa4636982ac47f356efafce5ef9b1bdd27b740fde71",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/rocket-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-rocket/rocket-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-rocket-icon",
            "sourceHash": "sha256:a979b7031ec7205f9eeee28635739f027dfdede9d17892be946ddde99635dae4",
            "contentHash": "sha256:703e7df8d72d97016750e18ded029d7d178ba846b9fcbf5efe9db07fb069f338",
            "structureHash": "sha256:7ec9f7ff2ffb30f4e32a3f2e418ca64f7a3bf49aaf46f93a2c397a852b58a210",
            "glyph": {
              "inventoryName": "rocket",
              "canonicalName": "rocket",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-russian-ruble",
      "type": "registry:component",
      "title": "Animated Russian Ruble Icon",
      "description": "Renders an animated russian ruble SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-russian-ruble/russian-ruble-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-russian-ruble.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "russian-ruble",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "ruble",
            "russia"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-russian-ruble.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-russian-ruble/russian-ruble-icon.tsx",
                "upstreamPath": "icons/lucide/russian-ruble-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/russian-ruble-icon.tsx",
                "upstreamSha256": "sha256:ff89a1de7424c1547d0cbeb616b0d4ea9dc322d35d642db6fbb038ce58568fde",
                "contentSha256": "sha256:add0d875e2f02a630f0ad600f074c98f196f1ec6269c7a585a48b416d396cec6",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/russian-ruble-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-russian-ruble/russian-ruble-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-russian-ruble-icon",
            "sourceHash": "sha256:a1ccaf397083f8457262d5df9940c563e72fb0c4e4eb4cf42b2b19200ed2e79f",
            "contentHash": "sha256:6db125ccf4841799cfd96b0882d218ed7e34cc5b481205ad0483aeab5a99f7be",
            "structureHash": "sha256:0c955142393e0c8a2b92e7183ef72a4d62df1b9a435063aff700156d68069907",
            "glyph": {
              "inventoryName": "russian-ruble",
              "canonicalName": "russian-ruble",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-saudi-riyal",
      "type": "registry:component",
      "title": "Animated Saudi Riyal Icon",
      "description": "Renders an animated saudi riyal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-saudi-riyal/saudi-riyal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-saudi-riyal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "saudi-riyal",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "riyal",
            "saudi"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-saudi-riyal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-saudi-riyal/saudi-riyal-icon.tsx",
                "upstreamPath": "icons/lucide/saudi-riyal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/saudi-riyal-icon.tsx",
                "upstreamSha256": "sha256:c9dd336b1ff39846fdcb5532803ad3f5e99c0bf73d779a5e0133468bfef7b337",
                "contentSha256": "sha256:40b7861e6a702406af786672e36adbf71be8ef245b7869bf0f668893cf8dbd5f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/saudi-riyal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-saudi-riyal/saudi-riyal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-saudi-riyal-icon",
            "sourceHash": "sha256:0e17d7375b940157efe708a5a1217503b3aa373e5ee79d0177878d5bc8a660b3",
            "contentHash": "sha256:143e7fc285784cbb0d5e308e6a4b8dfa3351bc58fd3c81b6ef6f1e65497b8b96",
            "structureHash": "sha256:ce46096f3f23f7bfa23ebe4766b8cbd2c0b2e8e73ee18fdc5d20a728004103ae",
            "glyph": {
              "inventoryName": "saudi-riyal",
              "canonicalName": "saudi-riyal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-scan",
      "type": "registry:component",
      "title": "Animated Scan Icon",
      "description": "Renders an animated scan SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-scan/scan-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-scan.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "scan",
            "animated",
            "icon",
            "motion",
            "read",
            "detect",
            "barcode",
            "qr"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-scan.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-scan/scan-icon.tsx",
                "upstreamPath": "icons/lucide/scan-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/scan-icon.tsx",
                "upstreamSha256": "sha256:f1a1cf59f5e7ed7dfad7c9ea3a002825c959470ada19d046cff17a19f565adcc",
                "contentSha256": "sha256:8cf59421de6402f180910b658d4e7de41fb3f608dbab2cc9146a43f3ea133c2d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/scan-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-scan/scan-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-scan-icon",
            "sourceHash": "sha256:63ded654a1f8efa97019d057b78a42f039123cecca4ed125589d11b1fc9ab03d",
            "contentHash": "sha256:e7c916c9279aa5ed8ecc538637c4bf4a8a589f73458aa1f2bd5b73e3b52efe5e",
            "structureHash": "sha256:38aa5900b7fd7a20b5486cfdc85fd62970cab8fa351d1d6fe171a63b1237a9b2",
            "glyph": {
              "inventoryName": "scan",
              "canonicalName": "scan",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-scan-line",
      "type": "registry:component",
      "title": "Animated Scan Line Icon",
      "description": "Renders an animated scan line SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-scan-line/scan-line-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-scan-line.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "scan-line",
            "animated",
            "icon",
            "motion",
            "scan",
            "line",
            "barcode",
            "read",
            "detect"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-scan-line.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-scan-line/scan-line-icon.tsx",
                "upstreamPath": "icons/lucide/scan-line-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/scan-line-icon.tsx",
                "upstreamSha256": "sha256:5869f3ca3a24f7e0e40c1f83cf33abc1fc26b941cb0003830a6d61c019aaeb49",
                "contentSha256": "sha256:41ab2969abc6eb6ad701e2450159dd344454a5f8422ca9a05122494986fc0955",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/scan-line-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-scan-line/scan-line-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-scan-line-icon",
            "sourceHash": "sha256:0c0fe6588e002296e08c99627d418c958fcfdb16054fd9caf3e3478b9b9c6d2c",
            "contentHash": "sha256:0b24b1dc87fa4718a17db36c2275709353b32aff6aebb9050665c6dfc42bfdc9",
            "structureHash": "sha256:138042f71a4702bc99e02f179833c52f41ca6bfd44d81cf13d343918a8de724a",
            "glyph": {
              "inventoryName": "scan-line",
              "canonicalName": "scan-line",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-scan-qr-code",
      "type": "registry:component",
      "title": "Animated Scan Qr Code Icon",
      "description": "Renders an animated scan qr code SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-scan-qr-code/scan-qr-code-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-scan-qr-code.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "scan-qr-code",
            "animated",
            "icon",
            "motion",
            "scan",
            "qr",
            "code",
            "barcode",
            "read"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-scan-qr-code.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-scan-qr-code/scan-qr-code-icon.tsx",
                "upstreamPath": "icons/lucide/scan-qr-code-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/scan-qr-code-icon.tsx",
                "upstreamSha256": "sha256:3033305fceb28d73f9cd0e6bad85578e1fca0920bf8c7bfbcf9e5fea84b8fba5",
                "contentSha256": "sha256:4c18acb98449117478280756551ee794c08e4191d73936f3d77112268e0f8a93",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/scan-qr-code-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-scan-qr-code/scan-qr-code-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-scan-qr-code-icon",
            "sourceHash": "sha256:41bb82fa72061fedbbae0a2cac5bed1dfc766c3cb650f3b6f1cf33b98dc0117f",
            "contentHash": "sha256:dea63e9e1b08c22cc55281cefe04d3b7e43e3607e4525b729c3c40cc2ac059f1",
            "structureHash": "sha256:5586204a3ed87838c535a8e6b07949ba227c3fe48c917dcecd1a35265e442602",
            "glyph": {
              "inventoryName": "scan-qr-code",
              "canonicalName": "scan-qr-code",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-search",
      "type": "registry:component",
      "title": "Animated Search Icon",
      "description": "Renders an animated search SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-search/search-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-search.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "search",
            "animated",
            "icon",
            "motion",
            "find",
            "magnifier",
            "explore",
            "query"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-search.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-search/search-icon.tsx",
                "upstreamPath": "icons/lucide/search-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/search-icon.tsx",
                "upstreamSha256": "sha256:5c115e66573fc57ddf51a8688ff9316246bcf84220ffe4301eaceb0f87593dee",
                "contentSha256": "sha256:7e0d980acd02633cddb9c90a80dc5e868b325a4f723f6bfec8f9c6969d83da5f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/search-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-search/search-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-search-icon",
            "sourceHash": "sha256:fc51c6d2bb15886d7106c917a9abbc0a2bfb0f0b96282752d2ae15a73e203362",
            "contentHash": "sha256:ba074349cd764380ad93c2a9dbfc84b7fc0bb0522282cbc85ee1fa86fded57c0",
            "structureHash": "sha256:9ae96de4ab88afc59b9aa80fa47af9065512f827e8d8a1aacec7f8bf6fafdc38",
            "glyph": {
              "inventoryName": "search",
              "canonicalName": "search",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-send",
      "type": "registry:component",
      "title": "Animated Send Icon",
      "description": "Renders an animated send SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-send/send-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-send.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "send",
            "animated",
            "icon",
            "motion",
            "message",
            "chat",
            "email",
            "submit",
            "fly"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-send.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-send/send-icon.tsx",
                "upstreamPath": "icons/lucide/send-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/send-icon.tsx",
                "upstreamSha256": "sha256:f77f2d1876f318c2805d4d80bd04736c84ef8a6f30633f1c2a73eac53f483eca",
                "contentSha256": "sha256:c23d5d7152f3145716269ef3c43a7597d32466479fdb04d9d5757be976bd34a1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/send-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-send/send-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-send-icon",
            "sourceHash": "sha256:42cd46d823c9355e4527dba1a1127e9945cc0684ee93bf2223fa5d1872cba128",
            "contentHash": "sha256:94222a92d87779dc2b499f3a8482cdb7ae291409395cf7d32245270cf864bf45",
            "structureHash": "sha256:f5e377cd8500d39fbf40e700ec2f0f2a07bac5c7117576a450f9dcf942b4b4a6",
            "glyph": {
              "inventoryName": "send",
              "canonicalName": "send",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-settings",
      "type": "registry:component",
      "title": "Animated Settings Icon",
      "description": "Renders an animated settings SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-settings/settings-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-settings.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "settings",
            "animated",
            "icon",
            "motion",
            "configuration",
            "options",
            "preferences",
            "gear"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-settings.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-settings/settings-icon.tsx",
                "upstreamPath": "icons/lucide/settings-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/settings-icon.tsx",
                "upstreamSha256": "sha256:7f3e6f28edbacb30ff195b073a9ae36f9cdf119c948615a0ab3ed528ca49a0fa",
                "contentSha256": "sha256:7567257ff5fd65ee15dc862c0f0dc690a18954c640b6eae1d0fddd0a8f4a7abc",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/settings-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-settings/settings-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-settings-icon",
            "sourceHash": "sha256:9fa16193e327c4b5351c9405d074ced6eda6f030696a17dd51382d366eecc49f",
            "contentHash": "sha256:02237ac5a4d7e5a87ad8a4eedc3cd4370ada9c9a8210b26b6e650bc314c30aa1",
            "structureHash": "sha256:8a8c4eda4a924df8d96fdcd8abc48c02b5d3d9cdf19c47fc5f491155285fbcb5",
            "glyph": {
              "inventoryName": "settings",
              "canonicalName": "settings",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-share",
      "type": "registry:component",
      "title": "Animated Share Icon",
      "description": "Renders an animated share SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-share/share-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-share.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "share",
            "share-2",
            "animated",
            "icon",
            "motion",
            "forward",
            "distribute",
            "social",
            "send",
            "link"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-share.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-share/share-icon.tsx",
                "upstreamPath": "icons/lucide/share-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/share-icon.tsx",
                "upstreamSha256": "sha256:9d559560f3b017cc19f3abf3f8299dea3a0051d9d14927fcf11f0a7f0cec6933",
                "contentSha256": "sha256:18232dc22118da3fc633490084e3964314b0c47878ce2444ce2a045836180dfa",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/share-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-share/share-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-share-2-icon",
            "sourceHash": "sha256:245408e9a6ae84982dbb0a6ed6a852967f3eee18a845678887753be313173975",
            "contentHash": "sha256:315b9e007c4be4af774073f1d989b693f527d180bc823a8fffc64984f9ce40b0",
            "structureHash": "sha256:276515e6c6687876c9f7dfdc6221b38670b1aea3cf9855e9ed7d6c52f1283977",
            "glyph": {
              "inventoryName": "share",
              "canonicalName": "share-2",
              "aliases": [
                "share"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-shield-check",
      "type": "registry:component",
      "title": "Animated Shield Check Icon",
      "description": "Renders an animated shield check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-shield-check/shield-check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-shield-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "shield-check",
            "animated",
            "icon",
            "motion",
            "cybersecurity",
            "secure",
            "safety",
            "protected",
            "guardian"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-shield-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-shield-check/shield-check-icon.tsx",
                "upstreamPath": "icons/lucide/shield-check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/shield-check-icon.tsx",
                "upstreamSha256": "sha256:6c9692fcba8a64368151f8e6c8ea9fde62948102bc51cd6ab0c5533732ad2941",
                "contentSha256": "sha256:08dfa066f03c9b5ccf08a3305bca5225e25bf6b9a5c44ed3d0411ef995a8ece4",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/shield-check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-shield-check/shield-check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-shield-check-icon",
            "sourceHash": "sha256:a1002a80b09dd62200ac71acf7ab6762cc685192730b71c23ae4c3ad1d606c12",
            "contentHash": "sha256:22136d9556b873b911d0da44787b924d8abcde2f69202a2c2b91f4298e65c098",
            "structureHash": "sha256:78ddd219385573f539d23e42c240fc37af69784137a4f9f69fdbe0a45c95ebf9",
            "glyph": {
              "inventoryName": "shield-check",
              "canonicalName": "shield-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-shield-user",
      "type": "registry:component",
      "title": "Animated Shield User Icon",
      "description": "Renders an animated shield user SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-shield-user/shield-user-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-shield-user.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "shield-user",
            "animated",
            "icon",
            "motion",
            "shield",
            "user",
            "secure",
            "protection",
            "safe",
            "guard"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-shield-user.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-shield-user/shield-user-icon.tsx",
                "upstreamPath": "icons/lucide/shield-user-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/shield-user-icon.tsx",
                "upstreamSha256": "sha256:84f4a62812ca711a4d644b4d06525aaa484d5b0b3974aec8791be9bd25d4bfac",
                "contentSha256": "sha256:797800bb89e24cec826cb7d730479c422c05eb0bc4284c9607e1a7ccd64dc2d7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/shield-user-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-shield-user/shield-user-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-shield-user-icon",
            "sourceHash": "sha256:daec5632da1ab6c6d9bda8466c69a31a6e2ce9d8be5e006647a78dab0936860a",
            "contentHash": "sha256:d030203b07d64e9780a632d5b5d0d5c62ac9c69ad105549c3be2c333e43f588c",
            "structureHash": "sha256:9e819807c569ea2b2acb58a5b7477a2f0ac4692c0ad732387516bd4725e7c331",
            "glyph": {
              "inventoryName": "shield-user",
              "canonicalName": "shield-user",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-shield-x",
      "type": "registry:component",
      "title": "Animated Shield X Icon",
      "description": "Renders an animated shield x SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-shield-x/shield-x-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-shield-x.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "shield-x",
            "animated",
            "icon",
            "motion",
            "unshielded",
            "insecure",
            "unsafe",
            "vulnerable",
            "open"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-shield-x.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-shield-x/shield-x-icon.tsx",
                "upstreamPath": "icons/lucide/shield-x-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/shield-x-icon.tsx",
                "upstreamSha256": "sha256:68b82ded4f764006fe1cbd76bfd8b041b7ac520082949f5e35b32521d1534499",
                "contentSha256": "sha256:ac18c0538486ae4ce778616a2b2b886483d6e3774d319301872f31d58ab26d86",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/shield-x-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-shield-x/shield-x-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-shield-x-icon",
            "sourceHash": "sha256:25a71aff3a923c467d5729e131511d3942533ca043d6af54ebd660208e73c8e7",
            "contentHash": "sha256:ce0c2b704e58bdf000b866b201dbbc4429eac94278a2dfc771e9a6aa38a630ad",
            "structureHash": "sha256:ba7ce27bfd25cbe19c0e050ef8c68e2bc155535fd57fd167a1b9e19d81ac37d5",
            "glyph": {
              "inventoryName": "shield-x",
              "canonicalName": "shield-x",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-shopping-bag",
      "type": "registry:component",
      "title": "Animated Shopping Bag Icon",
      "description": "Renders an animated shopping bag SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-shopping-bag/shopping-bag-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-shopping-bag.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "shopping-bag",
            "animated",
            "icon",
            "motion",
            "buy",
            "purchase",
            "store",
            "mall",
            "retail"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-shopping-bag.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-shopping-bag/shopping-bag-icon.tsx",
                "upstreamPath": "icons/lucide/shopping-bag-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/shopping-bag-icon.tsx",
                "upstreamSha256": "sha256:4f75937b906fb3a7ec739b87312a3d4cf5b46867671bf8d3cd994619976398f6",
                "contentSha256": "sha256:395f90ffefeff78137895138c2ddae8f809c2223628ea0a533e5b0b25f37812e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/shopping-bag-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-shopping-bag/shopping-bag-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-shopping-bag-icon",
            "sourceHash": "sha256:00d352d87000cc3f775194437d51f9e792a44a5309e3580891fd4d5655de4e90",
            "contentHash": "sha256:b34aa83a1a002f7b661076e6e80058debc801022add9f8a0556ae69bc19cefe0",
            "structureHash": "sha256:c0c2ac9dc24425f0c451baa98851e26709426f6760b38b8e2af53fd4586fe8a4",
            "glyph": {
              "inventoryName": "shopping-bag",
              "canonicalName": "shopping-bag",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-shopping-cart",
      "type": "registry:component",
      "title": "Animated Shopping Cart Icon",
      "description": "Renders an animated shopping cart SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-shopping-cart/shopping-cart-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-shopping-cart.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "shopping-cart",
            "animated",
            "icon",
            "motion",
            "buy",
            "purchase",
            "store",
            "checkout",
            "ecommerce"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-shopping-cart.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-shopping-cart/shopping-cart-icon.tsx",
                "upstreamPath": "icons/lucide/shopping-cart-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/shopping-cart-icon.tsx",
                "upstreamSha256": "sha256:ae6bcd04724980af54b8bc65a61cf676a8655e0cc6f1fb040dd2a49c717daafa",
                "contentSha256": "sha256:ba0716f874ef8e5f928036aaf2d59e2a012280d11e0968605b1aa6cc42753b00",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/shopping-cart-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-shopping-cart/shopping-cart-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-shopping-cart-icon",
            "sourceHash": "sha256:efd3b46861e201f80caa58cd98f3d9679f329f6379c5a23c28400f3321123a97",
            "contentHash": "sha256:176f48f53c7d16cab4e34a676c982a3f1c93aecad56575f61744d9933f5882f2",
            "structureHash": "sha256:95608df17a3b204274b769cb76b760ee7bcd132106a696bf7471d7211df95677",
            "glyph": {
              "inventoryName": "shopping-cart",
              "canonicalName": "shopping-cart",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-signal",
      "type": "registry:component",
      "title": "Animated Signal Icon",
      "description": "Renders an animated signal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-signal/signal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-signal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "signal",
            "animated",
            "icon",
            "motion",
            "wifi",
            "connection",
            "network",
            "data",
            "internet"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-signal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-signal/signal-icon.tsx",
                "upstreamPath": "icons/lucide/signal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/signal-icon.tsx",
                "upstreamSha256": "sha256:1e324246e1dcf16b88889e10ee81229fddf8cb77cccb9801230d60a782f6bafe",
                "contentSha256": "sha256:475d25dde3e2b3d6d2c66c85f65ffd37cff2c8fad7927a271b9f01b4ff359fdb",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/signal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-signal/signal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-signal-icon",
            "sourceHash": "sha256:d998146f8f249a04b3b970585dd9faeaf24f307c1db6fcd8dc12c9bd08bf849d",
            "contentHash": "sha256:6f8cd254abccf23d821d6a3058680ccdab0534cc1d1578b0775b44d61aea3cc6",
            "structureHash": "sha256:a157311a4db2fdbdde982559be1b9f693c70f69609bab6efdd81954c678b1198",
            "glyph": {
              "inventoryName": "signal",
              "canonicalName": "signal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-sliders-horizontal",
      "type": "registry:component",
      "title": "Animated Sliders Horizontal Icon",
      "description": "Renders an animated sliders horizontal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-sliders-horizontal/sliders-horizontal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-sliders-horizontal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "sliders-horizontal",
            "animated",
            "icon",
            "motion",
            "filter",
            "settings",
            "adjust",
            "controls",
            "tune"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-sliders-horizontal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-sliders-horizontal/sliders-horizontal-icon.tsx",
                "upstreamPath": "icons/lucide/sliders-horizontal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/sliders-horizontal-icon.tsx",
                "upstreamSha256": "sha256:b0743ef58bfd0c31f4960b0580feda779192a27f23a17465259b34019a94bced",
                "contentSha256": "sha256:038b65dc637ed2ff2e94891d2ab01ee84ee26f30820ed98b759a75c86c71e5ce",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/sliders-horizontal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-sliders-horizontal/sliders-horizontal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-sliders-horizontal-icon",
            "sourceHash": "sha256:ead2b9b6784e670f32b9f7e47df8bcce538e520ef6d2ad7aec4ceaa3fb5e3453",
            "contentHash": "sha256:8216cdc339d8faf61de11a99dbae42d0f1d56ad58630ef45412bae856433d326",
            "structureHash": "sha256:ffd1655690ccd403e18f9f85c08710e36ea8bc7a23a188b8d36e375eab2db08e",
            "glyph": {
              "inventoryName": "sliders-horizontal",
              "canonicalName": "sliders-horizontal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-snow-flake",
      "type": "registry:component",
      "title": "Animated Snow Flake Icon",
      "description": "Renders an animated snow flake SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-snow-flake/snow-flake-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-snow-flake.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "snow-flake",
            "snowflake",
            "animated",
            "icon",
            "motion",
            "cold",
            "weather",
            "snow",
            "winter",
            "ice",
            "freeze"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-snow-flake.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-snow-flake/snow-flake-icon.tsx",
                "upstreamPath": "icons/lucide/snow-flake-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/snow-flake-icon.tsx",
                "upstreamSha256": "sha256:e6ac8a8fcba9cdf9713fe5ca5f4fcf82b6b5b20245622e497a32d91c832fd0fd",
                "contentSha256": "sha256:07195d01f1cce1f2dffa894644ad052ab1d7869a00987f6b16c59bb55a60a1ba",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/snow-flake-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-snow-flake/snow-flake-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-snowflake-icon",
            "sourceHash": "sha256:ed9ce4d795a506080898b444e91fe8417646084376670b83f8d5eddc8b78b356",
            "contentHash": "sha256:abaa635ddb86d05dacb515cd6b6d334ba0ac53f67499dcb6dec9e07b2841c4f4",
            "structureHash": "sha256:f218e4cd0f4dd55210788534cb015fb29d3394e00fc1b5ee2c4915f37fe96cf7",
            "glyph": {
              "inventoryName": "snow-flake",
              "canonicalName": "snowflake",
              "aliases": [
                "snow-flake"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-sparkles",
      "type": "registry:component",
      "title": "Animated Sparkles Icon",
      "description": "Renders an animated sparkles SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-sparkles/sparkles-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-sparkles.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "sparkles",
            "animated",
            "icon",
            "motion",
            "sparkle",
            "shine",
            "glow",
            "star",
            "magic",
            "glitter"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-sparkles.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-sparkles/sparkles-icon.tsx",
                "upstreamPath": "icons/lucide/sparkles-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/sparkles-icon.tsx",
                "upstreamSha256": "sha256:47972ba7c6e6b86cc1d4239898a5cb89473a932627a38163a8c18d0c3149c939",
                "contentSha256": "sha256:0b7d23b396af5c7209e363f2a5a7fdc2e98ca4adda6efa23e3d31eba20dc561e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/sparkles-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-sparkles/sparkles-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-sparkles-icon",
            "sourceHash": "sha256:abcb2bfa7b30f53ed477e98ee8035107740c27b0efa27b0de30b94ee63d69a74",
            "contentHash": "sha256:e36ea3a14ff857f5dba91e43f481cb8f15f3ae132660372d28cf3054dbded7a7",
            "structureHash": "sha256:9446c1f516879eec819ce2591a1084abb358860baa77a4978ebf34242dea2977",
            "glyph": {
              "inventoryName": "sparkles",
              "canonicalName": "sparkles",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-spray-can",
      "type": "registry:component",
      "title": "Animated Spray Can Icon",
      "description": "Renders an animated spray can SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-spray-can/spray-can-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-spray-can.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "spray-can",
            "animated",
            "icon",
            "motion",
            "paint",
            "color",
            "graffiti",
            "art",
            "spray"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-spray-can.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-spray-can/spray-can-icon.tsx",
                "upstreamPath": "icons/lucide/spray-can-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/spray-can-icon.tsx",
                "upstreamSha256": "sha256:6efb60dd8250791f91a2f42f8c61b4cf5b62f84d8f4a2890735adfe4083847a2",
                "contentSha256": "sha256:419e56a8dd3c9fc1bf0ba3a61d0fcb2502c09ca3ab806d055cce06d40dcdf8c8",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/spray-can-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-spray-can/spray-can-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-spray-can-icon",
            "sourceHash": "sha256:1b832766a2a124dfcc6b46ac0ba4177dcb01fbe9f34a1cef24a276a91091073c",
            "contentHash": "sha256:3dac3fd13adce65fc1052c6b1f4fbd1a52e7a33c59543dff69782c6c603c14f6",
            "structureHash": "sha256:bd72b448be4aa2156101e64606478ac0266cde6274d04a3b2dcefd0e2a20103e",
            "glyph": {
              "inventoryName": "spray-can",
              "canonicalName": "spray-can",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-square-arrow-out-up-right",
      "type": "registry:component",
      "title": "Animated Square Arrow Out Up Right Icon",
      "description": "Renders an animated square arrow out up right SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-square-arrow-out-up-right/square-arrow-out-up-right-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-square-arrow-out-up-right.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "square-arrow-out-up-right",
            "animated",
            "icon",
            "motion",
            "external",
            "link",
            "share",
            "open",
            "out"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-square-arrow-out-up-right.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-square-arrow-out-up-right/square-arrow-out-up-right-icon.tsx",
                "upstreamPath": "icons/lucide/square-arrow-out-up-right-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/square-arrow-out-up-right-icon.tsx",
                "upstreamSha256": "sha256:0b6783b668925eafa01c51da61e39c0e7eb2768c267608b1ff2ef1eeada392b6",
                "contentSha256": "sha256:f988aa283f6c92d3f5d33ab68c7d38b51b2a7ff4adf1a4593d1c4d8ec6f0b4b7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/square-arrow-out-up-right-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-square-arrow-out-up-right/square-arrow-out-up-right-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-square-arrow-out-up-right-icon",
            "sourceHash": "sha256:7fc9749a6d9b1cd10366de2d72b7416cbe6be71e324a53a164edffae3f4f1165",
            "contentHash": "sha256:ac4b7efd7f3bcbb5e5e88a497f9774c2909b1e65a17d33ed80e4b1400bd4332c",
            "structureHash": "sha256:4d31a7153b7129e42e08ad184f955008587b20a2c6d1a92bcae6f6dcb48df44e",
            "glyph": {
              "inventoryName": "square-arrow-out-up-right",
              "canonicalName": "square-arrow-out-up-right",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-star",
      "type": "registry:component",
      "title": "Animated Star Icon",
      "description": "Renders an animated star SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-star/star-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-star.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "star",
            "animated",
            "icon",
            "motion",
            "favorite",
            "rating",
            "review",
            "like",
            "achievement",
            "bookmark"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-star.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-star/star-icon.tsx",
                "upstreamPath": "icons/lucide/star-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/star-icon.tsx",
                "upstreamSha256": "sha256:03675fdf8924d969c06f49e240a6c788346ccbfad817ac8e8ce2d13bdeaa95f8",
                "contentSha256": "sha256:e6f2316c64f07b879794d482fae73e0793853ec613edc5adcad86cfba212702f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/star-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-star/star-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-star-icon",
            "sourceHash": "sha256:98fe36181c1e476c396330f06ed81bde22eb9a79b4eb1a2d3bb8d43e9c712249",
            "contentHash": "sha256:644e13016e6a87e0ab49eafecc9e745c04ffc13d34713e5afd811c32eb46ddef",
            "structureHash": "sha256:4e45a6fcef92b468e43060fa489cf3249ec83199e1c41183e999d8b4d32c7612",
            "glyph": {
              "inventoryName": "star",
              "canonicalName": "star",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-sun",
      "type": "registry:component",
      "title": "Animated Sun Icon",
      "description": "Renders an animated sun SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-sun/sun-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-sun.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "sun",
            "animated",
            "icon",
            "motion",
            "brightness",
            "light",
            "day",
            "weather",
            "sunny"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-sun.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-sun/sun-icon.tsx",
                "upstreamPath": "icons/lucide/sun-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/sun-icon.tsx",
                "upstreamSha256": "sha256:43466173362cac29b0a709704b36a9b66d595118a96124495509f31cd6fa03a5",
                "contentSha256": "sha256:9a218877048f257152a0db4bd7d33b98ecacb3873da40b75090e2ff46f5432dc",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/sun-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-sun/sun-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-sun-icon",
            "sourceHash": "sha256:e9878ec71c8b0bc4b27c20f15f39e1515657b1540bdb22753f1453e60d6f5bc4",
            "contentHash": "sha256:3eb9fde938f36f770699c888240e500705672d62bf8141c85ef2197eedc2d100",
            "structureHash": "sha256:fe8b34a0825ed839d0a9248e22227c69ade2ecc0c80613a801f17f1750c6e87e",
            "glyph": {
              "inventoryName": "sun",
              "canonicalName": "sun",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-swiss-franc",
      "type": "registry:component",
      "title": "Animated Swiss Franc Icon",
      "description": "Renders an animated swiss franc SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-swiss-franc/swiss-franc-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-swiss-franc.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "swiss-franc",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "franc",
            "swiss"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-swiss-franc.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-swiss-franc/swiss-franc-icon.tsx",
                "upstreamPath": "icons/lucide/swiss-franc-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/swiss-franc-icon.tsx",
                "upstreamSha256": "sha256:3d96994ef9c1001fdb151f91767b6713221c64ac16334df71c09cd3aef6e3be2",
                "contentSha256": "sha256:3dca1514f763da503d0211d997dfce448ac07d6182d07b2131212dbf1a85e0ef",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/swiss-franc-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-swiss-franc/swiss-franc-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-swiss-franc-icon",
            "sourceHash": "sha256:aea408a9b2e581dbc4354706c2bd8c809c502bd8d26fd1cd8be7818f64c68fd1",
            "contentHash": "sha256:d91ac935241afdcfa5d55a1dbac33c4c81aad455df85654b622c72a7234d2cdb",
            "structureHash": "sha256:4d2e381473e1ec4a535473d57486e62587aa53e23313f0a490d04d2badc2a0d8",
            "glyph": {
              "inventoryName": "swiss-franc",
              "canonicalName": "swiss-franc",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-swords",
      "type": "registry:component",
      "title": "Animated Swords Icon",
      "description": "Renders an animated swords SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-swords/swords-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-swords.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "swords",
            "animated",
            "icon",
            "motion",
            "battle",
            "game",
            "war",
            "weapon",
            "fight",
            "combat"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-swords.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-swords/swords-icon.tsx",
                "upstreamPath": "icons/lucide/swords-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/swords-icon.tsx",
                "upstreamSha256": "sha256:fc7c6d049dfd4c817c7974150dd26e76b11b5f078b613cb77df7fbffa5cdfcd0",
                "contentSha256": "sha256:56d753ededd14b6bf62eb3426103eafd1b998352935065447508b0f9c8c4834a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/swords-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-swords/swords-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-swords-icon",
            "sourceHash": "sha256:30bc2647321624041e4de3222400cab8fb255372e4104191c0783b993900519a",
            "contentHash": "sha256:a42669eed0c5f1ba4c30dc435177e8835e313ff40727ded07a466bf860101519",
            "structureHash": "sha256:8aeeab6f5f688c31f822114dd3526ade080a0e445b32af58f9fdf4eda5e5f36c",
            "glyph": {
              "inventoryName": "swords",
              "canonicalName": "swords",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-telescope",
      "type": "registry:component",
      "title": "Animated Telescope Icon",
      "description": "Renders an animated telescope SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-telescope/telescope-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-telescope.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "telescope",
            "animated",
            "icon",
            "motion",
            "space",
            "astronomy",
            "view",
            "explore",
            "vision"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-telescope.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-telescope/telescope-icon.tsx",
                "upstreamPath": "icons/lucide/telescope-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/telescope-icon.tsx",
                "upstreamSha256": "sha256:1f1d4087a32e2863ea7662f1611ef0e357f47ca166d2af0a4d451a40e48ba465",
                "contentSha256": "sha256:78922c064e26b163e4b4741ef3c8d0113185636393908cb200f506256dd1a04e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/telescope-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-telescope/telescope-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-telescope-icon",
            "sourceHash": "sha256:c892a88e261652b35b7991dcb4a1f32a7e9ee1c4bb41df496bbd9eb690ba7585",
            "contentHash": "sha256:91ef3e63eb6067d87deca37abaeb71479488b88b82b49700e056ffa6ebadc498",
            "structureHash": "sha256:be8191174c6c1dc0b5b5045ba764e101f6509b7e0eb03648f5c63322c7f65dca",
            "glyph": {
              "inventoryName": "telescope",
              "canonicalName": "telescope",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-terminal",
      "type": "registry:component",
      "title": "Animated Terminal Icon",
      "description": "Renders an animated terminal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-terminal/terminal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-terminal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "terminal",
            "animated",
            "icon",
            "motion",
            "code",
            "command",
            "shell",
            "console",
            "cli"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-terminal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-terminal/terminal-icon.tsx",
                "upstreamPath": "icons/lucide/terminal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/terminal-icon.tsx",
                "upstreamSha256": "sha256:34592c6f81a01a507164ca2c31c7665968a50ffe64454130589975c58fdf7713",
                "contentSha256": "sha256:ee1ef0efb21d08f2b6af16968d8483d33865894825697953af4186b4edd7db18",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/terminal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-terminal/terminal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-terminal-icon",
            "sourceHash": "sha256:94b5f22fa28375c7398827008332486cb024b8da778b5fb9f8890ee4b22f60ff",
            "contentHash": "sha256:8279711d12276c82b8bbd2074e0b7291f764a0d11f7dce36afbf2e49810e336a",
            "structureHash": "sha256:c92de8cb3aad6d8173d074fbb0d4acd2785213a53982b6cac06105ae69280db2",
            "glyph": {
              "inventoryName": "terminal",
              "canonicalName": "terminal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-thumbs-down",
      "type": "registry:component",
      "title": "Animated Thumbs Down Icon",
      "description": "Renders an animated thumbs down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-thumbs-down/thumbs-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-thumbs-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "thumbs-down",
            "animated",
            "icon",
            "motion",
            "dislike",
            "disapprove",
            "bad",
            "downvote",
            "negative"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-thumbs-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-thumbs-down/thumbs-down-icon.tsx",
                "upstreamPath": "icons/lucide/thumbs-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/thumbs-down-icon.tsx",
                "upstreamSha256": "sha256:9c51a7fb12ac6d15ab78003dd1c6607581137ae6d3466901b66f2b4fc0120655",
                "contentSha256": "sha256:d57f3dade4ecc78d99f9e1609523eb9b4780a5082641d7e069c796cfcbe200e7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/thumbs-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-thumbs-down/thumbs-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-thumbs-down-icon",
            "sourceHash": "sha256:8e3375bfddfb126e08302467f67509054c68c8f52f86e759802cef6574f6dd2d",
            "contentHash": "sha256:091a6a3b3510696dd8a75198d8e4c6b57fe3f594890bfb5b93d4f108083d9acf",
            "structureHash": "sha256:719a4ed1ec2263c49d2f4a0d0dca4b6cd74804dcda49bd32cf01d22d868254a2",
            "glyph": {
              "inventoryName": "thumbs-down",
              "canonicalName": "thumbs-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-thumbs-up",
      "type": "registry:component",
      "title": "Animated Thumbs Up Icon",
      "description": "Renders an animated thumbs up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-thumbs-up/thumbs-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-thumbs-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "thumbs-up",
            "animated",
            "icon",
            "motion",
            "like",
            "approve",
            "agree",
            "good",
            "upvote",
            "positive"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-thumbs-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-thumbs-up/thumbs-up-icon.tsx",
                "upstreamPath": "icons/lucide/thumbs-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/thumbs-up-icon.tsx",
                "upstreamSha256": "sha256:8e285ef5403c908307a07dfb836a1fcc15d5a4caaad821f383e59b0a83a2a75f",
                "contentSha256": "sha256:1761770702618449210989e7e9f4aa6c1185d11ea0107cfed4d283b21655af8d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/thumbs-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-thumbs-up/thumbs-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-thumbs-up-icon",
            "sourceHash": "sha256:5dd5ff7030423724912af790b6a066507b3e33b174854796b140743ef48b5ef7",
            "contentHash": "sha256:e9fb5a9ffb3aa66b3c7c2e3b3c7074f3c1f3b9fdeb0e99ec1bd79da56a29697c",
            "structureHash": "sha256:416bc2724b3d3081b22c709d279547fa6d765dec5d615a02b99560b5a27a297f",
            "glyph": {
              "inventoryName": "thumbs-up",
              "canonicalName": "thumbs-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-trash",
      "type": "registry:component",
      "title": "Animated Trash Icon",
      "description": "Renders an animated trash SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-trash/trash-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-trash.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "trash",
            "animated",
            "icon",
            "motion",
            "delete",
            "remove",
            "bin",
            "garbage",
            "rubbish"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-trash.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-trash/trash-icon.tsx",
                "upstreamPath": "icons/lucide/trash-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/trash-icon.tsx",
                "upstreamSha256": "sha256:404a7f13611f9bdff8a4e59e609be4726c6c854db574a54813944ed3ba98f817",
                "contentSha256": "sha256:daeb780ec4bd82882885770d36eb0945b9c6f0c4820a5bf47ae895c0c56669f7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/trash-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-trash/trash-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-trash-icon",
            "sourceHash": "sha256:eda25f645a1e54e9b990f3b3f0b2f2e531c7ce28de0bb0c9f8bee05195714501",
            "contentHash": "sha256:7a27df3e277190eaba594109e9528e3b647d0e76bfbefa20352d365d3180e8ea",
            "structureHash": "sha256:28b2e4fe1b8cd177592154661865b695761f456143d3ffd1afc942f252cb31d9",
            "glyph": {
              "inventoryName": "trash",
              "canonicalName": "trash",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-trash-2",
      "type": "registry:component",
      "title": "Animated Trash 2 Icon",
      "description": "Renders an animated trash 2 SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-trash-2/trash-2-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-trash-2.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "trash-2",
            "animated",
            "icon",
            "motion",
            "delete",
            "remove",
            "bin",
            "garbage",
            "rubbish"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-trash-2.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-trash-2/trash-2-icon.tsx",
                "upstreamPath": "icons/lucide/trash-2-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/trash-2-icon.tsx",
                "upstreamSha256": "sha256:27a394459d075c2b26d173d2923693e08e8cc547fcbfdb08ecdfbd468de4f903",
                "contentSha256": "sha256:9e46519d290b909a1df8e63771e5d8ef49f690b6bdb6a795273aa1abb95c15b0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/trash-2-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-trash-2/trash-2-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-trash-2-icon",
            "sourceHash": "sha256:93cba13ad51d1db9279efb777997ac969bf19b7768ae8437c890d19fadb9ae54",
            "contentHash": "sha256:4c4bd2337d7656e174ada4c0477e886c4713346b663c654b9d1b0bfd2482707c",
            "structureHash": "sha256:ffea1c3f64dd91b3e532f90e7c71b2e6d0fd7425ce02dc9854abe2fdf353ba40",
            "glyph": {
              "inventoryName": "trash-2",
              "canonicalName": "trash-2",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-trending-down",
      "type": "registry:component",
      "title": "Animated Trending Down Icon",
      "description": "Renders an animated trending down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-trending-down/trending-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-trending-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "trending-down",
            "animated",
            "icon",
            "motion",
            "decrease",
            "decline",
            "fall",
            "drop",
            "downward",
            "trend"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-trending-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-trending-down/trending-down-icon.tsx",
                "upstreamPath": "icons/lucide/trending-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/trending-down-icon.tsx",
                "upstreamSha256": "sha256:a941f373bf72e92c57b50adf64ab05229125de5e2ad0c1f8c1f04b549da3f40b",
                "contentSha256": "sha256:87364ca3bd8d66b01df3578e4aa02f2488f2b8201152eeed8e12607f5385b01e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/trending-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-trending-down/trending-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-trending-down-icon",
            "sourceHash": "sha256:e550724222cdb4825dbc352c31a5992bceaa44260eed6e53c849c8aa7e90149c",
            "contentHash": "sha256:de73ef30180c456c8fc8ea08b669d3d9ea93bd494212772b42e9aa1829c22e03",
            "structureHash": "sha256:c06184a74186b41bcbd16fb8d2574af9360e142475f27280818c519acab34bb5",
            "glyph": {
              "inventoryName": "trending-down",
              "canonicalName": "trending-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-trending-up",
      "type": "registry:component",
      "title": "Animated Trending Up Icon",
      "description": "Renders an animated trending up SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-trending-up/trending-up-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-trending-up.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "trending-up",
            "animated",
            "icon",
            "motion",
            "increase",
            "rise",
            "upward",
            "trend",
            "graph"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-trending-up.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-trending-up/trending-up-icon.tsx",
                "upstreamPath": "icons/lucide/trending-up-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/trending-up-icon.tsx",
                "upstreamSha256": "sha256:1dc5ca23c28254519554738e08ed4784cc26fef20c19e62fcc74666919ff2a13",
                "contentSha256": "sha256:5c9e1342e745efd8ec5935bd19c89469ebc71d215f4f406f8c597e1034d562fb",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/trending-up-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-trending-up/trending-up-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-trending-up-icon",
            "sourceHash": "sha256:6f71257f9956cc511a00383ca278d2dfd657f0148d411ba0f6346d2bcff2dd88",
            "contentHash": "sha256:22d6c6c60b03cf3b33eb3dcc276602addb70b11b0d810e34e9773d0a7499aecc",
            "structureHash": "sha256:4a65614f035902578869ef9cf360e229b2a154b12e61d0b3fb66362bc47362fb",
            "glyph": {
              "inventoryName": "trending-up",
              "canonicalName": "trending-up",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-trending-up-down",
      "type": "registry:component",
      "title": "Animated Trending Up Down Icon",
      "description": "Renders an animated trending up down SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-trending-up-down/trending-up-down-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-trending-up-down.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "trending-up-down",
            "animated",
            "icon",
            "motion",
            "growth",
            "chart",
            "up",
            "down",
            "stats",
            "market"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-trending-up-down.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-trending-up-down/trending-up-down-icon.tsx",
                "upstreamPath": "icons/lucide/trending-up-down-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/trending-up-down-icon.tsx",
                "upstreamSha256": "sha256:91b7878d98691a049bfc28fe6e509419edf9357e861a01bb39b05830983f404a",
                "contentSha256": "sha256:9034698367cca324da44e4f30e7b619adace8d0fa57f637773c66385ba45274c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/trending-up-down-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-trending-up-down/trending-up-down-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-trending-up-down-icon",
            "sourceHash": "sha256:168ef3dc4dcb664462e82abe9f04f0ec2a06b5a892811a8021f8cfbfdedd3f59",
            "contentHash": "sha256:f74158279496ae6d408a9a5a721a5f185d05ce4a4a316a72b00836d2a1e83746",
            "structureHash": "sha256:d8cd812d562e3d89eca8afc687facea0110c3350aeecbc9b27ea450c3c0c280a",
            "glyph": {
              "inventoryName": "trending-up-down",
              "canonicalName": "trending-up-down",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-triangle-alert",
      "type": "registry:component",
      "title": "Animated Triangle Alert Icon",
      "description": "Renders an animated triangle alert SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-triangle-alert/triangle-alert-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-triangle-alert.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "triangle-alert",
            "animated",
            "icon",
            "motion",
            "warning",
            "alert",
            "error",
            "danger",
            "caution",
            "issue",
            "problem"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-triangle-alert.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-triangle-alert/triangle-alert-icon.tsx",
                "upstreamPath": "icons/lucide/triangle-alert-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/triangle-alert-icon.tsx",
                "upstreamSha256": "sha256:237aec5d6f30e41ad4f93158da00b80f7fd3aafc26f0831548385b21e5ccdb04",
                "contentSha256": "sha256:f9108bb3ecc393eb41df1eb34db1c9dec27d9b69dbe217f0ffcb0c5e79e538ee",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/triangle-alert-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-triangle-alert/triangle-alert-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-triangle-alert-icon",
            "sourceHash": "sha256:79c8ec4a4a580041d4f893ac6650fab8ed2ca4841d0bff506733a13c6e4a2aa7",
            "contentHash": "sha256:09aa49e42bafae6dee72b3cae1a44b3ef59ab7fe74c523d595ebd09feeab2003",
            "structureHash": "sha256:3a9886dc8505af95ecf7bc0cb061049cfd8f358c2a49a1613e6811d062a4bc6b",
            "glyph": {
              "inventoryName": "triangle-alert",
              "canonicalName": "triangle-alert",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-turkish-lira",
      "type": "registry:component",
      "title": "Animated Turkish Lira Icon",
      "description": "Renders an animated turkish lira SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-turkish-lira/turkish-lira-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-turkish-lira.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "turkish-lira",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "lira",
            "turkey"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-turkish-lira.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-turkish-lira/turkish-lira-icon.tsx",
                "upstreamPath": "icons/lucide/turkish-lira-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/turkish-lira-icon.tsx",
                "upstreamSha256": "sha256:091fdc6d5dfd0354c42a09303f2992ff950f05c9beafd2eb681927d61401a1f1",
                "contentSha256": "sha256:fa19faea5868224e455758c0fd6343a5830904c54f57e959398196c9535d1e63",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/turkish-lira-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-turkish-lira/turkish-lira-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-turkish-lira-icon",
            "sourceHash": "sha256:c7e51e7ff786a84831062df873035fa58e06f170e947f3b3ebf4c1863f410ff7",
            "contentHash": "sha256:ff2622107475945ced07433bc929bdf09da469cf3020d113b9d8780d92bec63d",
            "structureHash": "sha256:4d2e381473e1ec4a535473d57486e62587aa53e23313f0a490d04d2badc2a0d8",
            "glyph": {
              "inventoryName": "turkish-lira",
              "canonicalName": "turkish-lira",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-unlink",
      "type": "registry:component",
      "title": "Animated Unlink Icon",
      "description": "Renders an animated unlink SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-unlink/unlink-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-unlink.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "unlink",
            "animated",
            "icon",
            "motion",
            "break",
            "disconnect",
            "remove",
            "separate"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-unlink.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-unlink/unlink-icon.tsx",
                "upstreamPath": "icons/lucide/unlink-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/unlink-icon.tsx",
                "upstreamSha256": "sha256:163138c1322995e19181b8fb19ca4f548a8e1288928007f48f6b61fec000a51a",
                "contentSha256": "sha256:47318c884da4d27870dee39fd076b98c97550edd57029797140c8b0b75f62248",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/unlink-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-unlink/unlink-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-unlink-icon",
            "sourceHash": "sha256:646dc05fa9db39253afe81c496afb1f97383247e028748b0274006ed9a064b5c",
            "contentHash": "sha256:b65fb168c7a4cae8712531c76999cfd407e1385a514d2737b6b970022c78b743",
            "structureHash": "sha256:37bcf032fce81be87c98aafc6cbeb2dd493360d3ec7e1cb610743af66ff5b216",
            "glyph": {
              "inventoryName": "unlink",
              "canonicalName": "unlink",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-upload",
      "type": "registry:component",
      "title": "Animated Upload Icon",
      "description": "Renders an animated upload SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-upload/upload-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-upload.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "upload",
            "animated",
            "icon",
            "motion",
            "import",
            "file",
            "cloud",
            "server",
            "publish"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-upload.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-upload/upload-icon.tsx",
                "upstreamPath": "icons/lucide/upload-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/upload-icon.tsx",
                "upstreamSha256": "sha256:69fda22fb2d0d853e0677ae3154bb2e37fe22bad1b49252f0f26ef3882fd8955",
                "contentSha256": "sha256:753ce20ed194c948e42a5bf59189290cae644583600b750cebae4c855d6bdf92",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/upload-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-upload/upload-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-upload-icon",
            "sourceHash": "sha256:946e62bde6fd1050a9dc0ec6441c6054ce096f65ffa3ff00694c1a29c62c07c7",
            "contentHash": "sha256:bbdfb75afea4be638f447d907162b747413019f4500b5b39a671eefd5e5ea662",
            "structureHash": "sha256:aa273c6b4fe55b44dd8836986dd014645e4c47159187138960ac873dd0450d4b",
            "glyph": {
              "inventoryName": "upload",
              "canonicalName": "upload",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user",
      "type": "registry:component",
      "title": "Animated User Icon",
      "description": "Renders an animated user SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user/user-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user",
            "animated",
            "icon",
            "motion",
            "person",
            "profile",
            "account",
            "avatar",
            "member"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user/user-icon.tsx",
                "upstreamPath": "icons/lucide/user-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-icon.tsx",
                "upstreamSha256": "sha256:0bf542883b42dfd11645f8fcaac5cc8d955a020c6381167d34414ea69f5949e8",
                "contentSha256": "sha256:3d2cc557b1d9bf7ba33cf4f195e35ecdfb3382ce9c0930768a5fdba327e8f080",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user/user-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-icon",
            "sourceHash": "sha256:d777a3ff65380a7c71c6e192a8f4ca060e585259ab9346a80e6b99dd0691c3e6",
            "contentHash": "sha256:5de8b996d823c1058217b2fb5866eb6a14a669d695db692ef49033cc96129423",
            "structureHash": "sha256:dad549bbe2481b03afe80481ef3c48e2dae6f1303a64c3c27fd65ef9a87bc056",
            "glyph": {
              "inventoryName": "user",
              "canonicalName": "user",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-check",
      "type": "registry:component",
      "title": "Animated User Check Icon",
      "description": "Renders an animated user check SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-check/user-check-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-check.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-check",
            "animated",
            "icon",
            "motion",
            "user",
            "check",
            "verify",
            "approve",
            "done",
            "account"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-check.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-check/user-check-icon.tsx",
                "upstreamPath": "icons/lucide/user-check-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-check-icon.tsx",
                "upstreamSha256": "sha256:86a9ac66b70834ac1b4f3b6390ada4632e79280c414c130aba285a717acc5d08",
                "contentSha256": "sha256:d401f9b10d8be79bda1e299bb28f65e2736bb75e005e41da5bcc1c71e7232122",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-check-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-check/user-check-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-check-icon",
            "sourceHash": "sha256:f8364d6c34263b5b19abd83ce67969107d6f39261ebf8b68e54ef61eecbbb1b0",
            "contentHash": "sha256:31a1e20737de1a79c234b5b39d2f5d3f8d93db1d87f8b9c9651820bbe19a0ebe",
            "structureHash": "sha256:649b52262c95dbd67729143ee5970977253ac31b0f1364460a2c598760c8e04e",
            "glyph": {
              "inventoryName": "user-check",
              "canonicalName": "user-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-cog",
      "type": "registry:component",
      "title": "Animated User Cog Icon",
      "description": "Renders an animated user cog SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-cog/user-cog-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-cog.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-cog",
            "animated",
            "icon",
            "motion",
            "settings",
            "account",
            "options",
            "admin",
            "preferences",
            "config"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-cog.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-cog/user-cog-icon.tsx",
                "upstreamPath": "icons/lucide/user-cog-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-cog-icon.tsx",
                "upstreamSha256": "sha256:a89c68f335eb3bd9d5f1786e593485945fe3820d71a5251ff0a0c658fc87f64d",
                "contentSha256": "sha256:3b6d08051741f888657516147b1a1eb85cb12e96fe50719bb58bed761d76c86d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-cog-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-cog/user-cog-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-cog-icon",
            "sourceHash": "sha256:d0945a98800d0fa3186744e240d9ed51c7ad2bbb3aa64b25e74c544fa6b4a29d",
            "contentHash": "sha256:ed931c67dfcba38424f0d263dd4bb855828b189a72c503108b9e0e71e1c62ab3",
            "structureHash": "sha256:2e801bbb432dbd3c62e36e08e385ac78ef7f52235dbd0c71597bc6bf035c13c2",
            "glyph": {
              "inventoryName": "user-cog",
              "canonicalName": "user-cog",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-lock",
      "type": "registry:component",
      "title": "Animated User Lock Icon",
      "description": "Renders an animated user lock SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-lock/user-lock-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-lock.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-lock",
            "animated",
            "icon",
            "motion",
            "lock",
            "security",
            "account",
            "private",
            "protected",
            "access"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-lock.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-lock/user-lock-icon.tsx",
                "upstreamPath": "icons/lucide/user-lock-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-lock-icon.tsx",
                "upstreamSha256": "sha256:9ef8931c2d4f2b467a5a9f20c507009aa5863ca385bf5bf67527d250038cfca3",
                "contentSha256": "sha256:7e6acee8b775a45ae4cf6671b3747d9a3efd08f4631bc74856a556a1c3dc71e1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-lock-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-lock/user-lock-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-lock-icon",
            "sourceHash": "sha256:6b6476703dca11b9f86de6d651c874f84c10132f0a7723f9402b1ff845baf218",
            "contentHash": "sha256:a4e33892b7e4485ba9d47029b36e17b28c7343c84e0e6e64fc01f7f99db0cb0d",
            "structureHash": "sha256:fec1ae7db88114696a162ba9ed66e9fafc28669490ec7066e744b5a27783fdab",
            "glyph": {
              "inventoryName": "user-lock",
              "canonicalName": "user-lock",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-minus",
      "type": "registry:component",
      "title": "Animated User Minus Icon",
      "description": "Renders an animated user minus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-minus/user-minus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-minus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-minus",
            "animated",
            "icon",
            "motion",
            "remove",
            "delete",
            "account",
            "block",
            "ban",
            "unfriend"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-minus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-minus/user-minus-icon.tsx",
                "upstreamPath": "icons/lucide/user-minus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-minus-icon.tsx",
                "upstreamSha256": "sha256:ba052712c85ea77472fe000bf8d28879297fbc3900d0931c0e89b7bb218a3b0f",
                "contentSha256": "sha256:87b941e7eb3760df4cfb6186d1071700caa63a820569445058ef9c63675185ad",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-minus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-minus/user-minus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-minus-icon",
            "sourceHash": "sha256:ca236a840d811031730654087f98f6e448ec25bbe6065529cfa14af35fc9f716",
            "contentHash": "sha256:72faec8bb3928680b3291041e6ceea2955ee13be2124ccfc28678817f741f19d",
            "structureHash": "sha256:d91ffeaedb19c8dc93fcea4e45a88a886d525693e39207589aa539910b7cd070",
            "glyph": {
              "inventoryName": "user-minus",
              "canonicalName": "user-minus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-pen",
      "type": "registry:component",
      "title": "Animated User Pen Icon",
      "description": "Renders an animated user pen SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-pen/user-pen-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-pen.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-pen",
            "animated",
            "icon",
            "motion",
            "edit",
            "update",
            "profile",
            "modify",
            "account",
            "change"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-pen.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-pen/user-pen-icon.tsx",
                "upstreamPath": "icons/lucide/user-pen-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-pen-icon.tsx",
                "upstreamSha256": "sha256:d6340743bc0f9b4b5545312eaea997d2156da96e9d897dd40b24b263437cf161",
                "contentSha256": "sha256:92fb742133b20ec377a4d0050e80f4c18427f563eee9cbd49cd226381a9fff7c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-pen-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-pen/user-pen-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-pen-icon",
            "sourceHash": "sha256:4727a3b427b5eac55eba3136f703fc41a67ef6e338143f68c4354ce1591a42eb",
            "contentHash": "sha256:6af94e3ab90f9bc5cd1efda274fb483e09cd666ab1b10c986133622d40944ef9",
            "structureHash": "sha256:7bf6cc1bd93767280da23be2ae12819fd124bf5b0370c8109aff3c46d380f9ba",
            "glyph": {
              "inventoryName": "user-pen",
              "canonicalName": "user-pen",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-plus",
      "type": "registry:component",
      "title": "Animated User Plus Icon",
      "description": "Renders an animated user plus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-plus/user-plus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-plus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-plus",
            "animated",
            "icon",
            "motion",
            "new",
            "add",
            "create",
            "invite",
            "subscribe",
            "join"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-plus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-plus/user-plus-icon.tsx",
                "upstreamPath": "icons/lucide/user-plus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-plus-icon.tsx",
                "upstreamSha256": "sha256:dc89d6dd6f67d5ccfaf7daab9569245b9e7546b3fb6c7b71431423227d6bf85e",
                "contentSha256": "sha256:526393ce1c8c3baf0772c19844fbbdfb4166aed13dbc957248e298615b6839d6",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-plus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-plus/user-plus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-plus-icon",
            "sourceHash": "sha256:49bd418378afd564fdf93643acbc06b14927a7beeb5e4223d0bbe88dc9d1bad2",
            "contentHash": "sha256:29f5420c3751064af19843c456d1c99a338572bdae5f4a4e6f14343b7551bbae",
            "structureHash": "sha256:0b16522cbec41e79787ffd603e732e98ebbad1b80fde04f54daecac8f3d68d93",
            "glyph": {
              "inventoryName": "user-plus",
              "canonicalName": "user-plus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-search",
      "type": "registry:component",
      "title": "Animated User Search Icon",
      "description": "Renders an animated user search SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-search/user-search-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-search.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-search",
            "animated",
            "icon",
            "motion",
            "search",
            "user",
            "find",
            "magnifier",
            "lookup",
            "explore"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-search.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-search/user-search-icon.tsx",
                "upstreamPath": "icons/lucide/user-search-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-search-icon.tsx",
                "upstreamSha256": "sha256:8ade32fcae49eb3c3a19d2034334b9d03070b128ce489628dd9b280f13206b16",
                "contentSha256": "sha256:8bfde6c03508fe2294e664ceb94ffb798f511cf0da3b36ae6d111fff0b58ecf7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-search-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-search/user-search-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-search-icon",
            "sourceHash": "sha256:7560c61f649d021c382b1b0b91443beae8f55b799517c79a4fa43c7800d2209f",
            "contentHash": "sha256:61b980da6b67a39941a1a05a26dcad205e4034438250b79b609164a5a95ba763",
            "structureHash": "sha256:b5122fab553a5e9c6411ea1ca4f30e3e7600355848acd55f91e619896a3fc9a1",
            "glyph": {
              "inventoryName": "user-search",
              "canonicalName": "user-search",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-star",
      "type": "registry:component",
      "title": "Animated User Star Icon",
      "description": "Renders an animated user star SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-star/user-star-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-star.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-star",
            "animated",
            "icon",
            "motion",
            "user",
            "favorite",
            "star",
            "rating",
            "review",
            "admin"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-star.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-star/user-star-icon.tsx",
                "upstreamPath": "icons/lucide/user-star-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-star-icon.tsx",
                "upstreamSha256": "sha256:ce6873a476887f268318894cbdad139aefd61642f64e08583d425dc0663cd71e",
                "contentSha256": "sha256:4770d3eb85afd1080d6c3e811a97a8788fabd448cd7ca60b0df3c18496618009",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-star-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-star/user-star-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-star-icon",
            "sourceHash": "sha256:6625fa4243df246ab367b8f6a05c7f610ac3767309e43b3812371020c276e8b0",
            "contentHash": "sha256:311a35f7e101b2f05829a5517b79007e682035525bdc264b40c311b98f7ca01b",
            "structureHash": "sha256:84d1185684391627fb77a223419ccc4a247640a5e412955aa127e7ef10a71656",
            "glyph": {
              "inventoryName": "user-star",
              "canonicalName": "user-star",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-user-x",
      "type": "registry:component",
      "title": "Animated User X Icon",
      "description": "Renders an animated user x SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-user-x/user-x-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-user-x.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "user-x",
            "animated",
            "icon",
            "motion",
            "delete",
            "remove",
            "ban",
            "block",
            "account"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-user-x.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-user-x/user-x-icon.tsx",
                "upstreamPath": "icons/lucide/user-x-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/user-x-icon.tsx",
                "upstreamSha256": "sha256:4743605a60b03b31d675f54381efe79ec7176d8043c2d2274e21bc3f2d4d3d10",
                "contentSha256": "sha256:741c32151597e59c3236703983087aa4502be9ac83622a2abaedc9ccb35c2b61",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/user-x-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-user-x/user-x-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-user-x-icon",
            "sourceHash": "sha256:53f081f3913729937cae12a43ba304be0b28993201feed133090f5a30dd436cf",
            "contentHash": "sha256:c5b6ec4e6f945265256498bdbc0828c9ebdf8871e82eb97065f2328943926f4e",
            "structureHash": "sha256:0796892d3897314de05a5279c66396ceff9686d60de8864a40e40ec147024a5a",
            "glyph": {
              "inventoryName": "user-x",
              "canonicalName": "user-x",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-users",
      "type": "registry:component",
      "title": "Animated Users Icon",
      "description": "Renders an animated users SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-users/users-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-users.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "users",
            "animated",
            "icon",
            "motion",
            "group",
            "team",
            "people",
            "community",
            "network"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-users.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-users/users-icon.tsx",
                "upstreamPath": "icons/lucide/users-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/users-icon.tsx",
                "upstreamSha256": "sha256:a6f07e774c3c078c38cb42bdac411548163f86aa2a4767e2f282d117ad32cd9f",
                "contentSha256": "sha256:edefd6c1afee004102e6debfc070f869fbf85fe1f0e35662d383a9036cf49e3c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/users-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-users/users-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-users-icon",
            "sourceHash": "sha256:19f3d0003d01861202d59701809f64297a9cad5516cc9c8a8427408e249d6df6",
            "contentHash": "sha256:0b4002676b233aabc042c66dc7e3287bd4e716bfc0a7e35423fbb0ba7f99b3c0",
            "structureHash": "sha256:d953dc1f24f2ca0f64e717c744ba02675e04f97a8281e4f1f2a464c024fe988c",
            "glyph": {
              "inventoryName": "users",
              "canonicalName": "users",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-venus",
      "type": "registry:component",
      "title": "Animated Venus Icon",
      "description": "Renders an animated venus SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-venus/venus-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-venus.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "venus",
            "animated",
            "icon",
            "motion",
            "female",
            "symbol",
            "planet",
            "astronomy"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-venus.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-venus/venus-icon.tsx",
                "upstreamPath": "icons/lucide/venus-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/venus-icon.tsx",
                "upstreamSha256": "sha256:65fe2cada45b5197fbf7ae23658273236107d9018a211dfbda5636594adae8de",
                "contentSha256": "sha256:7b46171c89079211ad66820db658b48c2fb0ce187aa78318b57e27529558d9dc",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/venus-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-venus/venus-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-venus-icon",
            "sourceHash": "sha256:346be4c3badb1a94a75fddc5069278c9d036204aad37925055e418c5f00a21d6",
            "contentHash": "sha256:6d9ceae9c4032ba2f20994e440643ca1c9508d0fde7a4583830991ab42af3a61",
            "structureHash": "sha256:6f8d10a5135e7b7a2d68b352bf918a2ee5ca692694091430ec947c24e1e50cc1",
            "glyph": {
              "inventoryName": "venus",
              "canonicalName": "venus",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-wallet",
      "type": "registry:component",
      "title": "Animated Wallet Icon",
      "description": "Renders an animated wallet SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-wallet/wallet-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-wallet.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "wallet",
            "animated",
            "icon",
            "motion",
            "money",
            "finance",
            "payment",
            "card",
            "transaction"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-wallet.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-wallet/wallet-icon.tsx",
                "upstreamPath": "icons/lucide/wallet-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/wallet-icon.tsx",
                "upstreamSha256": "sha256:700bfc3c130ae30bd6dfa2ae796b6f07332d77923b67453e726a52ce6dd4847f",
                "contentSha256": "sha256:c18752d8ec1e6679f12e5bc8d52bd5a3ef3b9baa7db4575d998578fe7ad74e61",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/wallet-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-wallet/wallet-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-wallet-icon",
            "sourceHash": "sha256:8a6bd4d89453e848bb84057340d16837c391a6850d3977839d0c6371e3e7eef8",
            "contentHash": "sha256:b94cf1b36642773d40336266467820f409bb0d49a31a2275bd6d314d85f9b22e",
            "structureHash": "sha256:3316a4f8cbbb2539c430f13b62e3f9e09b56ecf847f2d19915e46d48ac0e13da",
            "glyph": {
              "inventoryName": "wallet",
              "canonicalName": "wallet",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-wallet-minimal",
      "type": "registry:component",
      "title": "Animated Wallet Minimal Icon",
      "description": "Renders an animated wallet minimal SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-wallet-minimal/wallet-minimal-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-wallet-minimal.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "wallet-minimal",
            "animated",
            "icon",
            "motion",
            "money",
            "finance",
            "payment",
            "card",
            "transaction"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-wallet-minimal.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-wallet-minimal/wallet-minimal-icon.tsx",
                "upstreamPath": "icons/lucide/wallet-minimal-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/wallet-minimal-icon.tsx",
                "upstreamSha256": "sha256:dee82100785f2b451628986fcfad7ece946e1b4b1685d0adf135b7fa96e12504",
                "contentSha256": "sha256:0cdd30218774ff6ff357a27ffb05f20c054795d481fdc6233fcd15127f860559",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/wallet-minimal-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-wallet-minimal/wallet-minimal-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-wallet-minimal-icon",
            "sourceHash": "sha256:6886e8a0c244bc1672e25a65a8e5e6740457c32d67a5f46741019f634ad3727f",
            "contentHash": "sha256:1d4ec2ddc5f055163c240aa15eef504031d8128bb5a32f371cbe480f10d190a8",
            "structureHash": "sha256:7d4327705dffffdca106490558987772c458f7918b2cfa22083c9f73773e34af",
            "glyph": {
              "inventoryName": "wallet-minimal",
              "canonicalName": "wallet-minimal",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-webhook",
      "type": "registry:component",
      "title": "Animated Webhook Icon",
      "description": "Renders an animated webhook SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-webhook/webhook-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-webhook.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "webhook",
            "animated",
            "icon",
            "motion",
            "api",
            "integration",
            "connection",
            "notification"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-webhook.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-webhook/webhook-icon.tsx",
                "upstreamPath": "icons/lucide/webhook-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/webhook-icon.tsx",
                "upstreamSha256": "sha256:ff7abe1a53b73f82f48356aa202701ca8ebd8a454e33b676edb8bff131f063cb",
                "contentSha256": "sha256:0093ff21a8fc93f0c8498c2413260a9c7a6773dad5d25930a8b4da926e99f6ab",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/webhook-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-webhook/webhook-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-webhook-icon",
            "sourceHash": "sha256:3799634b4ba5f13f98eb4e14b475ee1f8b12a5993073c34f5a6fcde5f740c4f9",
            "contentHash": "sha256:dd08dd73b9d643258cb7b6a1fdf3ff71722d44412ce861d0ef1c7bafae0fe694",
            "structureHash": "sha256:107a4182e99d3e222ee2c20f6238822590febc8ab3f3d1051bf5a7d82d8ab431",
            "glyph": {
              "inventoryName": "webhook",
              "canonicalName": "webhook",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-wifi",
      "type": "registry:component",
      "title": "Animated Wifi Icon",
      "description": "Renders an animated wifi SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-wifi/wifi-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-wifi.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "wifi",
            "animated",
            "icon",
            "motion",
            "wireless",
            "network",
            "internet",
            "signal"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-wifi.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-wifi/wifi-icon.tsx",
                "upstreamPath": "icons/lucide/wifi-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/wifi-icon.tsx",
                "upstreamSha256": "sha256:2b87dd9f84caa7f8946ad25a9986abbf01c4a737f51a81f24f3246917eda1bdc",
                "contentSha256": "sha256:2d9e09fd4ad32d9e8e7cc430a55a223638644a59a7fc73658945913933159287",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/wifi-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-wifi/wifi-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-wifi-icon",
            "sourceHash": "sha256:27964f1156552f91f9c999719d343f499a462bc1c27f38c70a4cfcf53319f8dc",
            "contentHash": "sha256:20af62d64bfd41b8e96929fc6138af7a53bb967e6e3b443dc1040bc4e715c669",
            "structureHash": "sha256:9c1ed58e27ba2b74603ca94890b2af327217be7e72c38dd90fbb4424a1f7d2eb",
            "glyph": {
              "inventoryName": "wifi",
              "canonicalName": "wifi",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-wifi-cog",
      "type": "registry:component",
      "title": "Animated Wifi Cog Icon",
      "description": "Renders an animated wifi cog SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-wifi-cog/wifi-cog-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-wifi-cog.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "wifi-cog",
            "animated",
            "icon",
            "motion",
            "settings",
            "network",
            "wifi",
            "config",
            "setup"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-wifi-cog.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-wifi-cog/wifi-cog-icon.tsx",
                "upstreamPath": "icons/lucide/wifi-cog-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/wifi-cog-icon.tsx",
                "upstreamSha256": "sha256:f234e3daff4eb80223fceb7b37037520c9d52725b3e11e3eab3d8c65d67a7336",
                "contentSha256": "sha256:b86cc7399f66af8094c5e50c8c1b72a5a2f1d3ff10bd25e6313bbd015aedd97e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/wifi-cog-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-wifi-cog/wifi-cog-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-wifi-cog-icon",
            "sourceHash": "sha256:8ccb3400704c6cfcb981ad422c068c2dfd97c1d286ee158a8cf108e93f264494",
            "contentHash": "sha256:679db07ebd2251894b8692c63e30f014f1922553d9cbf59a87d75e08ce90cc46",
            "structureHash": "sha256:5f014c464ddb35b3515e00f5ace79d519b3d48234f64b4723dbe47552f92a534",
            "glyph": {
              "inventoryName": "wifi-cog",
              "canonicalName": "wifi-cog",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-wifi-off",
      "type": "registry:component",
      "title": "Animated Wifi Off Icon",
      "description": "Renders an animated wifi off SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-wifi-off/wifi-off-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-wifi-off.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "wifi-off",
            "animated",
            "icon",
            "motion",
            "wireless",
            "network",
            "internet",
            "signal",
            "offline"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-wifi-off.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-wifi-off/wifi-off-icon.tsx",
                "upstreamPath": "icons/lucide/wifi-off-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/wifi-off-icon.tsx",
                "upstreamSha256": "sha256:55c8d59a8f514c3943b433dea594d96d39f624aa11beebd875a8cd494a60618f",
                "contentSha256": "sha256:cf32c0d21ada64b6a3b59711df7a8dbd19b728aec5bd0d092bda08b219eebaa0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/wifi-off-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-wifi-off/wifi-off-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-wifi-off-icon",
            "sourceHash": "sha256:fda1a7f68a79044b102dbbea96716842334bf05caff30523cfd452f637eb173c",
            "contentHash": "sha256:7a219cfc83dde71dfb1c1a607b706da91b99155594a12a8c2a8307e9813cb6a2",
            "structureHash": "sha256:362c9673693dff5ba33fc7bb67dbc9c8550421264e50fe01a0c4031433b7d78a",
            "glyph": {
              "inventoryName": "wifi-off",
              "canonicalName": "wifi-off",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-wifi-pen",
      "type": "registry:component",
      "title": "Animated Wifi Pen Icon",
      "description": "Renders an animated wifi pen SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-wifi-pen/wifi-pen-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-wifi-pen.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "wifi-pen",
            "animated",
            "icon",
            "motion",
            "edit",
            "wifi",
            "pen",
            "change",
            "network"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-wifi-pen.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-wifi-pen/wifi-pen-icon.tsx",
                "upstreamPath": "icons/lucide/wifi-pen-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/wifi-pen-icon.tsx",
                "upstreamSha256": "sha256:df696a9b3c0e1a4ce6372759ec239b2256a8d0b545714fc87648fbe5fb45c5b8",
                "contentSha256": "sha256:b12c340e1cfeb8d2146a8386c912ad2b6b0683346eeff5414d6257d74955f09b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/wifi-pen-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-wifi-pen/wifi-pen-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-wifi-pen-icon",
            "sourceHash": "sha256:541b8cd39940f345a75adb3ab8fbb1d439a14226816a42315d01bf431b7539a7",
            "contentHash": "sha256:1375147b27cf51ccc1273d3caddc4e8e52b60cad09539ccfdb21500f23de63dd",
            "structureHash": "sha256:f5f23c1f41eeb38ead9e73c46770ee572cdb16a2cb611430f18e7ad25794a6b6",
            "glyph": {
              "inventoryName": "wifi-pen",
              "canonicalName": "wifi-pen",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-wifi-sync",
      "type": "registry:component",
      "title": "Animated Wifi Sync Icon",
      "description": "Renders an animated wifi sync SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-wifi-sync/wifi-sync-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-wifi-sync.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "wifi-sync",
            "animated",
            "icon",
            "motion",
            "sync",
            "network",
            "wifi",
            "refresh",
            "reload"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-wifi-sync.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-wifi-sync/wifi-sync-icon.tsx",
                "upstreamPath": "icons/lucide/wifi-sync-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/wifi-sync-icon.tsx",
                "upstreamSha256": "sha256:32fc587d08f3e46b302f36c274b5d0434e8df4983f2987570881acd4da920670",
                "contentSha256": "sha256:be7ddb357789d76cc0ff19e2e5c2ff76c9eae324bf507cd1852525f4c5a286aa",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/wifi-sync-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-wifi-sync/wifi-sync-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-wifi-sync-icon",
            "sourceHash": "sha256:59317504c4cd2436b1794ca2cb288e41eda8e0219e31eb3012638487210d2977",
            "contentHash": "sha256:6e1a66c311896846bbb6eb5d0a789f90c5e074c585de2bf21b2fc0843b2088d1",
            "structureHash": "sha256:ec4158237b354583f4e0b714c479793845bef4d9013eed78e2f77dbfe0a7889f",
            "glyph": {
              "inventoryName": "wifi-sync",
              "canonicalName": "wifi-sync",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-x",
      "type": "registry:component",
      "title": "Animated X Icon",
      "description": "Renders an animated x SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-x/x-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-x.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "x",
            "animated",
            "icon",
            "motion",
            "cancel",
            "close",
            "delete",
            "remove",
            "exit",
            "stop"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-x.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-x/x-icon.tsx",
                "upstreamPath": "icons/lucide/x-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/x-icon.tsx",
                "upstreamSha256": "sha256:17172be7feab59a9ac3f996696e762045c96963eee4f9cf873a0398db36f8fd8",
                "contentSha256": "sha256:52688f4540d4b2ba322c416d11e9b56f64e102f3b7b182e0b219ab6ecfd0ee15",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/x-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-x/x-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-x-icon",
            "sourceHash": "sha256:074584faf4b7df56e2e502b0406fea49af7ca78d0ce384df4720ed30e8e2a0a4",
            "contentHash": "sha256:6db28b7f25ea29aa246cefad01e40f8dcb92138dbd43f290a53e8a0aba9a9ec5",
            "structureHash": "sha256:27287b375835f8e09d7be0c09fa768077ef4ef9907f70560611a13a97a68f8b8",
            "glyph": {
              "inventoryName": "x",
              "canonicalName": "x",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-yen-yuan",
      "type": "registry:component",
      "title": "Animated Yen Yuan Icon",
      "description": "Renders an animated yen yuan SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-yen-yuan/yen-yuan-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-yen-yuan.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "yen-yuan",
            "japanese-yen",
            "animated",
            "icon",
            "motion",
            "currency",
            "money",
            "finance",
            "payment",
            "yen",
            "yuan"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-yen-yuan.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-yen-yuan/yen-yuan-icon.tsx",
                "upstreamPath": "icons/lucide/yen-yuan-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/yen-yuan-icon.tsx",
                "upstreamSha256": "sha256:593bb3626cd15d20570a8bf7d5b505b823729f769fe711ec2fed6438cbd63cd0",
                "contentSha256": "sha256:f3ff806064d6ba6d3e2dd873cfd2947fbfcff08871cffaad4d4496663acb9ba5",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/yen-yuan-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-yen-yuan/yen-yuan-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-japanese-yen-icon",
            "sourceHash": "sha256:fca646563bd2c3ae2cef47f6f4b9eccb3a2473759e951dd65011520a3038d285",
            "contentHash": "sha256:323f6cef7b25071d8fe0db242d8d370ce17ca0231c8044230ca24d665bd62156",
            "structureHash": "sha256:4d2e381473e1ec4a535473d57486e62587aa53e23313f0a490d04d2badc2a0d8",
            "glyph": {
              "inventoryName": "yen-yuan",
              "canonicalName": "japanese-yen",
              "aliases": [
                "yen-yuan"
              ]
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "animateicons-zap",
      "type": "registry:component",
      "title": "Animated Zap Icon",
      "description": "Renders an animated zap SVG icon with hover and imperative controls.",
      "author": "AnimateIcons",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animateicons/components/animateicons-zap/zap-icon.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animateicons-zap.tsx"
        },
        {
          "path": "registry/sources/animateicons/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "zap",
            "animated",
            "icon",
            "motion",
            "flash",
            "lightning",
            "electric",
            "power",
            "energy"
          ],
          "renderer": "svg",
          "preview": "previews/animateicons-zap.tsx",
          "source": {
            "project": "AnimateIcons",
            "repository": "https://github.com/Avijit07x/animateicons",
            "revision": "380adb3b8eda68ee9c26e846ab8f9799d77f8815",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/animateicons-zap/zap-icon.tsx",
                "upstreamPath": "icons/lucide/zap-icon.tsx",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/icons/lucide/zap-icon.tsx",
                "upstreamSha256": "sha256:62222e36e8d92c22e0e41b70410e24db7fbd447237fe404ba97f1c50a9362e37",
                "contentSha256": "sha256:f52a9a8457989a8902a93bafa7e722440dcc5d4e65cb5f9dda04ae5bda103268",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target.",
                  "Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/lib/utils.ts",
                "upstreamSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "contentSha256": "sha256:d4e88046feb9d35abf37f88947afbab4574fd0a17c0e2663443b8ff8c12c4233",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT AND ISC",
            "scope": "icons/lucide/zap-icon.tsx, lib/utils.ts, and Lucide-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2025 Avijit Dey",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Avijit07x/animateicons/blob/380adb3b8eda68ee9c26e846ab8f9799d77f8815/LICENSE",
              "sha256": "sha256:a8716f1e7c79c0575b30f5b686ea663a4530872ea6dee668fc2a7900ee88f1ac",
              "localPath": "registry/sources/animateicons/LICENSE"
            },
            "notices": [
              "registry/sources/animateicons/NOTICE",
              "registry/sources/animateicons/LUCIDE_LICENSE",
              "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/animateicons/NOTICE",
                "sha256": "sha256:70802c914af22e594466ef03f0ef0b9232cba532cdd08735672f9affcf2253fe",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/LICENSE",
                "localPath": "registry/sources/animateicons/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "8fc6b70aa562d584159b1ccfffc1cb759712a1b9",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/8fc6b70aa562d584159b1ccfffc1cb759712a1b9/BRAND_LOGOS_STATEMENT.md",
                "localPath": "registry/sources/animateicons/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/animateicons-zap/zap-icon.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target. Guarded imperative startAnimation against isAnimated={false} and reduced-motion preferences.",
              "reason": "Resolve the bundled upstream helper without a consumer alias and ensure controlled animation honors explicit disablement and reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "animated-zap-icon",
            "sourceHash": "sha256:710c8f6b3c1c0af3a3eda3dac6a110d21cc3eb359b56017e6d8c30e47b417489",
            "contentHash": "sha256:663c8d9e649c77e97767f9b6629f2ad65c250252c4155a4eee37979cfd6b28c8",
            "structureHash": "sha256:2968289fbd1deaea1c261600bb16592b9d89355cad57bcac7c078070ed2ad3d5",
            "glyph": {
              "inventoryName": "zap",
              "canonicalName": "zap",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-bloom-menu",
      "type": "registry:component",
      "title": "Bloom Menu",
      "description": "Morphs a compact trigger into a caller-supplied action palette with a radial reveal.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@1.16.0",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-bloom-menu/bloom-menu.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-bloom-menu.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/ease.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/ease.ts"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "menu",
            "morph",
            "palette",
            "focus",
            "responsive"
          ],
          "renderer": "dom",
          "preview": "previews/beui-bloom-menu.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-bloom-menu/bloom-menu.tsx",
                "upstreamPath": "components/motion/bloom-menu.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/bloom-menu.tsx",
                "upstreamSha256": "sha256:061e32209fae92335ffe2cf7636aa6ee9994f043ec347b4da867921c13d1dc79",
                "contentSha256": "sha256:2c40a5542c00cef18e081ac472ee760ffe5b14c8c202aca3055d6060337126bd",
                "changes": [
                  "Changed project aliases to bundled relative imports.",
                  "Removed upstream demo items and their icons from runtime; callers now supply every action.",
                  "Added configurable labels, dialog semantics, explicit focus entry and exit-complete restoration, controls linkage, hidden decorative icons, and visible focus styles.",
                  "Moved item blur interpolation off the spring to prevent invalid negative blur values."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/ease.ts",
                "upstreamPath": "lib/ease.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/ease.ts",
                "upstreamSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "contentSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "changes": []
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/bloom-menu.tsx, lib/ease.ts, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-bloom-menu/bloom-menu.tsx",
              "change": "Repointed shared imports, removed embedded demo content, completed focus and dialog behavior, and bounded blur interpolation.",
              "reason": "Ship a reusable component rather than source-owned sample data while keeping keyboard users inside a clear interaction flow."
            }
          ],
          "dedupe": {
            "family": "morphing-action-palette",
            "sourceHash": "sha256:2bec72a9646bc5f0583de65550182d8cb74f5da0c204462ba902f18b5cb83df2",
            "contentHash": "sha256:3006971723264f27fe40c7ea277ddc2d5a2cc62a6812112f722c37012f3eb2b4",
            "structureHash": "sha256:9efac899783291c5c9b11837c7580beab514ed511fa66e97b962e1729dc69c67"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-cylinder-carousel",
      "type": "registry:component",
      "title": "Cylinder Carousel",
      "description": "Rolls caller-provided items around a responsive concave or convex cylindrical projection.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-cylinder-carousel/cylinder-carousel.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-cylinder-carousel.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "carousel",
            "3d",
            "drag",
            "keyboard",
            "responsive"
          ],
          "renderer": "dom",
          "preview": "previews/beui-cylinder-carousel.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-cylinder-carousel/cylinder-carousel.tsx",
                "upstreamPath": "components/motion/cylinder-carousel.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/cylinder-carousel.tsx",
                "upstreamSha256": "sha256:8a50f8b81057c9d8492c598ba122047c545f72ea25541cba7217942ec6492542",
                "contentSha256": "sha256:c7d8d7f21a12c9666110cbf959a733ff2dbd711507389c4b2bcd33611089afd3",
                "changes": [
                  "Changed the project utility alias to its bundled relative import.",
                  "Added an accessible carousel name and live item position, replaced application role with group, and mapped arrow navigation for RTL.",
                  "Stopped active glide controls and cleared the pending wheel timer during unmount.",
                  "Guarded pointer capture when synthetic accessibility input has no active pointer.",
                  "Normalized the malformed indentation around the upstream return block."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/cylinder-carousel.tsx, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-cylinder-carousel/cylinder-carousel.tsx",
              "change": "Repointed the utility import and tightened semantics, RTL keys, pointer capture, cleanup, and formatting.",
              "reason": "Install portably without leaking animation work and expose the custom interaction without application-mode semantics."
            }
          ],
          "dedupe": {
            "family": "cylindrical-perspective-carousel",
            "sourceHash": "sha256:1f47fc2b13a03fd6ec1eeecbd8bf94c96fcbc1af38c5aaefae953640773938ed",
            "contentHash": "sha256:96def25b902bfba97b47e65d5289da5b2be4ce2c9ecd483a9a65e99aa09c0561",
            "structureHash": "sha256:211add058b15b6af90914b9a97c6204c834391162ce7275fe308ad0126ba0996"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-hold-action",
      "type": "registry:component",
      "title": "Hold Action",
      "description": "Confirms a deliberate action only after a continuous pointer or keyboard hold.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-hold-action/hold-action.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-hold-action.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/ease.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/ease.ts"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "hold",
            "confirmation",
            "keyboard",
            "rtl",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/beui-hold-action.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-hold-action/hold-action.tsx",
                "upstreamPath": "components/motion/hold-action-button.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/hold-action-button.tsx",
                "upstreamSha256": "sha256:3b9874e24dbed6215b669d8b985282ae8d5dea7971b6013ec8e5a6d5c22fd564",
                "contentSha256": "sha256:b72aec77a8f675c4b497bac788da1a94d21f3770377a35aa9fabae47279922e8",
                "changes": [
                  "Changed project aliases to bundled relative imports.",
                  "Made the horizontal fill grow from the logical inline start and mirrored its wave in RTL.",
                  "Guarded pointer capture when synthetic accessibility input has no active pointer."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/ease.ts",
                "upstreamPath": "lib/ease.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/ease.ts",
                "upstreamSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "contentSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "changes": []
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/hold-action-button.tsx, lib/ease.ts, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-hold-action/hold-action.tsx",
              "change": "Repointed shared imports, made the horizontal fill direction-aware, and guarded pointer capture.",
              "reason": "Keep the copied component portable while preserving correct progress direction in RTL interfaces."
            }
          ],
          "dedupe": {
            "family": "hold-to-confirm-action",
            "sourceHash": "sha256:59749f263dfe8622154292cb68e01df7732f7c3742496a439fda07f619de4eb3",
            "contentHash": "sha256:0bac20bbf3a497e93dc15d4f6eb55a7f3d2463ede345e768f5613814d75990c1",
            "structureHash": "sha256:a447964398937f4f22a52de3a5f3c12234b1d0d2b6cd9382d64dbd57d396cd52"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-notification-stack",
      "type": "registry:component",
      "title": "Notification Stack",
      "description": "Expands a compact stack of caller-provided notices on hover, focus, or tap.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@1.16.0",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-notification-stack/notification-stack.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-notification-stack.tsx"
        },
        {
          "path": "registry/sources/beui/components/beui-notification-stack/beui-action-swap.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/beui-action-swap.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/ease.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/ease.ts"
        },
        {
          "path": "registry/sources/beui/hooks/taste-blocks/beui/use-hover-capable.ts",
          "type": "registry:hook",
          "target": "@hooks/taste-blocks/beui/use-hover-capable.ts"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "notifications",
            "stack",
            "focus",
            "touch",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/beui-notification-stack.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-notification-stack/notification-stack.tsx",
                "upstreamPath": "components/motion/notification-stack.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/notification-stack.tsx",
                "upstreamSha256": "sha256:50bc63db48d1047cd6af9677c33761f48b9e03015160abf0b9b3d8287352f0e0",
                "contentSha256": "sha256:a9638a283d715adb2af3cd0f0c03bdd2d3c67802767b01194580b2428b370e00",
                "changes": [
                  "Changed project aliases to bundled relative imports and renamed the bundled action-swap support import.",
                  "Made the expanded accessible label describe collapse when no view-all action exists."
                ]
              },
              {
                "shippedPath": "components/beui-notification-stack/beui-action-swap.tsx",
                "upstreamPath": "components/motion/action-swap.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/action-swap.tsx",
                "upstreamSha256": "sha256:a511e69114465af7671072731dbe9aa613941d2b853d0eca91213c91c57d0199",
                "contentSha256": "sha256:28456c8707ea434dcbca7bea83d140591fcbbae5d82db2fd3c8ddd0ae6f4731a",
                "changes": [
                  "Changed project aliases to bundled relative imports.",
                  "Normalized source formatting without changing the action-swap runtime.",
                  "Moved roll and cascade filter interpolation off springs to prevent invalid negative blur values."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/ease.ts",
                "upstreamPath": "lib/ease.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/ease.ts",
                "upstreamSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "contentSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "changes": []
              },
              {
                "shippedPath": "hooks/taste-blocks/beui/use-hover-capable.ts",
                "upstreamPath": "lib/hooks/use-hover-capable.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/hooks/use-hover-capable.ts",
                "upstreamSha256": "sha256:b5b9397bfa03859e04673c8f1817cf13ff55d2a9688955d6e0459ae70db90d06",
                "contentSha256": "sha256:b5b9397bfa03859e04673c8f1817cf13ff55d2a9688955d6e0459ae70db90d06",
                "changes": []
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/notification-stack.tsx, components/motion/action-swap.tsx, lib/ease.ts, lib/hooks/use-hover-capable.ts, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-notification-stack/notification-stack.tsx",
              "change": "Repointed and renamed bundled support imports, normalized support formatting, and corrected the expanded label.",
              "reason": "Install the full copied dependency closure without collisions and keep the announced action consistent with runtime behavior."
            },
            {
              "shippedPath": "components/beui-notification-stack/beui-action-swap.tsx",
              "change": "Changed project aliases to bundled relative imports. Normalized source formatting and bounded roll and cascade filter interpolation.",
              "reason": "Keep the copied dependency closure portable at its registry installation targets."
            }
          ],
          "dedupe": {
            "family": "expandable-notification-stack",
            "sourceHash": "sha256:1856896ffab4de585d318ca63edf791995398de6818a27418ba187027211b31f",
            "contentHash": "sha256:9c2e118f9beb50c72bc8fe24e0bbe63527ddcc890e99aa8db966cd8fc0d8d024",
            "structureHash": "sha256:b06a07e2ca32f3322216074c657308b7adc4d45d50cc2d6133b03b8bb36c5895"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-overflow-actions",
      "type": "registry:component",
      "title": "Overflow Actions",
      "description": "Reveals secondary caller-provided actions from a measured connected action rail.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@1.16.0",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-overflow-actions/overflow-actions.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-overflow-actions.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/ease.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/ease.ts"
        },
        {
          "path": "registry/sources/beui/hooks/taste-blocks/beui/use-hover-capable.ts",
          "type": "registry:hook",
          "target": "@hooks/taste-blocks/beui/use-hover-capable.ts"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "actions",
            "overflow",
            "toolbar",
            "keyboard",
            "rtl"
          ],
          "renderer": "dom",
          "preview": "previews/beui-overflow-actions.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-overflow-actions/overflow-actions.tsx",
                "upstreamPath": "components/motion/overflow-actions.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/overflow-actions.tsx",
                "upstreamSha256": "sha256:e68f7a7ceab9df6a3e343073eef43c806fd11af83437416d354aa93fd6a41301",
                "contentSha256": "sha256:4b3ff8fdba5431c7ef4c406ced73629f8d8cdc5066448a2a65ccf8f1ed468fd6",
                "changes": [
                  "Changed project aliases to bundled relative imports.",
                  "Required an accessible label for each supplied action and retained a string-label fallback.",
                  "Changed exit positioning from physical left to logical inline start for RTL and added Escape collapse with toggle focus restoration.",
                  "Moved overflow blur interpolation off the layout spring to prevent invalid negative blur values."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/ease.ts",
                "upstreamPath": "lib/ease.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/ease.ts",
                "upstreamSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "contentSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "changes": []
              },
              {
                "shippedPath": "hooks/taste-blocks/beui/use-hover-capable.ts",
                "upstreamPath": "lib/hooks/use-hover-capable.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/hooks/use-hover-capable.ts",
                "upstreamSha256": "sha256:b5b9397bfa03859e04673c8f1817cf13ff55d2a9688955d6e0459ae70db90d06",
                "contentSha256": "sha256:b5b9397bfa03859e04673c8f1817cf13ff55d2a9688955d6e0459ae70db90d06",
                "changes": []
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/overflow-actions.tsx, lib/ease.ts, lib/hooks/use-hover-capable.ts, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-overflow-actions/overflow-actions.tsx",
              "change": "Repointed shared imports and completed action naming, RTL positioning, Escape behavior, and bounded blur interpolation.",
              "reason": "Keep the copied rail portable and preserve equivalent keyboard and layout behavior across writing directions."
            }
          ],
          "dedupe": {
            "family": "revealable-overflow-action-rail",
            "sourceHash": "sha256:0f8a8368d703671d34efddcf90454f8c3a4bc67c5f025aa56f628538f055b8cc",
            "contentHash": "sha256:604a26405432aafb4a5cc0b0c8d983aa64dcdcdd849b6c1e4fd8f15f960495a7",
            "structureHash": "sha256:d585813fd85433241a3fef75da2d0b561ac60a7ebadc7365ad067f48b8b96128"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-slide-action",
      "type": "registry:component",
      "title": "Slide Action",
      "description": "Requires a measured drag to the logical far edge before confirming an action.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-slide-action/slide-action.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-slide-action.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/ease.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/ease.ts"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "drag",
            "confirmation",
            "touch",
            "keyboard",
            "rtl"
          ],
          "renderer": "dom",
          "preview": "previews/beui-slide-action.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-slide-action/slide-action.tsx",
                "upstreamPath": "components/motion/slide-action-button.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/slide-action-button.tsx",
                "upstreamSha256": "sha256:79d5bc11c6e8ca0bfe1efd14149ee968d86aa388a7ebebe9dbade875fc2a6bd7",
                "contentSha256": "sha256:ba83bcd530cbc4d07d7d6f3ae9675961c0adea21d22510499b71f84bc233d445",
                "changes": [
                  "Changed project aliases to bundled relative imports.",
                  "Measured inherited text direction and mapped drag constraints, progress, fill origin, logical padding, completion threshold, and arrow orientation for RTL."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/ease.ts",
                "upstreamPath": "lib/ease.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/ease.ts",
                "upstreamSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "contentSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "changes": []
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/slide-action-button.tsx, lib/ease.ts, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-slide-action/slide-action.tsx",
              "change": "Repointed shared imports and added direction-aware drag geometry.",
              "reason": "Install without project aliases and keep the confirmation gesture equivalent in LTR and RTL."
            }
          ],
          "dedupe": {
            "family": "draggable-confirmation-action",
            "sourceHash": "sha256:6c8caf2794e7f9bc021806104cfd30f4cbe35f37a05e73354ff04f186ce05bfe",
            "contentHash": "sha256:5a310eaaad5743be79086fa5ce9b211af7fd84f6fd2eeea936814106ff476007",
            "structureHash": "sha256:d11994abb2e726a72144a4c0f996b5f82fac92b7ada3fd9b5c3c0df6a6822c79"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-toast-stack",
      "type": "registry:component",
      "title": "Animated Toast Stack",
      "description": "Manages status-changing notices with actions, timed cleanup, swipe dismissal, and optional portals.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@1.16.0",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-toast-stack/toast-stack.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-toast-stack.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/ease.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/ease.ts"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "toast",
            "status",
            "swipe",
            "portal",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/beui-toast-stack.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-toast-stack/toast-stack.tsx",
                "upstreamPath": "components/motion/animated-toast-stack.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/animated-toast-stack.tsx",
                "upstreamSha256": "sha256:eb7c0efbc0535042220849c51b536835cc46d9e536168f0164e6c2c40c9cba1d",
                "contentSha256": "sha256:70a8157379b5d87f6a1fd4715d3d2d920089c96f1a380b895e8728cfbc5eba5a",
                "changes": [
                  "Changed project aliases to bundled relative imports.",
                  "Made non-positive maxVisible values render no notices.",
                  "Disabled layout motion and CSS spinner rotation when reduced motion is requested.",
                  "Moved filter and opacity interpolation off the spring to prevent invalid negative blur values."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/ease.ts",
                "upstreamPath": "lib/ease.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/ease.ts",
                "upstreamSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "contentSha256": "sha256:a24fb30b2859fbd652f8a4c5a7db0ff50f66adb4e581aa009e5105ea54a07105",
                "changes": []
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/animated-toast-stack.tsx, lib/ease.ts, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-toast-stack/toast-stack.tsx",
              "change": "Repointed shared imports and closed reduced-motion, visibility, and filter interpolation edge cases.",
              "reason": "Keep the copied stack portable and ensure its motion preference applies to layout and loading indicators."
            }
          ],
          "dedupe": {
            "family": "animated-status-toast-stack",
            "sourceHash": "sha256:cd05cd1cacb53e50f8dffc5c15e5c1d1254d96936c5a17b7d89d7e9f5eaf441b",
            "contentHash": "sha256:8f451605c916de2e28b296ebc99d97d0d8eeebf6603dd77a4f2de47a035d3462",
            "structureHash": "sha256:89e5dfb275138d49f55cf002e700b8b05b0767a1b763a5c7cc30fbfd120629a5"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "beui-wheel-picker",
      "type": "registry:component",
      "title": "Momentum Wheel Picker",
      "description": "Selects a value through a 3D wheel with drag, wheel, keyboard, momentum, and optional audio ticks.",
      "author": "Saurabh Chauhan",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.18.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/beui/components/beui-wheel-picker/wheel-picker.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/beui-wheel-picker.tsx"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/tick-sound.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/tick-sound.ts"
        },
        {
          "path": "registry/sources/beui/lib/taste-blocks/beui/utils.ts",
          "type": "registry:lib",
          "target": "@lib/taste-blocks/beui/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "picker",
            "wheel",
            "momentum",
            "touch",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/beui-wheel-picker.tsx",
          "source": {
            "project": "beUI",
            "repository": "https://github.com/starc007/ui-components",
            "revision": "fb312ce6811cca8ba7b46a5c8fa30c28b5861148",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/beui-wheel-picker/wheel-picker.tsx",
                "upstreamPath": "components/motion/wheel-picker.tsx",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/components/motion/wheel-picker.tsx",
                "upstreamSha256": "sha256:3647df372f913a255fdecc58bc74ea3925fa3f21c5e4334c3b3111c90e4cc77a",
                "contentSha256": "sha256:c15115d67317a02e6c427eac8e76f324a4e67e434f5ce6bc0f1cb33a817cb011",
                "changes": [
                  "Changed project aliases to bundled relative imports.",
                  "Exposed the custom wheel as a labeled spinbutton with current value metadata.",
                  "Labeled the reduced-motion button group, marked its current value, and returned no control for an empty option list.",
                  "Guarded pointer capture and release for synthetic or cancelled pointer input."
                ]
              },
              {
                "shippedPath": "lib/taste-blocks/beui/tick-sound.ts",
                "upstreamPath": "lib/tick-sound.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/tick-sound.ts",
                "upstreamSha256": "sha256:9abf7f8f710d5a9fe010ab77f89e6735ad065658c48043e67774506a4efcbaf0",
                "contentSha256": "sha256:9abf7f8f710d5a9fe010ab77f89e6735ad065658c48043e67774506a4efcbaf0",
                "changes": []
              },
              {
                "shippedPath": "lib/taste-blocks/beui/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/motion/wheel-picker.tsx, lib/tick-sound.ts, lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Saurabh Chauhan"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/starc007/ui-components/blob/fb312ce6811cca8ba7b46a5c8fa30c28b5861148/LICENSE",
              "sha256": "sha256:9e27b491d5691a1bd95708e79de23beb2962f33fe6c1ee31ab639f43009a0b20",
              "localPath": "registry/sources/beui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/beui-wheel-picker/wheel-picker.tsx",
              "change": "Repointed shared imports and corrected the custom picker semantics and pointer-capture edge cases.",
              "reason": "Keep the component portable and give assistive technology the same value state available visually."
            }
          ],
          "dedupe": {
            "family": "momentum-wheel-picker",
            "sourceHash": "sha256:cde483fe75002ccaba7c36dc8f2bbcdfc0da5619a06f0a4f7ace5acbcb1f0734",
            "contentHash": "sha256:35a9d53300545c3a8f7eba9d5822b1de16119ff183a2fda6d3b454c56358fbfb",
            "structureHash": "sha256:be936e02c2096c3e71975e516a12071de42634501de4a40acec95f8f0b9fabc6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "carbon-icons-motion-center-circle-icon",
      "type": "registry:component",
      "title": "Animated Center Circle Icon",
      "description": "Converges four guides while the target ring contracts and returns.",
      "author": "Carbon Design System contributors",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-center-circle-icon/center-circle-motion.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/carbon-icons-motion-center-circle-icon/center-circle-motion.tsx"
        },
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-center-circle-icon/center-circle-motion.module.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/carbon-icons-motion-center-circle-icon/center-circle-motion.module.css"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "center",
            "target",
            "align",
            "circle",
            "animated",
            "icon",
            "carbon",
            "reduced-motion"
          ],
          "renderer": "svg",
          "preview": "previews/carbon-icons-motion-center-circle-icon.tsx",
          "source": {
            "project": "Carbon Icons Motion",
            "repository": "https://github.com/carbon-design-system/icons-motion",
            "revision": "7e0a7459eb7d8f96fae0649e1450b65af7f75a2b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/carbon-icons-motion-center-circle-icon/center-circle-motion.tsx",
                "upstreamPath": "src/components/Operations/CenterCircleMotion/CenterCircleMotion.js",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Operations/CenterCircleMotion/CenterCircleMotion.js",
                "upstreamSha256": "sha256:6a7d42980b84d6a2de329de3d518afd5fdbb8334e8894bb473f6d7b29543238a",
                "contentSha256": "sha256:9280fd21af463b77d6b7ac5d7b3ef74bfc7fb461c84a56626345c3a4e9613d6f",
                "changes": [
                  "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop.",
                  "Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers."
                ]
              },
              {
                "shippedPath": "components/carbon-icons-motion-center-circle-icon/center-circle-motion.module.css",
                "upstreamPath": "src/components/Operations/CenterCircleMotion/center-circle--motion.module.scss",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Operations/CenterCircleMotion/center-circle--motion.module.scss",
                "upstreamSha256": "sha256:73ac2c943d522c22b8a4ea631b3351148438583b583d0b9fa4ed29cdad77c9e0",
                "contentSha256": "sha256:d96a69cef0ab192a0565f8f315411cbf6a3a62ea865284ed8425bf7e133a9d5e",
                "changes": [
                  "Converted the nested SCSS module to an equivalent flat CSS module.",
                  "Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling."
                ]
              }
            ]
          },
          "provenance": {
            "geometry": "Inline SVG geometry copied from the official Carbon Icons Motion component blob.",
            "carbonBasis": {
              "statement": "The upstream README says the package mirrors Carbon icons but is not tied to a specific Carbon version.",
              "upstreamPath": "README.md",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/README.md",
              "sha256": "sha256:3f0e1bd45dc58a966edb3f7ba76d1b0d9231ade1a7cae7b8d7ee36ca12130069"
            }
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "src/components/Operations/CenterCircleMotion/CenterCircleMotion.js, src/components/Operations/CenterCircleMotion/center-circle--motion.module.scss, and their inline Carbon-derived SVG geometry",
            "copyright": [
              "Copyright 2015 IBM Corp."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/LICENSE",
              "sha256": "sha256:c3c4a0200172f8e23c0ea6a0f2c105ac960721c542b63d5de5e9767d195c2e73",
              "localPath": "registry/sources/carbon-icons-motion/LICENSE"
            },
            "notices": [
              "registry/sources/carbon-icons-motion/NOTICE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/carbon-icons-motion/NOTICE",
                "sha256": "sha256:95ab19a8acd4553d339b6b0fcfd7c9c93329ceccfa6713364f7a9e5ed42ead46",
                "changes": [
                  "Created locally because the pinned upstream commit contains no NOTICE file; records attribution and Apache modification marking."
                ]
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/carbon-icons-motion-center-circle-icon/center-circle-motion.tsx",
              "change": "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop. Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers.",
              "reason": "Expose a strict, controlled, portable React SVG component without changing its source geometry."
            },
            {
              "shippedPath": "components/carbon-icons-motion-center-circle-icon/center-circle-motion.module.css",
              "change": "Converted the nested SCSS module to an equivalent flat CSS module. Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling.",
              "reason": "Remove the Sass requirement, prevent looping/autoplay, meet the UI timing budget, and honor reduced motion."
            }
          ],
          "dedupe": {
            "family": "carbon-four-way-guides-converge-on-ring",
            "sourceHash": "sha256:08184faf88dca871d645baf22cbd04fe1cf431cc3c9ef2a1941117ac55d637b8",
            "contentHash": "sha256:c15661484e639244d846007d590954ab135cc246ed1b25b8eb9d39ba50e2ca4a",
            "structureHash": "sha256:b3bff2d974b327417fc55fec4db810642741f9708de1c632751d6a1ee57847d9",
            "geometryHash": "sha256:35fbd0317e7cdeb3279d1f9e8e8f6d05fde7ee3f199343014f7f8f38e0bafb19",
            "motionHash": "sha256:9a9d286f8afe90a1e7db49d2202141ea0ed6ae8c6e88c146c44303d496d993e9",
            "rasterHash": "sha256:2eb5aca831e91f21218dc71bd603fdd3d1e5d86c730e84ac4fa1642fef953429",
            "glyph": {
              "inventoryName": "center-circle",
              "canonicalName": "center-circle",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": "Generic Carbon-system glyph; no product logo, company mark, or remote asset retained."
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "carbon-icons-motion-crop-icon",
      "type": "registry:component",
      "title": "Animated Crop Icon",
      "description": "Moves opposing crop corners together and back to explain the crop action.",
      "author": "Carbon Design System contributors",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-crop-icon/crop-motion.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/carbon-icons-motion-crop-icon/crop-motion.tsx"
        },
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-crop-icon/crop-motion.module.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/carbon-icons-motion-crop-icon/crop-motion.module.css"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "crop",
            "formatting",
            "corners",
            "animated",
            "icon",
            "carbon",
            "reduced-motion"
          ],
          "renderer": "svg",
          "preview": "previews/carbon-icons-motion-crop-icon.tsx",
          "source": {
            "project": "Carbon Icons Motion",
            "repository": "https://github.com/carbon-design-system/icons-motion",
            "revision": "7e0a7459eb7d8f96fae0649e1450b65af7f75a2b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/carbon-icons-motion-crop-icon/crop-motion.tsx",
                "upstreamPath": "src/components/Formatting/CropMotion/CropMotion.js",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Formatting/CropMotion/CropMotion.js",
                "upstreamSha256": "sha256:908ceadafb3c1ea3160a170f373a45b11d53960ed876763d606507b61883e8c2",
                "contentSha256": "sha256:3fd4b6a39f381ce75e472e7254a0bd15cfc3932391ab0b2c65dca5239a0d6076",
                "changes": [
                  "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop.",
                  "Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers."
                ]
              },
              {
                "shippedPath": "components/carbon-icons-motion-crop-icon/crop-motion.module.css",
                "upstreamPath": "src/components/Formatting/CropMotion/crop--motion.module.scss",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Formatting/CropMotion/crop--motion.module.scss",
                "upstreamSha256": "sha256:c92d017a51c97df3b5fc196b5a69cf5b17db62e3045f3da3f04e277da7b2e7e7",
                "contentSha256": "sha256:a131f174ac4696cca9df965ba7083531d7bb62786a9b38790bee11640e95a69d",
                "changes": [
                  "Converted the nested SCSS module to an equivalent flat CSS module.",
                  "Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling."
                ]
              }
            ]
          },
          "provenance": {
            "geometry": "Inline SVG geometry copied from the official Carbon Icons Motion component blob.",
            "carbonBasis": {
              "statement": "The upstream README says the package mirrors Carbon icons but is not tied to a specific Carbon version.",
              "upstreamPath": "README.md",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/README.md",
              "sha256": "sha256:3f0e1bd45dc58a966edb3f7ba76d1b0d9231ade1a7cae7b8d7ee36ca12130069"
            }
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "src/components/Formatting/CropMotion/CropMotion.js, src/components/Formatting/CropMotion/crop--motion.module.scss, and their inline Carbon-derived SVG geometry",
            "copyright": [
              "Copyright 2015 IBM Corp."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/LICENSE",
              "sha256": "sha256:c3c4a0200172f8e23c0ea6a0f2c105ac960721c542b63d5de5e9767d195c2e73",
              "localPath": "registry/sources/carbon-icons-motion/LICENSE"
            },
            "notices": [
              "registry/sources/carbon-icons-motion/NOTICE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/carbon-icons-motion/NOTICE",
                "sha256": "sha256:95ab19a8acd4553d339b6b0fcfd7c9c93329ceccfa6713364f7a9e5ed42ead46",
                "changes": [
                  "Created locally because the pinned upstream commit contains no NOTICE file; records attribution and Apache modification marking."
                ]
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/carbon-icons-motion-crop-icon/crop-motion.tsx",
              "change": "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop. Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers.",
              "reason": "Expose a strict, controlled, portable React SVG component without changing its source geometry."
            },
            {
              "shippedPath": "components/carbon-icons-motion-crop-icon/crop-motion.module.css",
              "change": "Converted the nested SCSS module to an equivalent flat CSS module. Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling.",
              "reason": "Remove the Sass requirement, prevent looping/autoplay, meet the UI timing budget, and honor reduced motion."
            }
          ],
          "dedupe": {
            "family": "carbon-opposed-diagonal-crop-corners",
            "sourceHash": "sha256:71fe934d78a7f05390deb199b71eb72238e53af3266b80e10b83d9b5e99f9cdc",
            "contentHash": "sha256:c2fae72c16a2bb8e612958e8f654d187d8d49db3d0e71d02df6ff5247aee139a",
            "structureHash": "sha256:5de46d03075bea7d822faaa8847c2674190c10818236244ba42b2ec988c7f5af",
            "geometryHash": "sha256:54dc96c8b4839e618f69e741a331317a159aaad784a7d7c14f03418b71957a1e",
            "motionHash": "sha256:aa33ff19be76a17b7b0711e91a5ebe8944f0d5c0f44dad762d1b2f07ba0042f2",
            "rasterHash": "sha256:25916b6ed0d8adaa8ddca512bb4bb42326c3cbcfd30c8d3e47f5f3b080e3c90f",
            "glyph": {
              "inventoryName": "crop",
              "canonicalName": "crop",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": "Generic Carbon-system glyph; no product logo, company mark, or remote asset retained."
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "carbon-icons-motion-cut-icon",
      "type": "registry:component",
      "title": "Animated Cut Icon",
      "description": "Counter-rotates the two scissor blades in one compact cutting gesture.",
      "author": "Carbon Design System contributors",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-cut-icon/cut-motion.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/carbon-icons-motion-cut-icon/cut-motion.tsx"
        },
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-cut-icon/cut-motion.module.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/carbon-icons-motion-cut-icon/cut-motion.module.css"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "cut",
            "scissors",
            "formatting",
            "animated",
            "icon",
            "carbon",
            "reduced-motion"
          ],
          "renderer": "svg",
          "preview": "previews/carbon-icons-motion-cut-icon.tsx",
          "source": {
            "project": "Carbon Icons Motion",
            "repository": "https://github.com/carbon-design-system/icons-motion",
            "revision": "7e0a7459eb7d8f96fae0649e1450b65af7f75a2b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/carbon-icons-motion-cut-icon/cut-motion.tsx",
                "upstreamPath": "src/components/Formatting/CutMotion/CutMotion.js",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Formatting/CutMotion/CutMotion.js",
                "upstreamSha256": "sha256:434a33fc5763804fabec508d88adcbcf23c6230a7fce00ecf9933ab0973443ab",
                "contentSha256": "sha256:83f33803caeed4a3e7e7825aab7ad634807dbedf45230690d3cd5d9ca6ce7c42",
                "changes": [
                  "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop.",
                  "Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers."
                ]
              },
              {
                "shippedPath": "components/carbon-icons-motion-cut-icon/cut-motion.module.css",
                "upstreamPath": "src/components/Formatting/CutMotion/cut--motion.module.scss",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Formatting/CutMotion/cut--motion.module.scss",
                "upstreamSha256": "sha256:ac99ec0b3edac1b8f5d88b5f94545122ddf983df2231906527216aca5b104def",
                "contentSha256": "sha256:13d73e5761c5ec2cc9e1f79ee752ea6bfb45c7d6f7dec1b2724aee723c051e9b",
                "changes": [
                  "Converted the nested SCSS module to an equivalent flat CSS module.",
                  "Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling."
                ]
              }
            ]
          },
          "provenance": {
            "geometry": "Inline SVG geometry copied from the official Carbon Icons Motion component blob.",
            "carbonBasis": {
              "statement": "The upstream README says the package mirrors Carbon icons but is not tied to a specific Carbon version.",
              "upstreamPath": "README.md",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/README.md",
              "sha256": "sha256:3f0e1bd45dc58a966edb3f7ba76d1b0d9231ade1a7cae7b8d7ee36ca12130069"
            }
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "src/components/Formatting/CutMotion/CutMotion.js, src/components/Formatting/CutMotion/cut--motion.module.scss, and their inline Carbon-derived SVG geometry",
            "copyright": [
              "Copyright 2015 IBM Corp."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/LICENSE",
              "sha256": "sha256:c3c4a0200172f8e23c0ea6a0f2c105ac960721c542b63d5de5e9767d195c2e73",
              "localPath": "registry/sources/carbon-icons-motion/LICENSE"
            },
            "notices": [
              "registry/sources/carbon-icons-motion/NOTICE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/carbon-icons-motion/NOTICE",
                "sha256": "sha256:95ab19a8acd4553d339b6b0fcfd7c9c93329ceccfa6713364f7a9e5ed42ead46",
                "changes": [
                  "Created locally because the pinned upstream commit contains no NOTICE file; records attribution and Apache modification marking."
                ]
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/carbon-icons-motion-cut-icon/cut-motion.tsx",
              "change": "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop. Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers.",
              "reason": "Expose a strict, controlled, portable React SVG component without changing its source geometry."
            },
            {
              "shippedPath": "components/carbon-icons-motion-cut-icon/cut-motion.module.css",
              "change": "Converted the nested SCSS module to an equivalent flat CSS module. Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling.",
              "reason": "Remove the Sass requirement, prevent looping/autoplay, meet the UI timing budget, and honor reduced motion."
            }
          ],
          "dedupe": {
            "family": "carbon-counter-rotating-scissor-blades",
            "sourceHash": "sha256:4e3f13c0cdece7c3c37af3d8259e3972e39055550c94a5c06409ab992cdfbe9f",
            "contentHash": "sha256:1ac0b1ebad62a436148f42bfbd1d67c7a506a47ed82ce3165dd1081921c2eb7b",
            "structureHash": "sha256:2bc4c0a883287980a1b345e7457ec54600cf5540cacf6eb07d47d4eebe7d3bad",
            "geometryHash": "sha256:d025c7cba71f8ea18017f2882b4c634605e1b9165cbd755342424a3e4ae83879",
            "motionHash": "sha256:b914b2e04c0402a0945d63820f95261ca739f074a6f86823e730e0cc29757c45",
            "rasterHash": "sha256:ae5646b59283ae582d276ef2a50f04cafd3c9814f907709719964de88ea0572b",
            "glyph": {
              "inventoryName": "cut",
              "canonicalName": "cut",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": "Generic Carbon-system glyph; no product logo, company mark, or remote asset retained."
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "carbon-icons-motion-image-search-icon",
      "type": "registry:component",
      "title": "Animated Image Search Icon",
      "description": "Tilts the magnifying lens over the image frame to indicate visual search.",
      "author": "Carbon Design System contributors",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-image-search-icon/image-search-motion.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/carbon-icons-motion-image-search-icon/image-search-motion.tsx"
        },
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-image-search-icon/image-search-motion.module.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/carbon-icons-motion-image-search-icon/image-search-motion.module.css"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "image",
            "search",
            "magnifier",
            "animated",
            "icon",
            "carbon",
            "reduced-motion"
          ],
          "renderer": "svg",
          "preview": "previews/carbon-icons-motion-image-search-icon.tsx",
          "source": {
            "project": "Carbon Icons Motion",
            "repository": "https://github.com/carbon-design-system/icons-motion",
            "revision": "7e0a7459eb7d8f96fae0649e1450b65af7f75a2b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/carbon-icons-motion-image-search-icon/image-search-motion.tsx",
                "upstreamPath": "src/components/Operations/ImageSearchMotion/ImageSearchMotion.js",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Operations/ImageSearchMotion/ImageSearchMotion.js",
                "upstreamSha256": "sha256:69899936033bfbc4538940ea77d4fe58ec05e08f9d484e14c2f2ae4f0dc083a6",
                "contentSha256": "sha256:48687d13be30ce72876a0cb04b145cd055b27d57553f3cecf11c0cb2399000ce",
                "changes": [
                  "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop.",
                  "Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers."
                ]
              },
              {
                "shippedPath": "components/carbon-icons-motion-image-search-icon/image-search-motion.module.css",
                "upstreamPath": "src/components/Operations/ImageSearchMotion/image-search--motion.module.scss",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Operations/ImageSearchMotion/image-search--motion.module.scss",
                "upstreamSha256": "sha256:b5ce6efb455b0282c39ad24edcf8bf0de3125d181d0fa0362dde221b368c425a",
                "contentSha256": "sha256:acea14ab429fba99eb16b32b154639f7669f1b152053c29ad59b30489ccc9410",
                "changes": [
                  "Converted the nested SCSS module to an equivalent flat CSS module.",
                  "Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling."
                ]
              }
            ]
          },
          "provenance": {
            "geometry": "Inline SVG geometry copied from the official Carbon Icons Motion component blob.",
            "carbonBasis": {
              "statement": "The upstream README says the package mirrors Carbon icons but is not tied to a specific Carbon version.",
              "upstreamPath": "README.md",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/README.md",
              "sha256": "sha256:3f0e1bd45dc58a966edb3f7ba76d1b0d9231ade1a7cae7b8d7ee36ca12130069"
            }
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "src/components/Operations/ImageSearchMotion/ImageSearchMotion.js, src/components/Operations/ImageSearchMotion/image-search--motion.module.scss, and their inline Carbon-derived SVG geometry",
            "copyright": [
              "Copyright 2015 IBM Corp."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/LICENSE",
              "sha256": "sha256:c3c4a0200172f8e23c0ea6a0f2c105ac960721c542b63d5de5e9767d195c2e73",
              "localPath": "registry/sources/carbon-icons-motion/LICENSE"
            },
            "notices": [
              "registry/sources/carbon-icons-motion/NOTICE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/carbon-icons-motion/NOTICE",
                "sha256": "sha256:95ab19a8acd4553d339b6b0fcfd7c9c93329ceccfa6713364f7a9e5ed42ead46",
                "changes": [
                  "Created locally because the pinned upstream commit contains no NOTICE file; records attribution and Apache modification marking."
                ]
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/carbon-icons-motion-image-search-icon/image-search-motion.tsx",
              "change": "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop. Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers.",
              "reason": "Expose a strict, controlled, portable React SVG component without changing its source geometry."
            },
            {
              "shippedPath": "components/carbon-icons-motion-image-search-icon/image-search-motion.module.css",
              "change": "Converted the nested SCSS module to an equivalent flat CSS module. Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling.",
              "reason": "Remove the Sass requirement, prevent looping/autoplay, meet the UI timing budget, and honor reduced motion."
            }
          ],
          "dedupe": {
            "family": "carbon-search-lens-tilts-over-image",
            "sourceHash": "sha256:d0db905aceccc4a3085a234142994f27643ba081c3bb600cc8e23a13c99d29c6",
            "contentHash": "sha256:1568dad1c82718e2851248fca85a6512a0772b2c3729462b7ca266a0a6d62690",
            "structureHash": "sha256:ad838179a0a6f695ab7a3058a51e1223d03ad7021939258fcd8c8fd305b46a67",
            "geometryHash": "sha256:3cafbee82e097ad9147dddcefc386f730036939962609bc4952db14132468a30",
            "motionHash": "sha256:be7eca218e17e13f676b0cf58b8b74cd9831679c3fb9b43bd193a3ab750c3ad6",
            "rasterHash": "sha256:d2f46ef9182ff4ce813bbcdcd24756f7cfd9a6f868d2d1af090bac336306a6b3",
            "glyph": {
              "inventoryName": "image-search",
              "canonicalName": "image-search",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": "Generic Carbon-system glyph; no product logo, company mark, or remote asset retained."
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "carbon-icons-motion-magic-wand-icon",
      "type": "registry:component",
      "title": "Animated Magic Wand Icon",
      "description": "Rocks a wand while three independently timed sparkles pulse around it.",
      "author": "Carbon Design System contributors",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-magic-wand-icon/magic-wand-motion.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/carbon-icons-motion-magic-wand-icon/magic-wand-motion.tsx"
        },
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-magic-wand-icon/magic-wand-motion.module.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/carbon-icons-motion-magic-wand-icon/magic-wand-motion.module.css"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "magic",
            "wand",
            "sparkles",
            "formatting",
            "animated",
            "icon",
            "carbon",
            "reduced-motion"
          ],
          "renderer": "svg",
          "preview": "previews/carbon-icons-motion-magic-wand-icon.tsx",
          "source": {
            "project": "Carbon Icons Motion",
            "repository": "https://github.com/carbon-design-system/icons-motion",
            "revision": "7e0a7459eb7d8f96fae0649e1450b65af7f75a2b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/carbon-icons-motion-magic-wand-icon/magic-wand-motion.tsx",
                "upstreamPath": "src/components/Formatting/MagicWandMotion/MagicWandMotion.js",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Formatting/MagicWandMotion/MagicWandMotion.js",
                "upstreamSha256": "sha256:80ccded6b1cd155630f7d0b87b0295c5cbfe2a03e48d61abda6725f640935d12",
                "contentSha256": "sha256:0a8ddefb27d9b9f962140484deaa8788dff2604f4268fe0466c57cd9149279b5",
                "changes": [
                  "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop.",
                  "Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers."
                ]
              },
              {
                "shippedPath": "components/carbon-icons-motion-magic-wand-icon/magic-wand-motion.module.css",
                "upstreamPath": "src/components/Formatting/MagicWandMotion/magic-wand--motion.module.scss",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Formatting/MagicWandMotion/magic-wand--motion.module.scss",
                "upstreamSha256": "sha256:bb1da19d72f7f65a314556e1bcb1bbf6ebf1b66fe56fc8fb78a8970e1a0f5b3f",
                "contentSha256": "sha256:3f5334a30e8b66da41d7994eb75bcc8a3a43ef2ba67c4e35286932c7f6e98275",
                "changes": [
                  "Converted the nested SCSS module to an equivalent flat CSS module.",
                  "Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling."
                ]
              }
            ]
          },
          "provenance": {
            "geometry": "Inline SVG geometry copied from the official Carbon Icons Motion component blob.",
            "carbonBasis": {
              "statement": "The upstream README says the package mirrors Carbon icons but is not tied to a specific Carbon version.",
              "upstreamPath": "README.md",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/README.md",
              "sha256": "sha256:3f0e1bd45dc58a966edb3f7ba76d1b0d9231ade1a7cae7b8d7ee36ca12130069"
            }
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "src/components/Formatting/MagicWandMotion/MagicWandMotion.js, src/components/Formatting/MagicWandMotion/magic-wand--motion.module.scss, and their inline Carbon-derived SVG geometry",
            "copyright": [
              "Copyright 2015 IBM Corp."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/LICENSE",
              "sha256": "sha256:c3c4a0200172f8e23c0ea6a0f2c105ac960721c542b63d5de5e9767d195c2e73",
              "localPath": "registry/sources/carbon-icons-motion/LICENSE"
            },
            "notices": [
              "registry/sources/carbon-icons-motion/NOTICE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/carbon-icons-motion/NOTICE",
                "sha256": "sha256:95ab19a8acd4553d339b6b0fcfd7c9c93329ceccfa6713364f7a9e5ed42ead46",
                "changes": [
                  "Created locally because the pinned upstream commit contains no NOTICE file; records attribution and Apache modification marking."
                ]
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/carbon-icons-motion-magic-wand-icon/magic-wand-motion.tsx",
              "change": "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop. Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers.",
              "reason": "Expose a strict, controlled, portable React SVG component without changing its source geometry."
            },
            {
              "shippedPath": "components/carbon-icons-motion-magic-wand-icon/magic-wand-motion.module.css",
              "change": "Converted the nested SCSS module to an equivalent flat CSS module. Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling.",
              "reason": "Remove the Sass requirement, prevent looping/autoplay, meet the UI timing budget, and honor reduced motion."
            }
          ],
          "dedupe": {
            "family": "carbon-wand-rock-with-three-offset-sparkles",
            "sourceHash": "sha256:a50b8d99bb1225c49559e3b59f749ba1ead043588b0524f64b0d261e9a3438b8",
            "contentHash": "sha256:2183e9600a29060c8fae6bf429d5dddbe38eba0394c9f1a52bab8c71acb1889e",
            "structureHash": "sha256:560af96b49373cefa233ba7b289b790ec12e642e9c559e3bf4fd7ac1102a7394",
            "geometryHash": "sha256:a16926705ee943f3cf48f62ecaf4f70ec7224efe0294b4d2e1f5f1c4c2c6a322",
            "motionHash": "sha256:261854f8a8c3db30de9185ea7bde66283f59076c794de1838b7b8e5de2dcaebc",
            "rasterHash": "sha256:37a298090b762cb6c1b55db6cd9d8d1ca1a3c55315850bdbef3944be35937bee",
            "glyph": {
              "inventoryName": "magic-wand",
              "canonicalName": "magic-wand",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": "Generic Carbon-system glyph; no product logo, company mark, or remote asset retained."
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "carbon-icons-motion-search-locate-icon",
      "type": "registry:component",
      "title": "Animated Search Locate Icon",
      "description": "Lifts the search lens while a result line contracts beneath it.",
      "author": "Carbon Design System contributors",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-search-locate-icon/search-locate-motion.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/carbon-icons-motion-search-locate-icon/search-locate-motion.tsx"
        },
        {
          "path": "registry/sources/carbon-icons-motion/components/carbon-icons-motion-search-locate-icon/search-locate-motion.module.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/carbon-icons-motion-search-locate-icon/search-locate-motion.module.css"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "search",
            "locate",
            "results",
            "magnifier",
            "animated",
            "icon",
            "carbon",
            "reduced-motion"
          ],
          "renderer": "svg",
          "preview": "previews/carbon-icons-motion-search-locate-icon.tsx",
          "source": {
            "project": "Carbon Icons Motion",
            "repository": "https://github.com/carbon-design-system/icons-motion",
            "revision": "7e0a7459eb7d8f96fae0649e1450b65af7f75a2b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/carbon-icons-motion-search-locate-icon/search-locate-motion.tsx",
                "upstreamPath": "src/components/Operations/SearchLocateMotion/SearchLocateMotion.js",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Operations/SearchLocateMotion/SearchLocateMotion.js",
                "upstreamSha256": "sha256:7508c017d80885f1d774675f62a03fed08534aaeedba44843c241e17e9cd6a3d",
                "contentSha256": "sha256:0b562c15132429776d93c981601d731ffb1c7e55240756ece97fb947acb0076b",
                "changes": [
                  "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop.",
                  "Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers."
                ]
              },
              {
                "shippedPath": "components/carbon-icons-motion-search-locate-icon/search-locate-motion.module.css",
                "upstreamPath": "src/components/Operations/SearchLocateMotion/search-locate--motion.module.scss",
                "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/src/components/Operations/SearchLocateMotion/search-locate--motion.module.scss",
                "upstreamSha256": "sha256:ae25b92a74c650c158c4086b3b651481040c6bebefdc349ff54970990a95d16f",
                "contentSha256": "sha256:ca3c6ddd7878add404220ab49ddcade93e45628af41d1624d5e4879db5cd9427",
                "changes": [
                  "Converted the nested SCSS module to an equivalent flat CSS module.",
                  "Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling."
                ]
              }
            ]
          },
          "provenance": {
            "geometry": "Inline SVG geometry copied from the official Carbon Icons Motion component blob.",
            "carbonBasis": {
              "statement": "The upstream README says the package mirrors Carbon icons but is not tied to a specific Carbon version.",
              "upstreamPath": "README.md",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/README.md",
              "sha256": "sha256:3f0e1bd45dc58a966edb3f7ba76d1b0d9231ade1a7cae7b8d7ee36ca12130069"
            }
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "src/components/Operations/SearchLocateMotion/SearchLocateMotion.js, src/components/Operations/SearchLocateMotion/search-locate--motion.module.scss, and their inline Carbon-derived SVG geometry",
            "copyright": [
              "Copyright 2015 IBM Corp."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/carbon-design-system/icons-motion/blob/7e0a7459eb7d8f96fae0649e1450b65af7f75a2b/LICENSE",
              "sha256": "sha256:c3c4a0200172f8e23c0ea6a0f2c105ac960721c542b63d5de5e9767d195c2e73",
              "localPath": "registry/sources/carbon-icons-motion/LICENSE"
            },
            "notices": [
              "registry/sources/carbon-icons-motion/NOTICE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/carbon-icons-motion/NOTICE",
                "sha256": "sha256:95ab19a8acd4553d339b6b0fcfd7c9c93329ceccfa6713364f7a9e5ed42ead46",
                "changes": [
                  "Created locally because the pinned upstream commit contains no NOTICE file; records attribution and Apache modification marking."
                ]
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/carbon-icons-motion-search-locate-icon/search-locate-motion.tsx",
              "change": "Converted the upstream JavaScript component to strict TSX, removed its mirrored effect/ref wrapper, and renamed isAnimating to the controlled isAnimated prop. Forwarded SVG props, preserved the upstream inline geometry, and made the title and inherited color accessible to consumers.",
              "reason": "Expose a strict, controlled, portable React SVG component without changing its source geometry."
            },
            {
              "shippedPath": "components/carbon-icons-motion-search-locate-icon/search-locate-motion.module.css",
              "change": "Converted the nested SCSS module to an equivalent flat CSS module. Compacted the source-authored active keyframes into one non-looping 280 ms interaction and added prefers-reduced-motion handling.",
              "reason": "Remove the Sass requirement, prevent looping/autoplay, meet the UI timing budget, and honor reduced motion."
            }
          ],
          "dedupe": {
            "family": "carbon-search-lens-lifts-as-result-line-contracts",
            "sourceHash": "sha256:abaa4a9a0a1c712bc5344fb3a8af9d4c3196f9034ab275851339121c7b208a65",
            "contentHash": "sha256:354b9840ad96a95d2beb6a0716dbd59056bf0a066613516a89f3b73f72fffb86",
            "structureHash": "sha256:6593e6b5fccbee681fbf37bf2d85f668b7b8cd39a19bbb094d4c6cf1fdc73a65",
            "geometryHash": "sha256:14e2a7ef51e0b6c19305d2837fa4f3d25c3a86c471d16ed96c4b1e8b925a74e3",
            "motionHash": "sha256:f0650010e3cf0fb2b77626e7ac21385490149edfd9b6b01f828d82819e4a3450",
            "rasterHash": "sha256:d45dbfcd09a53299fc2a0e263b5f2b14808536356d4f95c2ae6f4619c0a87de2",
            "glyph": {
              "inventoryName": "search-locate",
              "canonicalName": "search-locate",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": "Generic Carbon-system glyph; no product logo, company mark, or remote asset retained."
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "chamaac-astral-flow",
      "type": "registry:component",
      "title": "Astral Flow",
      "description": "Renders a layered procedural flow field with three configurable colors and bounded WebGL output.",
      "author": "Amarnath",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "clsx@2.1.1",
        "tailwind-merge@3.4.0",
        "three@0.180.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/astral-flow.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/chamaac-ui/astral-flow.tsx"
        },
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/chamaac-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "flow-field",
            "procedural",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/chamaac-astral-flow.tsx",
          "source": {
            "project": "Chamaac UI",
            "repository": "https://github.com/amarnathdhumal/chamaacui",
            "revision": "345d79b1b1d4c89c2394a5c23ac12a9861c383c2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/chamaac-ui/astral-flow.tsx",
                "upstreamPath": "registry/chamaac/astral-flow/astral-flow.tsx",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/registry/chamaac/astral-flow/astral-flow.tsx",
                "upstreamSha256": "sha256:ceb27618339251753a52f3229355af588fcbde0eb1e1e003f0e10eaae6ae4f96",
                "contentSha256": "sha256:4c623714be7f990f5321abc1aebfd8cbd168d39c6a6b6dfcf94e38c9fe91724b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local.",
                  "Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden.",
                  "Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior."
                ]
              },
              {
                "shippedPath": "components/chamaac-ui/lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/lib/utils.ts",
                "upstreamSha256": "sha256:ede53dcdf44c29c9d6f9583e775c2f2d7b8d5205679a6af38bb0e0475c23296f",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/chamaac/astral-flow/astral-flow.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Amarnath"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/LICENSE",
              "sha256": "sha256:d6ba4df1c07c99e1d38dc59ddb858fcb12cbe79edeef48d249c23a60843f6dc9",
              "localPath": "registry/sources/chamaac-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/chamaac-ui/astral-flow.tsx",
              "change": "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local. Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden. Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior.",
              "reason": "Keep the copied component installable as a closed source-local registry item while bounding GPU work and respecting reduced-motion preferences."
            },
            {
              "shippedPath": "components/chamaac-ui/lib/utils.ts",
              "change": "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure.",
              "reason": "Avoid pulling site-only Next.js metadata and an unrelated SEO helper into standalone shader components."
            }
          ],
          "dedupe": {
            "family": "procedural-astral-flow-field",
            "sourceHash": "sha256:dd5725e4e28be3cd46cf12d002824a8ba43e9bdefcdc7db7a78107dd2fa9889b",
            "contentHash": "sha256:74ceba1b3feb978819f86262b7d4357fabe8fa362dd2f1f8f082fdd99884a655",
            "structureHash": "sha256:6b9090fc56d37a3f26b235395183488e1fc52dc16563e1c21619302430c3452a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "chamaac-electric-mist",
      "type": "registry:component",
      "title": "Electric Mist",
      "description": "Renders a configurable electric mist shader with adjustable detail, distortion, and brightness.",
      "author": "Amarnath",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "clsx@2.1.1",
        "tailwind-merge@3.4.0",
        "three@0.180.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/electric-mist.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/chamaac-ui/electric-mist.tsx"
        },
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/chamaac-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "mist",
            "procedural",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/chamaac-electric-mist.tsx",
          "source": {
            "project": "Chamaac UI",
            "repository": "https://github.com/amarnathdhumal/chamaacui",
            "revision": "345d79b1b1d4c89c2394a5c23ac12a9861c383c2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/chamaac-ui/electric-mist.tsx",
                "upstreamPath": "registry/chamaac/electric-mist/electric-mist.tsx",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/registry/chamaac/electric-mist/electric-mist.tsx",
                "upstreamSha256": "sha256:bd8f8b9dfe01bd1c04da2b3739422529d5e6ff7f72eec275d69510d614ae36b5",
                "contentSha256": "sha256:9db07a41237255cc3432dc2f218153c5e4046ee17ba3cdeec401174f10f8b747",
                "changes": [
                  "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local.",
                  "Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden.",
                  "Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior."
                ]
              },
              {
                "shippedPath": "components/chamaac-ui/lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/lib/utils.ts",
                "upstreamSha256": "sha256:ede53dcdf44c29c9d6f9583e775c2f2d7b8d5205679a6af38bb0e0475c23296f",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/chamaac/electric-mist/electric-mist.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Amarnath"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/LICENSE",
              "sha256": "sha256:d6ba4df1c07c99e1d38dc59ddb858fcb12cbe79edeef48d249c23a60843f6dc9",
              "localPath": "registry/sources/chamaac-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/chamaac-ui/electric-mist.tsx",
              "change": "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local. Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden. Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior.",
              "reason": "Keep the copied component installable as a closed source-local registry item while bounding GPU work and respecting reduced-motion preferences."
            },
            {
              "shippedPath": "components/chamaac-ui/lib/utils.ts",
              "change": "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure.",
              "reason": "Avoid pulling site-only Next.js metadata and an unrelated SEO helper into standalone shader components."
            }
          ],
          "dedupe": {
            "family": "procedural-electric-mist-field",
            "sourceHash": "sha256:15c451b67edab435605915bf4765500c33de2e4f6a416de80f935839698035c4",
            "contentHash": "sha256:46ba21527032b02cf284ee998bf564f3f277ac0590e54b2f60f1d3cdb917075f",
            "structureHash": "sha256:db582afbef6297a638725b5fdbe80e6fce46254cf5461557f98845442b5d8f95"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "chamaac-grid-bloom",
      "type": "registry:component",
      "title": "Grid Bloom",
      "description": "Renders a pointer-reactive procedural grid with bloom, flow, distortion, and repulsion controls.",
      "author": "Amarnath",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "clsx@2.1.1",
        "tailwind-merge@3.4.0",
        "three@0.180.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/grid-bloom.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/chamaac-ui/grid-bloom.tsx"
        },
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/chamaac-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "grid",
            "pointer",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/chamaac-grid-bloom.tsx",
          "source": {
            "project": "Chamaac UI",
            "repository": "https://github.com/amarnathdhumal/chamaacui",
            "revision": "345d79b1b1d4c89c2394a5c23ac12a9861c383c2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/chamaac-ui/grid-bloom.tsx",
                "upstreamPath": "registry/chamaac/grid-bloom/grid-bloom.tsx",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/registry/chamaac/grid-bloom/grid-bloom.tsx",
                "upstreamSha256": "sha256:7d543f648a1160058927759be2e20881df7f90cb9521f74281bc0192c32fc7f8",
                "contentSha256": "sha256:533f18f12a199d44b6c79497190d2f6f64c252912f4066f7fbf0c74d4890af6b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local.",
                  "Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden.",
                  "Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior.",
                  "Capped the device-pixel ratio at 1.5 and disabled pointer-driven motion when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "components/chamaac-ui/lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/lib/utils.ts",
                "upstreamSha256": "sha256:ede53dcdf44c29c9d6f9583e775c2f2d7b8d5205679a6af38bb0e0475c23296f",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/chamaac/grid-bloom/grid-bloom.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Amarnath"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/LICENSE",
              "sha256": "sha256:d6ba4df1c07c99e1d38dc59ddb858fcb12cbe79edeef48d249c23a60843f6dc9",
              "localPath": "registry/sources/chamaac-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/chamaac-ui/grid-bloom.tsx",
              "change": "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local. Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden. Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior. Capped the device-pixel ratio at 1.5 and disabled pointer-driven motion when reduced motion is requested.",
              "reason": "Keep the copied component installable as a closed source-local registry item while bounding GPU work and respecting reduced-motion preferences."
            },
            {
              "shippedPath": "components/chamaac-ui/lib/utils.ts",
              "change": "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure.",
              "reason": "Avoid pulling site-only Next.js metadata and an unrelated SEO helper into standalone shader components."
            }
          ],
          "dedupe": {
            "family": "pointer-reactive-grid-bloom",
            "sourceHash": "sha256:8a623c1421dcab3583b04bfe0e1841fc8d6966e3d8948badddb74f405728d02e",
            "contentHash": "sha256:26f8cadd3ea01269c87cea06f65acd949f62ff6c1de86847edede1413d92404f",
            "structureHash": "sha256:6ce7e2582394a41f77f2c3b45e3902becb5b1f3ac17fab16eb58c46bdc06bbf4"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "chamaac-light-speed",
      "type": "registry:component",
      "title": "Light Speed",
      "description": "Renders an instanced light-streak tunnel with configurable speed, radius, color, and bloom.",
      "author": "Amarnath",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "@react-three/postprocessing@3.0.4",
        "clsx@2.1.1",
        "tailwind-merge@3.4.0",
        "three@0.180.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/light-speed.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/chamaac-ui/light-speed.tsx"
        },
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/chamaac-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "particles",
            "tunnel",
            "bloom",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/chamaac-light-speed.tsx",
          "source": {
            "project": "Chamaac UI",
            "repository": "https://github.com/amarnathdhumal/chamaacui",
            "revision": "345d79b1b1d4c89c2394a5c23ac12a9861c383c2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/chamaac-ui/light-speed.tsx",
                "upstreamPath": "registry/chamaac/light-speed/light-speed.tsx",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/registry/chamaac/light-speed/light-speed.tsx",
                "upstreamSha256": "sha256:285c08e3566a9ff5ef50a14fd2eaf292e32a2a95a6b6e1be28640f84218c3010",
                "contentSha256": "sha256:ea8eaa1cd39cb4877c18ff01af9708fe61d93e3a6055636ff9c804750f062de2",
                "changes": [
                  "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local.",
                  "Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden.",
                  "Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior.",
                  "Capped the device-pixel ratio at 1.5 and clamped the public particle count to 1-4000."
                ]
              },
              {
                "shippedPath": "components/chamaac-ui/lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/lib/utils.ts",
                "upstreamSha256": "sha256:ede53dcdf44c29c9d6f9583e775c2f2d7b8d5205679a6af38bb0e0475c23296f",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/chamaac/light-speed/light-speed.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Amarnath"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/LICENSE",
              "sha256": "sha256:d6ba4df1c07c99e1d38dc59ddb858fcb12cbe79edeef48d249c23a60843f6dc9",
              "localPath": "registry/sources/chamaac-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/chamaac-ui/light-speed.tsx",
              "change": "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local. Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden. Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior. Capped the device-pixel ratio at 1.5 and clamped the public particle count to 1-4000.",
              "reason": "Keep the copied component installable as a closed source-local registry item while bounding GPU work and respecting reduced-motion preferences."
            },
            {
              "shippedPath": "components/chamaac-ui/lib/utils.ts",
              "change": "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure.",
              "reason": "Avoid pulling site-only Next.js metadata and an unrelated SEO helper into standalone shader components."
            }
          ],
          "dedupe": {
            "family": "instanced-light-speed-tunnel",
            "sourceHash": "sha256:782b4e07f22a6ac513085ea2210e3790ba04b9ded0c6eefc23ae30485d9e4a1d",
            "contentHash": "sha256:dce7c32f6f05ac96f479172504b6d735e7ee0c7ec9792ce0d75bca121b6acec6",
            "structureHash": "sha256:5f332e3b1ea429a5dbf8d577acc079f708308f1c10fcda2b4482b03add5ac042"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "chamaac-synthesis",
      "type": "registry:component",
      "title": "Synthesis",
      "description": "Renders a configurable three-color procedural field with flow, distortion, glow, and contrast controls.",
      "author": "Amarnath",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "clsx@2.1.1",
        "tailwind-merge@3.4.0",
        "three@0.180.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/synthesis.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/chamaac-ui/synthesis.tsx"
        },
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/chamaac-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "color-field",
            "procedural",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/chamaac-synthesis.tsx",
          "source": {
            "project": "Chamaac UI",
            "repository": "https://github.com/amarnathdhumal/chamaacui",
            "revision": "345d79b1b1d4c89c2394a5c23ac12a9861c383c2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/chamaac-ui/synthesis.tsx",
                "upstreamPath": "registry/chamaac/synthesis/synthesis.tsx",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/registry/chamaac/synthesis/synthesis.tsx",
                "upstreamSha256": "sha256:0875844f520f805c38ca3b48a97c690d16dc98a910a8ec1ee367de4592831075",
                "contentSha256": "sha256:f10d10c0dec6b3daed04eb64253470803f5872c8778dbe15ec07cd104a61067b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local.",
                  "Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden.",
                  "Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior."
                ]
              },
              {
                "shippedPath": "components/chamaac-ui/lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/lib/utils.ts",
                "upstreamSha256": "sha256:ede53dcdf44c29c9d6f9583e775c2f2d7b8d5205679a6af38bb0e0475c23296f",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/chamaac/synthesis/synthesis.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Amarnath"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/LICENSE",
              "sha256": "sha256:d6ba4df1c07c99e1d38dc59ddb858fcb12cbe79edeef48d249c23a60843f6dc9",
              "localPath": "registry/sources/chamaac-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/chamaac-ui/synthesis.tsx",
              "change": "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local. Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden. Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior.",
              "reason": "Keep the copied component installable as a closed source-local registry item while bounding GPU work and respecting reduced-motion preferences."
            },
            {
              "shippedPath": "components/chamaac-ui/lib/utils.ts",
              "change": "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure.",
              "reason": "Avoid pulling site-only Next.js metadata and an unrelated SEO helper into standalone shader components."
            }
          ],
          "dedupe": {
            "family": "procedural-synthesis-flow-field",
            "sourceHash": "sha256:1491067bd8102ff3e6c14055a65453d14dc9d9e635847b078eacc5f06e8fa002",
            "contentHash": "sha256:c935ff364166a19a51d8eee3956cf8c3e04df36b2de9ca5a9d0dc658ad48765e",
            "structureHash": "sha256:e8c6cc42f4e128ef1a7e21ad8d626aeade228756f9dd9e2e5c26ef6a8747e887"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "chamaac-waves",
      "type": "registry:component",
      "title": "Waves",
      "description": "Renders a deforming three-color noise surface with configurable amplitude and directional speed.",
      "author": "Amarnath",
      "dependencies": [
        "@react-three/drei@10.7.6",
        "@react-three/fiber@9.4.0",
        "clsx@2.1.1",
        "tailwind-merge@3.4.0",
        "three@0.180.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/waves.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/chamaac-ui/waves.tsx"
        },
        {
          "path": "registry/sources/chamaac-ui/components/chamaac-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/chamaac-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "waves",
            "surface",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/chamaac-waves.tsx",
          "source": {
            "project": "Chamaac UI",
            "repository": "https://github.com/amarnathdhumal/chamaacui",
            "revision": "345d79b1b1d4c89c2394a5c23ac12a9861c383c2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/chamaac-ui/waves.tsx",
                "upstreamPath": "registry/chamaac/waves/waves.tsx",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/registry/chamaac/waves/waves.tsx",
                "upstreamSha256": "sha256:f8bdaad012dcdd12d1ba945ac0518851460d21898dd5b70edfb24af56c17e242",
                "contentSha256": "sha256:e9a7be2a16c95a364d22500be1fc962f46f3bdeb346f7e7dcb640a520fa4d0d7",
                "changes": [
                  "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local.",
                  "Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden.",
                  "Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior.",
                  "Capped the device-pixel ratio at 1.5."
                ]
              },
              {
                "shippedPath": "components/chamaac-ui/lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/lib/utils.ts",
                "upstreamSha256": "sha256:ede53dcdf44c29c9d6f9583e775c2f2d7b8d5205679a6af38bb0e0475c23296f",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/chamaac/waves/waves.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Amarnath"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/amarnathdhumal/chamaacui/blob/345d79b1b1d4c89c2394a5c23ac12a9861c383c2/LICENSE",
              "sha256": "sha256:d6ba4df1c07c99e1d38dc59ddb858fcb12cbe79edeef48d249c23a60843f6dc9",
              "localPath": "registry/sources/chamaac-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/chamaac-ui/waves.tsx",
              "change": "Changed the cn import from @/lib/utils to ./lib/utils so the copied closure remains source-local. Added a native prefers-reduced-motion listener, froze the React Three Fiber frame loop when requested, and marked the decorative output aria-hidden. Normalized line endings and removed upstream trailing whitespace without changing GLSL or React behavior. Capped the device-pixel ratio at 1.5.",
              "reason": "Keep the copied component installable as a closed source-local registry item while bounding GPU work and respecting reduced-motion preferences."
            },
            {
              "shippedPath": "components/chamaac-ui/lib/utils.ts",
              "change": "Removed the unrelated Next.js metadata import and constructMetadata helper so the copied cn utility has only its actual component closure.",
              "reason": "Avoid pulling site-only Next.js metadata and an unrelated SEO helper into standalone shader components."
            }
          ],
          "dedupe": {
            "family": "deformed-noise-wave-surface",
            "sourceHash": "sha256:cf75aa891026f94dce40b2c5708f81d7445f8b47d304b26c506380327b263c26",
            "contentHash": "sha256:3f28b6182b4a7fa4bdc86053638a34880b4cfb9278370fb2354b5efc6b0e8590",
            "structureHash": "sha256:7f339997d2e14af320fb85cb06aef1a590640dced9cd9a8d45b787653188069a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-bouncy-accordion",
      "type": "registry:component",
      "title": "Bouncy Accordion",
      "description": "Expands one accessible row while neighboring rows join and separate with connected spring motion.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "framer-motion@12.42.2",
        "lucide-react@0.475.0",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/bouncy-accordion.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/bouncy-accordion.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/ease.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/ease.ts"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "accordion",
            "disclosure",
            "spring",
            "controlled"
          ],
          "renderer": "dom",
          "preview": "previews/componentry-bouncy-accordion.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/bouncy-accordion.tsx",
                "upstreamPath": "packages/ui/src/components/bouncy-accordion.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/bouncy-accordion.tsx",
                "upstreamSha256": "sha256:0218bf2b4509e2d0689e537b6659172aa5e5f2cb6b095c693fb6c8ce4cd4b3f5",
                "contentSha256": "sha256:acff79a967b207068d28713a4194c7722ac6fbad138661eaeb2a1ef5dd6f8f9b",
                "changes": [
                  "Repointed copied helpers, added a visible focus ring, made collapsed content inert, and repaired exact-optional typing for controlled inputs and optional class maps."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/ease.ts",
                "upstreamPath": "packages/ui/src/lib/ease.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/ease.ts",
                "upstreamSha256": "sha256:c71fc921935bb74af7822a58c2499630b41ef853dce32399442bb82554329b82",
                "contentSha256": "sha256:fd1359ec9eb89cf6829e28a2a408080acc578a20facaa5c61a79aca38df36113",
                "changes": [
                  "Kept only the easing token used by the retained accordion component."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/bouncy-accordion.tsx, packages/ui/src/lib/ease.ts, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/bouncy-accordion.tsx",
              "change": "Repointed copied helpers, added a visible focus ring, made collapsed content inert, and repaired exact-optional typing for controlled inputs and optional class maps.",
              "reason": "Keep the upstream connected-row motion while preventing hidden controls from receiving focus."
            },
            {
              "shippedPath": "components/componentry/lib/ease.ts",
              "change": "Kept only the easing token used by the retained accordion component.",
              "reason": "Keep the copied dependency closure limited to the token this component actually imports."
            }
          ],
          "dedupe": {
            "family": "connected-motion-accordion",
            "sourceHash": "sha256:da424312bb13704843bc2548c62cb1a00ea950dfcaa444f1c201f5a858f35cb3",
            "contentHash": "sha256:9d612c8b87b6d56b8a5f7c3603ddb64792f32691ec61c98a99dc3603a4d8eb78",
            "structureHash": "sha256:7d0203e78389aafaacc8f2a09a76b3a13f8339d8716b199942c0888f3f8a1a21"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-circuit-board",
      "type": "registry:component",
      "title": "Circuit Board",
      "description": "Draws caller-defined nodes and orthogonal connections with optional directional signal pulses.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "framer-motion@12.42.2",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/circuit-board.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/circuit-board.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "circuit",
            "network",
            "signals",
            "svg"
          ],
          "renderer": "svg",
          "preview": "previews/componentry-circuit-board.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/circuit-board.tsx",
                "upstreamPath": "packages/ui/src/components/circuit-board.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/circuit-board.tsx",
                "upstreamSha256": "sha256:54df38cef57658a6f467618f3f6a73b30b99ec4620f09424ce8f46c972847026",
                "contentSha256": "sha256:efed517c2e38117080e939b7a42ba44297a04b97e0c099c501eb39a8bf019212",
                "changes": [
                  "Repointed the utility import; added collision-free SVG identifiers, an accessible label, system-aware theme detection, viewport and tab pausing, and reduced-motion states; removed fixed example patterns and unrelated auxiliary exports."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/circuit-board.tsx, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/circuit-board.tsx",
              "change": "Repointed the utility import; added collision-free SVG identifiers, an accessible label, system-aware theme detection, viewport and tab pausing, and reduced-motion states; removed fixed example patterns and unrelated auxiliary exports.",
              "reason": "Ship only the reusable caller-driven network visual without ID collisions, perpetual motion for opted-out users, or bundled demo compositions."
            }
          ],
          "dedupe": {
            "family": "animated-circuit-network",
            "sourceHash": "sha256:36128760057aaf28ead7029869921c50298fc8060fd91ada11b15c86a02cfc1a",
            "contentHash": "sha256:328e1d3e478946474394eb9a2081791b4fd82e5a4b95716666162b6534f667a4",
            "structureHash": "sha256:6ee045fa774cd012103e457fea142a9b4f1e7d610842a02ee33c45bb098b4562"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-closing-plasma",
      "type": "registry:component",
      "title": "Closing Plasma",
      "description": "Renders an interactive WebGL plasma field with caller-controlled palettes, grain, turbulence, and theme mode.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/closing-plasma.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/closing-plasma.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "plasma",
            "shader",
            "pointer",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/componentry-closing-plasma.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/closing-plasma.tsx",
                "upstreamPath": "packages/ui/src/components/closing-plasma.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/closing-plasma.tsx",
                "upstreamSha256": "sha256:1e2f372178293bbb91a2bf5a25530e218c143738219e6313bd27a8d994fcde3f",
                "contentSha256": "sha256:c372975cf0270555d29dc15b134dcf1809168f6018d676bb2958b993b265ae42",
                "changes": [
                  "Repointed the utility import; repaired theme-mode behavior and failed-setup cleanup; guarded buffer creation; clamped shader controls, DPR, and render size; paused outside the viewport and hidden tabs; added a static reduced-motion frame."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/closing-plasma.tsx, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/closing-plasma.tsx",
              "change": "Repointed the utility import; repaired theme-mode behavior and failed-setup cleanup; guarded buffer creation; clamped shader controls, DPR, and render size; paused outside the viewport and hidden tabs; added a static reduced-motion frame.",
              "reason": "Preserve the shader while bounding GPU work and making its documented theme and lifecycle behavior reliable."
            }
          ],
          "dedupe": {
            "family": "interactive-plasma-shader",
            "sourceHash": "sha256:69601ed7504e45e27573cf35633b0c02630dbf4ddce8806dad0ac96d89bdb6b4",
            "contentHash": "sha256:db8e5d05b9025d5b241381ad9f0b576832d24dd27ee2b8d93c709122d7c8c79f",
            "structureHash": "sha256:658cb30b69514b56eb5f0e174b78e09cbe78a00fe61769e9c9b6a0e428a9fda7"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-dithered-image",
      "type": "registry:component",
      "title": "Dithered Image Particles",
      "description": "Converts a caller-provided image into an error-diffused particle field with pointer repulsion and press ripples.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/dithered-logo.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/dithered-logo.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "image",
            "dither",
            "particles",
            "canvas"
          ],
          "renderer": "canvas",
          "preview": "previews/componentry-dithered-image.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/dithered-logo.tsx",
                "upstreamPath": "packages/ui/src/components/dithered-logo.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/dithered-logo.tsx",
                "upstreamSha256": "sha256:f5b574f6dbc260440b1276396b8ac9728745db7d6f5b9704bed1123cda7d3d08",
                "contentSha256": "sha256:1c8a765d4f09a28ade25262bfc375db4f705a1152326d43d9e34b8821a6c2252",
                "changes": [
                  "Repointed the utility import; added stale-load protection, accessible naming, grid, ripple, DPR, and render-size caps, viewport and tab pausing, and an origin-aligned reduced-motion frame."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/dithered-logo.tsx, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/dithered-logo.tsx",
              "change": "Repointed the utility import; added stale-load protection, accessible naming, grid, ripple, DPR, and render-size caps, viewport and tab pausing, and an origin-aligned reduced-motion frame.",
              "reason": "Retain the upstream image-to-particle effect without stale async writes or unbounded offscreen canvas work."
            }
          ],
          "dedupe": {
            "family": "dithered-image-particle-field",
            "sourceHash": "sha256:88d88b13312dc8866ad2789fccdcb2b39702e37c0d72f2ef28ec9d20b2ba9786",
            "contentHash": "sha256:ac5c94c7d8ce999c6ea6a5513c68f7faf93229b3bd53f65fd0d7bf0cc66cd922",
            "structureHash": "sha256:c01b0a1bc66309044d59ae6c4510ec57ac404093aacccfcf368328f17bf2c159"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-letter-cascade",
      "type": "registry:component",
      "title": "Letter Cascade",
      "description": "Flips a text label through staggered front and echo faces on hover, focus, or keyboard activation.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "framer-motion@12.42.2",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/letter-cascade.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/letter-cascade.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "letters",
            "flip",
            "stagger"
          ],
          "renderer": "dom",
          "preview": "previews/componentry-letter-cascade.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/letter-cascade.tsx",
                "upstreamPath": "packages/ui/src/components/letter-cascade.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/letter-cascade.tsx",
                "upstreamSha256": "sha256:39dec1b20a937f5bee41c2c09703c3644bf6155f44178e23c23149643e86d9c7",
                "contentSha256": "sha256:40a42a25c0b853f1f980a4ac72a7ec4f496b6601d224941bf3aa49e35c02d5de",
                "changes": [
                  "Repointed the utility import; added click, touch, focus, and keyboard activation, a reduced-motion path, code-point splitting, and hidden duplicate visual glyphs."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/letter-cascade.tsx, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/letter-cascade.tsx",
              "change": "Repointed the utility import; added click, touch, focus, and keyboard activation, a reduced-motion path, code-point splitting, and hidden duplicate visual glyphs.",
              "reason": "Keep the upstream cascade available beyond hover while exposing the label only once to assistive technology."
            }
          ],
          "dedupe": {
            "family": "flipping-letter-cascade",
            "sourceHash": "sha256:24ae71dbdb43eb24ce6da82c35a6eef183986043e90cfbf222f463768f8ee6da",
            "contentHash": "sha256:47585832380b450a3029d590fa7c77953ce15447b20d889ca271987dc2666a48",
            "structureHash": "sha256:67af5a5ace38e0e93cc243eaee2f681852026aa2509b8c9d0f616f56c807ec5a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-particle-typography",
      "type": "registry:component",
      "title": "Particle Typography",
      "description": "Samples caller text into a canvas particle field that disperses around pointer or touch input.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/cursor-driven-particle-typography.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/cursor-driven-particle-typography.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "particles",
            "pointer",
            "canvas"
          ],
          "renderer": "canvas",
          "preview": "previews/componentry-particle-typography.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/cursor-driven-particle-typography.tsx",
                "upstreamPath": "packages/ui/src/components/cursor-driven-particle-typography.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/cursor-driven-particle-typography.tsx",
                "upstreamSha256": "sha256:9c275035059bb30e569a38c4761c31089bc2bf6f7fae9471f1ceb9acb9289f2e",
                "contentSha256": "sha256:f509b65e33c8e9c3b986460049ecade5789c10472b90d5b31463bca045c9db5c",
                "changes": [
                  "Repointed the utility import; fixed zero-distance physics and listener cleanup; added pointer parity, accessible naming, particle and DPR caps, visibility pausing, and an origin-aligned reduced-motion frame."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/cursor-driven-particle-typography.tsx, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/cursor-driven-particle-typography.tsx",
              "change": "Repointed the utility import; fixed zero-distance physics and listener cleanup; added pointer parity, accessible naming, particle and DPR caps, visibility pausing, and an origin-aligned reduced-motion frame.",
              "reason": "Keep the interactive sampled typography usable on touch and bounded on dense or high-DPR displays."
            }
          ],
          "dedupe": {
            "family": "cursor-particle-typography",
            "sourceHash": "sha256:dfdc165a3113cbffff1dd17a07f8f231353732fca94acbc925539da9eb01df15",
            "contentHash": "sha256:9055646d4b13bdd0d0d463d8bc9f976d55f286cb5fc368904c863525c434bdde",
            "structureHash": "sha256:95c12e35d6a84f6887456ba40bd46ce1b94589fbf3a843d35f1cbf7c4f7451c6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-pixel-canvas",
      "type": "registry:component",
      "title": "Pixel Canvas",
      "description": "Lights a canvas pixel grid around pointer or touch input with configurable trail and glow behavior.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/pixel-canvas.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/pixel-canvas.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "pixels",
            "trail",
            "pointer",
            "canvas"
          ],
          "renderer": "canvas",
          "preview": "previews/componentry-pixel-canvas.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/pixel-canvas.tsx",
                "upstreamPath": "packages/ui/src/components/pixel-canvas.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/pixel-canvas.tsx",
                "upstreamSha256": "sha256:198d9dd425269334c323b7de3b13c38c1880a43ab2ea1cf04c8989491cbf0b07",
                "contentSha256": "sha256:487b2720e67cdc8b585f5e960ec1aaa9bf4b57f3705540eb9587935f8f043a19",
                "changes": [
                  "Repointed the utility import; replaced mouse and touch listeners with pointer events; fixed transform accumulation; bounded pixel density, decay, DPR, and render size; paused while hidden or offscreen; added accessible naming and a static reduced-motion frame."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/pixel-canvas.tsx, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/pixel-canvas.tsx",
              "change": "Repointed the utility import; replaced mouse and touch listeners with pointer events; fixed transform accumulation; bounded pixel density, decay, DPR, and render size; paused while hidden or offscreen; added accessible naming and a static reduced-motion frame.",
              "reason": "Keep the interactive pixel field responsive and bounded across touch, resize, high-DPR, and reduced-motion conditions."
            }
          ],
          "dedupe": {
            "family": "pointer-pixel-trail-canvas",
            "sourceHash": "sha256:7f2b265dfb80c5c4857bf33fefbfe2abd70b521ef61ab247a212472eb369553f",
            "contentHash": "sha256:2107b7347b787b683ce398c862a7cccc444cc81c4e04f625147221262ec5fc09",
            "structureHash": "sha256:102ab8ec85d0441106039ef0f667146611e1a7e70d490bfccc1030ced658c4e3"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "componentry-ripple-transition",
      "type": "registry:component",
      "title": "Ripple Image Transition",
      "description": "Transitions between caller-provided images with a click-positioned refractive WebGL wave.",
      "author": "Harsh Jadhav",
      "dependencies": [
        "clsx@2.1.1",
        "framer-motion@12.42.2",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/componentry/components/componentry/ripple-transition.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/componentry/ripple-transition.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/webgl-error-boundary.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/webgl-error-boundary.tsx"
        },
        {
          "path": "registry/sources/componentry/components/componentry/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/componentry/lib/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "image",
            "transition",
            "ripple",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/componentry-ripple-transition.tsx",
          "source": {
            "project": "Componentry",
            "repository": "https://github.com/harshjdhv/componentry",
            "revision": "0c90c9b9e624c483d434cdb85df084fd399f24c3",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/componentry/ripple-transition.tsx",
                "upstreamPath": "packages/ui/src/components/ripple-transition.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/ripple-transition.tsx",
                "upstreamSha256": "sha256:aa49cdcfefc5ca4b4e29ffb34333bd719a21d25262cd5e4b17736daad943a4f4",
                "contentSha256": "sha256:221f3ab06ac5a24927423d500711fa3e28ad50ce21e3a6a9048662d47e45c1f6",
                "changes": [
                  "Repointed copied dependencies; removed remote demo defaults and require caller images; bounded image count, duration, autoplay interval, DPR, and render size; added setup fallback, buffer validation, viewport and tab pausing, reduced-motion settling, inactive autoplay gating, and disabled-state focus behavior."
                ]
              },
              {
                "shippedPath": "components/componentry/webgl-error-boundary.tsx",
                "upstreamPath": "packages/ui/src/components/webgl-error-boundary.tsx",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/components/webgl-error-boundary.tsx",
                "upstreamSha256": "sha256:cbef0fba405a01899b5d0ba67584297cbfb4b83fa7ae7bece19c59959998009f",
                "contentSha256": "sha256:4855b2d0f21e179791b3569ab31bd36fb7e7ad2f489a1cabce232dadace28eb4",
                "changes": [
                  "Repointed the utility import to the copied source-local dependency and made optional fallback props explicit for exact-optional TypeScript."
                ]
              },
              {
                "shippedPath": "components/componentry/lib/utils.ts",
                "upstreamPath": "packages/ui/src/lib/utils.ts",
                "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/packages/ui/src/lib/utils.ts",
                "upstreamSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "contentSha256": "sha256:74a147991a119f1c4cdc25a4d9b22713632fa32eb136e55ab6939b006d71b9d6",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/ui/src/components/ripple-transition.tsx, packages/ui/src/components/webgl-error-boundary.tsx, packages/ui/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Harsh Jadhav"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/harshjdhv/componentry/blob/0c90c9b9e624c483d434cdb85df084fd399f24c3/LICENSE",
              "sha256": "sha256:fcd2eb170c2579fd14dae953b7b1103cc85dca0e134e015b7490b850c5b403ab",
              "localPath": "registry/sources/componentry/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/componentry/ripple-transition.tsx",
              "change": "Repointed copied dependencies; removed remote demo defaults and require caller images; bounded image count, duration, autoplay interval, DPR, and render size; added setup fallback, buffer validation, viewport and tab pausing, reduced-motion settling, inactive autoplay gating, and disabled-state focus behavior.",
              "reason": "Ship the reusable transition without third-party runtime assets, unbounded GPU work, or hidden autoplay."
            },
            {
              "shippedPath": "components/componentry/webgl-error-boundary.tsx",
              "change": "Repointed the utility import to the copied source-local dependency and made optional fallback props explicit for exact-optional TypeScript.",
              "reason": "Keep the copied support file installable beside the retained component."
            }
          ],
          "dedupe": {
            "family": "webgl-ripple-image-transition",
            "sourceHash": "sha256:c16218de455d196c9236ca067d3172124f0fa23e6bba2a313b33b7a725891987",
            "contentHash": "sha256:d50386e95293d20051f43d0224a8123c7270760fa8f2d8a841a873bf20a36a8c",
            "structureHash": "sha256:92dceb7b40ca26cd445900edae3674e63a10f06e582c053fa7007bfc56825208"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "cooldown-action",
      "type": "registry:component",
      "title": "Cooldown Action",
      "description": "Runs a caller-provided action, then makes it available again after an accurate bounded cooldown.",
      "author": "Tanmay Sharma & Simran Gupta",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/otp-timer/components/cooldown-action/cooldown-action.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/cooldown-action.tsx"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "cooldown",
            "retry",
            "async-action",
            "countdown"
          ],
          "renderer": "dom",
          "preview": "previews/cooldown-action.tsx",
          "source": {
            "project": "otp-timer",
            "repository": "https://github.com/927tanmay/otp-timer",
            "revision": "9c7a6645cb01c471c25632be8842fdb924dadc49",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/cooldown-action/cooldown-action.tsx",
                "upstreamPath": "src/timer.js",
                "permalink": "https://github.com/927tanmay/otp-timer/blob/9c7a6645cb01c471c25632be8842fdb924dadc49/src/timer.js",
                "upstreamSha256": "sha256:c1508cae19d551b0c794efc3595c9d7c973506f82ac380f6e178c070d376dfc0",
                "contentSha256": "sha256:d75483842029c83255ed0f38dc846e22bfb7e0c27de762a70cd798670563effc",
                "changes": [
                  "Converted the PropTypes class source to TypeScript while preserving its existing duration, label, style, class, options, and resend props under the generic Cooldown Action name.",
                  "Derived the displayed remainder from an end timestamp, paused scheduled updates while the document is hidden, reconciled duration changes, and cleared the timeout and visibility listener on unmount.",
                  "Awaited the real resend callback, prevented duplicate activation, restarted cooldown only after fulfillment, and left failed actions available with a polite one-time status.",
                  "Removed hard-coded font, color, border, and typography defaults; added a non-submitting native button, static pending feedback, explicit non-live countdown, and a minimum touch target."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/timer.js",
            "copyright": [
              "Copyright (c) 2025 Tanmay Sharma & Simran Gupta"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/927tanmay/otp-timer/blob/9c7a6645cb01c471c25632be8842fdb924dadc49/LICENSE",
              "sha256": "sha256:013766619425e378f8223a3821d2252edcdba13b3a27aa2e6023c9e50f7deef3",
              "localPath": "registry/sources/otp-timer/LICENSE"
            },
            "notices": [
              "The pinned upstream LICENSE has trailing spaces on 12 lines; the local evidence copy removes only that trailing whitespace without changing the legal text."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/cooldown-action/cooldown-action.tsx",
              "change": "Mechanically typed and generically named the class, replaced decrementing intervals with an end-time scheduler, added visibility and duration reconciliation, awaited and guarded the real action lifecycle, exposed concise status, and removed visual defaults while retaining existing source props.",
              "reason": "Keep cooldown time correct through tab throttling, make caller success or failure authoritative, preserve native keyboard and form behavior, avoid repeated announcements, honor static reduced-motion behavior, and keep the source-copy API intact."
            }
          ],
          "dedupe": {
            "family": "cooldown-action",
            "sourceHash": "sha256:a21215502ef0d0df251e098409c03beded31cc5d45ac8471585021f3f51b48f2",
            "contentHash": "sha256:07966846ce5d4f6c171748f75626ce226bd0a4a3c43de927bcbc3bb19022d49d",
            "structureHash": "sha256:15c804df28e9f953c8c1f09aa46e618fd6f3e5addf555deed4b91c882ab226e2"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "cult-distorted-glass",
      "type": "registry:component",
      "title": "Distorted Glass",
      "description": "Renders a repeating radial glass texture through an SVG displacement filter.",
      "author": "Cult UI",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/cult-ui/components/cult-distorted-glass/distorted-glass.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/distorted-glass.tsx"
        },
        {
          "path": "registry/sources/cult-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "glass",
            "svg-filter",
            "refraction"
          ],
          "renderer": "svg",
          "preview": "previews/cult-distorted-glass.tsx",
          "source": {
            "project": "Cult UI",
            "repository": "https://github.com/nolly-studio/cult-ui",
            "revision": "a3308bad8496b036adf2fbd29d50b877fb3c5987",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/cult-distorted-glass/distorted-glass.tsx",
                "upstreamPath": "apps/www/registry/default/ui/distorted-glass.tsx",
                "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/apps/www/registry/default/ui/distorted-glass.tsx",
                "upstreamSha256": "sha256:2d271df38baa981ee26960c38c9b27445183a97aa591323b2a1af5b87e0c75c3",
                "contentSha256": "sha256:ac0058d1923340f696af751f2c215c63d249a6d830ccad99c948f1eed841cb3b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied support file resolves both in this batch and at the registry target.",
                  "Marked the filter-definition SVG decorative and removed its exposed title.",
                  "Replaced the Next.js-only style jsx attribute with standard React styling and corrected the radial-position token spacing.",
                  "Removed the xl-only visibility gate and fixed breakpoint widths so the glass renders responsively at every viewport size.",
                  "Generated an instance-scoped SVG filter id with useId, applied the filter inline, and collapsed the definition SVG to prevent cross-instance id and global-selector collisions."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/lib/utils.ts",
                "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/apps/www/lib/utils.ts",
                "upstreamSha256": "sha256:35a351cab62e77fdf0087f9cfce30bb61692302a190da55af40e7267d8eed9be",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": [
                  "Removed the unrelated absoluteUrl helper and retained only the cn support closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/default/ui/distorted-glass.tsx and apps/www/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 Jordan-Gilliam"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/LICENSE.md",
              "sha256": "sha256:d0470e1591e3b0f38e13719d20ef872ee68adbc5fa1a843e0a761ef5bdd5cc63",
              "localPath": "registry/sources/cult-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/cult-distorted-glass/distorted-glass.tsx",
              "change": "Changed the cn import to ../../lib/utils, kept the filter SVG decorative, replaced styled-jsx with standard React styling, removed the xl-only visibility/fixed-width classes, and scoped the SVG filter and styles per instance with useId.",
              "reason": "Resolve the copied helper, retain valid portable CSS and accessibility semantics, render at narrow viewports, and prevent multiple glass instances from sharing a filter id or global style selector."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed the unrelated absoluteUrl export.",
              "reason": "Keep the copied support closure minimal and remove the Cult UI site URL default."
            }
          ],
          "dedupe": {
            "family": "distorted-glass-filter",
            "sourceHash": "sha256:62368cf74c0d669a23d34c6f101b5c529069591168525835dbef4f4d14edb010",
            "contentHash": "sha256:b2a0b3cf91de39fefd357516e67cc26a93835571b1203a12e7c55708221d0ecb",
            "structureHash": "sha256:3ece344d12dc255973596c05bc96e6641875181f24d6165c87543bb12a36892d"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "cult-timer",
      "type": "registry:component",
      "title": "Timer",
      "description": "Tracks and formats elapsed time while exposing compound display controls.",
      "author": "Cult UI",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.544.0",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/cult-ui/components/cult-timer/timer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/timer.tsx"
        },
        {
          "path": "registry/sources/cult-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "timer",
            "elapsed-time",
            "status"
          ],
          "renderer": "dom",
          "preview": "previews/cult-timer.tsx",
          "source": {
            "project": "Cult UI",
            "repository": "https://github.com/nolly-studio/cult-ui",
            "revision": "a3308bad8496b036adf2fbd29d50b877fb3c5987",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/cult-timer/timer.tsx",
                "upstreamPath": "apps/www/registry/default/ui/timer.tsx",
                "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/apps/www/registry/default/ui/timer.tsx",
                "upstreamSha256": "sha256:d02a92a289575a0b7ef322e6ffc7db515d8654e898c047e9cb8a4447e5091127",
                "contentSha256": "sha256:3450d7abcc185d04c93888bedfa2bfed97f29e8ece46c4d8860fee1d545d9acc",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied support file resolves both in this batch and at the registry target.",
                  "Disabled per-frame polite announcements and marked the clock icon decorative.",
                  "Replaced requestAnimationFrame state churn with an adaptive timeout scheduler that updates at 20Hz only for hundredths and once per second for second-only formats.",
                  "Added elapsed-time accumulation, document-visibility pausing, internal Timer-root IntersectionObserver pausing, and a reduced-motion fallback for the spinning icon without changing the public timer API."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/lib/utils.ts",
                "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/apps/www/lib/utils.ts",
                "upstreamSha256": "sha256:35a351cab62e77fdf0087f9cfce30bb61692302a190da55af40e7267d8eed9be",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": [
                  "Removed the unrelated absoluteUrl helper and retained only the cn support closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/default/ui/timer.tsx and apps/www/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 Jordan-Gilliam"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/LICENSE.md",
              "sha256": "sha256:d0470e1591e3b0f38e13719d20ef872ee68adbc5fa1a843e0a761ef5bdd5cc63",
              "localPath": "registry/sources/cult-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/cult-timer/timer.tsx",
              "change": "Changed the cn import to ../../lib/utils, disabled repeated live announcements, marked the icon decorative, replaced requestAnimationFrame updates with an adaptive timeout scheduler, accumulated elapsed time across pauses, paused for document-hidden state and through internal Timer-root visibility observation, and disabled icon spin under reduced motion.",
              "reason": "Resolve the copied helper, keep elapsed time readable without announcement spam, and prevent continuous work when the timer is hidden, offscreen, or does not need subsecond updates."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed the unrelated absoluteUrl export.",
              "reason": "Keep the copied support closure minimal and remove the Cult UI site URL default."
            }
          ],
          "dedupe": {
            "family": "elapsed-time-display",
            "sourceHash": "sha256:23c38ca51cae0caf8569616c40aaf98da1641582bd0e61c909e2fbce0112383a",
            "contentHash": "sha256:22b4e38b4bd55b56f85b83f5ba236d1ac87a1c7db350f13d885f6cb3807bff7b",
            "structureHash": "sha256:eb642e2de4783105ab29c192220cdf050e9500198813316a6dde031589ec09c8"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "cult-vote-tally",
      "type": "registry:component",
      "title": "Vote Tally",
      "description": "Manages controlled or uncontrolled vote counts through composable list controls.",
      "author": "Cult UI",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/cult-ui/components/cult-vote-tally/vote-tally.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vote-tally.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "voting",
            "compound-component",
            "controlled-state"
          ],
          "renderer": "dom",
          "preview": "previews/cult-vote-tally.tsx",
          "source": {
            "project": "Cult UI",
            "repository": "https://github.com/nolly-studio/cult-ui",
            "revision": "a3308bad8496b036adf2fbd29d50b877fb3c5987",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/cult-vote-tally/vote-tally.tsx",
                "upstreamPath": "apps/www/registry/default/ui/vote-tally.tsx",
                "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/apps/www/registry/default/ui/vote-tally.tsx",
                "upstreamSha256": "sha256:08deaa946fdfd9eff345992fe270ef55649e25710f481953dd7c1130abdd16da",
                "contentSha256": "sha256:0d7f3449601ddf974e2c6380e1e772818d3c266240907113ab85685694547b3b",
                "changes": [
                  "Marked the optional sorting wrapper presentational, made default trigger names item-specific, and announced count updates politely.",
                  "Changed the root and item hosts from ul/li to div elements with list/listitem roles so the optional sorting wrapper remains valid HTML and transparent to list semantics."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/default/ui/vote-tally.tsx",
            "copyright": [
              "Copyright (c) 2023 Jordan-Gilliam"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/nolly-studio/cult-ui/blob/a3308bad8496b036adf2fbd29d50b877fb3c5987/LICENSE.md",
              "sha256": "sha256:d0470e1591e3b0f38e13719d20ef872ee68adbc5fa1a843e0a761ef5bdd5cc63",
              "localPath": "registry/sources/cult-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/cult-vote-tally/vote-tally.tsx",
              "change": "Marked the sorting wrapper presentational, made trigger labels item-specific, made count updates polite live regions, and changed the root/item hosts to div elements with list/listitem roles.",
              "reason": "Disambiguate repeated controls, expose vote changes, and preserve valid list semantics when the optional sorting wrapper is used."
            }
          ],
          "dedupe": {
            "family": "vote-tally",
            "sourceHash": "sha256:e80bca41d2be6635d5504b0d01b0ef74e2cd872faceece5185f4d0fdd7e81686",
            "contentHash": "sha256:52ac6bf713cd781a83e0f20434dca8c3e7c902626d9b7de81fd15d2fd80271e9",
            "structureHash": "sha256:5b39424e948b351988eb59789b558fd5243afd97fa2d1c93ace9f42f8b65f838"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-ascii-renderer",
      "type": "registry:component",
      "title": "ASCII Renderer",
      "description": "Projects a React Three Fiber scene through a configurable text renderer.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three-stdlib@2.35.6",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/AsciiRenderer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/AsciiRenderer.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "ascii",
            "renderer",
            "webgl",
            "text"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-ascii-renderer.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/AsciiRenderer.tsx",
                "upstreamPath": "src/core/AsciiRenderer.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/AsciiRenderer.tsx",
                "upstreamSha256": "sha256:400fa7caa51f18640dff73ea4bc0dc3e90cc3fc7258d793ffc3b83a49e24d7f1",
                "contentSha256": "sha256:400fa7caa51f18640dff73ea4bc0dc3e90cc3fc7258d793ffc3b83a49e24d7f1",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/AsciiRenderer.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "webgl-ascii-scene-renderer",
            "sourceHash": "sha256:bfa6ae26845d8349f126276435554c1c87fff6d27ba1f6f9c372960a488c8caa",
            "contentHash": "sha256:bfa6ae26845d8349f126276435554c1c87fff6d27ba1f6f9c372960a488c8caa",
            "structureHash": "sha256:f141ebb2978ef651fed074b79777954900af26c8b577be49d3df4736feb0a1cd"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-contact-shadows",
      "type": "registry:component",
      "title": "Contact Shadows",
      "description": "Renders bounded, blurred contact shadows beneath arbitrary scene content.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three-stdlib@2.35.6",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/ContactShadows.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/ContactShadows.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shadows",
            "lighting",
            "grounding",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-contact-shadows.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/ContactShadows.tsx",
                "upstreamPath": "src/core/ContactShadows.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/ContactShadows.tsx",
                "upstreamSha256": "sha256:ac47cde6a8c655ebc04753868e52b9a6d84e59110e8e6f46d8f67857b622780b",
                "contentSha256": "sha256:7c890be23d6e45bd7f9420c3201911bd9341736002562b55867275d496b75781",
                "changes": [
                  "Typed the internal blur strength parameter as number for strict TypeScript consumers."
                ]
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/ContactShadows.tsx, src/helpers/ts-utils.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/drei/core/ContactShadows.tsx",
              "change": "Typed the internal blur strength parameter as number for strict TypeScript consumers.",
              "reason": "Keep the copied component compatible with strict TypeScript consumers without changing runtime behavior."
            }
          ],
          "dedupe": {
            "family": "blurred-contact-shadow-renderer",
            "sourceHash": "sha256:252e679ac43d67e8d60719595d12102d80a5b4c8f4c521d90a02f2e32dda669e",
            "contentHash": "sha256:cb0dad210d0c3c3b00a797882d4efc50ec0fe2fcf68329623bd625f8578b116a",
            "structureHash": "sha256:7ab572ae5b9e595179d19eb71848fbe15a6527a6af4bbc7d71973bfd64db1abe"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-float",
      "type": "registry:component",
      "title": "Float",
      "description": "Applies configurable floating and rotational motion to arbitrary 3D children.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/Float.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/Float.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "float",
            "motion",
            "transform",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-float.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/Float.tsx",
                "upstreamPath": "src/core/Float.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/Float.tsx",
                "upstreamSha256": "sha256:9cef7b5ec6e0aee408df44dc19bc143991a34d38b1500d927d3b221d4f4f8cd7",
                "contentSha256": "sha256:9cef7b5ec6e0aee408df44dc19bc143991a34d38b1500d927d3b221d4f4f8cd7",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/Float.tsx, src/helpers/ts-utils.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "floating-three-dimensional-transform",
            "sourceHash": "sha256:7078385ffe8e3598bcc3d54c7accdc145f639c84a4332d0726dbd4709201c595",
            "contentHash": "sha256:7078385ffe8e3598bcc3d54c7accdc145f639c84a4332d0726dbd4709201c595",
            "structureHash": "sha256:b6134cf11b75a7d219435f2a26c12e3147a4acc37e593efa80b5752fb677f8c1"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-grid",
      "type": "registry:component",
      "title": "Infinite Grid",
      "description": "Renders a configurable shader grid with camera following and distance fading.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three-mesh-bvh@0.8.3",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/Grid.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/Grid.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/core/shaderMaterial.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/core/shaderMaterial.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/constants.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/constants.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "grid",
            "shader",
            "infinite",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-grid.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/Grid.tsx",
                "upstreamPath": "src/core/Grid.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/Grid.tsx",
                "upstreamSha256": "sha256:14e0e739311985d6ce0071b6578a1a9e1e85d5d92c73264a506bc668a7960f2d",
                "contentSha256": "sha256:14e0e739311985d6ce0071b6578a1a9e1e85d5d92c73264a506bc668a7960f2d",
                "changes": []
              },
              {
                "shippedPath": "components/drei/core/shaderMaterial.tsx",
                "upstreamPath": "src/core/shaderMaterial.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/shaderMaterial.tsx",
                "upstreamSha256": "sha256:9c68e459b901a8575c6a45f1d7405f123661797e5b0129bd6ce5c44c33969b92",
                "contentSha256": "sha256:9c68e459b901a8575c6a45f1d7405f123661797e5b0129bd6ce5c44c33969b92",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/constants.ts",
                "upstreamPath": "src/helpers/constants.ts",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/constants.ts",
                "upstreamSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "contentSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/Grid.tsx, src/core/shaderMaterial.tsx, src/helpers/ts-utils.tsx, src/helpers/constants.ts",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "infinite-camera-following-shader-grid",
            "sourceHash": "sha256:de263a50da945c66e25a69dbfdd6d3c98e0fc5f1eb5a6f919c40ccd0c5441402",
            "contentHash": "sha256:de263a50da945c66e25a69dbfdd6d3c98e0fc5f1eb5a6f919c40ccd0c5441402",
            "structureHash": "sha256:9a13500fc9375e4a2e58e0d88c4b45a8c292873e24e3540e1aa72128432af892"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-marching-cubes",
      "type": "registry:component",
      "title": "Marching Cubes",
      "description": "Composes metaballs and planes into a live marching-cubes surface.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three-stdlib@2.35.6",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/MarchingCubes.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/MarchingCubes.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "metaballs",
            "surface",
            "procedural",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-marching-cubes.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/MarchingCubes.tsx",
                "upstreamPath": "src/core/MarchingCubes.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/MarchingCubes.tsx",
                "upstreamSha256": "sha256:cb3ecf89c0550b5ab3d3aa2a7ed9f44046e683056a4f60b5c8318bea6c690677",
                "contentSha256": "sha256:cb3ecf89c0550b5ab3d3aa2a7ed9f44046e683056a4f60b5c8318bea6c690677",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/MarchingCubes.tsx, src/helpers/ts-utils.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "composable-marching-cubes-surface",
            "sourceHash": "sha256:f7976906c4a9d01a3f29038aeb9d5910226dedb7bb4f3ee40386031fd5294c82",
            "contentHash": "sha256:f7976906c4a9d01a3f29038aeb9d5910226dedb7bb4f3ee40386031fd5294c82",
            "structureHash": "sha256:2f1f079f1761dd6f4d69e44bc6c66d11a70af73d5ad1b140503c7afd93d9a5cf"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-mesh-wobble-material",
      "type": "registry:component",
      "title": "Mesh Wobble Material",
      "description": "Adds controllable vertex wobble to a standard physically lit material.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/MeshWobbleMaterial.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/MeshWobbleMaterial.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "wobble",
            "material",
            "motion",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-mesh-wobble-material.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/MeshWobbleMaterial.tsx",
                "upstreamPath": "src/core/MeshWobbleMaterial.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/MeshWobbleMaterial.tsx",
                "upstreamSha256": "sha256:855b625260c51a0434bf31f270fdeb0b6efb987ac9eb740fe833eb72d9fff387",
                "contentSha256": "sha256:855b625260c51a0434bf31f270fdeb0b6efb987ac9eb740fe833eb72d9fff387",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/MeshWobbleMaterial.tsx, src/helpers/ts-utils.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "vertex-wobble-standard-material",
            "sourceHash": "sha256:a807553e877e52d24a6bdf4e0ceada8ff105fd7d1606b3ebbe1bf7cef872a3cb",
            "contentHash": "sha256:a807553e877e52d24a6bdf4e0ceada8ff105fd7d1606b3ebbe1bf7cef872a3cb",
            "structureHash": "sha256:5d866b811bc32333a3894c38c2ad6ec560584bccbedd44bc9d549dba142074b5"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-outlines",
      "type": "registry:component",
      "title": "Outlines",
      "description": "Draws configurable screen-space or world-space outlines around mesh geometry.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three-mesh-bvh@0.8.3",
        "three-stdlib@2.35.6",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/Outlines.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/Outlines.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/core/shaderMaterial.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/core/shaderMaterial.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/constants.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/constants.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "outline",
            "mesh",
            "shader",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-outlines.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/Outlines.tsx",
                "upstreamPath": "src/core/Outlines.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/Outlines.tsx",
                "upstreamSha256": "sha256:0be7a00397a623ef578c09bc6fbaf65873b1686a059bac63b6287f5d058930bb",
                "contentSha256": "sha256:0be7a00397a623ef578c09bc6fbaf65873b1686a059bac63b6287f5d058930bb",
                "changes": []
              },
              {
                "shippedPath": "components/drei/core/shaderMaterial.tsx",
                "upstreamPath": "src/core/shaderMaterial.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/shaderMaterial.tsx",
                "upstreamSha256": "sha256:9c68e459b901a8575c6a45f1d7405f123661797e5b0129bd6ce5c44c33969b92",
                "contentSha256": "sha256:9c68e459b901a8575c6a45f1d7405f123661797e5b0129bd6ce5c44c33969b92",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/constants.ts",
                "upstreamPath": "src/helpers/constants.ts",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/constants.ts",
                "upstreamSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "contentSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/Outlines.tsx, src/core/shaderMaterial.tsx, src/helpers/constants.ts",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "mesh-geometry-outline-renderer",
            "sourceHash": "sha256:736608e2d6416313aea262f70900a769a516d1e78b1308a2e73ded4c77ec0292",
            "contentHash": "sha256:736608e2d6416313aea262f70900a769a516d1e78b1308a2e73ded4c77ec0292",
            "structureHash": "sha256:0fc8fa9719e9ff567ca413350f12737a134923fae7d85bfceedec80acbc9a5ce"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-sparkles",
      "type": "registry:component",
      "title": "Sparkles",
      "description": "Renders a bounded field of configurable animated shader particles.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/Sparkles.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/Sparkles.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/constants.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/constants.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "particles",
            "sparkles",
            "shader",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-sparkles.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/Sparkles.tsx",
                "upstreamPath": "src/core/Sparkles.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/Sparkles.tsx",
                "upstreamSha256": "sha256:0ac8f2babd85faaa962fd689d884d23e7385ebc25457a5822cc4bf4b50d0a30d",
                "contentSha256": "sha256:0ac8f2babd85faaa962fd689d884d23e7385ebc25457a5822cc4bf4b50d0a30d",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/constants.ts",
                "upstreamPath": "src/helpers/constants.ts",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/constants.ts",
                "upstreamSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "contentSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/Sparkles.tsx, src/helpers/ts-utils.tsx, src/helpers/constants.ts",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "bounded-sparkle-particle-field",
            "sourceHash": "sha256:0a70577eee023b308fb98cfc57b3095b837222216d2277947fcf83be8cdaab35",
            "contentHash": "sha256:0a70577eee023b308fb98cfc57b3095b837222216d2277947fcf83be8cdaab35",
            "structureHash": "sha256:ed7b67faf3d27638f3688958829ae510d680da92d7a9961ed58cb60aaa394cfe"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-stars",
      "type": "registry:component",
      "title": "Stars",
      "description": "Renders a configurable depth-aware star field with controlled density and fade.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/Stars.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/Stars.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/constants.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/constants.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "stars",
            "particles",
            "space",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-stars.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/Stars.tsx",
                "upstreamPath": "src/core/Stars.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/Stars.tsx",
                "upstreamSha256": "sha256:def7e608726586f2ac0de9acfea0501acadba5fdf3243bd1739a5d474ed5e241",
                "contentSha256": "sha256:def7e608726586f2ac0de9acfea0501acadba5fdf3243bd1739a5d474ed5e241",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/constants.ts",
                "upstreamPath": "src/helpers/constants.ts",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/constants.ts",
                "upstreamSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "contentSha256": "sha256:7e8a829fbabccbc6fbff867513ad0538e80e8e013c5a0b43864f2ea037787b69",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/Stars.tsx, src/helpers/ts-utils.tsx, src/helpers/constants.ts",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "depth-aware-star-particle-field",
            "sourceHash": "sha256:2a7ab6c495c05be603025958c61f00d35c82f81a9d716dcd98096eb63dc54d70",
            "contentHash": "sha256:2a7ab6c495c05be603025958c61f00d35c82f81a9d716dcd98096eb63dc54d70",
            "structureHash": "sha256:270f0828a9352655fe78d7d7ee4a5d34fd69ee336430756804991643dd72d97f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drei-trail",
      "type": "registry:component",
      "title": "Trail",
      "description": "Attaches a configurable MeshLine trail to moving scene content.",
      "author": "pmndrs contributors",
      "dependencies": [
        "@react-three/fiber@9.0.0",
        "meshline@3.3.1",
        "three@0.159.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drei/components/drei/core/Trail.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drei/core/Trail.tsx"
        },
        {
          "path": "registry/sources/drei/components/drei/helpers/ts-utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drei/helpers/ts-utils.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "trail",
            "motion",
            "meshline",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/drei-trail.tsx",
          "source": {
            "project": "Drei",
            "repository": "https://github.com/pmndrs/drei",
            "revision": "c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drei/core/Trail.tsx",
                "upstreamPath": "src/core/Trail.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/core/Trail.tsx",
                "upstreamSha256": "sha256:d63effcf7fc6fa08e16e1f22d0ef839607aeec3bfc67fd3ba9fb778cbcbc6db4",
                "contentSha256": "sha256:d63effcf7fc6fa08e16e1f22d0ef839607aeec3bfc67fd3ba9fb778cbcbc6db4",
                "changes": []
              },
              {
                "shippedPath": "components/drei/helpers/ts-utils.tsx",
                "upstreamPath": "src/helpers/ts-utils.tsx",
                "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/src/helpers/ts-utils.tsx",
                "upstreamSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "contentSha256": "sha256:000f4565e65cca54b20853e85377fe4e88023ed53fdd59184cb81fe6ca027cc4",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/core/Trail.tsx, src/helpers/ts-utils.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/drei/blob/c9d3d0dc9473f026c83965a7eb8c7f7a1a1bf0ae/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/drei/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "meshline-object-motion-trail",
            "sourceHash": "sha256:359faf61c4e62b16d39205d188df220c86aac8a8ccbc9080a4e3c5e2147333bb",
            "contentHash": "sha256:359faf61c4e62b16d39205d188df220c86aac8a8ccbc9080a4e3c5e2147333bb",
            "structureHash": "sha256:fd2cc6fc69576fe473957a80e774536cb149fa7470b37c6dfc08d4c2764a81dc"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "drifttype-pointer-text",
      "type": "registry:component",
      "title": "Pointer Text",
      "description": "Displaces individually rendered glyphs with pointer-driven spring physics while retaining one semantic phrase.",
      "author": "Kaiyi Wong",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/drifttype/components/drifttype-pointer-text/react/PointerText.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/drifttype-pointer-text/react/PointerText.tsx"
        },
        {
          "path": "registry/sources/drifttype/components/drifttype-pointer-text/core/pointer.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drifttype-pointer-text/core/pointer.ts"
        },
        {
          "path": "registry/sources/drifttype/components/drifttype-pointer-text/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drifttype-pointer-text/core/types.ts"
        },
        {
          "path": "registry/sources/drifttype/components/drifttype-pointer-text/renderers/svg.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drifttype-pointer-text/renderers/svg.ts"
        },
        {
          "path": "registry/sources/drifttype/components/drifttype-pointer-text/a11y/semantic.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/drifttype-pointer-text/a11y/semantic.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "pointer",
            "physics",
            "spring"
          ],
          "renderer": "svg",
          "preview": "previews/drifttype-pointer-text.tsx",
          "source": {
            "project": "DriftType",
            "repository": "https://github.com/kaiyiwong/drifttype",
            "revision": "984ac7eef482585c234baef8ebfbd5b9eb7f4e73",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/drifttype-pointer-text/react/PointerText.tsx",
                "upstreamPath": "src/react/PointerText.tsx",
                "permalink": "https://github.com/kaiyiwong/drifttype/blob/984ac7eef482585c234baef8ebfbd5b9eb7f4e73/src/react/PointerText.tsx",
                "upstreamSha256": "sha256:4caa82a9ad4dd024d9610e45785c8d56f568b159964a401a1178c68d6eb1cb32",
                "contentSha256": "sha256:80a99117c1a8b09012cd7908b4681a646ccd3645205e63e7d1e42dad3fde0620",
                "changes": [
                  "Added a client boundary and deferred canvas measurement until the caller's font finishes loading.",
                  "Added caller-selected span, paragraph, or heading semantics while keeping the SVG presentation hidden from assistive technology and focus.",
                  "Replaced the fixed 800 by 120 viewBox with dimensions derived from measured glyphs, font height, and interaction radius.",
                  "Added deterministic reduced-motion, coarse/no-hover, and touch fallbacks plus hidden-document and offscreen settling.",
                  "Stored and cancelled animation frames during settling, reconfiguration, and unmount."
                ]
              },
              {
                "shippedPath": "components/drifttype-pointer-text/core/pointer.ts",
                "upstreamPath": "src/core/pointer.ts",
                "permalink": "https://github.com/kaiyiwong/drifttype/blob/984ac7eef482585c234baef8ebfbd5b9eb7f4e73/src/core/pointer.ts",
                "upstreamSha256": "sha256:1721c33b53d677a4d703ab887f87f1f7b60eb5cf677d7972b60bf2d26021d0a2",
                "contentSha256": "sha256:1721c33b53d677a4d703ab887f87f1f7b60eb5cf677d7972b60bf2d26021d0a2",
                "changes": []
              },
              {
                "shippedPath": "components/drifttype-pointer-text/core/types.ts",
                "upstreamPath": "src/core/types.ts",
                "permalink": "https://github.com/kaiyiwong/drifttype/blob/984ac7eef482585c234baef8ebfbd5b9eb7f4e73/src/core/types.ts",
                "upstreamSha256": "sha256:5a8b67c39f069b43b7bfcf50629408fab023db2715fb2aa49afa03f0cfaa5e01",
                "contentSha256": "sha256:5a8b67c39f069b43b7bfcf50629408fab023db2715fb2aa49afa03f0cfaa5e01",
                "changes": []
              },
              {
                "shippedPath": "components/drifttype-pointer-text/renderers/svg.ts",
                "upstreamPath": "src/renderers/svg.ts",
                "permalink": "https://github.com/kaiyiwong/drifttype/blob/984ac7eef482585c234baef8ebfbd5b9eb7f4e73/src/renderers/svg.ts",
                "upstreamSha256": "sha256:0c0fdfc8ff0bca293ddce275b7bdffcaa2d87136b8dd62ef91e65857d3a7b4a5",
                "contentSha256": "sha256:0c0fdfc8ff0bca293ddce275b7bdffcaa2d87136b8dd62ef91e65857d3a7b4a5",
                "changes": []
              },
              {
                "shippedPath": "components/drifttype-pointer-text/a11y/semantic.ts",
                "upstreamPath": "src/a11y/semantic.ts",
                "permalink": "https://github.com/kaiyiwong/drifttype/blob/984ac7eef482585c234baef8ebfbd5b9eb7f4e73/src/a11y/semantic.ts",
                "upstreamSha256": "sha256:064f53e26c9738f3aa27e5335bc4e174f3ebe6cd01f3fb554ff3d2877d267852",
                "contentSha256": "sha256:8e2981db6fd26d6d35b71c7b32741c9ac23aa15fd0da6946b11582868e755c43",
                "changes": [
                  "Allowed a caller-selected span, paragraph, or heading element and removed the duplicate role and accessible-name exposure so only its text node supplies the phrase."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/react/PointerText.tsx, src/core/pointer.ts, src/core/types.ts, src/renderers/svg.ts, and src/a11y/semantic.ts",
            "copyright": [
              "Copyright (c) 2026 Kaiyi Wong"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/kaiyiwong/drifttype/blob/984ac7eef482585c234baef8ebfbd5b9eb7f4e73/LICENSE",
              "sha256": "sha256:73778a77c62813ef666fb69305b86044465e4c734054318dcd7b6e6eddc24f5a",
              "localPath": "registry/sources/drifttype/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/drifttype-pointer-text/react/PointerText.tsx",
              "change": "Made the React adapter semantic, responsive, font-aware, motion-preference-aware, visibility-gated, and explicit about animation-frame cleanup without changing its pointer-physics modes.",
              "reason": "Close the documented accessibility, responsive rendering, reduced-motion, coarse/touch, hidden/offscreen, font-loading, and cleanup release gates with a source-local adapter repair."
            },
            {
              "shippedPath": "components/drifttype-pointer-text/a11y/semantic.ts",
              "change": "Changed the hidden semantic node to a caller-selected text element and removed role=img and aria-label duplication.",
              "reason": "Preserve heading or paragraph semantics and expose the phrase exactly once while the SVG remains aria-hidden."
            }
          ],
          "dedupe": {
            "family": "pointer-physics-text",
            "sourceHash": "sha256:d70d2cbe4f4570d6c5574e85be6662a1a2686efdfda16852a5a7b6e348d089b7",
            "contentHash": "sha256:8a5352b819f8682e0678e388c5ca1e9212ee91555d86676ac4c93417f831b490",
            "structureHash": "sha256:95c83f2d4b2e04f33f50a61a49fb1eba89c1e74ea33b418fa7d14112dceac74a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "eldora-inline-diff-comments",
      "type": "registry:component",
      "title": "Inline Diff Comments",
      "description": "Adds local comment threads and resolution controls to caller-provided code diff lines.",
      "author": "Eldora UI",
      "dependencies": [
        "@radix-ui/react-avatar@1.1.10",
        "@radix-ui/react-separator@1.1.7",
        "@radix-ui/react-slot@1.2.3",
        "@radix-ui/react-tooltip@1.2.8",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.544.0",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/eldora-ui/components/eldora-inline-diff-comments/inline-diff-comments.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/inline-diff-comments.tsx"
        },
        {
          "path": "registry/sources/eldora-ui/components/ui/avatar.tsx",
          "type": "registry:ui",
          "target": "@components/ui/avatar.tsx"
        },
        {
          "path": "registry/sources/eldora-ui/components/ui/badge.tsx",
          "type": "registry:ui",
          "target": "@components/ui/badge.tsx"
        },
        {
          "path": "registry/sources/eldora-ui/components/ui/button.tsx",
          "type": "registry:ui",
          "target": "@components/ui/button.tsx"
        },
        {
          "path": "registry/sources/eldora-ui/components/ui/separator.tsx",
          "type": "registry:ui",
          "target": "@components/ui/separator.tsx"
        },
        {
          "path": "registry/sources/eldora-ui/components/ui/textarea.tsx",
          "type": "registry:ui",
          "target": "@components/ui/textarea.tsx"
        },
        {
          "path": "registry/sources/eldora-ui/components/ui/tooltip.tsx",
          "type": "registry:ui",
          "target": "@components/ui/tooltip.tsx"
        },
        {
          "path": "registry/sources/eldora-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "code-review",
            "comments",
            "diff",
            "threads"
          ],
          "renderer": "dom",
          "preview": "previews/eldora-inline-diff-comments.tsx",
          "source": {
            "project": "Eldora UI",
            "repository": "https://github.com/karthikmudunuri/eldoraui",
            "revision": "2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/eldora-inline-diff-comments/inline-diff-comments.tsx",
                "upstreamPath": "apps/www/registry/eldoraui/github-inline-comments.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/registry/eldoraui/github-inline-comments.tsx",
                "upstreamSha256": "sha256:7f61d4d6ed9e0c73b5ad5c9f2fbad35d399ac148a3be3f5f12d241ce9e69cbe6",
                "contentSha256": "sha256:fd9398fda2d8eb071fbf073871d7c5f8f18b23ab5f91674be5a6b5c1c55c6128",
                "changes": [
                  "Renamed the exported component to a neutral Inline Diff Comments identity and changed absolute imports to its bundled relative support closure.",
                  "Removed the seeded reviewer comment, added caller-provided initial comments plus comment and resolution callbacks, and retained local comments while threads close and reopen.",
                  "Added empty states, unique field and thread IDs, button types, keyboard submit, Escape close, focus restoration, touch-sized mobile controls, explicit left-to-right code flow, and reduced-motion transitions.",
                  "Stopped replacing code content with an aria-label and made long diff lines scroll without breaking the surrounding component."
                ]
              },
              {
                "shippedPath": "components/ui/avatar.tsx",
                "upstreamPath": "apps/www/components/ui/avatar.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/components/ui/avatar.tsx",
                "upstreamSha256": "sha256:f27df300437bcfdbf676a1803b99506b1e828a46d7c13a5286e9a94a3057222b",
                "contentSha256": "sha256:f7fccd85539e82f6e7a897c69b5e96dbdfedd5c14c5c11b0a4f37a8209431df0",
                "changes": [
                  "Changed the utility import from @/lib/utils to ../../lib/utils for source-batch and installation-target portability."
                ]
              },
              {
                "shippedPath": "components/ui/badge.tsx",
                "upstreamPath": "apps/www/components/ui/badge.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/components/ui/badge.tsx",
                "upstreamSha256": "sha256:a3909c80ba1f9cd27258f455a4a7aa4753ef667c42ae5dfd53bd707a6107e0c1",
                "contentSha256": "sha256:f43e024435349659e3fce5b5750d913ab12407aaa34c9469c6f36f752faee7f6",
                "changes": [
                  "Changed the utility import to ../../lib/utils, normalized utility ordering, and suppressed transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/ui/button.tsx",
                "upstreamPath": "apps/www/components/ui/button.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/components/ui/button.tsx",
                "upstreamSha256": "sha256:8894348e81c0a616e656b84fc62c0c6e64a446de2f5fa4a0fd39785e7749bec0",
                "contentSha256": "sha256:9843165725c40b795aa43f762458177dc964bebda812cebaafffce92a753f073",
                "changes": [
                  "Changed the utility import to ../../lib/utils, normalized utility ordering, and suppressed transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/ui/separator.tsx",
                "upstreamPath": "apps/www/components/ui/separator.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/components/ui/separator.tsx",
                "upstreamSha256": "sha256:4bcfbb420d54c125fbd86157f031d81d968909984f4307eb9cafc02aaf5e4e67",
                "contentSha256": "sha256:45f56561fb4a14ff4a2a9df6cbd624bffda7fb42b642135c7831e6d2d7ce2131",
                "changes": [
                  "Changed the utility import from @/lib/utils to ../../lib/utils for source-batch and installation-target portability."
                ]
              },
              {
                "shippedPath": "components/ui/textarea.tsx",
                "upstreamPath": "apps/www/components/ui/textarea.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/components/ui/textarea.tsx",
                "upstreamSha256": "sha256:024023f4d5aef744a7b2f667eb0e7575fd48d79dad7e7d320c5286b9962604d6",
                "contentSha256": "sha256:1c7eed057ac0f67e2e6ba6282fa8aa70af3e0f470a9c835631c8b35cf00df8a8",
                "changes": [
                  "Changed the utility import from @/lib/utils to ../../lib/utils for source-batch and installation-target portability."
                ]
              },
              {
                "shippedPath": "components/ui/tooltip.tsx",
                "upstreamPath": "apps/www/components/ui/tooltip.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/components/ui/tooltip.tsx",
                "upstreamSha256": "sha256:c3f84f47ac457985b41d9ae6ced7a7b7683b3c355f1f4ea386afd8a1a8549aa3",
                "contentSha256": "sha256:6ed1a2bc10e50d88ce8e608b12a64b99cc2de254d3dffb19350e37633e9d0995",
                "changes": [
                  "Changed the utility import to ../../lib/utils and suppressed tooltip animation and transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/eldoraui/github-inline-comments.tsx, apps/www/components/ui/avatar.tsx, badge.tsx, button.tsx, separator.tsx, textarea.tsx, tooltip.tsx, and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Mudunuri Bhaskara Karthikeya Varma"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/LICENSE.md",
              "sha256": "sha256:98a4833a2780f22c9f12d39493bbd19e3eb5ab321d4e44cc79c596b52cba4c29",
              "localPath": "registry/sources/eldora-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/eldora-inline-diff-comments/inline-diff-comments.tsx",
              "change": "Repointed bundled imports; removed seeded fake discussion data; added caller data and event hooks, persistent local thread state, empty states, unique IDs, semantic button types, keyboard submit and close, focus return, touch-sized mobile controls, direction-safe code, reduced-motion transitions, and horizontal code overflow.",
              "reason": "Keep the copied diff-review interaction standalone and real-data-ready while repairing keyboard, touch, responsive, RTL, and accessible-name behavior."
            },
            {
              "shippedPath": "components/ui/avatar.tsx",
              "change": "Changed the utility import to ../../lib/utils.",
              "reason": "Resolve the bundled support utility from both the source batch and installation target."
            },
            {
              "shippedPath": "components/ui/badge.tsx",
              "change": "Changed the utility import to ../../lib/utils, normalized class order, and added reduced-motion transition suppression.",
              "reason": "Keep the copied support component portable and motion-safe."
            },
            {
              "shippedPath": "components/ui/button.tsx",
              "change": "Changed the utility import to ../../lib/utils, normalized class order, and added reduced-motion transition suppression.",
              "reason": "Keep the copied support component portable and motion-safe."
            },
            {
              "shippedPath": "components/ui/separator.tsx",
              "change": "Changed the utility import to ../../lib/utils.",
              "reason": "Resolve the bundled support utility from both the source batch and installation target."
            },
            {
              "shippedPath": "components/ui/textarea.tsx",
              "change": "Changed the utility import to ../../lib/utils.",
              "reason": "Resolve the bundled support utility from both the source batch and installation target."
            },
            {
              "shippedPath": "components/ui/tooltip.tsx",
              "change": "Changed the utility import to ../../lib/utils and added reduced-motion animation and transition suppression.",
              "reason": "Keep the copied support component portable and motion-safe."
            }
          ],
          "dedupe": {
            "family": "inline-diff-comment-thread",
            "sourceHash": "sha256:42f41415152c66d4e84ae56f70f6551a029ca919f5258563d106cd01ac4ac505",
            "contentHash": "sha256:2c71bc1fdfe8e1bc9fc3b35fa7cf683fcc311a4b566a24b1a049a4ebc532f15b",
            "structureHash": "sha256:20f1e5c673ebeb6bdbfd1eef788d61440f044b6c74c5703bafc8249a7194daa2"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "eldora-novatrix",
      "type": "registry:component",
      "title": "Novatrix",
      "description": "Renders a configurable OGL cosine field with optional pointer response.",
      "author": "Eldora UI",
      "dependencies": [
        "ogl@1.0.11"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/eldora-ui/components/eldora-novatrix/novatrix.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/novatrix.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "cosine-field",
            "pointer",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/eldora-novatrix.tsx",
          "source": {
            "project": "Eldora UI",
            "repository": "https://github.com/karthikmudunuri/eldoraui",
            "revision": "2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/eldora-novatrix/novatrix.tsx",
                "upstreamPath": "apps/www/registry/eldoraui/novatrix-background.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/registry/eldoraui/novatrix-background.tsx",
                "upstreamSha256": "sha256:7d20fb899a8b8bced5f9fcf0f01c05638caf9a9e7c9fe17a7fff89eba1bcb30f",
                "contentSha256": "sha256:c9a6c7e72a8cf94fd93a163537b11722675ba7d80d78b275ee069048d109fd75",
                "changes": [
                  "Added native div props, caller class and style support, decorative semantics, bounded numeric inputs, and a stable color fallback.",
                  "Capped device pixel ratio, replaced window-only sizing with ResizeObserver, and replaced mouse-only tracking with pointer tracking.",
                  "Rendered one static reduced-motion frame, paused animation outside the viewport and in hidden documents, handled WebGL construction failure, and tightened cleanup."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/eldoraui/novatrix-background.tsx",
            "copyright": [
              "Copyright (c) Mudunuri Bhaskara Karthikeya Varma"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/LICENSE.md",
              "sha256": "sha256:98a4833a2780f22c9f12d39493bbd19e3eb5ab321d4e44cc79c596b52cba4c29",
              "localPath": "registry/sources/eldora-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/eldora-novatrix/novatrix.tsx",
              "change": "Added a native wrapper API, bounded shader inputs, capped DPR, ResizeObserver sizing, pointer input, reduced-motion still rendering, viewport and visibility suspension, defensive renderer creation, and safe canvas/context cleanup.",
              "reason": "Preserve the copied shader while preventing unbounded GPU work, offscreen animation, mouse-only behavior, and stale canvas resources."
            }
          ],
          "dedupe": {
            "family": "ogl-novatrix-cosine-field",
            "sourceHash": "sha256:0117af4fc572cad66d21b14585cfccff29baa21e52f5b8bec338fc9a5e5f0fe2",
            "contentHash": "sha256:4e4cec30520b1c42311e401cfd1f3a1563bd7515440ea47a3bb66af3c61b0195",
            "structureHash": "sha256:2e8103fd2d83a2dca140d9359b3d474d9d5ad8a782dc9cafc2ff1a7417202cc6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "eldora-photon-beam",
      "type": "registry:component",
      "title": "Photon Beam",
      "description": "Renders a configurable field of curved Three.js light trails with bloom.",
      "author": "Eldora UI",
      "dependencies": [
        "@types/three@0.180.0",
        "three@0.180.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/eldora-ui/components/eldora-photon-beam/photon-beam.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/photon-beam.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "threejs",
            "light-trails",
            "bloom",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/eldora-photon-beam.tsx",
          "source": {
            "project": "Eldora UI",
            "repository": "https://github.com/karthikmudunuri/eldoraui",
            "revision": "2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/eldora-photon-beam/photon-beam.tsx",
                "upstreamPath": "apps/www/registry/eldoraui/photon-beam.tsx",
                "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/apps/www/registry/eldoraui/photon-beam.tsx",
                "upstreamSha256": "sha256:14989d07853bfcba55a07f7daaf13c5b71fc973917eb9e6d6c99ddb89cb3cb45",
                "contentSha256": "sha256:4a5f7adbd248132777ebc571e4517fa4766f1f07ee18c3e8e4cc3135801b4d50",
                "changes": [
                  "Added caller class and style props, decorative semantics, finite numeric bounds, and a stable background fallback.",
                  "Converted signal advancement to frame-time-based movement and made reduced motion render one static frame.",
                  "Paused rendering outside the viewport and in hidden documents, observed container size, capped device pixel ratio, and completed WebGL resource cleanup.",
                  "Made the effect rebuild when visual props change and return a static fallback when WebGL renderer creation fails."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/eldoraui/photon-beam.tsx",
            "copyright": [
              "Copyright (c) Mudunuri Bhaskara Karthikeya Varma"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/karthikmudunuri/eldoraui/blob/2ef4f1eb4f4a6dea6fc2bdd4d87b6a3f2ff65321/LICENSE.md",
              "sha256": "sha256:98a4833a2780f22c9f12d39493bbd19e3eb5ab321d4e44cc79c596b52cba4c29",
              "localPath": "registry/sources/eldora-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/eldora-photon-beam/photon-beam.tsx",
              "change": "Added a caller-sized wrapper API, bounded inputs, frame-time movement, static reduced-motion rendering, visibility and viewport suspension, ResizeObserver sizing, defensive WebGL creation, and complete geometry/material/composer/context cleanup.",
              "reason": "Keep the copied high-cost visual effect responsive, bounded, motion-safe, and leak-free without changing its authored beam geometry or bloom treatment."
            }
          ],
          "dedupe": {
            "family": "threejs-photon-trail-field",
            "sourceHash": "sha256:50edfc83395da0dfb49fab716c9792c917700c0f7b90d26662b8e44f15d03e08",
            "contentHash": "sha256:bec6560d74acc96be6e0c2b29be61ebbb1072e80e7ec1c761458f06a2cfde962",
            "structureHash": "sha256:c946ee48f95be419d768598ff754f73dc727800a0fd6e3f837f9cbd6bc50e65c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "elevenlabs-bar-visualizer",
      "type": "registry:component",
      "title": "Audio Bar Visualizer",
      "description": "Visualizes live or simulated multi-band audio levels across voice interaction states.",
      "author": "ElevenLabs UI",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-bar-visualizer/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-bar-visualizer/index.tsx"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-bar-visualizer/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-bar-visualizer/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "audio",
            "frequency",
            "voice-state",
            "visualizer"
          ],
          "renderer": "dom",
          "preview": "previews/elevenlabs-bar-visualizer.tsx",
          "source": {
            "project": "ElevenLabs UI",
            "repository": "https://github.com/elevenlabs/ui",
            "revision": "6e5b681c01ee28073c89a047ebe5ecebf6a7def2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/elevenlabs-bar-visualizer/index.tsx",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/ui/bar-visualizer.tsx",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/ui/bar-visualizer.tsx",
                "upstreamSha256": "sha256:6244d6f95996385c359dbf12968f5980ecabe5155eaea694a753217b86c3f685",
                "contentSha256": "sha256:857223d04dfc9c46b0c2b2d5b3a86c7223e52c446f81040b89eb4d4b8a71bc17",
                "changes": [
                  "Changed project aliases to bundled source-local imports and normalized formatting.",
                  "Added native reduced-motion detection so demo and state-sequencing animation stop when requested."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-bar-visualizer/utils.ts",
                "upstreamPath": "apps/www/lib/utils.ts",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/lib/utils.ts",
                "upstreamSha256": "sha256:7f7082a8e4a8137a17d45372a67c6272dbc8eca95451cc2f4645fe866249e3f9",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/elevenlabs-ui/ui/bar-visualizer.tsx, apps/www/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Eleven Labs Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/LICENSE.md",
              "sha256": "sha256:ad3f66b8568970d067e3bd47b690ad013945a61f972559743946a3a6558dc828",
              "localPath": "registry/sources/elevenlabs-ui/LICENSE.md"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/elevenlabs-bar-visualizer/index.tsx",
              "change": "Changed project aliases to bundled source-local imports and normalized formatting. Added native reduced-motion detection so demo and state-sequencing animation stop when requested.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-bar-visualizer/utils.ts",
              "change": "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            }
          ],
          "dedupe": {
            "family": "audio-frequency-bar-visualizer",
            "sourceHash": "sha256:b056d61d9dc00a899db988db69ee2d3b133a92adc2927eaff23673885d18815c",
            "contentHash": "sha256:044e2e06d3452d63a023fef3db0f057afbc162d324367089a8d96f1951e38e51",
            "structureHash": "sha256:b6a5ef88950005a6b5f6b4675476ead6275b679bf9ded6614c7fb8a04981da8b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "elevenlabs-live-waveform",
      "type": "registry:component",
      "title": "Live Audio Waveform",
      "description": "Draws a responsive microphone waveform with static and scrolling modes plus processing state.",
      "author": "ElevenLabs UI",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-live-waveform/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-live-waveform/index.tsx"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-live-waveform/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-live-waveform/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "audio",
            "microphone",
            "waveform",
            "canvas"
          ],
          "renderer": "canvas",
          "preview": "previews/elevenlabs-live-waveform.tsx",
          "source": {
            "project": "ElevenLabs UI",
            "repository": "https://github.com/elevenlabs/ui",
            "revision": "6e5b681c01ee28073c89a047ebe5ecebf6a7def2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/elevenlabs-live-waveform/index.tsx",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/ui/live-waveform.tsx",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/ui/live-waveform.tsx",
                "upstreamSha256": "sha256:ca011f6594bb105afe56362eef5f9032c008623b507b16320216121951939170",
                "contentSha256": "sha256:948c9b9173049f1ad5da6b80143c439e28546c2854e740e2ff8c2c3d9f21f4c9",
                "changes": [
                  "Changed project aliases to bundled source-local imports and normalized formatting.",
                  "Added native reduced-motion detection so synthetic processing and idle loops render once instead of running continuously."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-live-waveform/utils.ts",
                "upstreamPath": "apps/www/lib/utils.ts",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/lib/utils.ts",
                "upstreamSha256": "sha256:7f7082a8e4a8137a17d45372a67c6272dbc8eca95451cc2f4645fe866249e3f9",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/elevenlabs-ui/ui/live-waveform.tsx, apps/www/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Eleven Labs Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/LICENSE.md",
              "sha256": "sha256:ad3f66b8568970d067e3bd47b690ad013945a61f972559743946a3a6558dc828",
              "localPath": "registry/sources/elevenlabs-ui/LICENSE.md"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/elevenlabs-live-waveform/index.tsx",
              "change": "Changed project aliases to bundled source-local imports and normalized formatting. Added native reduced-motion detection so synthetic processing and idle loops render once instead of running continuously.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-live-waveform/utils.ts",
              "change": "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            }
          ],
          "dedupe": {
            "family": "live-microphone-canvas-waveform",
            "sourceHash": "sha256:533c35cb398e0c4f7f317458bf537587a89face96a842fc08cda148ad49e15a2",
            "contentHash": "sha256:bc5c716a185aa22a4209f52e33641229ca027ed344aa931cd7200d6f7e1f51dc",
            "structureHash": "sha256:5bcf51c6355218b2d5a2352f2fa91b8f3ffc98b74d12eac26f89ef69461e1529"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "elevenlabs-matrix-display",
      "type": "registry:component",
      "title": "LED Matrix Display",
      "description": "Renders accessible animated LED matrices from frames, patterns, or live volume levels.",
      "author": "ElevenLabs UI",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-matrix-display/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-matrix-display/index.tsx"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-matrix-display/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-matrix-display/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "matrix",
            "led",
            "animation",
            "audio"
          ],
          "renderer": "dom",
          "preview": "previews/elevenlabs-matrix-display.tsx",
          "source": {
            "project": "ElevenLabs UI",
            "repository": "https://github.com/elevenlabs/ui",
            "revision": "6e5b681c01ee28073c89a047ebe5ecebf6a7def2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/elevenlabs-matrix-display/index.tsx",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/ui/matrix.tsx",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/ui/matrix.tsx",
                "upstreamSha256": "sha256:f074f26d5d9060b53c794893993c2ab8b7c13d6de0c1a4135cad069d0ecf0141",
                "contentSha256": "sha256:5c6946e449253a1c99d170ffffd04c22e2d1ab6ccd579472dc9094f1f4fe96ad",
                "changes": [
                  "Changed project aliases to bundled source-local imports and normalized formatting.",
                  "Added native reduced-motion detection that freezes autoplay while retaining caller-supplied static patterns."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-matrix-display/utils.ts",
                "upstreamPath": "apps/www/lib/utils.ts",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/lib/utils.ts",
                "upstreamSha256": "sha256:7f7082a8e4a8137a17d45372a67c6272dbc8eca95451cc2f4645fe866249e3f9",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/elevenlabs-ui/ui/matrix.tsx, apps/www/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Eleven Labs Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/LICENSE.md",
              "sha256": "sha256:ad3f66b8568970d067e3bd47b690ad013945a61f972559743946a3a6558dc828",
              "localPath": "registry/sources/elevenlabs-ui/LICENSE.md"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/elevenlabs-matrix-display/index.tsx",
              "change": "Changed project aliases to bundled source-local imports and normalized formatting. Added native reduced-motion detection that freezes autoplay while retaining caller-supplied static patterns.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-matrix-display/utils.ts",
              "change": "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            }
          ],
          "dedupe": {
            "family": "animated-led-matrix-display",
            "sourceHash": "sha256:a619137a53652b9e02f0063206198e0e1196a1cfdd8430f21baf1844f3fd7086",
            "contentHash": "sha256:1e2f6b0318ea0a0e59f6523289ca66a17d51474f7ea3e1b89bbdb07b288ebbb0",
            "structureHash": "sha256:09af3c7aff66488617d4a6b48c13e9312cddc99d59cef2ea40dcf524b9b95bfc"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "elevenlabs-transcript-viewer",
      "type": "registry:component",
      "title": "Synced Audio Transcript",
      "description": "Synchronizes audio playback, word highlighting, seeking, play controls, and an accessible scrub timeline.",
      "author": "ElevenLabs UI",
      "dependencies": [
        "@elevenlabs/elevenlabs-js@2.20.1",
        "@radix-ui/react-progress@1.1.1",
        "@radix-ui/react-slot@1.2.3",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.474.0",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-transcript-viewer/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-transcript-viewer/index.tsx"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-transcript-viewer/use-transcript-viewer.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-transcript-viewer/use-transcript-viewer.ts"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-transcript-viewer/scrub-bar.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-transcript-viewer/scrub-bar.tsx"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-transcript-viewer/progress.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-transcript-viewer/progress.tsx"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-transcript-viewer/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-transcript-viewer/button.tsx"
        },
        {
          "path": "registry/sources/elevenlabs-ui/components/elevenlabs-transcript-viewer/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/elevenlabs-ui/elevenlabs-transcript-viewer/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "audio",
            "transcript",
            "word-sync",
            "playback"
          ],
          "renderer": "dom",
          "preview": "previews/elevenlabs-transcript-viewer.tsx",
          "source": {
            "project": "ElevenLabs UI",
            "repository": "https://github.com/elevenlabs/ui",
            "revision": "6e5b681c01ee28073c89a047ebe5ecebf6a7def2",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/elevenlabs-transcript-viewer/index.tsx",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/ui/transcript-viewer.tsx",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/ui/transcript-viewer.tsx",
                "upstreamSha256": "sha256:8e9079ada047846a075839a1e7af011260493c97e6b7853c594522c6d31cff38",
                "contentSha256": "sha256:c791755ca42df339090acd105dadf6d75c433f910b519eb4a387d84a2e01c0e2",
                "changes": [
                  "Changed project aliases to bundled source-local imports and normalized formatting.",
                  "Bundled the exact local closure and upgraded its scrub timeline with pointer capture, keyboard, RTL, accessible-name, and value-text behavior."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-transcript-viewer/use-transcript-viewer.ts",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/hooks/use-transcript-viewer.ts",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/hooks/use-transcript-viewer.ts",
                "upstreamSha256": "sha256:0f867002dabaec3026ccd93e2c4c7091b178d10dc4eb20ad58602d6774b5de6d",
                "contentSha256": "sha256:a39df942409cf9b0b8fe7b2e72e9500281d6b585dff155dec4b1871dac52f6e1",
                "changes": [
                  "Normalized the copied hook formatting without changing its playback and transcript behavior."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-transcript-viewer/scrub-bar.tsx",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/ui/scrub-bar.tsx",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/ui/scrub-bar.tsx",
                "upstreamSha256": "sha256:aa2f0dbcbf94ef0010efe7ef0bc8a10697b3018aa94630154eb902ce9b161816",
                "contentSha256": "sha256:1deeee037b81a16ce50e34462c592dc914c1f83209a7a85f5e51726be2ddf6a4",
                "changes": [
                  "Changed imports to bundled source-local files, normalized formatting, replaced global drag listeners with pointer capture, and added keyboard, RTL, accessible-name, value-text, and handler composition behavior."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-transcript-viewer/progress.tsx",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/ui/progress.tsx",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/ui/progress.tsx",
                "upstreamSha256": "sha256:e7a89220fb49e18d6613956781cfd5eb38d5da36379e93f5fc90ccec127dc871",
                "contentSha256": "sha256:956cf4b485bcf57684caac10df2aa2a72387d0736d8f4cd1315c49ebd2da4615",
                "changes": [
                  "Changed the project utility alias to the bundled source-local utility and normalized formatting."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-transcript-viewer/button.tsx",
                "upstreamPath": "apps/www/registry/elevenlabs-ui/ui/button.tsx",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/registry/elevenlabs-ui/ui/button.tsx",
                "upstreamSha256": "sha256:7b260b5eeb59e4756fc3907e54852f06d58e8003ff0e030c1d97cff194d87f00",
                "contentSha256": "sha256:8c29d41f295d67515f06084ed775e81453bdbc692d93de548d488f33fd1fc043",
                "changes": [
                  "Changed the project utility alias to the bundled source-local utility and normalized formatting."
                ]
              },
              {
                "shippedPath": "components/elevenlabs-transcript-viewer/utils.ts",
                "upstreamPath": "apps/www/lib/utils.ts",
                "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/apps/www/lib/utils.ts",
                "upstreamSha256": "sha256:7f7082a8e4a8137a17d45372a67c6272dbc8eca95451cc2f4645fe866249e3f9",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/elevenlabs-ui/ui/transcript-viewer.tsx, apps/www/registry/elevenlabs-ui/hooks/use-transcript-viewer.ts, apps/www/registry/elevenlabs-ui/ui/scrub-bar.tsx, apps/www/registry/elevenlabs-ui/ui/progress.tsx, apps/www/registry/elevenlabs-ui/ui/button.tsx, apps/www/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Eleven Labs Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/elevenlabs/ui/blob/6e5b681c01ee28073c89a047ebe5ecebf6a7def2/LICENSE.md",
              "sha256": "sha256:ad3f66b8568970d067e3bd47b690ad013945a61f972559743946a3a6558dc828",
              "localPath": "registry/sources/elevenlabs-ui/LICENSE.md"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/elevenlabs-transcript-viewer/index.tsx",
              "change": "Changed project aliases to bundled source-local imports and normalized formatting. Bundled the exact local closure and upgraded its scrub timeline with pointer capture, keyboard, RTL, accessible-name, and value-text behavior.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-transcript-viewer/use-transcript-viewer.ts",
              "change": "Normalized the copied hook formatting without changing its playback and transcript behavior.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-transcript-viewer/scrub-bar.tsx",
              "change": "Changed imports to bundled source-local files, normalized formatting, replaced global drag listeners with pointer capture, and added keyboard, RTL, accessible-name, value-text, and handler composition behavior.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-transcript-viewer/progress.tsx",
              "change": "Changed the project utility alias to the bundled source-local utility and normalized formatting.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-transcript-viewer/button.tsx",
              "change": "Changed the project utility alias to the bundled source-local utility and normalized formatting.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            },
            {
              "shippedPath": "components/elevenlabs-transcript-viewer/utils.ts",
              "change": "Removed the unrelated site URL helper, kept the upstream cn utility, normalized formatting, and made the closure source-local.",
              "reason": "Keep the copied component install-complete, source-local, accessible, and production-safe without changing its core upstream design."
            }
          ],
          "dedupe": {
            "family": "word-synced-audio-transcript",
            "sourceHash": "sha256:a38771ee587113d0ac1fb08f1b43eee8f2f6c5e0c523e688db2761751bd32948",
            "contentHash": "sha256:17b3371ba3f2db94c5280bc57769fc9478dfdadd7f69c1a5e6c179fa97868c38",
            "structureHash": "sha256:96a60e30b2bab75ddee534ddff7c3c33512b4376a3545fc1c0e463afee43a98a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ericts-projected-shadow",
      "type": "registry:component",
      "title": "Projected Shadow",
      "description": "Separates a supplied mark into target, contact, and projected layers that gather through controlled state or fine-pointer hover.",
      "author": "EricTS UI contributors",
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ericts-ui/components/ericts-projected-shadow/projected-shadow-animation.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/ericts-projected-shadow/projected-shadow-animation.tsx"
        },
        {
          "path": "registry/sources/ericts-ui/components/ericts-projected-shadow/projected-shadow-animation.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/ericts-projected-shadow/projected-shadow-animation.css"
        },
        {
          "path": "registry/sources/ericts-ui/components/ericts-projected-shadow/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ericts-projected-shadow/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "projected-shadow",
            "layered-shadow",
            "controlled-state",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/ericts-projected-shadow.tsx",
          "source": {
            "project": "EricTS UI",
            "repository": "https://github.com/EricTsai83/ericts-ui",
            "revision": "5b5d0a15dbe88dd5811713ebd2dcfbca3b8ba53d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ericts-projected-shadow/projected-shadow-animation.tsx",
                "upstreamPath": "registry/base/ui/projected-shadow-animation.tsx",
                "permalink": "https://github.com/EricTsai83/ericts-ui/blob/5b5d0a15dbe88dd5811713ebd2dcfbca3b8ba53d/registry/base/ui/projected-shadow-animation.tsx",
                "upstreamSha256": "sha256:4b0a8d65aea9092dabcaadb9a7c6a49d010be195c2ef557701cb7198e886ade1",
                "contentSha256": "sha256:085750d38b3acf9f5a30a255d5372f13cd5098bc45384d40d964c4cc6556ebcc",
                "changes": [
                  "Repointed the shared class-name helper import to the copied support file beside the component."
                ]
              },
              {
                "shippedPath": "components/ericts-projected-shadow/projected-shadow-animation.css",
                "upstreamPath": "registry/base/ui/projected-shadow-animation.css",
                "permalink": "https://github.com/EricTsai83/ericts-ui/blob/5b5d0a15dbe88dd5811713ebd2dcfbca3b8ba53d/registry/base/ui/projected-shadow-animation.css",
                "upstreamSha256": "sha256:8c944dbef3fdd45da12d2cf7c6550f7b130d142ecc17ccc82046fff4c441f255",
                "contentSha256": "sha256:173b65b536584dbd942b6d6e7bc9169fd89435b7c6a28a8b4d32559e09790f19",
                "changes": [
                  "Raised reduced-motion selector specificity so active and hovered layers cannot restore transition duration."
                ]
              },
              {
                "shippedPath": "components/ericts-projected-shadow/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/EricTsai83/ericts-ui/blob/5b5d0a15dbe88dd5811713ebd2dcfbca3b8ba53d/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/base/ui/projected-shadow-animation.tsx, registry/base/ui/projected-shadow-animation.css, and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 EricTS UI contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/EricTsai83/ericts-ui/blob/5b5d0a15dbe88dd5811713ebd2dcfbca3b8ba53d/LICENSE",
              "sha256": "sha256:3e19f1106cdf920742542861b7785ff38bfb80e0ea6d38a88b87cd081df524ff",
              "localPath": "registry/sources/ericts-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ericts-projected-shadow/projected-shadow-animation.tsx",
              "change": "Changed the class-name helper import from the upstream application alias to a source-local relative path.",
              "reason": "Keep the shadcn payload closed and installable without importing the upstream application's site utilities."
            },
            {
              "shippedPath": "components/ericts-projected-shadow/projected-shadow-animation.css",
              "change": "Made the reduced-motion transition-duration rule at least as specific as the active and hover duration rules.",
              "reason": "Prevent the active 360 ms duration from winning the cascade when the user requests reduced motion."
            }
          ],
          "dedupe": {
            "family": "gathered-projected-shadow",
            "sourceHash": "sha256:98c30a120f6455ba3d36b1941961f95fb294bbf30aa39c3baf0ff796ae3ce4f0",
            "contentHash": "sha256:18e96cd73987dfcef5fcdc8924dbe7b094ddeb935452a668fb2a69212d3fe8c2",
            "structureHash": "sha256:60915d24cc71383ed751658e8d17dae768db2c739f846e1371e360ba5faa2480"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-bounding-box-citations",
      "type": "registry:component",
      "title": "Bounding Box Citations",
      "description": "Connects editable extraction fields to source coordinates and provides form, diff, and JSON inspection modes.",
      "author": "Extend UI contributors",
      "dependencies": [
        "@glideapps/glide-data-grid@6.0.4-alpha24",
        "@hugeicons/core-free-icons@4.2.0",
        "@hugeicons/react@1.1.6",
        "@pierre/diffs@1.2.7"
      ],
      "registryDependencies": [
        "button",
        "input",
        "scroll-area",
        "tabs",
        "tooltip",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/bounding-box-citations.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/bounding-box-citations.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "citations",
            "extraction",
            "human-review",
            "diff"
          ],
          "renderer": "canvas",
          "preview": "previews/extend-bounding-box-citations.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/bounding-box-citations.tsx",
                "upstreamPath": "apps/v4/registry/new-york-v4/ui/bounding-box-citations.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/registry/new-york-v4/ui/bounding-box-citations.tsx",
                "upstreamSha256": "sha256:a918bf00f25e61711c3512ddb6f7ddfb9f93652d87ecb06ebba23683a01784f8",
                "contentSha256": "sha256:a918bf00f25e61711c3512ddb6f7ddfb9f93652d87ecb06ebba23683a01784f8",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/new-york-v4/ui/bounding-box-citations.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "editable-extraction-citations",
            "sourceHash": "sha256:f67679ef70e00ef1cefd51c0a5aafcbd49c93122eef815847a95c9b3c47f2977",
            "contentHash": "sha256:f67679ef70e00ef1cefd51c0a5aafcbd49c93122eef815847a95c9b3c47f2977",
            "structureHash": "sha256:011d77263b721e560586e38159884a2c0c4e63d8c5c5c107ca9fee075c4ce514"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-csv-viewer",
      "type": "registry:component",
      "title": "CSV Viewer",
      "description": "Parses CSV and TSV data into a virtualized grid with upload, search, zoom, selection, and download controls.",
      "author": "Extend UI contributors",
      "dependencies": [
        "@glideapps/glide-data-grid@6.0.4-alpha24",
        "@hugeicons/core-free-icons@4.2.0",
        "@hugeicons/react@1.1.6",
        "papaparse@5.5.3"
      ],
      "devDependencies": [
        "@types/papaparse@5.5.2"
      ],
      "registryDependencies": [
        "button",
        "dropdown-menu",
        "input",
        "popover",
        "select",
        "separator",
        "spinner",
        "tooltip",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/csv-viewer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/csv-viewer.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "csv",
            "tsv",
            "data-grid",
            "search"
          ],
          "renderer": "canvas",
          "preview": "previews/extend-csv-viewer.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/csv-viewer.tsx",
                "upstreamPath": "apps/v4/components/ui/csv-viewer.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/components/ui/csv-viewer.tsx",
                "upstreamSha256": "sha256:4283d66d1ca8ebbb1ebd79cc5836e988fd5bfb253a0551ff659feb46a6dbd12b",
                "contentSha256": "sha256:e859a4be36456cd82fdce6dc55ee83ca69a89457bab0c1e721d1ce75145a65aa",
                "changes": [
                  "Replaced the toolbar's physical auto margin with a logical start margin."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/components/ui/csv-viewer.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/extend-ui/csv-viewer.tsx",
              "change": "Replaced the toolbar's physical auto margin with a logical start margin.",
              "reason": "Preserve toolbar alignment when the grid is rendered in right-to-left documents."
            }
          ],
          "dedupe": {
            "family": "searchable-delimited-data-viewer",
            "sourceHash": "sha256:d84fc6e0319ac17da064b411a783c1d96f9254f2ca187013a13128b28b91da24",
            "contentHash": "sha256:844c4973d900bb6f8bda1cc1dadab7965737bec2467902e1504c685a309d610c",
            "structureHash": "sha256:e14a488276c27ca60731b182741fd50de0a064d2c2109b6c388720596e1f7dc6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-document-splits",
      "type": "registry:component",
      "title": "Document Splits",
      "description": "Reorders document groups and their page thumbnails, supports cross-group moves, and exposes controlled split state.",
      "author": "Extend UI contributors",
      "dependencies": [
        "@dnd-kit/core@6.3.1",
        "@dnd-kit/sortable@10.0.0",
        "@dnd-kit/utilities@3.2.2",
        "@hugeicons/core-free-icons@4.2.0",
        "@hugeicons/react@1.1.6"
      ],
      "registryDependencies": [
        "button",
        "extend-file-thumbnail",
        "scroll-area",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/document-splits.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/document-splits.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "documents",
            "sorting",
            "drag-and-drop",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/extend-document-splits.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/document-splits.tsx",
                "upstreamPath": "apps/v4/registry/new-york-v4/ui/document-splits.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/registry/new-york-v4/ui/document-splits.tsx",
                "upstreamSha256": "sha256:adf244c9429e007b3b129b94c1715b7c157aff2cee508797ec819ab761b1e2ed",
                "contentSha256": "sha256:a41d8c74d9b12dfe107938db8b733a1c77bc81e79d2a5d42f0f1ee1b9936c6bb",
                "changes": [
                  "Repointed FileThumbnail to the Taste Blocks install target and added the upstream dnd-kit's KeyboardSensor with sortable keyboard coordinates.",
                  "Converted directional spacing and divider utilities to logical equivalents and disabled sortable transitions under reduced motion."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/new-york-v4/ui/document-splits.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/extend-ui/document-splits.tsx",
              "change": "Repointed FileThumbnail to the Taste Blocks install target and added the upstream dnd-kit's KeyboardSensor with sortable keyboard coordinates. Converted directional spacing and divider utilities to logical equivalents and disabled sortable transitions under reduced motion.",
              "reason": "Close the copied dependency graph and make page and group reordering usable from keyboard, RTL, and reduced-motion contexts."
            }
          ],
          "dedupe": {
            "family": "sortable-document-split-groups",
            "sourceHash": "sha256:6f3fb64b9d3cd0b022424c3370621f745390a2744c1b9963f54fc8f1bd272d26",
            "contentHash": "sha256:ffd2a245f002d88c9b2911739bac515590d5a0dea8fe7d34bf0da5d605adafd4",
            "structureHash": "sha256:1ace3d7870795267ba60cb29e4f8bc6ae6e6ee8d1ccd6143f40d313bb870ef6d"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-document-viewer-sidebar",
      "type": "registry:component",
      "title": "Document Viewer Sidebar",
      "description": "Switches a thumbnail rail between inline and overlay modes from measured viewer width while preserving open and closed states.",
      "author": "Extend UI contributors",
      "dependencies": [],
      "registryDependencies": [
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/document-viewer-sidebar.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/document-viewer-sidebar.tsx"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "documents",
            "thumbnail-navigation",
            "responsive",
            "sidebar"
          ],
          "renderer": "dom",
          "preview": "previews/extend-document-viewer-sidebar.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/document-viewer-sidebar.tsx",
                "upstreamPath": "apps/v4/components/ui/document-viewer-sidebar.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/components/ui/document-viewer-sidebar.tsx",
                "upstreamSha256": "sha256:7a15e357e81e0e90480da6584936ef6ea6ad7f0ce2c82c7cab8494b753f38f65",
                "contentSha256": "sha256:78a76320b6b12d695d362218438567ce4225f9ed7bcab9ad5acd4d686133257e",
                "changes": [
                  "Replaced physical left, margin, and border utilities with logical equivalents, mirrored the overlay exit direction in RTL, and disabled the entrance transition for reduced motion."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/components/ui/document-viewer-sidebar.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/extend-ui/document-viewer-sidebar.tsx",
              "change": "Replaced physical left, margin, and border utilities with logical equivalents, mirrored the overlay exit direction in RTL, and disabled the entrance transition for reduced motion.",
              "reason": "Make the source-backed sidebar directionally correct and respect the user's motion preference without changing its responsive behavior."
            }
          ],
          "dedupe": {
            "family": "responsive-document-thumbnail-sidebar",
            "sourceHash": "sha256:3a9e0ff74b40caa2b52fc05903b8239e660541a0fbf5a36264ef09e28518019b",
            "contentHash": "sha256:2b939efa4c67b62f82fc1db192cf99f80e23c732e9fb78dd914a122093e5ceb7",
            "structureHash": "sha256:3142436f8b7af2b42b7ba95e2a62990dde2f8d8ddb47eb3549d90e0de9f5ebf5"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-file-thumbnail",
      "type": "registry:component",
      "title": "File Thumbnail",
      "description": "Displays an externally generated file preview with bounded loading, reveal, error, and fallback states.",
      "author": "Extend UI contributors",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/file-thumbnail.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/file-thumbnail.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "file-preview",
            "thumbnail",
            "loading",
            "fallback"
          ],
          "renderer": "dom",
          "preview": "previews/extend-file-thumbnail.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/file-thumbnail.tsx",
                "upstreamPath": "apps/v4/components/ui/file-thumbnail.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/components/ui/file-thumbnail.tsx",
                "upstreamSha256": "sha256:bd0e95c5b74d2393a20ee9defe773a50d0395e27dc66d03381cd19750ec06687",
                "contentSha256": "sha256:bd0e95c5b74d2393a20ee9defe773a50d0395e27dc66d03381cd19750ec06687",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/components/ui/file-thumbnail.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "document-file-thumbnail",
            "sourceHash": "sha256:56f1197931f315d8acb23c6b0a6b14bb0f9383b917073efec43fa89b3a28962a",
            "contentHash": "sha256:56f1197931f315d8acb23c6b0a6b14bb0f9383b917073efec43fa89b3a28962a",
            "structureHash": "sha256:5bee933d0ce9a596dacfa3ef459dc4a57650d331fe764e7cb6a1b0f79f0d3f1f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-file-upload",
      "type": "registry:component",
      "title": "File Upload",
      "description": "Accepts files through click, keyboard, or drag and drop, validates file types, and renders a compact ready-state list.",
      "author": "Extend UI contributors",
      "dependencies": [
        "@hugeicons/core-free-icons@4.2.0",
        "@hugeicons/react@1.1.6",
        "border-beam@1.0.1"
      ],
      "registryDependencies": [
        "card",
        "extend-file-thumbnail",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/file-upload.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/file-upload.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "upload",
            "dropzone",
            "file-validation",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/extend-file-upload.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/file-upload.tsx",
                "upstreamPath": "apps/v4/registry/new-york-v4/ui/file-upload.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/registry/new-york-v4/ui/file-upload.tsx",
                "upstreamSha256": "sha256:9614fc9a6cfd95f5be028cb86c39768ef1792ebadd26e055363c2c9f03097420",
                "contentSha256": "sha256:c25342d5ba79fa072dcd7eeffeb3875b44f8c760de6111db280632fc1e2ca772",
                "changes": [
                  "Repointed the FileThumbnail import to the Taste Blocks install target.",
                  "Added a visible keyboard focus ring and a polite live-region announcement for rejected files."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/new-york-v4/ui/file-upload.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/extend-ui/file-upload.tsx",
              "change": "Repointed the FileThumbnail import to the Taste Blocks install target. Added a visible keyboard focus ring and a polite live-region announcement for rejected files.",
              "reason": "Keep the copied component install-complete with its source-backed thumbnail dependency and expose validation feedback to keyboard and screen-reader users."
            }
          ],
          "dedupe": {
            "family": "multi-format-file-upload",
            "sourceHash": "sha256:edd88ae9f793ad87fd2cf940cce1bed93628c7e633ffa81151b2b0e259835d6d",
            "contentHash": "sha256:cb72e84447a7eb284b6c62c2ff4055641a6964ef0d9abd76aa0cf10d9825db9e",
            "structureHash": "sha256:029d8f84d0ad0195f3c1f20297319589a752fe547efbac8ca623f2d452eecb46"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-pptx-viewer",
      "type": "registry:component",
      "title": "PowerPoint Viewer",
      "description": "Renders presentation slides with virtualized thumbnails, keyboard navigation, zoom, upload, and download controls.",
      "author": "Extend UI contributors",
      "dependencies": [
        "@extend-ai/react-pptx@0.1.2",
        "@tanstack/react-virtual@3.13.26",
        "@hugeicons/core-free-icons@4.2.0",
        "@hugeicons/react@1.1.6"
      ],
      "registryDependencies": [
        "button",
        "extend-document-viewer-sidebar",
        "dropdown-menu",
        "extend-file-thumbnail",
        "input",
        "scroll-area",
        "select",
        "separator",
        "spinner",
        "tooltip",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/pptx-viewer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/pptx-viewer.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "presentation",
            "pptx",
            "slides",
            "virtualized"
          ],
          "renderer": "dom",
          "preview": "previews/extend-pptx-viewer.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/pptx-viewer.tsx",
                "upstreamPath": "apps/v4/components/ui/pptx-viewer.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/components/ui/pptx-viewer.tsx",
                "upstreamSha256": "sha256:578a02455389f6b99c22a39524b51f47010c4de5a82147926170ead55f18c09f",
                "contentSha256": "sha256:8168661a4daf09681e3c90982ea2171d3764292cfee05727c1a434d985997f33",
                "changes": [
                  "Repointed the source-backed thumbnail and responsive sidebar imports to their Taste Blocks install targets.",
                  "Replaced the toolbar's physical auto margin with a logical start margin."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/components/ui/pptx-viewer.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/extend-ui/pptx-viewer.tsx",
              "change": "Repointed the source-backed thumbnail and responsive sidebar imports to their Taste Blocks install targets. Replaced the toolbar's physical auto margin with a logical start margin.",
              "reason": "Keep the copied viewer install-complete and preserve toolbar alignment in right-to-left documents."
            }
          ],
          "dedupe": {
            "family": "presentation-slide-viewer",
            "sourceHash": "sha256:b31547503a9aba94f30a2553e98e67ddd4acb8884c0be0d9ec887449d726fd68",
            "contentHash": "sha256:14754b1e641e4e02346be3063cc5b87943cf90fd69cd43db611fe46cb1294bff",
            "structureHash": "sha256:38bdd34489065ce2cf673a83f0b90880814a7a8c9544d54f5afabf2122094b4b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-schema-builder",
      "type": "registry:component",
      "title": "Schema Builder",
      "description": "Builds nested extraction schemas with sortable properties, enum editing, controlled state, and a synchronized JSON view.",
      "author": "Extend UI contributors",
      "dependencies": [
        "@dnd-kit/core@6.3.1",
        "@dnd-kit/sortable@10.0.0",
        "@dnd-kit/utilities@3.2.2",
        "@hugeicons/core-free-icons@4.2.0",
        "@hugeicons/react@1.1.6",
        "@pierre/diffs@1.2.7",
        "next-themes@0.4.6"
      ],
      "registryDependencies": [
        "button",
        "collapsible",
        "dropdown-menu",
        "scroll-area",
        "tabs",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/schema-builder.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/schema-builder.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "json-schema",
            "nested-fields",
            "drag-and-drop",
            "editor"
          ],
          "renderer": "dom",
          "preview": "previews/extend-schema-builder.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/schema-builder.tsx",
                "upstreamPath": "apps/v4/registry/new-york-v4/ui/schema-builder.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/registry/new-york-v4/ui/schema-builder.tsx",
                "upstreamSha256": "sha256:fb0c91a0a6f905ac22dd271a87a7a8e2057ae0e3230b20194ba6937304cb65b2",
                "contentSha256": "sha256:4c07ceb94a5f03ea4e9ce5d3943b5ec232dce200d781ef81d630d272b5f32095",
                "changes": [
                  "Converted directional table borders, text alignment, indentation, drag handles, and trailing controls to logical RTL-aware utilities.",
                  "Disabled dnd-kit inline sortable transitions under reduced motion and removed transitions from drag handles when requested.",
                  "Narrowed the forwarded input event type for React 19 without changing runtime behavior."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/new-york-v4/ui/schema-builder.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/extend-ui/schema-builder.tsx",
              "change": "Converted directional table borders, text alignment, indentation, drag handles, and trailing controls to logical RTL-aware utilities. Disabled dnd-kit inline sortable transitions under reduced motion and removed transitions from drag handles when requested. Narrowed the forwarded input event type for React 19 without changing runtime behavior.",
              "reason": "Keep the source-backed editor usable in RTL and prevent drag-reorder animation from overriding reduced-motion preferences. Preserve the existing callback behavior while satisfying React 19's more specific input-event type."
            }
          ],
          "dedupe": {
            "family": "nested-json-schema-builder",
            "sourceHash": "sha256:661c68f79aa758116ec79b054782d945a0762a97c8ba64466e992b123ed14ec1",
            "contentHash": "sha256:ffb8df22bfa847389c09d0250ba3390e6215df1d679ef604e1fffcc70d9df4ad",
            "structureHash": "sha256:dd7dca0b221fdc90c0aad7371721d069eafdebe6dd2c84d97ebb197c1bfeca4a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "extend-xlsx-viewer",
      "type": "registry:component",
      "title": "Excel Viewer",
      "description": "Loads local or remote workbooks with sheet tabs, searchable cells, zoom, download, upload, and worker-backed rendering.",
      "author": "Extend UI contributors",
      "dependencies": [
        "@extend-ai/react-xlsx@0.15.0",
        "@hugeicons/core-free-icons@4.2.0",
        "@hugeicons/react@1.1.6"
      ],
      "registryDependencies": [
        "button",
        "dropdown-menu",
        "input",
        "popover",
        "scroll-area",
        "select",
        "separator",
        "spinner",
        "tabs",
        "tooltip",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/extend-ui/components/extend-ui/xlsx-viewer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/extend-ui/xlsx-viewer.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "spreadsheet",
            "xlsx",
            "search",
            "worker"
          ],
          "renderer": "canvas",
          "preview": "previews/extend-xlsx-viewer.tsx",
          "source": {
            "project": "Extend UI",
            "repository": "https://github.com/extend-hq/ui",
            "revision": "6d6d33df18ec39455df00f6315f16d2cfd89563b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/extend-ui/xlsx-viewer.tsx",
                "upstreamPath": "apps/v4/components/ui/xlsx-viewer.tsx",
                "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/apps/v4/components/ui/xlsx-viewer.tsx",
                "upstreamSha256": "sha256:1eebbb9b6b767667d81b834448b5372c5a4c7497038673dab1faf2455ed5e0c1",
                "contentSha256": "sha256:0be16d0a4db5367073ac7a9eb99f9488bd90e67b7ebefbb12c545635b832759b",
                "changes": [
                  "Replaced physical auto margins in both toolbar variants with logical start margins."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/components/ui/xlsx-viewer.tsx",
            "copyright": [
              "Copyright (c) 2026 CrowdView Inc, dba Extend",
              "Portions Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/extend-hq/ui/blob/6d6d33df18ec39455df00f6315f16d2cfd89563b/LICENSE.md",
              "sha256": "sha256:9f05510549c7c2ad283764dfe0e527278e5fb075fb750a9f1dd148f3763269e5",
              "localPath": "registry/sources/extend-ui/LICENSE"
            },
            "notices": [
              "Direct dependency licenses are recorded in registry/sources/extend-ui/DEPENDENCIES.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/extend-ui/xlsx-viewer.tsx",
              "change": "Replaced physical auto margins in both toolbar variants with logical start margins.",
              "reason": "Preserve toolbar alignment when the viewer is rendered in right-to-left documents."
            }
          ],
          "dedupe": {
            "family": "spreadsheet-workbook-viewer",
            "sourceHash": "sha256:8325e52c29ec7f6eae32725d60e992346a15d423e1597ea404d17d70db88e582",
            "contentHash": "sha256:42663cc6e79abcd6863935dd79a5b8be2cb53ce5f505347a5425d25eeea042a4",
            "structureHash": "sha256:6836124b8bc02e1509c6f043e2b95916896b1d50834651e253d1f70c33deef0e"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "fancy-box-carousel",
      "type": "registry:component",
      "title": "Box Carousel",
      "description": "Displays caller-provided media on a draggable, keyboard-operable 3D box carousel.",
      "author": "Daniel Petho",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.23.24",
        "tailwind-merge@2.3.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/fancy-components/components/fancy-box-carousel/box-carousel.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fancy-box-carousel/box-carousel.tsx"
        },
        {
          "path": "registry/sources/fancy-components/components/fancy-box-carousel/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fancy-box-carousel/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "carousel",
            "media",
            "3d",
            "drag",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/fancy-box-carousel.tsx",
          "source": {
            "project": "Fancy Components",
            "repository": "https://github.com/danielpetho/fancy",
            "revision": "f9f62c61207b2dd3210476dd98af3c9a5be24094",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/fancy-box-carousel/box-carousel.tsx",
                "upstreamPath": "src/fancy/components/carousel/box-carousel.tsx",
                "permalink": "https://github.com/danielpetho/fancy/blob/f9f62c61207b2dd3210476dd98af3c9a5be24094/src/fancy/components/carousel/box-carousel.tsx",
                "upstreamSha256": "sha256:867b49eb62583d35d48dcc86b8aa090ca16d246fe646e6fc7e9fe0bee3279097",
                "contentSha256": "sha256:686c7bc401c9f82427082817072e2f2f8e2567161909825d54c700fa52267dd9",
                "changes": [
                  "Changed the cn import from @/lib/utils to ./utils so its copied support file remains source-local and installs beside the component."
                ]
              },
              {
                "shippedPath": "components/fancy-box-carousel/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/danielpetho/fancy/blob/f9f62c61207b2dd3210476dd98af3c9a5be24094/src/lib/utils.ts",
                "upstreamSha256": "sha256:7f7082a8e4a8137a17d45372a67c6272dbc8eca95451cc2f4645fe866249e3f9",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": [
                  "Removed the unrelated absoluteUrl export and colocated the remaining copied cn helper with Box Carousel."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/fancy/components/carousel/box-carousel.tsx and src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 Daniel Petho"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/danielpetho/fancy/blob/f9f62c61207b2dd3210476dd98af3c9a5be24094/LICENSE",
              "sha256": "sha256:39b0d9c112b4e80383da88660cbaa64972f741e80205c14fa1b779ff1989cc09",
              "localPath": "registry/sources/fancy-components/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/fancy-box-carousel/box-carousel.tsx",
              "change": "Changed the cn import from @/lib/utils to ./utils.",
              "reason": "Resolve the copied source-local utility without relying on the catalog alias."
            },
            {
              "shippedPath": "components/fancy-box-carousel/utils.ts",
              "change": "Removed the unrelated absoluteUrl export.",
              "reason": "Keep only the upstream utility closure required by Box Carousel and avoid a Next-specific environment dependency."
            }
          ],
          "dedupe": {
            "family": "3d-box-media-carousel",
            "sourceHash": "sha256:9ee07452f4f292c86b71f6bdab9e6ccade32240b40782ab1cad0f7e8574cb4ee",
            "contentHash": "sha256:eededd9b74b835d78f4cec58ffdb359b7b4a32b8b06ed4d5e7fd755fd0f6fcff",
            "structureHash": "sha256:126a3efc5d782190cca5b447be7b8ee6c360a7158da57b86f95f53776fc53eb1"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "fancy-gooey-svg-filter",
      "type": "registry:component",
      "title": "Gooey SVG Filter",
      "description": "Defines a configurable SVG blur and color-matrix filter for caller-provided content.",
      "author": "Daniel Petho",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/fancy-components/components/fancy-gooey-svg-filter/gooey-svg-filter.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fancy-gooey-svg-filter.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "svg",
            "filter",
            "gooey",
            "blur"
          ],
          "renderer": "svg",
          "preview": "previews/fancy-gooey-svg-filter.tsx",
          "source": {
            "project": "Fancy Components",
            "repository": "https://github.com/danielpetho/fancy",
            "revision": "f9f62c61207b2dd3210476dd98af3c9a5be24094",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/fancy-gooey-svg-filter/gooey-svg-filter.tsx",
                "upstreamPath": "src/fancy/components/filter/gooey-svg-filter.tsx",
                "permalink": "https://github.com/danielpetho/fancy/blob/f9f62c61207b2dd3210476dd98af3c9a5be24094/src/fancy/components/filter/gooey-svg-filter.tsx",
                "upstreamSha256": "sha256:d06a3858bb66a1537dabfd3dcb30886997da974a3e1f6d76f9855dc519fcfc90",
                "contentSha256": "sha256:d06a3858bb66a1537dabfd3dcb30886997da974a3e1f6d76f9855dc519fcfc90",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/fancy/components/filter/gooey-svg-filter.tsx",
            "copyright": [
              "Copyright (c) 2024 Daniel Petho"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/danielpetho/fancy/blob/f9f62c61207b2dd3210476dd98af3c9a5be24094/LICENSE",
              "sha256": "sha256:39b0d9c112b4e80383da88660cbaa64972f741e80205c14fa1b779ff1989cc09",
              "localPath": "registry/sources/fancy-components/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "gooey-svg-filter",
            "sourceHash": "sha256:0e1b8da4ec83a6c2c5cb54c99a65fa0080170f6ba618b288fb6b3a9eb2d75a88",
            "contentHash": "sha256:0e1b8da4ec83a6c2c5cb54c99a65fa0080170f6ba618b288fb6b3a9eb2d75a88",
            "structureHash": "sha256:160cfc987b4d787aab086a3d3030360db7d8719e2de2b89c288ec0a21f4fb490"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "fancy-pixelate-svg-filter",
      "type": "registry:component",
      "title": "Pixelate SVG Filter",
      "description": "Defines a configurable SVG convolution and tiling filter that pixelates caller-provided content.",
      "author": "Daniel Petho",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/fancy-components/components/fancy-pixelate-svg-filter/pixelate-svg-filter.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fancy-pixelate-svg-filter.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "svg",
            "filter",
            "pixelate",
            "convolution"
          ],
          "renderer": "svg",
          "preview": "previews/fancy-pixelate-svg-filter.tsx",
          "source": {
            "project": "Fancy Components",
            "repository": "https://github.com/danielpetho/fancy",
            "revision": "f9f62c61207b2dd3210476dd98af3c9a5be24094",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/fancy-pixelate-svg-filter/pixelate-svg-filter.tsx",
                "upstreamPath": "src/fancy/components/filter/pixelate-svg-filter.tsx",
                "permalink": "https://github.com/danielpetho/fancy/blob/f9f62c61207b2dd3210476dd98af3c9a5be24094/src/fancy/components/filter/pixelate-svg-filter.tsx",
                "upstreamSha256": "sha256:554b9b58b748c460fe0ff443c25ce575bec47ebc40ef3400a874675fdb392e71",
                "contentSha256": "sha256:554b9b58b748c460fe0ff443c25ce575bec47ebc40ef3400a874675fdb392e71",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/fancy/components/filter/pixelate-svg-filter.tsx",
            "copyright": [
              "Copyright (c) 2024 Daniel Petho"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/danielpetho/fancy/blob/f9f62c61207b2dd3210476dd98af3c9a5be24094/LICENSE",
              "sha256": "sha256:39b0d9c112b4e80383da88660cbaa64972f741e80205c14fa1b779ff1989cc09",
              "localPath": "registry/sources/fancy-components/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "pixelate-svg-filter",
            "sourceHash": "sha256:9bd70fe84e2019238c3ddc4dbc9d80fc388f36f2840cfa1c8c13576dc8cbd7dd",
            "contentHash": "sha256:9bd70fe84e2019238c3ddc4dbc9d80fc388f36f2840cfa1c8c13576dc8cbd7dd",
            "structureHash": "sha256:1c3907c3c5f906f9c79508c651cae7cc29aed2a1d154d13d5b53497197897273"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "fluid-color-picker",
      "type": "registry:component",
      "title": "Multi-Format Color Picker",
      "description": "Edits HEX, RGB, HSL, and OKLCH colors with alpha, swatches, keyboard controls, and an optional popover trigger.",
      "author": "Micka Touillaud",
      "dependencies": [
        "@base-ui/react@1.4.1",
        "@radix-ui/react-slider@1.3.6",
        "@radix-ui/react-tooltip@1.2.8",
        "clsx@2.1.1",
        "framer-motion@12.42.2",
        "lucide-react@0.564.0",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/fluid-functionalism/components/color-picker.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/color-picker.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/components/slider.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/slider.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/components/tooltip.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/tooltip.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/hooks/use-proximity-hover.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/fluid-functionalism/hooks/use-proximity-hover.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/utils.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/springs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/springs.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/font-weight.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/font-weight.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/shape-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/shape-context.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/icon-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/icon-context.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/surface-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/surface-context.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/surface-classes.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/surface-classes.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/elevated.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/elevated.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "cssVars": {
        "theme": {
          "color-hover": "var(--hover)",
          "color-active": "var(--active)",
          "color-surface-1": "var(--surface-1)",
          "color-surface-2": "var(--surface-2)",
          "color-surface-3": "var(--surface-3)",
          "color-surface-4": "var(--surface-4)",
          "color-surface-5": "var(--surface-5)",
          "color-surface-6": "var(--surface-6)",
          "color-surface-7": "var(--surface-7)",
          "color-surface-8": "var(--surface-8)",
          "shadow-surface-1": "var(--shadow-1)",
          "shadow-surface-2": "var(--shadow-2)",
          "shadow-surface-3": "var(--shadow-3)",
          "shadow-surface-4": "var(--shadow-4)",
          "shadow-surface-5": "var(--shadow-5)",
          "shadow-surface-6": "var(--shadow-6)",
          "shadow-surface-7": "var(--shadow-7)",
          "shadow-surface-8": "var(--shadow-8)"
        },
        "light": {
          "hover": "rgb(0 0 0 / 0.04)",
          "active": "rgb(0 0 0 / 0.07)",
          "surface-1": "#FAFAFA",
          "surface-2": "#FCFCFC",
          "surface-3": "#FFFFFF",
          "surface-4": "#FFFFFF",
          "surface-5": "#FFFFFF",
          "surface-6": "#FFFFFF",
          "surface-7": "#FFFFFF",
          "surface-8": "#FFFFFF",
          "shadow-color": "rgb(0 0 0 / 0.06)",
          "shadow-1": "0 0 0 1px var(--shadow-color)",
          "shadow-2": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color)",
          "shadow-3": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color)",
          "shadow-4": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color)",
          "shadow-5": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color)",
          "shadow-6": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color)",
          "shadow-7": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color)",
          "shadow-8": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color), 0 96px 96px -48px var(--shadow-color)",
          "checker-a": "#bbbbbb",
          "checker-b": "#ffffff"
        },
        "dark": {
          "hover": "rgb(255 255 255 / 0.06)",
          "active": "rgb(255 255 255 / 0.1)",
          "surface-1": "#171717",
          "surface-2": "#1E1E1E",
          "surface-3": "#252525",
          "surface-4": "#2C2C2C",
          "surface-5": "#333333",
          "surface-6": "#3A3A3A",
          "surface-7": "#414141",
          "surface-8": "#484848",
          "shadow-color": "rgb(0 0 0 / 0.18)",
          "shadow-1": "inset 0 0 0 1px rgb(255 255 255 / 0.02)",
          "shadow-2": "inset 0 1px 0 rgb(255 255 255 / 0.01), inset 0 0 0 1px rgb(255 255 255 / 0.02), 0 1px 1px -0.5px var(--shadow-color)",
          "shadow-3": "inset 0 1px 0 rgb(255 255 255 / 0.02), inset 0 0 0 1px rgb(255 255 255 / 0.02), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color)",
          "shadow-4": "inset 0 1px 0 rgb(255 255 255 / 0.02), inset 0 0 0 1px rgb(255 255 255 / 0.04), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color)",
          "shadow-5": "inset 0 1px 0 rgb(255 255 255 / 0.04), inset 0 0 0 1px rgb(255 255 255 / 0.04), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color)",
          "shadow-6": "inset 0 1px 0 rgb(255 255 255 / 0.04), inset 0 0 0 1px rgb(255 255 255 / 0.06), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color)",
          "shadow-7": "inset 0 1px 0 rgb(255 255 255 / 0.06), inset 0 0 0 1px rgb(255 255 255 / 0.06), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color)",
          "shadow-8": "inset 0 1px 0 rgb(255 255 255 / 0.06), inset 0 0 0 1px rgb(255 255 255 / 0.06), 0 48px 48px -24px var(--shadow-color), 0 96px 96px -48px var(--shadow-color)",
          "checker-a": "#1f1f1f",
          "checker-b": "#2a2a2a"
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "color",
            "oklch",
            "alpha",
            "swatches",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/fluid-color-picker.tsx",
          "source": {
            "project": "Fluid Functionalism",
            "repository": "https://github.com/mickadesign/fluid-functionalism",
            "revision": "a6c95ed6df721ef7bd8f18a556b95008c6f51c82",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/color-picker.tsx",
                "upstreamPath": "registry/default/color-picker.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/color-picker.tsx",
                "upstreamSha256": "sha256:e8a14b94899f73a0641b42c0e854529c14a9ca59d1d6a5dc7bbef1a8260bb9b0",
                "contentSha256": "sha256:230d15b30dfbc1341e684e1735c87480b1b698748b8245d3d181303422af0dcf",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files.",
                  "Wrapped both exported picker variants in MotionConfig with the user's reduced-motion preference.",
                  "Replaced the nested remove role inside the popover trigger with a separate native button and logical edge styling.",
                  "Changed the popover transform origin from a physical left edge to a direction-neutral top edge.",
                  "Kept color codes, percentages, and channel order left-to-right inside right-to-left documents."
                ]
              },
              {
                "shippedPath": "components/slider.tsx",
                "upstreamPath": "registry/radix/slider.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/radix/slider.tsx",
                "upstreamSha256": "sha256:7209ff1e9ace730190aa8298fc3a70ff85552264ea48a4d8791457a7929e558f",
                "contentSha256": "sha256:61e26f124f0a33af332b049afd73297dac98c6398c94f7baa2703c61111bfe89",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files."
                ]
              },
              {
                "shippedPath": "components/tooltip.tsx",
                "upstreamPath": "registry/radix/tooltip.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/radix/tooltip.tsx",
                "upstreamSha256": "sha256:7ef6dbf27e96734239a3b7b1cb2cf61e029bbade6f60c9f553974940743ed9e2",
                "contentSha256": "sha256:cea71d350052aefc097501e15b190256b76d8ef35f3ffb91a966ef8362446da8",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files."
                ]
              },
              {
                "shippedPath": "hooks/use-proximity-hover.ts",
                "upstreamPath": "registry/default/hooks/use-proximity-hover.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/hooks/use-proximity-hover.ts",
                "upstreamSha256": "sha256:1347280bc17480a71cec066102c194d9fec6a226563f1a466f33f9b5b12912d0",
                "contentSha256": "sha256:1347280bc17480a71cec066102c194d9fec6a226563f1a466f33f9b5b12912d0",
                "changes": []
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "registry/default/lib/utils.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/utils.ts",
                "upstreamSha256": "sha256:c0adf27efbfa148d5abcf99e860f8e3e6c8fc77a1f99e023c08ef4f12e6ece29",
                "contentSha256": "sha256:c0adf27efbfa148d5abcf99e860f8e3e6c8fc77a1f99e023c08ef4f12e6ece29",
                "changes": []
              },
              {
                "shippedPath": "lib/springs.ts",
                "upstreamPath": "registry/default/lib/springs.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/springs.ts",
                "upstreamSha256": "sha256:e5fc49d09dcd9b6908c53193f8b5f85f6d2e8383c7d4571e296ee3c7c0eae1d0",
                "contentSha256": "sha256:e5fc49d09dcd9b6908c53193f8b5f85f6d2e8383c7d4571e296ee3c7c0eae1d0",
                "changes": []
              },
              {
                "shippedPath": "lib/font-weight.ts",
                "upstreamPath": "registry/default/lib/font-weight.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/font-weight.ts",
                "upstreamSha256": "sha256:ebf14da9058ada019f092aaeef36f4d2d4559020c07b8dbd59f5d394bf6be3d3",
                "contentSha256": "sha256:ebf14da9058ada019f092aaeef36f4d2d4559020c07b8dbd59f5d394bf6be3d3",
                "changes": []
              },
              {
                "shippedPath": "lib/shape-context.tsx",
                "upstreamPath": "registry/default/lib/shape-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/shape-context.tsx",
                "upstreamSha256": "sha256:a9ffe1869b9feb4d2b9f2f2eba985cd91dcb9d27beaf647e21d1c8edc329ad34",
                "contentSha256": "sha256:a9ffe1869b9feb4d2b9f2f2eba985cd91dcb9d27beaf647e21d1c8edc329ad34",
                "changes": []
              },
              {
                "shippedPath": "lib/icon-context.tsx",
                "upstreamPath": "registry/default/lib/icon-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/icon-context.tsx",
                "upstreamSha256": "sha256:8359799dc59017899a74d1f61e140b585cc49a2b1c652d29201742b8ef047e60",
                "contentSha256": "sha256:8359799dc59017899a74d1f61e140b585cc49a2b1c652d29201742b8ef047e60",
                "changes": []
              },
              {
                "shippedPath": "lib/surface-context.tsx",
                "upstreamPath": "registry/default/lib/surface-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/surface-context.tsx",
                "upstreamSha256": "sha256:e6832b57d8544e27ab9288e935dfdf6387bd91a461f47590463c16660bc89269",
                "contentSha256": "sha256:e6832b57d8544e27ab9288e935dfdf6387bd91a461f47590463c16660bc89269",
                "changes": []
              },
              {
                "shippedPath": "lib/surface-classes.ts",
                "upstreamPath": "registry/default/lib/surface-classes.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/surface-classes.ts",
                "upstreamSha256": "sha256:244185099df28a280f42dd0c9adfa23d671214c9556df68f8925adf5bfe70083",
                "contentSha256": "sha256:244185099df28a280f42dd0c9adfa23d671214c9556df68f8925adf5bfe70083",
                "changes": []
              },
              {
                "shippedPath": "lib/elevated.tsx",
                "upstreamPath": "registry/default/lib/elevated.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/elevated.tsx",
                "upstreamSha256": "sha256:570464628770dbcb31ae75c8bf6dd165b35ee349ad65dd686891d8cae036d59a",
                "contentSha256": "sha256:a59d9ab90f1f37b501666db3e1de31c8a2d3d7487aae751b95f511575e4de5f7",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/color-picker.tsx, registry/radix/slider.tsx, registry/radix/tooltip.tsx, registry/default/hooks/use-proximity-hover.ts, registry/default/lib/utils.ts, registry/default/lib/springs.ts, registry/default/lib/font-weight.ts, registry/default/lib/shape-context.tsx, registry/default/lib/icon-context.tsx, registry/default/lib/surface-context.tsx, registry/default/lib/surface-classes.ts, registry/default/lib/elevated.tsx",
            "copyright": [
              "Copyright (c) 2026 Micka Touillaud"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/LICENSE",
              "sha256": "sha256:750d76faab4c8f1d427ae3144625ce1ec1faa32807764836a0cc554833dbc61b",
              "localPath": "registry/sources/fluid-functionalism/LICENSE"
            },
            "notices": [
              "Registry styling metadata provenance is documented in registry/sources/fluid-functionalism/NOTICE.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/color-picker.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files. Wrapped both exported picker variants in MotionConfig with the user's reduced-motion preference. Replaced the nested remove role inside the popover trigger with a separate native button and logical edge styling. Changed the popover transform origin from a physical left edge to a direction-neutral top edge. Kept color codes, percentages, and channel order left-to-right inside right-to-left documents.",
              "reason": "Keep the copied composite self-contained, avoid nested interactive controls, and remove physical-direction assumptions."
            },
            {
              "shippedPath": "components/slider.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files.",
              "reason": "Resolve the copied support closure without consumer-specific project aliases."
            },
            {
              "shippedPath": "components/tooltip.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files.",
              "reason": "Resolve the copied support closure without consumer-specific project aliases."
            },
            {
              "shippedPath": "lib/elevated.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files.",
              "reason": "Resolve the copied support closure without consumer-specific project aliases."
            }
          ],
          "dedupe": {
            "family": "multi-format-color-picker",
            "sourceHash": "sha256:1dcfa51dcd26b3a2a3f28aee14d474f76fcd4f867982fecd24c217425c2a54b8",
            "contentHash": "sha256:8744d35dd28cae3e6a9f81f2b0189136b79613e10c2a14fc629cdee79d2daee8",
            "structureHash": "sha256:d40b522e41097fec784c6e71e11cfa1deb3d4b7d7b71da89efa60f7d44d080a3"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "fluid-message-composer",
      "type": "registry:component",
      "title": "Message Composer",
      "description": "Composes, attaches, queues, reorders, recalls, stops, and sends messages through controlled application state.",
      "author": "Micka Touillaud",
      "dependencies": [
        "@radix-ui/react-slot@1.2.4",
        "@radix-ui/react-tooltip@1.2.8",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "framer-motion@12.42.2",
        "lucide-react@0.564.0",
        "pdfjs-dist@5.7.284",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/fluid-functionalism/components/message-composer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/message-composer.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/components/file-thumbnail.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/file-thumbnail.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/components/button.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/button.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/components/tooltip.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/tooltip.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/utils.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/springs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/springs.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/font-weight.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/font-weight.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/shape-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/shape-context.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/icon-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/icon-context.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/surface-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/surface-context.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/surface-classes.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/surface-classes.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "css": {
        "@keyframes fluid-functionalism-spinner-move": {
          "to": {
            "stroke-dashoffset": "-100"
          }
        },
        "@keyframes fluid-functionalism-spinner-dash": {
          "0%, 100%": {
            "stroke-dasharray": "15 85"
          },
          "50%": {
            "stroke-dasharray": "40 60"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-hover": "var(--hover)",
          "color-active": "var(--active)",
          "color-surface-1": "var(--surface-1)",
          "color-surface-2": "var(--surface-2)",
          "color-surface-3": "var(--surface-3)",
          "color-surface-4": "var(--surface-4)",
          "color-surface-5": "var(--surface-5)",
          "color-surface-6": "var(--surface-6)",
          "color-surface-7": "var(--surface-7)",
          "color-surface-8": "var(--surface-8)",
          "shadow-surface-1": "var(--shadow-1)",
          "shadow-surface-2": "var(--shadow-2)",
          "shadow-surface-3": "var(--shadow-3)",
          "shadow-surface-4": "var(--shadow-4)",
          "shadow-surface-5": "var(--shadow-5)",
          "shadow-surface-6": "var(--shadow-6)",
          "shadow-surface-7": "var(--shadow-7)",
          "shadow-surface-8": "var(--shadow-8)"
        },
        "light": {
          "hover": "rgb(0 0 0 / 0.04)",
          "active": "rgb(0 0 0 / 0.07)",
          "surface-1": "#FAFAFA",
          "surface-2": "#FCFCFC",
          "surface-3": "#FFFFFF",
          "surface-4": "#FFFFFF",
          "surface-5": "#FFFFFF",
          "surface-6": "#FFFFFF",
          "surface-7": "#FFFFFF",
          "surface-8": "#FFFFFF",
          "shadow-color": "rgb(0 0 0 / 0.06)",
          "shadow-1": "0 0 0 1px var(--shadow-color)",
          "shadow-2": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color)",
          "shadow-3": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color)",
          "shadow-4": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color)",
          "shadow-5": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color)",
          "shadow-6": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color)",
          "shadow-7": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color)",
          "shadow-8": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color), 0 96px 96px -48px var(--shadow-color)"
        },
        "dark": {
          "hover": "rgb(255 255 255 / 0.06)",
          "active": "rgb(255 255 255 / 0.1)",
          "surface-1": "#171717",
          "surface-2": "#1E1E1E",
          "surface-3": "#252525",
          "surface-4": "#2C2C2C",
          "surface-5": "#333333",
          "surface-6": "#3A3A3A",
          "surface-7": "#414141",
          "surface-8": "#484848",
          "shadow-color": "rgb(0 0 0 / 0.18)",
          "shadow-1": "inset 0 0 0 1px rgb(255 255 255 / 0.02)",
          "shadow-2": "inset 0 1px 0 rgb(255 255 255 / 0.01), inset 0 0 0 1px rgb(255 255 255 / 0.02), 0 1px 1px -0.5px var(--shadow-color)",
          "shadow-3": "inset 0 1px 0 rgb(255 255 255 / 0.02), inset 0 0 0 1px rgb(255 255 255 / 0.02), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color)",
          "shadow-4": "inset 0 1px 0 rgb(255 255 255 / 0.02), inset 0 0 0 1px rgb(255 255 255 / 0.04), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color)",
          "shadow-5": "inset 0 1px 0 rgb(255 255 255 / 0.04), inset 0 0 0 1px rgb(255 255 255 / 0.04), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color)",
          "shadow-6": "inset 0 1px 0 rgb(255 255 255 / 0.04), inset 0 0 0 1px rgb(255 255 255 / 0.06), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color)",
          "shadow-7": "inset 0 1px 0 rgb(255 255 255 / 0.06), inset 0 0 0 1px rgb(255 255 255 / 0.06), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color)",
          "shadow-8": "inset 0 1px 0 rgb(255 255 255 / 0.06), inset 0 0 0 1px rgb(255 255 255 / 0.06), 0 48px 48px -24px var(--shadow-color), 0 96px 96px -48px var(--shadow-color)"
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "composer",
            "attachments",
            "queue",
            "history",
            "drag"
          ],
          "renderer": "dom",
          "preview": "previews/fluid-message-composer.tsx",
          "source": {
            "project": "Fluid Functionalism",
            "repository": "https://github.com/mickadesign/fluid-functionalism",
            "revision": "a6c95ed6df721ef7bd8f18a556b95008c6f51c82",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/message-composer.tsx",
                "upstreamPath": "registry/default/input-message.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/input-message.tsx",
                "upstreamSha256": "sha256:82743b01215ae1c518a43f5cc2db9bd0998867b4dcdf8ef113666faedaa6fdf3",
                "contentSha256": "sha256:37c1cf854e2e7bb020fe3ffe4b5dd2ac94afb32a5919a646dd5520c443175bf3",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files.",
                  "Wrapped the composer in MotionConfig with the user's reduced-motion preference.",
                  "Changed the attachment remove control from a physical right offset to the logical inline end."
                ]
              },
              {
                "shippedPath": "components/file-thumbnail.tsx",
                "upstreamPath": "registry/default/file-thumbnail.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/file-thumbnail.tsx",
                "upstreamSha256": "sha256:7e5013a8935a7185e902d2a8f73801982f5c2d7277eb110773fed2d2637da9cd",
                "contentSha256": "sha256:999f02458e24c3d816c012121a9c645a12e7c454739ee5bc7f77fce445d792a9",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files.",
                  "Resolved the PDF worker from the installed pdfjs-dist package instead of a remote CDN URL.",
                  "Updated the PDF fallback comment to describe local worker loading instead of CDN failure."
                ]
              },
              {
                "shippedPath": "components/button.tsx",
                "upstreamPath": "registry/radix/button.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/radix/button.tsx",
                "upstreamSha256": "sha256:c463f72db5bafe84066236ba035415e8770dd77f0a20bb38169bf7c5dd6cd953",
                "contentSha256": "sha256:17f4ef4efc4d709717d473ad74ca62c229dad852f3d0edd693f37a37adbedc5b",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files.",
                  "Disabled scale, stroke, and spinner motion when the user requests reduced motion.",
                  "Namespaced the two spinner animation names to avoid collisions in consumer stylesheets."
                ]
              },
              {
                "shippedPath": "components/tooltip.tsx",
                "upstreamPath": "registry/radix/tooltip.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/radix/tooltip.tsx",
                "upstreamSha256": "sha256:7ef6dbf27e96734239a3b7b1cb2cf61e029bbade6f60c9f553974940743ed9e2",
                "contentSha256": "sha256:cea71d350052aefc097501e15b190256b76d8ef35f3ffb91a966ef8362446da8",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "registry/default/lib/utils.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/utils.ts",
                "upstreamSha256": "sha256:c0adf27efbfa148d5abcf99e860f8e3e6c8fc77a1f99e023c08ef4f12e6ece29",
                "contentSha256": "sha256:c0adf27efbfa148d5abcf99e860f8e3e6c8fc77a1f99e023c08ef4f12e6ece29",
                "changes": []
              },
              {
                "shippedPath": "lib/springs.ts",
                "upstreamPath": "registry/default/lib/springs.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/springs.ts",
                "upstreamSha256": "sha256:e5fc49d09dcd9b6908c53193f8b5f85f6d2e8383c7d4571e296ee3c7c0eae1d0",
                "contentSha256": "sha256:e5fc49d09dcd9b6908c53193f8b5f85f6d2e8383c7d4571e296ee3c7c0eae1d0",
                "changes": []
              },
              {
                "shippedPath": "lib/font-weight.ts",
                "upstreamPath": "registry/default/lib/font-weight.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/font-weight.ts",
                "upstreamSha256": "sha256:ebf14da9058ada019f092aaeef36f4d2d4559020c07b8dbd59f5d394bf6be3d3",
                "contentSha256": "sha256:ebf14da9058ada019f092aaeef36f4d2d4559020c07b8dbd59f5d394bf6be3d3",
                "changes": []
              },
              {
                "shippedPath": "lib/shape-context.tsx",
                "upstreamPath": "registry/default/lib/shape-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/shape-context.tsx",
                "upstreamSha256": "sha256:a9ffe1869b9feb4d2b9f2f2eba985cd91dcb9d27beaf647e21d1c8edc329ad34",
                "contentSha256": "sha256:a9ffe1869b9feb4d2b9f2f2eba985cd91dcb9d27beaf647e21d1c8edc329ad34",
                "changes": []
              },
              {
                "shippedPath": "lib/icon-context.tsx",
                "upstreamPath": "registry/default/lib/icon-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/icon-context.tsx",
                "upstreamSha256": "sha256:8359799dc59017899a74d1f61e140b585cc49a2b1c652d29201742b8ef047e60",
                "contentSha256": "sha256:8359799dc59017899a74d1f61e140b585cc49a2b1c652d29201742b8ef047e60",
                "changes": []
              },
              {
                "shippedPath": "lib/surface-context.tsx",
                "upstreamPath": "registry/default/lib/surface-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/surface-context.tsx",
                "upstreamSha256": "sha256:e6832b57d8544e27ab9288e935dfdf6387bd91a461f47590463c16660bc89269",
                "contentSha256": "sha256:e6832b57d8544e27ab9288e935dfdf6387bd91a461f47590463c16660bc89269",
                "changes": []
              },
              {
                "shippedPath": "lib/surface-classes.ts",
                "upstreamPath": "registry/default/lib/surface-classes.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/surface-classes.ts",
                "upstreamSha256": "sha256:244185099df28a280f42dd0c9adfa23d671214c9556df68f8925adf5bfe70083",
                "contentSha256": "sha256:244185099df28a280f42dd0c9adfa23d671214c9556df68f8925adf5bfe70083",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/input-message.tsx, registry/default/file-thumbnail.tsx, registry/radix/button.tsx, registry/radix/tooltip.tsx, registry/default/lib/utils.ts, registry/default/lib/springs.ts, registry/default/lib/font-weight.ts, registry/default/lib/shape-context.tsx, registry/default/lib/icon-context.tsx, registry/default/lib/surface-context.tsx, registry/default/lib/surface-classes.ts",
            "copyright": [
              "Copyright (c) 2026 Micka Touillaud"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/LICENSE",
              "sha256": "sha256:750d76faab4c8f1d427ae3144625ce1ec1faa32807764836a0cc554833dbc61b",
              "localPath": "registry/sources/fluid-functionalism/LICENSE"
            },
            "notices": [
              "Registry styling metadata provenance is documented in registry/sources/fluid-functionalism/NOTICE.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/message-composer.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files. Wrapped the composer in MotionConfig with the user's reduced-motion preference. Changed the attachment remove control from a physical right offset to the logical inline end.",
              "reason": "Keep the copied composer self-contained and preserve its controls in reduced-motion and RTL contexts."
            },
            {
              "shippedPath": "components/file-thumbnail.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files. Resolved the PDF worker from the installed pdfjs-dist package instead of a remote CDN URL. Updated the PDF fallback comment to describe local worker loading instead of CDN failure.",
              "reason": "Keep the copied attachment preview self-contained without a remote runtime asset."
            },
            {
              "shippedPath": "components/button.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files. Disabled scale, stroke, and spinner motion when the user requests reduced motion. Namespaced the two spinner animation names to avoid collisions in consumer stylesheets.",
              "reason": "Keep shared actions self-contained and prevent decorative motion when reduced motion is requested."
            },
            {
              "shippedPath": "components/tooltip.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files.",
              "reason": "Resolve the copied support closure without consumer-specific project aliases."
            }
          ],
          "dedupe": {
            "family": "queued-message-composer",
            "sourceHash": "sha256:4ebcb5a55c515561eb8ba1c9078beebdee24170787b1d7f800ce09e0a8bf9ac6",
            "contentHash": "sha256:12d5a36555c455dde84cdc876741bd91beee635fb95ee9e4ff1c655691a6a873",
            "structureHash": "sha256:b94a8d72304b086c3e14eb4d88b58d1b7f0ea1ce689e9a074064a4286fb6fc6b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "fluid-question-flow",
      "type": "registry:component",
      "title": "Question Flow",
      "description": "Runs a controlled or uncontrolled sequence of single-choice, multi-choice, and validated free-text questions.",
      "author": "Micka Touillaud",
      "dependencies": [
        "@base-ui/react@1.4.1",
        "@radix-ui/react-slot@1.2.4",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "framer-motion@12.42.2",
        "lucide-react@0.564.0",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/fluid-functionalism/components/question-flow.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/question-flow.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/components/button.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/fluid-functionalism/components/button.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/hooks/use-proximity-hover.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/fluid-functionalism/hooks/use-proximity-hover.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/hooks/use-merge-split.tsx",
          "type": "registry:hook",
          "target": "@components/taste-blocks/fluid-functionalism/hooks/use-merge-split.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/utils.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/springs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/springs.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/font-weight.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/font-weight.ts"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/shape-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/shape-context.tsx"
        },
        {
          "path": "registry/sources/fluid-functionalism/lib/icon-context.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fluid-functionalism/lib/icon-context.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "css": {
        "@keyframes fluid-functionalism-spinner-move": {
          "to": {
            "stroke-dashoffset": "-100"
          }
        },
        "@keyframes fluid-functionalism-spinner-dash": {
          "0%, 100%": {
            "stroke-dasharray": "15 85"
          },
          "50%": {
            "stroke-dasharray": "40 60"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-hover": "var(--hover)",
          "color-active": "var(--active)"
        },
        "light": {
          "hover": "rgb(0 0 0 / 0.04)",
          "active": "rgb(0 0 0 / 0.07)"
        },
        "dark": {
          "hover": "rgb(255 255 255 / 0.06)",
          "active": "rgb(255 255 255 / 0.1)"
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "questions",
            "wizard",
            "keyboard",
            "proximity",
            "validation"
          ],
          "renderer": "dom",
          "preview": "previews/fluid-question-flow.tsx",
          "source": {
            "project": "Fluid Functionalism",
            "repository": "https://github.com/mickadesign/fluid-functionalism",
            "revision": "a6c95ed6df721ef7bd8f18a556b95008c6f51c82",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/question-flow.tsx",
                "upstreamPath": "registry/default/ask-user-questions.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/ask-user-questions.tsx",
                "upstreamSha256": "sha256:5e9a9a7c93233f9377658b923764beaa5c26f98556ffcabd0aaca994600e04b9",
                "contentSha256": "sha256:f50d823a5ce66b3b89c18224351ab87a90eac8e9ae975b5e4f7581f8692bfdae",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files.",
                  "Wrapped the component in MotionConfig with the user's reduced-motion preference.",
                  "Detected inherited direction, swapped previous and next arrow glyphs, and reversed horizontal navigation keys in right-to-left documents with observer cleanup."
                ]
              },
              {
                "shippedPath": "components/button.tsx",
                "upstreamPath": "registry/radix/button.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/radix/button.tsx",
                "upstreamSha256": "sha256:c463f72db5bafe84066236ba035415e8770dd77f0a20bb38169bf7c5dd6cd953",
                "contentSha256": "sha256:17f4ef4efc4d709717d473ad74ca62c229dad852f3d0edd693f37a37adbedc5b",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files.",
                  "Disabled scale, stroke, and spinner motion when the user requests reduced motion.",
                  "Namespaced the two spinner animation names to avoid collisions in consumer stylesheets."
                ]
              },
              {
                "shippedPath": "hooks/use-proximity-hover.ts",
                "upstreamPath": "registry/default/hooks/use-proximity-hover.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/hooks/use-proximity-hover.ts",
                "upstreamSha256": "sha256:1347280bc17480a71cec066102c194d9fec6a226563f1a466f33f9b5b12912d0",
                "contentSha256": "sha256:1347280bc17480a71cec066102c194d9fec6a226563f1a466f33f9b5b12912d0",
                "changes": []
              },
              {
                "shippedPath": "hooks/use-merge-split.tsx",
                "upstreamPath": "registry/default/hooks/use-merge-split.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/hooks/use-merge-split.tsx",
                "upstreamSha256": "sha256:20cd742095ba8b1d11f9fb224941dc06e4c258527694dacb07132a758a2d9114",
                "contentSha256": "sha256:8fb2ca6eafa3dc1bc6cc9725e1ce642442d258d1a31e726805302e3c687791cc",
                "changes": [
                  "Repointed upstream project aliases to the bundled source-local support files."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "registry/default/lib/utils.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/utils.ts",
                "upstreamSha256": "sha256:c0adf27efbfa148d5abcf99e860f8e3e6c8fc77a1f99e023c08ef4f12e6ece29",
                "contentSha256": "sha256:c0adf27efbfa148d5abcf99e860f8e3e6c8fc77a1f99e023c08ef4f12e6ece29",
                "changes": []
              },
              {
                "shippedPath": "lib/springs.ts",
                "upstreamPath": "registry/default/lib/springs.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/springs.ts",
                "upstreamSha256": "sha256:e5fc49d09dcd9b6908c53193f8b5f85f6d2e8383c7d4571e296ee3c7c0eae1d0",
                "contentSha256": "sha256:e5fc49d09dcd9b6908c53193f8b5f85f6d2e8383c7d4571e296ee3c7c0eae1d0",
                "changes": []
              },
              {
                "shippedPath": "lib/font-weight.ts",
                "upstreamPath": "registry/default/lib/font-weight.ts",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/font-weight.ts",
                "upstreamSha256": "sha256:ebf14da9058ada019f092aaeef36f4d2d4559020c07b8dbd59f5d394bf6be3d3",
                "contentSha256": "sha256:ebf14da9058ada019f092aaeef36f4d2d4559020c07b8dbd59f5d394bf6be3d3",
                "changes": []
              },
              {
                "shippedPath": "lib/shape-context.tsx",
                "upstreamPath": "registry/default/lib/shape-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/shape-context.tsx",
                "upstreamSha256": "sha256:a9ffe1869b9feb4d2b9f2f2eba985cd91dcb9d27beaf647e21d1c8edc329ad34",
                "contentSha256": "sha256:a9ffe1869b9feb4d2b9f2f2eba985cd91dcb9d27beaf647e21d1c8edc329ad34",
                "changes": []
              },
              {
                "shippedPath": "lib/icon-context.tsx",
                "upstreamPath": "registry/default/lib/icon-context.tsx",
                "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/registry/default/lib/icon-context.tsx",
                "upstreamSha256": "sha256:8359799dc59017899a74d1f61e140b585cc49a2b1c652d29201742b8ef047e60",
                "contentSha256": "sha256:8359799dc59017899a74d1f61e140b585cc49a2b1c652d29201742b8ef047e60",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/ask-user-questions.tsx, registry/radix/button.tsx, registry/default/hooks/use-proximity-hover.ts, registry/default/hooks/use-merge-split.tsx, registry/default/lib/utils.ts, registry/default/lib/springs.ts, registry/default/lib/font-weight.ts, registry/default/lib/shape-context.tsx, registry/default/lib/icon-context.tsx",
            "copyright": [
              "Copyright (c) 2026 Micka Touillaud"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/mickadesign/fluid-functionalism/blob/a6c95ed6df721ef7bd8f18a556b95008c6f51c82/LICENSE",
              "sha256": "sha256:750d76faab4c8f1d427ae3144625ce1ec1faa32807764836a0cc554833dbc61b",
              "localPath": "registry/sources/fluid-functionalism/LICENSE"
            },
            "notices": [
              "Registry styling metadata provenance is documented in registry/sources/fluid-functionalism/NOTICE.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/question-flow.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files. Wrapped the component in MotionConfig with the user's reduced-motion preference. Detected inherited direction, swapped previous and next arrow glyphs, and reversed horizontal navigation keys in right-to-left documents with observer cleanup.",
              "reason": "Keep the copied interaction self-contained, direction-aware, and deterministic for reduced-motion users."
            },
            {
              "shippedPath": "components/button.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files. Disabled scale, stroke, and spinner motion when the user requests reduced motion. Namespaced the two spinner animation names to avoid collisions in consumer stylesheets.",
              "reason": "Keep shared actions self-contained and prevent decorative motion when reduced motion is requested."
            },
            {
              "shippedPath": "hooks/use-merge-split.tsx",
              "change": "Repointed upstream project aliases to the bundled source-local support files.",
              "reason": "Resolve the copied support closure without consumer-specific project aliases."
            }
          ],
          "dedupe": {
            "family": "stepped-question-flow",
            "sourceHash": "sha256:76a263d85179b2dbb97407abc29547113d71878d5f1c7b48bb5935cd4adf3e58",
            "contentHash": "sha256:bd80f367131765f87cb7c0ed59bb44d34bb3ba48232534451388abcce31c4207",
            "structureHash": "sha256:e073c795a9ac771633afa881661af10fcb3e632e0bb516dae7deebd96e2bfe08"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "fontuccine-tangent-stretch",
      "type": "registry:component",
      "title": "Tangent Stretch Text",
      "description": "Remaps caller-provided font outlines along glyph tangents in response to a configured interaction signal.",
      "author": "Fontuccine contributors",
      "dependencies": [
        "opentype.js@1.3.4"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/fontuccine/components/fontuccine/react/index.ts",
          "type": "registry:component",
          "target": "@components/taste-blocks/fontuccine/react/index.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/flex-profile.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/flex-profile.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/geometry/segments.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/geometry/segments.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/kerning.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/kerning.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/lut.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/lut.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/sampling/outline.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/sampling/outline.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/spatial/kdtree.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/spatial/kdtree.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/types.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/core/winding.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/core/winding.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/dom/overlay.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/dom/overlay.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/engine/attach.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/engine/attach.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/engine/font-load.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/engine/font-load.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/engine/glyphs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/engine/glyphs.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/engine/tier-select.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/engine/tier-select.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/engine/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/engine/types.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/font/opentype-js.d.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/font/opentype-js.d.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/font/parser.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/font/parser.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/easing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/easing.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/gating.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/gating.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/reduced-motion.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/reduced-motion.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/spring.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/spring.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/stimuli/hover.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/stimuli/hover.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/stimuli/proximity.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/stimuli/proximity.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/stimuli/scroll-velocity.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/stimuli/scroll-velocity.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/stimuli/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/stimuli/types.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/stretch-controller.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/stretch-controller.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/interaction/ticker.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/interaction/ticker.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/svg/renderer.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/svg/renderer.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/svg/split.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/svg/split.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/vf/detect.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/vf/detect.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/vf/probe.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/vf/probe.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/vf/renderer.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/vf/renderer.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/gl/capability.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/gl/capability.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/gl/device.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/gl/device.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/gl/shaders.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/gl/shaders.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/gl/shared.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/gl/shared.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/lut-texture.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/lut-texture.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/msdf/atlas.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/msdf/atlas.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/msdf/client.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/msdf/client.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/msdf/generator.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/msdf/generator.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/msdf/worker.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/msdf/worker.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/parity.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/parity.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/renderer.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/renderer.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/slice-grid.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/slice-grid.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/webgl/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/webgl/types.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/worker/analysis-worker.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/worker/analysis-worker.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/worker/analyze.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/worker/analyze.ts"
        },
        {
          "path": "registry/sources/fontuccine/components/fontuccine/worker/client.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/fontuccine/worker/client.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "typography",
            "tangent",
            "stretch"
          ],
          "renderer": "svg",
          "preview": "previews/fontuccine-tangent-stretch.tsx",
          "source": {
            "project": "Fontuccine",
            "repository": "https://github.com/charbelmalo/fontuccine",
            "revision": "1261bd116c7915a617ed21c85adab10bba6ca1a7",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/fontuccine/react/index.ts",
                "upstreamPath": "src/react/index.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/react/index.ts",
                "upstreamSha256": "sha256:90ac23192aaee9dcd2c3c816bd90f41262f4f7e5c976fa68235ec3ab95a8cd52",
                "contentSha256": "sha256:81c5b56a0a26bdc6e12908d47dae6b1149d7e59129e28aad27f978c5cc9e3d29",
                "changes": [
                  "Added the client-module boundary, removed explicit `.ts` import suffixes, and reused a stable empty configuration across renders."
                ]
              },
              {
                "shippedPath": "components/fontuccine/core/flex-profile.ts",
                "upstreamPath": "src/core/flex-profile.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/flex-profile.ts",
                "upstreamSha256": "sha256:79f2fc20b64359c851afa7175f70553c299aa081efa692bcbe20746a9f5049e0",
                "contentSha256": "sha256:0d9c82d04bb1e2ab6da1b505d7cb40919c5c4ef1a38c62c99ff3603da76913c6",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/core/geometry/segments.ts",
                "upstreamPath": "src/core/geometry/segments.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/geometry/segments.ts",
                "upstreamSha256": "sha256:25f9e09ac73881ecee900d905442312b44b9d6d0d2218a3038ffc11f40b2301a",
                "contentSha256": "sha256:3d09202ba70c72a4e27175621f7c1b867b4f6f81635bb90b6c235a6f5ae2f205",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/core/kerning.ts",
                "upstreamPath": "src/core/kerning.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/kerning.ts",
                "upstreamSha256": "sha256:a24818a495d6b5240ec5a95d33a3123cd5389cf52125661a5bfb646ce7754dfa",
                "contentSha256": "sha256:6dd91ffd8cefd89556379bbba2737c4c27dd97a0d7781ecd6dc2f8eb79bbab86",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/core/lut.ts",
                "upstreamPath": "src/core/lut.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/lut.ts",
                "upstreamSha256": "sha256:3bd12ee344b734b9fb16f1a4c64bb131e071320fc8e20ed338bed2bc913c5e75",
                "contentSha256": "sha256:971258c55c5b8db9e45b8dbc5bd2cf25f88dd85560b61cef70049ce9e0b4bce7",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/core/sampling/outline.ts",
                "upstreamPath": "src/core/sampling/outline.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/sampling/outline.ts",
                "upstreamSha256": "sha256:6860960a789b1ed191e83c7196cbffdd4dfed771d1ce69bcb6cabb3e126c3c09",
                "contentSha256": "sha256:817bc55e3a8f8c3be64c2f9eb7c703971c5d0513a8f04d67a8a5e60021f77899",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/core/spatial/kdtree.ts",
                "upstreamPath": "src/core/spatial/kdtree.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/spatial/kdtree.ts",
                "upstreamSha256": "sha256:7fdd7612452e74fbff5eb71cea405f75743669094ad5419e7390c1caafbfd9a7",
                "contentSha256": "sha256:7fdd7612452e74fbff5eb71cea405f75743669094ad5419e7390c1caafbfd9a7",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/core/types.ts",
                "upstreamPath": "src/core/types.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/types.ts",
                "upstreamSha256": "sha256:3a96b6ed9462f13dddc5db467a848bf9830e2b90db791cf0c11305f9d5c3120d",
                "contentSha256": "sha256:3a96b6ed9462f13dddc5db467a848bf9830e2b90db791cf0c11305f9d5c3120d",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/core/winding.ts",
                "upstreamPath": "src/core/winding.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/core/winding.ts",
                "upstreamSha256": "sha256:c14f00b0aa55c8f138480fad7b090ca5c4c97ca04300ce6f24fe2e8ab49d1751",
                "contentSha256": "sha256:a4240265abee4987b321ccc862d070b43048173abb98709bb79c002f1608e0dd",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/dom/overlay.ts",
                "upstreamPath": "src/dom/overlay.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/dom/overlay.ts",
                "upstreamSha256": "sha256:82428803d858d063166f3c118c8d56aeffdd16635e94ae835e21ce3a12834e2a",
                "contentSha256": "sha256:82428803d858d063166f3c118c8d56aeffdd16635e94ae835e21ce3a12834e2a",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/engine/attach.ts",
                "upstreamPath": "src/engine/attach.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/engine/attach.ts",
                "upstreamSha256": "sha256:094e4df1d9bb0c69ca560c819b93f85104922d31824100d3bf92df99b4607a75",
                "contentSha256": "sha256:4ab573c74cb1ef5aeb7de602fef940268e777dd9d2c546aa9da4e12de88c2393",
                "changes": [
                  "Removed explicit `.ts` suffixes, kept RTL output as untouched native text, and fell through to SVG when WebGL backend construction failed."
                ]
              },
              {
                "shippedPath": "components/fontuccine/engine/font-load.ts",
                "upstreamPath": "src/engine/font-load.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/engine/font-load.ts",
                "upstreamSha256": "sha256:8386867d0fd7873b824aa1d94b5cfcc8d5b2d7efc633b8bf20b8aad63bb181e9",
                "contentSha256": "sha256:1cfbdaa6dad93dca89f2a142118b164697ba0bdea2bf20caef8a912eae55a39c",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/engine/glyphs.ts",
                "upstreamPath": "src/engine/glyphs.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/engine/glyphs.ts",
                "upstreamSha256": "sha256:e0ef10c79a4f01a7d302f3ca77352742034b3c6316668032f6425201f65296d7",
                "contentSha256": "sha256:52fdd2a0fbfc33617ead339a87048f9004435440c77fa3e86958e97a694422a3",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/engine/tier-select.ts",
                "upstreamPath": "src/engine/tier-select.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/engine/tier-select.ts",
                "upstreamSha256": "sha256:c661a81beb8b29d1898d40ffefdaba411c67aaf6407b77973fa85b6a7fe2d08f",
                "contentSha256": "sha256:c661a81beb8b29d1898d40ffefdaba411c67aaf6407b77973fa85b6a7fe2d08f",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/engine/types.ts",
                "upstreamPath": "src/engine/types.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/engine/types.ts",
                "upstreamSha256": "sha256:18b4f909052aba908fff92db6bacca97b6116d50426616e1f9a123cf39a0c643",
                "contentSha256": "sha256:2e1e30858c64ea5e7df001d15f9ad8249bbbc8acc8444d4eebee4edf204b918b",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/font/opentype-js.d.ts",
                "upstreamPath": "src/font/opentype-js.d.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/font/opentype-js.d.ts",
                "upstreamSha256": "sha256:dccbc65a13b6720f88cccc3763bcfb9178b3c6c41bfbde7effaca39d9285b1a7",
                "contentSha256": "sha256:dccbc65a13b6720f88cccc3763bcfb9178b3c6c41bfbde7effaca39d9285b1a7",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/font/parser.ts",
                "upstreamPath": "src/font/parser.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/font/parser.ts",
                "upstreamSha256": "sha256:7d631652140873327d40eebc3ad2886e55dbf4a88e2ab39a4436c8ef165b451a",
                "contentSha256": "sha256:63b4fc9c299cb6ed4bb3936e98efb7054245cc329f89e0afcb90dc169c90adfa",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/easing.ts",
                "upstreamPath": "src/interaction/easing.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/easing.ts",
                "upstreamSha256": "sha256:a2810a700b4f142801d24df12941e4fff8ce67034ea6c5ffa316c6875a267597",
                "contentSha256": "sha256:ff7a9d904b55f5c87c6ff90e3471c1034193f1ef937f0b73c704f0c51bd79944",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/gating.ts",
                "upstreamPath": "src/interaction/gating.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/gating.ts",
                "upstreamSha256": "sha256:5d62ef756fc14fc4c8c769f2a5a533094e472d3d438d55faaa30a9d7a6da8892",
                "contentSha256": "sha256:f2b1de125c03283b70744976f6775159027b9e85c96199243dffdd1a710b9fe9",
                "changes": [
                  "Added document visibility to the viewport gate and removed its listener during cleanup."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/reduced-motion.ts",
                "upstreamPath": "src/interaction/reduced-motion.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/reduced-motion.ts",
                "upstreamSha256": "sha256:444c06747638d27dd8930dfe8ebbc268c3941b1d8cbcdf1907195d3293644864",
                "contentSha256": "sha256:444c06747638d27dd8930dfe8ebbc268c3941b1d8cbcdf1907195d3293644864",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/interaction/spring.ts",
                "upstreamPath": "src/interaction/spring.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/spring.ts",
                "upstreamSha256": "sha256:a6f46489f71b444d9d9569211662bbcea62681c0176df1f790d82ba77d3c9ad9",
                "contentSha256": "sha256:a6f46489f71b444d9d9569211662bbcea62681c0176df1f790d82ba77d3c9ad9",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/interaction/stimuli/hover.ts",
                "upstreamPath": "src/interaction/stimuli/hover.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/stimuli/hover.ts",
                "upstreamSha256": "sha256:e7f2efcd6b5bff6e6b37e4be6d362c1bea4b345b7bc0d8503942f5176ba5e0c4",
                "contentSha256": "sha256:dd4cc166e21ad185fa77a7f20d2e94f147afca289e26c026670d074fa16b9ac0",
                "changes": [
                  "Removed explicit `.ts` import suffixes and made touch and pen hover input intentionally static."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/stimuli/proximity.ts",
                "upstreamPath": "src/interaction/stimuli/proximity.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/stimuli/proximity.ts",
                "upstreamSha256": "sha256:4d602e3efb491a96f990a75fc9c66635441b97e664d8c62a6b14597055e9c234",
                "contentSha256": "sha256:5856b4f5000bbcf50c916061d9465821fd04c11a08433a379caf245f389a9bc0",
                "changes": [
                  "Removed explicit `.ts` import suffixes and made touch and pen proximity input intentionally static."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/stimuli/scroll-velocity.ts",
                "upstreamPath": "src/interaction/stimuli/scroll-velocity.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/stimuli/scroll-velocity.ts",
                "upstreamSha256": "sha256:77a300fa22fab1dc0ff0124035f59a2d9d48a567d82cd94033c46e52278ecbe8",
                "contentSha256": "sha256:0f2638b5e393d7dd2b39e3b28192188a134f8a6436ccd76f3c58cf95773da2bd",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/stimuli/types.ts",
                "upstreamPath": "src/interaction/stimuli/types.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/stimuli/types.ts",
                "upstreamSha256": "sha256:38d8288c6c6b29dec876d994bb08703541c80cff3ff8529836888a609a78d86d",
                "contentSha256": "sha256:e50701545c20fb2fc22d12e4fb9057cce753aa77c5dc3ff0347c9f6eddb78408",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/stretch-controller.ts",
                "upstreamPath": "src/interaction/stretch-controller.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/stretch-controller.ts",
                "upstreamSha256": "sha256:33617c62abbc7339f93ac0a00815517d02eeeafdaed9f265d7ab3977e5d7e995",
                "contentSha256": "sha256:175aa6aab4511c869c94f24090c698dd637fb317c81f21a16094ca4eae3d38b1",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/interaction/ticker.ts",
                "upstreamPath": "src/interaction/ticker.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/interaction/ticker.ts",
                "upstreamSha256": "sha256:51c2773d24310b0a01f8bbd5915d241c6deb1526f96c9955e9ee85dd54b5ac6a",
                "contentSha256": "sha256:fdf1c543222720b70b7e0801b173daf3850ee85f2cd6956a7473ad2e64d805fb",
                "changes": [
                  "Stopped the shared ticker whenever no controller owns activity, including while gated render phases remain mounted."
                ]
              },
              {
                "shippedPath": "components/fontuccine/svg/renderer.ts",
                "upstreamPath": "src/svg/renderer.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/svg/renderer.ts",
                "upstreamSha256": "sha256:41d90882ad371d2c3ecad593c82451ef614e9f6ac5b5d36fa2d5df55567c8d75",
                "contentSha256": "sha256:15de6672f1bbf0088a08368c3a97f50e40338e1dca2845fb81b1cee3bd9ba7db",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/svg/split.ts",
                "upstreamPath": "src/svg/split.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/svg/split.ts",
                "upstreamSha256": "sha256:880600060777ae5ce331778e45c093e7d6becda3957b16467e3825a53c731fee",
                "contentSha256": "sha256:8643905b6a61942fdc5a63c2fb870b5ca18bbf4f35e9d1f7d5a9628d024305db",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/vf/detect.ts",
                "upstreamPath": "src/vf/detect.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/vf/detect.ts",
                "upstreamSha256": "sha256:f65fda690044da2e90bbc9706339dddd73b46d564f2ee319df7bbd2798c227f0",
                "contentSha256": "sha256:f65fda690044da2e90bbc9706339dddd73b46d564f2ee319df7bbd2798c227f0",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/vf/probe.ts",
                "upstreamPath": "src/vf/probe.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/vf/probe.ts",
                "upstreamSha256": "sha256:0f2bc638d3424319d0bbd7f3df2bc7f7ae0ce35a38475bbdedff7c45d191aed4",
                "contentSha256": "sha256:116b1e6078fbf63a22bb6231543345189c21aaa182cb6fa7a7ce034994011ece",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/vf/renderer.ts",
                "upstreamPath": "src/vf/renderer.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/vf/renderer.ts",
                "upstreamSha256": "sha256:dd948fcb6484c99756a1e968ea0ade340e3f6d409bd0d7805d2deb054fa346e0",
                "contentSha256": "sha256:d14a26c1f570b652ffea22469406c333b752fb4d8b3da4a7719df5790d4c5a4d",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/gl/capability.ts",
                "upstreamPath": "src/webgl/gl/capability.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/gl/capability.ts",
                "upstreamSha256": "sha256:ee17a500e0f4335f5c57faadb8c842463c95a288207bb5e479023bba0b0c5cb2",
                "contentSha256": "sha256:ee17a500e0f4335f5c57faadb8c842463c95a288207bb5e479023bba0b0c5cb2",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/webgl/gl/device.ts",
                "upstreamPath": "src/webgl/gl/device.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/gl/device.ts",
                "upstreamSha256": "sha256:450693c18c11559d4c8208b28bb9e77d588bd64fb5356aab88945f0f082afe47",
                "contentSha256": "sha256:812410f57ab34ac4225599268ecd8e50d9f23bc567009975be4d5f68379a2ba8",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/gl/shaders.ts",
                "upstreamPath": "src/webgl/gl/shaders.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/gl/shaders.ts",
                "upstreamSha256": "sha256:582808b77ea048bb562bc24564b1dadea24033cb50ccdce6b61bf6e6a6976db7",
                "contentSha256": "sha256:582808b77ea048bb562bc24564b1dadea24033cb50ccdce6b61bf6e6a6976db7",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/webgl/gl/shared.ts",
                "upstreamPath": "src/webgl/gl/shared.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/gl/shared.ts",
                "upstreamSha256": "sha256:9f115edc92390caca6942c6030eee121d95c2bc66249b021587466c57018f965",
                "contentSha256": "sha256:02db0f109c33344a4fea67fcf7bf076b988a3941e48b9729b95bc908a0bf321f",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/lut-texture.ts",
                "upstreamPath": "src/webgl/lut-texture.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/lut-texture.ts",
                "upstreamSha256": "sha256:4ddceea53c53d423e05151ea7b99e73ed29202951ec8f08a7ff016a6071a3c1e",
                "contentSha256": "sha256:99c91b465a58e41c0f1adffb117397f66a7b1559d68788a43cc4e2c5bb7539c4",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/msdf/atlas.ts",
                "upstreamPath": "src/webgl/msdf/atlas.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/msdf/atlas.ts",
                "upstreamSha256": "sha256:8f751aab5af3c4a3857940fd608fe3104951f2aaa8933f50b26e1b1dc04605c0",
                "contentSha256": "sha256:8f751aab5af3c4a3857940fd608fe3104951f2aaa8933f50b26e1b1dc04605c0",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/webgl/msdf/client.ts",
                "upstreamPath": "src/webgl/msdf/client.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/msdf/client.ts",
                "upstreamSha256": "sha256:a415ced8ac66e9fe3014082341aae450cd0b86595365a293ca261033af72561c",
                "contentSha256": "sha256:66f80b6d25dfedd4bc533b4674ee0b1f4247ca0d76a4fd1df39186073f7242c4",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/msdf/generator.ts",
                "upstreamPath": "src/webgl/msdf/generator.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/msdf/generator.ts",
                "upstreamSha256": "sha256:5fbb00df73eb8674a09fc7d7af9b738d1990af71b266790ca4c63929867727b0",
                "contentSha256": "sha256:663758e73dd8881ec99c1284d7f072e94e0cbb346b018da3335f21079a125d1e",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/msdf/worker.ts",
                "upstreamPath": "src/webgl/msdf/worker.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/msdf/worker.ts",
                "upstreamSha256": "sha256:d2565341beff3f866556a34a70450b0468d2aaa09e9513f617dbf12c10ac8092",
                "contentSha256": "sha256:20b33a5c0b3ccf51bf8ab2052d9a041b6276c3982ed54f393675315007797ede",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/parity.ts",
                "upstreamPath": "src/webgl/parity.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/parity.ts",
                "upstreamSha256": "sha256:61fcb842b71661d4005b6a8fa53d2ef9b2086213f499907691a1cf12251aa296",
                "contentSha256": "sha256:4d3faebede1d33071b71a395e53ec86d486e52acbc5c69c61dda178f350f89ab",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/renderer.ts",
                "upstreamPath": "src/webgl/renderer.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/renderer.ts",
                "upstreamSha256": "sha256:b6ad02ae38aaa73b2e1cefab8a5c53b237b31f5581a6229994d59ae3e45810e0",
                "contentSha256": "sha256:0dd5cc74a1855010c7a322e914e1d5183256a39bb11d93852026eac67ec3fc3b",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/webgl/slice-grid.ts",
                "upstreamPath": "src/webgl/slice-grid.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/slice-grid.ts",
                "upstreamSha256": "sha256:2167a1b32b43369af1ef1ca3e2bcec6963f816833c76fe87cfb7adfc79c6dfcd",
                "contentSha256": "sha256:2167a1b32b43369af1ef1ca3e2bcec6963f816833c76fe87cfb7adfc79c6dfcd",
                "changes": []
              },
              {
                "shippedPath": "components/fontuccine/webgl/types.ts",
                "upstreamPath": "src/webgl/types.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/webgl/types.ts",
                "upstreamSha256": "sha256:f94f5fc1fbcd628dfcbe9a9ec3de2b5bea7339b9406db0c55727d5ea43fe0267",
                "contentSha256": "sha256:f22b3aeeaa6f5e521cc90601ff36cdde2114cc7b4dc310e6c3c591c11cde519c",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/worker/analysis-worker.ts",
                "upstreamPath": "src/worker/analysis-worker.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/worker/analysis-worker.ts",
                "upstreamSha256": "sha256:458343fef919e9f4d3f10dc7e26525a8ad8764121afc7fe49cb157b00d279f0e",
                "contentSha256": "sha256:d86493e645af6304f0258a6c406eee3a785c3350d9479d650beef483deec47f3",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/worker/analyze.ts",
                "upstreamPath": "src/worker/analyze.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/worker/analyze.ts",
                "upstreamSha256": "sha256:927398197b17142cac1171714e14877754685c13e3b5c73c507a70c6f01aceed",
                "contentSha256": "sha256:851d78513375a756e6ebb43175520d8ff14dfe29e22fcea0e5efc9f7e73e4005",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              },
              {
                "shippedPath": "components/fontuccine/worker/client.ts",
                "upstreamPath": "src/worker/client.ts",
                "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/src/worker/client.ts",
                "upstreamSha256": "sha256:30581b1469dc58595ef80b4e6a9c940917f731bde80a4b27161012bc921f02c5",
                "contentSha256": "sha256:d225b484b6ac870c4f856f82ac975769a02913a3e6d31f195daa538addb95ef8",
                "changes": [
                  "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/react/index.ts and its exact copied runtime import closure at commit 1261bd116c7915a617ed21c85adab10bba6ca1a7",
            "copyright": [
              "Copyright (c) 2026 Fontuccine contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/charbelmalo/fontuccine/blob/1261bd116c7915a617ed21c85adab10bba6ca1a7/LICENSE",
              "sha256": "sha256:1d8c33c7eee11292a09939ecfbda3e75404dc0530389b921e58735d915a31889",
              "localPath": "registry/sources/fontuccine/LICENSE"
            },
            "notices": [
              "registry/sources/fontuccine/NOTICE.md"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/fontuccine/react/index.ts",
              "change": "Added the client-module boundary, removed explicit `.ts` import suffixes, and reused a stable empty configuration across renders.",
              "reason": "Make the copied hook-based export safe in React server-component projects and avoid needless detach/attach cycles."
            },
            {
              "shippedPath": "components/fontuccine/core/flex-profile.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/core/geometry/segments.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/core/kerning.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/core/lut.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/core/sampling/outline.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/core/winding.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/engine/attach.ts",
              "change": "Removed explicit `.ts` suffixes, kept RTL output as untouched native text, and fell through to SVG when WebGL backend construction failed.",
              "reason": "Keep the copied closure installable under strict TypeScript, preserve complex-script shaping, and prevent a failed GPU context from leaving text transparent."
            },
            {
              "shippedPath": "components/fontuccine/engine/font-load.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/engine/glyphs.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/engine/types.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/font/parser.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/interaction/easing.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/interaction/gating.ts",
              "change": "Added document visibility to the viewport gate and removed its listener during cleanup.",
              "reason": "Pause the engine while its document is hidden and remove every lifecycle listener."
            },
            {
              "shippedPath": "components/fontuccine/interaction/stimuli/hover.ts",
              "change": "Removed explicit `.ts` import suffixes and made touch and pen hover input intentionally static.",
              "reason": "Provide an intentional static result for touch, pen, and no-hover input without adding a second interaction model."
            },
            {
              "shippedPath": "components/fontuccine/interaction/stimuli/proximity.ts",
              "change": "Removed explicit `.ts` import suffixes and made touch and pen proximity input intentionally static.",
              "reason": "Provide an intentional static result for touch, pen, and no-hover input without adding a second interaction model."
            },
            {
              "shippedPath": "components/fontuccine/interaction/stimuli/scroll-velocity.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Provide an intentional static result for touch, pen, and no-hover input without adding a second interaction model."
            },
            {
              "shippedPath": "components/fontuccine/interaction/stimuli/types.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Provide an intentional static result for touch, pen, and no-hover input without adding a second interaction model."
            },
            {
              "shippedPath": "components/fontuccine/interaction/stretch-controller.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/interaction/ticker.ts",
              "change": "Stopped the shared ticker whenever no controller owns activity, including while gated render phases remain mounted.",
              "reason": "Prevent offscreen SVG and variable-font render subscriptions from sustaining an idle animation loop."
            },
            {
              "shippedPath": "components/fontuccine/svg/renderer.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/svg/split.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/vf/probe.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/vf/renderer.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/gl/device.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/gl/shared.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/lut-texture.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/msdf/client.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/msdf/generator.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/msdf/worker.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/parity.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/renderer.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/webgl/types.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/worker/analysis-worker.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/worker/analyze.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            },
            {
              "shippedPath": "components/fontuccine/worker/client.ts",
              "change": "Removed explicit `.ts` suffixes from relative imports for consumer TypeScript compatibility.",
              "reason": "Keep the copied closure installable under standard strict TypeScript settings."
            }
          ],
          "dedupe": {
            "family": "tangent-aware-glyph-outline-stretch",
            "sourceHash": "sha256:a6c60cc64f35bed8185e2dfbec0b94939d7b2cd20a475fd05d8467b076c18ba1",
            "contentHash": "sha256:b9a757309b9f9511d2524803a46fe0e4fba529576668c9aa25774c4e508c58bc",
            "structureHash": "sha256:671a09979bfc03dac83e0f2b048c92606123b40db8e6540f83431eee090b659e"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-archive-box-icon",
      "type": "registry:component",
      "title": "Animated Archive Box Icon",
      "description": "Renders the Heroicons Archive Box glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-archive-box-icon/archive-box.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-archive-box-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "archive",
            "box",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-archive-box-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-archive-box-icon/archive-box.tsx",
                "upstreamPath": "packages/react/src/icons/archive-box.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/archive-box.tsx",
                "upstreamSha256": "sha256:69ee08546118dfb75a1b94e65ae9747a208e2d916c929e7a9a24db1d7811a135",
                "contentSha256": "sha256:f1e44026fd6a97a0b2dac90648ddc3cbe4feca8efe21485a4243b7eac2a68b4b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/archive-box.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-archive-box-icon/archive-box.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
              "reason": "Resolved the bundled utility import and added explicit animation disablement and reduced-motion handling."
            }
          ],
          "dedupe": {
            "family": "animated-archive-box-icon",
            "sourceHash": "sha256:ab2facbadb591815962bda88b5d5553e86bd3f6352868566802c618065691e57",
            "contentHash": "sha256:87465684c7fd0ea01cc569c6b521953ffbb8ad608b915a9cab933fb63d9ec205",
            "structureHash": "sha256:968a863340f1e17eb32e1571021617a2028947359067dd059c397903ffc40a41",
            "glyph": {
              "inventoryName": "archive-box",
              "canonicalName": "archive-box",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-arrows-pointing-in-icon",
      "type": "registry:component",
      "title": "Animated Arrows Pointing In Icon",
      "description": "Renders the Heroicons Arrows Pointing In glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-arrows-pointing-in-icon/arrows-pointing-in.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-arrows-pointing-in-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "arrows",
            "pointing",
            "in",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-arrows-pointing-in-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-arrows-pointing-in-icon/arrows-pointing-in.tsx",
                "upstreamPath": "packages/react/src/icons/arrows-pointing-in.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/arrows-pointing-in.tsx",
                "upstreamSha256": "sha256:5d887a822276af85fb2b9b98cdc600ee118b340ac1889100be895439f7b65950",
                "contentSha256": "sha256:17635030746a437d959f77f6e05d4020077b845cc88c49f6d374a8fcc83dff60",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/arrows-pointing-in.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-arrows-pointing-in-icon/arrows-pointing-in.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-arrows-pointing-in-icon",
            "sourceHash": "sha256:0a59bc120494941cf95feb7ba42b0390ec554b8e229d443423759ce75e87b593",
            "contentHash": "sha256:a3db48f4d95ce9447d8851fb78b568631c7edbdf15866a368714e39cee1e0d72",
            "structureHash": "sha256:c82e3230b3a13c66dd814d1f9fa1b231baf6f1414a67be14c7ec2d6ca5f1b4d7",
            "glyph": {
              "inventoryName": "arrows-pointing-in",
              "canonicalName": "arrows-pointing-in",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-arrows-pointing-out-icon",
      "type": "registry:component",
      "title": "Animated Arrows Pointing Out Icon",
      "description": "Renders the Heroicons Arrows Pointing Out glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-arrows-pointing-out-icon/arrows-pointing-out.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-arrows-pointing-out-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "arrows",
            "pointing",
            "out",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-arrows-pointing-out-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-arrows-pointing-out-icon/arrows-pointing-out.tsx",
                "upstreamPath": "packages/react/src/icons/arrows-pointing-out.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/arrows-pointing-out.tsx",
                "upstreamSha256": "sha256:5edf851eca539399d9e104626213f638c45be77ce48704c0b07f7d3f0588bfc6",
                "contentSha256": "sha256:7f2640f72749fcb8fdaf770191592b1f4b41d25ff29ef6330ebdb3de69983cfa",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/arrows-pointing-out.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-arrows-pointing-out-icon/arrows-pointing-out.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-arrows-pointing-out-icon",
            "sourceHash": "sha256:906ad4ff61e45c2e7c311a45f01cd3aeb70e7360074dbf695d122bdfd2454043",
            "contentHash": "sha256:a65963446c93265aed6d63b0eeca114e7c9605452d89300b8e099127a4147c7b",
            "structureHash": "sha256:b7d4f3e2155ef3c4a69c07bc9e7246f0401a003d73158bdef98c1257619b08b8",
            "glyph": {
              "inventoryName": "arrows-pointing-out",
              "canonicalName": "arrows-pointing-out",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-at-symbol-icon",
      "type": "registry:component",
      "title": "Animated At Symbol Icon",
      "description": "Renders the Heroicons At Symbol glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-at-symbol-icon/at-symbol.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-at-symbol-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "at",
            "symbol",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-at-symbol-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-at-symbol-icon/at-symbol.tsx",
                "upstreamPath": "packages/react/src/icons/at-symbol.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/at-symbol.tsx",
                "upstreamSha256": "sha256:595f501b023652e2bcfb36971a6cb3c00805992468ebae5d5aa9faf7a5499a43",
                "contentSha256": "sha256:0b1bd5ca9dfc26cfd4d9a448d57931c8e0ee9d97b925a9d5a5abfe14ba7c808b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/at-symbol.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-at-symbol-icon/at-symbol.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-at-symbol-icon",
            "sourceHash": "sha256:10a018c671c25fca788081916f0a06c2177e6354ee07dac76ca0b8f5f707c3d6",
            "contentHash": "sha256:e9b4719ab012ccd1b00c15aafca4ea7c1239afdbe4518012aef2d8dd77acb4a0",
            "structureHash": "sha256:452c7acc497be9bfe55d5e11e1ff3fca9efe182c16fcb0a689ae569224197aba",
            "glyph": {
              "inventoryName": "at-symbol",
              "canonicalName": "at-symbol",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-banknotes-icon",
      "type": "registry:component",
      "title": "Animated Banknotes Icon",
      "description": "Renders the Heroicons Banknotes glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-banknotes-icon/banknotes.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-banknotes-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "banknotes",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-banknotes-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-banknotes-icon/banknotes.tsx",
                "upstreamPath": "packages/react/src/icons/banknotes.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/banknotes.tsx",
                "upstreamSha256": "sha256:074c11a3a062121e94a04c2a6ee5dc329b8dc66402ea69e83e2a07753799748a",
                "contentSha256": "sha256:ceb489dc1e5d28bdcc58862227ec9ee2e096856be9aabbe5ff49804bdf1e8dc3",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/banknotes.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-banknotes-icon/banknotes.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-banknotes-icon",
            "sourceHash": "sha256:f42c2f90948992f4f4faefb8f035e7a2fd81588555fbe0b5ad3927758215f617",
            "contentHash": "sha256:2fc4754e7722406faf7783855f75c6ec488a52ca76a41ec2693dfe13d67c74d6",
            "structureHash": "sha256:1f1ec903a6a76e5c43a0607c2a8e11ad3d32ab8d7fc782b34613fb066409c7e1",
            "glyph": {
              "inventoryName": "banknotes",
              "canonicalName": "banknotes",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-bold-icon",
      "type": "registry:component",
      "title": "Animated Bold Icon",
      "description": "Renders the Heroicons Bold glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-bold-icon/bold.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-bold-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bold",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-bold-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-bold-icon/bold.tsx",
                "upstreamPath": "packages/react/src/icons/bold.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/bold.tsx",
                "upstreamSha256": "sha256:c39f14ec92601715f97c2e93ff1010cfc703919918d51d9548db1bcd63e43e5f",
                "contentSha256": "sha256:3494b64d5b0a9abaf9c6d6cd6fa13c17b7b9c6f91f58feaea47b1f7c1fe4f51c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/bold.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-bold-icon/bold.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
              "reason": "Resolved the bundled utility import and added explicit animation disablement and reduced-motion handling."
            }
          ],
          "dedupe": {
            "family": "animated-bold-icon",
            "sourceHash": "sha256:105cb3a3ecaefa063b6c22cfbc354d81e572af4450e054da90279efdbdaec214",
            "contentHash": "sha256:4b630e8990f7ab0cbd5ef05c9f6fd80e9596122022454dc01121c449a788df70",
            "structureHash": "sha256:116e06d7b6a26a200a209ec819537ce8ff9d066df88c6167091e5b8d0886db4b",
            "glyph": {
              "inventoryName": "bold",
              "canonicalName": "bold",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-building-library-icon",
      "type": "registry:component",
      "title": "Animated Building Library Icon",
      "description": "Renders the Heroicons Building Library glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-building-library-icon/building-library.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-building-library-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "building",
            "library",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-building-library-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-building-library-icon/building-library.tsx",
                "upstreamPath": "packages/react/src/icons/building-library.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/building-library.tsx",
                "upstreamSha256": "sha256:51c64a65927945e1b60e668a4dffe2415f218f9e3700f9a88521800dfaefbc28",
                "contentSha256": "sha256:3e671b94ded52ec6c365d663a3caec08473e0801c4a3c6bfdc23b3ca5304e9d0",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/building-library.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-building-library-icon/building-library.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-building-library-icon",
            "sourceHash": "sha256:98c9bc3b3bc2f355189ac409bc8d94eb6d5bf9af50cd45e5fbf18f52db5d604a",
            "contentHash": "sha256:c84a7930269c4164107320f53232f85a6d9ddddc68b663cfaa5c4d8c2e9bcfe1",
            "structureHash": "sha256:174635aa53063c6a8ad18cb593de57101e97c9fcef9252f1e12d017dc43f9070",
            "glyph": {
              "inventoryName": "building-library",
              "canonicalName": "building-library",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-calendar-date-range-icon",
      "type": "registry:component",
      "title": "Animated Calendar Date Range Icon",
      "description": "Renders the Heroicons Calendar Date Range glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-calendar-date-range-icon/calendar-date-range.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-calendar-date-range-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "calendar",
            "date",
            "range",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-calendar-date-range-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-calendar-date-range-icon/calendar-date-range.tsx",
                "upstreamPath": "packages/react/src/icons/calendar-date-range.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/calendar-date-range.tsx",
                "upstreamSha256": "sha256:0d2a28205c65772be5adb11df654794bc36b5d37c8f431b4b6e3003c2b24b4cf",
                "contentSha256": "sha256:d88ec609e66ae3e36e46b6a5d718ee0e482db33b350815eb28285350c1b335cb",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/calendar-date-range.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-calendar-date-range-icon/calendar-date-range.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-calendar-date-range-icon",
            "sourceHash": "sha256:190b4474fde4a6128f43cf0af87dd54b46a8c164f7551d3546b13a3d03b32cf1",
            "contentHash": "sha256:704a92c1f677ea6bec4163fabec870369e7fda869c20b9cb678fbaa73cf76da0",
            "structureHash": "sha256:cfec7cceb09047000968ece25a9c7fa4a42145c1c2374164ef749d02df02a788",
            "glyph": {
              "inventoryName": "calendar-date-range",
              "canonicalName": "calendar-date-range",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-clipboard-document-check-icon",
      "type": "registry:component",
      "title": "Animated Clipboard Document Check Icon",
      "description": "Renders the Heroicons Clipboard Document Check glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-clipboard-document-check-icon/clipboard-document-check.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-clipboard-document-check-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "clipboard",
            "document",
            "check",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-clipboard-document-check-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-clipboard-document-check-icon/clipboard-document-check.tsx",
                "upstreamPath": "packages/react/src/icons/clipboard-document-check.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/clipboard-document-check.tsx",
                "upstreamSha256": "sha256:3fc054dd550d971fde2c0a08e419053b70d2a96eaae52ab59087629193150ac6",
                "contentSha256": "sha256:05f8d1590c9abd888de4aa533c3b8f9096a44e5a2a4b7f89fbe1b5106eaa626c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/clipboard-document-check.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-clipboard-document-check-icon/clipboard-document-check.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-clipboard-document-check-icon",
            "sourceHash": "sha256:4349dd73d40f00ef62055809f43197907bce11d0f41a4f45aee26177619b102f",
            "contentHash": "sha256:35b1ea347d2ecaa37c86bc61f7f9ccfb68b1d0e2d4957524bdf93299dc2b4e3f",
            "structureHash": "sha256:48c15ce3b551223333ad80b9245a31ec2b0385cdf9c892d6007d49d77ef08ec1",
            "glyph": {
              "inventoryName": "clipboard-document-check",
              "canonicalName": "clipboard-document-check",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-clock-icon",
      "type": "registry:component",
      "title": "Animated Clock Icon",
      "description": "Renders the Heroicons Clock glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-clock-icon/clock.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-clock-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "clock",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-clock-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-clock-icon/clock.tsx",
                "upstreamPath": "packages/react/src/icons/clock.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/clock.tsx",
                "upstreamSha256": "sha256:3e410ecbb47140dc223e92d1a3e9116891f2da8630a88083928039af802a9ece",
                "contentSha256": "sha256:ef5931c2e035a18455e21c8b7d17a0b719bcfb53d2577f2dfd222d9ac30d942f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/clock.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-clock-icon/clock.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-clock-icon",
            "sourceHash": "sha256:fec06db8836bb361377a59aa4be9724632470cd53f705eab5aff91f562da8b09",
            "contentHash": "sha256:24db1ee4eb1652eb71d06c259c71295868546c7a574b077b0c8ce0f81a388ff6",
            "structureHash": "sha256:091ee4fbfcc09e4a373098ac07536d7937b42309f7e0a5d3f1e9f0d7b186c4ba",
            "glyph": {
              "inventoryName": "clock",
              "canonicalName": "clock",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-computer-desktop-icon",
      "type": "registry:component",
      "title": "Animated Computer Desktop Icon",
      "description": "Renders the Heroicons Computer Desktop glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-computer-desktop-icon/computer-desktop.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-computer-desktop-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "computer",
            "desktop",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-computer-desktop-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-computer-desktop-icon/computer-desktop.tsx",
                "upstreamPath": "packages/react/src/icons/computer-desktop.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/computer-desktop.tsx",
                "upstreamSha256": "sha256:13c12d7dff88faed347845a50225c0234ad5c15e97ef0f5cfbeabf990b245a6f",
                "contentSha256": "sha256:30dd34462c896ab4c1cb46c81d12569b8ce9caf80c9cfdc29ba1eb300f647798",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/computer-desktop.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-computer-desktop-icon/computer-desktop.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-computer-desktop-icon",
            "sourceHash": "sha256:acc3d1d19f432be30b014e3b5aac0872f898ab96eb4fd4eb116a52fa69f0ee4f",
            "contentHash": "sha256:6175eaeaed25d051076911ab6598c592fffaa2990903a52e9a13bd1730840544",
            "structureHash": "sha256:af4686b841fdd9f771b89d3abdfef3108fab661db6c6b13a8c9329aa6c4dcb8c",
            "glyph": {
              "inventoryName": "computer-desktop",
              "canonicalName": "computer-desktop",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-device-phone-mobile-icon",
      "type": "registry:component",
      "title": "Animated Device Phone Mobile Icon",
      "description": "Renders the Heroicons Device Phone Mobile glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-device-phone-mobile-icon/device-phone-mobile.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-device-phone-mobile-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "device",
            "phone",
            "mobile",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-device-phone-mobile-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-device-phone-mobile-icon/device-phone-mobile.tsx",
                "upstreamPath": "packages/react/src/icons/device-phone-mobile.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/device-phone-mobile.tsx",
                "upstreamSha256": "sha256:f88daa7364bfa281c11df008a39e8a5da6d9d65dd98969376c32278f513f21c2",
                "contentSha256": "sha256:5806702c81a80d9bd8c89fd46bbf8207dd585e7f5e66541fd337015f8d515f95",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/device-phone-mobile.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-device-phone-mobile-icon/device-phone-mobile.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-device-phone-mobile-icon",
            "sourceHash": "sha256:1a9b3977e00981b0118c8330af9057714f2ba16f97d501c8fb158e8037bebfff",
            "contentHash": "sha256:31fa831819a1be65c56af27bcf71f784ce8f3b9865a9b98175add8cf8158d7f8",
            "structureHash": "sha256:fa908b1b0dbfd1d4e5fc275142374406148bcb3c706dcc5243abf232ec33c608",
            "glyph": {
              "inventoryName": "device-phone-mobile",
              "canonicalName": "device-phone-mobile",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-document-chart-bar-icon",
      "type": "registry:component",
      "title": "Animated Document Chart Bar Icon",
      "description": "Renders the Heroicons Document Chart Bar glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-document-chart-bar-icon/document-chart-bar.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-document-chart-bar-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "document",
            "chart",
            "bar",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-document-chart-bar-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-document-chart-bar-icon/document-chart-bar.tsx",
                "upstreamPath": "packages/react/src/icons/document-chart-bar.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/document-chart-bar.tsx",
                "upstreamSha256": "sha256:ef654140add18645965a9793adc7792de03cb2739ab0d2caf41dbd2e43a84061",
                "contentSha256": "sha256:7ca4425847b0fb07bfa68106786027f02a6e64d952468a99ba071ab542616baf",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/document-chart-bar.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-document-chart-bar-icon/document-chart-bar.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-document-chart-bar-icon",
            "sourceHash": "sha256:7c219cb38cb3528361b08d432eaa45aeb13d7eeaf45bf10027a88b9e9df472a3",
            "contentHash": "sha256:464bb28ae0683dc6c3b82e753e47457a0ffb67db46efaa706ac2ab40dcddf5cb",
            "structureHash": "sha256:92bf4837c5e64f61786de2b93d427334017ebd3ca7ba798c116332bf6c2f7997",
            "glyph": {
              "inventoryName": "document-chart-bar",
              "canonicalName": "document-chart-bar",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-document-text-icon",
      "type": "registry:component",
      "title": "Animated Document Text Icon",
      "description": "Renders the Heroicons Document Text glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-document-text-icon/document-text.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-document-text-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "document",
            "text",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-document-text-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-document-text-icon/document-text.tsx",
                "upstreamPath": "packages/react/src/icons/document-text.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/document-text.tsx",
                "upstreamSha256": "sha256:acab51349d55f1d01f56efd28330046df38328429769eab7fe5afd299633f7ce",
                "contentSha256": "sha256:9744afca2ae611ff0920c2ddcb674d95210bbbb84a1f3d0e92a8069c59015fdd",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/document-text.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-document-text-icon/document-text.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-document-text-icon",
            "sourceHash": "sha256:ed8c092804f2bc006279c02cae77cc7731f894f0a7ab632bf3cc8da4b152cdf7",
            "contentHash": "sha256:774a6855f857abda193cc4810de169a48f6112bdb5d6fc9c75b4c91c9bc055b6",
            "structureHash": "sha256:4296c3f223c6c355136a19e4bc7f851fdb6c78c3821ea5e830a1812cda6d19b1",
            "glyph": {
              "inventoryName": "document-text",
              "canonicalName": "document-text",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-flag-icon",
      "type": "registry:component",
      "title": "Animated Flag Icon",
      "description": "Renders the Heroicons Flag glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-flag-icon/flag.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-flag-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "flag",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-flag-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-flag-icon/flag.tsx",
                "upstreamPath": "packages/react/src/icons/flag.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/flag.tsx",
                "upstreamSha256": "sha256:bd9caa496b2421633cdad49a3d4bd525701510522bbe37949689b257576701ac",
                "contentSha256": "sha256:9086cbf88656442a29ca816905d6be8d5d8f6aedc2aefdac20b64152a5444d73",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/flag.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-flag-icon/flag.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-flag-icon",
            "sourceHash": "sha256:23a6bbf7035e791861874b238aeb82d3d8236c1ba7ddcb805313f9ed5987290d",
            "contentHash": "sha256:aa177174e3f64b971a7f9ae7620fd41e54a56a941b88d4810eacac96220f6cd0",
            "structureHash": "sha256:e3e959db2c950620afdb8bce67ff12f06c99fb3140ae8e5c3569c2f55e1d600f",
            "glyph": {
              "inventoryName": "flag",
              "canonicalName": "flag",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-hand-raised-icon",
      "type": "registry:component",
      "title": "Animated Hand Raised Icon",
      "description": "Renders the Heroicons Hand Raised glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-hand-raised-icon/hand-raised.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-hand-raised-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "hand",
            "raised",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-hand-raised-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-hand-raised-icon/hand-raised.tsx",
                "upstreamPath": "packages/react/src/icons/hand-raised.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/hand-raised.tsx",
                "upstreamSha256": "sha256:98467254d2548178c1e251149f4c4734b03f3fe0eaec08a2c771e5d78fc29fc1",
                "contentSha256": "sha256:933b4cc6018827dc12c0f45ab21611d17af931c8fec7e32a09e2528122a8b41c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/hand-raised.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-hand-raised-icon/hand-raised.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-hand-raised-icon",
            "sourceHash": "sha256:726f81a56841162692ead0242accf78bf885c193cd499b1242ab456632142e77",
            "contentHash": "sha256:a475a107ecee01a652c5f81b2736e93859a37b0e75f75c04534797d9617f61b7",
            "structureHash": "sha256:b25e91ea8af4f9d26c025800ba605fad1d6ae0ed45f7763c7299bd3e4232198a",
            "glyph": {
              "inventoryName": "hand-raised",
              "canonicalName": "hand-raised",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-hashtag-icon",
      "type": "registry:component",
      "title": "Animated Hashtag Icon",
      "description": "Renders the Heroicons Hashtag glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-hashtag-icon/hashtag.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-hashtag-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "hashtag",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-hashtag-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-hashtag-icon/hashtag.tsx",
                "upstreamPath": "packages/react/src/icons/hashtag.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/hashtag.tsx",
                "upstreamSha256": "sha256:fa10f57c1a8acad95dd3bcb98ae92f1b8b1722deb2b56c2c89ccfa73f0dcd931",
                "contentSha256": "sha256:0b48872eebd3eb14e58c8e76d5f32df2cc1d7ff80d90d9dfc87675cd4e6f443c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/hashtag.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-hashtag-icon/hashtag.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-hashtag-icon",
            "sourceHash": "sha256:0db4dde3d4ddefca59bd7ad83e8d6c41aaf2884f4727436bfd440e4445815f89",
            "contentHash": "sha256:de117e1fa65e429b76fa6fb7fcc470c161b4a087d432e09406af20d48275d2ff",
            "structureHash": "sha256:9f00fae767ce2651e05e1db18eaccc65ce5cd907cce898bf4557b0222fd41565",
            "glyph": {
              "inventoryName": "hashtag",
              "canonicalName": "hashtag",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-language-icon",
      "type": "registry:component",
      "title": "Animated Language Icon",
      "description": "Renders the Heroicons Language glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-language-icon/language.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-language-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "language",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-language-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-language-icon/language.tsx",
                "upstreamPath": "packages/react/src/icons/language.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/language.tsx",
                "upstreamSha256": "sha256:aeb1b334fd6f57df480c2e2432f26fa49c2826890fabf6617c1716fbb6c159a5",
                "contentSha256": "sha256:f3869395de84c71b351b533f88a404a1a1ec0329d36e12b29ffae039ab9fede8",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/language.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-language-icon/language.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-language-icon",
            "sourceHash": "sha256:cc8e0c2b1d7a335d27751b59d72594f9f8fc837ab60e34b3f258a929f38ad56e",
            "contentHash": "sha256:5173820ef87c449dcbf82fcd1abe16d73d592cd906035bb6344d719140c5e099",
            "structureHash": "sha256:1e7014cb1db81a3d7da95f8d72d681897eaa04cd796ba59c885ff41bec8d5192",
            "glyph": {
              "inventoryName": "language",
              "canonicalName": "language",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-lifebuoy-icon",
      "type": "registry:component",
      "title": "Animated Lifebuoy Icon",
      "description": "Renders the Heroicons Lifebuoy glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-lifebuoy-icon/lifebuoy.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-lifebuoy-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "lifebuoy",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-lifebuoy-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-lifebuoy-icon/lifebuoy.tsx",
                "upstreamPath": "packages/react/src/icons/lifebuoy.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/lifebuoy.tsx",
                "upstreamSha256": "sha256:a91fc63cddbb96d286f372035999dcd1fdc704df630164ebee2db132c435a109",
                "contentSha256": "sha256:303d2ed73fc990302c1f0a561cf5e8c3f85688a3aac6e56d2b547ce5be591c8f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/lifebuoy.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-lifebuoy-icon/lifebuoy.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-lifebuoy-icon",
            "sourceHash": "sha256:51ac162e19af5ddc301a152892d4f2edebddb7644e1a1a520ae8255e8074fb75",
            "contentHash": "sha256:b61ecf7ad6097332ca90fff92c4dd176da21828cd44bf69bb41bbb5596da7432",
            "structureHash": "sha256:22a88ebfcaddd0baff6f0f99b9ccf130bddf5b4fc957bad1b6a4748dd20c2b70",
            "glyph": {
              "inventoryName": "lifebuoy",
              "canonicalName": "lifebuoy",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-light-bulb-icon",
      "type": "registry:component",
      "title": "Animated Light Bulb Icon",
      "description": "Renders the Heroicons Light Bulb glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-light-bulb-icon/light-bulb.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-light-bulb-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "light",
            "bulb",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-light-bulb-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-light-bulb-icon/light-bulb.tsx",
                "upstreamPath": "packages/react/src/icons/light-bulb.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/light-bulb.tsx",
                "upstreamSha256": "sha256:c4fc5284745f5c8111beb4a350eaba29579df624764bc69c51fc113995dddd23",
                "contentSha256": "sha256:9165c3b4acde3ec180fbb8d034992e93faa7dca6942bc921781811d6b5d6a328",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/light-bulb.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-light-bulb-icon/light-bulb.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-light-bulb-icon",
            "sourceHash": "sha256:641b58acab15dba6d38fcc1abcc7417757f6d24cf53adcae2486574b8c6c69b4",
            "contentHash": "sha256:33f573b250a005420590cdc65f599c872046e13b06c6a4b0ee26ce81d048ee6b",
            "structureHash": "sha256:c053782639b9692170e689b178a0d71a4bc6920798f4cb9f31db36ce23ba33bd",
            "glyph": {
              "inventoryName": "light-bulb",
              "canonicalName": "light-bulb",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-map-icon",
      "type": "registry:component",
      "title": "Animated Map Icon",
      "description": "Renders the Heroicons Map glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-map-icon/map.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-map-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "map",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-map-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-map-icon/map.tsx",
                "upstreamPath": "packages/react/src/icons/map.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/map.tsx",
                "upstreamSha256": "sha256:de19295487a76f5ad07b31533f4ec43d1773abf98834437f7d5d71ca06ba4db5",
                "contentSha256": "sha256:e731cd999015f82359f222c67e8720bab44adc40b2aab3743b0e5ccde3f6b44b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/map.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-map-icon/map.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-map-icon",
            "sourceHash": "sha256:28121f40a86865ee4333365be4a18879450ed3a399b9566480cdac6a2d5873e8",
            "contentHash": "sha256:4255087c5bb7b4938f76e90ad5ba559e789f0d17ed9f2e173fcf05dd5ed2af15",
            "structureHash": "sha256:ad4a9d798d11bfb13b9a9ecc396f8d19dfbd0dbc2b4252009e5f41a0258ba723",
            "glyph": {
              "inventoryName": "map",
              "canonicalName": "map",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-newspaper-icon",
      "type": "registry:component",
      "title": "Animated Newspaper Icon",
      "description": "Renders the Heroicons Newspaper glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-newspaper-icon/newspaper.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-newspaper-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "newspaper",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-newspaper-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-newspaper-icon/newspaper.tsx",
                "upstreamPath": "packages/react/src/icons/newspaper.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/newspaper.tsx",
                "upstreamSha256": "sha256:6462104dec6530c090a253587fdf548614aa386775ebed599f30ce5d1ac82901",
                "contentSha256": "sha256:35ad12ac95517ba5b57af27d273d1964a68ee1bbf0b5b4e508e9516f63391d6c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/newspaper.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-newspaper-icon/newspaper.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-newspaper-icon",
            "sourceHash": "sha256:4038a3609839fa42bb8266f04f051a96c6df3eb27dedc32bf9fd96d3c48f6c60",
            "contentHash": "sha256:6752b317f656b3b83d8448d53fdf51da6e2fe5f90a6eae7fa387ea6bd0d2ed35",
            "structureHash": "sha256:7d42291ac800cf1fcfe0df8a6c08d3f1912393b83c285b1d601959a3a556de8b",
            "glyph": {
              "inventoryName": "newspaper",
              "canonicalName": "newspaper",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-paint-brush-icon",
      "type": "registry:component",
      "title": "Animated Paint Brush Icon",
      "description": "Renders the Heroicons Paint Brush glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-paint-brush-icon/paint-brush.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-paint-brush-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "paint",
            "brush",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-paint-brush-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-paint-brush-icon/paint-brush.tsx",
                "upstreamPath": "packages/react/src/icons/paint-brush.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/paint-brush.tsx",
                "upstreamSha256": "sha256:8f6dba290bb0126ef950cc035d72022d51128a3b6823e5ad521d30bfc8efaee8",
                "contentSha256": "sha256:ff26b424ae0c00da8b2e4869f996d316d3537bf22866f285176cf19e14f2d273",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/paint-brush.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-paint-brush-icon/paint-brush.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-paint-brush-icon",
            "sourceHash": "sha256:bdce34248c2cc7b550630c6b5eb0e59468fc3355290f46b72cb085bc5405efe5",
            "contentHash": "sha256:a3857d1b5f827d9292ec01453afe351cce879b834eaf047c7521eb93d09b9f6a",
            "structureHash": "sha256:e7ce8432e4e8a31f9c385eca17ed845f5fd1997301a72883d4440614d79e0fde",
            "glyph": {
              "inventoryName": "paint-brush",
              "canonicalName": "paint-brush",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-percent-badge-icon",
      "type": "registry:component",
      "title": "Animated Percent Badge Icon",
      "description": "Renders the Heroicons Percent Badge glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-percent-badge-icon/percent-badge.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-percent-badge-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "percent",
            "badge",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-percent-badge-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-percent-badge-icon/percent-badge.tsx",
                "upstreamPath": "packages/react/src/icons/percent-badge.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/percent-badge.tsx",
                "upstreamSha256": "sha256:258d4acca145852365bdbb5de3d1af318822fce11b0e320d9e8a1f1f29c2153a",
                "contentSha256": "sha256:0c2f06f4b9d96f1f0f4939defc0fd72bac8adbb01fd47fa8fc7de17490f83fdb",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/percent-badge.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-percent-badge-icon/percent-badge.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-percent-badge-icon",
            "sourceHash": "sha256:8898098d20cc967ffb060b0dd5078dfb022cda210bb9528bd038dd884c817f94",
            "contentHash": "sha256:98275fd138ca3b898ea0515056343627514652123b9a0a4a68d93d838cd6c249",
            "structureHash": "sha256:df622d44bca5d08117de7e16ca6dc109655e88d01111370483d26f755f4c4842",
            "glyph": {
              "inventoryName": "percent-badge",
              "canonicalName": "percent-badge",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-scale-icon",
      "type": "registry:component",
      "title": "Animated Scale Icon",
      "description": "Renders the Heroicons Scale glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-scale-icon/scale.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-scale-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "scale",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-scale-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-scale-icon/scale.tsx",
                "upstreamPath": "packages/react/src/icons/scale.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/scale.tsx",
                "upstreamSha256": "sha256:43ee59eda8bc0aa2b0eee5fe7744cbdf4b87a5b1bfbdbf35e95541c30be03589",
                "contentSha256": "sha256:9e34a6bec0fcab95f791730ffc8d86a60a952a60b324cf1a90358f6413912870",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/scale.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-scale-icon/scale.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-scale-icon",
            "sourceHash": "sha256:0a579a1efeacc0eb10ded909896d6157214fcb20838836310cd96ac88ee50b54",
            "contentHash": "sha256:aa5288949826fd7cd6bacfae31062bc75c7a31d1b2f91686be57afc4e64a96da",
            "structureHash": "sha256:55af7420fdbe90add483aea51eccbb4ca803a1ea241788d6c50e5d23ec91813c",
            "glyph": {
              "inventoryName": "scale",
              "canonicalName": "scale",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-speaker-x-mark-icon",
      "type": "registry:component",
      "title": "Animated Speaker X Mark Icon",
      "description": "Renders the Heroicons Speaker X Mark glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-speaker-x-mark-icon/speaker-x-mark.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-speaker-x-mark-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "speaker",
            "x",
            "mark",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-speaker-x-mark-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-speaker-x-mark-icon/speaker-x-mark.tsx",
                "upstreamPath": "packages/react/src/icons/speaker-x-mark.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/speaker-x-mark.tsx",
                "upstreamSha256": "sha256:05755fa5f68ba0b8a22872edcb19d5b7144ab2008fb3cae7406fda56ce9b7cd1",
                "contentSha256": "sha256:03c087a12f52db59cff8141d339f52ad3247fb8eeead283acea383aa503e1309",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/speaker-x-mark.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-speaker-x-mark-icon/speaker-x-mark.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-speaker-x-mark-icon",
            "sourceHash": "sha256:caa6e7c395ee1536ff1b7363d0d338fc38e750bac0ef97a2981672b36e642f35",
            "contentHash": "sha256:33d2e2f5f33eac003049876cf2008b206811c765e9c6f024a87e654e3b1a2d93",
            "structureHash": "sha256:c1d181a0dfd4c8282dccc80a5e94b1ce0cbd31ac964a3ff2ed672547dbe53039",
            "glyph": {
              "inventoryName": "speaker-x-mark",
              "canonicalName": "speaker-x-mark",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-strikethrough-icon",
      "type": "registry:component",
      "title": "Animated Strikethrough Icon",
      "description": "Renders the Heroicons Strikethrough glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-strikethrough-icon/strikethrough.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-strikethrough-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "strikethrough",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-strikethrough-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-strikethrough-icon/strikethrough.tsx",
                "upstreamPath": "packages/react/src/icons/strikethrough.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/strikethrough.tsx",
                "upstreamSha256": "sha256:ffe6e788fffe91a4a162feb0ebef6ea6d21fd9c41941b6b026d10e502227f9c4",
                "contentSha256": "sha256:2b1e9931ff04941155fd0276e4123c1148ceffc42cf9fa163a0fbc748f84b15a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/strikethrough.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-strikethrough-icon/strikethrough.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-strikethrough-icon",
            "sourceHash": "sha256:8c21219f59dd653b04f6e19e6689619de2df4ec44d4ed23bfe511786665a701c",
            "contentHash": "sha256:8cf0208c188c455bffdb5ad445bfc6d70159355e94e74bcabc9e2d76337b911e",
            "structureHash": "sha256:792eeccd6bfe12c02794e009f8d2921774896c0d0101081863ad852b09e4e0b2",
            "glyph": {
              "inventoryName": "strikethrough",
              "canonicalName": "strikethrough",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-swatch-icon",
      "type": "registry:component",
      "title": "Animated Swatch Icon",
      "description": "Renders the Heroicons Swatch glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-swatch-icon/swatch.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-swatch-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "swatch",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-swatch-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-swatch-icon/swatch.tsx",
                "upstreamPath": "packages/react/src/icons/swatch.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/swatch.tsx",
                "upstreamSha256": "sha256:ebe22738ee21e99ef3173370c3a4ab03ebeb7c3c3c0025a1a078cdce7ab3c3e0",
                "contentSha256": "sha256:50c9694365627fc0c772053527291f870e4e339f0c0be30efdef54801257c89f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/swatch.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-swatch-icon/swatch.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-swatch-icon",
            "sourceHash": "sha256:89860f1849929bd8c2251de6ce4c187c9dfedc4d615173196bf4b0a27ed153bb",
            "contentHash": "sha256:d99d1ed868439baebd87e66c2cca34efc551a3d2fac1da5aab3a4b839a6684cc",
            "structureHash": "sha256:685d53d577ea4c07d66f7c186393d5086b0143aded035ba435773f8fc385436d",
            "glyph": {
              "inventoryName": "swatch",
              "canonicalName": "swatch",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-tag-icon",
      "type": "registry:component",
      "title": "Animated Tag Icon",
      "description": "Renders the Heroicons Tag glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-tag-icon/tag.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-tag-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "tag",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-tag-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-tag-icon/tag.tsx",
                "upstreamPath": "packages/react/src/icons/tag.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/tag.tsx",
                "upstreamSha256": "sha256:2698d4e241ef097f60d77a94c284b4ead49245af476be10b16d190a2526a7770",
                "contentSha256": "sha256:31b0be533b7da7748d84dfe1d4f41f539af12653603b20588f418e716d667115",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/tag.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-tag-icon/tag.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-tag-icon",
            "sourceHash": "sha256:55c09115c0094a3385f9d9961e57475db596455ea4faa4cae2d7099dd3a1d9c9",
            "contentHash": "sha256:0917b0855c1fa52db79499412f92bf723962a2d91be4c99e7182ae8a3518d190",
            "structureHash": "sha256:d26146fb54f4919faa03f4c20090c553d2e86152cb10cd3eeee0526a4f5d8544",
            "glyph": {
              "inventoryName": "tag",
              "canonicalName": "tag",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "heroicons-animated-underline-icon",
      "type": "registry:component",
      "title": "Animated Underline Icon",
      "description": "Renders the Heroicons Underline glyph with source-authored on-demand motion and imperative controls.",
      "author": "Heroicons Animated",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/heroicons-animated/components/heroicons-animated-underline-icon/underline.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/heroicons-animated-underline-icon.tsx"
        },
        {
          "path": "registry/sources/heroicons-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "underline",
            "animated",
            "icon",
            "motion",
            "heroicons"
          ],
          "renderer": "svg",
          "preview": "previews/heroicons-animated-underline-icon.tsx",
          "source": {
            "project": "Heroicons Animated",
            "repository": "https://github.com/heroicons-animated/heroicons-animated",
            "revision": "93c14cc04222375a965ffa33b5d390c474822405",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/heroicons-animated-underline-icon/underline.tsx",
                "upstreamPath": "packages/react/src/icons/underline.tsx",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/packages/react/src/icons/underline.tsx",
                "upstreamSha256": "sha256:2863052143e20eb42d9e49c81dc4f3ae2a0630a7ae65d650d08255b52a27b9f1",
                "contentSha256": "sha256:1af2f3e92ebe0989ab1611e617cea929250bba2adf8ff338d9c3e2b4cf6f9dc5",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls.",
                  "Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "src/lib/utils.ts",
                "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/icons/underline.tsx, src/lib/utils.ts, and Heroicons-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2026 Aniket Pawar",
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) Tailwind Labs, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/heroicons-animated/heroicons-animated/blob/93c14cc04222375a965ffa33b5d390c474822405/LICENSE",
              "sha256": "sha256:523f3bb472b7b76b6137becbf45c4d6019cdfbe7a1eef0807e480f7d1cf7ed40",
              "localPath": "registry/sources/heroicons-animated/LICENSE"
            },
            "notices": [
              "registry/sources/heroicons-animated/NOTICE",
              "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
              "registry/sources/heroicons-animated/HEROICONS_LICENSE"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/heroicons-animated/NOTICE",
                "sha256": "sha256:755f24221919def18af51eb781915dc762ee6688bdc27dc4aca69bb7ee92d951",
                "changes": []
              },
              {
                "repository": "https://github.com/pqoqubbw/icons",
                "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
                "localPath": "registry/sources/heroicons-animated/LUCIDE_ANIMATED_LICENSE",
                "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
                "changes": []
              },
              {
                "repository": "https://github.com/tailwindlabs/heroicons",
                "revision": "0435d4ca364a608cc75e2f8683d374e55abbae26",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/tailwindlabs/heroicons/blob/0435d4ca364a608cc75e2f8683d374e55abbae26/LICENSE",
                "localPath": "registry/sources/heroicons-animated/HEROICONS_LICENSE",
                "sha256": "sha256:60e0b68c0f35c078eef3a5d29419d0b03ff84ec1df9c3f9d6e39a519a5ae7985",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/heroicons-animated-underline-icon/underline.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to the existing imperative and hover controls. Retimed source-authored high-frequency icon motion to at most 280ms per element, with numeric base delays capped at 80ms and stagger steps capped at 40ms.",
              "reason": "Resolved the bundled utility import, added explicit animation disablement and reduced-motion handling, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-underline-icon",
            "sourceHash": "sha256:9c634492b3bed6f27e7deea64e2f86ecbdce9ecbf266485d0b50e84cea9154ff",
            "contentHash": "sha256:76045ab76294641c150c13a3ae78fe3180d5291792eba7fe37747ad0ccc63bbc",
            "structureHash": "sha256:5a6c5217d5313cdc98309a93bfdafec3170f1a1cf3c70ba086cbcf261fce4276",
            "glyph": {
              "inventoryName": "underline",
              "canonicalName": "underline",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "hextaui-video-player",
      "type": "registry:component",
      "title": "Video Player",
      "description": "Plays video with accessible custom controls and local keyboard shortcuts.",
      "author": "HextaUI",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@1.24.0",
        "tailwind-merge@3.6.0"
      ],
      "files": [
        {
          "path": "registry/sources/hextaui/components/hextaui-video-player/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/video-player/index.tsx"
        },
        {
          "path": "registry/sources/hextaui/components/hextaui-video-player/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/video-player/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "video",
            "playback",
            "controls"
          ],
          "renderer": "dom",
          "preview": "previews/hextaui-video-player.tsx",
          "source": {
            "project": "HextaUI",
            "repository": "https://github.com/preetsuthar17/HextaUI",
            "revision": "17ae993ed321e921dd03d2c98e81a140c8e316a8",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/hextaui-video-player/index.tsx",
                "upstreamPath": "registry/new-york/ui/video-player.tsx",
                "permalink": "https://github.com/preetsuthar17/HextaUI/blob/17ae993ed321e921dd03d2c98e81a140c8e316a8/registry/new-york/ui/video-player.tsx",
                "upstreamSha256": "sha256:ab1de272f4a1888da6192df7b828171831fa115c49130ea3c9ac17cc0f3f8eb9",
                "contentSha256": "sha256:182281167e0e5190cb8d4f0e04269043685e5c8739e6e3a6b41456dd5e2483ab",
                "changes": [
                  "Replaced the project-root utility alias with the bundled, byte-identical upstream utility module.",
                  "Replaced the project-specific rounded-card utility with rounded-xl and added caller-supplied accessible labels plus per-instance range ids.",
                  "Scoped shortcuts to the focused player, composed the caller's video click handler, and made pointer, focus, touch, narrow-screen, and reduced-motion control states usable.",
                  "Made play and fullscreen failures observable, synchronized state from media events, clamped seek and volume values, and centralized timeout and event cleanup."
                ]
              },
              {
                "shippedPath": "components/hextaui-video-player/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/preetsuthar17/HextaUI/blob/17ae993ed321e921dd03d2c98e81a140c8e316a8/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/new-york/ui/video-player.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Preet Suthar"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/preetsuthar17/HextaUI/blob/17ae993ed321e921dd03d2c98e81a140c8e316a8/LICENSE",
              "sha256": "sha256:1712522c36838eacc34a3e0b567eccd8668486a5badaf369521944760ac5845b",
              "localPath": "registry/sources/hextaui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/hextaui-video-player/index.tsx",
              "change": "Replaced the project-root utility alias with a bundled relative import, replaced one project-only radius token, added accessible labels and unique range ids, localized keyboard shortcuts, made the control surface responsive to pointer and focus input, handled media and fullscreen failures, and consolidated media-event and timer cleanup.",
              "reason": "Make the copied player install-complete while keeping it usable across multiple instances, keyboard, touch, narrow, right-to-left, and reduced-motion contexts without leaking document listeners or stale timers."
            }
          ],
          "dedupe": {
            "family": "custom-video-player",
            "sourceHash": "sha256:b5e176716405f8a0513262a286622bc32f78de82df4024d93e7a2b85b55fab22",
            "contentHash": "sha256:d7ba9189547f4be0691f619fb2093c374a86db4556f3d26311c7f5a342b9cfed",
            "structureHash": "sha256:0cbcfb4cdf664c097239a26a329861c105f004d8d079a8a37a04e812ee118ae0"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "kibo-calendar",
      "type": "registry:component",
      "title": "Calendar",
      "description": "Displays dated features in a navigable calendar grid.",
      "author": "Kibo UI",
      "dependencies": [
        "date-fns@4.1.0",
        "jotai@2.15.0",
        "lucide-react@0.545.0"
      ],
      "registryDependencies": [
        "button",
        "command",
        "popover",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/kibo-ui/components/kibo-calendar/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/calendar.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "calendar",
            "schedule",
            "features"
          ],
          "renderer": "dom",
          "preview": "previews/kibo-calendar.tsx",
          "source": {
            "project": "Kibo UI",
            "repository": "https://github.com/shadcnblocks/kibo",
            "revision": "3d63cdb15b79d972e3dc38a10997987672f9b263",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/kibo-calendar/index.tsx",
                "upstreamPath": "packages/calendar/index.tsx",
                "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/packages/calendar/index.tsx",
                "upstreamSha256": "sha256:e5ae166bf9627e7847924c913c0240a16b3a0199ddb55713cec39d79ecae858d",
                "contentSha256": "sha256:4425bbee41bd2553617372886a1a00258c330b68cc45a91cdd16c2a3cc0f44cd",
                "changes": [
                  "Named the month navigation controls, mirrored their icons for RTL, replaced physical spacing, border, and alignment utilities with logical equivalents, and allowed date controls to wrap.",
                  "Scoped the month and year atoms to each CalendarProvider and added screen-reader text for every feature status."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/calendar/index.tsx",
            "copyright": [
              "Copyright (c) 2023 — Present shadcnblocks"
            ],
            "evidence": {
              "upstreamPath": "license.md",
              "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/license.md",
              "sha256": "sha256:1fe9198b595ddadef7e2d99e3e1698c036db61c81e91c7b42df90d59f563b2ba",
              "localPath": "registry/sources/kibo-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/kibo-calendar/index.tsx",
              "change": "Named and mirrored the navigation controls, replaced physical layout utilities with logical equivalents, allowed date controls to wrap, scoped calendar atoms per provider, and added screen-reader status text.",
              "reason": "Make navigation and feature status discoverable to assistive technology, preserve the layout across narrow and right-to-left viewports, and prevent separate calendar instances from sharing navigation state."
            }
          ],
          "dedupe": {
            "family": "feature-calendar-grid",
            "sourceHash": "sha256:ddc0d301d477ac7c876d60d097483d38dfc95ac17e6f60bd7d6bc97d8c22ab6f",
            "contentHash": "sha256:7e30b92a9fa67155a1eab5788b411b394f8bf94218b9864871e344667967151f",
            "structureHash": "sha256:6d60d3639f01d86d1abc58911442d22a4bae6d4e7e0077b1fe8fdc5568deaca3"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "kibo-choicebox",
      "type": "registry:component",
      "title": "Choicebox",
      "description": "Presents radio choices as composable card rows.",
      "author": "Kibo UI",
      "dependencies": [],
      "registryDependencies": [
        "field",
        "radio-group",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/kibo-ui/components/kibo-choicebox/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/choicebox.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "radio",
            "choice",
            "field"
          ],
          "renderer": "dom",
          "preview": "previews/kibo-choicebox.tsx",
          "source": {
            "project": "Kibo UI",
            "repository": "https://github.com/shadcnblocks/kibo",
            "revision": "3d63cdb15b79d972e3dc38a10997987672f9b263",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/kibo-choicebox/index.tsx",
                "upstreamPath": "packages/choicebox/index.tsx",
                "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/packages/choicebox/index.tsx",
                "upstreamSha256": "sha256:4795f41f7db23cd2d059d3344a4c0662e6c039a3c9424791aaef741ade9f992f",
                "contentSha256": "sha256:acb94405a1a0be62bdf41e86947e4ecfeca4e0f179e334b97621ba85797a7249",
                "changes": [
                  "Replaced @repo/shadcn-ui radio-group and utility aliases with @/components/ui/radio-group and @/lib/utils.",
                  "Generated a stable control id when none is provided and passed it from ChoiceboxItem to ChoiceboxIndicator.",
                  "Narrowed ChoiceboxItem and ChoiceboxIndicator prop types to remove silently ignored wrapper props and the context-owned value."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/choicebox/index.tsx",
            "copyright": [
              "Copyright (c) 2023 — Present shadcnblocks"
            ],
            "evidence": {
              "upstreamPath": "license.md",
              "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/license.md",
              "sha256": "sha256:1fe9198b595ddadef7e2d99e3e1698c036db61c81e91c7b42df90d59f563b2ba",
              "localPath": "registry/sources/kibo-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/kibo-choicebox/index.tsx",
              "change": "Replaced Kibo's workspace-local aliases, generated a stable shared id for each label and radio indicator, and narrowed the wrapper prop surfaces to behavior they actually implement.",
              "reason": "Resolve imports through the host project's shadcn aliases, preserve the compound label association without duplicate caller wiring, and avoid advertising props that are silently ignored."
            }
          ],
          "dedupe": {
            "family": "card-radio-choice",
            "sourceHash": "sha256:1306978080f986650007668e73a506d83bd98716cf49e48a61b911555a79a7b1",
            "contentHash": "sha256:db722d6d00402be6999f151b84341fc7383d8b36e39d4edea5f158962e380878",
            "structureHash": "sha256:576be40b565ad007002082a43a093e5165a542d66cc4df7964818309002692a6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "kibo-contribution-graph",
      "type": "registry:component",
      "title": "Contribution Graph",
      "description": "Displays activity counts in a contribution calendar.",
      "author": "Kibo UI",
      "dependencies": [
        "date-fns@4.1.0"
      ],
      "registryDependencies": [
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/kibo-ui/components/kibo-contribution-graph/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/contribution-graph.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "activity",
            "calendar",
            "heatmap"
          ],
          "renderer": "svg",
          "preview": "previews/kibo-contribution-graph.tsx",
          "source": {
            "project": "Kibo UI",
            "repository": "https://github.com/shadcnblocks/kibo",
            "revision": "3d63cdb15b79d972e3dc38a10997987672f9b263",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/kibo-contribution-graph/index.tsx",
                "upstreamPath": "packages/contribution-graph/index.tsx",
                "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/packages/contribution-graph/index.tsx",
                "upstreamSha256": "sha256:a7461e71054d1c326ac2c5d2d613a21284c5dd933e05719a9e563f1ed6c0b900",
                "contentSha256": "sha256:c951c67e58e65018ab2e873b8769719791916c2d725591aa62a2ca7a457a591d",
                "changes": [
                  "Removed the unused weekdays label field, constrained default levels to the four styled intensities, gave contribution cells default image roles and labels, and changed legend margins to logical utilities."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/contribution-graph/index.tsx",
            "copyright": [
              "Copyright (c) 2023 — Present shadcnblocks"
            ],
            "evidence": {
              "upstreamPath": "license.md",
              "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/license.md",
              "sha256": "sha256:1fe9198b595ddadef7e2d99e3e1698c036db61c81e91c7b42df90d59f563b2ba",
              "localPath": "registry/sources/kibo-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/kibo-contribution-graph/index.tsx",
              "change": "Removed a no-op label field, constrained default intensity levels, added default accessible cell semantics, and changed legend margins to logical utilities.",
              "reason": "Keep the public API truthful, prevent unstyled levels, expose daily values to assistive technology, and preserve the legend in right-to-left layouts."
            }
          ],
          "dedupe": {
            "family": "contribution-calendar",
            "sourceHash": "sha256:560f91f82bb20782b6026d380c3546bdc7894cffa3a0d895dd7de3af77cd1542",
            "contentHash": "sha256:fbc9ae88ac522bfd3cde9edeb05e1e70b4c744bd262f9ff0c0f2b7c71198c4b7",
            "structureHash": "sha256:074df1b27ed9b24ba6371106f81f01a761617bccbae2448d825f1590317caf17"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "kibo-qr-code",
      "type": "registry:component",
      "title": "QR Code",
      "description": "Generates an SVG QR code from a string.",
      "author": "Kibo UI",
      "dependencies": [
        "culori@4.0.2",
        "qrcode@1.5.4"
      ],
      "devDependencies": [
        "@types/culori@4.0.1",
        "@types/qrcode@1.5.5"
      ],
      "registryDependencies": [
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/kibo-ui/components/kibo-qr-code/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/qr-code.tsx"
        },
        {
          "path": "registry/sources/kibo-ui/components/kibo-qr-code/server.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/qr-code-server.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "qr",
            "generator",
            "svg"
          ],
          "renderer": "svg",
          "preview": "previews/kibo-qr-code.tsx",
          "source": {
            "project": "Kibo UI",
            "repository": "https://github.com/shadcnblocks/kibo",
            "revision": "3d63cdb15b79d972e3dc38a10997987672f9b263",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/kibo-qr-code/index.tsx",
                "upstreamPath": "packages/qr-code/index.tsx",
                "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/packages/qr-code/index.tsx",
                "upstreamSha256": "sha256:457ff60279903676499271a15ac51f3305ae6286d31408786f19ce12acefd1a6",
                "contentSha256": "sha256:1b08bf4617c4a247155a58767e35e72bc873b05804591e6d9264047ba30fe145",
                "changes": [
                  "Required an accessible label and defaulted the rendered QR container to an image role.",
                  "Cleared stale SVG output and ignored obsolete asynchronous completions when QR inputs change.",
                  "Parsed supported CSS color strings through Culori instead of silently replacing non-oklch values with defaults."
                ]
              },
              {
                "shippedPath": "components/kibo-qr-code/server.tsx",
                "upstreamPath": "packages/qr-code/server.tsx",
                "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/packages/qr-code/server.tsx",
                "upstreamSha256": "sha256:bfd86fba5ca902aae8d2893fbe0749b07425fd09e548e69e1d047121e32086dc",
                "contentSha256": "sha256:765a15e5d3d21410847a7ae79b765fe0c1f4064bede3af859562cc9c75b11e1d",
                "changes": [
                  "Required an accessible label and defaulted the rendered QR container to an image role."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/qr-code/index.tsx, packages/qr-code/server.tsx",
            "copyright": [
              "Copyright (c) 2023 — Present shadcnblocks"
            ],
            "evidence": {
              "upstreamPath": "license.md",
              "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/license.md",
              "sha256": "sha256:1fe9198b595ddadef7e2d99e3e1698c036db61c81e91c7b42df90d59f563b2ba",
              "localPath": "registry/sources/kibo-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/kibo-qr-code/index.tsx",
              "change": "Required an accessible label, defaulted the client-rendered QR container to an image role, prevented stale asynchronous output after inputs change, and honored supported CSS color strings.",
              "reason": "Ensure generated QR graphics have a caller-supplied accessible name, always reflect the latest inputs, and do not silently ignore valid caller-supplied colors."
            },
            {
              "shippedPath": "components/kibo-qr-code/server.tsx",
              "change": "Required an accessible label and defaulted the server-rendered QR container to an image role.",
              "reason": "Keep client and server QR output equally identifiable to assistive technology."
            }
          ],
          "dedupe": {
            "family": "qr-code-generator",
            "sourceHash": "sha256:79238d1e4b7a50f293ddfe631745f4307188392f96faaaf06cd98eef5e0807c7",
            "contentHash": "sha256:e22e5070f87c975c51f3e1d2ed0c24ba46ae39cb804071a1e42b198db920d6ce",
            "structureHash": "sha256:eb151369ac14c7637cef4df81ba1b296614b3f72340f4b05fb6e53a7fcae7af4"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "kibo-relative-time",
      "type": "registry:component",
      "title": "Relative Time",
      "description": "Displays one time across multiple time zones.",
      "author": "Kibo UI",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2"
      ],
      "registryDependencies": [
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/kibo-ui/components/kibo-relative-time/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/relative-time.tsx"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "time",
            "timezone",
            "clock"
          ],
          "renderer": "dom",
          "preview": "previews/kibo-relative-time.tsx",
          "source": {
            "project": "Kibo UI",
            "repository": "https://github.com/shadcnblocks/kibo",
            "revision": "3d63cdb15b79d972e3dc38a10997987672f9b263",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/kibo-relative-time/index.tsx",
                "upstreamPath": "packages/relative-time/index.tsx",
                "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/packages/relative-time/index.tsx",
                "upstreamSha256": "sha256:97de2ca519b61e7088f5062f13eb8b01f5aeafcb9ce6b81b142f0d0b9c854597",
                "contentSha256": "sha256:1fbd2f0e5fa0e7656028dfdaa4e77b8a221b8df614cf3d6e101a5df3e9c25f08",
                "changes": [
                  "Paused the live clock while its root is offscreen or the document is hidden and replaced left padding with logical inline-start padding.",
                  "Merged formatting options with the requested timezone and applied per-zone format overrides instead of leaking them to the DOM.",
                  "Applied the RelativeTimeZoneDate className instead of silently discarding it."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/relative-time/index.tsx",
            "copyright": [
              "Copyright (c) 2023 — Present shadcnblocks"
            ],
            "evidence": {
              "upstreamPath": "license.md",
              "permalink": "https://github.com/shadcnblocks/kibo/blob/3d63cdb15b79d972e3dc38a10997987672f9b263/license.md",
              "sha256": "sha256:1fe9198b595ddadef7e2d99e3e1698c036db61c81e91c7b42df90d59f563b2ba",
              "localPath": "registry/sources/kibo-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/kibo-relative-time/index.tsx",
              "change": "Observed root and document visibility before running the live clock, changed its spacing to a logical utility, made formatting options honor each zone without leaking props to the DOM, and applied the date display className.",
              "reason": "Prevent continuous work while hidden or offscreen, preserve spacing in right-to-left layouts, and make the documented formatting and styling API behave consistently."
            }
          ],
          "dedupe": {
            "family": "multi-zone-relative-time",
            "sourceHash": "sha256:b0073184d39ae1f722c025735c52aaec0389018cd2830296c92bc2f89f84637b",
            "contentHash": "sha256:9bd4591830e3e21dc8f5aa4681189b23657be82d314457ff4c72f2394a4e7904",
            "structureHash": "sha256:974796ce97a3b5ea7fe0ef52aeb77b4a31f1bf9cf5e72a9df8b92d59533698b0"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "kokonut-avatar-picker",
      "type": "registry:component",
      "title": "Avatar Picker",
      "description": "Collects an avatar choice and validated username through a compact, animated profile setup form.",
      "author": "kokonutUI",
      "dependencies": [
        "@radix-ui/react-slot@1.2.4",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.556.0",
        "motion@12.23.25",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/kokonut-ui/components/kokonut-avatar-picker/avatar-picker.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/kokonut-avatar-picker.tsx"
        },
        {
          "path": "registry/sources/kokonut-ui/components/ui/button.tsx",
          "type": "registry:ui",
          "target": "@components/ui/button.tsx"
        },
        {
          "path": "registry/sources/kokonut-ui/components/ui/card.tsx",
          "type": "registry:ui",
          "target": "@components/ui/card.tsx"
        },
        {
          "path": "registry/sources/kokonut-ui/components/ui/input.tsx",
          "type": "registry:ui",
          "target": "@components/ui/input.tsx"
        },
        {
          "path": "registry/sources/kokonut-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "avatar",
            "profile",
            "validated-input",
            "selection"
          ],
          "renderer": "dom",
          "preview": "previews/kokonut-avatar-picker.tsx",
          "source": {
            "project": "Kokonut UI",
            "repository": "https://github.com/kokonut-labs/kokonutui",
            "revision": "4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/kokonut-avatar-picker/avatar-picker.tsx",
                "upstreamPath": "components/kokonutui/avatar-picker.tsx",
                "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/components/kokonutui/avatar-picker.tsx",
                "upstreamSha256": "sha256:cd01dbf9b1fcfa4dc71f7a40c826ae4d6ba4dff9606bdec7309fc9d282a13363",
                "contentSha256": "sha256:49497fef8bd80df87dd10b01a958d6891e310663f04eec9a90c9badb93d24958",
                "changes": [
                  "Renamed the exported component to AvatarPicker, made completion explicit, and added configurable labels and defaults while preserving the upstream avatar art and visual composition.",
                  "Replaced duplicate fixed SVG mask IDs with viewport-clipped artwork and generated a unique username field ID so multiple instances remain valid.",
                  "Changed the clickable container into a native form, added Enter submission, accessible error and counter associations, and meaningful selected-art semantics.",
                  "Made the thumbnail strip fit narrow viewports, gated hover-only movement to hover-capable devices, and disabled movement and transitions for reduced motion.",
                  "Changed application aliases to the bundled relative support closure and normalized formatting."
                ]
              },
              {
                "shippedPath": "components/ui/button.tsx",
                "upstreamPath": "components/ui/button.tsx",
                "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/components/ui/button.tsx",
                "upstreamSha256": "sha256:6ccf1b15a9db001a2e682ee288f4c77b6ced9988325cc070a61a8056eb6c02e2",
                "contentSha256": "sha256:396f54f5ad8820aaf2b169d4e0e7edcc636dc6f18abf18a04bf3801acef7cf2b",
                "changes": [
                  "Changed the application utility alias to ../../lib/utils and normalized formatting without changing the component API or variants."
                ]
              },
              {
                "shippedPath": "components/ui/card.tsx",
                "upstreamPath": "components/ui/card.tsx",
                "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/components/ui/card.tsx",
                "upstreamSha256": "sha256:cf27e9441dcf2882fc35483b84c4e231918186ec7e4b50c63984f48c3cb84aa0",
                "contentSha256": "sha256:7adffde373558cdf7467c18482b24e633f671e536ef662f8d62b2ee6de8151f0",
                "changes": [
                  "Changed the application utility alias to ../../lib/utils and normalized formatting without changing the card primitives."
                ]
              },
              {
                "shippedPath": "components/ui/input.tsx",
                "upstreamPath": "components/ui/input.tsx",
                "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/components/ui/input.tsx",
                "upstreamSha256": "sha256:543afece30d075d11dc87dfd90295cfa196d4fc7ee56021fc6865f177723dea6",
                "contentSha256": "sha256:d4add37f0033c049c25b186d04e443770968f3c6d634335a521aaff4bf0ac971",
                "changes": [
                  "Changed the application utility alias to ../../lib/utils and normalized formatting without changing the input API."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/lib/utils.ts",
                "upstreamSha256": "sha256:9e45d6d21e0d57bf85930ba2bf6fdd9f5f0175d1129844356081a6050975deb1",
                "contentSha256": "sha256:51bbf14cd1f84f49aab2e0dbee420137015d56b6677bb439e83a908cd292cce1",
                "changes": [
                  "Normalized formatting and line endings without changing behavior."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/kokonutui/avatar-picker.tsx, components/ui/button.tsx, components/ui/card.tsx, components/ui/input.tsx, and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 kokonutUI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/LICENSE",
              "sha256": "sha256:b2e018ad1fd564608cc1ee0c2ad675ce5202c8ed9f5f68e6d09e7b6bc881d5d2",
              "localPath": "registry/sources/kokonut-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/kokonut-avatar-picker/avatar-picker.tsx",
              "change": "Kept the upstream art and composition while making IDs instance-safe, submission real, copy configurable, narrow layouts stable, and motion accessible.",
              "reason": "The copied visual was strong, but fixed IDs, click-only submission, narrow overflow, and incomplete reduced-motion behavior prevented production use."
            },
            {
              "shippedPath": "components/ui/button.tsx",
              "change": "Repointed the utility import and normalized formatting.",
              "reason": "Keep the copied dependency closure installable outside the upstream application."
            },
            {
              "shippedPath": "components/ui/card.tsx",
              "change": "Repointed the utility import and normalized formatting.",
              "reason": "Keep the copied dependency closure installable outside the upstream application."
            },
            {
              "shippedPath": "components/ui/input.tsx",
              "change": "Repointed the utility import and normalized formatting.",
              "reason": "Keep the copied dependency closure installable outside the upstream application."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Normalized formatting and line endings.",
              "reason": "Match the source batch formatting without changing the copied helper."
            }
          ],
          "dedupe": {
            "family": "avatar-profile-setup",
            "sourceHash": "sha256:cefc351bd468f9d754ded94eca388920db8dec0cfc4014ed0d930162c1f3a901",
            "contentHash": "sha256:0fe706c30882f1076b6400722538b55bed02bb33b6c834f1f3e137cefecc4325",
            "structureHash": "sha256:7258e4326ff774664ffcc69e90a4eb84c8797a5a0f37d9cd85990ec2a3059fae"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "kokonut-file-upload",
      "type": "registry:component",
      "title": "File Upload",
      "description": "Validates, uploads, cancels, and reports progress for a dropped or selected file through a caller-supplied async transport.",
      "author": "kokonutUI",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.556.0",
        "motion@12.23.25",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/kokonut-ui/components/kokonut-file-upload/file-upload.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/kokonut-file-upload.tsx"
        },
        {
          "path": "registry/sources/kokonut-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "file-upload",
            "drag-drop",
            "progress",
            "cancellable"
          ],
          "renderer": "svg",
          "preview": "previews/kokonut-file-upload.tsx",
          "source": {
            "project": "Kokonut UI",
            "repository": "https://github.com/kokonut-labs/kokonutui",
            "revision": "4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/kokonut-file-upload/file-upload.tsx",
                "upstreamPath": "components/kokonutui/file-upload.tsx",
                "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/components/kokonutui/file-upload.tsx",
                "upstreamSha256": "sha256:a4e08685bba86205a625fced37fd1a4dcc034d2b8b707c35f36ae27019b34846",
                "contentSha256": "sha256:6d2667e60bab4143355f5357fc57494fbf9e7013d63db214d56850f014a25e35",
                "changes": [
                  "Replaced the built-in fake upload timer with a required caller-supplied async upload function, AbortSignal cancellation, and bounded progress reporting.",
                  "Replaced regular-expression MIME matching with literal MIME, wildcard MIME, and extension matching; bounded invalid size and progress inputs.",
                  "Added a persistent completed state, visible errors, cancellable cleanup, unique SVG mask IDs, live progress, and semantic busy and group states.",
                  "Stopped all SMIL, CSS, and Motion movement under reduced motion, increased touch targets, and gated decorative hover movement.",
                  "Changed the application utility alias to the bundled relative helper and normalized formatting while preserving the upstream upload illustrations and ring geometry."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/lib/utils.ts",
                "upstreamSha256": "sha256:9e45d6d21e0d57bf85930ba2bf6fdd9f5f0175d1129844356081a6050975deb1",
                "contentSha256": "sha256:51bbf14cd1f84f49aab2e0dbee420137015d56b6677bb439e83a908cd292cce1",
                "changes": [
                  "Normalized formatting and line endings without changing behavior."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/kokonutui/file-upload.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 kokonutUI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/kokonut-labs/kokonutui/blob/4aba04e5e1c3e1c7de966554aacbe0cd6a31c77e/LICENSE",
              "sha256": "sha256:b2e018ad1fd564608cc1ee0c2ad675ce5202c8ed9f5f68e6d09e7b6bc881d5d2",
              "localPath": "registry/sources/kokonut-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/kokonut-file-upload/file-upload.tsx",
              "change": "Preserved the upstream visual treatment while replacing simulated behavior with a real async transport contract, cancellation, strict validation, completed and error states, unique SVG IDs, and complete motion and input accessibility.",
              "reason": "A reusable upload component must never claim success from a timer; it needs caller-owned transport, progress, cancellation, validation, and deterministic cleanup."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Normalized formatting and line endings.",
              "reason": "Match the source batch formatting without changing the copied helper."
            }
          ],
          "dedupe": {
            "family": "asynchronous-file-drop-uploader",
            "sourceHash": "sha256:79219df5495222423276bc11302ea43663905a883e1988299eb4914a2effcac7",
            "contentHash": "sha256:a4c21a15384834b2c2b3bf62a6865f5f1c12a314a84ab57a77130a7cdae2a2bb",
            "structureHash": "sha256:837be6eff2111f60bbffa0040879eedfe95d29d7df14aed26cf4e3f7ef5985cb"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "loading-ui-analyzing-image",
      "type": "registry:component",
      "title": "Analyzing Image",
      "description": "Sweeps a scan line across an image glyph to represent image analysis.",
      "author": "Loading UI",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.38.0",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/loading-ui/components/loading-ui-analyzing-image/analyzing-image.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/analyzing-image.tsx"
        },
        {
          "path": "registry/sources/loading-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "loader",
            "image",
            "analysis"
          ],
          "renderer": "svg",
          "preview": "previews/loading-ui-analyzing-image.tsx",
          "source": {
            "project": "Loading UI",
            "repository": "https://github.com/turbostarter/loading-ui",
            "revision": "8d6dc5c0a8610e5f3c093bc2d88b50897f263cdd",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/loading-ui-analyzing-image/analyzing-image.tsx",
                "upstreamPath": "registry/components/loading-ui/analyzing-image.tsx",
                "permalink": "https://github.com/turbostarter/loading-ui/blob/8d6dc5c0a8610e5f3c093bc2d88b50897f263cdd/registry/components/loading-ui/analyzing-image.tsx",
                "upstreamSha256": "sha256:71a8b467a849e956af8e00a9aec06cc807b65e097ceef2a3f74f52f1cf9b7000",
                "contentSha256": "sha256:88b6d6617a2cc8702faa3ad3856a0092104533c6545ad4d2d8f8101c3275f862",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied support file resolves both in this batch and at the registry target.",
                  "Marked the visual layers as decorative, limited the repeating scan to the visible viewport when reduced motion is not requested, and added a static forced-colors fallback."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/turbostarter/loading-ui/blob/8d6dc5c0a8610e5f3c093bc2d88b50897f263cdd/lib/utils.ts",
                "upstreamSha256": "sha256:1796bf7e343110e1ba16a64aa27c6715457cead219cf4e2034d283c50a042ade",
                "contentSha256": "sha256:d1f1e0d62cb8d8d1e04c26e14de842d8a151f75812d81b046c65b5d1fe8e4b27",
                "changes": [
                  "Removed the unrelated getNodeText and getHeadingId exports and the now-unused React import; retained only the upstream cn support closure."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/components/loading-ui/analyzing-image.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2026 Bartosz Zagrodzki"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/turbostarter/loading-ui/blob/8d6dc5c0a8610e5f3c093bc2d88b50897f263cdd/LICENSE.md",
              "sha256": "sha256:d7bbcfc32d354c35689bd19bbd7c50279fc2406dd693e2bb9cfa8216ba83131b",
              "localPath": "registry/sources/loading-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/loading-ui-analyzing-image/analyzing-image.tsx",
              "change": "Changed the local utility import, marked internal graphics as decorative, gated repeating motion by reduced-motion preference and viewport visibility, and added a static forced-colors fallback.",
              "reason": "Resolve the copied helper, preserve one named status, stop continuous work offscreen or for reduced-motion users, and keep a legible non-animated high-contrast state."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed getNodeText, getHeadingId, and their React import.",
              "reason": "Keep the copied support closure limited to the cn export used by this component."
            }
          ],
          "dedupe": {
            "family": "image-analysis-scan",
            "sourceHash": "sha256:e590a98df92d4843909582826b129d24e914b72b6ffa54c0cbae49e17d43354b",
            "contentHash": "sha256:62ac422674a5ec7015310c34623893a24787d92abf94721e8c401997cc46e8c5",
            "structureHash": "sha256:98dbf67d0b319b047508b1a9518e2c4f871ab348eecfef539443b4b855aaac42"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-air-vent-icon",
      "type": "registry:component",
      "title": "Animated Air Vent Icon",
      "description": "Renders the Lucide Air Vent glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-air-vent-icon/air-vent.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-air-vent-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "air",
            "vent",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-air-vent-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-air-vent-icon/air-vent.tsx",
                "upstreamPath": "icons/air-vent.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/air-vent.tsx",
                "upstreamGitBlobSha": "d0b47fa4d5933fe0ec1cee7d6581aaa554101d86",
                "upstreamSha256": "sha256:7d6a3b7151820de5e60604517e1f695759a888cc561a7fffb7afda2fbf327017",
                "contentSha256": "sha256:d137b152b8320b1669461824ac74454007880ded324d46279e2a89d2d632301f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/air-vent.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-air-vent-icon/air-vent.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-air-vent-icon",
            "sourceHash": "sha256:e95fbbc42e7546d59c922de998ca1e8c3c243482745032370de7704a4d487b10",
            "contentHash": "sha256:f0c081673f983f143688aae382f2caa6976da58e2498958ad35ac0fbae8cea0c",
            "structureHash": "sha256:0decb112c2d94bb5966d4de9dd4bfe56a5644c85f032208caee38139a2dea041",
            "glyph": {
              "inventoryName": "air-vent",
              "canonicalName": "air-vent",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-ban-icon",
      "type": "registry:component",
      "title": "Animated Ban Icon",
      "description": "Renders the Lucide Ban glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-ban-icon/ban.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-ban-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "ban",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-ban-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-ban-icon/ban.tsx",
                "upstreamPath": "icons/ban.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/ban.tsx",
                "upstreamGitBlobSha": "585f26e934be2414b0bdc94fedee15e7c91426f8",
                "upstreamSha256": "sha256:bfa5a44371d77f2bc6e2f7292851647d5490fef7a9b38e4c1413961140bed92d",
                "contentSha256": "sha256:392f2ef9a53cd2081fcb3919aad18c22b69afe1f2d2daefe5d06505366ce11ca",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/ban.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-ban-icon/ban.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-ban-icon",
            "sourceHash": "sha256:6bf50a2c6b95487de685d3b47c73e5a73d2e3503a68da201f9a6dedf5bcd9b31",
            "contentHash": "sha256:c76ca8d274b09b7d7e5cc836e59208b18e1f1dffc4eb820b9628f3b820d3dc55",
            "structureHash": "sha256:a908eca03ff941dc15cf7b83fada0a0aad10e09662e38d824bd3581092209935",
            "glyph": {
              "inventoryName": "ban",
              "canonicalName": "ban",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-banana-icon",
      "type": "registry:component",
      "title": "Animated Banana Icon",
      "description": "Renders the Lucide Banana glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-banana-icon/banana.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-banana-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "banana",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-banana-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-banana-icon/banana.tsx",
                "upstreamPath": "icons/banana.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/banana.tsx",
                "upstreamGitBlobSha": "281d38b398f277aec01fdec48a952043f2156ebd",
                "upstreamSha256": "sha256:7ba5efafdec056b3e4eb78b6ed87e2053d11bf68120c8ab19ba24658c8513952",
                "contentSha256": "sha256:cd7d707f592e05dd335ef30d107a11edf51ffd7e944af371f1162c3afc927874",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/banana.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-banana-icon/banana.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-banana-icon",
            "sourceHash": "sha256:f8428de4dd775452b20a588e59894250396e216e77ad55e55265956665bc0b79",
            "contentHash": "sha256:c7b5d62bdede7f5c906e53104bca9a994a18adf4061adf50d1786ccb0a6e8adf",
            "structureHash": "sha256:84e62d0e469f949a02a6460e4500ea991d1a61ee55b6b0fd71b9b81ce9d2132c",
            "glyph": {
              "inventoryName": "banana",
              "canonicalName": "banana",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-bluetooth-icon",
      "type": "registry:component",
      "title": "Animated Bluetooth Icon",
      "description": "Renders the Lucide Bluetooth glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-bluetooth-icon/bluetooth.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-bluetooth-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bluetooth",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-bluetooth-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-bluetooth-icon/bluetooth.tsx",
                "upstreamPath": "icons/bluetooth.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/bluetooth.tsx",
                "upstreamGitBlobSha": "58002355ba37a674d9dc041d9b6738e1c734446d",
                "upstreamSha256": "sha256:1d14888cafb0a5c16a6e751fb155bca0547d781d615370e19791b2fe1789a92b",
                "contentSha256": "sha256:09842cf7e056c1e839f35ba1827d6d5739c2129c1a30ce2693a8ce2b123c9e49",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/bluetooth.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-bluetooth-icon/bluetooth.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-bluetooth-icon",
            "sourceHash": "sha256:99734adee3ddc303b6b44e2f76fc2a2986533427a722050c3d412c66a3d21095",
            "contentHash": "sha256:a7c2dcb366074f3416974a821e782237b6f19393dac37a16d64dea9b4c8ec083",
            "structureHash": "sha256:da26e3f6767a59007b2b4ca2ba795656da1a4510680e9316bb9705cd601dfc65",
            "glyph": {
              "inventoryName": "bluetooth",
              "canonicalName": "bluetooth",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-bone-icon",
      "type": "registry:component",
      "title": "Animated Bone Icon",
      "description": "Renders the Lucide Bone glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-bone-icon/bone.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-bone-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bone",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-bone-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-bone-icon/bone.tsx",
                "upstreamPath": "icons/bone.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/bone.tsx",
                "upstreamGitBlobSha": "aab4042cf9715442e2c00e66cdfdd0956563e75f",
                "upstreamSha256": "sha256:6b85e70dcee55ca2ce621f37308c05e300e04fc22f412314cf385daae251d549",
                "contentSha256": "sha256:b31dccc6056d2bc2eccf4be6ea8042a3b97eb813f540e5972cbc47f247d18fa6",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/bone.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-bone-icon/bone.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-bone-icon",
            "sourceHash": "sha256:1c4c19a64967ed8cfe78ccc393684b03170d840386f411a3095f78caf06242ba",
            "contentHash": "sha256:ea69be2b9330d18ec90bd4fe612f7c30abfdfaff7a96dea28ba4c57237659556",
            "structureHash": "sha256:afefeee670bcb5976c6183406cffac394bf8ead2c472ce4c9260962f77174a13",
            "glyph": {
              "inventoryName": "bone",
              "canonicalName": "bone",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-bot-icon",
      "type": "registry:component",
      "title": "Animated Bot Icon",
      "description": "Renders the Lucide Bot glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-bot-icon/bot.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-bot-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "bot",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-bot-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-bot-icon/bot.tsx",
                "upstreamPath": "icons/bot.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/bot.tsx",
                "upstreamGitBlobSha": "4e93f6ae91f243f93c462117b0c8acf7e23abab3",
                "upstreamSha256": "sha256:44fb0b37f7951ea756cfd44944d9f61d8584525d1335e47ca06cc71cd70c65dc",
                "contentSha256": "sha256:95f4b4cda63df4639f103601117addd718c7484ed48ade31ae677d5c4d4e178c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/bot.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-bot-icon/bot.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-bot-icon",
            "sourceHash": "sha256:77b5ea5ac9bc98d0b98a4b29fff52137d95b9474e99b155c7e8bdf57a7ef5eec",
            "contentHash": "sha256:02bedb1563ac65eaeec6f53b4d6bdfaefb60ff6f01102f926ad1ad30655764e3",
            "structureHash": "sha256:677105e06d6edcf9a531f17fdb5eba1eec2bd857d812f9dc1ed85296a395b966",
            "glyph": {
              "inventoryName": "bot",
              "canonicalName": "bot",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-circle-dashed-icon",
      "type": "registry:component",
      "title": "Animated Circle Dashed Icon",
      "description": "Renders the Lucide Circle Dashed glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-circle-dashed-icon/circle-dashed.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-circle-dashed-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle",
            "dashed",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-circle-dashed-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-circle-dashed-icon/circle-dashed.tsx",
                "upstreamPath": "icons/circle-dashed.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/circle-dashed.tsx",
                "upstreamGitBlobSha": "65c79931656b173f7fc0d66451d7dba5a44b8c49",
                "upstreamSha256": "sha256:2eed9e7daf44d0bf362f0b34997d30a170665ec522a8cdeca79d20d692e27593",
                "contentSha256": "sha256:cf003f53582c9cedca0c31186661ed6bd74f05cc7d3cd1695af7958fb878bb9d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/circle-dashed.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-circle-dashed-icon/circle-dashed.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-circle-dashed-icon",
            "sourceHash": "sha256:5c50d71c5b06bc935da16cf9a690a6ea6eba95d5a274e770b8a3eb8068b9976c",
            "contentHash": "sha256:166e74adb4768f81b6fae2780927a94bec7973062d4c5414a119501c729e12f6",
            "structureHash": "sha256:f65083d5a1864e1ef94b225242c9d2621054ae621824ce159ba1915e6f131d09",
            "glyph": {
              "inventoryName": "circle-dashed",
              "canonicalName": "circle-dashed",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-circle-help-icon",
      "type": "registry:component",
      "title": "Animated Circle Help Icon",
      "description": "Renders the Lucide Circle Help glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-circle-help-icon/circle-help.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-circle-help-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "circle",
            "help",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-circle-help-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-circle-help-icon/circle-help.tsx",
                "upstreamPath": "icons/circle-help.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/circle-help.tsx",
                "upstreamGitBlobSha": "9b3bf03195b9bd0777567ed904f344fbebe73b61",
                "upstreamSha256": "sha256:47e7d6e920f31689c9f2a7c16f39f876ef066f0941f89e0a884f9841dfb7884e",
                "contentSha256": "sha256:311fbc12272089f50bb3a6bbd0b9c45c3a645dfbaeacc8d9e759ec58f98677f8",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/circle-help.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-circle-help-icon/circle-help.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-circle-help-icon",
            "sourceHash": "sha256:20a9441b803c65f17ef47a9fea3c944e9ecd3b4e4f57835544585796ecd6cffc",
            "contentHash": "sha256:d07e3e229a5a81aff329804a72c960ea3e545453d15cf3760cc041cc8cfe1364",
            "structureHash": "sha256:a21f1273e00d50de2817e9a8980af429494bfaf974b9ecdcdca6d618974c420d",
            "glyph": {
              "inventoryName": "circle-help",
              "canonicalName": "circle-help",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-contrast-icon",
      "type": "registry:component",
      "title": "Animated Contrast Icon",
      "description": "Renders the Lucide Contrast glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-contrast-icon/contrast.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-contrast-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "contrast",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-contrast-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-contrast-icon/contrast.tsx",
                "upstreamPath": "icons/contrast.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/contrast.tsx",
                "upstreamGitBlobSha": "6aa4260c0b4460d57ff3275a7ffffb9cef657f04",
                "upstreamSha256": "sha256:4ea29872a8943703ed0ccc7adca18663e97d7689ff9196533a0a5532f8705a66",
                "contentSha256": "sha256:c9ee26b1610f2743f47aeaa4a72b5f2e46b35a27e981a3469aa50ec7b5581d67",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/contrast.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-contrast-icon/contrast.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-contrast-icon",
            "sourceHash": "sha256:37f46a326f3c0c2aad6beca1a95655f4b56072165cfa7ca6b51507a5396dc6a8",
            "contentHash": "sha256:b0ae12c8341f89598f3595f8741881368246746d81bb768b6b3d07d42859aa55",
            "structureHash": "sha256:e2db87a36dc08cb6b8476669128219ccb7e2e8fc6794b1f06849018e5324430e",
            "glyph": {
              "inventoryName": "contrast",
              "canonicalName": "contrast",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-database-backup-icon",
      "type": "registry:component",
      "title": "Animated Database Backup Icon",
      "description": "Renders the Lucide Database Backup glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-database-backup-icon/database-backup.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-database-backup-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "database",
            "backup",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-database-backup-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-database-backup-icon/database-backup.tsx",
                "upstreamPath": "icons/database-backup.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/database-backup.tsx",
                "upstreamGitBlobSha": "f0c8fa98025457250feb451e8491d8829d6c67ab",
                "upstreamSha256": "sha256:04090859ff313a62055e3a4539792c18fa728f975926b5c7b4de8dfea0590f31",
                "contentSha256": "sha256:9d1ca46850bf8e33ebcadc3e4a98980e4cbe5797982b4b8b27be06df47353a9b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/database-backup.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-database-backup-icon/database-backup.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-database-backup-icon",
            "sourceHash": "sha256:075ef34b697bc10e5b55b389b6864c9a5a4ca4fade2bdc5ea163a1bf569dd5da",
            "contentHash": "sha256:8f7a9b2b53e68eb2631853f3e2999cf138052da4d065facb08016120a16e6940",
            "structureHash": "sha256:ab14c4a6fbc1f2fdc69a4262d2ef7093da8e24d06c4fea703f0dc8fde790a235",
            "glyph": {
              "inventoryName": "database-backup",
              "canonicalName": "database-backup",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-droplet-icon",
      "type": "registry:component",
      "title": "Animated Droplet Icon",
      "description": "Renders the Lucide Droplet glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-droplet-icon/droplet.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-droplet-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "droplet",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-droplet-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-droplet-icon/droplet.tsx",
                "upstreamPath": "icons/droplet.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/droplet.tsx",
                "upstreamGitBlobSha": "db148b325b7545f399b3b5b16cc4431ca9ad2503",
                "upstreamSha256": "sha256:3f1a2de6db0b4f2bf9171441904685d3aaed45d116e449a265d3b91cc405a27b",
                "contentSha256": "sha256:fddf5a92fc94f31bcd1f2c53aa44f4b1cea0f56ce8424bd50c0ad0b2ed3557d6",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/droplet.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-droplet-icon/droplet.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-droplet-icon",
            "sourceHash": "sha256:98060e17a3178d818496dd1f1dcf7bb5a8b5331ee1d2ca4010a6ecb0e81bbcc5",
            "contentHash": "sha256:92fa597e8b1a97713eb27eca89d255bac582707ef6a60dabe5d798da639f4b75",
            "structureHash": "sha256:6e3bab1e4b4bec6d86b6b19edda3221da5ca62801af1e4e35c027eb9b34845b8",
            "glyph": {
              "inventoryName": "droplet",
              "canonicalName": "droplet",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-fish-symbol-icon",
      "type": "registry:component",
      "title": "Animated Fish Symbol Icon",
      "description": "Renders the Lucide Fish Symbol glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-fish-symbol-icon/fish-symbol.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-fish-symbol-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "fish",
            "symbol",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-fish-symbol-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-fish-symbol-icon/fish-symbol.tsx",
                "upstreamPath": "icons/fish-symbol.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/fish-symbol.tsx",
                "upstreamGitBlobSha": "926d806d021c0eaac7ff1ae8d94aad599c2da003",
                "upstreamSha256": "sha256:618e5b4476bc33ce76e9de32a229fb3b08a8e8f6cb115b4eb17b48d79dbbc5f6",
                "contentSha256": "sha256:1893a6b058cc1742a469c19e89857cb5d89e4a85244be7cddad0b58c63380ce1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/fish-symbol.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-fish-symbol-icon/fish-symbol.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-fish-symbol-icon",
            "sourceHash": "sha256:eaf03849b1b6bf9428f5e43b2a6decac17d064c6bc7414ba0d9440a58044a402",
            "contentHash": "sha256:f5dfc77e8ca9d69c8d00400775a211cd3472187208718da9028f04a3f10aae31",
            "structureHash": "sha256:24262bda8f0b8e760b4a0b5409e9b666872d37e89658d6245a19c1c8676ce71b",
            "glyph": {
              "inventoryName": "fish-symbol",
              "canonicalName": "fish-symbol",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-frame-icon",
      "type": "registry:component",
      "title": "Animated Frame Icon",
      "description": "Renders the Lucide Frame glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-frame-icon/frame.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-frame-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "frame",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-frame-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-frame-icon/frame.tsx",
                "upstreamPath": "icons/frame.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/frame.tsx",
                "upstreamGitBlobSha": "8a35a3a4c3e9205b4fc2d6aa70e5f6eb52e7150e",
                "upstreamSha256": "sha256:eaec9f969c8c1312a64dd36d4581745318cc95047812bad7c4c0f82257f8c2a2",
                "contentSha256": "sha256:9770226fbc41d84084d28b2cca092f0d1338b6983ce60143c34939ce304662af",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/frame.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-frame-icon/frame.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-frame-icon",
            "sourceHash": "sha256:201ba976faa78890c880ce1ff18de38e61aa575ef6e2dfad3b3753fb8f035dfd",
            "contentHash": "sha256:2373d1b2ac13f2c5d2639f586622949a674e2dfcd22c0f39fc9522e7d3e48a18",
            "structureHash": "sha256:8fb30ad67bf7a381c40aa578722e426deaae64a85b99e3808117512a29d81255",
            "glyph": {
              "inventoryName": "frame",
              "canonicalName": "frame",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-gauge-icon",
      "type": "registry:component",
      "title": "Animated Gauge Icon",
      "description": "Renders the Lucide Gauge glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-gauge-icon/gauge.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-gauge-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "gauge",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-gauge-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-gauge-icon/gauge.tsx",
                "upstreamPath": "icons/gauge.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/gauge.tsx",
                "upstreamGitBlobSha": "cd72682fbecc0b11eae978355056cd74670628c3",
                "upstreamSha256": "sha256:c840df02e1b818f8d2529a68093a44aaad47951305c1ac7db9f60bc84fcd9701",
                "contentSha256": "sha256:e1b5607c7d886701f964f39a99eca0796d205ef26b05ee9fa23a7eae5b49c3c5",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/gauge.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-gauge-icon/gauge.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-gauge-icon",
            "sourceHash": "sha256:3f815ccf039cfddbea562b94cf557a606ef20830c16e187810f4ddd9c4fcaf65",
            "contentHash": "sha256:2ae68a9d533d84836cf9c4b4c3020d44d7ebf24e28829350b8b55feaea2bd659",
            "structureHash": "sha256:be43733fac7999c0880c747c41dfd20c112191e07a4a61e1d1d07c52e9b7f362",
            "glyph": {
              "inventoryName": "gauge",
              "canonicalName": "gauge",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-git-graph-icon",
      "type": "registry:component",
      "title": "Animated Git Graph Icon",
      "description": "Renders the Lucide Git Graph glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-git-graph-icon/git-graph.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-git-graph-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git",
            "graph",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-git-graph-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-git-graph-icon/git-graph.tsx",
                "upstreamPath": "icons/git-graph.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/git-graph.tsx",
                "upstreamGitBlobSha": "22f559c2a48b202e51d59388107416f0ef78fa43",
                "upstreamSha256": "sha256:afae503be4fb40ab3cde72611fd8850f0840d9b17e7bd9aac53be633663b90d9",
                "contentSha256": "sha256:f3c394814367a60566996a89c8ab1923db30a0f797a0aa50c0abbe11524a272e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/git-graph.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-git-graph-icon/git-graph.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-git-graph-icon",
            "sourceHash": "sha256:c1b2617b8f1db7c66617735131d5182cfad6fa5f5273ffaa4b286135fa6cc1a1",
            "contentHash": "sha256:b4604711c5efc820ef03479d64b16d3280d5f3f57d0a0ee2304cf9c12de80924",
            "structureHash": "sha256:5d100cf093bfd5f73db1fc0cc479be3f03348a27db8e95af1fdd029206ce92ad",
            "glyph": {
              "inventoryName": "git-graph",
              "canonicalName": "git-graph",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-git-pull-request-icon",
      "type": "registry:component",
      "title": "Animated Git Pull Request Icon",
      "description": "Renders the Lucide Git Pull Request glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-git-pull-request-icon/git-pull-request.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-git-pull-request-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "git",
            "pull",
            "request",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-git-pull-request-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-git-pull-request-icon/git-pull-request.tsx",
                "upstreamPath": "icons/git-pull-request.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/git-pull-request.tsx",
                "upstreamGitBlobSha": "4d0bd663c4a7679d8e313b0cf72d11ffd31998be",
                "upstreamSha256": "sha256:69336abde45dd8a4a98ce1a7ae1676c92fab59ffb8029a9ec7d1eea8f5ab0b93",
                "contentSha256": "sha256:d3c352f5b537a66c6590224450a285081ca7e0b1a4f3c468e2d6d704e821c871",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/git-pull-request.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-git-pull-request-icon/git-pull-request.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-git-pull-request-icon",
            "sourceHash": "sha256:39221ff0dd5024cf6450050eff0ed48f4da7ac346cd4792160adceb616cd14a3",
            "contentHash": "sha256:ba581f4ff5db21c66b19b9d1701e8f797061d79d28cd6ded1fbbe3974f5f2281",
            "structureHash": "sha256:c3c8fd866b9319e27b786fc9fd7c8eb1c3f1468a8a6e8f6042a73532690fbfe0",
            "glyph": {
              "inventoryName": "git-pull-request",
              "canonicalName": "git-pull-request",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-history-icon",
      "type": "registry:component",
      "title": "Animated History Icon",
      "description": "Renders the Lucide History glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-history-icon/history.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-history-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "history",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-history-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-history-icon/history.tsx",
                "upstreamPath": "icons/history.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/history.tsx",
                "upstreamGitBlobSha": "ea9465b379f6ef1d0e737b8efb444a7fd41a1eeb",
                "upstreamSha256": "sha256:bb6b022562f32036e7050e1516b718e63a0ad437ca1e0161ba1f6b3ef7d60ba8",
                "contentSha256": "sha256:6db657a90d1fc0c0a6997d3f88f111c36a2fb1811d85c996ac760619bb74163d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/history.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-history-icon/history.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-history-icon",
            "sourceHash": "sha256:c2b106d9c11cab5ac2461dae001413b296579fe5871ebeb392492e07d833f8c7",
            "contentHash": "sha256:4ba269e88c2090127a7852b055df3b1055cf0925069d18d39b12551d02d4a6db",
            "structureHash": "sha256:4a2b71d160e852382d5508e54646e1271e44d72bfeb101966a44963f2b71ce91",
            "glyph": {
              "inventoryName": "history",
              "canonicalName": "history",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-hourglass-icon",
      "type": "registry:component",
      "title": "Animated Hourglass Icon",
      "description": "Renders the Lucide Hourglass glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-hourglass-icon/hourglass.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-hourglass-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "hourglass",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-hourglass-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-hourglass-icon/hourglass.tsx",
                "upstreamPath": "icons/hourglass.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/hourglass.tsx",
                "upstreamGitBlobSha": "3852f07191911ed2bccd7b3b1011ffd3c5512b84",
                "upstreamSha256": "sha256:d4a997ca14a137bc6c86e7332ac39725251836b0c1f320346b8bf7e5be99773e",
                "contentSha256": "sha256:0f09bd033d20fada78608b8150b279b2d238e4013541d3ea12ca813697999f8a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/hourglass.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-hourglass-icon/hourglass.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-hourglass-icon",
            "sourceHash": "sha256:22f2b21fef595a47dff0f0d19561603ab047849e3edd2f2becef5081a20dd545",
            "contentHash": "sha256:bb22e47567ef269e7d5fc8e6415ed1d61340dd9e76b4521ab7dabf07596fceaf",
            "structureHash": "sha256:736985594ae7e97aeb6a3d0bae09291a0fdbf3ad74026a7f9b164c6abcf8f5d3",
            "glyph": {
              "inventoryName": "hourglass",
              "canonicalName": "hourglass",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-id-card-icon",
      "type": "registry:component",
      "title": "Animated Id Card Icon",
      "description": "Renders the Lucide Id Card glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-id-card-icon/id-card.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-id-card-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "id",
            "card",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-id-card-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-id-card-icon/id-card.tsx",
                "upstreamPath": "icons/id-card.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/id-card.tsx",
                "upstreamGitBlobSha": "0863ea477d4aed627c92a33dec4c98c15179ea59",
                "upstreamSha256": "sha256:611eac8b69e6c7a0017183d718a05a9d7253a7233959b58ed46368b64c34df79",
                "contentSha256": "sha256:c589fa21e0389a3f7daa6332217d66bc0d20b9f2c12f6b9132888a0cbf08a14e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/id-card.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-id-card-icon/id-card.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-id-card-icon",
            "sourceHash": "sha256:befa05eabfcef7aaec548b45c852cf9ca8747049a8ac268e8c2f7368fd1c8019",
            "contentHash": "sha256:ec155e0754e5ecfa78971bc6c0ab48cbff6131516bd73c4d47654c9baa7cc81a",
            "structureHash": "sha256:ea66c0d485640bc9eed28fe4131a18163f1d7aca346c79eaa51f3d5607f134db",
            "glyph": {
              "inventoryName": "id-card",
              "canonicalName": "id-card",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-mailbox-icon",
      "type": "registry:component",
      "title": "Animated Mailbox Icon",
      "description": "Renders the Lucide Mailbox glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-mailbox-icon/mailbox.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-mailbox-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "mailbox",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-mailbox-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-mailbox-icon/mailbox.tsx",
                "upstreamPath": "icons/mailbox.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/mailbox.tsx",
                "upstreamGitBlobSha": "b5bfc4c1b16b0798e1903219d8b0af63a8660aad",
                "upstreamSha256": "sha256:a433be2f8f22635630935d34ae474ee47c4f7da7b909254d1de4cb8f60534a69",
                "contentSha256": "sha256:0306eecd253e6c36c26472f20f495e16b6ce34a484243bfda7517544033766f3",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/mailbox.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-mailbox-icon/mailbox.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-mailbox-icon",
            "sourceHash": "sha256:ef8a7140166da42a4018b7221742f45496d02fa6e83bfe22460a81e08f1ff2b9",
            "contentHash": "sha256:e86d6a3414b9b734f078d0a1c61e3fcff4774b24681587daf2776022e404cd70",
            "structureHash": "sha256:aec950c3dd84b16db829de65e90897f6e91e78cefeccbfd65220c488a4a4f784",
            "glyph": {
              "inventoryName": "mailbox",
              "canonicalName": "mailbox",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-nfc-icon",
      "type": "registry:component",
      "title": "Animated Nfc Icon",
      "description": "Renders the Lucide Nfc glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-nfc-icon/nfc.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-nfc-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "nfc",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-nfc-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-nfc-icon/nfc.tsx",
                "upstreamPath": "icons/nfc.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/nfc.tsx",
                "upstreamGitBlobSha": "a8b17554e57205c2192a4c762d89bc33f3410a6a",
                "upstreamSha256": "sha256:3563e9843ba51b12313dd636cef014667a91ab76e8a040327013c2541bbaf188",
                "contentSha256": "sha256:56a4a6c033f257001e97444211a874fb9c9ea6a551d8f016f04667f650e7f55f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/nfc.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-nfc-icon/nfc.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-nfc-icon",
            "sourceHash": "sha256:cb0125a88b31faa7c419ff118ddc5ae3a9f71a46989dde994cfb68501d687cc9",
            "contentHash": "sha256:2179acefec560c348e4bca74c505336aa35eb08c12504ec78351aab9dfd45e4b",
            "structureHash": "sha256:72e0d9d0eaa7ec0ba89d4494905d3e8470b1ac9734a67b7cfac6cdaca8452c54",
            "glyph": {
              "inventoryName": "nfc",
              "canonicalName": "nfc",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-roller-coaster-icon",
      "type": "registry:component",
      "title": "Animated Roller Coaster Icon",
      "description": "Renders the Lucide Roller Coaster glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-roller-coaster-icon/roller-coaster.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-roller-coaster-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "roller",
            "coaster",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-roller-coaster-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-roller-coaster-icon/roller-coaster.tsx",
                "upstreamPath": "icons/roller-coaster.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/roller-coaster.tsx",
                "upstreamGitBlobSha": "77f15b18e205a4578593a5b2ef69ece9fce8b1ab",
                "upstreamSha256": "sha256:f1b886a944b6a9f3941f3ec47a9626b014f4e5578e498cdd99bd837d31c4df0a",
                "contentSha256": "sha256:307d41a13012b32d03e970b28d249b27b33f22f5e4f930bc0bf78cccec2c2f77",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/roller-coaster.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-roller-coaster-icon/roller-coaster.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-roller-coaster-icon",
            "sourceHash": "sha256:f8fd92612ab745827782500e7272c5a8d9cf904a59cd46a62f56713416a32ab0",
            "contentHash": "sha256:955d614c0b98336749983fe54e71aa14e33d51c16b0ba6d380b397c868ddeb02",
            "structureHash": "sha256:0fb9e5d2e569c70faca762b57d669246b50d82736cd579e8ada107d4eb4267fb",
            "glyph": {
              "inventoryName": "roller-coaster",
              "canonicalName": "roller-coaster",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-route-icon",
      "type": "registry:component",
      "title": "Animated Route Icon",
      "description": "Renders the Lucide Route glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-route-icon/route.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-route-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "route",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-route-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-route-icon/route.tsx",
                "upstreamPath": "icons/route.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/route.tsx",
                "upstreamGitBlobSha": "ae823e22aaa14060d5c078ba2eecf93803db7586",
                "upstreamSha256": "sha256:67c6e9e418e1c8517561793a1c5b41b128f978284e4349e85d2549570b6f0dbc",
                "contentSha256": "sha256:25fb081677dc419141f73cc757213e7b58b0f0efffa3aa383aa65e756372a7e4",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/route.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-route-icon/route.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-route-icon",
            "sourceHash": "sha256:36bfc9996a2a660eb8a2c66d2e2723fd73eff3184de1629fa3f02627bc6ad573",
            "contentHash": "sha256:dee36ad1f271803e674e46baf6f82f6d557456876ab90581b9182150dbad565c",
            "structureHash": "sha256:a895229990389020e8f1b95030a92ec0ff0876201f513b9aba6ed8ae1743e879",
            "glyph": {
              "inventoryName": "route",
              "canonicalName": "route",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-scan-text-icon",
      "type": "registry:component",
      "title": "Animated Scan Text Icon",
      "description": "Renders the Lucide Scan Text glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-scan-text-icon/scan-text.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-scan-text-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "scan",
            "text",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-scan-text-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-scan-text-icon/scan-text.tsx",
                "upstreamPath": "icons/scan-text.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/scan-text.tsx",
                "upstreamGitBlobSha": "c91f0390580c1c5a60dfe44ef31b7a49c3d51716",
                "upstreamSha256": "sha256:47e6aa30a97a94aebc0ffd44b3f2cd09632ab6260dc39e159347165405a1ce4d",
                "contentSha256": "sha256:7dc099fe56189015a00a06c58c856cffcbd02a0e38f837a66328724f9baceefc",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/scan-text.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-scan-text-icon/scan-text.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-scan-text-icon",
            "sourceHash": "sha256:fbce6613c19cf75f8ad451207341add876791db5e1aa6f7f465514ae38572fe5",
            "contentHash": "sha256:cadba1f580b1310d1c6fdbd74b400d18b4c25f58a2eb1b93e236dc22d92012c0",
            "structureHash": "sha256:bb6bda23a6a105229b7ecfd76a96683ea67a88f9768d4b2002f2149f4b403a8e",
            "glyph": {
              "inventoryName": "scan-text",
              "canonicalName": "scan-text",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-stamp-icon",
      "type": "registry:component",
      "title": "Animated Stamp Icon",
      "description": "Renders the Lucide Stamp glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-stamp-icon/stamp.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-stamp-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "stamp",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-stamp-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-stamp-icon/stamp.tsx",
                "upstreamPath": "icons/stamp.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/stamp.tsx",
                "upstreamGitBlobSha": "f52d54f6d58ddc3998fc567c7d24e5138e5bc746",
                "upstreamSha256": "sha256:e66f64e9d3486de0e9ef3704bd0e14c057f703b2ba50620ed6814510e3841d1a",
                "contentSha256": "sha256:6b8f40d6b1303adfbbc2e9be887eea5af38e6413b4b875630f359bb9eff98a6f",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/stamp.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-stamp-icon/stamp.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-stamp-icon",
            "sourceHash": "sha256:f0018a0a4e11defe3254068b0cbec337147f63d60386b8c7ce4626e6d3b6e683",
            "contentHash": "sha256:1c5cd818d531ac1fda61143501367e44fa479ac50f343b6cb118001df53ef6e7",
            "structureHash": "sha256:49e98468e1455cfdd730da1663e63141e236feca46aa7005b432ff8734fb32cc",
            "glyph": {
              "inventoryName": "stamp",
              "canonicalName": "stamp",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-stethoscope-icon",
      "type": "registry:component",
      "title": "Animated Stethoscope Icon",
      "description": "Renders the Lucide Stethoscope glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-stethoscope-icon/stethoscope.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-stethoscope-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "stethoscope",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-stethoscope-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-stethoscope-icon/stethoscope.tsx",
                "upstreamPath": "icons/stethoscope.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/stethoscope.tsx",
                "upstreamGitBlobSha": "48556565eb8111f7f2a3cf0a2fc63afedb6de171",
                "upstreamSha256": "sha256:8b08a0659253f90e4e67c603f5f75b5b403d10184629e35ac00d5caf0f3b3753",
                "contentSha256": "sha256:2247557087c2f74b0a728d76dd506745095b834bb1e3a0182abd2b11195dac5b",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/stethoscope.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-stethoscope-icon/stethoscope.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-stethoscope-icon",
            "sourceHash": "sha256:5470bc1a7dee9987eb9b8af68f086324803767560cec93483894546edbcb90aa",
            "contentHash": "sha256:b276ce3e707bb253a5c1c0434afed033d108be43ec66744fee600c5776f7a0cd",
            "structureHash": "sha256:c7b432db90d986431f1b2905ade3abda9bb374b109ad21cb54229179f5c2265c",
            "glyph": {
              "inventoryName": "stethoscope",
              "canonicalName": "stethoscope",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-train-track-icon",
      "type": "registry:component",
      "title": "Animated Train Track Icon",
      "description": "Renders the Lucide Train Track glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-train-track-icon/train-track.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-train-track-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "train",
            "track",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-train-track-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-train-track-icon/train-track.tsx",
                "upstreamPath": "icons/train-track.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/train-track.tsx",
                "upstreamGitBlobSha": "4f1e640a1588f0d298cc10130bdfe2fadf58c039",
                "upstreamSha256": "sha256:899a54d4b10e67283c64052bf028db96b5908d3031f08061e132ad3e7e4b89ba",
                "contentSha256": "sha256:93a1688ddec2fc8cddeec0dff491dff0b2bd92bb66823d6fb0f07f28abe66728",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/train-track.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-train-track-icon/train-track.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-train-track-icon",
            "sourceHash": "sha256:94514221d17cc11d37bfab19c87d53607875e6639f23a23cdaebb00c5c48f561",
            "contentHash": "sha256:82cbcac8b18b8b2f6c04297c3ddddb972ad6253a629e345da29b63a42aef9205",
            "structureHash": "sha256:52e94c45e30c7b6cb14572c73f08399809883d1ead0f39470af6f9685f8bfeb2",
            "glyph": {
              "inventoryName": "train-track",
              "canonicalName": "train-track",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-vibrate-icon",
      "type": "registry:component",
      "title": "Animated Vibrate Icon",
      "description": "Renders the Lucide Vibrate glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-vibrate-icon/vibrate.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-vibrate-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "vibrate",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-vibrate-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-vibrate-icon/vibrate.tsx",
                "upstreamPath": "icons/vibrate.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/vibrate.tsx",
                "upstreamGitBlobSha": "ec3011f904c409a0e331f37f58c5368f346c9c8d",
                "upstreamSha256": "sha256:0743a35f1eb5315b70e7909e9f77643848a994b54edf6227d407ba94193b5ff0",
                "contentSha256": "sha256:fe2bdd1717157a4f21804ea51284a00a3f286ee6901e4fac1984f97bb115bc7e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/vibrate.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-vibrate-icon/vibrate.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-vibrate-icon",
            "sourceHash": "sha256:6ca880e01191a89160c68e7f92342313b52209adbfd941defc182fb46ece047c",
            "contentHash": "sha256:debf71cfee055a9143985d32b270e9ed2acfb479e21e5945391775c46dfdecbe",
            "structureHash": "sha256:6b1f01a7429e6ecc76ddf96be3f65f7dac62d1460f38186992ae7d5662cd43e4",
            "glyph": {
              "inventoryName": "vibrate",
              "canonicalName": "vibrate",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-waves-icon",
      "type": "registry:component",
      "title": "Animated Waves Icon",
      "description": "Renders the Lucide Waves glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-waves-icon/waves.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-waves-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "waves",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-waves-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-waves-icon/waves.tsx",
                "upstreamPath": "icons/waves.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/waves.tsx",
                "upstreamGitBlobSha": "1517b9e4a8e9ebbb920743d85e4f1d57bdb26363",
                "upstreamSha256": "sha256:f1f590067f3a23d77eb4d03e151a5f05d7c859cf80fd00e4c2286da9bf75953f",
                "contentSha256": "sha256:73ba9d307ae266731895ddaada13cf98a10b0a34c69a27017a83d24ed2e2faa3",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/waves.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-waves-icon/waves.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-waves-icon",
            "sourceHash": "sha256:54736fcaf862cfdb0bd6776c783028a7311ae25ef86a7b24ee9712606746dcdb",
            "contentHash": "sha256:a19766dcf945649c480d9bf42d686b94ddf90acb8f41002ac742a65647fbc396",
            "structureHash": "sha256:d9d1838956fe3dbe0dbcf2a87c9692dcacefa632a3c3678efd76cf98108a0342",
            "glyph": {
              "inventoryName": "waves",
              "canonicalName": "waves",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-waypoints-icon",
      "type": "registry:component",
      "title": "Animated Waypoints Icon",
      "description": "Renders the Lucide Waypoints glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-waypoints-icon/waypoints.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-waypoints-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "waypoints",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-waypoints-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-waypoints-icon/waypoints.tsx",
                "upstreamPath": "icons/waypoints.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/waypoints.tsx",
                "upstreamGitBlobSha": "3841e1f01719cdd3654958ef6e9ff19ca88a1f38",
                "upstreamSha256": "sha256:e73f33f353fd6049c170a62640fb7fa6ea1d81838d36fce2cb0521562ffbb754",
                "contentSha256": "sha256:23319dda2a3db48f354d77c2e563bf671529f0322d5cff78f9f2d95b0be5eacf",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/waypoints.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-waypoints-icon/waypoints.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-waypoints-icon",
            "sourceHash": "sha256:3c2ac242d7d2b1834125eaf126fa430767673c22caa88d0a12fb64e5d9e740d2",
            "contentHash": "sha256:ec11590a593ab27b33003da39d38c9f88325c6d06413fc19c5fd691eabb9e3fd",
            "structureHash": "sha256:ceba785152735942e525cff76a5e18f96e68f46db1166501ef1b6c3944788012",
            "glyph": {
              "inventoryName": "waypoints",
              "canonicalName": "waypoints",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "lucide-animated-workflow-icon",
      "type": "registry:component",
      "title": "Animated Workflow Icon",
      "description": "Renders the Lucide Workflow glyph with source-authored on-demand motion and imperative controls.",
      "author": "pqoqubbw",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.40.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/lucide-animated/components/lucide-animated-workflow-icon/workflow.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/lucide-animated-workflow-icon.tsx"
        },
        {
          "path": "registry/sources/lucide-animated/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "icons-microinteractions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "icons-microinteractions",
          "tags": [
            "workflow",
            "animated",
            "icon",
            "lucide",
            "motion"
          ],
          "renderer": "svg",
          "preview": "previews/lucide-animated-workflow-icon.tsx",
          "source": {
            "project": "Lucide Animated",
            "repository": "https://github.com/pqoqubbw/icons",
            "revision": "8989db1262cdd3a95d22b2b2336fcb556dd9b37f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/lucide-animated-workflow-icon/workflow.tsx",
                "upstreamPath": "icons/workflow.tsx",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/icons/workflow.tsx",
                "upstreamGitBlobSha": "0df18d752dcba646d64efb3240dec586c598dd20",
                "upstreamSha256": "sha256:568ea9a5c149353e574f7872a697163c34bc7bb858c85885e40841b3728f29eb",
                "contentSha256": "sha256:bdac37a1febd66e929047940418c6155abfe6155bcee4c83e0d7690b7d407df2",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file.",
                  "Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts.",
                  "Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/lib/utils.ts",
                "upstreamGitBlobSha": "88283f0133e161af61a96d8d8d14309591369aac",
                "upstreamSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "contentSha256": "sha256:340b34c6ed5ed3d07311c59c51a89c9ca86db91f18a35e82d153a79547a16ceb",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "icons/workflow.tsx, lib/utils.ts, and Lucide/Feather-derived SVG geometry",
            "copyright": [
              "Copyright (c) 2024-2026 pqoqubbw",
              "Copyright (c) 2026 Lucide Icons and Contributors",
              "Copyright (c) 2013-present Cole Bemis"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pqoqubbw/icons/blob/8989db1262cdd3a95d22b2b2336fcb556dd9b37f/LICENSE",
              "sha256": "sha256:b77c01c81935b05f8f5ec43652cd6a29675e1b1b7505ac66cd9ac1f4ef4ac3ef",
              "localPath": "registry/sources/lucide-animated/LICENSE"
            },
            "notices": [
              "registry/sources/lucide-animated/NOTICE",
              "registry/sources/lucide-animated/LUCIDE_LICENSE",
              "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md"
            ],
            "noticeEvidence": [
              {
                "localPath": "registry/sources/lucide-animated/NOTICE",
                "sha256": "sha256:6014a8c793832691319bae3f3c5439487b03c9fd0ddeffad56a14c4530639971",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/LICENSE",
                "upstreamGitBlobSha": "718bb3f0e44153809972abed31839375804bf652",
                "localPath": "registry/sources/lucide-animated/LUCIDE_LICENSE",
                "sha256": "sha256:b495047bd93a9b06913511076f504daba17d5bbeb3e0650f3bb53a4220329c57",
                "changes": []
              },
              {
                "repository": "https://github.com/lucide-icons/lucide",
                "revision": "3c62e4bfef50fb88dd9618439b46811af912ba4a",
                "upstreamPath": "BRAND_LOGOS_STATEMENT.md",
                "permalink": "https://github.com/lucide-icons/lucide/blob/3c62e4bfef50fb88dd9618439b46811af912ba4a/BRAND_LOGOS_STATEMENT.md",
                "upstreamGitBlobSha": "6a7404c79b20f6d1fd1d414c052a78c550bf74d5",
                "localPath": "registry/sources/lucide-animated/BRAND_LOGOS_STATEMENT.md",
                "sha256": "sha256:047e3df18f621e50c1b8a56c5e1fa591069d1c70f1d8124683f459bbeb25630c",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/lucide-animated-workflow-icon/workflow.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file. Added isAnimated and prefers-reduced-motion guards to imperative and hover animation starts. Bounded source-authored high-frequency motion to 280ms durations, 80ms delays, and 40ms stagger steps.",
              "reason": "Resolved the bundled utility, added controlled/reduced-motion safety, and bounded high-frequency timing."
            }
          ],
          "dedupe": {
            "family": "animated-workflow-icon",
            "sourceHash": "sha256:950eb770244c8717a50194230c6c0adf9eb8421e0d85b66f80985650fa8207f2",
            "contentHash": "sha256:48329a6902cfffd79c1f94c7441a7a50eb9f5fe8e97af169e84a874b5f4ae6e5",
            "structureHash": "sha256:12621c6817bc9f43453e4a16b53ead42150306c6544912a78c097686a9c28d40",
            "glyph": {
              "inventoryName": "workflow",
              "canonicalName": "workflow",
              "aliases": []
            }
          },
          "rights": {
            "trademarkReviewRequired": false,
            "notice": null
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-animated-beam",
      "type": "registry:component",
      "title": "Animated Beam",
      "description": "Draws a measured SVG connection between two referenced elements.",
      "author": "Magic UI",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.23.26",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-animated-beam/animated-beam.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animated-beam.tsx"
        },
        {
          "path": "registry/sources/magic-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "connection",
            "flow",
            "svg",
            "refs"
          ],
          "renderer": "svg",
          "preview": "previews/magic-animated-beam.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-animated-beam/animated-beam.tsx",
                "upstreamPath": "apps/www/registry/magicui/animated-beam.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/animated-beam.tsx",
                "upstreamSha256": "sha256:6afa2ee1d01694a428eb8517d48deebe5c6b532dc0ee871800bb9d92aae43e79",
                "contentSha256": "sha256:04dcdfa4e4e19bb27bdb128339ce64807a0c8dbae75f61a214418f75c0e46005",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils.",
                  "Made the default animation run once, added a reduced-motion static gradient, and marked the visual SVG as decorative."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/animated-beam.tsx and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/magic-animated-beam/animated-beam.tsx",
              "change": "Repointed the bundled utility import, stopped infinite motion by default, added the static reduced-motion state, and hid the visual path from assistive technology.",
              "reason": "Preserve the connection visual without a decorative perpetual loop or duplicate screen-reader content."
            }
          ],
          "dedupe": {
            "family": "svg-connection-beam",
            "sourceHash": "sha256:6e3e8e9c610764bbec34ad1aa9f10a3103b1d7dc11ee5282086a6e541e45a2e7",
            "contentHash": "sha256:fb971e6346ac3b00f62d3b04758b38419463dba747fc2bae2be29e881d839f83",
            "structureHash": "sha256:07d3589e87735601ff3b9dab7dbbc0194b97f64f892d8c23a6c481047d45f81a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-animated-list",
      "type": "registry:component",
      "title": "Animated List",
      "description": "Reveals caller-provided activity items in a finite sequence.",
      "author": "Magic UI",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.23.26",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-animated-list/animated-list.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animated-list.tsx"
        },
        {
          "path": "registry/sources/magic-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "activity",
            "notifications",
            "sequence",
            "reveal"
          ],
          "renderer": "dom",
          "preview": "previews/magic-animated-list.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-animated-list/animated-list.tsx",
                "upstreamPath": "apps/www/registry/magicui/animated-list.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/animated-list.tsx",
                "upstreamSha256": "sha256:9363c5afa61d7aab1919b4500f7325cc8871b35103d5dd60a2a1625fe5e7dc58",
                "contentSha256": "sha256:89413528298f32be619803f67088bc0d2c09b2f4650470c22aa2ccbead81236e",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils.",
                  "Added a reduced-motion path that reveals all items without scale or timing effects."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/animated-list.tsx and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/magic-animated-list/animated-list.tsx",
              "change": "Repointed the bundled utility import and added a reduced-motion path that exposes all items immediately without scale transitions.",
              "reason": "Retain the finite sequencing behavior while honoring the user's motion preference."
            }
          ],
          "dedupe": {
            "family": "sequential-activity-list",
            "sourceHash": "sha256:eea661546e8140313f9c7340dd4359dc5f9fa7dbe7f16651f10be4ae24171e09",
            "contentHash": "sha256:bf6b76e1cb3c60192abea4ac655ab7212fbcc1a763df64805b58894cd334dbb1",
            "structureHash": "sha256:19068b029f45ca923f751702d44da474a7881e0499d66d713d83746d2ef5b290"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-backlight",
      "type": "registry:component",
      "title": "Backlight",
      "description": "Applies a blurred, saturated backlight glow to one child element.",
      "author": "Magic UI",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-backlight/backlight.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/backlight.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "glow",
            "media",
            "svg-filter"
          ],
          "renderer": "svg",
          "preview": "previews/magic-backlight.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-backlight/backlight.tsx",
                "upstreamPath": "apps/www/registry/magicui/backlight.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/backlight.tsx",
                "upstreamSha256": "sha256:d302fbcbfa80f42cf59f3ffbf4451627f6a79d9206d6e3bc1fb3f65511515108",
                "contentSha256": "sha256:d302fbcbfa80f42cf59f3ffbf4451627f6a79d9206d6e3bc1fb3f65511515108",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/backlight.tsx",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "media-backlight-filter",
            "sourceHash": "sha256:0fd974b6a4443b3e9b49d5b51e690edb5413e278d0e272d924e2ae23038143a4",
            "contentHash": "sha256:0fd974b6a4443b3e9b49d5b51e690edb5413e278d0e272d924e2ae23038143a4",
            "structureHash": "sha256:4cc618d4d6e15b4c6ba84f454138666875ecc91b6a31f84142079de87744700e"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-dotted-map",
      "type": "registry:component",
      "title": "Dotted Map",
      "description": "Generates a responsive dotted world map with optional markers and overlays.",
      "author": "Magic UI",
      "dependencies": [
        "clsx@2.1.1",
        "svg-dotted-map@2.0.1",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-dotted-map/dotted-map.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/dotted-map.tsx"
        },
        {
          "path": "registry/sources/magic-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "map",
            "markers",
            "geography",
            "svg"
          ],
          "renderer": "svg",
          "preview": "previews/magic-dotted-map.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-dotted-map/dotted-map.tsx",
                "upstreamPath": "apps/www/registry/magicui/dotted-map.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/dotted-map.tsx",
                "upstreamSha256": "sha256:9cf9a7edbed239b6e8cfdad588a97400d059ccf8f391d94f3cf033261a5ef7d9",
                "contentSha256": "sha256:c94b2e74970b879da1611ba176a1a224a26c66611c772031a72d6919ca13e566",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils.",
                  "Memoized map generation and hid optional pulse rings when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/dotted-map.tsx and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/magic-dotted-map/dotted-map.tsx",
              "change": "Repointed the bundled utility import, memoized the expensive map factory, and added a reduced-motion fallback for optional pulse rings.",
              "reason": "Keep repeated renders and motion preferences safe without changing the component's public map or marker API."
            }
          ],
          "dedupe": {
            "family": "dotted-geographic-map",
            "sourceHash": "sha256:f3579fcc2a5c0b392fde299ce470160f79ae1c20baf103f71288194cbc973722",
            "contentHash": "sha256:b7f2727deabde25aeaa91700052620b70851b11ce05b7b74183911f44347f898",
            "structureHash": "sha256:956fbc890958d429258210cb14b6d4d3dd09febfbc5a93697eecba719cef1719"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-globe",
      "type": "registry:component",
      "title": "Globe",
      "description": "Renders an interactive WebGL globe with configurable markers and colors.",
      "author": "Magic UI",
      "dependencies": [
        "cobe@0.6.5",
        "clsx@2.1.1",
        "motion@12.23.26",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-globe/globe.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/globe.tsx"
        },
        {
          "path": "registry/sources/magic-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "globe",
            "geography",
            "webgl",
            "drag"
          ],
          "renderer": "webgl",
          "preview": "previews/magic-globe.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-globe/globe.tsx",
                "upstreamPath": "apps/www/registry/magicui/globe.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/globe.tsx",
                "upstreamSha256": "sha256:76422bf378c6503883706fe7af90132f7716dbe383fab7728a95c95e4d16cfd0",
                "contentSha256": "sha256:071d39489271c840546acc24ac754189a32fc10874e9cd2251775e3555338282",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils.",
                  "Added a configurable canvas label, reduced-motion behavior, strict pointer-state comparison, and pointer-cancel handling.",
                  "Created and destroyed the Cobe instance in response to Page Visibility and Intersection Observer state, with safe restart and cleanup.",
                  "Capped the effective device pixel ratio at 2 and the square render resolution at 1200 pixels while respecting lower device and caller values."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/globe.tsx and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/magic-globe/globe.tsx",
              "change": "Repointed the bundled utility import; added bounded accessibility, reduced-motion, and pointer repairs; gated the Cobe lifecycle on page and viewport visibility; and capped effective DPR and render resolution.",
              "reason": "Keep the copied globe self-contained and static for reduced motion while preventing its WebGL render loop from consuming resources offscreen, in a hidden tab, or after unmount."
            }
          ],
          "dedupe": {
            "family": "webgl-interactive-globe",
            "sourceHash": "sha256:428b5f92fd974b49bb408a6de6eb803adfa7af81f1865c56ebf5ca95bb812a7d",
            "contentHash": "sha256:d90361f62a874b0b4a38948549fad950f9dc97c6271d6dd690996f257ddb2584",
            "structureHash": "sha256:00ab40157c95924565381d4022c4592a38ea3098551ed36c39fe14487bb6f193"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-kinetic-text",
      "type": "registry:component",
      "title": "Kinetic Text",
      "description": "Renders text whose character weights respond to hover proximity.",
      "author": "Magic UI",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-kinetic-text/kinetic-text.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/kinetic-text.tsx"
        },
        {
          "path": "registry/sources/magic-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "hover",
            "variable-font"
          ],
          "renderer": "dom",
          "preview": "previews/magic-kinetic-text.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-kinetic-text/kinetic-text.tsx",
                "upstreamPath": "apps/www/registry/magicui/kinetic-text.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/kinetic-text.tsx",
                "upstreamSha256": "sha256:a02ab6c77ae376778fec3c27b0b1c9d0d7ec0f7e0ac9434d0716eb217556c355",
                "contentSha256": "sha256:4cfd5dd5ead675fef58fd8fca3bd4a53d62adb42c7cbd98dbf9590cfca57d08a",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/kinetic-text.tsx and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/magic-kinetic-text/kinetic-text.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils.",
              "reason": "Resolve the bundled upstream utility from both the source batch and the installation targets without relying on a consumer alias."
            }
          ],
          "dedupe": {
            "family": "variable-font-hover-text",
            "sourceHash": "sha256:179c9e1ba263603d4cef4b079c803d0fd12fd6d35af774f022adacd4375e0831",
            "contentHash": "sha256:c3470dddcaf14d918e75d25bbffaeccc68eff6b19b0c646d5d1b9371b536fd4c",
            "structureHash": "sha256:ba4fe4dad9e25abc0868dcf91b7439775b140c81d659408c6e63e4f45956ae60"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-ripple-button",
      "type": "registry:component",
      "title": "Ripple Button",
      "description": "Adds bounded pointer and keyboard ripple feedback to a native button.",
      "author": "Magic UI",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-ripple-button/ripple-button.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/ripple-button.tsx"
        },
        {
          "path": "registry/sources/magic-ui/components/magic-ripple-button/ripple-button.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/ripple-button.css"
        },
        {
          "path": "registry/sources/magic-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "button",
            "press",
            "feedback",
            "ripple"
          ],
          "renderer": "dom",
          "preview": "previews/magic-ripple-button.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-ripple-button/ripple-button.tsx",
                "upstreamPath": "apps/www/registry/magicui/ripple-button.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/ripple-button.tsx",
                "upstreamSha256": "sha256:35f408bf877cb842bf3c135dd0f207a4b9fd30881c60e1979c3cdb3130177983",
                "contentSha256": "sha256:4fb2bebbe22a145e838e7b12cf0a25dd3aecc4d8989ae334aae05f4552fa3326",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils and imported the colocated stylesheet.",
                  "Centered keyboard-triggered ripples, defaulted the control to type button, added a visible focus treatment, and used the scoped animation class."
                ]
              },
              {
                "shippedPath": "components/magic-ripple-button/ripple-button.css",
                "upstreamPath": "apps/www/registry/registry-ui.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/registry-ui.ts",
                "upstreamSha256": "sha256:ae6f38616db5103b027acfdfb629a09f933b0e4a4413ef5249c2e4d855d8dd08",
                "contentSha256": "sha256:0affb9cf577bc1a1ee8b5cc0a9e4a0b58052c79fa4f462a50a6f721b11bfe978",
                "changes": [
                  "Extracted the Ripple Button keyframes into a colocated stylesheet, scoped the animation identifier, and added a reduced-motion override."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/ripple-button.tsx, the Ripple Button registry CSS in apps/www/registry/registry-ui.ts, and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/magic-ripple-button/ripple-button.tsx",
              "change": "Repointed the bundled utility import, connected the extracted CSS, centered keyboard activation, set the safe button type, and added visible focus styling.",
              "reason": "Keep the native control safe inside forms and make its feedback usable without pointer coordinates."
            },
            {
              "shippedPath": "components/magic-ripple-button/ripple-button.css",
              "change": "Extracted and scoped the upstream registry keyframes, then added a reduced-motion rule.",
              "reason": "Ship the complete animation with exact provenance while preventing motion when the user opts out."
            }
          ],
          "dedupe": {
            "family": "pointer-ripple-button",
            "sourceHash": "sha256:c8d7f0832ddb6160ee6268e01776775d2409317c65ccbc733d58bd5af0ea9440",
            "contentHash": "sha256:2b16ba655fb3aca0c985de9f1a95f3229101258b3241eba71fb41c80132ac46f",
            "structureHash": "sha256:c84281c38bbbd788a93f6c8500350744026e0aa79a58e27fba31c00561e301bd"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-safari",
      "type": "registry:component",
      "title": "Safari",
      "description": "Frames caller-provided image or video media in a Safari browser mockup.",
      "author": "Magic UI",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-safari/safari.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/safari.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "browser",
            "mockup",
            "media"
          ],
          "renderer": "svg",
          "preview": "previews/magic-safari.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-safari/safari.tsx",
                "upstreamPath": "apps/www/registry/magicui/safari.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/safari.tsx",
                "upstreamSha256": "sha256:2cb6ce69def86020f6860a3dd8696f0998dac340db932a3eee05e990b2e29f3e",
                "contentSha256": "sha256:2cb6ce69def86020f6860a3dd8696f0998dac340db932a3eee05e990b2e29f3e",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/safari.tsx",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "device-media-frame",
            "sourceHash": "sha256:97e32fa4e73ff3f4611504395604d4600b8896d83703c2d00bcae03e0c0b9af9",
            "contentHash": "sha256:97e32fa4e73ff3f4611504395604d4600b8896d83703c2d00bcae03e0c0b9af9",
            "structureHash": "sha256:8ce8aecac37bef4ea56c0b23d09daf605bab0ec7eda7443e5661f81aa92da2d2"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "magic-terminal",
      "type": "registry:component",
      "title": "Terminal",
      "description": "Sequences animated terminal lines and typing text inside a terminal frame.",
      "author": "Magic UI",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.23.26",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/magic-ui/components/magic-terminal/terminal.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/terminal.tsx"
        },
        {
          "path": "registry/sources/magic-ui/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "terminal",
            "typing",
            "sequence"
          ],
          "renderer": "dom",
          "preview": "previews/magic-terminal.tsx",
          "source": {
            "project": "Magic UI",
            "repository": "https://github.com/magicuidesign/magicui",
            "revision": "76d280aa6e203da02d5efca71d7bf5999494e091",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/magic-terminal/terminal.tsx",
                "upstreamPath": "apps/www/registry/magicui/terminal.tsx",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/magicui/terminal.tsx",
                "upstreamSha256": "sha256:a0ece03773e1a17862e049f11f72647b5db44dc1400473bdecd3c0e81f43f2d7",
                "contentSha256": "sha256:ad830c3c214edfae0c225682db28b4111b547c68c067eb6664745c2491aa579c",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils so the copied source resolves its bundled support file both in this source batch and at its registry target."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/www/registry/lib/utils.ts",
                "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/apps/www/registry/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/www/registry/magicui/terminal.tsx and apps/www/registry/lib/utils.ts",
            "copyright": [
              "Copyright (c) Magic UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/magicuidesign/magicui/blob/76d280aa6e203da02d5efca71d7bf5999494e091/LICENSE.md",
              "sha256": "sha256:0147b84235ed916b8b4e89c1f80655351c5afe7d211b629be61f553a227b34ba",
              "localPath": "registry/sources/magic-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/magic-terminal/terminal.tsx",
              "change": "Changed the cn import from @/lib/utils to ../../lib/utils.",
              "reason": "Resolve the bundled upstream utility from both the source batch and the installation targets without relying on a consumer alias."
            }
          ],
          "dedupe": {
            "family": "terminal-typing-sequence",
            "sourceHash": "sha256:9bd6c1dc3de770bde9a557b0f41f225e0c0e2153cd0a2d645961909efa1cf1bd",
            "contentHash": "sha256:2f27688c75ce2d4e415d1382edb6d4708a56c240a94654e4f748671de9802f5e",
            "structureHash": "sha256:432323fa60e21a193a204a01bd9d64af6598c6985f58c689bb3d83848e5ccc02"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "measured-auto-height",
      "type": "registry:component",
      "title": "Measured Auto Height",
      "description": "Transitions a container to the measured height of changing caller-provided content.",
      "author": "Elliot Sutton and contributors",
      "dependencies": [
        "motion@12.23.12"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/animate-ui/components/measured-auto-height/auto-height.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/measured-auto-height/auto-height.tsx"
        },
        {
          "path": "registry/sources/animate-ui/components/measured-auto-height/use-auto-height.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/measured-auto-height/use-auto-height.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "height",
            "resize-observer",
            "content",
            "container"
          ],
          "renderer": "dom",
          "preview": "previews/measured-auto-height.tsx",
          "source": {
            "project": "Animate UI historical MIT snapshot",
            "repository": "https://github.com/imskyleen/animate-ui",
            "revision": "38b917762e3b6059c06a7af703071ba11a89091e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/measured-auto-height/auto-height.tsx",
                "upstreamPath": "apps/www/registry/primitives/effects/auto-height/index.tsx",
                "permalink": "https://github.com/imskyleen/animate-ui/blob/38b917762e3b6059c06a7af703071ba11a89091e/apps/www/registry/primitives/effects/auto-height/index.tsx",
                "upstreamSha256": "sha256:4e845430a68d939435b647ab9d1783f57e9bdbc543ea8a0c0e422db55dd22dd3",
                "contentSha256": "sha256:d611c801a29f3385a105d71198857a9a654e00df2e0a6f2b3718ef113d689bf1",
                "changes": [
                  "Changed the hook import to the copied source-local file.",
                  "Removed the broken asChild branch and its Slot dependency.",
                  "Preserved natural height until the first measurement and made measured height authoritative.",
                  "Added an immediate prefers-reduced-motion transition."
                ]
              },
              {
                "shippedPath": "components/measured-auto-height/use-auto-height.ts",
                "upstreamPath": "apps/www/registry/hooks/use-auto-height/index.tsx",
                "permalink": "https://github.com/imskyleen/animate-ui/blob/38b917762e3b6059c06a7af703071ba11a89091e/apps/www/registry/hooks/use-auto-height/index.tsx",
                "upstreamSha256": "sha256:855863119c180a389d6b08fc7486cb155ee36757ed1a67d4908021a3716110aa",
                "contentSha256": "sha256:13662e0eb49a0cddc4cfe74da5e0d7d6e1879d01f2ad12ddec7b12b62f189cb1",
                "changes": [
                  "Represented the initial unmeasured height as undefined instead of zero.",
                  "Coalesced and cancelled queued animation frames during ResizeObserver updates.",
                  "Stopped observing the animated parent and included the measurement callback in effect dependencies."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "Only the two source files listed above at commit 38b917762e3b6059c06a7af703071ba11a89091e",
            "copyright": [
              "Copyright (c) 2025 Elliot Sutton"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/imskyleen/animate-ui/blob/38b917762e3b6059c06a7af703071ba11a89091e/LICENSE.md",
              "sha256": "sha256:d2349753738223c0237d8b5908c4e4da825bbfc951e4fa7081ebc5563c8ceea0",
              "localPath": "registry/sources/animate-ui/LICENSE"
            },
            "notices": [
              "The upstream root license changed after this snapshot; no file from the later Commons-Clause revisions is included. See registry/sources/animate-ui/NOTICE.md."
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/measured-auto-height/auto-height.tsx",
              "change": "Localized the hook import, removed broken Slot composition, preserved natural initial height, and added a reduced-motion snap.",
              "reason": "Keep the copied component self-contained, visible before measurement, and safe for motion-sensitive users without redesigning its measured-height behavior."
            },
            {
              "shippedPath": "components/measured-auto-height/use-auto-height.ts",
              "change": "Used an undefined initial measurement, coalesced and cancelled ResizeObserver frames, stopped observing the animated parent, and refreshed the effect when measurement logic changes.",
              "reason": "Prevent a zero-height first render, feedback-loop work, stale measurements, and state updates after cleanup."
            }
          ],
          "dedupe": {
            "family": "measured-content-height-transition",
            "sourceHash": "sha256:181ac016f90f1622a24bee6323ee7b1f4876d996a9b3b6c445bc6e0f4206a2d4",
            "contentHash": "sha256:77f60e00c8546b2046443c6531904d6b3474a16e7570a6c114213148eba6a9e0",
            "structureHash": "sha256:9cbf930e423dd84ffcd4bd443548cebf52680ef60d8fa3fc0282c3e64123e093"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-animated-background",
      "type": "registry:component",
      "title": "Animated Background",
      "description": "Moves a shared background between selected or hovered child elements.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-animated-background/animated-background.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/animated-background.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "selection",
            "tabs",
            "shared-layout"
          ],
          "renderer": "dom",
          "preview": "previews/motion-animated-background.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-animated-background/animated-background.tsx",
                "upstreamPath": "components/core/animated-background.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/animated-background.tsx",
                "upstreamSha256": "sha256:fa592713c408eaf58b21976c20737d84239c42a0b7e47cf9e7843121b1c0852c",
                "contentSha256": "sha256:090f2c1152c6917b6793bed30114fb60e2dba0858a7ed3211012f590c9cf8667",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Added a useReducedMotion branch that removes the shared layout id and snaps opacity changes.",
                  "Added focus, blur, and click parity to hover mode so keyboard and touch users can set the same active state."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": []
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/animated-background.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-animated-background/animated-background.tsx",
              "change": "Changed the local utility import, added a reduced-motion snap, and added keyboard/touch parity to hover mode.",
              "reason": "Resolve the copied helper without a consumer root alias and keep the selection behavior usable without hover or animated layout movement."
            }
          ],
          "dedupe": {
            "family": "animated-selection-background",
            "sourceHash": "sha256:135db1d1a2a322e920ca343d73393f2ddfe10c928ef6825379f6839a7c6ad228",
            "contentHash": "sha256:e428cd30a0d56c913ed5260ed34fcf05ad5c3324c5be2805cd06872125b1ccd7",
            "structureHash": "sha256:d3356af82f4cf4cef1215d613ce668352fd881bbff1b0ac1cfd4a0d1f7accc37"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-dock",
      "type": "registry:component",
      "title": "Dock",
      "description": "Magnifies application actions according to pointer proximity.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-dock/dock.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/dock.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "dock",
            "magnification",
            "toolbar"
          ],
          "renderer": "dom",
          "preview": "previews/motion-dock.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-dock/dock.tsx",
                "upstreamPath": "components/core/dock.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/dock.tsx",
                "upstreamSha256": "sha256:5b624424f0fd8b66f174ecbd4e0d8c260f438d933963126bf34298eadcebf719",
                "contentSha256": "sha256:612bc6b57a556404ca5009d00992ff2b620b34cac2dc21b0784b1dc7040c0fa1",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Added useReducedMotion handling that keeps the dock and item widths static and makes tooltip feedback immediate.",
                  "Changed the focusable role=button wrapper to a native button and require an accessible aria-label.",
                  "Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": [
              "Motion Primitives docs credit @kashyap20 and cite Build UI – Magnified Dock as inspiration."
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/dock.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-dock/dock.tsx",
              "change": "Changed the local utility import, disabled magnification for reduced motion, and replaced the simulated button with a labelled native button. Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior.",
              "reason": "Resolve the copied helper, keep the dock static when motion is reduced, and preserve native keyboard/touch activation and naming. Compile several upstream Motion 11-era components safely in the shared catalog while preserving their rendered behavior and install API."
            }
          ],
          "dedupe": {
            "family": "pointer-magnified-dock",
            "sourceHash": "sha256:0f3e34315683368409a2ec5a2757ab86c72e155577e39971826f41e676b6bce8",
            "contentHash": "sha256:be5a667c709bb8ebfde7e7cc9b4453158eae6675c4fd660d1737497ddd3f4dd0",
            "structureHash": "sha256:ce3607e79ce8e6fef4c20bc326e37dfab7ca76f7789554a447b45ea7941684cc"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-morphing-dialog",
      "type": "registry:component",
      "title": "Morphing Dialog",
      "description": "Expands a trigger into a modal dialog with shared-layout motion.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.400.0",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-morphing-dialog/morphing-dialog.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/morphing-dialog.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/hooks/useClickOutside.tsx",
          "type": "registry:hook",
          "target": "@hooks/useClickOutside.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "dialog",
            "shared-layout",
            "overlay"
          ],
          "renderer": "dom",
          "preview": "previews/motion-morphing-dialog.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-morphing-dialog/morphing-dialog.tsx",
                "upstreamPath": "components/core/morphing-dialog.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/morphing-dialog.tsx",
                "upstreamSha256": "sha256:3783289015c56be36cd74701468a4d2aa345b48676b7fa12964ace9558e4e33e",
                "contentSha256": "sha256:c153ec671a84ef187a6c8e18243604156c8a0939aac839e4e4f584b25f6d45b7",
                "changes": [
                  "Changed local utility and click-outside imports from root aliases to ../../lib/utils and ../../hooks/useClickOutside.",
                  "Applied the caller transition through one MotionConfig and added an instant reduced-motion configuration.",
                  "Connected the internal trigger ref, removed duplicate native-button keyboard handling, fixed dialog label/description ids, and restored focus on close.",
                  "Scoped keyboard trapping to the open state, focused the dialog when it has no focusable child, and cleaned up the body scroll-lock class on close or unmount.",
                  "Applied the existing container className and style props that upstream declared but did not forward."
                ]
              },
              {
                "shippedPath": "hooks/useClickOutside.tsx",
                "upstreamPath": "hooks/useClickOutside.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/hooks/useClickOutside.tsx",
                "upstreamSha256": "sha256:a239b751802f4a67e13d962bdf18118f7b24c7806a3f2ab3c41eca199d624445",
                "contentSha256": "sha256:a239b751802f4a67e13d962bdf18118f7b24c7806a3f2ab3c41eca199d624445",
                "changes": []
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": []
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/morphing-dialog.tsx, hooks/useClickOutside.tsx, and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-morphing-dialog/morphing-dialog.tsx",
              "change": "Changed local imports and made narrow reduced-motion, focus, semantic-id, and cleanup repairs without changing the compound component API.",
              "reason": "Resolve copied helpers, provide an instant reduced-motion path, and make the upstream modal behavior safe enough to stage for browser review."
            }
          ],
          "dedupe": {
            "family": "shared-layout-dialog",
            "sourceHash": "sha256:bd56dc9c5d63f392bab5bb0b553271fb1473df87bdfc6c6f0bfbcbfe524d8aa1",
            "contentHash": "sha256:44db3e8920bd2d017acf658b8ef0a15263264a4ce04eb421e62c8f458c20d9e4",
            "structureHash": "sha256:c917f89bb203181e7aa300ffc82536638bc1d3d9f4c7b1ebf794209a6150cfa7"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-morphing-popover",
      "type": "registry:component",
      "title": "Morphing Popover",
      "description": "Expands a trigger into a shared-layout popover.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-morphing-popover/morphing-popover.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/morphing-popover.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/hooks/useClickOutside.tsx",
          "type": "registry:hook",
          "target": "@hooks/useClickOutside.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "popover",
            "shared-layout",
            "overlay"
          ],
          "renderer": "dom",
          "preview": "previews/motion-morphing-popover.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-morphing-popover/morphing-popover.tsx",
                "upstreamPath": "components/core/morphing-popover.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/morphing-popover.tsx",
                "upstreamSha256": "sha256:72811cafa2d38d548919e2742325a5360dbd698ca19baf5d1af4c3417e8c425c",
                "contentSha256": "sha256:8912737bddc392fd1975c1b8a9ce89edc875c8a0fb2405302ab805adea76ec5b",
                "changes": [
                  "Changed local utility and click-outside imports from root aliases to ../../lib/utils and ../../hooks/useClickOutside.",
                  "Added an instant useReducedMotion MotionConfig path.",
                  "Tracked the trigger, moved focus into the open popover, restored it on close, and made the dialog non-modal while retaining Escape and touch outside dismissal.",
                  "Memoized open and close callbacks so parent rerenders do not tear down and restart the focus effect.",
                  "Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "hooks/useClickOutside.tsx",
                "upstreamPath": "hooks/useClickOutside.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/hooks/useClickOutside.tsx",
                "upstreamSha256": "sha256:a239b751802f4a67e13d962bdf18118f7b24c7806a3f2ab3c41eca199d624445",
                "contentSha256": "sha256:a239b751802f4a67e13d962bdf18118f7b24c7806a3f2ab3c41eca199d624445",
                "changes": []
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": []
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/morphing-popover.tsx, hooks/useClickOutside.tsx, and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-morphing-popover/morphing-popover.tsx",
              "change": "Changed local imports and added reduced-motion plus stable non-modal focus management. Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior.",
              "reason": "Resolve copied helpers, snap the shared-layout transition when requested, and align focus behavior with a dismissible non-modal popover. Compile several upstream Motion 11-era components safely in the shared catalog while preserving their rendered behavior and install API."
            }
          ],
          "dedupe": {
            "family": "shared-layout-popover",
            "sourceHash": "sha256:917584025bf928ea8a4c4c714f044381cef74e8deb110f16c7d2b2e14a1fcb4f",
            "contentHash": "sha256:820b1a1932bb25440aab74bed44a11f56a5f725f6fa589985d353bcb063f5857",
            "structureHash": "sha256:9b9c8c4d4b5204f278dde61a45f6df3c77555d9ca16b9387685e8c95fe22dead"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-progressive-blur",
      "type": "registry:component",
      "title": "Progressive Blur",
      "description": "Builds a directional blur overlay from layered masks.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-progressive-blur/progressive-blur.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/progressive-blur.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "blur",
            "mask",
            "overlay"
          ],
          "renderer": "dom",
          "preview": "previews/motion-progressive-blur.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-progressive-blur/progressive-blur.tsx",
                "upstreamPath": "components/core/progressive-blur.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/progressive-blur.tsx",
                "upstreamSha256": "sha256:28271af357f7f52bf69e6f13f3b0ac33042204e8338427881c28456419b936cd",
                "contentSha256": "sha256:14a70b1e58c28a4b8663710c641824c1abe6bdba95002fcc4b726f42668b81cb",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Added a zero-duration useReducedMotion transition override for caller-supplied motion props.",
                  "Marked generated blur layers as decorative."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": []
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/progressive-blur.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-progressive-blur/progressive-blur.tsx",
              "change": "Changed the local utility import, snapped optional motion props for reduced motion, and hid decorative layers from assistive technology.",
              "reason": "Resolve the copied helper and keep the static blur readable without exposing or animating its generated layers."
            }
          ],
          "dedupe": {
            "family": "layered-progressive-blur",
            "sourceHash": "sha256:1e2d5640d45150350a3fc8772a7683a8012030279769a4c017b08b1c9474ab9f",
            "contentHash": "sha256:0914638338f1eb65c543233bf80085c93c4bf903263d906ae2eb345387149015",
            "structureHash": "sha256:c76ea7af7d332df9b498f9bd50efe8c340fe9a1d26a5544b20ccb5711d724309"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-scroll-progress",
      "type": "registry:component",
      "title": "Scroll Progress",
      "description": "Maps page or container scroll progress to a horizontal indicator.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-scroll-progress/scroll-progress.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/scroll-progress.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "scroll",
            "progress",
            "indicator"
          ],
          "renderer": "dom",
          "preview": "previews/motion-scroll-progress.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-scroll-progress/scroll-progress.tsx",
                "upstreamPath": "components/core/scroll-progress.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/scroll-progress.tsx",
                "upstreamSha256": "sha256:e5decf683e55b351e971ecb47483e12169daaaf1a0a7ba079a2270d8ca6270b3",
                "contentSha256": "sha256:56a9aa086fb5ef7c52059f5ca889d0497ee4baa417b6d5281e35fe757a120db5",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Used the direct scroll motion value instead of the spring when reduced motion is requested.",
                  "Allowed a nullable container ref for current React ref typing.",
                  "Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": [
              "Motion Primitives docs credit @bhataasim1."
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/scroll-progress.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-scroll-progress/scroll-progress.tsx",
              "change": "Changed the local utility import, bypassed spring lag for reduced motion, and widened the container ref type to include null. Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior.",
              "reason": "Resolve the copied helper, keep progress directly tied to scroll position under reduced motion, and compile with current React ref types. Compile several upstream Motion 11-era components safely in the shared catalog while preserving their rendered behavior and install API."
            }
          ],
          "dedupe": {
            "family": "scroll-progress-indicator",
            "sourceHash": "sha256:47bcdeb0c857630df2f1f457640d04050b144db9bce193de7a488371af759a40",
            "contentHash": "sha256:9cfbd99de5d559cff45e81f1131399a2672b3def8ee04c5b9b56b5339cfbec98",
            "structureHash": "sha256:a7890610fbac5e37010c35a3e09d3f33bcef7fa97f6df9c04d73b7fd95d10bbb"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-text-effect",
      "type": "registry:component",
      "title": "Text Effect",
      "description": "Reveals text by line, word, or character with configurable variants.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-text-effect/text-effect.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/text-effect.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "reveal",
            "segmentation"
          ],
          "renderer": "dom",
          "preview": "previews/motion-text-effect.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-text-effect/text-effect.tsx",
                "upstreamPath": "components/core/text-effect.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/text-effect.tsx",
                "upstreamSha256": "sha256:4b93c0ea6b9d747d69b7a244d5279f790a11a784e73713f3fe17a636abf53484",
                "contentSha256": "sha256:6fc842b93bb59e1b411338f32a54208bde33c1c48853fd2f1679254501cab075",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Rendered the final semantic text without segmentation or animation when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": []
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/text-effect.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-text-effect/text-effect.tsx",
              "change": "Changed the local utility import and added a final-text reduced-motion branch.",
              "reason": "Resolve the copied helper and keep the phrase immediately readable as one semantic text node."
            }
          ],
          "dedupe": {
            "family": "segmented-text-reveal",
            "sourceHash": "sha256:d4e4bec78cfcd5af49e90b0046dcf2ec9403528e4c271c602c2b2be2b670f075",
            "contentHash": "sha256:83b74cb035d06329322a41b6710e57dee0a13e464548bd6fd0aa4286df5953b7",
            "structureHash": "sha256:4257b620d7f6722921cd2baa2f2cb2ed779a79afdb8803bb222d2f84b5542831"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-text-loop",
      "type": "registry:component",
      "title": "Text Loop",
      "description": "Cycles between caller-provided text or content children.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-text-loop/text-loop.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/text-loop.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "cycle",
            "controlled-motion"
          ],
          "renderer": "dom",
          "preview": "previews/motion-text-loop.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-text-loop/text-loop.tsx",
                "upstreamPath": "components/core/text-loop.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/text-loop.tsx",
                "upstreamSha256": "sha256:87707ae5f7a3e13f1e6d348e735e65b05d742dc24343d20b6470f8b857d0d2d4",
                "contentSha256": "sha256:0c3e209577aa91d2627f6154e79770db73579393ab60718b7538b23401941f25",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Changed autoplay to opt-in by default, stopped its interval for reduced motion, and rendered the current child without a transition.",
                  "Skipped interval setup when fewer than two children are present."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": []
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/text-loop.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-text-loop/text-loop.tsx",
              "change": "Changed the local utility import, made autoplay opt-in, and added reduced-motion and empty/single-child interval guards.",
              "reason": "Resolve the copied helper and prevent unrequested or unnecessary timed text changes."
            }
          ],
          "dedupe": {
            "family": "cycling-text-content",
            "sourceHash": "sha256:d0cd58b00736c243020fd113794222eefa8d457f69e956ab7609dc09e177f26f",
            "contentHash": "sha256:bae7accdb3fb8b1b097f5294da96dd02f2283c6a343ec883538264bc569390ad",
            "structureHash": "sha256:fded5b5dd753f26e6f7c47ef2499fff888e3f4f675aa8c531117ff0fc699c255"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-text-morph",
      "type": "registry:component",
      "title": "Text Morph",
      "description": "Morphs matching characters between successive text strings.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-text-morph/text-morph.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/text-morph.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "characters",
            "shared-layout"
          ],
          "renderer": "dom",
          "preview": "previews/motion-text-morph.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-text-morph/text-morph.tsx",
                "upstreamPath": "components/core/text-morph.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/text-morph.tsx",
                "upstreamSha256": "sha256:e3839272d22e1b041378263019d0716a29a8b99656b64eb385b66402698c9294",
                "contentSha256": "sha256:406480b2016bb1c2381d2d331e74edf6b091ec8ff5f5c5821c310f6ec46da076",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Rendered the updated text as one static semantic node when reduced motion is requested.",
                  "Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": [
              "Motion Primitives docs cite the Family app as inspiration."
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/text-morph.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-text-morph/text-morph.tsx",
              "change": "Changed the local utility import and added an immediate-text reduced-motion branch. Adjusted TypeScript annotations for the unified React 19 and Motion 12 catalog host without changing runtime behavior.",
              "reason": "Resolve the copied helper and keep updated text readable without character layout motion. Compile several upstream Motion 11-era components safely in the shared catalog while preserving their rendered behavior and install API."
            }
          ],
          "dedupe": {
            "family": "character-layout-text-morph",
            "sourceHash": "sha256:fe0ed5412d07c2de7e0b37f4248da5b7293c4912bec945a96628e76a5de5af1b",
            "contentHash": "sha256:013a7df55d2be6c899cde37bedbd99f7901fcb7c6877180ab380c2814f3479ec",
            "structureHash": "sha256:ccad56e900d0620f90b3e56386e56349b81f22da061d1490593ba2f5c4d8acf8"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-tilt",
      "type": "registry:component",
      "title": "Tilt",
      "description": "Applies pointer-position-driven three-dimensional tilt to a child.",
      "author": "Motion Primitives",
      "dependencies": [
        "motion@11.12.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-tilt/tilt.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/tilt.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "tilt",
            "pointer",
            "depth"
          ],
          "renderer": "dom",
          "preview": "previews/motion-tilt.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-tilt/tilt.tsx",
                "upstreamPath": "components/core/tilt.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/tilt.tsx",
                "upstreamSha256": "sha256:a572d002cf82f396eea5ea4e04665114bee7ed075ad0123f32bc0dfa5867abf4",
                "contentSha256": "sha256:7a0559d0147f83c4a3ed2b5dcf5edd2bf728f9101f1f621106a4166111e93ed7",
                "changes": [
                  "Added useReducedMotion handling that omits the generated 3D transform and pointer tracking while preserving caller styles."
                ]
              }
            ],
            "credits": [
              "Motion Primitives docs credit @AFPedreros."
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/tilt.tsx",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-tilt/tilt.tsx",
              "change": "Disabled generated transforms and pointer tracking when reduced motion is requested.",
              "reason": "Keep the child static and its hit area stable without replacing the upstream tilt implementation."
            }
          ],
          "dedupe": {
            "family": "pointer-tilt",
            "sourceHash": "sha256:d4900d97cec62e16d559bb02a6e0a7f2004dfd9cfa8f995d32918e399defe811",
            "contentHash": "sha256:6c9e1f45c1e931bd0935b494a95e8887c935dca841c0b043b0eaefee63a07994",
            "structureHash": "sha256:23fd1868610338159f8cd85cb140c744e93e3ad56a0531b2079bfd8d26a5649c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "motion-transition-panel",
      "type": "registry:component",
      "title": "Transition Panel",
      "description": "Transitions between caller-provided panels by active index.",
      "author": "Motion Primitives",
      "dependencies": [
        "clsx@2.1.1",
        "motion@11.12.0",
        "tailwind-merge@2.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/motion-primitives/components/motion-transition-panel/transition-panel.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/transition-panel.tsx"
        },
        {
          "path": "registry/sources/motion-primitives/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "panel",
            "content",
            "transition"
          ],
          "renderer": "dom",
          "preview": "previews/motion-transition-panel.tsx",
          "source": {
            "project": "Motion Primitives",
            "repository": "https://github.com/ibelick/motion-primitives",
            "revision": "92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/motion-transition-panel/transition-panel.tsx",
                "upstreamPath": "components/core/transition-panel.tsx",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/components/core/transition-panel.tsx",
                "upstreamSha256": "sha256:1b3c67058a09a560a034b7fe52ad1c205b589a63ed80055900e8a66830db0be2",
                "contentSha256": "sha256:c263c427fabbd2d2374e9146ad865ac5323885365f001fc07df3fc9485a5c61d",
                "changes": [
                  "Changed the cn import from @/lib/utils to ../../lib/utils for source-batch and install-target portability.",
                  "Rendered only the active panel with animation props disabled and a zero-duration transition when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/lib/utils.ts",
                "upstreamSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "contentSha256": "sha256:9304a861c8673bee09e0f12de31773abbde503b02e59dfd74763ddec2e37cf05",
                "changes": []
              }
            ],
            "credits": []
          },
          "license": {
            "spdx": "MIT",
            "scope": "components/core/transition-panel.tsx and lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 ibelick"
            ],
            "evidence": {
              "upstreamPath": "LICENCE.md",
              "permalink": "https://github.com/ibelick/motion-primitives/blob/92586e62a951eb9b6bfd1cc7c8a4e6e2ab6ba17d/LICENCE.md",
              "sha256": "sha256:f668f5ef3635eb906f10b1eea9a32e449eb6e1a183ab6879ef6d56c0980dd2f3",
              "localPath": "registry/sources/motion-primitives/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/motion-transition-panel/transition-panel.tsx",
              "change": "Changed the local utility import and added an instant active-panel reduced-motion branch.",
              "reason": "Resolve the copied helper and keep inactive panels out of the rendered focus order without enter or exit motion."
            }
          ],
          "dedupe": {
            "family": "indexed-transition-panel",
            "sourceHash": "sha256:4ebd10c984213368bbc56978f7223ba299c74409ac689dfd3db999e59a6023aa",
            "contentHash": "sha256:154df8acf3ff64ea0d38aea40e1914ac6cdf2c69ed4747eacb45a368c113f5af",
            "structureHash": "sha256:8e8b7bb611ae27d1df7f74ce46508ab503a72854fe2e29d84129436fc50a7e03"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "number-flow",
      "type": "registry:component",
      "title": "Number Flow",
      "description": "Formats localized numeric values and transitions only the digits and symbols that change.",
      "author": "Maxwell Barvian",
      "dependencies": [
        "esm-env@1.1.4",
        "number-flow@0.6.2"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/numberflow/components/number-flow/number-flow.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/number-flow.tsx"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "number",
            "numeric-transition",
            "localization",
            "reduced-motion",
            "currency"
          ],
          "renderer": "dom",
          "preview": "previews/number-flow.tsx",
          "source": {
            "project": "NumberFlow",
            "repository": "https://github.com/barvian/number-flow",
            "revision": "a7b78f5d4d4b1e2cd4cb53d09d7158461bad493a",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/number-flow/number-flow.tsx",
                "upstreamPath": "packages/react/src/NumberFlow.tsx",
                "permalink": "https://github.com/barvian/number-flow/blob/a7b78f5d4d4b1e2cd4cb53d09d7158461bad493a/packages/react/src/NumberFlow.tsx",
                "upstreamSha256": "sha256:fe32c3a0637315d8233920460e25f643636ff43d469e7a7dd40ba27ac792d4d0",
                "contentSha256": "sha256:fe32c3a0637315d8233920460e25f643636ff43d469e7a7dd40ba27ac792d4d0",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/NumberFlow.tsx",
            "copyright": [
              "Copyright (c) 2024 Maxwell Barvian"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/barvian/number-flow/blob/a7b78f5d4d4b1e2cd4cb53d09d7158461bad493a/LICENSE.md",
              "sha256": "sha256:f8a3eac9fd2ae94f18a2bf0459e57d90da539f015a7ec4ad6186a5ca33a6aa9a",
              "localPath": "registry/sources/numberflow/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "localized-numeric-transition",
            "sourceHash": "sha256:eae25b74dca7d0fba3db7e8a5c5042bd217e86d4e8540f72782f7fe52c5ee90a",
            "contentHash": "sha256:eae25b74dca7d0fba3db7e8a5c5042bd217e86d4e8540f72782f7fe52c5ee90a",
            "structureHash": "sha256:c9058a15b4a39339fd906fe063bf3b4cda6a41ef00119eb3ad09a0047c03da90"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-color-panels",
      "type": "registry:component",
      "title": "Color Panels",
      "description": "Renders animated layered color panels with configurable density, edges, and blur.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/color-panels.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/color-panels.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/color-panels.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/color-panels.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/types.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "color",
            "panels",
            "webgl"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-color-panels.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/color-panels.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/color-panels.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/color-panels.tsx",
                "upstreamSha256": "sha256:5ca976e9e3cd33c665e1c4f3dcd83ffe02999d79c1e078d9b132400486b43ce3",
                "contentSha256": "sha256:94330513644d751cb61cd589174b2e56d35218848b23b461abcfe977ba24f97c",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/color-panels.ts",
                "upstreamPath": "packages/shaders/src/shaders/color-panels.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/color-panels.ts",
                "upstreamSha256": "sha256:d5c4b217f79bf2c9a6ee324d67b751182c2b435d30a9ee282ea3011c4d290814",
                "contentSha256": "sha256:54be3e8e264d65bfd5c9e29fdf12d50d89aac1091bb5f2f3e690c081155848d4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/types.ts",
                "upstreamPath": "packages/shaders/src/types.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/types.ts",
                "upstreamSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "contentSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/color-panels.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/color-panels.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/color-panels.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "animated-color-panels-shader",
            "sourceHash": "sha256:01531ba2d7e2461b5497b9ec7542f0d71a07475f24e5fc0eeb36b20ad68724bc",
            "contentHash": "sha256:27e1bb9ade368f5ae5e76e873b06b71f1f0086df6bf0e488294ca0460d951eb9",
            "structureHash": "sha256:e97818171c6da40f359a5a757497ea4e64810c052baccf807d7161d5de34d7c2"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-dithering",
      "type": "registry:component",
      "title": "Dithering",
      "description": "Renders a procedural two-color dithering field with configurable shape and matrix pattern.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/dithering.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/dithering.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/dithering.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/dithering.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "dithering",
            "procedural",
            "pixels"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-dithering.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/dithering.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/dithering.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/dithering.tsx",
                "upstreamSha256": "sha256:01c86ec3f8b7079bb04b741cf82454399f0790b4aef2516bd10a2357cc916da7",
                "contentSha256": "sha256:ce3e7b879c9c008a97ecf29690f4ecde79303e45eb052ab96eceb331df2ae65b",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/dithering.ts",
                "upstreamPath": "packages/shaders/src/shaders/dithering.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/dithering.ts",
                "upstreamSha256": "sha256:f5c98ec694e1d2ff4a58fe27034f0502f553543295428d4e994fdadc917fc6fb",
                "contentSha256": "sha256:d1afacf68cef7ecb40d51c9fc9574feba0ebeabbc4877b637722d656f76c1924",
                "changes": [
                  "Removed trailing whitespace from one blank line; no executable source changed.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/dithering.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/dithering.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/dithering.ts",
              "change": "Removed trailing whitespace from one blank line; no executable source changed. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Satisfy repository whitespace hygiene without changing runtime behavior."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "procedural-dithering-shader",
            "sourceHash": "sha256:10b18e81b9d458e368e44b957dc23cb78cdb63e0ed7c8da5bf65dbde8c6fdafe",
            "contentHash": "sha256:bb7de520456ef9387435baa330ce848a5b3cf2405392868beb90ddd71bf445bd",
            "structureHash": "sha256:b36cee4d2a821d2c7d6f0b0a269927d0df21af1fbc2a641b9fd269fe50b0216b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-fluted-glass",
      "type": "registry:component",
      "title": "Fluted Glass",
      "description": "Applies a configurable fluted-glass refraction shader to caller-provided imagery.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/fluted-glass.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/fluted-glass.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/fluted-glass.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/fluted-glass.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "glass",
            "refraction",
            "image"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-fluted-glass.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/fluted-glass.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/fluted-glass.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/fluted-glass.tsx",
                "upstreamSha256": "sha256:45d071017343d2a22517b7aa965a4d2b97458b2f492fc2cc09bb7b1b8db7daed",
                "contentSha256": "sha256:1859a53d76b84f51291578d67a1073da32ad0f35b043d712f01a0a361010081c",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/fluted-glass.ts",
                "upstreamPath": "packages/shaders/src/shaders/fluted-glass.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/fluted-glass.ts",
                "upstreamSha256": "sha256:fa881ed5f4a7a0b8e1d5d9d62a41da48c9db8b18984342dba1377c534ba05841",
                "contentSha256": "sha256:0accb5087c02d2f9596a33ccdf47e6b9d1200df1708c0aabe27cd07dfd3185f1",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/fluted-glass.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/fluted-glass.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/fluted-glass.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "image-fluted-glass-shader",
            "sourceHash": "sha256:f07640271391df696e8d977a23ea9abcdbc9133015a03596b0d134fe193f9065",
            "contentHash": "sha256:4714d67b67a78149ee312602819861b0bee4c5b76e26932bfff81493416cf76e",
            "structureHash": "sha256:6e07ccede0e32be239214244f47ba11136aedb0cf1cf380c1ecc75fb47610a56"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-gem-smoke",
      "type": "registry:component",
      "title": "Gem Smoke",
      "description": "Renders a configurable gem-shaped smoke field, optionally driven by caller-provided imagery.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/gem-smoke.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/gem-smoke.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/gem-smoke.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/gem-smoke.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/types.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/suspend.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/suspend.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/transparent-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/transparent-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "smoke",
            "gem",
            "image"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-gem-smoke.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/gem-smoke.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/gem-smoke.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/gem-smoke.tsx",
                "upstreamSha256": "sha256:0887a748e843ca3127d747f1f959f6eef84d5dbb6973ab02b14b7ee33ae3ffb3",
                "contentSha256": "sha256:c7a4a41fbcf600f6c9deaa2109dc9346d64ce21bc88e2245bf949342873b198b",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/gem-smoke.ts",
                "upstreamPath": "packages/shaders/src/shaders/gem-smoke.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/gem-smoke.ts",
                "upstreamSha256": "sha256:6350236e4a8515129d4b585bffe7c1972fa2b13732851b9d5ac764fb0dd01978",
                "contentSha256": "sha256:d75e81d865c9754edd9994b3d9ffafb35849fe04715388f1be087e03c5270c37",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and removed performance/debug console.log output; no warn/error paths were changed.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/types.ts",
                "upstreamPath": "packages/shaders/src/types.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/types.ts",
                "upstreamSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "contentSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/suspend.tsx",
                "upstreamPath": "packages/shaders-react/src/suspend.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/suspend.tsx",
                "upstreamSha256": "sha256:fe3772bb1205aa7305f6789ca1b2c01869da7ff5aa672b24a40930112c19d5eb",
                "contentSha256": "sha256:fe3772bb1205aa7305f6789ca1b2c01869da7ff5aa672b24a40930112c19d5eb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/transparent-pixel.ts",
                "upstreamPath": "packages/shaders-react/src/transparent-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/transparent-pixel.ts",
                "upstreamSha256": "sha256:0b66df4f3d5d564ae6be4fabb2adee1fed410f4f34a5caea041925a2740a890f",
                "contentSha256": "sha256:0b66df4f3d5d564ae6be4fabb2adee1fed410f4f34a5caea041925a2740a890f",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/gem-smoke.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/gem-smoke.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/gem-smoke.ts",
              "change": "Added a prominent Apache-2.0 modification notice and removed performance/debug console.log output; no warn/error paths were changed. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the shipped shader quiet in production without changing rendering or error handling."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "gem-smoke-shader",
            "sourceHash": "sha256:ee12bb26aafdaa8dd2c26b0cd879b75ec19e214af316fe92f9133cc0f83d16da",
            "contentHash": "sha256:b3fb212abc242385a64a57348070d950eba92e52f991f3074513d96f90d5b7b3",
            "structureHash": "sha256:8f52e721b1e599aa302b1658243e4b3484ff0e916f7d0b0ef2bfcccb8ab7ef72"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-god-rays",
      "type": "registry:component",
      "title": "God Rays",
      "description": "Renders layered procedural light rays with configurable colors, density, and bloom.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/god-rays.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/god-rays.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-noise-texture.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-noise-texture.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/god-rays.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/god-rays.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/types.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "light",
            "rays",
            "bloom"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-god-rays.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/god-rays.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/god-rays.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/god-rays.tsx",
                "upstreamSha256": "sha256:8e630e766c7f613e43e096bdea4b503e95619e135d97aa0ea6d32b70a6afd933",
                "contentSha256": "sha256:8b320966e06d1bb863bcfa9bc6f50e8b3b0cd0561367e4da32e6a7eb01746cdc",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-noise-texture.ts",
                "upstreamPath": "packages/shaders/src/get-shader-noise-texture.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-noise-texture.ts",
                "upstreamSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "contentSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/god-rays.ts",
                "upstreamPath": "packages/shaders/src/shaders/god-rays.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/god-rays.ts",
                "upstreamSha256": "sha256:77e9956258f6ac4693634400c73014dd56a07d5b8f5f021f7fc5163e9515be81",
                "contentSha256": "sha256:801e2c1214f9261f79702191986258de21adcf48d5220902395c837271a503bd",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/types.ts",
                "upstreamPath": "packages/shaders/src/types.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/types.ts",
                "upstreamSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "contentSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/god-rays.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/god-rays.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/god-rays.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "volumetric-god-rays-shader",
            "sourceHash": "sha256:01d48aac9d5932beec02a669951a579b3c85592e9f7c1138481f4a10e92fcf6a",
            "contentHash": "sha256:6fe8f47003572d9e34dc5f152453a72d00702888f47795530d06ce3fb9bf9e20",
            "structureHash": "sha256:5003627e420a60536161921babc7c305590de5f2c08b8bded14a9d2b5518427d"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-halftone-cmyk",
      "type": "registry:component",
      "title": "Halftone CMYK",
      "description": "Applies a configurable CMYK halftone shader to caller-provided imagery.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/halftone-cmyk.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/halftone-cmyk.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-noise-texture.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-noise-texture.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/halftone-cmyk.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/halftone-cmyk.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "halftone",
            "cmyk",
            "image"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-halftone-cmyk.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/halftone-cmyk.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/halftone-cmyk.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/halftone-cmyk.tsx",
                "upstreamSha256": "sha256:8770c9b098ee2637ce0cb522f0397db4bdd320a973d224d94ff11b0edf700a93",
                "contentSha256": "sha256:62ed91ee3f19a1437f5c48605f0b9b7425e405b0f1a0ab900ad9ea86dd7ea353",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-noise-texture.ts",
                "upstreamPath": "packages/shaders/src/get-shader-noise-texture.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-noise-texture.ts",
                "upstreamSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "contentSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/halftone-cmyk.ts",
                "upstreamPath": "packages/shaders/src/shaders/halftone-cmyk.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/halftone-cmyk.ts",
                "upstreamSha256": "sha256:94fe3866175c4f2f1ad77d0b334b75e99ac47139ed87f3aac3b7d90baf0a5651",
                "contentSha256": "sha256:88a9f29db65954736aa6c7964e62a125935f4e66afd76e09aeed0082ba986308",
                "changes": [
                  "Removed one extra blank line at end of file; no executable source changed.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/halftone-cmyk.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/halftone-cmyk.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/halftone-cmyk.ts",
              "change": "Removed one extra blank line at end of file; no executable source changed. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Satisfy repository whitespace hygiene without changing runtime behavior."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "cmyk-halftone-image-shader",
            "sourceHash": "sha256:9e6059cfa50c0714bd7b00f9a2e24e18a026e632bdb9a85803621b5f49c5b56c",
            "contentHash": "sha256:563cfbd534dd1ef8dbc32a252c9a1939ba86a82846c5d9a48d70e3a2d0dac9c1",
            "structureHash": "sha256:bf30b748be0b84abb87ffa9326db11945b16fc8628085cf5331256188453c1af"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-heatmap",
      "type": "registry:component",
      "title": "Heatmap",
      "description": "Maps caller-provided imagery through a configurable multicolor heatmap shader.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/heatmap.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/heatmap.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/heatmap.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/heatmap.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/types.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/suspend.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/suspend.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/transparent-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/transparent-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "heatmap",
            "color-map",
            "image"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-heatmap.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/heatmap.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/heatmap.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/heatmap.tsx",
                "upstreamSha256": "sha256:728d3cc0670f811cfdb3b5486f8d0d978ba7b36f58e0cd8d7f318b4aa1a23a39",
                "contentSha256": "sha256:22dfe415bb29581a25b1b222604ac68d70426a011a5fe9bfc98622f517f4c59d",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/heatmap.ts",
                "upstreamPath": "packages/shaders/src/shaders/heatmap.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/heatmap.ts",
                "upstreamSha256": "sha256:b4e7da872c38653b8bcbcdc86c6a7175b56647ac93646251fa38ccb7a5784c11",
                "contentSha256": "sha256:8b0234757de95d2542f18b623d563f0428d1b63a44bd1989ccb700f49f4271d1",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/types.ts",
                "upstreamPath": "packages/shaders/src/types.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/types.ts",
                "upstreamSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "contentSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/suspend.tsx",
                "upstreamPath": "packages/shaders-react/src/suspend.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/suspend.tsx",
                "upstreamSha256": "sha256:fe3772bb1205aa7305f6789ca1b2c01869da7ff5aa672b24a40930112c19d5eb",
                "contentSha256": "sha256:fe3772bb1205aa7305f6789ca1b2c01869da7ff5aa672b24a40930112c19d5eb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/transparent-pixel.ts",
                "upstreamPath": "packages/shaders-react/src/transparent-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/transparent-pixel.ts",
                "upstreamSha256": "sha256:0b66df4f3d5d564ae6be4fabb2adee1fed410f4f34a5caea041925a2740a890f",
                "contentSha256": "sha256:0b66df4f3d5d564ae6be4fabb2adee1fed410f4f34a5caea041925a2740a890f",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/shaders-react/src/shaders/heatmap.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure",
            "copyright": [
              "Copyright 2026 Paper"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/heatmap.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/heatmap.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "image-heatmap-shader",
            "sourceHash": "sha256:fa827dfedf5df196d34d2908dfb554973c162c1546c5baf7bd24583a22b37261",
            "contentHash": "sha256:d281a0d2c1c3325d7b70dbe33c40d6a3432887cb46e0b97f71cd0593cca86e7f",
            "structureHash": "sha256:90ec4e898c6b2fc2389fc8ac49401450cd4f39a7f369c996728e760d6ad2e3f3"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-image-dithering",
      "type": "registry:component",
      "title": "Image Dithering",
      "description": "Applies configurable ordered or random dithering to caller-provided imagery.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/image-dithering.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/image-dithering.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/image-dithering.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/image-dithering.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "dithering",
            "image",
            "pixels"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-image-dithering.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/image-dithering.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/image-dithering.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/image-dithering.tsx",
                "upstreamSha256": "sha256:caefd94c0eba0348caae064717c11d64783278f0b6dfe2e70a16978254905dd3",
                "contentSha256": "sha256:4bf31396acd86da94b4f6ef0744f079e213605e08ec9ec21121e39075343214c",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/image-dithering.ts",
                "upstreamPath": "packages/shaders/src/shaders/image-dithering.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/image-dithering.ts",
                "upstreamSha256": "sha256:f91b0cbbb5c309176d7a228e0cd05746c2b807dc0ba1f409cb69529a04eb2c1d",
                "contentSha256": "sha256:902855c3e3b386a80a6c54e371f53dac0e232b9f405aca9c6cd66dce8bb7e2ba",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/image-dithering.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/image-dithering.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/image-dithering.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "image-dithering-shader",
            "sourceHash": "sha256:afd260fbbe261ca285238908b3b058e89be7e87c2633350d03bcdedc91895aac",
            "contentHash": "sha256:8a8ea0afa6ad31fd71206cf2aa037e6e7af9bec32acdc04ba0412db8211d96ea",
            "structureHash": "sha256:5050f614e028b96065c7222ac461856a3ce0291238ef005a3e558b35fd89321c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-liquid-metal",
      "type": "registry:component",
      "title": "Liquid Metal",
      "description": "Renders a configurable liquid-metal shader, optionally shaped by caller-provided imagery.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/liquid-metal.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/liquid-metal.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/liquid-metal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/liquid-metal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/suspend.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/suspend.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/transparent-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/transparent-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "liquid",
            "metal",
            "image"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-liquid-metal.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/liquid-metal.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/liquid-metal.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/liquid-metal.tsx",
                "upstreamSha256": "sha256:8917927d1b5c1de4eed9dc25c3f3217e8473222ceef2f5fe6eb8a25c2d238988",
                "contentSha256": "sha256:5c74494e9ba28e82320a49650bc39f6c254d2f96812e53875d1501f6d808f977",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/liquid-metal.ts",
                "upstreamPath": "packages/shaders/src/shaders/liquid-metal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/liquid-metal.ts",
                "upstreamSha256": "sha256:a35abb854f81edd04f502f61f74ce176ab0bf1dea65c8333207e0b6ab4d86e28",
                "contentSha256": "sha256:2ee2674f5da39f91abaf5d6d1c34d85e8723d769a6c22297aa2bf9e4c23f76b0",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and removed performance/debug console.log output; no warn/error paths were changed.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/suspend.tsx",
                "upstreamPath": "packages/shaders-react/src/suspend.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/suspend.tsx",
                "upstreamSha256": "sha256:fe3772bb1205aa7305f6789ca1b2c01869da7ff5aa672b24a40930112c19d5eb",
                "contentSha256": "sha256:fe3772bb1205aa7305f6789ca1b2c01869da7ff5aa672b24a40930112c19d5eb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/transparent-pixel.ts",
                "upstreamPath": "packages/shaders-react/src/transparent-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/transparent-pixel.ts",
                "upstreamSha256": "sha256:0b66df4f3d5d564ae6be4fabb2adee1fed410f4f34a5caea041925a2740a890f",
                "contentSha256": "sha256:0b66df4f3d5d564ae6be4fabb2adee1fed410f4f34a5caea041925a2740a890f",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/liquid-metal.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/liquid-metal.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/liquid-metal.ts",
              "change": "Added a prominent Apache-2.0 modification notice and removed performance/debug console.log output; no warn/error paths were changed. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the shipped shader quiet in production without changing rendering or error handling."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "liquid-metal-shader",
            "sourceHash": "sha256:a3a3bb64f2b5862d87552bdf6e8a523a52b86fee47438feb095d6834e8391e13",
            "contentHash": "sha256:4c82f91c695768ba83da67f7887fab5ecdc7055b2aa26b4d2106b1192a7fd7af",
            "structureHash": "sha256:a3be240466d20e638488828edf7d45a5c6b0f63c5a19b160244349a944cd599d"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-metaballs",
      "type": "registry:component",
      "title": "Metaballs",
      "description": "Renders an animated field of merging colored metaballs.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/metaballs.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/metaballs.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-noise-texture.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-noise-texture.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/metaballs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/metaballs.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/types.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "metaballs",
            "blobs",
            "animation"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-metaballs.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/metaballs.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/metaballs.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/metaballs.tsx",
                "upstreamSha256": "sha256:97105cd78ae95173f5299dea42b5275e392dad874ef473ac0d285fc0940f4e10",
                "contentSha256": "sha256:19e8b0f9ea401e7bb876cf14cd7845a18dbb5f8bcc8510751b236f02dc04816e",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-noise-texture.ts",
                "upstreamPath": "packages/shaders/src/get-shader-noise-texture.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-noise-texture.ts",
                "upstreamSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "contentSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/metaballs.ts",
                "upstreamPath": "packages/shaders/src/shaders/metaballs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/metaballs.ts",
                "upstreamSha256": "sha256:9e2bf7ca56c0fc91b040f81c05dac03ace6d1c4706f8ed3d303d60e57f0db9b7",
                "contentSha256": "sha256:7da38159cb2044a5e2b7437478789949c316baedabb97817b901b8fe51ff40eb",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/types.ts",
                "upstreamPath": "packages/shaders/src/types.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/types.ts",
                "upstreamSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "contentSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/metaballs.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/metaballs.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/metaballs.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "metaballs-shader",
            "sourceHash": "sha256:7b38e21fbe1d9b7cba1991d166b345a66ee3badf38b63bc2ca3a6be1c7b40eed",
            "contentHash": "sha256:fe95cd9c3df3c474042bc5cb5e3d8c3ebf2b79a8a11cfcbe0b126bbd2234eeb3",
            "structureHash": "sha256:44a31dece64b25a685695885584f5e6e7c29bd78c94e164394a93ffd1c7e8848"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-paper-texture",
      "type": "registry:component",
      "title": "Paper Texture",
      "description": "Applies a configurable procedural paper texture over caller-provided imagery.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/paper-texture.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/paper-texture.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-noise-texture.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-noise-texture.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/paper-texture.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/paper-texture.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "paper",
            "texture",
            "image"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-paper-texture.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/paper-texture.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/paper-texture.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/paper-texture.tsx",
                "upstreamSha256": "sha256:a2038165710727d6ff4aca5dba8326b6ba7795e39193d3935db6bbb9ad083bb6",
                "contentSha256": "sha256:ebbd06e6c971d513df5caeda770dd8eee2fec034819a99725304ec4b47113d08",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-noise-texture.ts",
                "upstreamPath": "packages/shaders/src/get-shader-noise-texture.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-noise-texture.ts",
                "upstreamSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "contentSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/paper-texture.ts",
                "upstreamPath": "packages/shaders/src/shaders/paper-texture.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/paper-texture.ts",
                "upstreamSha256": "sha256:718a5fc107dcfeab3a558fcd71ecb5a1960f1466daa09ed8dc9ab8ad9091b3e6",
                "contentSha256": "sha256:1092b4f8108d996844f8253f272b49102d3493262079f4fc4447a84ac40e4900",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/paper-texture.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/paper-texture.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/paper-texture.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "procedural-paper-texture-shader",
            "sourceHash": "sha256:d6c8d96e30f91b8f1628861f3ad4e9f2ffb38382918b072eead2f2058d82c01e",
            "contentHash": "sha256:2751e9d21c86d0808208b5068325d773c6b048bcb6daa19aa75147945d5520f4",
            "structureHash": "sha256:64be22d56a9c2ea76e51abfe516c0420be53a4a57a7d930bc38c4a3ac654fdf6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-spiral",
      "type": "registry:component",
      "title": "Spiral",
      "description": "Renders a configurable animated spiral field with noise and stroke controls.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/spiral.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/spiral.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/spiral.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/spiral.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "spiral",
            "noise",
            "stroke"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-spiral.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/spiral.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/spiral.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/spiral.tsx",
                "upstreamSha256": "sha256:bff5db727d5dc82811cdaeeeb0e54f019b81f6f3598a0113f8802715a3d40f00",
                "contentSha256": "sha256:1b103addcf63fd327df07f03714108c17a06d141f50022a689a70fa750d357b5",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/spiral.ts",
                "upstreamPath": "packages/shaders/src/shaders/spiral.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/spiral.ts",
                "upstreamSha256": "sha256:7d510f2a0e24c66be555ed68747633ac0bca3ee86da1e334477fdc19ac2c3363",
                "contentSha256": "sha256:5993508d19795bd09587131f3f714e92fc7325d26736342012585abf48c17f98",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/spiral.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/spiral.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/spiral.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "spiral-field-shader",
            "sourceHash": "sha256:ec9dec0326838358fb1e948be9f6e93a47ef5c5f4ace934ec4d7b734035a4af3",
            "contentHash": "sha256:870b22e711803f2ca04fabf0cbcb9df43c8b7d29a93d024f157f79cda43f2c27",
            "structureHash": "sha256:2569eaec68ecc54c6a0fee8ca8ec5ff211cce7870209636e295a629f1f61e03f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-warp",
      "type": "registry:component",
      "title": "Warp",
      "description": "Renders a configurable animated color-warp field.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/warp.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/warp.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-noise-texture.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-noise-texture.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/warp.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/warp.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/types.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "warp",
            "color",
            "distortion"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-warp.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/warp.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/warp.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/warp.tsx",
                "upstreamSha256": "sha256:27f1345d4abc183a46a5f8abaf451807ddb4e81cccb764d029ce9f744cfd2e6e",
                "contentSha256": "sha256:1391cc9ea3113471d94a3e80531d39f5ad415089d3e8d5ade357ae66a8c9889d",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-noise-texture.ts",
                "upstreamPath": "packages/shaders/src/get-shader-noise-texture.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-noise-texture.ts",
                "upstreamSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "contentSha256": "sha256:c5d36911326153219bd450def1e5e84250a37968d79b29d4d7b11eff7bf5ecf9",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/warp.ts",
                "upstreamPath": "packages/shaders/src/shaders/warp.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/warp.ts",
                "upstreamSha256": "sha256:33a0d619667ac5ce85bcf8618f1a742383cb9233c7188a5989c5855987a573ae",
                "contentSha256": "sha256:d7d9e30208559bad5f48d282d2c365b3db3c9d311854ebe14e49412ae8d990ee",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/types.ts",
                "upstreamPath": "packages/shaders/src/types.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/types.ts",
                "upstreamSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "contentSha256": "sha256:7d726479d24cdccd0a77a47b7203a4dd231ae8c97035c12c568dc6966ddb6a64",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/warp.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/warp.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/warp.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "color-warp-shader",
            "sourceHash": "sha256:7a8b5d8efa2461fd3de5c4f04d3c4f5d6e7b49decc211c83d3b53bfcba1de72c",
            "contentHash": "sha256:fdb7acedc55d985e9d783b3c8a63df7e1df293c8b21b4d1c1bd6d94f7c6107db",
            "structureHash": "sha256:19f64136d25be8acb18e17fdf18acaa03a58afc9f5f71ee5b1fccef77afb9687"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "paper-water",
      "type": "registry:component",
      "title": "Water",
      "description": "Applies a configurable water-distortion shader to caller-provided imagery.",
      "author": "Paper",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shaders/water.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/paper-shaders/react/shaders/water.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/empty-pixel.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/empty-pixel.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/get-shader-color-from-string.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/get-shader-color-from-string.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-mount.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-mount.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-sizing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-sizing.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shader-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shader-utils.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/shaders/water.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/shaders/water.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/core/vertex-shader.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/core/vertex-shader.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/color-props-are-equal.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/color-props-are-equal.ts"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/set-min-image-size.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/set-min-image-size.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/shader-mount.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/shader-mount.tsx"
        },
        {
          "path": "registry/sources/paper-shaders/components/paper-shaders/react/use-merge-refs.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/paper-shaders/react/use-merge-refs.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "shader",
            "water",
            "distortion",
            "image"
          ],
          "renderer": "webgl",
          "preview": "previews/paper-water.tsx",
          "source": {
            "project": "Paper Shaders",
            "repository": "https://github.com/paper-design/shaders",
            "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/paper-shaders/react/shaders/water.tsx",
                "upstreamPath": "packages/shaders-react/src/shaders/water.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shaders/water.tsx",
                "upstreamSha256": "sha256:775831bf76ff30fb1ed1809979a5f34627de1829f8e397e57ffa25b9ac999662",
                "contentSha256": "sha256:a113c541d6bdffa6cf74f277016cbcdb667e84848d9c54988afb837b8e384275",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/empty-pixel.ts",
                "upstreamPath": "packages/shaders/src/empty-pixel.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/empty-pixel.ts",
                "upstreamSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "contentSha256": "sha256:53be51a065786523fdda5c76e9d7323d299b4400154e2648c5b9dfb726c99ea1",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/get-shader-color-from-string.ts",
                "upstreamPath": "packages/shaders/src/get-shader-color-from-string.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/get-shader-color-from-string.ts",
                "upstreamSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "contentSha256": "sha256:20fdc1a154ce9cc7d2d5b369150954e10b4845a0c5a764b814e2561e803deedd",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-mount.ts",
                "upstreamPath": "packages/shaders/src/shader-mount.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-mount.ts",
                "upstreamSha256": "sha256:bc5b6dbed094e71dc9d3132d6913c649862f3169dec16b457e11c9ce4d3a1432",
                "contentSha256": "sha256:70250bc5d2f1ce69de64188e52f70a75b73e07f85c5a3964133024ee6693e7e4",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-sizing.ts",
                "upstreamPath": "packages/shaders/src/shader-sizing.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-sizing.ts",
                "upstreamSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "contentSha256": "sha256:b4579aa325c6e662b271bed812415e5aed7cf8ff066a7940045f422458b7abeb",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "upstreamPath": "packages/shaders/src/shader-utils.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shader-utils.ts",
                "upstreamSha256": "sha256:5805b80c74323b0a8fce8c8c3628b17372014f7417d0c7de3346fa532c6c903a",
                "contentSha256": "sha256:bd76a10af8da83720af7a91a7586001b77558080405bc2f36f1f9605de280c2a",
                "changes": [
                  "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/shaders/water.ts",
                "upstreamPath": "packages/shaders/src/shaders/water.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/shaders/water.ts",
                "upstreamSha256": "sha256:951ad7a49a8820289220d373d45ab2292a94f1dd804459ace6b57fadc115cd7a",
                "contentSha256": "sha256:6be78c7de4889a734e59b1a9b433fb38c734fcf1add019e35c4ebc3b57166847",
                "changes": [
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/core/vertex-shader.ts",
                "upstreamPath": "packages/shaders/src/vertex-shader.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders/src/vertex-shader.ts",
                "upstreamSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "contentSha256": "sha256:b2f8121916f21674ccb53174efa88f19e53287893035333bc65f6228a4bfd136",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/color-props-are-equal.ts",
                "upstreamPath": "packages/shaders-react/src/color-props-are-equal.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/color-props-are-equal.ts",
                "upstreamSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "contentSha256": "sha256:5a77a6b3ae488b15b2e41b5a85838494d69820aacc26f8d74eac670c772587b8",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/set-min-image-size.tsx",
                "upstreamPath": "packages/shaders-react/src/set-min-image-size.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/set-min-image-size.tsx",
                "upstreamSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "contentSha256": "sha256:2a828df5a90ae3eb60eda675a86c07071e4f7a86e6592e97b323a0548f70c748",
                "changes": []
              },
              {
                "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
                "upstreamPath": "packages/shaders-react/src/shader-mount.tsx",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/shader-mount.tsx",
                "upstreamSha256": "sha256:6f47bbe87194f5403b39934c861a79fd6d0aed5af54e643fb62178ae0f93a4bf",
                "contentSha256": "sha256:425bd9e5effffb96a3f6014b2cc73b256e6d0a47167e01c100ad56e54731b2b2",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable.",
                  "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice."
                ]
              },
              {
                "shippedPath": "components/paper-shaders/react/use-merge-refs.ts",
                "upstreamPath": "packages/shaders-react/src/use-merge-refs.ts",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/src/use-merge-refs.ts",
                "upstreamSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "contentSha256": "sha256:363a8a6691f89dbf78cd184203cc1ca05ea1ac692f7fd4e39c5ffd58b80a77f3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0 AND MIT",
            "scope": "packages/shaders-react/src/shaders/water.tsx and its exact copied packages/shaders-react/src and packages/shaders/src import closure; shader-utils.ts includes an MIT-licensed Ashima Arts 2D simplex-noise adaptation",
            "copyright": [
              "Copyright 2026 Paper",
              "Copyright (C) 2011 by Ashima Arts (Simplex noise)",
              "Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others)"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/LICENSE",
              "sha256": "sha256:c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
              "localPath": "registry/sources/paper-shaders/LICENSE"
            },
            "notices": [
              "registry/sources/paper-shaders/NOTICE",
              "registry/sources/paper-shaders/PACKAGE_NOTICE",
              "registry/sources/paper-shaders/ASHIMA_LICENSE"
            ],
            "noticeEvidence": [
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/NOTICE",
                "localPath": "registry/sources/paper-shaders/NOTICE",
                "sha256": "sha256:d420ea2258428bf42986b9636c29f689020aba0f011f017fe5359cdbc9d7af2a",
                "changes": [
                  "Appended the Taste Blocks TypeScript-consumer import adaptation notice after the upstream notice text; original upstream SHA-256 was sha256:c3155d6a359d9841d63f7feb4938d2c99bb4ef681fa20be1eb4bfa71307f746b."
                ]
              },
              {
                "repository": "https://github.com/paper-design/shaders",
                "revision": "4d78ae940db2c73c22b6633fb05a3e4743f22551",
                "upstreamPath": "packages/shaders-react/NOTICE",
                "permalink": "https://github.com/paper-design/shaders/blob/4d78ae940db2c73c22b6633fb05a3e4743f22551/packages/shaders-react/NOTICE",
                "localPath": "registry/sources/paper-shaders/PACKAGE_NOTICE",
                "sha256": "sha256:06cf1515dc4628ae4a10f04f394ce746c6edba1ad0ed5d3f7df7ab1781dfe868",
                "changes": []
              },
              {
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "LICENSE",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/LICENSE",
                "localPath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "sha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "changes": []
              }
            ],
            "provenanceEvidence": [
              {
                "shippedPath": "components/paper-shaders/core/shader-utils.ts",
                "symbol": "simplexNoise",
                "author": "Ian McEwan, Ashima Arts",
                "repository": "https://github.com/ashima/webgl-noise",
                "revision": "dabd32e7d43936fc7c064e33b41621039f54d778",
                "upstreamPath": "src/noise2D.glsl",
                "permalink": "https://github.com/ashima/webgl-noise/blob/dabd32e7d43936fc7c064e33b41621039f54d778/src/noise2D.glsl",
                "upstreamSha256": "sha256:afc95e59718e94604151cada74288342411c4cad21f2698f69bab1683415c003",
                "spdx": "MIT",
                "licensePath": "registry/sources/paper-shaders/ASHIMA_LICENSE",
                "licenseSha256": "sha256:bdafce1bb01517c9ae6c4f3620c01340790b5e9d039ae9e356347d1174250916",
                "adaptation": "Paper Shaders inlined the modulo helper and omitted the original header; Taste Blocks restored the attribution and full MIT text without changing the shader math."
              }
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/paper-shaders/react/shaders/water.tsx",
              "change": "Added a prominent Apache-2.0 modification notice and repointed @paper-design/shaders imports to the copied source-local core modules. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Keep the copied React export installable with its exact copied core closure."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-utils.ts",
              "change": "Added a prominent modification notice, restored the Ashima Arts/Ian McEwan attribution, and embedded the full MIT license for the adapted 2D simplex-noise routine.",
              "reason": "Preserve the compatible third-party attribution and license required for redistributing the copied routine."
            },
            {
              "shippedPath": "components/paper-shaders/react/shader-mount.tsx",
              "change": "Added a prominent Apache-2.0 modification notice, repointed @paper-design/shaders imports to copied source-local modules, mapped prefers-reduced-motion to the supplied frame at speed zero, and added a deterministic solid-color fallback when WebGL2 is unavailable. Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Meet the shortlist fallback and reduced-motion requirements once in the shared mount used by every selected shader."
            },
            {
              "shippedPath": "components/paper-shaders/core/shader-mount.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            },
            {
              "shippedPath": "components/paper-shaders/core/shaders/water.ts",
              "change": "Removed explicit .js suffixes from relative local imports for TypeScript and Next.js consumer resolution; the file carries a Taste Blocks modification notice.",
              "reason": "Make the copied TypeScript import closure resolve after shadcn installation and in Next.js production builds."
            }
          ],
          "dedupe": {
            "family": "image-water-distortion-shader",
            "sourceHash": "sha256:1a22724e67719383b57fbaf0957278f80a3d61075cec428892cc8f59bf519eeb",
            "contentHash": "sha256:96d8ab68051ca05bd79b971edee50abf39892be919b375c6726fe87c823f2766",
            "structureHash": "sha256:91096826597a770b91979b04db8dbc2a10f3847f0ad3bcabd78da50b0f2d3040"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "primer-segmented-progress",
      "type": "registry:component",
      "title": "Segmented Progress",
      "description": "Displays multiple labelled progress values as segments in one bounded track.",
      "author": "Primer",
      "dependencies": [
        "clsx@2.1.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/primer-segmented-progress/components/primer-segmented-progress/index.ts",
          "type": "registry:component",
          "target": "@components/taste-blocks/primer-segmented-progress/index.ts"
        },
        {
          "path": "registry/sources/primer-segmented-progress/components/primer-segmented-progress/ProgressBar.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/primer-segmented-progress/ProgressBar.tsx"
        },
        {
          "path": "registry/sources/primer-segmented-progress/components/primer-segmented-progress/ProgressBar.module.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/primer-segmented-progress/ProgressBar.module.css"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "segmented",
            "progress",
            "breakdown"
          ],
          "renderer": "dom",
          "preview": "previews/primer-segmented-progress.tsx",
          "source": {
            "project": "Primer React",
            "repository": "https://github.com/primer/react",
            "revision": "2a67c191a0038df64d2225c0bc11c020c2def03c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/primer-segmented-progress/index.ts",
                "upstreamPath": "packages/react/src/ProgressBar/index.ts",
                "permalink": "https://github.com/primer/react/blob/2a67c191a0038df64d2225c0bc11c020c2def03c/packages/react/src/ProgressBar/index.ts",
                "upstreamSha256": "sha256:6ffd0f7e97fc78e8efb17d6dd5173a8fa461d9a10e0771df564953912432a3ee",
                "contentSha256": "sha256:6ffd0f7e97fc78e8efb17d6dd5173a8fa461d9a10e0771df564953912432a3ee",
                "changes": []
              },
              {
                "shippedPath": "components/primer-segmented-progress/ProgressBar.tsx",
                "upstreamPath": "packages/react/src/ProgressBar/ProgressBar.tsx",
                "permalink": "https://github.com/primer/react/blob/2a67c191a0038df64d2225c0bc11c020c2def03c/packages/react/src/ProgressBar/ProgressBar.tsx",
                "upstreamSha256": "sha256:90f9c1991cb79d3aa01a55a18e3419734c5b13a150003f799f2f7fce04e3854f",
                "contentSha256": "sha256:e0a6bd2bb4035f3e886063e5e7c1b272836c87c2c4237c30a47b9df0be1d7967",
                "changes": [
                  "Clamped finite progress and aria-valuenow inputs to 0 through 100 and normalized invalid inputs to zero.",
                  "Added a fallback fill color when the host does not define the requested Primer color token."
                ]
              },
              {
                "shippedPath": "components/primer-segmented-progress/ProgressBar.module.css",
                "upstreamPath": "packages/react/src/ProgressBar/ProgressBar.module.css",
                "permalink": "https://github.com/primer/react/blob/2a67c191a0038df64d2225c0bc11c020c2def03c/packages/react/src/ProgressBar/ProgressBar.module.css",
                "upstreamSha256": "sha256:e403d83d039694d0469be7569ddc9f311a04fa5130615fc15a385cee67ce874d",
                "contentSha256": "sha256:6776c130e81dea3c9026ab6c3a14f5fee2294b85637c89155550769872200ac8",
                "changes": [
                  "Added local fallback values for the three Primer track and radius tokens.",
                  "Scoped forced-color tokens to the component and forced each inline item fill variable to LinkText."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react/src/ProgressBar/ProgressBar.tsx, packages/react/src/ProgressBar/ProgressBar.module.css, and packages/react/src/ProgressBar/index.ts",
            "copyright": [
              "Copyright (c) 2018 GitHub, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/primer/react/blob/2a67c191a0038df64d2225c0bc11c020c2def03c/LICENSE",
              "sha256": "sha256:bf4f127cb7d82ed5c00d7095616440211225f4ca3b0195a0ecd0051720df5c18",
              "localPath": "registry/sources/primer-segmented-progress/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/primer-segmented-progress/ProgressBar.tsx",
              "change": "Clamped progress values and added a fallback for generated Primer fill tokens.",
              "reason": "Prevent visual and ARIA overflow from invalid caller values and render without a Primer theme provider."
            },
            {
              "shippedPath": "components/primer-segmented-progress/ProgressBar.module.css",
              "change": "Added track token fallbacks and scoped the forced-colors overrides to the component classes.",
              "reason": "Keep the CSS module portable while ensuring inline fill variables cannot defeat Windows forced colors."
            }
          ],
          "dedupe": {
            "family": "segmented-progress-breakdown",
            "sourceHash": "sha256:6b98bf0d8b8ed41dc0c2533bed22fb3af98b807378870048377cdda44514e01b",
            "contentHash": "sha256:132f7c7b22680cc57c359ec15174b0a4e99bffd38ecaccace549983fb78a5ec2",
            "structureHash": "sha256:646af80be78851d238c278249e96630740f941361a78993bc834a04abee7575e"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-color-area",
      "type": "registry:component",
      "title": "Color Area",
      "description": "Selects two color channels on a two-dimensional keyboard and pointer surface.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-area/ColorArea.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-area/ColorArea.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-area/ColorArea.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-area/ColorArea.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-area/ColorThumb.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-area/ColorThumb.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-area/ColorThumb.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-area/ColorThumb.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-area/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-area/theme.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "color",
            "two-dimensional",
            "keyboard",
            "pointer",
            "touch"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-color-area.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-color-area/ColorArea.css",
                "upstreamPath": "starters/docs/src/ColorArea.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorArea.css",
                "upstreamSha256": "sha256:7de4d52508c349d0a8a21559041592dd3c9a20d348b7e449160119d2428c68c6",
                "contentSha256": "sha256:7de4d52508c349d0a8a21559041592dd3c9a20d348b7e449160119d2428c68c6",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-area/ColorArea.tsx",
                "upstreamPath": "starters/docs/src/ColorArea.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorArea.tsx",
                "upstreamSha256": "sha256:03848cbccf7720037fcd0f7deed29ab9aea04b09514b5cd3cd41289cb4dfe1b9",
                "contentSha256": "sha256:03848cbccf7720037fcd0f7deed29ab9aea04b09514b5cd3cd41289cb4dfe1b9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-area/ColorThumb.css",
                "upstreamPath": "starters/docs/src/ColorThumb.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorThumb.css",
                "upstreamSha256": "sha256:33acd5f62df1ac43552b67ec9933ddc153b30a187b4cae48234e7d75eeb38aa7",
                "contentSha256": "sha256:33acd5f62df1ac43552b67ec9933ddc153b30a187b4cae48234e7d75eeb38aa7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-area/ColorThumb.tsx",
                "upstreamPath": "starters/docs/src/ColorThumb.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorThumb.tsx",
                "upstreamSha256": "sha256:22c68526db52394a488cf57cd239dfd26ade8cced9cf94bb35af3584a9e2e722",
                "contentSha256": "sha256:22c68526db52394a488cf57cd239dfd26ade8cced9cf94bb35af3584a9e2e722",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-area/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/ColorArea.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "two-dimensional-color-area",
            "sourceHash": "sha256:99336c712d8fc50d8aae6ffea4bbd57e23db5cf1c873ada44e249e8d781d8158",
            "contentHash": "sha256:99336c712d8fc50d8aae6ffea4bbd57e23db5cf1c873ada44e249e8d781d8158",
            "structureHash": "sha256:f94fec930b1bdff3d1a6e54dec31d10e37f12ed91582eeb9a148729b2b04fff7"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-color-field",
      "type": "registry:component",
      "title": "Color Field",
      "description": "Parses, validates, and edits a color value in a labeled text field.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/ColorField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/ColorField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/ColorField.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/ColorField.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/TextField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/TextField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-field/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-field/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "color",
            "field",
            "validation",
            "keyboard",
            "form"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-color-field.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-color-field/ColorField.css",
                "upstreamPath": "starters/docs/src/ColorField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorField.css",
                "upstreamSha256": "sha256:866a476dd166b8822b5bb65dc77d1033745ebcff72b90761d58fa31acba516ed",
                "contentSha256": "sha256:866a476dd166b8822b5bb65dc77d1033745ebcff72b90761d58fa31acba516ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/ColorField.tsx",
                "upstreamPath": "starters/docs/src/ColorField.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorField.tsx",
                "upstreamSha256": "sha256:541afaf661e515e4684d22bb87acd598cd69608d268186d46936d124de0b074e",
                "contentSha256": "sha256:541afaf661e515e4684d22bb87acd598cd69608d268186d46936d124de0b074e",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/TextField.css",
                "upstreamPath": "starters/docs/src/TextField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/TextField.css",
                "upstreamSha256": "sha256:a790ba861b0a948994ca6b8f0e4a8512530a8544ed19ac2e1259551d9e8a40a5",
                "contentSha256": "sha256:a790ba861b0a948994ca6b8f0e4a8512530a8544ed19ac2e1259551d9e8a40a5",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-field/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/ColorField.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "validated-color-field",
            "sourceHash": "sha256:b7d7f2cfbe670b30a8712a1c29f3d9f39d6a11b498a3363cc3aa0d637d75ece2",
            "contentHash": "sha256:b7d7f2cfbe670b30a8712a1c29f3d9f39d6a11b498a3363cc3aa0d637d75ece2",
            "structureHash": "sha256:067df102cdbf1b15ce2d8b499d85c3d2265f494e61f65b85932d2e6e6b8f3e0b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-color-slider",
      "type": "registry:component",
      "title": "Color Slider",
      "description": "Adjusts one channel of a color with localized output and keyboard controls.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/ColorSlider.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/ColorSlider.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/ColorSlider.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/ColorSlider.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/ColorThumb.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/ColorThumb.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/ColorThumb.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/ColorThumb.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-slider/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-slider/theme.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "color",
            "slider",
            "channel",
            "keyboard",
            "touch"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-color-slider.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-color-slider/ColorSlider.css",
                "upstreamPath": "starters/docs/src/ColorSlider.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorSlider.css",
                "upstreamSha256": "sha256:cc55040780decf7f28dd199be09261903a9009b6c1af5150e57116713fe2a1c7",
                "contentSha256": "sha256:cc55040780decf7f28dd199be09261903a9009b6c1af5150e57116713fe2a1c7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/ColorSlider.tsx",
                "upstreamPath": "starters/docs/src/ColorSlider.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorSlider.tsx",
                "upstreamSha256": "sha256:136f08eedbc7fccd525e6b7f3bebfcf06c5e80b3ba1bd09cd1e49b3bff37cf79",
                "contentSha256": "sha256:136f08eedbc7fccd525e6b7f3bebfcf06c5e80b3ba1bd09cd1e49b3bff37cf79",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/ColorThumb.css",
                "upstreamPath": "starters/docs/src/ColorThumb.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorThumb.css",
                "upstreamSha256": "sha256:33acd5f62df1ac43552b67ec9933ddc153b30a187b4cae48234e7d75eeb38aa7",
                "contentSha256": "sha256:33acd5f62df1ac43552b67ec9933ddc153b30a187b4cae48234e7d75eeb38aa7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/ColorThumb.tsx",
                "upstreamPath": "starters/docs/src/ColorThumb.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorThumb.tsx",
                "upstreamSha256": "sha256:22c68526db52394a488cf57cd239dfd26ade8cced9cf94bb35af3584a9e2e722",
                "contentSha256": "sha256:22c68526db52394a488cf57cd239dfd26ade8cced9cf94bb35af3584a9e2e722",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-slider/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/ColorSlider.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "single-channel-color-slider",
            "sourceHash": "sha256:4797d3432ee595663bff94d0fa226b775d23b0f56ce9267c1a6852b88333015c",
            "contentHash": "sha256:4797d3432ee595663bff94d0fa226b775d23b0f56ce9267c1a6852b88333015c",
            "structureHash": "sha256:bbc56622e11ad560aeeee1a288c3f25b4dde477a0163c3e7be977b1bafb546d9"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-color-swatch-picker",
      "type": "registry:component",
      "title": "Color Swatch Picker",
      "description": "Selects one or more colors from a keyboard-navigable swatch collection.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-swatch-picker/ColorSwatch.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-swatch-picker/ColorSwatch.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-swatch-picker/ColorSwatch.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-swatch-picker/ColorSwatch.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-swatch-picker/ColorSwatchPicker.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-swatch-picker/ColorSwatchPicker.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-swatch-picker/ColorSwatchPicker.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-swatch-picker/ColorSwatchPicker.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-swatch-picker/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-swatch-picker/theme.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "color",
            "swatches",
            "selection",
            "keyboard",
            "collection"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-color-swatch-picker.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-color-swatch-picker/ColorSwatch.css",
                "upstreamPath": "starters/docs/src/ColorSwatch.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorSwatch.css",
                "upstreamSha256": "sha256:c0f143596267597993407eef89b56765ab9b679e666047727f5f08bc34d966e2",
                "contentSha256": "sha256:c0f143596267597993407eef89b56765ab9b679e666047727f5f08bc34d966e2",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-swatch-picker/ColorSwatch.tsx",
                "upstreamPath": "starters/docs/src/ColorSwatch.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorSwatch.tsx",
                "upstreamSha256": "sha256:755d796ef3a31aa2f94d737d8ab76c7a66654ba7e26b996e8843889450933729",
                "contentSha256": "sha256:755d796ef3a31aa2f94d737d8ab76c7a66654ba7e26b996e8843889450933729",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-swatch-picker/ColorSwatchPicker.css",
                "upstreamPath": "starters/docs/src/ColorSwatchPicker.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorSwatchPicker.css",
                "upstreamSha256": "sha256:86836a34ad4c1a1ca0a02a2dff4d4636d8b722bf6812e6d7189d279ba1ad8c09",
                "contentSha256": "sha256:86836a34ad4c1a1ca0a02a2dff4d4636d8b722bf6812e6d7189d279ba1ad8c09",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-swatch-picker/ColorSwatchPicker.tsx",
                "upstreamPath": "starters/docs/src/ColorSwatchPicker.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorSwatchPicker.tsx",
                "upstreamSha256": "sha256:fb0665c37a5a98211d6be426ee3fd107e580d11c22777b0e96bce3551bd7508a",
                "contentSha256": "sha256:fb0665c37a5a98211d6be426ee3fd107e580d11c22777b0e96bce3551bd7508a",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-swatch-picker/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/ColorSwatchPicker.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "selectable-color-swatch-collection",
            "sourceHash": "sha256:ebf8388aafdb33425bc1d6e301f3ab1a216e94189abb22f8f3bd3af3464b4eb8",
            "contentHash": "sha256:ebf8388aafdb33425bc1d6e301f3ab1a216e94189abb22f8f3bd3af3464b4eb8",
            "structureHash": "sha256:7a2a9cb4482257a2822554571e45f0feead06bb77526d148550075159810227c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-color-wheel",
      "type": "registry:component",
      "title": "Color Wheel",
      "description": "Selects hue on a circular keyboard and pointer control.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-wheel/ColorThumb.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-wheel/ColorThumb.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-wheel/ColorThumb.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-wheel/ColorThumb.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-wheel/ColorWheel.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-wheel/ColorWheel.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-wheel/ColorWheel.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-wheel/ColorWheel.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-color-wheel/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-color-wheel/theme.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "color",
            "hue",
            "wheel",
            "keyboard",
            "touch"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-color-wheel.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-color-wheel/ColorThumb.css",
                "upstreamPath": "starters/docs/src/ColorThumb.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorThumb.css",
                "upstreamSha256": "sha256:33acd5f62df1ac43552b67ec9933ddc153b30a187b4cae48234e7d75eeb38aa7",
                "contentSha256": "sha256:33acd5f62df1ac43552b67ec9933ddc153b30a187b4cae48234e7d75eeb38aa7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-wheel/ColorThumb.tsx",
                "upstreamPath": "starters/docs/src/ColorThumb.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorThumb.tsx",
                "upstreamSha256": "sha256:22c68526db52394a488cf57cd239dfd26ade8cced9cf94bb35af3584a9e2e722",
                "contentSha256": "sha256:22c68526db52394a488cf57cd239dfd26ade8cced9cf94bb35af3584a9e2e722",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-wheel/ColorWheel.css",
                "upstreamPath": "starters/docs/src/ColorWheel.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorWheel.css",
                "upstreamSha256": "sha256:9457da6f3f9fc18bffa0bfe352e59970ee870e4a57af5a59d1741e89a388b4db",
                "contentSha256": "sha256:9457da6f3f9fc18bffa0bfe352e59970ee870e4a57af5a59d1741e89a388b4db",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-wheel/ColorWheel.tsx",
                "upstreamPath": "starters/docs/src/ColorWheel.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ColorWheel.tsx",
                "upstreamSha256": "sha256:00485799d3fcfb654f45d025105ed23c7a3b72b002eedd9707d982900c6cf114",
                "contentSha256": "sha256:00485799d3fcfb654f45d025105ed23c7a3b72b002eedd9707d982900c6cf114",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-color-wheel/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/ColorWheel.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "circular-hue-picker",
            "sourceHash": "sha256:9bd220c86b5aa067e2ee64535cd2c3c5496595765e1160a74067be3e7deecf6b",
            "contentHash": "sha256:9bd220c86b5aa067e2ee64535cd2c3c5496595765e1160a74067be3e7deecf6b",
            "structureHash": "sha256:b3a8ee8c15545b39fffc46c0b11719ff1e924dba7fdcad5a181323a435fb106b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-date-picker",
      "type": "registry:component",
      "title": "Date Picker",
      "description": "Combines a localized segmented date field with an accessible calendar popover.",
      "author": "Adobe",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Button.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Button.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Button.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Button.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Calendar.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Calendar.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Calendar.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Calendar.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/DateField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/DateField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/DateField.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/DateField.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/DatePicker.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/DatePicker.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/DatePicker.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/DatePicker.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Popover.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Popover.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/Popover.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/Popover.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/ProgressCircle.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/ProgressCircle.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-picker/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-picker/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "date",
            "calendar",
            "popover",
            "keyboard",
            "localization"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-date-picker.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-date-picker/Button.css",
                "upstreamPath": "starters/docs/src/Button.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.css",
                "upstreamSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "contentSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Button.tsx",
                "upstreamPath": "starters/docs/src/Button.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.tsx",
                "upstreamSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "contentSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Calendar.css",
                "upstreamPath": "starters/docs/src/Calendar.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Calendar.css",
                "upstreamSha256": "sha256:a1f83ce4427d8bc66450285a5151b7527f50a97a485a008eb6a8422ea9648e23",
                "contentSha256": "sha256:a1f83ce4427d8bc66450285a5151b7527f50a97a485a008eb6a8422ea9648e23",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Calendar.tsx",
                "upstreamPath": "starters/docs/src/Calendar.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Calendar.tsx",
                "upstreamSha256": "sha256:cc15e96bbb017eaefe069a4e362c5812316b934a834cf1c89a373532caaf3b07",
                "contentSha256": "sha256:cc15e96bbb017eaefe069a4e362c5812316b934a834cf1c89a373532caaf3b07",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/DateField.css",
                "upstreamPath": "starters/docs/src/DateField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DateField.css",
                "upstreamSha256": "sha256:ef56bf8a2457ea97ca29dfd34609e4ff6742c0bd0cee2aa0bc3716aaf0e310f8",
                "contentSha256": "sha256:ef56bf8a2457ea97ca29dfd34609e4ff6742c0bd0cee2aa0bc3716aaf0e310f8",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/DateField.tsx",
                "upstreamPath": "starters/docs/src/DateField.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DateField.tsx",
                "upstreamSha256": "sha256:a24292496e0da1ec03612704b07bb106cb8c96e2431b986e5613db3e5e438536",
                "contentSha256": "sha256:a24292496e0da1ec03612704b07bb106cb8c96e2431b986e5613db3e5e438536",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/DatePicker.css",
                "upstreamPath": "starters/docs/src/DatePicker.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DatePicker.css",
                "upstreamSha256": "sha256:cbce925b7722eb3d9ecd0672ec5e4c0998a9c248267e3d329b21e63d360f8c65",
                "contentSha256": "sha256:cbce925b7722eb3d9ecd0672ec5e4c0998a9c248267e3d329b21e63d360f8c65",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/DatePicker.tsx",
                "upstreamPath": "starters/docs/src/DatePicker.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DatePicker.tsx",
                "upstreamSha256": "sha256:eff531eac14efdd1ca4af5093ab1c76fa8c068ae4124d26955a30e0a18fc2386",
                "contentSha256": "sha256:eff531eac14efdd1ca4af5093ab1c76fa8c068ae4124d26955a30e0a18fc2386",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Popover.css",
                "upstreamPath": "starters/docs/src/Popover.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.css",
                "upstreamSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "contentSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/Popover.tsx",
                "upstreamPath": "starters/docs/src/Popover.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.tsx",
                "upstreamSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "contentSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/ProgressCircle.tsx",
                "upstreamPath": "starters/docs/src/ProgressCircle.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ProgressCircle.tsx",
                "upstreamSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "contentSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-picker/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/DatePicker.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "segmented-date-picker-popover",
            "sourceHash": "sha256:382975121758ba438da4c08352837947cf4922a338b95565d97bbe7cb7c72ec8",
            "contentHash": "sha256:382975121758ba438da4c08352837947cf4922a338b95565d97bbe7cb7c72ec8",
            "structureHash": "sha256:237ca1eb3ccb40ed5d7de84950d82e8cbbd7d40e7ab69f1aaa3db7e9f841d244"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-date-range-picker",
      "type": "registry:component",
      "title": "Date Range Picker",
      "description": "Edits a localized start and end date with a shared range calendar popover.",
      "author": "Adobe",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Button.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Button.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Button.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Button.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Calendar.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Calendar.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Calendar.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Calendar.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/DateField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/DateField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/DateField.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/DateField.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/DateRangePicker.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/DateRangePicker.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/DateRangePicker.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/DateRangePicker.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Popover.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Popover.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/Popover.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/Popover.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/ProgressCircle.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/ProgressCircle.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/RangeCalendar.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/RangeCalendar.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/RangeCalendar.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/RangeCalendar.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-date-range-picker/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-date-range-picker/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "date",
            "range",
            "calendar",
            "keyboard",
            "localization"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-date-range-picker.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-date-range-picker/Button.css",
                "upstreamPath": "starters/docs/src/Button.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.css",
                "upstreamSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "contentSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Button.tsx",
                "upstreamPath": "starters/docs/src/Button.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.tsx",
                "upstreamSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "contentSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Calendar.css",
                "upstreamPath": "starters/docs/src/Calendar.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Calendar.css",
                "upstreamSha256": "sha256:a1f83ce4427d8bc66450285a5151b7527f50a97a485a008eb6a8422ea9648e23",
                "contentSha256": "sha256:a1f83ce4427d8bc66450285a5151b7527f50a97a485a008eb6a8422ea9648e23",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Calendar.tsx",
                "upstreamPath": "starters/docs/src/Calendar.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Calendar.tsx",
                "upstreamSha256": "sha256:cc15e96bbb017eaefe069a4e362c5812316b934a834cf1c89a373532caaf3b07",
                "contentSha256": "sha256:cc15e96bbb017eaefe069a4e362c5812316b934a834cf1c89a373532caaf3b07",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/DateField.css",
                "upstreamPath": "starters/docs/src/DateField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DateField.css",
                "upstreamSha256": "sha256:ef56bf8a2457ea97ca29dfd34609e4ff6742c0bd0cee2aa0bc3716aaf0e310f8",
                "contentSha256": "sha256:ef56bf8a2457ea97ca29dfd34609e4ff6742c0bd0cee2aa0bc3716aaf0e310f8",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/DateField.tsx",
                "upstreamPath": "starters/docs/src/DateField.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DateField.tsx",
                "upstreamSha256": "sha256:a24292496e0da1ec03612704b07bb106cb8c96e2431b986e5613db3e5e438536",
                "contentSha256": "sha256:a24292496e0da1ec03612704b07bb106cb8c96e2431b986e5613db3e5e438536",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/DateRangePicker.css",
                "upstreamPath": "starters/docs/src/DateRangePicker.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DateRangePicker.css",
                "upstreamSha256": "sha256:e4ca8ed4c1a0825d01df38ea49d1cdf150692b8da8c63c8c806babc4b1f913f0",
                "contentSha256": "sha256:e4ca8ed4c1a0825d01df38ea49d1cdf150692b8da8c63c8c806babc4b1f913f0",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/DateRangePicker.tsx",
                "upstreamPath": "starters/docs/src/DateRangePicker.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DateRangePicker.tsx",
                "upstreamSha256": "sha256:f3752c696ca18b9c4f36a4d433b758140badc236937f6c4f20c6ef9bedf82a02",
                "contentSha256": "sha256:f3752c696ca18b9c4f36a4d433b758140badc236937f6c4f20c6ef9bedf82a02",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Popover.css",
                "upstreamPath": "starters/docs/src/Popover.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.css",
                "upstreamSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "contentSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/Popover.tsx",
                "upstreamPath": "starters/docs/src/Popover.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.tsx",
                "upstreamSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "contentSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/ProgressCircle.tsx",
                "upstreamPath": "starters/docs/src/ProgressCircle.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ProgressCircle.tsx",
                "upstreamSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "contentSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/RangeCalendar.css",
                "upstreamPath": "starters/docs/src/RangeCalendar.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/RangeCalendar.css",
                "upstreamSha256": "sha256:b5c9ea0c54a0e124f5a038c007894ee1f1060ba744153ff84eac53cc734469bc",
                "contentSha256": "sha256:b5c9ea0c54a0e124f5a038c007894ee1f1060ba744153ff84eac53cc734469bc",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/RangeCalendar.tsx",
                "upstreamPath": "starters/docs/src/RangeCalendar.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/RangeCalendar.tsx",
                "upstreamSha256": "sha256:6abbf6da51ed38e040f426fc00934567a5ebb42c5c4496e90ba275edc73e8c3e",
                "contentSha256": "sha256:6abbf6da51ed38e040f426fc00934567a5ebb42c5c4496e90ba275edc73e8c3e",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-date-range-picker/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/DateRangePicker.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "segmented-date-range-picker",
            "sourceHash": "sha256:d82bd21dea1ba98529344963f178060a62dbd8a5a0cbcb3c88e11d05988842f7",
            "contentHash": "sha256:d82bd21dea1ba98529344963f178060a62dbd8a5a0cbcb3c88e11d05988842f7",
            "structureHash": "sha256:81dde72effeaade365c9918a8ebbe7a6cbfe8a880d99ed3396cb38ccc1ea64c4"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-disclosure-group",
      "type": "registry:component",
      "title": "Disclosure Group",
      "description": "Coordinates one or more accessible disclosures with animated, reduced-motion-aware panels.",
      "author": "Adobe",
      "dependencies": [
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-disclosure-group/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-disclosure-group/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-disclosure-group/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-disclosure-group/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-disclosure-group/Disclosure.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-disclosure-group/Disclosure.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-disclosure-group/Disclosure.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-disclosure-group/Disclosure.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-disclosure-group/DisclosureGroup.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-disclosure-group/DisclosureGroup.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-disclosure-group/DisclosureGroup.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-disclosure-group/DisclosureGroup.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-disclosure-group/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-disclosure-group/theme.css"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "disclosure",
            "accordion",
            "group",
            "keyboard",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-disclosure-group.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-disclosure-group/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-disclosure-group/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-disclosure-group/Disclosure.css",
                "upstreamPath": "starters/docs/src/Disclosure.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Disclosure.css",
                "upstreamSha256": "sha256:66bda92c3e89db6f68f91fc2c342ec55537638bd1dc8463aa05fde382e7a808a",
                "contentSha256": "sha256:66bda92c3e89db6f68f91fc2c342ec55537638bd1dc8463aa05fde382e7a808a",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-disclosure-group/Disclosure.tsx",
                "upstreamPath": "starters/docs/src/Disclosure.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Disclosure.tsx",
                "upstreamSha256": "sha256:aea6aa393cc251730e92194315eda48a2c05073c0a1e33b124052bc499d28ff4",
                "contentSha256": "sha256:aea6aa393cc251730e92194315eda48a2c05073c0a1e33b124052bc499d28ff4",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-disclosure-group/DisclosureGroup.css",
                "upstreamPath": "starters/docs/src/DisclosureGroup.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DisclosureGroup.css",
                "upstreamSha256": "sha256:f2554833a95e549a66187e6df291638a231c22dd759674b7e37c867b144009a6",
                "contentSha256": "sha256:f2554833a95e549a66187e6df291638a231c22dd759674b7e37c867b144009a6",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-disclosure-group/DisclosureGroup.tsx",
                "upstreamPath": "starters/docs/src/DisclosureGroup.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/DisclosureGroup.tsx",
                "upstreamSha256": "sha256:4b0b75075bba4684948fd41835556fa2e76ae1dc63f4ca20939b89c7ba6e6c91",
                "contentSha256": "sha256:4b0b75075bba4684948fd41835556fa2e76ae1dc63f4ca20939b89c7ba6e6c91",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-disclosure-group/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/Disclosure.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "coordinated-disclosure-group",
            "sourceHash": "sha256:2716912e357b93ddc1e40f4a14ee3e24d948ba9e5e5ee8338bf1a982094d96a4",
            "contentHash": "sha256:2716912e357b93ddc1e40f4a14ee3e24d948ba9e5e5ee8338bf1a982094d96a4",
            "structureHash": "sha256:2d5f318ffce6652159efba32d80ce4bd348444bd4cc1e6bfd511aa1158f25acd"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-grid-list",
      "type": "registry:component",
      "title": "Grid List",
      "description": "Presents a selectable grid collection with drag handles, sections, and incremental loading support.",
      "author": "Adobe",
      "dependencies": [
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/Checkbox.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/Checkbox.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/Checkbox.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/Checkbox.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/GridList.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/GridList.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/GridList.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/GridList.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/ProgressCircle.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/ProgressCircle.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-grid-list/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-grid-list/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "grid-list",
            "selection",
            "drag-and-drop",
            "keyboard",
            "collection"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-grid-list.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-grid-list/Checkbox.css",
                "upstreamPath": "starters/docs/src/Checkbox.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Checkbox.css",
                "upstreamSha256": "sha256:6c751dae8e523ceef38878fa1e25e82010f82eec17cf472e7913782d0e83e798",
                "contentSha256": "sha256:6c751dae8e523ceef38878fa1e25e82010f82eec17cf472e7913782d0e83e798",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/Checkbox.tsx",
                "upstreamPath": "starters/docs/src/Checkbox.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Checkbox.tsx",
                "upstreamSha256": "sha256:0c9b796c2757e6b1c642ac234bb2ff87c4637a88a8ac9105283b703fc4f123d3",
                "contentSha256": "sha256:0c9b796c2757e6b1c642ac234bb2ff87c4637a88a8ac9105283b703fc4f123d3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/GridList.css",
                "upstreamPath": "starters/docs/src/GridList.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/GridList.css",
                "upstreamSha256": "sha256:45f9a24443b070956de340386931d8fbad304ab65eb8940e1ab5dcf7453278f2",
                "contentSha256": "sha256:45f9a24443b070956de340386931d8fbad304ab65eb8940e1ab5dcf7453278f2",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/GridList.tsx",
                "upstreamPath": "starters/docs/src/GridList.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/GridList.tsx",
                "upstreamSha256": "sha256:82e49b369633a2837d3715d20a00476cdf61751e62e6f23ce7833ec0210495f9",
                "contentSha256": "sha256:82e49b369633a2837d3715d20a00476cdf61751e62e6f23ce7833ec0210495f9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/ProgressCircle.tsx",
                "upstreamPath": "starters/docs/src/ProgressCircle.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ProgressCircle.tsx",
                "upstreamSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "contentSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-grid-list/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/GridList.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "selectable-draggable-grid-list",
            "sourceHash": "sha256:a6035478ef20f1764cfb09ac1d23fccc3f1265f8d95d83a27a934303a59f91c9",
            "contentHash": "sha256:a6035478ef20f1764cfb09ac1d23fccc3f1265f8d95d83a27a934303a59f91c9",
            "structureHash": "sha256:0cfcb7ec0065f77126b799226075ac47a801d2961e83dcebee6572e83e407350"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-menu",
      "type": "registry:component",
      "title": "Menu",
      "description": "Opens a keyboard-navigable action menu with selection, sections, and nested submenu support.",
      "author": "Adobe",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-menu/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-menu/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-menu/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-menu/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-menu/Menu.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-menu/Menu.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-menu/Menu.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-menu/Menu.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-menu/Popover.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-menu/Popover.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-menu/Popover.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-menu/Popover.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-menu/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-menu/theme.css"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "menu",
            "submenu",
            "selection",
            "keyboard",
            "popover"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-menu.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-menu/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-menu/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-menu/Menu.css",
                "upstreamPath": "starters/docs/src/Menu.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Menu.css",
                "upstreamSha256": "sha256:19b65a0c707de362c81e17d248aefa9624cdb178734cd892375935b34635f0ca",
                "contentSha256": "sha256:19b65a0c707de362c81e17d248aefa9624cdb178734cd892375935b34635f0ca",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-menu/Menu.tsx",
                "upstreamPath": "starters/docs/src/Menu.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Menu.tsx",
                "upstreamSha256": "sha256:2b932bf28768c2d1d71dfdee05d89a57e2634256b2cb2ebe43f44d9eb574eb8d",
                "contentSha256": "sha256:2b932bf28768c2d1d71dfdee05d89a57e2634256b2cb2ebe43f44d9eb574eb8d",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-menu/Popover.css",
                "upstreamPath": "starters/docs/src/Popover.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.css",
                "upstreamSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "contentSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-menu/Popover.tsx",
                "upstreamPath": "starters/docs/src/Popover.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.tsx",
                "upstreamSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "contentSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-menu/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/Menu.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "nested-action-menu",
            "sourceHash": "sha256:bb428297691d98c1cba5f900f4601d776925fddf71bc04cb8baa539bf477fad8",
            "contentHash": "sha256:bb428297691d98c1cba5f900f4601d776925fddf71bc04cb8baa539bf477fad8",
            "structureHash": "sha256:0c3fab8b249a56a002796f7ac12b419a906b1ded3afec38d1810a6f8450cca78"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-number-field",
      "type": "registry:component",
      "title": "Number Field",
      "description": "Edits a localized numeric value with validation and increment and decrement controls.",
      "author": "Adobe",
      "dependencies": [
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/Button.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/Button.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/Button.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/Button.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/NumberField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/NumberField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/NumberField.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/NumberField.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/ProgressCircle.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/ProgressCircle.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/TextField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/TextField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-number-field/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-number-field/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "number",
            "stepper",
            "localization",
            "validation",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-number-field.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-number-field/Button.css",
                "upstreamPath": "starters/docs/src/Button.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.css",
                "upstreamSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "contentSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/Button.tsx",
                "upstreamPath": "starters/docs/src/Button.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.tsx",
                "upstreamSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "contentSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/NumberField.css",
                "upstreamPath": "starters/docs/src/NumberField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/NumberField.css",
                "upstreamSha256": "sha256:d65c7512c668946d7753014bbcc5f9be598b868ec37b91be9e6c4befab666ca5",
                "contentSha256": "sha256:d65c7512c668946d7753014bbcc5f9be598b868ec37b91be9e6c4befab666ca5",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/NumberField.tsx",
                "upstreamPath": "starters/docs/src/NumberField.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/NumberField.tsx",
                "upstreamSha256": "sha256:c42833ef023187e55a88988ced44ceb6ca59cfd93c38863cf4dd405f68e72c66",
                "contentSha256": "sha256:c42833ef023187e55a88988ced44ceb6ca59cfd93c38863cf4dd405f68e72c66",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/ProgressCircle.tsx",
                "upstreamPath": "starters/docs/src/ProgressCircle.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ProgressCircle.tsx",
                "upstreamSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "contentSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/TextField.css",
                "upstreamPath": "starters/docs/src/TextField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/TextField.css",
                "upstreamSha256": "sha256:a790ba861b0a948994ca6b8f0e4a8512530a8544ed19ac2e1259551d9e8a40a5",
                "contentSha256": "sha256:a790ba861b0a948994ca6b8f0e4a8512530a8544ed19ac2e1259551d9e8a40a5",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-number-field/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/NumberField.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "localized-stepper-number-field",
            "sourceHash": "sha256:baad5d4e78e064535986035f31ca9dd3355c5bec8a2f34ba2b4183031caf12cf",
            "contentHash": "sha256:baad5d4e78e064535986035f31ca9dd3355c5bec8a2f34ba2b4183031caf12cf",
            "structureHash": "sha256:4070230f22022a2d34fb5e8cac99de44bc8d503b34d14d031fb7fb3efac596c6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-search-field",
      "type": "registry:component",
      "title": "Search Field",
      "description": "Provides a labeled search input with native search semantics, validation, and a clear control.",
      "author": "Adobe",
      "dependencies": [
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/SearchField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/SearchField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/SearchField.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/SearchField.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/TextField.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/TextField.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-search-field/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-search-field/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "search",
            "field",
            "clear",
            "validation",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-search-field.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-search-field/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/SearchField.css",
                "upstreamPath": "starters/docs/src/SearchField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/SearchField.css",
                "upstreamSha256": "sha256:db597479ede57682d7928b5357255b1c07d6cbcbf0161bdcb0a1b8c0aebe7661",
                "contentSha256": "sha256:db597479ede57682d7928b5357255b1c07d6cbcbf0161bdcb0a1b8c0aebe7661",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/SearchField.tsx",
                "upstreamPath": "starters/docs/src/SearchField.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/SearchField.tsx",
                "upstreamSha256": "sha256:2dc9e24a9ee2239e36dd036f5d76529f2d92219d2ecabfffeb5f52bee2c43717",
                "contentSha256": "sha256:2dc9e24a9ee2239e36dd036f5d76529f2d92219d2ecabfffeb5f52bee2c43717",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/TextField.css",
                "upstreamPath": "starters/docs/src/TextField.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/TextField.css",
                "upstreamSha256": "sha256:a790ba861b0a948994ca6b8f0e4a8512530a8544ed19ac2e1259551d9e8a40a5",
                "contentSha256": "sha256:a790ba861b0a948994ca6b8f0e4a8512530a8544ed19ac2e1259551d9e8a40a5",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-search-field/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/SearchField.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "clearable-semantic-search-field",
            "sourceHash": "sha256:0e2ade8e49d059060decab82935eead6a07f69a27259ed43799d86e7ffa0883a",
            "contentHash": "sha256:0e2ade8e49d059060decab82935eead6a07f69a27259ed43799d86e7ffa0883a",
            "structureHash": "sha256:853c5855f05b735544098d56e360d21b516ceef021ac00b231869f1a9b7ea773"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-segmented-control",
      "type": "registry:component",
      "title": "Segmented Control",
      "description": "Selects one or more options in a keyboard-navigable segmented control with a selection indicator.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-segmented-control/SegmentedControl.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-segmented-control/SegmentedControl.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-segmented-control/SegmentedControl.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-segmented-control/SegmentedControl.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-segmented-control/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-segmented-control/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-segmented-control/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-segmented-control/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "segmented-control",
            "selection",
            "toggle",
            "keyboard",
            "indicator"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-segmented-control.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-segmented-control/SegmentedControl.css",
                "upstreamPath": "starters/docs/src/SegmentedControl.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/SegmentedControl.css",
                "upstreamSha256": "sha256:4a92e3fc534edcf03e33aa984ea4a6f9733b254366bfcc83be774e1ab8ad657a",
                "contentSha256": "sha256:4a92e3fc534edcf03e33aa984ea4a6f9733b254366bfcc83be774e1ab8ad657a",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-segmented-control/SegmentedControl.tsx",
                "upstreamPath": "starters/docs/src/SegmentedControl.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/SegmentedControl.tsx",
                "upstreamSha256": "sha256:a9611ef7d480fbcca3ba4916710d633195a64d4740e372620a64f2e52a10f9f3",
                "contentSha256": "sha256:a9611ef7d480fbcca3ba4916710d633195a64d4740e372620a64f2e52a10f9f3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-segmented-control/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-segmented-control/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/SegmentedControl.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "selection-indicator-segmented-control",
            "sourceHash": "sha256:457e0743e3c7153bc4d80a8e7a2e81ae2834ee1fe5ddfca368e14e8500708512",
            "contentHash": "sha256:457e0743e3c7153bc4d80a8e7a2e81ae2834ee1fe5ddfca368e14e8500708512",
            "structureHash": "sha256:39ecca0b1ae7f6b7961adcc92affaa4c3694991a7c023a20ebcd61293a5dd21c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-select",
      "type": "registry:component",
      "title": "Select",
      "description": "Selects an option from a labeled, keyboard-navigable listbox popover.",
      "author": "Adobe",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Button.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Button.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Button.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Button.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/ListBox.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/ListBox.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/ListBox.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/ListBox.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Popover.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Popover.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Popover.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Popover.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/ProgressCircle.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/ProgressCircle.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Select.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Select.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/Select.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/Select.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-select/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-select/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "select",
            "listbox",
            "popover",
            "keyboard",
            "form"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-select.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-select/Button.css",
                "upstreamPath": "starters/docs/src/Button.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.css",
                "upstreamSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "contentSha256": "sha256:12472e3f531b516181119f289aaa041646b125e961e29c0c01c9b1961e064bd7",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Button.tsx",
                "upstreamPath": "starters/docs/src/Button.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Button.tsx",
                "upstreamSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "contentSha256": "sha256:5c35697f280e1e21e5f8e85e4f8e4cdffa815e7dcd5177b3b5b07e5fc9330a09",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/ListBox.css",
                "upstreamPath": "starters/docs/src/ListBox.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ListBox.css",
                "upstreamSha256": "sha256:f5969d6f6fcce3c73a5915cd08b4aeccf36ea9f1110756de697cd131a7cd0efb",
                "contentSha256": "sha256:f5969d6f6fcce3c73a5915cd08b4aeccf36ea9f1110756de697cd131a7cd0efb",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/ListBox.tsx",
                "upstreamPath": "starters/docs/src/ListBox.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ListBox.tsx",
                "upstreamSha256": "sha256:f4e146d9ea87e54853b9b03937f9bad480bbfff97b523b7659da9b30b3ac3537",
                "contentSha256": "sha256:f4e146d9ea87e54853b9b03937f9bad480bbfff97b523b7659da9b30b3ac3537",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Popover.css",
                "upstreamPath": "starters/docs/src/Popover.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.css",
                "upstreamSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "contentSha256": "sha256:f2b9d66e9dcd88842fbc688c8cda5b919fbe070c44d392ccddd861f265f98533",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Popover.tsx",
                "upstreamPath": "starters/docs/src/Popover.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Popover.tsx",
                "upstreamSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "contentSha256": "sha256:b43ff20fc28ddeb4b9807f1dfda2421d38538a1e9f712aff7844cffbf215dd21",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/ProgressCircle.tsx",
                "upstreamPath": "starters/docs/src/ProgressCircle.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ProgressCircle.tsx",
                "upstreamSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "contentSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Select.css",
                "upstreamPath": "starters/docs/src/Select.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Select.css",
                "upstreamSha256": "sha256:7b467084a7af12da99ca562eac6ceb819b3adbb027ab90ce0725226ad56080ef",
                "contentSha256": "sha256:7b467084a7af12da99ca562eac6ceb819b3adbb027ab90ce0725226ad56080ef",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/Select.tsx",
                "upstreamPath": "starters/docs/src/Select.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Select.tsx",
                "upstreamSha256": "sha256:969642e311a6b30ecf2669d550a3e513b3e046e95630af0840c16c745df44486",
                "contentSha256": "sha256:969642e311a6b30ecf2669d550a3e513b3e046e95630af0840c16c745df44486",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-select/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/Select.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "popover-listbox-select",
            "sourceHash": "sha256:3556c81cdebd936fff523a5de46f2922db649332241350a4a302f7e0236807b0",
            "contentHash": "sha256:3556c81cdebd936fff523a5de46f2922db649332241350a4a302f7e0236807b0",
            "structureHash": "sha256:8927e68381ee981155b01aceb5493bbb1c68084442906ab55e6b6c772c823d5f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-slider",
      "type": "registry:component",
      "title": "Slider",
      "description": "Selects one value or a numeric range with one or more keyboard-accessible thumbs.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/Slider.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/Slider.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/Slider.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/Slider.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-slider/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-slider/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "slider",
            "range",
            "multi-thumb",
            "keyboard",
            "touch"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-slider.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-slider/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-slider/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-slider/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-slider/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-slider/Slider.css",
                "upstreamPath": "starters/docs/src/Slider.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Slider.css",
                "upstreamSha256": "sha256:3f5961e535bb8955c97348536d67b45890ad322670c126019b02c690dfc89298",
                "contentSha256": "sha256:3f5961e535bb8955c97348536d67b45890ad322670c126019b02c690dfc89298",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-slider/Slider.tsx",
                "upstreamPath": "starters/docs/src/Slider.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Slider.tsx",
                "upstreamSha256": "sha256:dadb6907c1391b13e6a4a9576f05ab3108a50ac079fe3221879062555a6ad0b6",
                "contentSha256": "sha256:dadb6907c1391b13e6a4a9576f05ab3108a50ac079fe3221879062555a6ad0b6",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-slider/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-slider/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/Slider.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "multi-thumb-linear-slider",
            "sourceHash": "sha256:c3e36865b371b970ed764c2c77bb7ec9b258f4fe662355be23fe5b649d3824d3",
            "contentHash": "sha256:c3e36865b371b970ed764c2c77bb7ec9b258f4fe662355be23fe5b649d3824d3",
            "structureHash": "sha256:b8b878f30fdddbeee28d3a5d1ce662d70be99ea9de3ac69e8e1677165eb727de"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-table",
      "type": "registry:component",
      "title": "Table",
      "description": "Renders a sortable, resizable, selectable table with drag and incremental loading hooks.",
      "author": "Adobe",
      "dependencies": [
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Checkbox.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Checkbox.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Checkbox.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Checkbox.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/ProgressCircle.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/ProgressCircle.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Table.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Table.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/Table.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/Table.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-table/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-table/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "table",
            "sorting",
            "resizing",
            "selection",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-table.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-table/Checkbox.css",
                "upstreamPath": "starters/docs/src/Checkbox.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Checkbox.css",
                "upstreamSha256": "sha256:6c751dae8e523ceef38878fa1e25e82010f82eec17cf472e7913782d0e83e798",
                "contentSha256": "sha256:6c751dae8e523ceef38878fa1e25e82010f82eec17cf472e7913782d0e83e798",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/Checkbox.tsx",
                "upstreamPath": "starters/docs/src/Checkbox.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Checkbox.tsx",
                "upstreamSha256": "sha256:0c9b796c2757e6b1c642ac234bb2ff87c4637a88a8ac9105283b703fc4f123d3",
                "contentSha256": "sha256:0c9b796c2757e6b1c642ac234bb2ff87c4637a88a8ac9105283b703fc4f123d3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/ProgressCircle.tsx",
                "upstreamPath": "starters/docs/src/ProgressCircle.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/ProgressCircle.tsx",
                "upstreamSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "contentSha256": "sha256:d0dbe3a04838179884ad1c185448443b998a96636a24c0a73e86368eb339b758",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/Table.css",
                "upstreamPath": "starters/docs/src/Table.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Table.css",
                "upstreamSha256": "sha256:fda67dd5dc0c5d29670216cd68960f7b3bd85fc08bf2960525c4cf7bb63c5e25",
                "contentSha256": "sha256:fda67dd5dc0c5d29670216cd68960f7b3bd85fc08bf2960525c4cf7bb63c5e25",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/Table.tsx",
                "upstreamPath": "starters/docs/src/Table.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Table.tsx",
                "upstreamSha256": "sha256:35002fb92724e8c282fd7b5e532ddf746ddc9271ac2631265b51e6a497ef2e97",
                "contentSha256": "sha256:35002fb92724e8c282fd7b5e532ddf746ddc9271ac2631265b51e6a497ef2e97",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-table/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/Table.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "interactive-resizable-data-table",
            "sourceHash": "sha256:2d15763a61f14c05bd61a18d74e2d4e26b75f5e2e94919bd5a0cbddd9d136130",
            "contentHash": "sha256:2d15763a61f14c05bd61a18d74e2d4e26b75f5e2e94919bd5a0cbddd9d136130",
            "structureHash": "sha256:4386601ce016cd4fbdd3eae027c531a9750b646083ec7f396e9793b3609d9b01"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-tag-group",
      "type": "registry:component",
      "title": "Tag Group",
      "description": "Presents selectable or removable tags with collection keyboard navigation.",
      "author": "Adobe",
      "dependencies": [
        "lucide-react@0.517.0",
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/Content.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/Content.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/Content.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/Content.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/Form.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/Form.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/Form.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/Form.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/TagGroup.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/TagGroup.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/TagGroup.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/TagGroup.tsx"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-tag-group/utilities.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-tag-group/utilities.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "tags",
            "selection",
            "removal",
            "keyboard",
            "collection"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-tag-group.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-tag-group/Content.css",
                "upstreamPath": "starters/docs/src/Content.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.css",
                "upstreamSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "contentSha256": "sha256:fc2e5affafd334a1530a54fb822b6bd028267c4fe01c232b1087e57896f126ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-tag-group/Content.tsx",
                "upstreamPath": "starters/docs/src/Content.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Content.tsx",
                "upstreamSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "contentSha256": "sha256:660d711d075d85ed4dd3f309116a1f8c9c0a458e93cffd2cf0cc2affbfa62bf9",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-tag-group/Form.css",
                "upstreamPath": "starters/docs/src/Form.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.css",
                "upstreamSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "contentSha256": "sha256:fc575d1edd49ad0405f15ba54676d5caf7a0ef9cd55b583eb79a96b8042b9c85",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-tag-group/Form.tsx",
                "upstreamPath": "starters/docs/src/Form.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Form.tsx",
                "upstreamSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "contentSha256": "sha256:9144e3c6c1ad552c70e2d0fa3ba1820a089b5d4fbf56c8786e7b86b306221da3",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-tag-group/TagGroup.css",
                "upstreamPath": "starters/docs/src/TagGroup.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/TagGroup.css",
                "upstreamSha256": "sha256:b7271f9cf09a014292c5ed7777db4d55c7d06d5fd19274a90b9acafa6f75e87f",
                "contentSha256": "sha256:b7271f9cf09a014292c5ed7777db4d55c7d06d5fd19274a90b9acafa6f75e87f",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-tag-group/TagGroup.tsx",
                "upstreamPath": "starters/docs/src/TagGroup.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/TagGroup.tsx",
                "upstreamSha256": "sha256:8ff67f3afc7ef251ed217fbd8d0ffeca4c05b7cbd02f3897a77a632b9e21bc0a",
                "contentSha256": "sha256:8ff67f3afc7ef251ed217fbd8d0ffeca4c05b7cbd02f3897a77a632b9e21bc0a",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-tag-group/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-tag-group/utilities.css",
                "upstreamPath": "starters/docs/src/utilities.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/utilities.css",
                "upstreamSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "contentSha256": "sha256:fa6495b71bdd1be7e5c94d71f31bac43c98f6aac6ca01ae544ef90254dd82ca3",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/TagGroup.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "selectable-removable-tag-group",
            "sourceHash": "sha256:a77f81558ecc09c57835f03886e95d1be768c1ac2d605406013128ff88e15f9b",
            "contentHash": "sha256:a77f81558ecc09c57835f03886e95d1be768c1ac2d605406013128ff88e15f9b",
            "structureHash": "sha256:f4a52432e70a71b60f68369c8053d80bbf1ad36c7ea9e2670dec16b82ce5ad4f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-aria-toolbar",
      "type": "registry:component",
      "title": "Toolbar",
      "description": "Groups controls into a single keyboard navigation stop with synchronized orientation contexts.",
      "author": "Adobe",
      "dependencies": [
        "react-aria-components@1.19.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-toolbar/theme.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-toolbar/theme.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-toolbar/Toolbar.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-toolbar/Toolbar.css"
        },
        {
          "path": "registry/sources/react-aria-starters/components/react-aria-toolbar/Toolbar.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-aria-starters/react-aria-toolbar/Toolbar.tsx"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "toolbar",
            "controls",
            "orientation",
            "keyboard",
            "navigation"
          ],
          "renderer": "dom",
          "preview": "previews/react-aria-toolbar.tsx",
          "source": {
            "project": "React Aria Vanilla CSS starter",
            "repository": "https://github.com/adobe/react-spectrum",
            "revision": "1c84a49a1faf50b571c84e00bcf9c60b22ddd03e",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-aria-toolbar/theme.css",
                "upstreamPath": "starters/docs/src/theme.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/theme.css",
                "upstreamSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "contentSha256": "sha256:7bd4ad8a77fcf7f890dfb869d5dcebb6c71ea3da09459e5c500bfd9f11c3b6aa",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-toolbar/Toolbar.css",
                "upstreamPath": "starters/docs/src/Toolbar.css",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Toolbar.css",
                "upstreamSha256": "sha256:90f3da634601d563c6172713c6e8628f02f9177ac10d4f4e9a24cbc161697ee4",
                "contentSha256": "sha256:90f3da634601d563c6172713c6e8628f02f9177ac10d4f4e9a24cbc161697ee4",
                "changes": []
              },
              {
                "shippedPath": "components/react-aria-toolbar/Toolbar.tsx",
                "upstreamPath": "starters/docs/src/Toolbar.tsx",
                "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/starters/docs/src/Toolbar.tsx",
                "upstreamSha256": "sha256:133a28429503dbba66dc3240589bc0ee1c5c5504e9cef41f09b8998f396fe01c",
                "contentSha256": "sha256:133a28429503dbba66dc3240589bc0ee1c5c5504e9cef41f09b8998f396fe01c",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "starters/docs/src/Toolbar.tsx and its exact copied relative import closure",
            "copyright": [
              "Copyright 2019 Adobe"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/adobe/react-spectrum/blob/1c84a49a1faf50b571c84e00bcf9c60b22ddd03e/LICENSE",
              "sha256": "sha256:684be984c6146c60a5c9fa2f766a20a25fe7435bf3b93514ff98632afddda715",
              "localPath": "registry/sources/react-aria-starters/LICENSE"
            },
            "notices": [
              "registry/sources/react-aria-starters/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "roving-focus-control-toolbar",
            "sourceHash": "sha256:31c56c5f6bfa4ed9ab9517e61055f8372edca736161beac319ac9a457592664d",
            "contentHash": "sha256:31c56c5f6bfa4ed9ab9517e61055f8372edca736161beac319ac9a457592664d",
            "structureHash": "sha256:6b12b70f64c8a69f29cdd9eb7da43da0b03555d606f2f1a1d0fa9a7c3529efe5"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-compare-slider",
      "type": "registry:component",
      "title": "React Compare Slider",
      "description": "Compares two caller-provided React nodes with an accessible draggable divider in landscape or portrait orientation.",
      "author": "nerdyman",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/react-compare-slider.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-compare-slider/index.tsx"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/hooks.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-compare-slider/hooks.ts"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/types.ts"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/consts.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/consts.ts"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/register.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/register.ts"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/components/handle.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/components/handle.tsx"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/components/handle-root.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/components/handle-root.tsx"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/components/item.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/components/item.tsx"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/components/provider.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/components/provider.tsx"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/components/root.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-compare-slider/components/root.tsx"
        },
        {
          "path": "registry/sources/react-compare-slider/components/react-compare-slider/components/internal-hooks.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-compare-slider/components/internal-hooks.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "before-after",
            "comparison",
            "pointer",
            "keyboard",
            "responsive"
          ],
          "renderer": "dom",
          "preview": "previews/react-compare-slider.tsx",
          "source": {
            "project": "React Compare Slider",
            "repository": "https://github.com/nerdyman/react-compare-slider",
            "revision": "3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-compare-slider/react-compare-slider.tsx",
                "upstreamPath": "lib/src/react-compare-slider.tsx",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/react-compare-slider.tsx",
                "upstreamSha256": "sha256:e2d35b55097339195d0f663fc5e1e72e809bb9e6947b37b0c351663de4810937",
                "contentSha256": "sha256:e2d35b55097339195d0f663fc5e1e72e809bb9e6947b37b0c351663de4810937",
                "changes": []
              },
              {
                "shippedPath": "components/react-compare-slider/hooks.ts",
                "upstreamPath": "lib/src/hooks.ts",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/hooks.ts",
                "upstreamSha256": "sha256:1bc09038c594df3c66caddfe6e2499acfe1180ef3d3c5deb29acc33266b4aa34",
                "contentSha256": "sha256:79b449a65dc4fcc431056e2d1fd09cb762872a979846935a879cdfd2392709e3",
                "changes": [
                  "Prevented disabled handles from receiving programmatic click focus or responding to arrow keys.",
                  "Synchronized the default transition with reduced-motion preference after hydration and on preference changes."
                ]
              },
              {
                "shippedPath": "components/react-compare-slider/types.ts",
                "upstreamPath": "lib/src/types.ts",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/types.ts",
                "upstreamSha256": "sha256:a0b9d2edaaa46df034788eb2f65148515a38f96513da07c65d2ca3bf1ec27450",
                "contentSha256": "sha256:a0b9d2edaaa46df034788eb2f65148515a38f96513da07c65d2ca3bf1ec27450",
                "changes": []
              },
              {
                "shippedPath": "components/react-compare-slider/consts.ts",
                "upstreamPath": "lib/src/consts.ts",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/consts.ts",
                "upstreamSha256": "sha256:a6eb93db83bf1ed5e908610bef8f78dd8e1691fb7905ac7d0f7d823618b80c9d",
                "contentSha256": "sha256:a6eb93db83bf1ed5e908610bef8f78dd8e1691fb7905ac7d0f7d823618b80c9d",
                "changes": []
              },
              {
                "shippedPath": "components/react-compare-slider/register.ts",
                "upstreamPath": "lib/src/register.ts",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/register.ts",
                "upstreamSha256": "sha256:bf629e72afca103393b8dd298a6ab9ba3f3d365f54a0dba1e92ee296fb9cc8fb",
                "contentSha256": "sha256:2924caa9183eaeb68bc413096155dd450ec8e1c79f89988eb602eab05836b86c",
                "changes": [
                  "Removed console output from the graceful CSS.registerProperty failure path."
                ]
              },
              {
                "shippedPath": "components/react-compare-slider/components/handle.tsx",
                "upstreamPath": "lib/src/components/handle.tsx",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/components/handle.tsx",
                "upstreamSha256": "sha256:94b3c78579c5f818057ebc817fec93aa742f90e9aa78d7b34bb4fa98c9e96d42",
                "contentSha256": "sha256:94b3c78579c5f818057ebc817fec93aa742f90e9aa78d7b34bb4fa98c9e96d42",
                "changes": []
              },
              {
                "shippedPath": "components/react-compare-slider/components/handle-root.tsx",
                "upstreamPath": "lib/src/components/handle-root.tsx",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/components/handle-root.tsx",
                "upstreamSha256": "sha256:a808656542f3664289e7ff791c024a20516cd4659d550a60348fbbcfc398c35e",
                "contentSha256": "sha256:c0ff133f6c6d396b67bc4bd4bccbf49ee4e3d9ea7b05e0cd53f1e904f38a5609",
                "changes": [
                  "Preserved the browser focus indicator and removed disabled handles from sequential keyboard focus."
                ]
              },
              {
                "shippedPath": "components/react-compare-slider/components/item.tsx",
                "upstreamPath": "lib/src/components/item.tsx",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/components/item.tsx",
                "upstreamSha256": "sha256:6295abb64acd7a5efbfb53b774736b79580020303f87c8fa69a6cc115b90d739",
                "contentSha256": "sha256:6295abb64acd7a5efbfb53b774736b79580020303f87c8fa69a6cc115b90d739",
                "changes": []
              },
              {
                "shippedPath": "components/react-compare-slider/components/provider.tsx",
                "upstreamPath": "lib/src/components/provider.tsx",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/components/provider.tsx",
                "upstreamSha256": "sha256:6c3b79f85ce30e504818504026ca27d04797497aea042e1f3fabd7d03fdf807c",
                "contentSha256": "sha256:6c3b79f85ce30e504818504026ca27d04797497aea042e1f3fabd7d03fdf807c",
                "changes": []
              },
              {
                "shippedPath": "components/react-compare-slider/components/root.tsx",
                "upstreamPath": "lib/src/components/root.tsx",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/components/root.tsx",
                "upstreamSha256": "sha256:acfc68785e27ca29ef8280c7f55a4ec13125fef500f1a2b90d4bb724fb4c5d6e",
                "contentSha256": "sha256:321983bf23f0ed4bbca5bd9f2741329adc723a4f2ae6b374ff093efc579baecb",
                "changes": [
                  "Made the allowed browser pan axis orientation-aware so portrait sliders remain draggable on coarse pointers."
                ]
              },
              {
                "shippedPath": "components/react-compare-slider/components/internal-hooks.ts",
                "upstreamPath": "lib/src/components/internal-hooks.ts",
                "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/lib/src/components/internal-hooks.ts",
                "upstreamSha256": "sha256:fcb5082ff450273e7f385925be6ed55c88da2d0aa1eaa4f29ac2ac6dd978ef3d",
                "contentSha256": "sha256:fcb5082ff450273e7f385925be6ed55c88da2d0aa1eaa4f29ac2ac6dd978ef3d",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "lib/src/react-compare-slider.tsx, lib/src/hooks.ts, lib/src/types.ts, lib/src/consts.ts, lib/src/register.ts, and the required lib/src/components runtime closure",
            "copyright": [
              "Copyright 2019 nerdyman"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/nerdyman/react-compare-slider/blob/3f5cdfeca9e53dec5a77b14b2ec56aaf272717c7/LICENSE",
              "sha256": "sha256:e52e38ee861424688ab39956c3212f2e092307669837049f6a170a06abb76b98",
              "localPath": "registry/sources/react-compare-slider/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-compare-slider/hooks.ts",
              "change": "Guarded click-focus and keyboard movement when disabled, and synchronized the default transition with reduced-motion preference after hydration.",
              "reason": "Make the upstream aria-disabled state match actual focus and keyboard behavior while preserving its motion-safe default in server-rendered React hosts."
            },
            {
              "shippedPath": "components/react-compare-slider/register.ts",
              "change": "Removed the catch binding, noConsole suppression, and console.debug call while retaining graceful failure.",
              "reason": "Keep expected duplicate or unsupported custom-property registration failures silent during development and hot reload."
            },
            {
              "shippedPath": "components/react-compare-slider/components/handle-root.tsx",
              "change": "Removed the blanket outline reset and set disabled handles to tabIndex -1.",
              "reason": "Retain a visible native focus indicator and keep disabled sliders out of sequential focus order."
            },
            {
              "shippedPath": "components/react-compare-slider/components/root.tsx",
              "change": "Changed touch-action from pan-y to pan-x for portrait orientation while retaining pan-y for landscape.",
              "reason": "Allow the gesture axis to reach the slider while preserving page scrolling on the perpendicular axis."
            }
          ],
          "dedupe": {
            "family": "interactive-before-after-comparison",
            "sourceHash": "sha256:b7436b2d2c8f8e5ba84bdd7722e5306b6e0d1f045b285f8317bec748f017ac1d",
            "contentHash": "sha256:4f5f98b2665862542c7d6b1f83a89b6d9c40f5285496cdc26a53c4ebf286e224",
            "structureHash": "sha256:c3d75bcc9d0c7959416c67f154781bc9e1851d0d5f4e6f70cae55f9f146e26fc"
          },
          "verification": {
            "reviewedBy": "Codex live QA",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-dual-listbox",
      "type": "registry:component",
      "title": "Dual Listbox",
      "description": "Transfers caller-provided options between available and selected native listboxes with filtering and reordering.",
      "author": "Jake Zatecky",
      "dependencies": [
        "classnames@2.5.1",
        "lodash@4.18.1",
        "prop-types@15.8.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/index.js",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-dual-listbox/index.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/DualListBoxWrapper.jsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/DualListBoxWrapper.jsx"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/components/Action.jsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/components/Action.jsx"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/components/DualListBox.jsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/components/DualListBox.jsx"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/components/Filter.jsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/components/Filter.jsx"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/components/HiddenInput.jsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/components/HiddenInput.jsx"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/components/ListBox.jsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/components/ListBox.jsx"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/components/ObjectValueWrapper.jsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/components/ObjectValueWrapper.jsx"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/constants.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/constants.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/contexts.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/contexts.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/lang/default.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/lang/default.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/shapes/iconsShape.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/shapes/iconsShape.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/shapes/languageShape.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/shapes/languageShape.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/shapes/optgroupShape.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/shapes/optgroupShape.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/shapes/optionShape.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/shapes/optionShape.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/shapes/optionsShape.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/shapes/optionsShape.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/shapes/refShape.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/shapes/refShape.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/shapes/valueShape.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/shapes/valueShape.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/util/capitalizeFirstLetter.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/util/capitalizeFirstLetter.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/util/indexesOf.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/util/indexesOf.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/util/mergeRefs.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/util/mergeRefs.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/js/util/swapOptions.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-dual-listbox/js/util/swapOptions.js"
        },
        {
          "path": "registry/sources/react-dual-listbox/components/react-dual-listbox/react-dual-listbox.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-dual-listbox/react-dual-listbox.css"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "transfer-list",
            "selection",
            "filtering",
            "ordering",
            "form",
            "rtl"
          ],
          "renderer": "dom",
          "preview": "previews/react-dual-listbox.tsx",
          "source": {
            "project": "React Dual Listbox",
            "repository": "https://github.com/jakezatecky/react-dual-listbox",
            "revision": "a71657198ebd51971cea0161d41fd5304ebda885",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-dual-listbox/index.js",
                "upstreamPath": "src/index.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/index.js",
                "upstreamSha256": "sha256:45c7316b735a6cc70816db3366aa107bebffd3fac067f67ecac62e813a7f40ae",
                "contentSha256": "sha256:687438e84d18023db7704341b34ae0e22728c26ffd9d362f21faa562fee27861",
                "changes": [
                  "Added a React client boundary and changed the #js package import-map alias to a colocated relative import."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/DualListBoxWrapper.jsx",
                "upstreamPath": "src/js/DualListBoxWrapper.jsx",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/DualListBoxWrapper.jsx",
                "upstreamSha256": "sha256:e2c789fb4ac6a8c8a7ccd3f35e6df7376ea717c621a31fdc6e7165c8e1c2e244",
                "contentSha256": "sha256:1e55c4e572df401e92202e70b081f950a90316d0b289fed5a747f6cc8f5e1fb1",
                "changes": [
                  "Changed #js package import-map aliases to relative paths so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/components/Action.jsx",
                "upstreamPath": "src/js/components/Action.jsx",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/components/Action.jsx",
                "upstreamSha256": "sha256:c4f4469d156814e83acc4356681056f0dba12ade0992a04496dbdb54cfedf0ef",
                "contentSha256": "sha256:06d8e4c84f4b53b75a387d186b5ddad43b4a7a87cd6263069adde5ed0eaf356b",
                "changes": [
                  "Changed #js package import-map aliases to relative paths so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/components/DualListBox.jsx",
                "upstreamPath": "src/js/components/DualListBox.jsx",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/components/DualListBox.jsx",
                "upstreamSha256": "sha256:b33da4dce06af4539990b9b1aaf01efcffc62f754259d6668f996f0c9edcf218",
                "contentSha256": "sha256:ec74f75c1f3ba6252ad36118aad2496f9ed45a7382019441749caf46cb728e1a",
                "changes": [
                  "Changed #js package import-map aliases to relative paths so the copied closure resolves without the upstream package.json.",
                  "Changed the default iconsClass from Font Awesome 6 to the upstream native icon mode so the default has no undeclared font requirement."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/components/Filter.jsx",
                "upstreamPath": "src/js/components/Filter.jsx",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/components/Filter.jsx",
                "upstreamSha256": "sha256:8511523cc79c36df9719c9cb83988785e940caa36a34a5ee2e721a46354a3076",
                "contentSha256": "sha256:293287f51a67210b63927e5af1af1daf24f7ffbb504842003ff73c2f1ea562cc",
                "changes": [
                  "Changed the #js package import-map alias to a relative path so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/components/HiddenInput.jsx",
                "upstreamPath": "src/js/components/HiddenInput.jsx",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/components/HiddenInput.jsx",
                "upstreamSha256": "sha256:139d91671ecfee4aaf158b532d97e167581c9f42da1429f650ebf145c5609fad",
                "contentSha256": "sha256:a47ce52643063b6057ffecf4011e4a7eb2ef0634f127188d35d1df14e4a0212b",
                "changes": [
                  "Changed #js package import-map aliases to relative paths so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/components/ListBox.jsx",
                "upstreamPath": "src/js/components/ListBox.jsx",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/components/ListBox.jsx",
                "upstreamSha256": "sha256:bd3ef4afee68e43c4b7ba71e8997065b7ca667416a031715d7539131aa208a07",
                "contentSha256": "sha256:6444065be6861741278d9343e632f47fc42383f8c9da9f4eebb3511672210efe",
                "changes": [
                  "Changed #js package import-map aliases to relative paths so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/components/ObjectValueWrapper.jsx",
                "upstreamPath": "src/js/components/ObjectValueWrapper.jsx",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/components/ObjectValueWrapper.jsx",
                "upstreamSha256": "sha256:7bcc6ff4854e9c8059228f09754beacf40f8acce183325f26ad4960ae61bb233",
                "contentSha256": "sha256:585f058e032d2e93ca8e6943b35ddda4932a0fe545bb3fbf44eafa712a8f8066",
                "changes": [
                  "Changed the #js package import-map alias to a relative path so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/constants.js",
                "upstreamPath": "src/js/constants.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/constants.js",
                "upstreamSha256": "sha256:127cebfe3e85e8fd10f48a76f3067e0d5c364d825f724cbe7a79492b1c1c6452",
                "contentSha256": "sha256:127cebfe3e85e8fd10f48a76f3067e0d5c364d825f724cbe7a79492b1c1c6452",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/contexts.js",
                "upstreamPath": "src/js/contexts.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/contexts.js",
                "upstreamSha256": "sha256:8677cb390539f5a6d8262cbf57e64e2fc908c3fbcc3b8cbeda8a9c0504e00e3f",
                "contentSha256": "sha256:8677cb390539f5a6d8262cbf57e64e2fc908c3fbcc3b8cbeda8a9c0504e00e3f",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/lang/default.js",
                "upstreamPath": "src/js/lang/default.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/lang/default.js",
                "upstreamSha256": "sha256:5e069b31cad9f9e783cdb51324bfd87a465b2b5edf54b87f6c352efc41140e4c",
                "contentSha256": "sha256:5e069b31cad9f9e783cdb51324bfd87a465b2b5edf54b87f6c352efc41140e4c",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/shapes/iconsShape.js",
                "upstreamPath": "src/js/shapes/iconsShape.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/shapes/iconsShape.js",
                "upstreamSha256": "sha256:9dd3aca12f3ba5960c57a00d20ef8ded927a1da3dc307b878f3ef20a89b185b9",
                "contentSha256": "sha256:9dd3aca12f3ba5960c57a00d20ef8ded927a1da3dc307b878f3ef20a89b185b9",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/shapes/languageShape.js",
                "upstreamPath": "src/js/shapes/languageShape.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/shapes/languageShape.js",
                "upstreamSha256": "sha256:31c338ba09cdca36492013700c4da8bc49cd147ae28800dab4892f77adbd5da0",
                "contentSha256": "sha256:31c338ba09cdca36492013700c4da8bc49cd147ae28800dab4892f77adbd5da0",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/shapes/optgroupShape.js",
                "upstreamPath": "src/js/shapes/optgroupShape.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/shapes/optgroupShape.js",
                "upstreamSha256": "sha256:4c95d07a3624a61e9bfd63e5b7f60da5da00e0515a5a730e0a7551b6ba49592e",
                "contentSha256": "sha256:39f9737196715b33dbe4cd5a9060ea8e85441299c699fad69471c0c265c75c3d",
                "changes": [
                  "Changed the #js package import-map alias to a relative path so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/shapes/optionShape.js",
                "upstreamPath": "src/js/shapes/optionShape.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/shapes/optionShape.js",
                "upstreamSha256": "sha256:4b0a08b07fb31c8ea8cdb973ad7c3a6470465eabf2cf2deaebf83d5d971ac98e",
                "contentSha256": "sha256:4b0a08b07fb31c8ea8cdb973ad7c3a6470465eabf2cf2deaebf83d5d971ac98e",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/shapes/optionsShape.js",
                "upstreamPath": "src/js/shapes/optionsShape.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/shapes/optionsShape.js",
                "upstreamSha256": "sha256:7be82a1d76d75ff7a676a65db113322b444fe4dfb19bb6bf1076a0dbb61efd0a",
                "contentSha256": "sha256:350c3b194b2dd95bcb5aa4f8b5325956f4695dc4c02b25d51aa817342a75f5be",
                "changes": [
                  "Changed #js package import-map aliases to relative paths so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/shapes/refShape.js",
                "upstreamPath": "src/js/shapes/refShape.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/shapes/refShape.js",
                "upstreamSha256": "sha256:9e9a0abc2c660fbc88096a911b201329837a158338724df533c271a1104634ed",
                "contentSha256": "sha256:9e9a0abc2c660fbc88096a911b201329837a158338724df533c271a1104634ed",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/shapes/valueShape.js",
                "upstreamPath": "src/js/shapes/valueShape.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/shapes/valueShape.js",
                "upstreamSha256": "sha256:991093384ac9191eebbd58cea1714d306521caaba9330395a345c0dfe4f1f36b",
                "contentSha256": "sha256:cec970eb10f40a93ca0a79c5fe2d9cb53c7c6e2345264255fd884deb831a791d",
                "changes": [
                  "Changed #js package import-map aliases to relative paths so the copied closure resolves without the upstream package.json."
                ]
              },
              {
                "shippedPath": "components/react-dual-listbox/js/util/capitalizeFirstLetter.js",
                "upstreamPath": "src/js/util/capitalizeFirstLetter.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/util/capitalizeFirstLetter.js",
                "upstreamSha256": "sha256:479bbd355948ff1b827d353b88943da815c1b20824dfdcafae16efc3e6692aca",
                "contentSha256": "sha256:479bbd355948ff1b827d353b88943da815c1b20824dfdcafae16efc3e6692aca",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/util/indexesOf.js",
                "upstreamPath": "src/js/util/indexesOf.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/util/indexesOf.js",
                "upstreamSha256": "sha256:3f45b9cee27389f47ddca1aa0100808a36ed0f1c71211684fe5495b998e7d28e",
                "contentSha256": "sha256:3f45b9cee27389f47ddca1aa0100808a36ed0f1c71211684fe5495b998e7d28e",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/util/mergeRefs.js",
                "upstreamPath": "src/js/util/mergeRefs.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/util/mergeRefs.js",
                "upstreamSha256": "sha256:28c0e090b51ec0e6b48de8bcd0e040e8f9e38e0c30f3c4c479d47d1783e3ca99",
                "contentSha256": "sha256:28c0e090b51ec0e6b48de8bcd0e040e8f9e38e0c30f3c4c479d47d1783e3ca99",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/js/util/swapOptions.js",
                "upstreamPath": "src/js/util/swapOptions.js",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/js/util/swapOptions.js",
                "upstreamSha256": "sha256:881cb0ef0969251ea51415b3af9003dbc2aa5d3830ccb9b6f5d6d5a6b5480931",
                "contentSha256": "sha256:881cb0ef0969251ea51415b3af9003dbc2aa5d3830ccb9b6f5d6d5a6b5480931",
                "changes": []
              },
              {
                "shippedPath": "components/react-dual-listbox/react-dual-listbox.css",
                "upstreamPath": "src/scss/react-dual-listbox.scss",
                "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/src/scss/react-dual-listbox.scss",
                "upstreamSha256": "sha256:c5c00c6d78fb552751d45723fc83845a8aaaf92e32b6ff737e6f00115d367548",
                "contentSha256": "sha256:8d6b3cf2b5a6e1d86da367a48d2a636af6741436043fd1d33fa48ae0690290d2",
                "changes": [
                  "Compiled the upstream SCSS to plain CSS using the upstream 6.1.0 package output and removed its inline source map.",
                  "Added max-width and min-width guards to prevent flex and select overflow at narrow widths and zoom.",
                  "Added 44 px action-button minimums and explicit focus-visible outlines."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/index.js, src/js, and src/scss/react-dual-listbox.scss",
            "copyright": [
              "Copyright (c) 2017 Jake Zatecky"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.txt",
              "permalink": "https://github.com/jakezatecky/react-dual-listbox/blob/a71657198ebd51971cea0161d41fd5304ebda885/LICENSE.txt",
              "sha256": "sha256:e80770c6f1a0544bd0d5427790f8572629d2120adebf890bb3a7f1a0711b521f",
              "localPath": "registry/sources/react-dual-listbox/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-dual-listbox/index.js",
              "change": "Added a use client directive and changed the #js entry import to ./js/DualListBoxWrapper.jsx.",
              "reason": "Make the hook-based component a portable React client entry without copying the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/DualListBoxWrapper.jsx",
              "change": "Changed #js imports to colocated relative imports.",
              "reason": "Resolve copied support files without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/components/Action.jsx",
              "change": "Changed #js imports to colocated relative imports.",
              "reason": "Resolve copied support files without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/components/DualListBox.jsx",
              "change": "Changed #js imports to relative imports and made upstream native icons the default.",
              "reason": "Resolve the copied closure without a package import map and avoid an undeclared Font Awesome font requirement."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/components/Filter.jsx",
              "change": "Changed the #js context import to a relative import.",
              "reason": "Resolve the copied support file without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/components/HiddenInput.jsx",
              "change": "Changed #js imports to colocated relative imports.",
              "reason": "Resolve copied support files without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/components/ListBox.jsx",
              "change": "Changed #js imports to colocated relative imports.",
              "reason": "Resolve copied support files without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/components/ObjectValueWrapper.jsx",
              "change": "Changed the #js component import to a relative import.",
              "reason": "Resolve the copied support file without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/shapes/optgroupShape.js",
              "change": "Changed the #js shape import to a relative import.",
              "reason": "Resolve the copied support file without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/shapes/optionsShape.js",
              "change": "Changed #js shape imports to relative imports.",
              "reason": "Resolve copied support files without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/js/shapes/valueShape.js",
              "change": "Changed #js shape imports to relative imports.",
              "reason": "Resolve copied support files without the upstream package.json import map."
            },
            {
              "shippedPath": "components/react-dual-listbox/react-dual-listbox.css",
              "change": "Compiled the upstream SCSS to plain CSS, removed the inline source map, and added narrow-width, 44 px target, and focus-visible safeguards.",
              "reason": "Ship the full visual skin without a Sass build dependency while meeting portability, responsive, touch-target, and focus requirements."
            }
          ],
          "dedupe": {
            "family": "transfer-list",
            "sourceHash": "sha256:820259c717820f26da12177dc974d1986a1d04b4c690b8fe6d445efd0a470806",
            "contentHash": "sha256:4dd366fe02e9b7c535ef0e38b6e84a5e0599d6b120781ee0f3406f60b29fcf03",
            "structureHash": "sha256:e68eb194f9fd816d826d0177a6541b7815bea2f10adbd2f89eaa7471c373a0cf"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-error-boundary",
      "type": "registry:component",
      "title": "React Error Boundary",
      "description": "Catches descendant React render failures and exposes fallback and reset APIs for recovery.",
      "author": "Brian Vaughn",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/index.ts",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-error-boundary/index.ts"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/components/ErrorBoundary.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-error-boundary/components/ErrorBoundary.tsx"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/context/ErrorBoundaryContext.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-error-boundary/context/ErrorBoundaryContext.ts"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/hooks/useErrorBoundary.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-error-boundary/hooks/useErrorBoundary.ts"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-error-boundary/types.ts"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/utils/assertErrorBoundaryContext.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-error-boundary/utils/assertErrorBoundaryContext.ts"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/utils/getErrorMessage.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-error-boundary/utils/getErrorMessage.ts"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/utils/isErrorBoundaryContext.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-error-boundary/utils/isErrorBoundaryContext.ts"
        },
        {
          "path": "registry/sources/react-error-boundary/components/react-error-boundary/utils/withErrorBoundary.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-error-boundary/utils/withErrorBoundary.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "error-boundary",
            "render-errors",
            "fallback",
            "recovery",
            "reset"
          ],
          "renderer": "dom",
          "preview": "previews/react-error-boundary.tsx",
          "source": {
            "project": "React Error Boundary",
            "repository": "https://github.com/bvaughn/react-error-boundary",
            "revision": "1ba91f439ecd500f72464ab35feb29545195c999",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-error-boundary/index.ts",
                "upstreamPath": "lib/index.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/index.ts",
                "upstreamSha256": "sha256:1c59e1b6149ae840e22cca2eb0bbb1dcca748f1b7845ae326f514e4e65bb445f",
                "contentSha256": "sha256:1c59e1b6149ae840e22cca2eb0bbb1dcca748f1b7845ae326f514e4e65bb445f",
                "changes": []
              },
              {
                "shippedPath": "components/react-error-boundary/components/ErrorBoundary.tsx",
                "upstreamPath": "lib/components/ErrorBoundary.tsx",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/components/ErrorBoundary.tsx",
                "upstreamSha256": "sha256:34056bbafe47862ba8d8c74e04dacbb2f3f02c399cfc4ae7db9630b17d659409",
                "contentSha256": "sha256:70ed1236d3e8fa5e3c3ed1d226dd0f464db9ebefc743ad36713a9a921a717ef6",
                "changes": [
                  "Replaced import.meta.env.DEV with process.env.NODE_ENV !== \"production\" so the copied client source compiles in the Next host."
                ]
              },
              {
                "shippedPath": "components/react-error-boundary/context/ErrorBoundaryContext.ts",
                "upstreamPath": "lib/context/ErrorBoundaryContext.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/context/ErrorBoundaryContext.ts",
                "upstreamSha256": "sha256:3c006729046390b20a22884a383da53e7b1a9b71cffe31cdf0bb13704f07a462",
                "contentSha256": "sha256:3c006729046390b20a22884a383da53e7b1a9b71cffe31cdf0bb13704f07a462",
                "changes": []
              },
              {
                "shippedPath": "components/react-error-boundary/hooks/useErrorBoundary.ts",
                "upstreamPath": "lib/hooks/useErrorBoundary.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/hooks/useErrorBoundary.ts",
                "upstreamSha256": "sha256:41e80b47bac2f1ba736539e93dfcd24233b62d99733d1b10699bccdbfa43aa34",
                "contentSha256": "sha256:41e80b47bac2f1ba736539e93dfcd24233b62d99733d1b10699bccdbfa43aa34",
                "changes": []
              },
              {
                "shippedPath": "components/react-error-boundary/types.ts",
                "upstreamPath": "lib/types.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/types.ts",
                "upstreamSha256": "sha256:7d32c9c5d18354c4be70806f116ea5787f089bae8c0ecd8ff9fd2ed33a0dd35d",
                "contentSha256": "sha256:7d32c9c5d18354c4be70806f116ea5787f089bae8c0ecd8ff9fd2ed33a0dd35d",
                "changes": []
              },
              {
                "shippedPath": "components/react-error-boundary/utils/assertErrorBoundaryContext.ts",
                "upstreamPath": "lib/utils/assertErrorBoundaryContext.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/utils/assertErrorBoundaryContext.ts",
                "upstreamSha256": "sha256:c336eca50417419661288c0e99c7937596c649022195c134dc95e3986a3d8b32",
                "contentSha256": "sha256:c336eca50417419661288c0e99c7937596c649022195c134dc95e3986a3d8b32",
                "changes": []
              },
              {
                "shippedPath": "components/react-error-boundary/utils/getErrorMessage.ts",
                "upstreamPath": "lib/utils/getErrorMessage.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/utils/getErrorMessage.ts",
                "upstreamSha256": "sha256:29822a3d17b159a41e021c08826a5f13a71724d74ccb2b36951b7859b11815e6",
                "contentSha256": "sha256:29822a3d17b159a41e021c08826a5f13a71724d74ccb2b36951b7859b11815e6",
                "changes": []
              },
              {
                "shippedPath": "components/react-error-boundary/utils/isErrorBoundaryContext.ts",
                "upstreamPath": "lib/utils/isErrorBoundaryContext.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/utils/isErrorBoundaryContext.ts",
                "upstreamSha256": "sha256:17311e0994e8f382711ef78aa6cb09355862af2adc5f4768dfc5ad0e1ea1ca0d",
                "contentSha256": "sha256:17311e0994e8f382711ef78aa6cb09355862af2adc5f4768dfc5ad0e1ea1ca0d",
                "changes": []
              },
              {
                "shippedPath": "components/react-error-boundary/utils/withErrorBoundary.ts",
                "upstreamPath": "lib/utils/withErrorBoundary.ts",
                "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/lib/utils/withErrorBoundary.ts",
                "upstreamSha256": "sha256:13e93f03267b064bf4bdad9106011cd5e87b66daf9be3128bdff8d681968e872",
                "contentSha256": "sha256:13e93f03267b064bf4bdad9106011cd5e87b66daf9be3128bdff8d681968e872",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "lib/index.ts, lib/components/ErrorBoundary.tsx, lib/context/ErrorBoundaryContext.ts, lib/hooks/useErrorBoundary.ts, lib/types.ts, lib/utils/assertErrorBoundaryContext.ts, lib/utils/getErrorMessage.ts, lib/utils/isErrorBoundaryContext.ts, and lib/utils/withErrorBoundary.ts",
            "copyright": [
              "Copyright (c) 2020 Brian Vaughn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/bvaughn/react-error-boundary/blob/1ba91f439ecd500f72464ab35feb29545195c999/LICENSE",
              "sha256": "sha256:2cdb493db15b320c5787535f9dadd37b13cae6fe0a1cdd7849ccfbce70c389fd",
              "localPath": "registry/sources/react-error-boundary/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-error-boundary/components/ErrorBoundary.tsx",
              "change": "Replaced import.meta.env.DEV with process.env.NODE_ENV !== \"production\".",
              "reason": "Use the development-mode convention supported by the Next host instead of Vite-specific import metadata."
            }
          ],
          "dedupe": {
            "family": "react-render-error-boundary",
            "sourceHash": "sha256:8033760eef9af26b14da2b277b9845379d1fb4187cb4d59be83c4acd1200f942",
            "contentHash": "sha256:c13297095871007408a89a8ecee2f19f7443438b319e99ea8d6eaf6e97b73d43",
            "structureHash": "sha256:34da5bf44ae2a976716f207aff425577c10aa999b5af1369380c09f32507499b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-photo-album-columns",
      "type": "registry:component",
      "title": "React Photo Album Columns",
      "description": "Partitions responsive photos into height-balanced columns while preserving source order.",
      "author": "Igor Danchenko",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-photo-album/src/client/columns/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/columns/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/columns/ColumnsPhotoAlbum.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-photo-album/src/client/columns/ColumnsPhotoAlbum.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/columns/resolveColumnsProps.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/columns/resolveColumnsProps.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/layouts/columns/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/layouts/columns/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/layouts/columns/columns.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/layouts/columns/columns.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/layouts/columns/partition.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/layouts/columns/partition.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/columns.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/columns.css"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/modules/columns.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/modules/columns.css"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/useArray.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/useArray.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/useContainerWidth.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/useContainerWidth.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/Component.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/Component.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/PhotoComponent.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/PhotoComponent.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/StaticPhotoAlbum.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/StaticPhotoAlbum.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/types.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/clsx.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/clsx.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/css.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/css.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/ratio.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/ratio.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/responsive.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/responsive.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/round.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/round.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/sizes.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/sizes.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/modules/common.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/modules/common.css"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "gallery",
            "photos",
            "columns",
            "balanced",
            "responsive"
          ],
          "renderer": "dom",
          "preview": "previews/react-photo-album-columns.tsx",
          "source": {
            "project": "React Photo Album",
            "repository": "https://github.com/igordanchenko/react-photo-album",
            "revision": "1b889f47ec271144c16f32f2a7219ae6c53358c9",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "src/client/columns/index.ts",
                "upstreamPath": "src/client/columns/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/columns/index.ts",
                "upstreamSha256": "sha256:59d2614438056928f15e0754208d5c45f6610b31d1854d95ec418103a4968ff2",
                "contentSha256": "sha256:59d2614438056928f15e0754208d5c45f6610b31d1854d95ec418103a4968ff2",
                "changes": []
              },
              {
                "shippedPath": "src/client/columns/ColumnsPhotoAlbum.tsx",
                "upstreamPath": "src/client/columns/ColumnsPhotoAlbum.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/columns/ColumnsPhotoAlbum.tsx",
                "upstreamSha256": "sha256:1a31133e014bed117af0ccaad4d6d013d75a7e40e0ed7f80405dd93f568756be",
                "contentSha256": "sha256:1a31133e014bed117af0ccaad4d6d013d75a7e40e0ed7f80405dd93f568756be",
                "changes": []
              },
              {
                "shippedPath": "src/client/columns/resolveColumnsProps.ts",
                "upstreamPath": "src/client/columns/resolveColumnsProps.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/columns/resolveColumnsProps.ts",
                "upstreamSha256": "sha256:0058dca323fc9e73ee7b4c19c2a443e987de0db4fc8099cd958dd35b260f2aed",
                "contentSha256": "sha256:0058dca323fc9e73ee7b4c19c2a443e987de0db4fc8099cd958dd35b260f2aed",
                "changes": []
              },
              {
                "shippedPath": "src/layouts/columns/index.ts",
                "upstreamPath": "src/layouts/columns/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/layouts/columns/index.ts",
                "upstreamSha256": "sha256:4a4d2b4f72732d68068a6df37b4d9292d4b1470a3436fb4537c5549248e18351",
                "contentSha256": "sha256:4a4d2b4f72732d68068a6df37b4d9292d4b1470a3436fb4537c5549248e18351",
                "changes": []
              },
              {
                "shippedPath": "src/layouts/columns/columns.ts",
                "upstreamPath": "src/layouts/columns/columns.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/layouts/columns/columns.ts",
                "upstreamSha256": "sha256:3a843302f6a5168b03b68fd83258a029e1b39800fec6d93b80d55a9eef196b13",
                "contentSha256": "sha256:3a843302f6a5168b03b68fd83258a029e1b39800fec6d93b80d55a9eef196b13",
                "changes": []
              },
              {
                "shippedPath": "src/layouts/columns/partition.ts",
                "upstreamPath": "src/layouts/columns/partition.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/layouts/columns/partition.ts",
                "upstreamSha256": "sha256:c9e30c995c3047f115a4c79f80bdeeb3c7ca25f90043d4457c2841e741c82a67",
                "contentSha256": "sha256:c9e30c995c3047f115a4c79f80bdeeb3c7ca25f90043d4457c2841e741c82a67",
                "changes": []
              },
              {
                "shippedPath": "src/styles/columns.css",
                "upstreamPath": "src/styles/columns.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/columns.css",
                "upstreamSha256": "sha256:3a30d43f6ece805e1e0b69d14809f52c7cc303488c5ee72d7ffe4469ed24e69b",
                "contentSha256": "sha256:3a30d43f6ece805e1e0b69d14809f52c7cc303488c5ee72d7ffe4469ed24e69b",
                "changes": []
              },
              {
                "shippedPath": "src/styles/modules/columns.css",
                "upstreamPath": "src/styles/modules/columns.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/modules/columns.css",
                "upstreamSha256": "sha256:3c4aa9bf40867224c87046f8a64ffa97a179a7da0b57a2d8726dc1a6d3422a24",
                "contentSha256": "sha256:3c4aa9bf40867224c87046f8a64ffa97a179a7da0b57a2d8726dc1a6d3422a24",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/index.ts",
                "upstreamPath": "src/client/hooks/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/index.ts",
                "upstreamSha256": "sha256:90bc09a373a94829a9fad2cd60a4230f31516973c36c53d42c14135f900138da",
                "contentSha256": "sha256:90bc09a373a94829a9fad2cd60a4230f31516973c36c53d42c14135f900138da",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/useArray.ts",
                "upstreamPath": "src/client/hooks/useArray.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/useArray.ts",
                "upstreamSha256": "sha256:d188bf2b9dc9609c013c88eb76e8395fdd0c9ae149327a8037e033e5f5b39213",
                "contentSha256": "sha256:d188bf2b9dc9609c013c88eb76e8395fdd0c9ae149327a8037e033e5f5b39213",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/useContainerWidth.ts",
                "upstreamPath": "src/client/hooks/useContainerWidth.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/useContainerWidth.ts",
                "upstreamSha256": "sha256:022bc5831c32e99c46175dd1d1863f70ad0c4f7a3448a9a1afc5f36fbaa952c4",
                "contentSha256": "sha256:022bc5831c32e99c46175dd1d1863f70ad0c4f7a3448a9a1afc5f36fbaa952c4",
                "changes": []
              },
              {
                "shippedPath": "src/static/index.ts",
                "upstreamPath": "src/static/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/index.ts",
                "upstreamSha256": "sha256:829cd68f212860c52abb3eab8c5618d944aac68e039c6ff5eb63fcbe9b7dd5bf",
                "contentSha256": "sha256:829cd68f212860c52abb3eab8c5618d944aac68e039c6ff5eb63fcbe9b7dd5bf",
                "changes": []
              },
              {
                "shippedPath": "src/static/Component.tsx",
                "upstreamPath": "src/static/Component.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/Component.tsx",
                "upstreamSha256": "sha256:5821692e35c52ded961640228e935c6df02c8e4ec32fe695a86804e11757bef8",
                "contentSha256": "sha256:b0b2dfe83b958fc7bead6e3141c404ecbd71bf8aef928f99efdc99b82489a981",
                "changes": [
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "src/static/PhotoComponent.tsx",
                "upstreamPath": "src/static/PhotoComponent.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/PhotoComponent.tsx",
                "upstreamSha256": "sha256:0eb4a79298fca5161687bba06e475a9cddd95edd0ecceb221c9b59a74de03115",
                "contentSha256": "sha256:0eb4a79298fca5161687bba06e475a9cddd95edd0ecceb221c9b59a74de03115",
                "changes": []
              },
              {
                "shippedPath": "src/static/StaticPhotoAlbum.tsx",
                "upstreamPath": "src/static/StaticPhotoAlbum.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/StaticPhotoAlbum.tsx",
                "upstreamSha256": "sha256:b894455fc5a026963127c1f40ce40c0d3a32e4401dc134741cdf263a9a2dfc26",
                "contentSha256": "sha256:b894455fc5a026963127c1f40ce40c0d3a32e4401dc134741cdf263a9a2dfc26",
                "changes": []
              },
              {
                "shippedPath": "src/types.ts",
                "upstreamPath": "src/types.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/types.ts",
                "upstreamSha256": "sha256:5c13988dde362192eb67c62717443a2ee16e8dc333dfdc6f3cc079294e6ad605",
                "contentSha256": "sha256:5c13988dde362192eb67c62717443a2ee16e8dc333dfdc6f3cc079294e6ad605",
                "changes": []
              },
              {
                "shippedPath": "src/utils/index.ts",
                "upstreamPath": "src/utils/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/index.ts",
                "upstreamSha256": "sha256:b66eec1415979c49b8a19b94abb2658199858fdb46b58b73e6051104ee2fcf16",
                "contentSha256": "sha256:b66eec1415979c49b8a19b94abb2658199858fdb46b58b73e6051104ee2fcf16",
                "changes": []
              },
              {
                "shippedPath": "src/utils/clsx.ts",
                "upstreamPath": "src/utils/clsx.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/clsx.ts",
                "upstreamSha256": "sha256:67e21ef708815bef7ec830e54a8120d6ec3f8e8dd5c2a27422622b3ff46efe53",
                "contentSha256": "sha256:67e21ef708815bef7ec830e54a8120d6ec3f8e8dd5c2a27422622b3ff46efe53",
                "changes": []
              },
              {
                "shippedPath": "src/utils/css.ts",
                "upstreamPath": "src/utils/css.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/css.ts",
                "upstreamSha256": "sha256:08898fb88066e779fbd46b4acdb1ea939e6eaf5f7472425a0ad491fc739652ea",
                "contentSha256": "sha256:08898fb88066e779fbd46b4acdb1ea939e6eaf5f7472425a0ad491fc739652ea",
                "changes": []
              },
              {
                "shippedPath": "src/utils/ratio.ts",
                "upstreamPath": "src/utils/ratio.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/ratio.ts",
                "upstreamSha256": "sha256:97d24fe28b39894897124466a9a51c10ebbefb19c3af408366d6224da7675287",
                "contentSha256": "sha256:97d24fe28b39894897124466a9a51c10ebbefb19c3af408366d6224da7675287",
                "changes": []
              },
              {
                "shippedPath": "src/utils/responsive.ts",
                "upstreamPath": "src/utils/responsive.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/responsive.ts",
                "upstreamSha256": "sha256:15fa3b60dbcb7cb7824cffec04724b1340a44d3e36576b06b27312794628af3d",
                "contentSha256": "sha256:15fa3b60dbcb7cb7824cffec04724b1340a44d3e36576b06b27312794628af3d",
                "changes": []
              },
              {
                "shippedPath": "src/utils/round.ts",
                "upstreamPath": "src/utils/round.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/round.ts",
                "upstreamSha256": "sha256:d18922dfd157f598a2228bb38e0bd281e95bba0dd2910a9709ed0393ae222deb",
                "contentSha256": "sha256:d18922dfd157f598a2228bb38e0bd281e95bba0dd2910a9709ed0393ae222deb",
                "changes": []
              },
              {
                "shippedPath": "src/utils/sizes.ts",
                "upstreamPath": "src/utils/sizes.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/sizes.ts",
                "upstreamSha256": "sha256:d8bbcdd8289c5992d8cfd487fb5357f277ca9e9eb16240adf8a5049feb15c956",
                "contentSha256": "sha256:d8bbcdd8289c5992d8cfd487fb5357f277ca9e9eb16240adf8a5049feb15c956",
                "changes": []
              },
              {
                "shippedPath": "src/styles/modules/common.css",
                "upstreamPath": "src/styles/modules/common.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/modules/common.css",
                "upstreamSha256": "sha256:973beb318e5aed84874a511f8efb643228ce8ae681c3f214af23ffc6c0744cf1",
                "contentSha256": "sha256:973beb318e5aed84874a511f8efb643228ce8ae681c3f214af23ffc6c0744cf1",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "All files declared in meta.tasteblocks.source.files.",
            "copyright": [
              "Copyright (c) 2021 Igor Danchenko"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/LICENSE",
              "sha256": "sha256:fbeb795c330e794403a0fd14cf82083663dfc9ef23732e224a1545aef08b7a2a",
              "localPath": "registry/sources/react-photo-album/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "src/static/Component.tsx",
              "change": "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "balanced-photo-columns",
            "sourceHash": "sha256:d378ab8801c99ad61f3eff9cb921b2626fdbd3bc0a24bb2444b7d1abb78f1051",
            "contentHash": "sha256:8381549965c6de956fad893dc1ff8918fd0bd37e211464b4205637474be380a5",
            "structureHash": "sha256:c542cf90663029757273563af8c12a3ecba471c201fdcc3260179ccd94c75da6"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-photo-album-masonry",
      "type": "registry:component",
      "title": "React Photo Album Masonry",
      "description": "Places responsive photos into the current shortest column for a compact masonry flow.",
      "author": "Igor Danchenko",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-photo-album/src/client/masonry/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/masonry/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/masonry/MasonryPhotoAlbum.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-photo-album/src/client/masonry/MasonryPhotoAlbum.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/masonry/resolveMasonryProps.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/masonry/resolveMasonryProps.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/layouts/masonry/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/layouts/masonry/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/layouts/masonry/masonry.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/layouts/masonry/masonry.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/masonry.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/masonry.css"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/modules/masonry.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/modules/masonry.css"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/useArray.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/useArray.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/useContainerWidth.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/useContainerWidth.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/Component.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/Component.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/PhotoComponent.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/PhotoComponent.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/StaticPhotoAlbum.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/StaticPhotoAlbum.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/types.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/clsx.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/clsx.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/css.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/css.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/ratio.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/ratio.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/responsive.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/responsive.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/round.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/round.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/sizes.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/sizes.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/modules/common.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/modules/common.css"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "gallery",
            "photos",
            "masonry",
            "responsive"
          ],
          "renderer": "dom",
          "preview": "previews/react-photo-album-masonry.tsx",
          "source": {
            "project": "React Photo Album",
            "repository": "https://github.com/igordanchenko/react-photo-album",
            "revision": "1b889f47ec271144c16f32f2a7219ae6c53358c9",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "src/client/masonry/index.ts",
                "upstreamPath": "src/client/masonry/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/masonry/index.ts",
                "upstreamSha256": "sha256:a5e1167894b24326a2790a6efb0f6c9b67e32f1b2097f8795cdd03d39d9cdf18",
                "contentSha256": "sha256:a5e1167894b24326a2790a6efb0f6c9b67e32f1b2097f8795cdd03d39d9cdf18",
                "changes": []
              },
              {
                "shippedPath": "src/client/masonry/MasonryPhotoAlbum.tsx",
                "upstreamPath": "src/client/masonry/MasonryPhotoAlbum.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/masonry/MasonryPhotoAlbum.tsx",
                "upstreamSha256": "sha256:53744f9832b2509018dc13598c8a5c4d353fcd7ecb5f9b96954c76adc166d6dd",
                "contentSha256": "sha256:53744f9832b2509018dc13598c8a5c4d353fcd7ecb5f9b96954c76adc166d6dd",
                "changes": []
              },
              {
                "shippedPath": "src/client/masonry/resolveMasonryProps.ts",
                "upstreamPath": "src/client/masonry/resolveMasonryProps.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/masonry/resolveMasonryProps.ts",
                "upstreamSha256": "sha256:e76c27bd8175c104833876185be054f8a41258d0b48f8e857d3daeb19cebf884",
                "contentSha256": "sha256:e76c27bd8175c104833876185be054f8a41258d0b48f8e857d3daeb19cebf884",
                "changes": []
              },
              {
                "shippedPath": "src/layouts/masonry/index.ts",
                "upstreamPath": "src/layouts/masonry/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/layouts/masonry/index.ts",
                "upstreamSha256": "sha256:4bf81a82a23e117bb6c05b9bdd84c8dcf596cee16fd7d3ab34a6ff9ccf0e1465",
                "contentSha256": "sha256:4bf81a82a23e117bb6c05b9bdd84c8dcf596cee16fd7d3ab34a6ff9ccf0e1465",
                "changes": []
              },
              {
                "shippedPath": "src/layouts/masonry/masonry.ts",
                "upstreamPath": "src/layouts/masonry/masonry.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/layouts/masonry/masonry.ts",
                "upstreamSha256": "sha256:2ec32eb873a4d1125e6e82d6d4dd55039281db93e6110b147d68bd0f4a84feef",
                "contentSha256": "sha256:2ec32eb873a4d1125e6e82d6d4dd55039281db93e6110b147d68bd0f4a84feef",
                "changes": []
              },
              {
                "shippedPath": "src/styles/masonry.css",
                "upstreamPath": "src/styles/masonry.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/masonry.css",
                "upstreamSha256": "sha256:7b505ea3831d3ddc7df934f5c3e381d44c9386c9576f6e2fe15ec6857d2f521d",
                "contentSha256": "sha256:7b505ea3831d3ddc7df934f5c3e381d44c9386c9576f6e2fe15ec6857d2f521d",
                "changes": []
              },
              {
                "shippedPath": "src/styles/modules/masonry.css",
                "upstreamPath": "src/styles/modules/masonry.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/modules/masonry.css",
                "upstreamSha256": "sha256:4b73ba9fa2de9528bfa496554c471b1343858f4cc99a30c9c2cb744dff37ec1b",
                "contentSha256": "sha256:4b73ba9fa2de9528bfa496554c471b1343858f4cc99a30c9c2cb744dff37ec1b",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/index.ts",
                "upstreamPath": "src/client/hooks/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/index.ts",
                "upstreamSha256": "sha256:90bc09a373a94829a9fad2cd60a4230f31516973c36c53d42c14135f900138da",
                "contentSha256": "sha256:90bc09a373a94829a9fad2cd60a4230f31516973c36c53d42c14135f900138da",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/useArray.ts",
                "upstreamPath": "src/client/hooks/useArray.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/useArray.ts",
                "upstreamSha256": "sha256:d188bf2b9dc9609c013c88eb76e8395fdd0c9ae149327a8037e033e5f5b39213",
                "contentSha256": "sha256:d188bf2b9dc9609c013c88eb76e8395fdd0c9ae149327a8037e033e5f5b39213",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/useContainerWidth.ts",
                "upstreamPath": "src/client/hooks/useContainerWidth.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/useContainerWidth.ts",
                "upstreamSha256": "sha256:022bc5831c32e99c46175dd1d1863f70ad0c4f7a3448a9a1afc5f36fbaa952c4",
                "contentSha256": "sha256:022bc5831c32e99c46175dd1d1863f70ad0c4f7a3448a9a1afc5f36fbaa952c4",
                "changes": []
              },
              {
                "shippedPath": "src/static/index.ts",
                "upstreamPath": "src/static/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/index.ts",
                "upstreamSha256": "sha256:829cd68f212860c52abb3eab8c5618d944aac68e039c6ff5eb63fcbe9b7dd5bf",
                "contentSha256": "sha256:829cd68f212860c52abb3eab8c5618d944aac68e039c6ff5eb63fcbe9b7dd5bf",
                "changes": []
              },
              {
                "shippedPath": "src/static/Component.tsx",
                "upstreamPath": "src/static/Component.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/Component.tsx",
                "upstreamSha256": "sha256:5821692e35c52ded961640228e935c6df02c8e4ec32fe695a86804e11757bef8",
                "contentSha256": "sha256:b0b2dfe83b958fc7bead6e3141c404ecbd71bf8aef928f99efdc99b82489a981",
                "changes": [
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "src/static/PhotoComponent.tsx",
                "upstreamPath": "src/static/PhotoComponent.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/PhotoComponent.tsx",
                "upstreamSha256": "sha256:0eb4a79298fca5161687bba06e475a9cddd95edd0ecceb221c9b59a74de03115",
                "contentSha256": "sha256:0eb4a79298fca5161687bba06e475a9cddd95edd0ecceb221c9b59a74de03115",
                "changes": []
              },
              {
                "shippedPath": "src/static/StaticPhotoAlbum.tsx",
                "upstreamPath": "src/static/StaticPhotoAlbum.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/StaticPhotoAlbum.tsx",
                "upstreamSha256": "sha256:b894455fc5a026963127c1f40ce40c0d3a32e4401dc134741cdf263a9a2dfc26",
                "contentSha256": "sha256:b894455fc5a026963127c1f40ce40c0d3a32e4401dc134741cdf263a9a2dfc26",
                "changes": []
              },
              {
                "shippedPath": "src/types.ts",
                "upstreamPath": "src/types.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/types.ts",
                "upstreamSha256": "sha256:5c13988dde362192eb67c62717443a2ee16e8dc333dfdc6f3cc079294e6ad605",
                "contentSha256": "sha256:5c13988dde362192eb67c62717443a2ee16e8dc333dfdc6f3cc079294e6ad605",
                "changes": []
              },
              {
                "shippedPath": "src/utils/index.ts",
                "upstreamPath": "src/utils/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/index.ts",
                "upstreamSha256": "sha256:b66eec1415979c49b8a19b94abb2658199858fdb46b58b73e6051104ee2fcf16",
                "contentSha256": "sha256:b66eec1415979c49b8a19b94abb2658199858fdb46b58b73e6051104ee2fcf16",
                "changes": []
              },
              {
                "shippedPath": "src/utils/clsx.ts",
                "upstreamPath": "src/utils/clsx.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/clsx.ts",
                "upstreamSha256": "sha256:67e21ef708815bef7ec830e54a8120d6ec3f8e8dd5c2a27422622b3ff46efe53",
                "contentSha256": "sha256:67e21ef708815bef7ec830e54a8120d6ec3f8e8dd5c2a27422622b3ff46efe53",
                "changes": []
              },
              {
                "shippedPath": "src/utils/css.ts",
                "upstreamPath": "src/utils/css.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/css.ts",
                "upstreamSha256": "sha256:08898fb88066e779fbd46b4acdb1ea939e6eaf5f7472425a0ad491fc739652ea",
                "contentSha256": "sha256:08898fb88066e779fbd46b4acdb1ea939e6eaf5f7472425a0ad491fc739652ea",
                "changes": []
              },
              {
                "shippedPath": "src/utils/ratio.ts",
                "upstreamPath": "src/utils/ratio.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/ratio.ts",
                "upstreamSha256": "sha256:97d24fe28b39894897124466a9a51c10ebbefb19c3af408366d6224da7675287",
                "contentSha256": "sha256:97d24fe28b39894897124466a9a51c10ebbefb19c3af408366d6224da7675287",
                "changes": []
              },
              {
                "shippedPath": "src/utils/responsive.ts",
                "upstreamPath": "src/utils/responsive.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/responsive.ts",
                "upstreamSha256": "sha256:15fa3b60dbcb7cb7824cffec04724b1340a44d3e36576b06b27312794628af3d",
                "contentSha256": "sha256:15fa3b60dbcb7cb7824cffec04724b1340a44d3e36576b06b27312794628af3d",
                "changes": []
              },
              {
                "shippedPath": "src/utils/round.ts",
                "upstreamPath": "src/utils/round.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/round.ts",
                "upstreamSha256": "sha256:d18922dfd157f598a2228bb38e0bd281e95bba0dd2910a9709ed0393ae222deb",
                "contentSha256": "sha256:d18922dfd157f598a2228bb38e0bd281e95bba0dd2910a9709ed0393ae222deb",
                "changes": []
              },
              {
                "shippedPath": "src/utils/sizes.ts",
                "upstreamPath": "src/utils/sizes.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/sizes.ts",
                "upstreamSha256": "sha256:d8bbcdd8289c5992d8cfd487fb5357f277ca9e9eb16240adf8a5049feb15c956",
                "contentSha256": "sha256:d8bbcdd8289c5992d8cfd487fb5357f277ca9e9eb16240adf8a5049feb15c956",
                "changes": []
              },
              {
                "shippedPath": "src/styles/modules/common.css",
                "upstreamPath": "src/styles/modules/common.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/modules/common.css",
                "upstreamSha256": "sha256:973beb318e5aed84874a511f8efb643228ce8ae681c3f214af23ffc6c0744cf1",
                "contentSha256": "sha256:973beb318e5aed84874a511f8efb643228ce8ae681c3f214af23ffc6c0744cf1",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "All files declared in meta.tasteblocks.source.files.",
            "copyright": [
              "Copyright (c) 2021 Igor Danchenko"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/LICENSE",
              "sha256": "sha256:fbeb795c330e794403a0fd14cf82083663dfc9ef23732e224a1545aef08b7a2a",
              "localPath": "registry/sources/react-photo-album/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "src/static/Component.tsx",
              "change": "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "shortest-column-photo-masonry",
            "sourceHash": "sha256:de7fdd25a7e7678c36b20be2594e11bc9de4511c7c07ed53522bfd790a281f47",
            "contentHash": "sha256:50e24bbd8623ce977bdb4a2a5579fb8e8a184448d359b95f60b6583b2285d183",
            "structureHash": "sha256:a0508bae5f98948696048e2a9dc8a7273b5bd8de0e68dea9bc581f2594c526de"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-photo-album-rows",
      "type": "registry:component",
      "title": "React Photo Album Rows",
      "description": "Balances responsive photos into justified rows with an optimal row-breaking algorithm.",
      "author": "Igor Danchenko",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-photo-album/src/client/rows/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/rows/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/rows/RowsPhotoAlbum.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-photo-album/src/client/rows/RowsPhotoAlbum.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/rows/resolveRowsProps.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/rows/resolveRowsProps.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/layouts/rows/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/layouts/rows/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/layouts/rows/rows.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/layouts/rows/rows.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/rows.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/rows.css"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/modules/rows.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/modules/rows.css"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/useArray.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/useArray.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/client/hooks/useContainerWidth.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-photo-album/src/client/hooks/useContainerWidth.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/Component.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/Component.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/PhotoComponent.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/PhotoComponent.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/static/StaticPhotoAlbum.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/static/StaticPhotoAlbum.tsx"
        },
        {
          "path": "registry/sources/react-photo-album/src/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/types.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/index.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/clsx.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/clsx.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/css.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/css.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/ratio.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/ratio.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/responsive.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/responsive.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/round.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/round.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/utils/sizes.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-photo-album/src/utils/sizes.ts"
        },
        {
          "path": "registry/sources/react-photo-album/src/styles/modules/common.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-photo-album/src/styles/modules/common.css"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "gallery",
            "photos",
            "rows",
            "justified",
            "responsive"
          ],
          "renderer": "dom",
          "preview": "previews/react-photo-album-rows.tsx",
          "source": {
            "project": "React Photo Album",
            "repository": "https://github.com/igordanchenko/react-photo-album",
            "revision": "1b889f47ec271144c16f32f2a7219ae6c53358c9",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "src/client/rows/index.ts",
                "upstreamPath": "src/client/rows/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/rows/index.ts",
                "upstreamSha256": "sha256:aa7a079400266741ea5f30d3c078c1882f8bd820f3872611ba204b74be62f836",
                "contentSha256": "sha256:aa7a079400266741ea5f30d3c078c1882f8bd820f3872611ba204b74be62f836",
                "changes": []
              },
              {
                "shippedPath": "src/client/rows/RowsPhotoAlbum.tsx",
                "upstreamPath": "src/client/rows/RowsPhotoAlbum.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/rows/RowsPhotoAlbum.tsx",
                "upstreamSha256": "sha256:bf6ba53077f0fae4c4b9cf804dc48e21ba2139cdb5867bfedcc27f598a9c9dee",
                "contentSha256": "sha256:bf6ba53077f0fae4c4b9cf804dc48e21ba2139cdb5867bfedcc27f598a9c9dee",
                "changes": []
              },
              {
                "shippedPath": "src/client/rows/resolveRowsProps.ts",
                "upstreamPath": "src/client/rows/resolveRowsProps.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/rows/resolveRowsProps.ts",
                "upstreamSha256": "sha256:12fd9e64258e30ee065166150f1db86b36a76024513703d766d96d6d90abd46e",
                "contentSha256": "sha256:12fd9e64258e30ee065166150f1db86b36a76024513703d766d96d6d90abd46e",
                "changes": []
              },
              {
                "shippedPath": "src/layouts/rows/index.ts",
                "upstreamPath": "src/layouts/rows/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/layouts/rows/index.ts",
                "upstreamSha256": "sha256:bb62fdf43f17c54e61e811fad59cbbb24f6ce513c06584713e42d2501d0fb9c5",
                "contentSha256": "sha256:bb62fdf43f17c54e61e811fad59cbbb24f6ce513c06584713e42d2501d0fb9c5",
                "changes": []
              },
              {
                "shippedPath": "src/layouts/rows/rows.ts",
                "upstreamPath": "src/layouts/rows/rows.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/layouts/rows/rows.ts",
                "upstreamSha256": "sha256:8eb80bd3bdddef58d3a4c6dd7750d8dea29028627edc40465ede5c7f3bd4a9f2",
                "contentSha256": "sha256:8eb80bd3bdddef58d3a4c6dd7750d8dea29028627edc40465ede5c7f3bd4a9f2",
                "changes": []
              },
              {
                "shippedPath": "src/styles/rows.css",
                "upstreamPath": "src/styles/rows.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/rows.css",
                "upstreamSha256": "sha256:80a9d6f6a010212f87a7dde0522f133a074bbc8a15032fb79a935ca17244392a",
                "contentSha256": "sha256:80a9d6f6a010212f87a7dde0522f133a074bbc8a15032fb79a935ca17244392a",
                "changes": []
              },
              {
                "shippedPath": "src/styles/modules/rows.css",
                "upstreamPath": "src/styles/modules/rows.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/modules/rows.css",
                "upstreamSha256": "sha256:36a4055013439532d1a0fc3bbffd74f93cb33a2f6d0e1361b97b85571df82c8b",
                "contentSha256": "sha256:36a4055013439532d1a0fc3bbffd74f93cb33a2f6d0e1361b97b85571df82c8b",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/index.ts",
                "upstreamPath": "src/client/hooks/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/index.ts",
                "upstreamSha256": "sha256:90bc09a373a94829a9fad2cd60a4230f31516973c36c53d42c14135f900138da",
                "contentSha256": "sha256:90bc09a373a94829a9fad2cd60a4230f31516973c36c53d42c14135f900138da",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/useArray.ts",
                "upstreamPath": "src/client/hooks/useArray.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/useArray.ts",
                "upstreamSha256": "sha256:d188bf2b9dc9609c013c88eb76e8395fdd0c9ae149327a8037e033e5f5b39213",
                "contentSha256": "sha256:d188bf2b9dc9609c013c88eb76e8395fdd0c9ae149327a8037e033e5f5b39213",
                "changes": []
              },
              {
                "shippedPath": "src/client/hooks/useContainerWidth.ts",
                "upstreamPath": "src/client/hooks/useContainerWidth.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/client/hooks/useContainerWidth.ts",
                "upstreamSha256": "sha256:022bc5831c32e99c46175dd1d1863f70ad0c4f7a3448a9a1afc5f36fbaa952c4",
                "contentSha256": "sha256:022bc5831c32e99c46175dd1d1863f70ad0c4f7a3448a9a1afc5f36fbaa952c4",
                "changes": []
              },
              {
                "shippedPath": "src/static/index.ts",
                "upstreamPath": "src/static/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/index.ts",
                "upstreamSha256": "sha256:829cd68f212860c52abb3eab8c5618d944aac68e039c6ff5eb63fcbe9b7dd5bf",
                "contentSha256": "sha256:829cd68f212860c52abb3eab8c5618d944aac68e039c6ff5eb63fcbe9b7dd5bf",
                "changes": []
              },
              {
                "shippedPath": "src/static/Component.tsx",
                "upstreamPath": "src/static/Component.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/Component.tsx",
                "upstreamSha256": "sha256:5821692e35c52ded961640228e935c6df02c8e4ec32fe695a86804e11757bef8",
                "contentSha256": "sha256:b0b2dfe83b958fc7bead6e3141c404ecbd71bf8aef928f99efdc99b82489a981",
                "changes": [
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "src/static/PhotoComponent.tsx",
                "upstreamPath": "src/static/PhotoComponent.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/PhotoComponent.tsx",
                "upstreamSha256": "sha256:0eb4a79298fca5161687bba06e475a9cddd95edd0ecceb221c9b59a74de03115",
                "contentSha256": "sha256:0eb4a79298fca5161687bba06e475a9cddd95edd0ecceb221c9b59a74de03115",
                "changes": []
              },
              {
                "shippedPath": "src/static/StaticPhotoAlbum.tsx",
                "upstreamPath": "src/static/StaticPhotoAlbum.tsx",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/static/StaticPhotoAlbum.tsx",
                "upstreamSha256": "sha256:b894455fc5a026963127c1f40ce40c0d3a32e4401dc134741cdf263a9a2dfc26",
                "contentSha256": "sha256:b894455fc5a026963127c1f40ce40c0d3a32e4401dc134741cdf263a9a2dfc26",
                "changes": []
              },
              {
                "shippedPath": "src/types.ts",
                "upstreamPath": "src/types.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/types.ts",
                "upstreamSha256": "sha256:5c13988dde362192eb67c62717443a2ee16e8dc333dfdc6f3cc079294e6ad605",
                "contentSha256": "sha256:5c13988dde362192eb67c62717443a2ee16e8dc333dfdc6f3cc079294e6ad605",
                "changes": []
              },
              {
                "shippedPath": "src/utils/index.ts",
                "upstreamPath": "src/utils/index.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/index.ts",
                "upstreamSha256": "sha256:b66eec1415979c49b8a19b94abb2658199858fdb46b58b73e6051104ee2fcf16",
                "contentSha256": "sha256:b66eec1415979c49b8a19b94abb2658199858fdb46b58b73e6051104ee2fcf16",
                "changes": []
              },
              {
                "shippedPath": "src/utils/clsx.ts",
                "upstreamPath": "src/utils/clsx.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/clsx.ts",
                "upstreamSha256": "sha256:67e21ef708815bef7ec830e54a8120d6ec3f8e8dd5c2a27422622b3ff46efe53",
                "contentSha256": "sha256:67e21ef708815bef7ec830e54a8120d6ec3f8e8dd5c2a27422622b3ff46efe53",
                "changes": []
              },
              {
                "shippedPath": "src/utils/css.ts",
                "upstreamPath": "src/utils/css.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/css.ts",
                "upstreamSha256": "sha256:08898fb88066e779fbd46b4acdb1ea939e6eaf5f7472425a0ad491fc739652ea",
                "contentSha256": "sha256:08898fb88066e779fbd46b4acdb1ea939e6eaf5f7472425a0ad491fc739652ea",
                "changes": []
              },
              {
                "shippedPath": "src/utils/ratio.ts",
                "upstreamPath": "src/utils/ratio.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/ratio.ts",
                "upstreamSha256": "sha256:97d24fe28b39894897124466a9a51c10ebbefb19c3af408366d6224da7675287",
                "contentSha256": "sha256:97d24fe28b39894897124466a9a51c10ebbefb19c3af408366d6224da7675287",
                "changes": []
              },
              {
                "shippedPath": "src/utils/responsive.ts",
                "upstreamPath": "src/utils/responsive.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/responsive.ts",
                "upstreamSha256": "sha256:15fa3b60dbcb7cb7824cffec04724b1340a44d3e36576b06b27312794628af3d",
                "contentSha256": "sha256:15fa3b60dbcb7cb7824cffec04724b1340a44d3e36576b06b27312794628af3d",
                "changes": []
              },
              {
                "shippedPath": "src/utils/round.ts",
                "upstreamPath": "src/utils/round.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/round.ts",
                "upstreamSha256": "sha256:d18922dfd157f598a2228bb38e0bd281e95bba0dd2910a9709ed0393ae222deb",
                "contentSha256": "sha256:d18922dfd157f598a2228bb38e0bd281e95bba0dd2910a9709ed0393ae222deb",
                "changes": []
              },
              {
                "shippedPath": "src/utils/sizes.ts",
                "upstreamPath": "src/utils/sizes.ts",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/utils/sizes.ts",
                "upstreamSha256": "sha256:d8bbcdd8289c5992d8cfd487fb5357f277ca9e9eb16240adf8a5049feb15c956",
                "contentSha256": "sha256:d8bbcdd8289c5992d8cfd487fb5357f277ca9e9eb16240adf8a5049feb15c956",
                "changes": []
              },
              {
                "shippedPath": "src/styles/modules/common.css",
                "upstreamPath": "src/styles/modules/common.css",
                "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/src/styles/modules/common.css",
                "upstreamSha256": "sha256:973beb318e5aed84874a511f8efb643228ce8ae681c3f214af23ffc6c0744cf1",
                "contentSha256": "sha256:973beb318e5aed84874a511f8efb643228ce8ae681c3f214af23ffc6c0744cf1",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "All files declared in meta.tasteblocks.source.files.",
            "copyright": [
              "Copyright (c) 2021 Igor Danchenko"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/igordanchenko/react-photo-album/blob/1b889f47ec271144c16f32f2a7219ae6c53358c9/LICENSE",
              "sha256": "sha256:fbeb795c330e794403a0fd14cf82083663dfc9ef23732e224a1545aef08b7a2a",
              "localPath": "registry/sources/react-photo-album/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "src/static/Component.tsx",
              "change": "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "responsive-justified-photo-rows",
            "sourceHash": "sha256:525606c823926fc00dc75dbe7afb7da56832766fba4bb7b404afd1bdf9401b23",
            "contentHash": "sha256:5dd765d6b3d9f8068e4f9098eceb36405538e0313053832e4805d43712b29cb4",
            "structureHash": "sha256:57d1107593bac781114499eee9cf44f6e769f2d4c1438c658db4db5f94ebc1cd"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-ascii",
      "type": "registry:component",
      "title": "ASCII",
      "description": "Converts a rendered scene into a configurable character-cell shader.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/ASCII.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/ASCII.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "ascii",
            "shader",
            "typography"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-ascii.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/ASCII.tsx",
                "upstreamPath": "src/effects/ASCII.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/ASCII.tsx",
                "upstreamSha256": "sha256:341ec5073edd15b92c1976d4061f587d43795d3397c86782da2df795f3de480c",
                "contentSha256": "sha256:12a40bf402d6e4950673483bd5bd094d4365559507309894809e3c8b66c88e00",
                "changes": [
                  "Declared the effect as client code, guarded character texture creation during SSR, and dispose the generated texture and effect on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/ASCII.tsx, src/EffectComposer.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/ASCII.tsx",
              "change": "Declared the effect as client code, guarded character texture creation during SSR, and dispose the generated texture and effect on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "ascii-postprocessing-effect",
            "sourceHash": "sha256:d739df6230a3197dcefa1f3eb4d6ab2cf0132d934ef31cc144cdcf1d67df258a",
            "contentHash": "sha256:d61508860bce8110eff745e0cc02d28cdbe4654f3e8f5ed9734291f0000d6279",
            "structureHash": "sha256:eec4781c29bce5686142c913d39e1aca4641ee4150e6a58c4b2b7d4a1cf29953"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-bloom",
      "type": "registry:component",
      "title": "Bloom",
      "description": "Adds thresholded mipmap bloom to emissive scene content.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/Bloom.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/Bloom.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "bloom",
            "glow",
            "light"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-bloom.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/Bloom.tsx",
                "upstreamPath": "src/effects/Bloom.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/Bloom.tsx",
                "upstreamSha256": "sha256:dcaa05661d8401ddf403227806a3aed6efb82ee80d1d0345e93aa84d4f0072c7",
                "contentSha256": "sha256:50280da80fb05e15636e109b5c67da5669b9f277098a8b5f8271c2b482c77875",
                "changes": [
                  "Declared the effect as client code."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/Bloom.tsx, src/EffectComposer.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/Bloom.tsx",
              "change": "Declared the effect as client code.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "luminance-bloom-effect",
            "sourceHash": "sha256:7cf4aa92fa26f068f59bc0ed08d76d69ffd6a3399e3fe2835fda80f286b03b38",
            "contentHash": "sha256:6e264dafd1c824d3ea41c1b588f0a589d8838dec83307d0bcb0f8aea6ad6ae5e",
            "structureHash": "sha256:e1b48e38ddad4f40c9087cfea74745b94cfed16207f0842f3ee6f4fe9be2432c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-chromatic-aberration",
      "type": "registry:component",
      "title": "Chromatic Aberration",
      "description": "Offsets color channels with configurable radial modulation.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/ChromaticAberration.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/ChromaticAberration.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "chromatic-aberration",
            "color",
            "lens"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-chromatic-aberration.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/ChromaticAberration.tsx",
                "upstreamPath": "src/effects/ChromaticAberration.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/ChromaticAberration.tsx",
                "upstreamSha256": "sha256:56fd19ba1bef3ea18f210fb651171abc0bd3a10d14249d93b38f1473c5cd5c9d",
                "contentSha256": "sha256:048a0e11133367c296457c9aa103f586c1887480c000609be2a8e1bf46d63345",
                "changes": [
                  "Declared the effect as client code."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/ChromaticAberration.tsx, src/EffectComposer.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/ChromaticAberration.tsx",
              "change": "Declared the effect as client code.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "chromatic-aberration-effect",
            "sourceHash": "sha256:2fb51b72ee36d73c941dd84fe7f0feb2732a2c485d279b30243549016398678e",
            "contentHash": "sha256:425be74ba740d2d3c91e59ea1b7274a17bb1d2f111571df1089dc2c9cbf408f2",
            "structureHash": "sha256:07b2654495385ca0822ea5e73f831f22e4a40fedb4a72403813e49d0e1f233b9"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-depth-of-field",
      "type": "registry:component",
      "title": "Depth of Field",
      "description": "Applies camera-aware depth blur with target and bokeh controls.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/DepthOfField.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/DepthOfField.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "depth-of-field",
            "bokeh",
            "camera"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-depth-of-field.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/DepthOfField.tsx",
                "upstreamPath": "src/effects/DepthOfField.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/DepthOfField.tsx",
                "upstreamSha256": "sha256:53ac20d944a9edaef664cca6b4067c362269d5ba3913da863c05a4586bd2443b",
                "contentSha256": "sha256:0f07daa01870e3c28ba39a978d87d2bf5bf65ac02aa357fc43a05ccca1ff4260",
                "changes": [
                  "Declared the effect as client code."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/DepthOfField.tsx, src/EffectComposer.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/DepthOfField.tsx",
              "change": "Declared the effect as client code.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "depth-of-field-effect",
            "sourceHash": "sha256:3ada4d1389eb34db32496f6d9bdb0d8932668a005ba95efc363779ffe3e66361",
            "contentHash": "sha256:9952bd3f8cf125d80f412e5a15e134da2ebec918bd3026baf88d6b2fd4bbdc3b",
            "structureHash": "sha256:6a8a3da3eedc13902855328fae2421691908677a1893ecb1a1d793215fcbf6c8"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-glitch",
      "type": "registry:component",
      "title": "Glitch",
      "description": "Applies an interruptible sporadic digital glitch with bounded duration and strength controls.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/Glitch.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/Glitch.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "glitch",
            "distortion",
            "temporal"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-glitch.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/Glitch.tsx",
                "upstreamPath": "src/effects/Glitch.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/Glitch.tsx",
                "upstreamSha256": "sha256:1f526ebf102bc3bb07a1a36d498342a0b1637ef212e21f3f5d74d034a21f9ca0",
                "contentSha256": "sha256:de6896ccc89fb840f1b94f79c62b0b302c47005cbb44d56c6c9cc60bb999c700",
                "changes": [
                  "Declared the effect as client code and disable temporal glitches when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/Glitch.tsx, src/EffectComposer.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/Glitch.tsx",
              "change": "Declared the effect as client code and disable temporal glitches when reduced motion is requested.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "sporadic-glitch-effect",
            "sourceHash": "sha256:33a56eea4f31737f3dd8ec205c02ec7f7e3c94d50341aa44306eafe9490269e3",
            "contentHash": "sha256:127672ba261f6cd6df2c2c0c5d8310f0f5c012148011b28b7cedaafb91f001ba",
            "structureHash": "sha256:9359095e72f0585e880a4074a4207104370e2370dc4977c7e5d845db69efc850"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-god-rays",
      "type": "registry:component",
      "title": "God Rays",
      "description": "Projects volumetric light shafts from a supplied mesh or points source.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/GodRays.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/GodRays.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "god-rays",
            "volumetric-light",
            "occlusion"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-god-rays.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/GodRays.tsx",
                "upstreamPath": "src/effects/GodRays.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/GodRays.tsx",
                "upstreamSha256": "sha256:7e54cc0c0df5bdae253bd417ff6fc253b290c53d9899eb88aaa7ce09829fbdd2",
                "contentSha256": "sha256:3ecf8642c0544cd946828ce766af8893ab1ea01d2a1b69a118213601abaf89d8",
                "changes": [
                  "Declared the effect as client code and dispose it on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/GodRays.tsx, src/EffectComposer.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/GodRays.tsx",
              "change": "Declared the effect as client code and dispose it on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "mesh-source-god-rays",
            "sourceHash": "sha256:97750f9fe773ab53d68647aabb88b880f17fccb96ca2433c14b881dc19dcb86b",
            "contentHash": "sha256:0362fdb17d0355a56507d7a04e8e3a456f59c57625afd296169c24d1a266e1ad",
            "structureHash": "sha256:0870a3c2e8a81a1667d8b59f08071e4bfaf257bf7cef8e5c357603009946da37"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-grid",
      "type": "registry:component",
      "title": "Grid",
      "description": "Overlays a configurable screen-space grid effect on a rendered scene.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/Grid.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/Grid.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "grid",
            "screen-space",
            "shader"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-grid.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/Grid.tsx",
                "upstreamPath": "src/effects/Grid.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/Grid.tsx",
                "upstreamSha256": "sha256:3d44884ce38fba0f3eebbbac49e8fb0bbbdd6783c94bcbbfed6de747d7547e85",
                "contentSha256": "sha256:12a3bf85e4af72d4366135af1236bcf5eb74dc10c329fc97f616bd4e5aa8b63c",
                "changes": [
                  "Declared the effect as client code and dispose it on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/Grid.tsx, src/EffectComposer.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/Grid.tsx",
              "change": "Declared the effect as client code and dispose it on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "screen-space-grid-effect",
            "sourceHash": "sha256:f4260bd44da699237a7b81aac841b77358deb037924b8a48191952a185aefd8a",
            "contentHash": "sha256:7b575dcd71ffb12696a73431870eb03c7f9df0c1a6f79da981fb33af7bf8b7c4",
            "structureHash": "sha256:8cf0133b10ed07059f324518ac3808795b95975424d84fc817fdf81552cf639c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-lut",
      "type": "registry:component",
      "title": "LUT",
      "description": "Applies a supplied 3D lookup texture for real-time color grading.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/LUT.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/LUT.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "lut",
            "color-grading",
            "3d-texture"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-lut.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/LUT.tsx",
                "upstreamPath": "src/effects/LUT.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/LUT.tsx",
                "upstreamSha256": "sha256:3ee3ceb3a3c8e952680b8f772212e4b1b4cd4c15ef4407c3b01d687772d2eda3",
                "contentSha256": "sha256:ad2ef5ab85118b21ed9b2faf1a71e2746a67a23e4b71e874cb74d9ca1219e53b",
                "changes": [
                  "Declared the effect as client code and dispose it on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/LUT.tsx, src/EffectComposer.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/LUT.tsx",
              "change": "Declared the effect as client code and dispose it on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "three-dimensional-lut-effect",
            "sourceHash": "sha256:458fbe65f8c2c6db591b8cf9ba01dfacfd6c3d695ac1cc26ef5e066e9fe9efb5",
            "contentHash": "sha256:855b5eaba2c93828cb054c3d85f9058d8a5ab0e641daa8882e1fd6fa10f9090d",
            "structureHash": "sha256:ac0334093672afae256787289360e686f4f43ba8ba5d66f30efef17c8bee44f0"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-outline",
      "type": "registry:component",
      "title": "Outline",
      "description": "Draws configurable visible and hidden edges around selected scene objects.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/Outline.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/Outline.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/Selection.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/Selection.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "outline",
            "selection",
            "edges"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-outline.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/Outline.tsx",
                "upstreamPath": "src/effects/Outline.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/Outline.tsx",
                "upstreamSha256": "sha256:d9478ed3d2df915bb48553e8c1370873d7b497a17ce1e2308d4c963b4b6644f4",
                "contentSha256": "sha256:58e54b6df636c74419c3b63ff78200dd52aae7f7e839c6aea847904b986fab63",
                "changes": [
                  "Declared the effect as client code and disable outline pulsing when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/Selection.tsx",
                "upstreamPath": "src/Selection.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/Selection.tsx",
                "upstreamSha256": "sha256:165ac9c05f4791680dc44772bc015f783e17ab3c7076fe074b33485d093290b6",
                "contentSha256": "sha256:7c4ed1d47105568fb031ca409ec31370223f1bad3f6187469284f08621bee7ee",
                "changes": [
                  "Declared the selection helpers as client components."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/Outline.tsx, src/EffectComposer.tsx, src/Selection.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/Outline.tsx",
              "change": "Declared the effect as client code and disable outline pulsing when reduced motion is requested.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/Selection.tsx",
              "change": "Declared the selection helpers as client components.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "selected-object-outline-effect",
            "sourceHash": "sha256:aea78f88a7f9c75d2477305b47528949d7e14bec1513e1e8ad2c5ef24808bec4",
            "contentHash": "sha256:6d15feb2531e62d3e120a8de22e460a05ae07ae52ad5b19d2926611062384761",
            "structureHash": "sha256:627ca626e1d45f0dd9b7a40438289aea4e52742c69316e64ae8a7736a781b7d2"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-pixelation",
      "type": "registry:component",
      "title": "Pixelation",
      "description": "Pixelates the composed scene at a configurable granularity.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/Pixelation.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/Pixelation.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "pixelation",
            "retro",
            "shader"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-pixelation.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/Pixelation.tsx",
                "upstreamPath": "src/effects/Pixelation.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/Pixelation.tsx",
                "upstreamSha256": "sha256:af7fd6593282f1d612f71c1ee2f70a4cde1f84caa4a80670c0b35dba9c5160e4",
                "contentSha256": "sha256:9cf278032294cc2a68e7a109bdb6d66a4378964da41e1b573a1ae9d6d404a2d1",
                "changes": [
                  "Declared the effect as client code and dispose it on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/Pixelation.tsx, src/EffectComposer.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/Pixelation.tsx",
              "change": "Declared the effect as client code and dispose it on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "scene-pixelation-effect",
            "sourceHash": "sha256:d98f7695fdbd7ee9e8929503371ece887c07269b7d3a646f508e406b2a950eb1",
            "contentHash": "sha256:692efa9ab025b78b5482533487d30c5d3fc102ff26357c24161e04bc8447544f",
            "structureHash": "sha256:c4a669594f891541acfc5f46af87d4a4e23e3bb4b794ea1a66645c98720ef70c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-ramp",
      "type": "registry:component",
      "title": "Ramp",
      "description": "Blends linear, radial, or mirrored color ramps over or through the scene.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/Ramp.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/Ramp.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "ramp",
            "gradient",
            "mask"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-ramp.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/Ramp.tsx",
                "upstreamPath": "src/effects/Ramp.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/Ramp.tsx",
                "upstreamSha256": "sha256:c0f0b4070ffbb666f0910ae7b0c97f8695b3320062bf072a551ed39840ed3ee2",
                "contentSha256": "sha256:9574fd2d66725dcd8e9a34f4dc23955834d842fe8b92d33e9657fcfcfaa56621",
                "changes": [
                  "Declared the effect as client code."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/Ramp.tsx, src/EffectComposer.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/Ramp.tsx",
              "change": "Declared the effect as client code.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "configurable-ramp-effect",
            "sourceHash": "sha256:e61791b0bcb5ce40a279ee956a3e42cc46a6fc99103e7677c37357e75fd7644f",
            "contentHash": "sha256:1fdd4ef11ef4c126525e3930a2c905cac6e0cb301b0c134ce6ac1ff3d68d941d",
            "structureHash": "sha256:129c05f73cf1e6106782e23632689d544d1113ac949c04559d56b3a3757d48b0"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-selective-bloom",
      "type": "registry:component",
      "title": "Selective Bloom",
      "description": "Applies bloom only to selected objects and supplied lights.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/SelectiveBloom.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/SelectiveBloom.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/Selection.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/Selection.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "bloom",
            "selection",
            "light"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-selective-bloom.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/SelectiveBloom.tsx",
                "upstreamPath": "src/effects/SelectiveBloom.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/SelectiveBloom.tsx",
                "upstreamSha256": "sha256:73391270dc0b621c2c304cfc4555314eae6489796777abff69be5c7162410d72",
                "contentSha256": "sha256:4fb28a591ada7105f055aabb7e2a43ef44429940e232871305e272393b41bf94",
                "changes": [
                  "Declared the effect as client code and dispose it on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/Selection.tsx",
                "upstreamPath": "src/Selection.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/Selection.tsx",
                "upstreamSha256": "sha256:165ac9c05f4791680dc44772bc015f783e17ab3c7076fe074b33485d093290b6",
                "contentSha256": "sha256:7c4ed1d47105568fb031ca409ec31370223f1bad3f6187469284f08621bee7ee",
                "changes": [
                  "Declared the selection helpers as client components."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/SelectiveBloom.tsx, src/EffectComposer.tsx, src/Selection.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/SelectiveBloom.tsx",
              "change": "Declared the effect as client code and dispose it on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/Selection.tsx",
              "change": "Declared the selection helpers as client components.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "selected-object-bloom-effect",
            "sourceHash": "sha256:0ec31d02ab21993c03573087c5e375ef78e42b7517bc478b3d8bc5fd92fee7b0",
            "contentHash": "sha256:3ffd4a9895334003f1a3ad683bc01fec980a7da3260a2fe92c4358f12819e212",
            "structureHash": "sha256:ff0d05e239110870e4e293d2bcff9c9164fbfae52385f4e53531aa397fdaf881"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-tilt-shift",
      "type": "registry:component",
      "title": "Tilt Shift",
      "description": "Applies directional depth-like blur with bounded shader samples.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/TiltShift2.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/TiltShift2.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "tilt-shift",
            "blur",
            "focus"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-tilt-shift.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/TiltShift2.tsx",
                "upstreamPath": "src/effects/TiltShift2.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/TiltShift2.tsx",
                "upstreamSha256": "sha256:41ca5c04781cb2c2278a5942a1ce7de8a7848b8369d2f9b3982b5bfafefe307d",
                "contentSha256": "sha256:879e6da917fdf2c5ece1ace617d8818a257dd5d7b6da9ab9d63479878e12251e",
                "changes": [
                  "Declared the effect as client code."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/TiltShift2.tsx, src/EffectComposer.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/TiltShift2.tsx",
              "change": "Declared the effect as client code.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "directional-tilt-shift-effect",
            "sourceHash": "sha256:2b830e97c2f6b895043278562cd00eeeac129b1e1c55120d1f40058f0b2e0b43",
            "contentHash": "sha256:a82c0deda9ed11fa73251801a97f76c4fa702b79b41f3a5b6943f05c9a067177",
            "structureHash": "sha256:588ad38651facc366ec1361034c2dc25786262aef02757d0ef9c0afa10fe19c1"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-postprocessing-water",
      "type": "registry:component",
      "title": "Water Distortion",
      "description": "Distorts the composed scene with a configurable animated water shader.",
      "author": "pmndrs and react-postprocessing contributors",
      "dependencies": [
        "@react-three/fiber@9.4.0",
        "postprocessing@6.36.6",
        "three@0.172.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/effects/Water.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/effects/Water.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/EffectComposer.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-postprocessing/EffectComposer.tsx"
        },
        {
          "path": "registry/sources/react-postprocessing/components/react-postprocessing/util.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-postprocessing/util.tsx"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "water",
            "distortion",
            "shader"
          ],
          "renderer": "webgl",
          "preview": "previews/react-postprocessing-water.tsx",
          "source": {
            "project": "react-postprocessing",
            "repository": "https://github.com/pmndrs/react-postprocessing",
            "revision": "90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-postprocessing/effects/Water.tsx",
                "upstreamPath": "src/effects/Water.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/effects/Water.tsx",
                "upstreamSha256": "sha256:f3c065bcb58f8534dba227181b960e2c5e0d53f20b7a1d2e43a8a4abe9675617",
                "contentSha256": "sha256:221c99a02574b710e329741d0bb8f96619c251ac895f4bbd7ea15332b6e58396",
                "changes": [
                  "Declared the effect as client code and set distortion to a static frame when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
                "upstreamPath": "src/EffectComposer.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/EffectComposer.tsx",
                "upstreamSha256": "sha256:cd9e9cac9dab8ae64fac878f8c3710f73e31db35bf4089da0cda246618e325c8",
                "contentSha256": "sha256:f90186bd8d9aba4de806b17704922cc6da12067568ae2f9e9dd273062079cd9d",
                "changes": [
                  "Declared the React Three Fiber composer as a client component.",
                  "Reduced default multisampling from 8 to 4 and dispose the composer on unmount."
                ]
              },
              {
                "shippedPath": "components/react-postprocessing/util.tsx",
                "upstreamPath": "src/util.tsx",
                "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/src/util.tsx",
                "upstreamSha256": "sha256:d31715e4c844ad668cefb195bd82953ea22e20cecae0c2c4ec9da9d9e0347c7e",
                "contentSha256": "sha256:24b6d33896e3a07b0ac067df43ed22e10cb454b08a90d799426f21bc51e65de0",
                "changes": [
                  "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/effects/Water.tsx, src/EffectComposer.tsx, src/util.tsx",
            "copyright": [
              "Copyright (c) 2020 react-spring"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/pmndrs/react-postprocessing/blob/90d10d59fe5a1a86e027c1bedd36dcf3b87ddd1c/LICENSE",
              "sha256": "sha256:2e36b208b403882158daf95cae207087bbb830db4d434a79ebafffca177244c8",
              "localPath": "registry/sources/react-postprocessing/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-postprocessing/effects/Water.tsx",
              "change": "Declared the effect as client code and set distortion to a static frame when reduced motion is requested.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/EffectComposer.tsx",
              "change": "Declared the React Three Fiber composer as a client component. Reduced default multisampling from 8 to 4 and dispose the composer on unmount.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            },
            {
              "shippedPath": "components/react-postprocessing/util.tsx",
              "change": "Declared the React helpers as client code, made wrapEffect return explicit for React refresh transforms, removed circular JSON serialization from effect arguments, and added a native prefers-reduced-motion hook used by temporal effects.",
              "reason": "Keep the copied component Next-compatible, motion-safe, bounded, and leak-free without changing its authored visual model."
            }
          ],
          "dedupe": {
            "family": "water-distortion-effect",
            "sourceHash": "sha256:a4158db7cb7897d94a35ff0ff01419bcf85a2bef51b10ff59fb2883f1c06156d",
            "contentHash": "sha256:79bddb4f972754a9465b758cea3119d8b66c45ed72d768e81e42b4ea30a4b0df",
            "structureHash": "sha256:262d3a855207001147a678ce8ad89ad8a219ccab06ab00e5b22b11b43cb72c47"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-pull-to-refreshify",
      "type": "registry:component",
      "title": "Pull to Refreshify",
      "description": "Refreshes caller-owned content through a scroll-boundary-aware pull gesture or an explicit accessible action.",
      "author": "liaoliao666",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/PullToRefreshify.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/pull-to-refreshify/index.tsx"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/pull-to-refreshify/types.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/events.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/events.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/getScrollTop.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/getScrollTop.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/useDrag.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/useDrag.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/useFirstMountState.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/useFirstMountState.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/useLatest.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/useLatest.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/useScrollParent.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/useScrollParent.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/useUnmountedRef.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/useUnmountedRef.ts"
        },
        {
          "path": "registry/sources/react-pull-to-refreshify/components/react-pull-to-refreshify/utils/useUpdateEffect.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/pull-to-refreshify/utils/useUpdateEffect.ts"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "pull-to-refresh",
            "touch",
            "keyboard",
            "controlled-state",
            "accessibility"
          ],
          "renderer": "dom",
          "preview": "previews/react-pull-to-refreshify.tsx",
          "source": {
            "project": "react-pull-to-refreshify@0.1.0",
            "repository": "https://github.com/HuolalaTech/react-pull-to-refreshify",
            "revision": "ed0bef5e2714a948450b78073cc1692706ecb705",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-pull-to-refreshify/PullToRefreshify.tsx",
                "upstreamPath": "lib/PullToRefreshify.tsx",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/PullToRefreshify.tsx",
                "upstreamSha256": "sha256:9f16ebf5017a4dc5c3b05234c84d2dae3a8ef05f871b052b8c17a1cf60a45311",
                "contentSha256": "sha256:4628cee70713db3718076745d862a2eb3a2402361ce949f85b33c4920c3ca1b3",
                "changes": [
                  "Added the client boundary, a visible native Refresh fallback that uses the same refresh dispatcher, pending and disabled state, aria-busy, and one polite atomic caller-owned status.",
                  "Retained the controlled refreshing and completion state machine while adding an immediate dispatch latch, cancellable completion timer, cancel reset, and synchronous callback error recovery.",
                  "Ignored horizontal and off-boundary drags, used the current viewport height for bounded resistance, and preserved an immediate threshold when threshold is zero.",
                  "Limited transitions to transform, removed them under reduced motion, marked the changing visual status presentation-only, and inherited its text color."
                ]
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/types.ts",
                "upstreamPath": "lib/types.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/types.ts",
                "upstreamSha256": "sha256:36d1fd900bce22a57346b025b3173de34a02c1f8522fdec0f7e11b959212cee6",
                "contentSha256": "sha256:7d5873175b78f94b5380c2388e8ff16071b7e880a8e799e337e2b8b9d0ce2019",
                "changes": [
                  "Added optional refreshButtonLabel and renderStatus props without changing the existing required API."
                ]
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/events.ts",
                "upstreamPath": "lib/utils/events.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/events.ts",
                "upstreamSha256": "sha256:c09a9cdfdf9d796a42aa296678da57aa1de847769efc6eae6e16a36633cf7699",
                "contentSha256": "sha256:2e1620af9909ebeb73d7123463c8441f76560462c51d307acebfc36a8d5e4f8a",
                "changes": [
                  "Deferred passive-listener detection until a browser event path calls it and removed the temporary detection listener."
                ]
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/getScrollTop.ts",
                "upstreamPath": "lib/utils/getScrollTop.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/getScrollTop.ts",
                "upstreamSha256": "sha256:92107dec790ed4f9d153da1e508a74c2c0a7c0ab973e4d63f1564fe1a48c883f",
                "contentSha256": "sha256:c7bd3a47a78803024e5782356d78a57c07b869cd23105439710abe33dbe91d8a",
                "changes": [
                  "Accepted a not-yet-resolved scroll parent, guarded DOM globals for server evaluation, normalized page roots, and clamped overscroll bounce below zero."
                ]
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/useDrag.ts",
                "upstreamPath": "lib/utils/useDrag.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/useDrag.ts",
                "upstreamSha256": "sha256:ac8a44907301e07a9a4fcfa9b55b52e358fe786a65ab6767e01c6f1972184027",
                "contentSha256": "sha256:4df69f9fc9952f62d7ae6f109c51845cf9b444f63131b5b94681a72a85d68744",
                "changes": [
                  "Typed native mouse events and the host ref, ignored secondary mouse and multi-touch starts, and added a distinct cancellation callback.",
                  "Captured mouse move and release on window, cancelled on touchcancel, pointercancel, blur, or hidden document state, and removed every global listener on unmount."
                ]
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/useFirstMountState.ts",
                "upstreamPath": "lib/utils/useFirstMountState.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/useFirstMountState.ts",
                "upstreamSha256": "sha256:260a17893da244a80b3c33b3a440364379f3abc1f0afd22acac306f865bf1d52",
                "contentSha256": "sha256:260a17893da244a80b3c33b3a440364379f3abc1f0afd22acac306f865bf1d52",
                "changes": []
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/useLatest.ts",
                "upstreamPath": "lib/utils/useLatest.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/useLatest.ts",
                "upstreamSha256": "sha256:345b32f81e76d53a610dbe58c37bcf80893e258b601484abba9ce299ff5a4c33",
                "contentSha256": "sha256:345b32f81e76d53a610dbe58c37bcf80893e258b601484abba9ce299ff5a4c33",
                "changes": []
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/useScrollParent.ts",
                "upstreamPath": "lib/utils/useScrollParent.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/useScrollParent.ts",
                "upstreamSha256": "sha256:1e52f7f08a7e06ad138ecc82eb0a4d7d2412c18f88946fd33d0c9c91fdefbe89",
                "contentSha256": "sha256:7c25017f9a0a281add4952f382630e06764d4ae678cb9f1739fa2bf80d5a6373",
                "changes": [
                  "Removed server-time window initialization and resolved the nearest actually scrollable ancestor after mount.",
                  "Prevented native overscroll only for downward vertical pulls inside the content, skipped interception while disabled, re-resolved on resize or orientation and observed size changes, and cleaned every observer and listener."
                ]
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/useUnmountedRef.ts",
                "upstreamPath": "lib/utils/useUnmountedRef.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/useUnmountedRef.ts",
                "upstreamSha256": "sha256:34877d719a6f33e029e062af3349e3ce06ab224e8980fb4ad66b99e1209356ac",
                "contentSha256": "sha256:34877d719a6f33e029e062af3349e3ce06ab224e8980fb4ad66b99e1209356ac",
                "changes": []
              },
              {
                "shippedPath": "components/react-pull-to-refreshify/utils/useUpdateEffect.ts",
                "upstreamPath": "lib/utils/useUpdateEffect.ts",
                "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/lib/utils/useUpdateEffect.ts",
                "upstreamSha256": "sha256:cc33909b86692d24bb35823c47e147622a2d37959eb1380358d87055420b79d9",
                "contentSha256": "sha256:cc33909b86692d24bb35823c47e147622a2d37959eb1380358d87055420b79d9",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "lib/PullToRefreshify.tsx, lib/types.ts, and the complete lib/utils runtime closure",
            "copyright": [
              "Copyright (c) 2022 liaoliao666"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/HuolalaTech/react-pull-to-refreshify/blob/ed0bef5e2714a948450b78073cc1692706ecb705/LICENSE",
              "sha256": "sha256:2e715229e1b2991263b1f47983df427a8225fae1609d47fb0c0fd1b3a3fb70bd",
              "localPath": "registry/sources/react-pull-to-refreshify/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-pull-to-refreshify/PullToRefreshify.tsx",
              "change": "Added the client boundary, explicit native refresh fallback, busy and live semantics, duplicate-dispatch and completion-timer guards, drag cancellation, scroll-axis gating, viewport-based bounded resistance, and reduced-motion-safe transform transitions while retaining the upstream state machine and renderText options.",
              "reason": "Meet the documented SSR, keyboard, assistive-technology, threshold, controlled-refresh, cancellation, cleanup, and reduced-motion gates without replacing the source interaction engine."
            },
            {
              "shippedPath": "components/react-pull-to-refreshify/types.ts",
              "change": "Added optional refreshButtonLabel and renderStatus props.",
              "reason": "Keep the required explicit action label and concise live status caller-owned while preserving every existing prop."
            },
            {
              "shippedPath": "components/react-pull-to-refreshify/utils/events.ts",
              "change": "Made passive-event detection lazy and server-safe and removed its temporary listener.",
              "reason": "Allow Next server evaluation and avoid retaining a detection listener."
            },
            {
              "shippedPath": "components/react-pull-to-refreshify/utils/getScrollTop.ts",
              "change": "Guarded DOM access, accepted an unresolved parent, normalized page roots, and clamped negative overscroll.",
              "reason": "Keep server evaluation safe and make the top-boundary check reliable for page and nested scrolling."
            },
            {
              "shippedPath": "components/react-pull-to-refreshify/utils/useDrag.ts",
              "change": "Added primary-input checks, a distinct cancel path, window mouse capture, pointer/touch/blur/hidden cancellation, and complete listener cleanup.",
              "reason": "Complete drags released outside the element, never refresh after cancellation, and remove global work when hidden or unmounted."
            },
            {
              "shippedPath": "components/react-pull-to-refreshify/utils/useScrollParent.ts",
              "change": "Made scroll-parent discovery client-only and based on actual overflow, limited native-scroll interception to vertical downward pulls, added disabled handling and resize/orientation re-resolution, and cleaned listeners and observation.",
              "reason": "Preserve nested and page scrolling until the real top boundary while remaining correct across mobile viewport changes and unmounts."
            }
          ],
          "dedupe": {
            "family": "pull-to-refresh-action",
            "sourceHash": "sha256:efc3374371c768f714809b08cfa046dd3e1599785e0ca2cb8cf32498ab84efa2",
            "contentHash": "sha256:aa8ecdf55c071112d909fe21043cca9d9b3efbb0b535a9a7575e5169517517e7",
            "structureHash": "sha256:924c48d7ed0f10cc3cd2df1e1ceb21e525717446027f5c4866ba80d4e0d76eb5"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "react-responsive-pagination",
      "type": "registry:component",
      "title": "Responsive Pagination",
      "description": "Chooses the widest pagination composition that fits its measured container.",
      "author": "jonelantha",
      "dependencies": [
        "prop-types@15.8.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-responsive-pagination/index.tsx"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/debug.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/debug.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/compositionItem.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/compositionItem.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/paginationItem.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/paginationItem.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/labelBehaviour.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/labelBehaviour.tsx"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/narrowBehaviour.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/narrowBehaviour.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/presets.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/presets.tsx"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/compositions/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/compositions/index.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/compositions/ranges.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/compositions/ranges.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/helpers/dom.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/helpers/dom.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/helpers/iterator.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/helpers/iterator.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/helpers/react.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/helpers/react.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/helpers/style.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/helpers/style.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/helpers/util.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-responsive-pagination/helpers/util.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/hooks/useAvailableWidth.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-responsive-pagination/hooks/useAvailableWidth.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/hooks/useContentWidth.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-responsive-pagination/hooks/useContentWidth.ts"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/hooks/useFoutDetector.tsx",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-responsive-pagination/hooks/useFoutDetector.tsx"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/hooks/usePaginationItems.tsx",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-responsive-pagination/hooks/usePaginationItems.tsx"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/hooks/useWidestComposition.tsx",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-responsive-pagination/hooks/useWidestComposition.tsx"
        },
        {
          "path": "registry/sources/react-responsive-pagination/components/react-responsive-pagination/hooks/useWidthCalculator.tsx",
          "type": "registry:hook",
          "target": "@components/taste-blocks/react-responsive-pagination/hooks/useWidthCalculator.tsx"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "pagination",
            "responsive",
            "resize-observer",
            "adaptive",
            "navigation"
          ],
          "renderer": "dom",
          "preview": "previews/react-responsive-pagination.tsx",
          "source": {
            "project": "React Responsive Pagination",
            "repository": "https://github.com/jonelantha/react-responsive-pagination",
            "revision": "a4b8427065ff62e4f8187215da4d5157a0345809",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-responsive-pagination/index.tsx",
                "upstreamPath": "packages/react-responsive-pagination/src/index.tsx",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/index.tsx",
                "upstreamSha256": "sha256:374ee401aefba6a2938452df0d73864fed5c92f977ce244b15036637ce40a749",
                "contentSha256": "sha256:511d21a1e9a7ef7c28feead558870c1027762c9859a81d9598969b95a6785c4e",
                "changes": [
                  "Added a use client directive so the hook-based source installs inside a Next.js client boundary.",
                  "Wrapped the upstream list in a localized nav landmark and added an explicit direction prop with direction-aware previous and next defaults.",
                  "Replaced the Bootstrap-oriented default class tokens with local Tailwind layout, 44-pixel target, active, disabled, and focus-visible classes while retaining the upstream class override API.",
                  "Corrected local TypeScript import specifiers to the actual copied .tsx file extensions so source-copy runtimes resolve them."
                ]
              },
              {
                "shippedPath": "components/react-responsive-pagination/debug.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/debug.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/debug.ts",
                "upstreamSha256": "sha256:70a4a987396999602d7575e08096b5795163ed974680de02a954578ff9fc7bc9",
                "contentSha256": "sha256:70a4a987396999602d7575e08096b5795163ed974680de02a954578ff9fc7bc9",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/compositionItem.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/compositionItem.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/compositionItem.ts",
                "upstreamSha256": "sha256:4803aa42f47128f63e2a5ac423e34e668cd0178e95992f0c2483e920983c66df",
                "contentSha256": "sha256:4803aa42f47128f63e2a5ac423e34e668cd0178e95992f0c2483e920983c66df",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/paginationItem.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/paginationItem.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/paginationItem.ts",
                "upstreamSha256": "sha256:20fe8f3430e9b2e6f062d7e617c88f1c2602e2a62dde76eb84175b0e1057b907",
                "contentSha256": "sha256:20fe8f3430e9b2e6f062d7e617c88f1c2602e2a62dde76eb84175b0e1057b907",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/labelBehaviour.tsx",
                "upstreamPath": "packages/react-responsive-pagination/src/labelBehaviour.tsx",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/labelBehaviour.tsx",
                "upstreamSha256": "sha256:f39d02233e63e43e1c3e77c3bdeb269457f15c8f50ec5041cebdce9f340f0c97",
                "contentSha256": "sha256:f39d02233e63e43e1c3e77c3bdeb269457f15c8f50ec5041cebdce9f340f0c97",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/narrowBehaviour.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/narrowBehaviour.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/narrowBehaviour.ts",
                "upstreamSha256": "sha256:8c6c39feeb05fad072624804414e946bcb84c391112428d218bd8d81cf6ea8b1",
                "contentSha256": "sha256:8c6c39feeb05fad072624804414e946bcb84c391112428d218bd8d81cf6ea8b1",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/presets.tsx",
                "upstreamPath": "packages/react-responsive-pagination/src/presets.tsx",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/presets.tsx",
                "upstreamSha256": "sha256:0a4fb0bbe6531dd5b5ba1fa827670a59e54b3dac53c022e71072800ef1b74657",
                "contentSha256": "sha256:8a6b90e8d9700083cb86eb378f4ee7e2bf3dd25c5b54fd95241983fe5517fb65",
                "changes": [
                  "Corrected local TypeScript import specifiers to the actual copied .tsx file extension so source-copy runtimes resolve it."
                ]
              },
              {
                "shippedPath": "components/react-responsive-pagination/compositions/index.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/compositions/index.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/compositions/index.ts",
                "upstreamSha256": "sha256:3e15a401a04f09754f8c91de8a111916e876efb484f519e1bfe51554ddb85d72",
                "contentSha256": "sha256:3e15a401a04f09754f8c91de8a111916e876efb484f519e1bfe51554ddb85d72",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/compositions/ranges.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/compositions/ranges.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/compositions/ranges.ts",
                "upstreamSha256": "sha256:d4267432fa7cb7f455c1edc43f3a09c324b45a8251c5070242504434d914c33b",
                "contentSha256": "sha256:d4267432fa7cb7f455c1edc43f3a09c324b45a8251c5070242504434d914c33b",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/helpers/dom.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/helpers/dom.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/helpers/dom.ts",
                "upstreamSha256": "sha256:ab15abe483c601dc19145247649778349edc0890b57c5f1ca496af276e466bf5",
                "contentSha256": "sha256:ab15abe483c601dc19145247649778349edc0890b57c5f1ca496af276e466bf5",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/helpers/iterator.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/helpers/iterator.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/helpers/iterator.ts",
                "upstreamSha256": "sha256:2761bf0596bd4d74d5d5e812cafbbc3e39788bd0774dfa3a2bb834898b8860b4",
                "contentSha256": "sha256:2761bf0596bd4d74d5d5e812cafbbc3e39788bd0774dfa3a2bb834898b8860b4",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/helpers/react.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/helpers/react.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/helpers/react.ts",
                "upstreamSha256": "sha256:3f11ca23fff5239a93a18db61ab20c140b01b2372cc3b744fc8785babed005fa",
                "contentSha256": "sha256:3f11ca23fff5239a93a18db61ab20c140b01b2372cc3b744fc8785babed005fa",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/helpers/style.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/helpers/style.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/helpers/style.ts",
                "upstreamSha256": "sha256:814e91365ce7955c4b96a56719f76177ad107013fb64dd0104defc539532279c",
                "contentSha256": "sha256:814e91365ce7955c4b96a56719f76177ad107013fb64dd0104defc539532279c",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/helpers/util.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/helpers/util.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/helpers/util.ts",
                "upstreamSha256": "sha256:db6f8b3c6d051cd538f600204c799680f79be91885e92cdf11e980f635ebc108",
                "contentSha256": "sha256:db6f8b3c6d051cd538f600204c799680f79be91885e92cdf11e980f635ebc108",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/hooks/useAvailableWidth.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/hooks/useAvailableWidth.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/hooks/useAvailableWidth.ts",
                "upstreamSha256": "sha256:1b90570110bbdd3946a22522eb6864daa6743ecf4993d4f46d5ea9ba14899985",
                "contentSha256": "sha256:1b90570110bbdd3946a22522eb6864daa6743ecf4993d4f46d5ea9ba14899985",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/hooks/useContentWidth.ts",
                "upstreamPath": "packages/react-responsive-pagination/src/hooks/useContentWidth.ts",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/hooks/useContentWidth.ts",
                "upstreamSha256": "sha256:ca34d109e1bca1e1516123e8c76f44b07b0eb38366031e83bbd26439ef336e8c",
                "contentSha256": "sha256:ca34d109e1bca1e1516123e8c76f44b07b0eb38366031e83bbd26439ef336e8c",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/hooks/useFoutDetector.tsx",
                "upstreamPath": "packages/react-responsive-pagination/src/hooks/useFoutDetector.tsx",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/hooks/useFoutDetector.tsx",
                "upstreamSha256": "sha256:028b9383b3bfe8f17c3b6a95159a603cdad97e5e1256204f437d4b5fb6707dd7",
                "contentSha256": "sha256:028b9383b3bfe8f17c3b6a95159a603cdad97e5e1256204f437d4b5fb6707dd7",
                "changes": []
              },
              {
                "shippedPath": "components/react-responsive-pagination/hooks/usePaginationItems.tsx",
                "upstreamPath": "packages/react-responsive-pagination/src/hooks/usePaginationItems.tsx",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/hooks/usePaginationItems.tsx",
                "upstreamSha256": "sha256:7874878636f1725d6e81fb6e2257d3e2aef6daf9781b5b949ec443aecba14915",
                "contentSha256": "sha256:a80bd4a9f48a6fedc13b69f4a489adb8c27f238554480a521ec7b64307c242d6",
                "changes": [
                  "Corrected a local TypeScript import specifier to the actual copied .tsx file extension so source-copy runtimes resolve it."
                ]
              },
              {
                "shippedPath": "components/react-responsive-pagination/hooks/useWidestComposition.tsx",
                "upstreamPath": "packages/react-responsive-pagination/src/hooks/useWidestComposition.tsx",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/hooks/useWidestComposition.tsx",
                "upstreamSha256": "sha256:e5bb458a59c44e921c701132c194c638d7c0a69fae7f5f864e887a5ea6e86c99",
                "contentSha256": "sha256:583f5fdc5d03b215f8fc36b592b6cf09964f01b15412321353ada71906893f3e",
                "changes": [
                  "Corrected local TypeScript import specifiers to the actual copied .tsx file extensions so source-copy runtimes resolve them."
                ]
              },
              {
                "shippedPath": "components/react-responsive-pagination/hooks/useWidthCalculator.tsx",
                "upstreamPath": "packages/react-responsive-pagination/src/hooks/useWidthCalculator.tsx",
                "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/packages/react-responsive-pagination/src/hooks/useWidthCalculator.tsx",
                "upstreamSha256": "sha256:881a16fa0f3a13322e827524b2f601a937266f92f4878a57595ad0b42dac424a",
                "contentSha256": "sha256:881a16fa0f3a13322e827524b2f601a937266f92f4878a57595ad0b42dac424a",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/react-responsive-pagination/src runtime closure",
            "copyright": [
              "Copyright (c) 2021 jonelantha"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/jonelantha/react-responsive-pagination/blob/a4b8427065ff62e4f8187215da4d5157a0345809/LICENSE",
              "sha256": "sha256:e43bf8c85aeba824a2de33dfcf936e65dab03dffce241fcc8e35e5ced473edb7",
              "localPath": "registry/sources/react-responsive-pagination/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-responsive-pagination/index.tsx",
              "change": "Added the client directive, labeled nav wrapper, explicit direction-aware defaults, local Tailwind interaction classes, and resolvable .tsx import specifiers.",
              "reason": "Provide the documented Next.js portability, semantic, localization, RTL, touch-target, focus-visible, and source-copy resolution adaptations without changing the measured composition algorithm."
            },
            {
              "shippedPath": "components/react-responsive-pagination/presets.tsx",
              "change": "Corrected labelBehaviour import specifiers from .ts to the copied .tsx extension.",
              "reason": "Make the exact source closure executable after source-copy installation."
            },
            {
              "shippedPath": "components/react-responsive-pagination/hooks/usePaginationItems.tsx",
              "change": "Corrected the useWidestComposition import specifier from .ts to the copied .tsx extension.",
              "reason": "Make the exact source closure executable after source-copy installation."
            },
            {
              "shippedPath": "components/react-responsive-pagination/hooks/useWidestComposition.tsx",
              "change": "Corrected useFoutDetector and useWidthCalculator import specifiers from .ts to their copied .tsx extensions.",
              "reason": "Make the exact source closure executable after source-copy installation."
            }
          ],
          "dedupe": {
            "family": "measured-adaptive-pagination",
            "sourceHash": "sha256:936fb3ea7f55355b862d0c78f36f1ac29ad352f412728f53ad4383996b001656",
            "contentHash": "sha256:8d74df3162a0fbc062d34bf4aaf9369248da6f7ba5be16ee9170f1d540679f39",
            "structureHash": "sha256:42ff5871f8764bf143e50102492197d746114ac74d32e44eab802ea9b0668e43"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "rich-textarea",
      "type": "registry:component",
      "title": "Rich Textarea",
      "description": "Decorates plain text through an assistive-technology-hidden backdrop while a native textarea retains editing and form behavior.",
      "author": "inokawa",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/textarea.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/rich-textarea/textarea.tsx"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/dom.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/dom.ts"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/observer.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/observer.ts"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/selection.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/selection.ts"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/useStatic.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/useStatic.ts"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/useIsomorphicLayoutEffect.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/useIsomorphicLayoutEffect.ts"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/utils.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/utils.tsx"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/types.ts"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/vendor/range-at-index.js",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/vendor/range-at-index.js"
        },
        {
          "path": "registry/sources/rich-textarea/components/rich-textarea/vendor/range-at-index.d.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/rich-textarea/vendor/range-at-index.d.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "textarea",
            "decoration",
            "highlighting",
            "form",
            "ime"
          ],
          "renderer": "dom",
          "preview": "previews/rich-textarea.tsx",
          "source": {
            "project": "Rich Textarea",
            "repository": "https://github.com/inokawa/rich-textarea",
            "revision": "044fbb88065f634203fee79ac2d745911505c36f",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/rich-textarea/textarea.tsx",
                "upstreamPath": "src/textarea.tsx",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/textarea.tsx",
                "upstreamSha256": "sha256:614432ca8956eeda49cbce1474fcc6dbeb92a4c6ca245e3b151616f5480a2640",
                "contentSha256": "sha256:614432ca8956eeda49cbce1474fcc6dbeb92a4c6ca245e3b151616f5480a2640",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/dom.ts",
                "upstreamPath": "src/dom.ts",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/dom.ts",
                "upstreamSha256": "sha256:cac8d0519552cf11799fd5e0971c70ee6dc8a6bc9ec39c4952761385ab3265ff",
                "contentSha256": "sha256:cac8d0519552cf11799fd5e0971c70ee6dc8a6bc9ec39c4952761385ab3265ff",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/observer.ts",
                "upstreamPath": "src/observer.ts",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/observer.ts",
                "upstreamSha256": "sha256:7f16bb34cd7ce05b4750be1e5bed27d8e0b67dfee5d0800af33e40d75c4c8221",
                "contentSha256": "sha256:7f16bb34cd7ce05b4750be1e5bed27d8e0b67dfee5d0800af33e40d75c4c8221",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/selection.ts",
                "upstreamPath": "src/selection.ts",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/selection.ts",
                "upstreamSha256": "sha256:08d7492b1eeca27820f0a76706833dac561cb2f7e0a4da1c9dae480270db1ad9",
                "contentSha256": "sha256:08d7492b1eeca27820f0a76706833dac561cb2f7e0a4da1c9dae480270db1ad9",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/useStatic.ts",
                "upstreamPath": "src/useStatic.ts",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/useStatic.ts",
                "upstreamSha256": "sha256:6b83aac2636b528856928ed225a32f53ce0db55cb91ff423e25456039cd5ab1b",
                "contentSha256": "sha256:6b83aac2636b528856928ed225a32f53ce0db55cb91ff423e25456039cd5ab1b",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/useIsomorphicLayoutEffect.ts",
                "upstreamPath": "src/useIsomorphicLayoutEffect.ts",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/useIsomorphicLayoutEffect.ts",
                "upstreamSha256": "sha256:437c6c6a716d397ce422220f24837fb562cbc21b969029078baf284d24fc7bea",
                "contentSha256": "sha256:437c6c6a716d397ce422220f24837fb562cbc21b969029078baf284d24fc7bea",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/utils.tsx",
                "upstreamPath": "src/utils.tsx",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/utils.tsx",
                "upstreamSha256": "sha256:ab36756de2c9bb31b3eb3cb94189180cfce41677a3100e12dc560199da413d46",
                "contentSha256": "sha256:ab36756de2c9bb31b3eb3cb94189180cfce41677a3100e12dc560199da413d46",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/types.ts",
                "upstreamPath": "src/types.ts",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/types.ts",
                "upstreamSha256": "sha256:5c37ca9e564ee3d00776f4768c5aa4745e8c4610d537c1c8ca537642fc901cac",
                "contentSha256": "sha256:5c37ca9e564ee3d00776f4768c5aa4745e8c4610d537c1c8ca537642fc901cac",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/vendor/range-at-index.js",
                "upstreamPath": "src/vendor/range-at-index.js",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/vendor/range-at-index.js",
                "upstreamSha256": "sha256:acf8d3ae86a6b2adf9bf7e781c73cfd88d1d4e54298e3edae4f32a9ad6340878",
                "contentSha256": "sha256:acf8d3ae86a6b2adf9bf7e781c73cfd88d1d4e54298e3edae4f32a9ad6340878",
                "changes": []
              },
              {
                "shippedPath": "components/rich-textarea/vendor/range-at-index.d.ts",
                "upstreamPath": "src/vendor/range-at-index.d.ts",
                "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/src/vendor/range-at-index.d.ts",
                "upstreamSha256": "sha256:c8cb5aab066b2a4ef0733f0655c2388f5fcbe0a1bbfe192ceab355c69c292688",
                "contentSha256": "sha256:c8cb5aab066b2a4ef0733f0655c2388f5fcbe0a1bbfe192ceab355c69c292688",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/textarea.tsx and its imported support closure under src",
            "copyright": [
              "Copyright (c) 2021 inokawa"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/inokawa/rich-textarea/blob/044fbb88065f634203fee79ac2d745911505c36f/LICENSE",
              "sha256": "sha256:3d77b6ef2ad044224a09656d5361e71cefc7de3d66995dcfc7c3b2e291640b7c",
              "localPath": "registry/sources/rich-textarea/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "decorated-native-text-entry",
            "sourceHash": "sha256:3f5de5cb6c9213c898a8d0bb345a5d0ba8387a2f0df0992f42b5b6172d0e70d9",
            "contentHash": "sha256:3f5de5cb6c9213c898a8d0bb345a5d0ba8387a2f0df0992f42b5b6172d0e70d9",
            "structureHash": "sha256:e54d93455fdbf904c1ef915c6d1ed7ee7f1fc2e022362953f0210df5ea183ca8"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ruixen-chapter-scrubber",
      "type": "registry:component",
      "title": "Ruixen Chapter Scrubber",
      "description": "Navigates a caller-provided chapter list through a compact magnifying rail with a contextual preview.",
      "author": "Ruixen UI",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.23.25",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ruixen-ui/components/ruixen-chapter-scrubber/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/chapter-scrubber/index.tsx"
        },
        {
          "path": "registry/sources/ruixen-ui/components/shared/ruixen-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shared/ruixen-utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "chapters",
            "scrubber",
            "listbox",
            "roving-focus",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/ruixen-chapter-scrubber.tsx",
          "source": {
            "project": "Ruixen UI",
            "repository": "https://github.com/ruixenui/ruixen.com",
            "revision": "3574611de5e9b914b959fc620cd5a9abace8a421",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ruixen-chapter-scrubber/index.tsx",
                "upstreamPath": "registry/ruixenui/chapter-scrubber.tsx",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/registry/ruixenui/chapter-scrubber.tsx",
                "upstreamSha256": "sha256:98cac777bc0b7536938c0ea0fcde1d6d1ffa67010ccd458a2e039ee989a9b5df",
                "contentSha256": "sha256:ee876a69cbac1883daa59c05ff790044c7ee070fb65824ec5da36fe0ffbd2031",
                "changes": [
                  "Repointed the source utility import to the copied Ruixen utility subset.",
                  "Bounded caller geometry and the roving focus index, and added pointer cancellation handling.",
                  "Replaced animated width, top, and motion shorthand updates with origin-aware transform strings and made repeated keyboard navigation settle immediately."
                ]
              },
              {
                "shippedPath": "components/shared/ruixen-utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/lib/utils.ts",
                "upstreamSha256": "sha256:68b01fbd03f6a0750e72a9b644ea360646dc4ba6730b0d3720998a3c737c7491",
                "contentSha256": "sha256:e852767cca91a44e607302855e3e1f7d0af0c1ca88e000e8274de673d8110022",
                "changes": [
                  "Copied only the source cn helper and its clsx and tailwind-merge imports, omitting unrelated application metadata, environment, fetch, date, and text helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/ruixenui/chapter-scrubber.tsx and the cn subset of lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Ruixen UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/LICENSE.md",
              "sha256": "sha256:091f9e6fbe099673062bb51720462ac33524a394eadb60d2492979dd3faa57f6",
              "localPath": "registry/sources/ruixen-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ruixen-chapter-scrubber/index.tsx",
              "change": "Moved all continuous visual movement to origin-aware transform strings, bounded dynamic inputs, and made arrow-key traversal immediate.",
              "reason": "Preserve the source magnifying-rail interaction while avoiding layout animation, keyboard lag, invalid geometry, and stale pointer state."
            },
            {
              "shippedPath": "components/shared/ruixen-utils.ts",
              "change": "Reduced the source application utility file to the exact cn closure used by the component.",
              "reason": "Avoid shipping unrelated Next-specific application code while preserving the source class-merging behavior."
            }
          ],
          "dedupe": {
            "family": "magnifying-chapter-rail",
            "sourceHash": "sha256:e41b368548c266854d8fccd9820e53e52bd2340b22dfcec03435e9e33d72c006",
            "contentHash": "sha256:642c24203f451dd09e87f53652a30c54a1ea075a3ecdd40fb46613a8b6f150e7",
            "structureHash": "sha256:ee06f715217ac5294d5c4a1ed98102aa8672e46c983cb050031e50f81536e5f7"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ruixen-live-waveform",
      "type": "registry:component",
      "title": "Ruixen Live Waveform",
      "description": "Visualizes microphone frequency data or a bounded processing state on a responsive canvas.",
      "author": "Ruixen UI",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.545.0",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ruixen-ui/components/ruixen-live-waveform/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/live-waveform/index.tsx"
        },
        {
          "path": "registry/sources/ruixen-ui/components/shared/ruixen-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shared/ruixen-utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "audio",
            "waveform",
            "microphone",
            "canvas",
            "processing"
          ],
          "renderer": "canvas",
          "preview": "previews/ruixen-live-waveform.tsx",
          "source": {
            "project": "Ruixen UI",
            "repository": "https://github.com/ruixenui/ruixen.com",
            "revision": "3574611de5e9b914b959fc620cd5a9abace8a421",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ruixen-live-waveform/index.tsx",
                "upstreamPath": "registry/ruixenui/live-waveform.tsx",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/registry/ruixenui/live-waveform.tsx",
                "upstreamSha256": "sha256:a16de8414dd64b99d17282e3ba83c06bc800224170337854c5160c16ac70146a",
                "contentSha256": "sha256:de23be36e111cb60ddb59cfa277212b4a36c2c6b7117d687f2736c2f24d2a108",
                "changes": [
                  "Repointed the source utility import to the copied Ruixen utility subset.",
                  "Bounded draw geometry and device pixel ratio, cached layout and color reads, paused offscreen and hidden work, and reduced active sampling under reduced motion.",
                  "Added accessible canvas labeling, non-submit stop behavior, caller-owned microphone error reporting, and complete animation, observer, stream, and audio-context cleanup."
                ]
              },
              {
                "shippedPath": "components/shared/ruixen-utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/lib/utils.ts",
                "upstreamSha256": "sha256:68b01fbd03f6a0750e72a9b644ea360646dc4ba6730b0d3720998a3c737c7491",
                "contentSha256": "sha256:e852767cca91a44e607302855e3e1f7d0af0c1ca88e000e8274de673d8110022",
                "changes": [
                  "Copied only the source cn helper and its clsx and tailwind-merge imports, omitting unrelated application metadata, environment, fetch, date, and text helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/ruixenui/live-waveform.tsx and the cn subset of lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Ruixen UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/LICENSE.md",
              "sha256": "sha256:091f9e6fbe099673062bb51720462ac33524a394eadb60d2492979dd3faa57f6",
              "localPath": "registry/sources/ruixen-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ruixen-live-waveform/index.tsx",
              "change": "Made the copied canvas loop bounded, visibility-aware, reduced-motion-aware, error-reporting, and fully disposable.",
              "reason": "Keep the source waveform renderer without perpetual hidden work, unsafe geometry, console-only failures, or leaked browser resources."
            },
            {
              "shippedPath": "components/shared/ruixen-utils.ts",
              "change": "Reduced the source application utility file to the exact cn closure used by the component.",
              "reason": "Avoid shipping unrelated Next-specific application code while preserving the source class-merging behavior."
            }
          ],
          "dedupe": {
            "family": "microphone-processing-waveform",
            "sourceHash": "sha256:7aace0f80523b0c5750b9300cce8c93e2cf6c48d36e38ab6477c9e4afa04603e",
            "contentHash": "sha256:815818e3868f784edbec9b5988a948bbf0c726249687f6c30069e4ea5206874a",
            "structureHash": "sha256:16f7a4baf6dbf81e69ee4365a3aea302805d33d855d6d1a26a260042c48ea2f0"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ruixen-smart-paste-input",
      "type": "registry:component",
      "title": "Ruixen Smart Paste Input",
      "description": "Captures long pasted text as editable caller-owned attachments inside an accessible message composer.",
      "author": "Ruixen UI",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.545.0",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [
        "button",
        "dialog",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/sources/ruixen-ui/components/ruixen-smart-paste-input/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/smart-paste-input/index.tsx"
        },
        {
          "path": "registry/sources/ruixen-ui/components/shared/ruixen-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shared/ruixen-utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "paste",
            "composer",
            "attachments",
            "dialog",
            "controlled-state"
          ],
          "renderer": "dom",
          "preview": "previews/ruixen-smart-paste-input.tsx",
          "source": {
            "project": "Ruixen UI",
            "repository": "https://github.com/ruixenui/ruixen.com",
            "revision": "3574611de5e9b914b959fc620cd5a9abace8a421",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ruixen-smart-paste-input/index.tsx",
                "upstreamPath": "registry/ruixenui/smart-paste-input.tsx",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/registry/ruixenui/smart-paste-input.tsx",
                "upstreamSha256": "sha256:eb0c9c4910bfe6807fbd5349021b207a47068a1fd8e4cac72582e37d8ef5e0e5",
                "contentSha256": "sha256:8a7aa757c389dd8e02bd202a4fdc99bd54fe63aaf297de915c53e0701df0c184",
                "changes": [
                  "Repointed the source utility import to the copied Ruixen utility subset.",
                  "Bounded the autosizing input, added explicit non-submit button types, replaced transition-all, and disabled positional hover motion under reduced motion.",
                  "Kept the source shadcn button, dialog, and textarea dependencies explicit as registry dependencies."
                ]
              },
              {
                "shippedPath": "components/shared/ruixen-utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/lib/utils.ts",
                "upstreamSha256": "sha256:68b01fbd03f6a0750e72a9b644ea360646dc4ba6730b0d3720998a3c737c7491",
                "contentSha256": "sha256:e852767cca91a44e607302855e3e1f7d0af0c1ca88e000e8274de673d8110022",
                "changes": [
                  "Copied only the source cn helper and its clsx and tailwind-merge imports, omitting unrelated application metadata, environment, fetch, date, and text helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/ruixenui/smart-paste-input.tsx and the cn subset of lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Ruixen UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/LICENSE.md",
              "sha256": "sha256:091f9e6fbe099673062bb51720462ac33524a394eadb60d2492979dd3faa57f6",
              "localPath": "registry/sources/ruixen-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ruixen-smart-paste-input/index.tsx",
              "change": "Made the copied composer safe inside forms, bounded its autosizing input, and narrowed its transitions with reduced-motion fallbacks.",
              "reason": "Preserve the source long-paste workflow while preventing accidental parent form submits and indiscriminate or unwanted movement."
            },
            {
              "shippedPath": "components/shared/ruixen-utils.ts",
              "change": "Reduced the source application utility file to the exact cn closure used by the component.",
              "reason": "Avoid shipping unrelated Next-specific application code while preserving the source class-merging behavior."
            }
          ],
          "dedupe": {
            "family": "long-paste-attachment-composer",
            "sourceHash": "sha256:7fe47be1b3fad53e2ce3664fc9f8cda99ad93b0929694a8c2a00006cbbebbdf2",
            "contentHash": "sha256:b551361e7845a525af04f307abc6c9512ee62c767152799524376547f2b68d69",
            "structureHash": "sha256:f12b07e111fbc8db9076ad8587a89ea49bc93ca56a4c628de297bffc9deffdb4"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ruixen-spark-chart",
      "type": "registry:component",
      "title": "Ruixen Spark Chart",
      "description": "Scrubs a caller-provided sparkline with pointer, touch, or keyboard input and reports the active value.",
      "author": "Ruixen UI",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ruixen-ui/components/ruixen-spark-chart/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/spark-chart/index.tsx"
        },
        {
          "path": "registry/sources/ruixen-ui/components/shared/ruixen-utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shared/ruixen-utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "sparkline",
            "chart",
            "scrubber",
            "keyboard",
            "touch"
          ],
          "renderer": "svg",
          "preview": "previews/ruixen-spark-chart.tsx",
          "source": {
            "project": "Ruixen UI",
            "repository": "https://github.com/ruixenui/ruixen.com",
            "revision": "3574611de5e9b914b959fc620cd5a9abace8a421",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ruixen-spark-chart/index.tsx",
                "upstreamPath": "registry/ruixenui/spark-chart.tsx",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/registry/ruixenui/spark-chart.tsx",
                "upstreamSha256": "sha256:3a52ed9598508deeb16b10a7d984dbc70a4168e45891976b3bb8d618eca02042",
                "contentSha256": "sha256:58ab3e6f8111ee9aa10045363b125f135d8eca94b790b7e1e6b74ce614bc4e77",
                "changes": [
                  "Repointed the source utility import to the copied Ruixen utility subset.",
                  "Added finite-data and geometry guards, slider semantics, keyboard navigation, touch-safe pointer capture, focus feedback, and caller-owned accessible labeling.",
                  "Removed the automatic 800 millisecond draw-in animation and retained only direct scrub feedback."
                ]
              },
              {
                "shippedPath": "components/shared/ruixen-utils.ts",
                "upstreamPath": "lib/utils.ts",
                "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/lib/utils.ts",
                "upstreamSha256": "sha256:68b01fbd03f6a0750e72a9b644ea360646dc4ba6730b0d3720998a3c737c7491",
                "contentSha256": "sha256:e852767cca91a44e607302855e3e1f7d0af0c1ca88e000e8274de673d8110022",
                "changes": [
                  "Copied only the source cn helper and its clsx and tailwind-merge imports, omitting unrelated application metadata, environment, fetch, date, and text helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/ruixenui/spark-chart.tsx and the cn subset of lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 Ruixen UI"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/ruixenui/ruixen.com/blob/3574611de5e9b914b959fc620cd5a9abace8a421/LICENSE.md",
              "sha256": "sha256:091f9e6fbe099673062bb51720462ac33524a394eadb60d2492979dd3faa57f6",
              "localPath": "registry/sources/ruixen-ui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ruixen-spark-chart/index.tsx",
              "change": "Added bounded input handling and equivalent pointer, touch, focus, and keyboard scrubbing while removing the source load animation.",
              "reason": "Keep the original path-following chart interaction without pointer-only access, invalid geometry, scroll blocking, or frequent decorative motion."
            },
            {
              "shippedPath": "components/shared/ruixen-utils.ts",
              "change": "Reduced the source application utility file to the exact cn closure used by the component.",
              "reason": "Avoid shipping unrelated Next-specific application code while preserving the source class-merging behavior."
            }
          ],
          "dedupe": {
            "family": "interactive-sparkline-scrubber",
            "sourceHash": "sha256:0a2aa98b16aee17acd29df763f2945fdabd563dbfa68407aa1fa93b91c1559d3",
            "contentHash": "sha256:3b138289ae6e443de97d1f09bbec1967912e0c090a3f60aa20ed7a3412c9f92d",
            "structureHash": "sha256:953d8cc4cdde4c8272ada044d3bf28328dbee75640474e2e61f9074080696642"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-attachment",
      "type": "registry:component",
      "title": "Attachment",
      "description": "Displays file metadata, progress state, actions, and a full-card trigger.",
      "author": "shadcn",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "radix-ui@1.4.3",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/attachment.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/attachment.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/button.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "attachment",
            "file",
            "upload-state"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-attachment.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/radix-nova/attachment.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/attachment.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/attachment.tsx",
                "upstreamSha256": "sha256:3ddc465b06a4423b2d1e5fabdde98721be936c08a33684449ea0038659f041a2",
                "contentSha256": "sha256:67baaa82cb987885890973b2469667e086b4c0c4ddcfc009254782426be788b4",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports.",
                  "Disabled nonessential animation and transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/radix-nova/button.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/button.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/button.tsx",
                "upstreamSha256": "sha256:f8f9ad17328a21e723d5bad69438c8464ba685aa4eb4db61abe44829ebe309aa",
                "contentSha256": "sha256:c3eb5a813ce13395a57c29b058dd5335c6d36d317993de587712bbba2485dab1",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled transform transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/bases/radix/ui/attachment.tsx, apps/v4/registry/bases/radix/ui/button.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/radix-nova/attachment.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports. Disabled nonessential animation and transitions under reduced motion.",
              "reason": "Ship the official component family with its generated styling, bidirectional behavior, portable imports, and reduced-motion fallback."
            },
            {
              "shippedPath": "components/radix-nova/button.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled transform transitions under reduced motion.",
              "reason": "Bundle the exact support closure required by the installed component."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item.",
              "reason": "Bundle the exact support closure required by the installed component."
            }
          ],
          "dedupe": {
            "family": "file-attachment-card",
            "sourceHash": "sha256:16582942014225ddcc04ee71b5777efd5e2745061a824b0216242fac003b4125",
            "contentHash": "sha256:3d2468b48aa2e0e0035b5d92eda6d92b2910d4b02982979dd988794ca8d83e20",
            "structureHash": "sha256:8334c82e67c95f11a227e4661dbc1b7e85e4c9a0ac44810e2bf59260dd624572"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-bubble",
      "type": "registry:component",
      "title": "Bubble",
      "description": "Composes aligned message bubbles with optional reactions.",
      "author": "shadcn",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "radix-ui@1.4.3",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/bubble.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/bubble.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "bubble",
            "message",
            "reaction"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-bubble.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/radix-nova/bubble.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/bubble.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/bubble.tsx",
                "upstreamSha256": "sha256:61d5805b9b588e60a446c5ee971fabd4466b2fce9af5dc940cd33ac9378bdc5f",
                "contentSha256": "sha256:75cc848d01a4151e0edd0a72b80d4de277e61ac4fcced8595c7b31fb8341d477",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports.",
                  "Disabled nonessential animation and transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/bases/radix/ui/bubble.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/radix-nova/bubble.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports. Disabled nonessential animation and transitions under reduced motion.",
              "reason": "Ship the official component family with its generated styling, bidirectional behavior, portable imports, and reduced-motion fallback."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item.",
              "reason": "Bundle the exact support closure required by the installed component."
            }
          ],
          "dedupe": {
            "family": "message-bubble",
            "sourceHash": "sha256:bb499ff9d3e38e7fe44753737d3eae3493035ba6785c0bb7e9306315172f2f46",
            "contentHash": "sha256:8833c52d0a721d19b595fb01b24c97fcc903c5cb654cc3b91a0866d89b7f227a",
            "structureHash": "sha256:da80bdd889a9d8063142b8128fdf2c338981b6e937d898af3cc03e62d234bd32"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-calendar-custom-days",
      "type": "registry:component",
      "title": "Calendar Custom Days",
      "description": "Adds caller-rendered metadata to selectable calendar days.",
      "author": "shadcn",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "date-fns@4.1.0",
        "lucide-react@0.474.0",
        "radix-ui@1.4.3",
        "react-day-picker@9.8.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/shadcn-calendar-custom-days/calendar-custom-days.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/shadcn-calendar-custom-days/calendar-custom-days.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/calendar.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/calendar.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/button.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/card.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/card.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "calendar",
            "date-range",
            "day-metadata"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-calendar-custom-days.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/shadcn-calendar-custom-days/calendar-custom-days.tsx",
                "upstreamPath": "apps/v4/examples/radix/calendar-custom-days.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/examples/radix/calendar-custom-days.tsx",
                "upstreamSha256": "sha256:084ede01adf3e7f53bd51214648897875e4570b054065131449e49e44a96003e",
                "contentSha256": "sha256:f88794652977904d8ddcbb5ea1107f72df5333a8c8e5d910076c85e0e78d66ba",
                "changes": [
                  "Changed generated style imports to bundled relative paths.",
                  "Lifted the fixed range and price labels into defaultRange, onRangeChange, and renderDayMeta props."
                ]
              },
              {
                "shippedPath": "components/radix-nova/calendar.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/calendar.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/calendar.tsx",
                "upstreamSha256": "sha256:5f4275762945548864d0fd73d9f13de587417e5aea3e2815a95a1392c80a026d",
                "contentSha256": "sha256:f268516e9ff518dca21b2dff7d81a47f7fa166d86ccaf1f6540d168d83e43131",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/button.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/button.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/button.tsx",
                "upstreamSha256": "sha256:f8f9ad17328a21e723d5bad69438c8464ba685aa4eb4db61abe44829ebe309aa",
                "contentSha256": "sha256:c3eb5a813ce13395a57c29b058dd5335c6d36d317993de587712bbba2485dab1",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled transform transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/radix-nova/card.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/card.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/card.tsx",
                "upstreamSha256": "sha256:c12b939823f0852f24830ad425247111f9f49e6e565d89cda0db742676d42bc2",
                "contentSha256": "sha256:07303fefbc3fa04cb519e1db06abb2b18d3bb396dc01dd0154f6f8ee3bd301d7",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/examples/radix/calendar-custom-days.tsx, apps/v4/registry/bases/radix/ui/calendar.tsx, apps/v4/registry/bases/radix/ui/button.tsx, apps/v4/registry/bases/radix/ui/card.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/shadcn-calendar-custom-days/calendar-custom-days.tsx",
              "change": "Changed generated style imports to bundled relative paths. Lifted the fixed range and price labels into defaultRange, onRangeChange, and renderDayMeta props.",
              "reason": "Expose the copied composition as a reusable, portable component while preserving its interaction and rendering model."
            },
            {
              "shippedPath": "components/radix-nova/calendar.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/button.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled transform transitions under reduced motion.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/card.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper.",
              "reason": "Keep the copied support closure limited to the cn helper used by the installed component and avoid a Next environment dependency."
            }
          ],
          "dedupe": {
            "family": "calendar-day-metadata",
            "sourceHash": "sha256:a16387f5ea61ac582373e1d19711892be0d4d2fa4988db0f52068b5314ea1f28",
            "contentHash": "sha256:ba3dcce9f8d22162c576b956df46f7ffb90b115403425c79313d05201bd4b519",
            "structureHash": "sha256:0ea477a3a0b4352b5201ec3f07925451d8a7f9d77aa3d520843d0d07c865d6b3"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-calendar-hijri",
      "type": "registry:component",
      "title": "Hijri Calendar",
      "description": "Renders a reusable RTL Hijri calendar with a self-hosted Arabic typeface.",
      "author": "shadcn",
      "dependencies": [
        "@fontsource-variable/vazirmatn@5.3.0",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.474.0",
        "radix-ui@1.4.3",
        "react-day-picker@9.8.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/shadcn-calendar-hijri/calendar-hijri.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/shadcn-calendar-hijri/calendar-hijri.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/button.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "calendar",
            "hijri",
            "rtl"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-calendar-hijri.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/shadcn-calendar-hijri/calendar-hijri.tsx",
                "upstreamPath": "apps/v4/examples/radix/calendar-hijri.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/examples/radix/calendar-hijri.tsx",
                "upstreamSha256": "sha256:54bca767380ca93ca6892cdef52d5233a6a3b4c498b5410fbd1d172c536f9f17",
                "contentSha256": "sha256:14c2a635abad3b45a249c662e12c91777514f751a0bdd857d2a560df5f9e3be0",
                "changes": [
                  "Changed utility and generated style imports to bundled relative paths.",
                  "Removed the Next-only Google font loader, self-hosted Vazirmatn through @fontsource-variable/vazirmatn, exported the existing generic calendar instead of the parameterless fixture, and defaulted direction and physical utilities to RTL-safe logical equivalents."
                ]
              },
              {
                "shippedPath": "components/radix-nova/button.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/button.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/button.tsx",
                "upstreamSha256": "sha256:f8f9ad17328a21e723d5bad69438c8464ba685aa4eb4db61abe44829ebe309aa",
                "contentSha256": "sha256:c3eb5a813ce13395a57c29b058dd5335c6d36d317993de587712bbba2485dab1",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled transform transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/examples/radix/calendar-hijri.tsx, apps/v4/registry/bases/radix/ui/button.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE",
              "registry/sources/shadcn-ui/Vazirmatn-OFL.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/shadcn-calendar-hijri/calendar-hijri.tsx",
              "change": "Changed utility and generated style imports to bundled relative paths. Removed the Next-only Google font loader, self-hosted Vazirmatn through @fontsource-variable/vazirmatn, exported the existing generic calendar instead of the parameterless fixture, and defaulted direction and physical utilities to RTL-safe logical equivalents.",
              "reason": "Expose the copied composition as a reusable, portable component while preserving its interaction and rendering model."
            },
            {
              "shippedPath": "components/radix-nova/button.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled transform transitions under reduced motion.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper.",
              "reason": "Keep the copied support closure limited to the cn helper used by the installed component and avoid a Next environment dependency."
            }
          ],
          "dedupe": {
            "family": "hijri-calendar",
            "sourceHash": "sha256:22f35460a5344e86fa1c3f073933269f0a330a40f9cc605157c5e389496619f6",
            "contentHash": "sha256:4fb6a35e570baad0e790d350182136f6009b2e15305c7fb654b52f019b9865e2",
            "structureHash": "sha256:0780c3a627c40af329652778bf677b5223a246944f390309d797c86fcfc9188e"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          },
          "dependencyNotices": [
            {
              "dependency": "@fontsource-variable/vazirmatn@5.3.0",
              "spdx": "OFL-1.1",
              "copyright": [
                "Copyright 2015 The Vazirmatn Project Authors (https://github.com/rastikerdar/vazirmatn)"
              ],
              "evidence": {
                "repository": "https://github.com/fontsource/font-files",
                "revision": "02b28c06b126c852a5b966b44aef777ca923f6f6",
                "tarball": "https://registry.npmjs.org/@fontsource-variable/vazirmatn/-/vazirmatn-5.3.0.tgz",
                "integrity": "sha512-ZA68W8JHbMdNzzwjYHUWKB2PH22QpxNEnk0ukcXM+XiqYMV6ZWJZAKuNXcrMR2JjuIAwsfAU3KknCXPI6wXUvw==",
                "localPath": "registry/sources/shadcn-ui/Vazirmatn-OFL.txt",
                "sha256": "sha256:e6f4ce7b6c830d5a25a4f8ac777c267cd7d3c180bc2a7150ca57cbb9b280c4b7"
              }
            }
          ]
        }
      }
    },
    {
      "name": "shadcn-calendar-time",
      "type": "registry:component",
      "title": "Calendar with Time",
      "description": "Combines a single-date calendar with named native start and end time inputs.",
      "author": "shadcn",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.474.0",
        "radix-ui@1.4.3",
        "react-day-picker@9.8.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/shadcn-calendar-time/calendar-time.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/shadcn-calendar-time/calendar-time.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/calendar.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/calendar.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/button.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/card.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/card.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/field.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/field.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/input-group.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/input-group.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/input.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/input.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/label.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/label.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/separator.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/separator.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/textarea.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/textarea.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "calendar",
            "date",
            "time-range"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-calendar-time.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/shadcn-calendar-time/calendar-time.tsx",
                "upstreamPath": "apps/v4/examples/radix/calendar-time.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/examples/radix/calendar-time.tsx",
                "upstreamSha256": "sha256:962d1181586e53d9bd50b6e9281afdf1ed59a317e6e61e8fb11c4be338378bc8",
                "contentSha256": "sha256:229f056ed4f9a0fce416b1609d60d5f18517189c8eb0afae5c187e0182a40d2c",
                "changes": [
                  "Changed generated style imports to bundled relative paths.",
                  "Lifted initial date and time values into props, added optional field names and a date callback, and replaced fixed IDs with useId-generated IDs."
                ]
              },
              {
                "shippedPath": "components/radix-nova/calendar.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/calendar.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/calendar.tsx",
                "upstreamSha256": "sha256:5f4275762945548864d0fd73d9f13de587417e5aea3e2815a95a1392c80a026d",
                "contentSha256": "sha256:f268516e9ff518dca21b2dff7d81a47f7fa166d86ccaf1f6540d168d83e43131",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/button.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/button.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/button.tsx",
                "upstreamSha256": "sha256:f8f9ad17328a21e723d5bad69438c8464ba685aa4eb4db61abe44829ebe309aa",
                "contentSha256": "sha256:c3eb5a813ce13395a57c29b058dd5335c6d36d317993de587712bbba2485dab1",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled transform transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/radix-nova/card.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/card.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/card.tsx",
                "upstreamSha256": "sha256:c12b939823f0852f24830ad425247111f9f49e6e565d89cda0db742676d42bc2",
                "contentSha256": "sha256:07303fefbc3fa04cb519e1db06abb2b18d3bb396dc01dd0154f6f8ee3bd301d7",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/field.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/field.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/field.tsx",
                "upstreamSha256": "sha256:a11361f3ed68a231905f1dd5d5aac2fd578bce196ee6f161ac74d47b42169fd5",
                "contentSha256": "sha256:03cad9373c9bf0053c91736a313705c2edbaab6740338702e1c463fdbaacf961",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/input-group.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/input-group.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/input-group.tsx",
                "upstreamSha256": "sha256:c6a2f723b6793d673028016507c0c6307f89c7553f552ea5770a755907cae9b0",
                "contentSha256": "sha256:1c93ff2e4b68af37057d718eac5a53be27903b2f85341968891e0d1f17ae7919",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/input.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/input.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/input.tsx",
                "upstreamSha256": "sha256:cace577b40968ce734f3b5daf42748e2eab820e380822bfc4e1256b2318135d7",
                "contentSha256": "sha256:dcf4d0c7e714734d91d70a26d3de2140958ea3751a79c13adbb873cb133352c9",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/label.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/label.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/label.tsx",
                "upstreamSha256": "sha256:88e7b260887a73d6f311e57a94a9f080151222a360bb98eef547f833d5fe2903",
                "contentSha256": "sha256:d44a926c7c1bbcd2c37c025ec265ab9825f68f970ebb00fe6f60518a012f6858",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/separator.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/separator.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/separator.tsx",
                "upstreamSha256": "sha256:7ae98811c81382d00522d5d015d2b76d8f552bfec99446cfc50e80c251e6e3ff",
                "contentSha256": "sha256:637a56a7819e389948eda592a965105bb147723be6048121d180dbb95c7c0992",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/textarea.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/textarea.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/textarea.tsx",
                "upstreamSha256": "sha256:f58c44c6898edfc1c533284329efcd83428c5cb4bd2d666213c273852d089dd5",
                "contentSha256": "sha256:568c2c73abe79ea003e0f16f4c4ed5b20f0c0a0540a4cb68de776e129756aa0c",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/examples/radix/calendar-time.tsx, apps/v4/registry/bases/radix/ui/calendar.tsx, apps/v4/registry/bases/radix/ui/button.tsx, apps/v4/registry/bases/radix/ui/card.tsx, apps/v4/registry/bases/radix/ui/field.tsx, apps/v4/registry/bases/radix/ui/input-group.tsx, apps/v4/registry/bases/radix/ui/input.tsx, apps/v4/registry/bases/radix/ui/label.tsx, apps/v4/registry/bases/radix/ui/separator.tsx, apps/v4/registry/bases/radix/ui/textarea.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/shadcn-calendar-time/calendar-time.tsx",
              "change": "Changed generated style imports to bundled relative paths. Lifted initial date and time values into props, added optional field names and a date callback, and replaced fixed IDs with useId-generated IDs.",
              "reason": "Expose the copied composition as a reusable, portable component while preserving its interaction and rendering model."
            },
            {
              "shippedPath": "components/radix-nova/calendar.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/button.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled transform transitions under reduced motion.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/card.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/field.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/input-group.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/input.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/label.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/separator.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/textarea.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper.",
              "reason": "Keep the copied support closure limited to the cn helper used by the installed component and avoid a Next environment dependency."
            }
          ],
          "dedupe": {
            "family": "calendar-date-time-range",
            "sourceHash": "sha256:6dfb6c902b5efebe365629e1b7b9ca57f9010a4757f655129fa4a02ce300c9ef",
            "contentHash": "sha256:0485c40fa87d0f822a505afc5a8a53afd5ca6561d83f4ee67f2fc97466c6b313",
            "structureHash": "sha256:089f3541cf33d2a93d42cd03812bb7c11fb949c35fa7cffd011155068011ca02"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-chart",
      "type": "registry:component",
      "title": "Chart",
      "description": "Provides responsive Recharts theming, tooltip, and legend composition.",
      "author": "shadcn",
      "dependencies": [
        "clsx@2.1.1",
        "recharts@3.8.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/chart.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/chart.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "chart",
            "recharts",
            "tooltip"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-chart.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/radix-nova/chart.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/chart.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/chart.tsx",
                "upstreamSha256": "sha256:b0f3a00360f28c4961cb529ad4b9b56f7bda41a3975a7c72ebdc8e48ac99c077",
                "contentSha256": "sha256:f95cd01582bc8715403267ae6a3e51efdd696f01a38f7164c84665b7f8646363",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/bases/radix/ui/chart.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/radix-nova/chart.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports.",
              "reason": "Ship the official component family with its generated styling, bidirectional behavior, portable imports, and reduced-motion fallback."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item.",
              "reason": "Bundle the exact support closure required by the installed component."
            }
          ],
          "dedupe": {
            "family": "recharts-theme-container",
            "sourceHash": "sha256:0f5a23e9fece0cbde7be0c7577d9174092eacd236276a7ea1e7191a6de1ca8cb",
            "contentHash": "sha256:d2fdf9b520b7653cbd011f8debc1410707f48f482e0c0a3ab9d0634c8cffe8d9",
            "structureHash": "sha256:d7f736dcb80eb965d0da97f9af6e1f6cd169b2257e4a872733999f082a05aa93"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-date-picker-natural-language",
      "type": "registry:component",
      "title": "Natural Language Date Picker",
      "description": "Parses typed natural-language dates and synchronizes them with a calendar popover.",
      "author": "shadcn",
      "dependencies": [
        "chrono-node@2.8.4",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.474.0",
        "radix-ui@1.4.3",
        "react-day-picker@9.8.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/shadcn-date-picker-natural-language/date-picker-natural-language.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/shadcn-date-picker-natural-language/date-picker-natural-language.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/calendar.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/calendar.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/button.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/field.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/field.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/input-group.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/input-group.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/input.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/input.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/label.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/label.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/popover.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/popover.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/separator.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/separator.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/textarea.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/textarea.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "date-picker",
            "natural-language",
            "popover"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-date-picker-natural-language.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/shadcn-date-picker-natural-language/date-picker-natural-language.tsx",
                "upstreamPath": "apps/v4/examples/radix/date-picker-natural-language.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/examples/radix/date-picker-natural-language.tsx",
                "upstreamSha256": "sha256:601463118c9a09e4aac070b1b86e3c04bad0f9236e849a2342dab3a3e1fbf8f6",
                "contentSha256": "sha256:0de83540ffdbdbf77512ec3a7da5d5867fdcfe57f0fedb5aa4f1ad358b2fd003",
                "changes": [
                  "Changed generated style imports to bundled relative paths.",
                  "Lifted label, name, ID, initial text, and date callback into props; generated instance-safe IDs and clear stale parsed dates when text becomes invalid."
                ]
              },
              {
                "shippedPath": "components/radix-nova/calendar.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/calendar.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/calendar.tsx",
                "upstreamSha256": "sha256:5f4275762945548864d0fd73d9f13de587417e5aea3e2815a95a1392c80a026d",
                "contentSha256": "sha256:f268516e9ff518dca21b2dff7d81a47f7fa166d86ccaf1f6540d168d83e43131",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/button.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/button.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/button.tsx",
                "upstreamSha256": "sha256:f8f9ad17328a21e723d5bad69438c8464ba685aa4eb4db61abe44829ebe309aa",
                "contentSha256": "sha256:c3eb5a813ce13395a57c29b058dd5335c6d36d317993de587712bbba2485dab1",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled transform transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/radix-nova/field.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/field.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/field.tsx",
                "upstreamSha256": "sha256:a11361f3ed68a231905f1dd5d5aac2fd578bce196ee6f161ac74d47b42169fd5",
                "contentSha256": "sha256:03cad9373c9bf0053c91736a313705c2edbaab6740338702e1c463fdbaacf961",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/input-group.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/input-group.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/input-group.tsx",
                "upstreamSha256": "sha256:c6a2f723b6793d673028016507c0c6307f89c7553f552ea5770a755907cae9b0",
                "contentSha256": "sha256:1c93ff2e4b68af37057d718eac5a53be27903b2f85341968891e0d1f17ae7919",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/input.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/input.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/input.tsx",
                "upstreamSha256": "sha256:cace577b40968ce734f3b5daf42748e2eab820e380822bfc4e1256b2318135d7",
                "contentSha256": "sha256:dcf4d0c7e714734d91d70a26d3de2140958ea3751a79c13adbb873cb133352c9",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/label.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/label.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/label.tsx",
                "upstreamSha256": "sha256:88e7b260887a73d6f311e57a94a9f080151222a360bb98eef547f833d5fe2903",
                "contentSha256": "sha256:d44a926c7c1bbcd2c37c025ec265ab9825f68f970ebb00fe6f60518a012f6858",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/popover.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/popover.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/popover.tsx",
                "upstreamSha256": "sha256:21a3edd2723746191496d301e91151c47791422cebd27035d0fd10ea74555d32",
                "contentSha256": "sha256:9d314103dc7a70c83425b6715e657b230be4c704c3be98332e381f1409d399e9",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled open and close animation under reduced motion."
                ]
              },
              {
                "shippedPath": "components/radix-nova/separator.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/separator.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/separator.tsx",
                "upstreamSha256": "sha256:7ae98811c81382d00522d5d015d2b76d8f552bfec99446cfc50e80c251e6e3ff",
                "contentSha256": "sha256:637a56a7819e389948eda592a965105bb147723be6048121d180dbb95c7c0992",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/textarea.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/textarea.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/textarea.tsx",
                "upstreamSha256": "sha256:f58c44c6898edfc1c533284329efcd83428c5cb4bd2d666213c273852d089dd5",
                "contentSha256": "sha256:568c2c73abe79ea003e0f16f4c4ed5b20f0c0a0540a4cb68de776e129756aa0c",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/examples/radix/date-picker-natural-language.tsx, apps/v4/registry/bases/radix/ui/calendar.tsx, apps/v4/registry/bases/radix/ui/button.tsx, apps/v4/registry/bases/radix/ui/field.tsx, apps/v4/registry/bases/radix/ui/input-group.tsx, apps/v4/registry/bases/radix/ui/input.tsx, apps/v4/registry/bases/radix/ui/label.tsx, apps/v4/registry/bases/radix/ui/popover.tsx, apps/v4/registry/bases/radix/ui/separator.tsx, apps/v4/registry/bases/radix/ui/textarea.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/shadcn-date-picker-natural-language/date-picker-natural-language.tsx",
              "change": "Changed generated style imports to bundled relative paths. Lifted label, name, ID, initial text, and date callback into props; generated instance-safe IDs and clear stale parsed dates when text becomes invalid.",
              "reason": "Expose the copied composition as a reusable, portable component while preserving its interaction and rendering model."
            },
            {
              "shippedPath": "components/radix-nova/calendar.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/button.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled transform transitions under reduced motion.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/field.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/input-group.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/input.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/label.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/popover.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled open and close animation under reduced motion.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/separator.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/textarea.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper.",
              "reason": "Keep the copied support closure limited to the cn helper used by the installed component and avoid a Next environment dependency."
            }
          ],
          "dedupe": {
            "family": "natural-language-date-picker",
            "sourceHash": "sha256:9d983bb26b6ce08e6eb6f16bf67f6e470ba95fc7838dd9f6e35dfe4d595d1675",
            "contentHash": "sha256:91bd32900e436236f3add904a0ee0926ee0fa5cd9e16f8e2682420852795da17",
            "structureHash": "sha256:9e874677cc006f68dc731cb3bef99cc8f695ae00ff0b20ebd8801f28a7994675"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-input-group-custom",
      "type": "registry:component",
      "title": "Autosizing Input Group",
      "description": "Combines an autosizing textarea with a submit action in one input group.",
      "author": "shadcn",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "radix-ui@1.4.3",
        "react-textarea-autosize@8.5.9",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/shadcn-input-group-custom/input-group-custom.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/shadcn-input-group-custom/input-group-custom.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/input-group.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/input-group.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/button.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/input.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/input.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/textarea.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/textarea.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "textarea",
            "autosize",
            "submit"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-input-group-custom.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/shadcn-input-group-custom/input-group-custom.tsx",
                "upstreamPath": "apps/v4/examples/radix/input-group-custom.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/examples/radix/input-group-custom.tsx",
                "upstreamSha256": "sha256:94495a68c5e3396488cf9abf7b5d6386f5896544a417ffe0a08b7c8b755592de",
                "contentSha256": "sha256:6ea3a4c20911b81efb55a0537e410c87d7ac71fdf0754977e78fc452e91fb1df",
                "changes": [
                  "Changed the generated style import to a bundled relative path.",
                  "Turned the fixed fixture into a real form with caller-provided submit handling and textarea props, logical alignment, and a reduced-motion transition override."
                ]
              },
              {
                "shippedPath": "components/radix-nova/input-group.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/input-group.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/input-group.tsx",
                "upstreamSha256": "sha256:c6a2f723b6793d673028016507c0c6307f89c7553f552ea5770a755907cae9b0",
                "contentSha256": "sha256:1c93ff2e4b68af37057d718eac5a53be27903b2f85341968891e0d1f17ae7919",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/button.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/button.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/button.tsx",
                "upstreamSha256": "sha256:f8f9ad17328a21e723d5bad69438c8464ba685aa4eb4db61abe44829ebe309aa",
                "contentSha256": "sha256:c3eb5a813ce13395a57c29b058dd5335c6d36d317993de587712bbba2485dab1",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled transform transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/radix-nova/input.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/input.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/input.tsx",
                "upstreamSha256": "sha256:cace577b40968ce734f3b5daf42748e2eab820e380822bfc4e1256b2318135d7",
                "contentSha256": "sha256:dcf4d0c7e714734d91d70a26d3de2140958ea3751a79c13adbb873cb133352c9",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/radix-nova/textarea.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/textarea.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/textarea.tsx",
                "upstreamSha256": "sha256:f58c44c6898edfc1c533284329efcd83428c5cb4bd2d666213c273852d089dd5",
                "contentSha256": "sha256:568c2c73abe79ea003e0f16f4c4ed5b20f0c0a0540a4cb68de776e129756aa0c",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/examples/radix/input-group-custom.tsx, apps/v4/registry/bases/radix/ui/input-group.tsx, apps/v4/registry/bases/radix/ui/button.tsx, apps/v4/registry/bases/radix/ui/input.tsx, apps/v4/registry/bases/radix/ui/textarea.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/shadcn-input-group-custom/input-group-custom.tsx",
              "change": "Changed the generated style import to a bundled relative path. Turned the fixed fixture into a real form with caller-provided submit handling and textarea props, logical alignment, and a reduced-motion transition override.",
              "reason": "Expose the copied composition as a reusable, portable component while preserving its interaction and rendering model."
            },
            {
              "shippedPath": "components/radix-nova/input-group.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/button.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled transform transitions under reduced motion.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/input.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/radix-nova/textarea.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present.",
              "reason": "Reproduce the example's pinned style closure with portable imports and required RTL, accessibility, or reduced-motion behavior."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper.",
              "reason": "Keep the copied support closure limited to the cn helper used by the installed component and avoid a Next environment dependency."
            }
          ],
          "dedupe": {
            "family": "autosizing-textarea-submit",
            "sourceHash": "sha256:457ad81c3736723fa9c3345d2094a5f869049f0219918afd3ad82be6699ccdfb",
            "contentHash": "sha256:00ec4550db2080d654ef2a08b729bc25879f4927729c2b2565c43465ee5ae1d4",
            "structureHash": "sha256:43ee888139fcf8edd89733c77f31f27470ceef3e9d2002b0effe6fe0b9e6ef4d"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-message",
      "type": "registry:component",
      "title": "Message",
      "description": "Structures aligned conversation content with avatar, header, and footer.",
      "author": "shadcn",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/message.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/message.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "message",
            "conversation",
            "avatar"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-message.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/radix-nova/message.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/message.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/message.tsx",
                "upstreamSha256": "sha256:47fddd2cadfee8c0aa92d377cfbb4a211711650b93c79fbaa0cbe9d4a14bc32a",
                "contentSha256": "sha256:e6900eca15e93c823034d4363f474b30bd817e7b1cc4b4e9a828daac572ee756",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/bases/radix/ui/message.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/radix-nova/message.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports.",
              "reason": "Ship the official component family with its generated styling, bidirectional behavior, portable imports, and reduced-motion fallback."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item.",
              "reason": "Bundle the exact support closure required by the installed component."
            }
          ],
          "dedupe": {
            "family": "conversation-message",
            "sourceHash": "sha256:ea645b09e1c7ce27085a70929e8ba1a7aa0e72b67f3e807be7b8954cb2fd5f98",
            "contentHash": "sha256:1ac7568d7f9e96b03782f65e871c2d2a4aa19d9914ae319b1242a902b8f2bad1",
            "structureHash": "sha256:23c553581ae4521576bc840c3522517de4af125ee3a1458128840f03d1f3fde7"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-message-scroller",
      "type": "registry:component",
      "title": "Message Scroller",
      "description": "Keeps a message viewport anchored while preserving manual scroll position.",
      "author": "shadcn",
      "dependencies": [
        "@shadcn/react@0.2.1",
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.474.0",
        "radix-ui@1.4.3",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/message-scroller.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/message-scroller.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/button.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/button.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "message",
            "scroll-anchor",
            "viewport"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-message-scroller.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/radix-nova/message-scroller.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/message-scroller.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/message-scroller.tsx",
                "upstreamSha256": "sha256:996d6107ddd07261b76aab45faf6497c789090cb29e47257df6c133c3b35fab3",
                "contentSha256": "sha256:95e514179dc04eeaee799d4d3675429ac2cb2d61114e35033eb89780e8d4ccae",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports.",
                  "Disabled nonessential animation and transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/radix-nova/button.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/button.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/button.tsx",
                "upstreamSha256": "sha256:f8f9ad17328a21e723d5bad69438c8464ba685aa4eb4db61abe44829ebe309aa",
                "contentSha256": "sha256:c3eb5a813ce13395a57c29b058dd5335c6d36d317993de587712bbba2485dab1",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports where present.",
                  "Disabled transform transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/bases/radix/ui/message-scroller.tsx, apps/v4/registry/bases/radix/ui/button.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/radix-nova/message-scroller.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports. Disabled nonessential animation and transitions under reduced motion.",
              "reason": "Ship the official component family with its generated styling, bidirectional behavior, portable imports, and reduced-motion fallback."
            },
            {
              "shippedPath": "components/radix-nova/button.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports where present. Disabled transform transitions under reduced motion.",
              "reason": "Bundle the exact support closure required by the installed component."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item.",
              "reason": "Bundle the exact support closure required by the installed component."
            }
          ],
          "dedupe": {
            "family": "anchored-message-scroller",
            "sourceHash": "sha256:01bfc279022a2fbdfc43025a6ace2e9f29708ba6cbc3e2cd6775f1a897dc323a",
            "contentHash": "sha256:3525645f22948d58e8d3427473a93c0b1fed5aba04a337ff2677d0591c65260b",
            "structureHash": "sha256:a13b2c31d8228b2c305da47816178f66fde8990bd4eb67dc7be7315792f94ba8"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-navigation-menu",
      "type": "registry:component",
      "title": "Navigation Menu",
      "description": "Provides keyboard-accessible hierarchical navigation with a shared viewport.",
      "author": "shadcn",
      "dependencies": [
        "class-variance-authority@0.7.1",
        "clsx@2.1.1",
        "lucide-react@0.474.0",
        "radix-ui@1.4.3",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/navigation-menu.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/navigation-menu.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "navigation",
            "menu",
            "viewport"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-navigation-menu.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/radix-nova/navigation-menu.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/navigation-menu.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/navigation-menu.tsx",
                "upstreamSha256": "sha256:551957293727a8ad89d95c56a05dea57aa7efd3c37661e883a409cae710dbcc7",
                "contentSha256": "sha256:4a6cf36bb7a4eaf01a8c4ad7a6b544b499011d6643be9ca4d63557609e52a130",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports.",
                  "Disabled nonessential animation and transitions under reduced motion."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/bases/radix/ui/navigation-menu.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/radix-nova/navigation-menu.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports. Disabled nonessential animation and transitions under reduced motion.",
              "reason": "Ship the official component family with its generated styling, bidirectional behavior, portable imports, and reduced-motion fallback."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item.",
              "reason": "Bundle the exact support closure required by the installed component."
            }
          ],
          "dedupe": {
            "family": "hierarchical-navigation-menu",
            "sourceHash": "sha256:e96bb68a11082ac4440d01669c166b0fa96d61beff35ac76773cdd29fa605d7d",
            "contentHash": "sha256:d93d557e71de97c5270bf1864f9012b4a2fd779cd063d13317a7c3f269597d59",
            "structureHash": "sha256:7097c5834d6b7cf9924bf7002c482157e8411e4a21a2fe0bb915b6b8ee599448"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "shadcn-resizable",
      "type": "registry:component",
      "title": "Resizable Panels",
      "description": "Lets keyboard and pointer users resize adjacent content panels.",
      "author": "shadcn",
      "dependencies": [
        "clsx@2.1.1",
        "react-resizable-panels@4.5.8",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/shadcn-ui/components/radix-nova/resizable.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/shadcn-ui/radix-nova/resizable.tsx"
        },
        {
          "path": "registry/sources/shadcn-ui/components/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/shadcn-ui/lib/utils.ts"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "resizable",
            "panels",
            "separator"
          ],
          "renderer": "dom",
          "preview": "previews/shadcn-resizable.tsx",
          "source": {
            "project": "shadcn/ui",
            "repository": "https://github.com/shadcn-ui/ui",
            "revision": "d28738b183c5eaa69d8d540826e450f30d39ab6c",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/radix-nova/resizable.tsx",
                "upstreamPath": "apps/v4/registry/bases/radix/ui/resizable.tsx",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/registry/bases/radix/ui/resizable.tsx",
                "upstreamSha256": "sha256:ec2bcff328149be0d4bd003df00cb8721363b69b9810d52319747888fb1055a7",
                "contentSha256": "sha256:2b97957f4ab71897ba085b1aac5b2d46e96c7602b5a21fb1a4af48dab8b0cfdf",
                "changes": [
                  "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file.",
                  "Changed generated source aliases to bundled relative imports."
                ]
              },
              {
                "shippedPath": "components/lib/utils.ts",
                "upstreamPath": "apps/v4/lib/utils.ts",
                "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/apps/v4/lib/utils.ts",
                "upstreamSha256": "sha256:408c8db9b3d0b07e8f574de5da0b38f599b3bb40f84ebeccc37803809b64f1b9",
                "contentSha256": "sha256:9a4d47b247f985c5d482101c958f0a8c36e0fff2c2a634e35dc222da1a85f2fe",
                "changes": [
                  "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/registry/bases/radix/ui/resizable.tsx, apps/v4/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2023 shadcn"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/shadcn-ui/ui/blob/d28738b183c5eaa69d8d540826e450f30d39ab6c/LICENSE.md",
              "sha256": "sha256:a14c2d6fb5ba9925cba04633226a3b93e6c5566ca6b550dbfaead7ab3fa93b24",
              "localPath": "registry/sources/shadcn-ui/LICENSE"
            },
            "notices": [
              "registry/sources/shadcn-ui/NOTICE"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/radix-nova/resizable.tsx",
              "change": "Applied shadcn/ui's pinned radix-nova style transform and official RTL transform to the authored Radix base file. Changed generated source aliases to bundled relative imports.",
              "reason": "Ship the official component family with its generated styling, bidirectional behavior, portable imports, and reduced-motion fallback."
            },
            {
              "shippedPath": "components/lib/utils.ts",
              "change": "Removed the unrelated Next-specific absoluteUrl helper and retained only the cn helper required by this item.",
              "reason": "Bundle the exact support closure required by the installed component."
            }
          ],
          "dedupe": {
            "family": "resizable-panel-group",
            "sourceHash": "sha256:275dc8b09ec50854f41c8b49ce82daab32f1fcba29ca242bc59227bd3e52d62d",
            "contentHash": "sha256:dedf327d7a5ee1fb17f20081e12de508b324b8caaf7a641f9613f6fe34203ccd",
            "structureHash": "sha256:c3c946f4e87564d0a16ddda342ee384d0ca4a768c0f6729ead52c9bce8d7fc96"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "slot-text",
      "type": "registry:component",
      "title": "Slot Text",
      "description": "Rolls caller-controlled state labels one grapheme at a time while exposing one semantic text value.",
      "author": "Daniel Belyi",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/slot-text/components/slot-text/react.ts",
          "type": "registry:component",
          "target": "@components/taste-blocks/slot-text/react.ts"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/slot-text/index.ts"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/slotText.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/slot-text/slotText.ts"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/dom.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/slot-text/dom.ts"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/text.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/slot-text/text.ts"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/timing.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/slot-text/timing.ts"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/constants.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/slot-text/constants.ts"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/style.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/slot-text/style.css"
        },
        {
          "path": "registry/sources/slot-text/components/slot-text/style.css.d.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/slot-text/style.css.d.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "state-label",
            "grapheme",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/slot-text.tsx",
          "source": {
            "project": "Slot Text",
            "repository": "https://github.com/Danilaa1/slot-text",
            "revision": "b49434a6b6fc079d919b722062f17d3e498c63a1",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/slot-text/react.ts",
                "upstreamPath": "src/react.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/src/react.ts",
                "upstreamSha256": "sha256:40cc2f6dc82f4de2a1d8b6b86e1f8e6ff4df5dda98a9027b001c9b5e1ccc0f6a",
                "contentSha256": "sha256:9b01891681b813d186c25903ae49d877972115c12776507c3ff22de3d105cc6f",
                "changes": [
                  "Imported the bundled stylesheet from the React adapter for a closed shadcn install payload.",
                  "Rendered one visually hidden semantic text copy and isolated the animated old and new faces in an aria-hidden visual subtree.",
                  "Rendered the initial visual value before effects run so server output and hydration retain the caller-provided text."
                ]
              },
              {
                "shippedPath": "components/slot-text/index.ts",
                "upstreamPath": "src/index.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/src/index.ts",
                "upstreamSha256": "sha256:4d3c159a886132487c12b2ca4493fc842e89530cf9331110e50c02a946030af5",
                "contentSha256": "sha256:4d3c159a886132487c12b2ca4493fc842e89530cf9331110e50c02a946030af5",
                "changes": []
              },
              {
                "shippedPath": "components/slot-text/slotText.ts",
                "upstreamPath": "src/slotText.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/src/slotText.ts",
                "upstreamSha256": "sha256:fcd009a9e4a7e346a7566078fe3081b1936cb529c69d8a6dd6928f3fdab868fa",
                "contentSha256": "sha256:dd6a59b665d0b7ccc4ea0ee3bd27ca763a4bb3bc62174886243fe3e1747578cd",
                "changes": [
                  "Added a shared prefers-reduced-motion guard that cancels running work and renders the latest target directly."
                ]
              },
              {
                "shippedPath": "components/slot-text/dom.ts",
                "upstreamPath": "src/dom.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/src/dom.ts",
                "upstreamSha256": "sha256:c7c21eae4b728532e1ba1fd5f76666122b837b87e84362ca5d844c3c6c3c1194",
                "contentSha256": "sha256:c7c21eae4b728532e1ba1fd5f76666122b837b87e84362ca5d844c3c6c3c1194",
                "changes": []
              },
              {
                "shippedPath": "components/slot-text/text.ts",
                "upstreamPath": "src/text.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/src/text.ts",
                "upstreamSha256": "sha256:8a59f21228500791e6a0843415ea3f0f84f6c5ca48784780fd90cd875ccdd7fb",
                "contentSha256": "sha256:8a59f21228500791e6a0843415ea3f0f84f6c5ca48784780fd90cd875ccdd7fb",
                "changes": []
              },
              {
                "shippedPath": "components/slot-text/timing.ts",
                "upstreamPath": "src/timing.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/src/timing.ts",
                "upstreamSha256": "sha256:1f78388f3fec11b69a4b787423ad2d4607d15001fd1d13a6efefbc298fa371c5",
                "contentSha256": "sha256:1f78388f3fec11b69a4b787423ad2d4607d15001fd1d13a6efefbc298fa371c5",
                "changes": []
              },
              {
                "shippedPath": "components/slot-text/constants.ts",
                "upstreamPath": "src/constants.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/src/constants.ts",
                "upstreamSha256": "sha256:3e5605a2c7dfd925dd15b8bbba8fdb2ffc575969184a936129663f012165355d",
                "contentSha256": "sha256:3e5605a2c7dfd925dd15b8bbba8fdb2ffc575969184a936129663f012165355d",
                "changes": []
              },
              {
                "shippedPath": "components/slot-text/style.css",
                "upstreamPath": "style.css",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/style.css",
                "upstreamSha256": "sha256:4c9aa6f209c2e2e5bdd6994563b53ee6c13d7c871f2021740055a85ea267e943",
                "contentSha256": "sha256:4c9aa6f209c2e2e5bdd6994563b53ee6c13d7c871f2021740055a85ea267e943",
                "changes": []
              },
              {
                "shippedPath": "components/slot-text/style.css.d.ts",
                "upstreamPath": "style.css.d.ts",
                "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/style.css.d.ts",
                "upstreamSha256": "sha256:c13f5072de7070c1d083c91af984881c0a8321f345e84ca515c8a62369520c1e",
                "contentSha256": "sha256:c13f5072de7070c1d083c91af984881c0a8321f345e84ca515c8a62369520c1e",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/react.ts, src/index.ts, src/slotText.ts, src/dom.ts, src/text.ts, src/timing.ts, src/constants.ts, style.css, and style.css.d.ts",
            "copyright": [
              "Copyright (c) 2026 Daniel Belyi"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/Danilaa1/slot-text/blob/b49434a6b6fc079d919b722062f17d3e498c63a1/LICENSE",
              "sha256": "sha256:c0d53cbcf3b4e9cfa23c0ce575a1568d34f763eaf74917fb525a61d5624752ca",
              "localPath": "registry/sources/slot-text/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/slot-text/react.ts",
              "change": "Wired the bundled CSS, separated one semantic text copy from the aria-hidden visual animation, and retained the initial visual value in server output.",
              "reason": "Make the source-copy install self-contained, prevent old and new animation faces from becoming duplicate accessible text, and keep the label visible before hydration."
            },
            {
              "shippedPath": "components/slot-text/slotText.ts",
              "change": "Added a shared reduced-motion branch that cancels timers and renders the final target immediately.",
              "reason": "Respect the user's motion preference across both the React adapter and low-level controller without changing their public options."
            }
          ],
          "dedupe": {
            "family": "grapheme-state-label-roll",
            "sourceHash": "sha256:a5e8ca1508ee8f638c2dfde4957177ac4c36c9616846513e24b5aa00f458966f",
            "contentHash": "sha256:3846c49210ae3532f178b9d72a415edb5e2b641f7b74108d56ed2ff173b1bb9f",
            "structureHash": "sha256:d3e96b72088fc6d523254c4feed230d2c97bb2d9af6503c289c57924b8938443"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "smoothui-button-copy",
      "type": "registry:component",
      "title": "Copy Button",
      "description": "Runs a caller-provided copy action and reports loading, success, and failure without losing focus.",
      "author": "SmoothUI",
      "dependencies": [
        "lucide-react@0.545.0",
        "motion@12.23.25"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/smoothui/components/smoothui-button-copy/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/smoothui-button-copy/index.tsx"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "copy",
            "clipboard",
            "feedback",
            "button"
          ],
          "renderer": "dom",
          "preview": "previews/smoothui-button-copy.tsx",
          "source": {
            "project": "SmoothUI",
            "repository": "https://github.com/educlopez/smoothui",
            "revision": "1fa17cd10e646f704891b89a569fefb9e6f49a20",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/smoothui-button-copy/index.tsx",
                "upstreamPath": "packages/smoothui/components/button-copy/index.tsx",
                "permalink": "https://github.com/educlopez/smoothui/blob/1fa17cd10e646f704891b89a569fefb9e6f49a20/packages/smoothui/components/button-copy/index.tsx",
                "upstreamSha256": "sha256:1c5b07a526057604a0e5688de3a60a5688ba91188f673aaf2afdf1349e684dda",
                "contentSha256": "sha256:efa9cc741c1887ecf0a3dd9fb3ed601262416be873a94fd24b3a635c5d4c696f",
                "changes": [
                  "Made feedback depend on the real onCopy promise, added visible and announced failure feedback, guarded repeat activation, and cleaned up timers.",
                  "Defaulted the optional minimum loading delay to zero and made the loading icon static."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/smoothui/components/button-copy/index.tsx",
            "copyright": [
              "Copyright (c) 2024 Eduardo Calvo"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/educlopez/smoothui/blob/1fa17cd10e646f704891b89a569fefb9e6f49a20/LICENSE",
              "sha256": "sha256:9877f4310c0549e5ce26affe52ba97c4e60325472bdcdd308a92fccd90f119cc",
              "localPath": "registry/sources/smoothui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/smoothui-button-copy/index.tsx",
              "change": "Made feedback follow the real onCopy promise, defaulted the optional minimum loading delay to zero, added visible and announced failure feedback, guarded repeat activation, cleaned up timers, and made the loading icon static.",
              "reason": "Prevent false success, duplicate operations, continuous hidden work, and updates after unmount while preserving the upstream props."
            }
          ],
          "dedupe": {
            "family": "async-copy-action",
            "sourceHash": "sha256:75cf76379e607c55b9dd6c175d306318db2997b1d5f29904e9c8495a5a2281de",
            "contentHash": "sha256:9d97d6791b4913ab81a02b821906ae9aae203c3e3ef7a4b3990dedb56326db28",
            "structureHash": "sha256:483ed6e774053059d0a92a791e345c4a08b9f9b88d89f10b69cf5a22cec00309"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "smoothui-context-menu",
      "type": "registry:component",
      "title": "Context Menu",
      "description": "Adds an animated keyboard-accessible context menu with nested items.",
      "author": "SmoothUI",
      "dependencies": [
        "clsx@2.1.1",
        "lucide-react@0.545.0",
        "motion@12.23.25",
        "radix-ui@1.4.3",
        "tailwind-merge@3.3.1"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/smoothui/components/smoothui-context-menu/index.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/smoothui-context-menu/index.tsx"
        },
        {
          "path": "registry/sources/smoothui/components/smoothui-context-menu/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/smoothui-context-menu/utils.ts"
        },
        {
          "path": "registry/sources/smoothui/components/smoothui-context-menu/context-menu-primitive.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/smoothui-context-menu/context-menu-primitive.tsx"
        },
        {
          "path": "registry/sources/smoothui/components/smoothui-context-menu/animation.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/smoothui-context-menu/animation.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "context-menu",
            "menu",
            "submenu",
            "keyboard"
          ],
          "renderer": "dom",
          "preview": "previews/smoothui-context-menu.tsx",
          "source": {
            "project": "SmoothUI",
            "repository": "https://github.com/educlopez/smoothui",
            "revision": "1fa17cd10e646f704891b89a569fefb9e6f49a20",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/smoothui-context-menu/index.tsx",
                "upstreamPath": "packages/smoothui/components/context-menu/index.tsx",
                "permalink": "https://github.com/educlopez/smoothui/blob/1fa17cd10e646f704891b89a569fefb9e6f49a20/packages/smoothui/components/context-menu/index.tsx",
                "upstreamSha256": "sha256:56cfbc23e7f8e3018c404948fc16422618181e119e0593200c382114d47e1dc2",
                "contentSha256": "sha256:2e74f9b3bb7a371d5f5774c19e0e6784a20090a6a426bcc114a3f4c321492442",
                "changes": [
                  "Replaced monorepo imports for the context-menu primitive, utility, and animation helper with colocated copied files.",
                  "Kept the trigger keyboard-focusable, disabled leaf items without an action, and replaced physical icon margins with logical RTL-aware spacing."
                ]
              },
              {
                "shippedPath": "components/smoothui-context-menu/utils.ts",
                "upstreamPath": "packages/shadcn-ui/lib/utils.ts",
                "permalink": "https://github.com/educlopez/smoothui/blob/1fa17cd10e646f704891b89a569fefb9e6f49a20/packages/shadcn-ui/lib/utils.ts",
                "upstreamSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "contentSha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
                "changes": []
              },
              {
                "shippedPath": "components/smoothui-context-menu/context-menu-primitive.tsx",
                "upstreamPath": "packages/shadcn-ui/components/ui/context-menu.tsx",
                "permalink": "https://github.com/educlopez/smoothui/blob/1fa17cd10e646f704891b89a569fefb9e6f49a20/packages/shadcn-ui/components/ui/context-menu.tsx",
                "upstreamSha256": "sha256:0d7f980270dce060c1ab32b4116f15c247a8238f2adafcb661980e4a9d6e95a1",
                "contentSha256": "sha256:6bcb2afbb4b30fcee858fa6e2c428b65b5c8d9ea3d1ae9b31934300e5fc36f22",
                "changes": [
                  "Replaced the monorepo utility alias with the colocated copied utility.",
                  "Removed the independent CSS open and close animations so reduced-motion handling is controlled by the SmoothUI Motion wrapper.",
                  "Added logical RTL spacing, chevron mirroring, and viewport-bounded menu widths."
                ]
              },
              {
                "shippedPath": "components/smoothui-context-menu/animation.ts",
                "upstreamPath": "packages/smoothui/lib/animation.ts",
                "permalink": "https://github.com/educlopez/smoothui/blob/1fa17cd10e646f704891b89a569fefb9e6f49a20/packages/smoothui/lib/animation.ts",
                "upstreamSha256": "sha256:0cc008d84c3ab2e2581a0153d5af22a013e46ad76bf52502ba2bbd1c97dc20a8",
                "contentSha256": "sha256:0cc008d84c3ab2e2581a0153d5af22a013e46ad76bf52502ba2bbd1c97dc20a8",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "packages/smoothui/components/context-menu/index.tsx, packages/shadcn-ui/lib/utils.ts, packages/shadcn-ui/components/ui/context-menu.tsx, packages/smoothui/lib/animation.ts",
            "copyright": [
              "Copyright (c) 2024 Eduardo Calvo"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/educlopez/smoothui/blob/1fa17cd10e646f704891b89a569fefb9e6f49a20/LICENSE",
              "sha256": "sha256:9877f4310c0549e5ce26affe52ba97c4e60325472bdcdd308a92fccd90f119cc",
              "localPath": "registry/sources/smoothui/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/smoothui-context-menu/index.tsx",
              "change": "Replaced monorepo imports with colocated paths, kept the trigger keyboard-focusable, disabled actionless leaf items, and changed icon margins to logical RTL-aware spacing.",
              "reason": "Keep the copied component installable, preserve keyboard access, prevent misleading no-op actions, and maintain readable alignment in both text directions."
            },
            {
              "shippedPath": "components/smoothui-context-menu/context-menu-primitive.tsx",
              "change": "Replaced the monorepo utility alias, removed redundant CSS entry and exit animations, added logical RTL spacing and chevron mirroring, and bounded menu widths to the viewport.",
              "reason": "Keep reduced-motion output static, avoid narrow-screen overflow, and preserve menu directionality without changing the public contract."
            }
          ],
          "dedupe": {
            "family": "context-menu",
            "sourceHash": "sha256:1cb0863631cd5513ee675c4d23131ac9e0cdfffaa56bb4645956cbf2b4d67061",
            "contentHash": "sha256:d24f41bcf9af2116c4f3b1af7284d077d5edad4300358ea5a1b63edb101049a4",
            "structureHash": "sha256:2aaa7b7050f7a7f081321188d066a15a8ac607bfae9d2aa77f5d316abca77a7f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "splitflap-display",
      "type": "registry:component",
      "title": "Split-Flap Display",
      "description": "Transitions caller-selected text through a deterministic mechanical split-flap alphabet.",
      "author": "Cody Shanley",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/splitflap/components/splitflap-display/split-flap-display.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/splitflap-display/split-flap-display.tsx"
        },
        {
          "path": "registry/sources/splitflap/components/splitflap-display/split-flap-slat.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/splitflap-display/split-flap-slat.tsx"
        },
        {
          "path": "registry/sources/splitflap/components/splitflap-display/split-flap.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/splitflap-display/split-flap.css"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "mechanical",
            "split-flap",
            "controlled",
            "reduced-motion"
          ],
          "renderer": "dom",
          "preview": "previews/splitflap-display.tsx",
          "source": {
            "project": "splitflap",
            "repository": "https://github.com/codemanshan/splitflap",
            "revision": "535cb5b9cac0c8324a8cff4e6e8ec7eca16d1213",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/splitflap-display/split-flap-display.tsx",
                "upstreamPath": "registry/split-flap/split-flap-display.tsx",
                "permalink": "https://github.com/codemanshan/splitflap/blob/535cb5b9cac0c8324a8cff4e6e8ec7eca16d1213/registry/split-flap/split-flap-display.tsx",
                "upstreamSha256": "sha256:f9df20e18744a7661668b9810cf43cc05bb3cdb20984e5f659c2e793cd7023de",
                "contentSha256": "sha256:d77c97db836b600fe073c48df372b8ca67a5f0612ad936bf9d5d3ac6a25761c7",
                "changes": [
                  "Imported the colocated stylesheet, removed random selection and autonomous cycling, and made refreshSignal the only word-advance trigger.",
                  "Made the initial word deterministic and live announcements opt-in after all visible slats settle."
                ]
              },
              {
                "shippedPath": "components/splitflap-display/split-flap-slat.tsx",
                "upstreamPath": "registry/split-flap/split-flap-slat.tsx",
                "permalink": "https://github.com/codemanshan/splitflap/blob/535cb5b9cac0c8324a8cff4e6e8ec7eca16d1213/registry/split-flap/split-flap-slat.tsx",
                "upstreamSha256": "sha256:52d1ba2ac4cabfd023c7b8da9d88e1a4366f52908e05ad561c94a6730c7ef5b5",
                "contentSha256": "sha256:08df2e7b39a2c61cc58021736aa00b88bb9c16ec87c01f3a7c92b405bb96db45",
                "changes": [
                  "Added a settled callback, snapped reduced-motion and unsupported-character transitions, and paused the active timeout while the document is hidden.",
                  "Replaced the timer list with one visibility-aware pending timer, synchronized the current-character ref so rapid targets cancel and restart safely, and corrected the upstream distance example."
                ]
              },
              {
                "shippedPath": "components/splitflap-display/split-flap.css",
                "upstreamPath": "registry/split-flap/split-flap.css",
                "permalink": "https://github.com/codemanshan/splitflap/blob/535cb5b9cac0c8324a8cff4e6e8ec7eca16d1213/registry/split-flap/split-flap.css",
                "upstreamSha256": "sha256:d6ecd978df99dfefed5214235b7d330d1c5d095a8fa6f8dc36544192e391290b",
                "contentSha256": "sha256:ade04a772d7a14a78abbd5a9530f0ba1a2627064408a3c140c9d5ab2ca343e4b",
                "changes": [
                  "Added a reusable visually-hidden text class and bounded wide displays with horizontal overflow while preventing slat shrinkage."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/split-flap/split-flap-display.tsx, registry/split-flap/split-flap-slat.tsx, and registry/split-flap/split-flap.css",
            "copyright": [
              "Copyright (c) 2026 Cody Shanley"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/codemanshan/splitflap/blob/535cb5b9cac0c8324a8cff4e6e8ec7eca16d1213/LICENSE",
              "sha256": "sha256:ce5ab878c7d18bc24be4e87c2a039a352bc5c636f1f5aa15798550ef40a435dd",
              "localPath": "registry/sources/splitflap/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/splitflap-display/split-flap-display.tsx",
              "change": "Removed random and automatic word selection, retained refreshSignal as the explicit sequential control, imported the CSS, and delayed optional live text until every slat settles.",
              "reason": "Keep state changes caller-controlled, avoid unattended motion, and announce only the value actually shown."
            },
            {
              "shippedPath": "components/splitflap-display/split-flap-slat.tsx",
              "change": "Added settled reporting, unsupported-character and reduced-motion snapping, document-visibility pausing, and single-timer cancellation.",
              "reason": "Preserve visible text outside the mechanical alphabet and prevent hidden, stale, or post-unmount animation work."
            },
            {
              "shippedPath": "components/splitflap-display/split-flap.css",
              "change": "Added the semantic text utility and responsive horizontal overflow containment.",
              "reason": "Expose one nonvisual phrase and keep fixed mechanical slats usable in narrow containers."
            }
          ],
          "dedupe": {
            "family": "mechanical-split-flap-text",
            "sourceHash": "sha256:521340c3b24dc6bf565fa5484f32faf1451467ea8aac6abc73dcf08a62c89069",
            "contentHash": "sha256:a59773f2f4520292ef5636405c72b5e0e812e2524404fa68a56ad8285277cf27",
            "structureHash": "sha256:032f581f7a62d85e1de23461c6348be678e917f6a32f9791fd7c00b93d439786"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "swipeable-row-actions",
      "type": "registry:component",
      "title": "Swipeable Row Actions",
      "description": "Reveals caller-supplied leading and trailing actions from a measured, touch-friendly row.",
      "author": "Marek Rozmus",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/index.ts",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-swipeable-list/index.ts"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/SwipeableList.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-swipeable-list/SwipeableList.tsx"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/SwipeableList.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-swipeable-list/SwipeableList.css"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/SwipeableListItem.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-swipeable-list/SwipeableListItem.tsx"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/SwipeableListItem.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-swipeable-list/SwipeableListItem.css"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/SwipeAction.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-swipeable-list/SwipeAction.tsx"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/SwipeAction.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-swipeable-list/SwipeAction.css"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/LeadingActions.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-swipeable-list/LeadingActions.tsx"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/LeadingActions.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-swipeable-list/LeadingActions.css"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/TrailingActions.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/react-swipeable-list/TrailingActions.tsx"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/TrailingActions.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/react-swipeable-list/TrailingActions.css"
        },
        {
          "path": "registry/sources/react-swipeable-list/components/react-swipeable-list/module.d.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/react-swipeable-list/module.d.ts"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "buttons-actions",
          "tags": [
            "swipe",
            "row-actions",
            "touch",
            "keyboard",
            "rtl",
            "responsive"
          ],
          "renderer": "dom",
          "preview": "previews/swipeable-row-actions.tsx",
          "source": {
            "project": "react-swipeable-list",
            "repository": "https://github.com/marekrozmus/react-swipeable-list",
            "revision": "10ca0c66f7ec4aa4904a02e8dd197180dc56b125",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/react-swipeable-list/index.ts",
                "upstreamPath": "src/index.js",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/index.js",
                "upstreamSha256": "sha256:937db6aa0cd961a2cb07d5311205d3bfd5c8442f078757f30f76efc0e394a9cb",
                "contentSha256": "sha256:4cda5a13a34db5b4b6988da6768cb66c7b3894a66f28139d66aab7da74e6787c",
                "changes": [
                  "Ported the runtime export entry mechanically from JavaScript to TypeScript and added a client boundary.",
                  "Re-exported the prop types supplied by the TypeScript component ports."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/SwipeableList.tsx",
                "upstreamPath": "src/SwipeableList.js",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/SwipeableList.js",
                "upstreamSha256": "sha256:215f3456d762e7f1389a4dd9262a99feb5a117f9d31dfc7e1a673a0658e82672",
                "contentSha256": "sha256:4d9a1ff7964ad647f9ad5541d566bbc5b3ffb6a9ba3514188098b1e44ab185d0",
                "changes": [
                  "Ported PropTypes to strict TypeScript and replaced clsx with a local class join while retaining the upstream list defaults, Type values, child injection, and Tag API.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/SwipeableList.css",
                "upstreamPath": "src/SwipeableList.css",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/SwipeableList.css",
                "upstreamSha256": "sha256:bff3fbeb1ad84ede7c6b972204aef9284dccbf099502d40f87ba39e699da7204",
                "contentSha256": "sha256:bff3fbeb1ad84ede7c6b972204aef9284dccbf099502d40f87ba39e699da7204",
                "changes": []
              },
              {
                "shippedPath": "components/react-swipeable-list/SwipeableListItem.tsx",
                "upstreamPath": "src/SwipeableListItem.js",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/SwipeableListItem.js",
                "upstreamSha256": "sha256:854df2cf45eec5dce2818c234835bf9ad5f136ae9c4637199432b2020da81350",
                "contentSha256": "sha256:76440c1fdc805e691c5d86204059b97f74aa56f442d1890616c00ff3a802131b",
                "changes": [
                  "Ported PropTypes and the class state to strict TypeScript and replaced clsx with a local class join without replacing the upstream drag, threshold, action, return, or removal state machine.",
                  "Handled touchcancel, pointercancel, window blur, and release outside the row; centralized global listener, animation listener, ResizeObserver, and animation-frame cleanup.",
                  "Added visible semantic reveal buttons, Escape and direction-aware arrow handling, deterministic action focus and return, inert hidden actions, and a polite destructive-result status.",
                  "Mapped leading and trailing sides, offsets, thresholds, return transforms, and destructive travel from computed RTL direction while retaining physical swipe callback values.",
                  "Re-measured the host and action content through ResizeObserver using the same single scheduled animation frame as position work, and bypassed MS animation listeners when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/SwipeableListItem.css",
                "upstreamPath": "src/SwipeableListItem.css",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/SwipeableListItem.css",
                "upstreamSha256": "sha256:5d8cac45b997015dc4e130cfedbb4394a60138811f2e01e99e02b29a60ea2602",
                "contentSha256": "sha256:31b7a10ff928c43574d99eb1fb540136c3cd4ff5f76f809cbba7b9b152c117ee",
                "changes": [
                  "Replaced physical action positioning with logical insets and added RTL-aware MS keyframes and transform origins.",
                  "Added pan-y touch behavior, visible 44-pixel reveal controls with focus indicators, and visually hidden live-status styling.",
                  "Added a reduced-motion branch that removes return, removal, width, and scale transitions or animations while retaining their final states."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/SwipeAction.tsx",
                "upstreamPath": "src/SwipeAction.js",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/SwipeAction.js",
                "upstreamSha256": "sha256:8c027850f940859ac73ca261614c1c2dd3c1cb3d9a22c55cd2e7cb85f33c4642",
                "contentSha256": "sha256:ee546a8f717adef92712a0e3ec5fa477a8d1bfaf45a43f5c46a376f0ca943290",
                "changes": [
                  "Ported PropTypes to strict TypeScript and replaced clsx with a local class join while retaining the upstream action scheduling and full-swipe registration flow.",
                  "Changed the default Tag from span to a type=button action, supplied Enter and Space semantics for custom non-button tags, and kept actions out of tab order until revealed.",
                  "Tracked and cleared actionDelay and destructiveCallbackDelay timers and unregistered stale full-swipe callbacks on cleanup.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/SwipeAction.css",
                "upstreamPath": "src/SwipeAction.css",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/SwipeAction.css",
                "upstreamSha256": "sha256:b40de1cee0aeb6dcf46cbfb427eeced7294dc28b30347dbefff0beb3e2bcf7c0",
                "contentSha256": "sha256:22fd58db0ea5d01e36ecf4eab63fdd37abd63ca460972e3d0ca1743f38d4c1c3",
                "changes": [
                  "Reset the new native button surface, preserved inherited caller styling, added a visible focus indicator and 44-pixel minimum target, and applied alignment to both direct and nested action content.",
                  "Disabled the full-swipe width transition when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/LeadingActions.tsx",
                "upstreamPath": "src/LeadingActions.js",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/LeadingActions.js",
                "upstreamSha256": "sha256:4d6260813485c6c8d5097b2a4cccb1faf3f0e6323d7d88fa8e4a5ba5ee2edf5b",
                "contentSha256": "sha256:660bdae13b198489dd668972626c2351b3a4a77d21242ad784c9c38bc59b5313",
                "changes": [
                  "Ported the upstream child cloning helper mechanically to strict TypeScript."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/LeadingActions.css",
                "upstreamPath": "src/LeadingActions.css",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/LeadingActions.css",
                "upstreamSha256": "sha256:75feb9bb485578083873f49fe5acef18c781c9d6940645bbe9d83dcb9cbbf776",
                "contentSha256": "sha256:75feb9bb485578083873f49fe5acef18c781c9d6940645bbe9d83dcb9cbbf776",
                "changes": []
              },
              {
                "shippedPath": "components/react-swipeable-list/TrailingActions.tsx",
                "upstreamPath": "src/TrailingActions.js",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/TrailingActions.js",
                "upstreamSha256": "sha256:d2c7a9f30f5ed72903a9dbd99838e9a6827a57b070ffba4fb02a502af47c7d84",
                "contentSha256": "sha256:6581160b0aca5aa1c1923e11bb82864e7c84ce5a9db24f91b0dca685d97a7b4e",
                "changes": [
                  "Ported the upstream child cloning helper mechanically to strict TypeScript."
                ]
              },
              {
                "shippedPath": "components/react-swipeable-list/TrailingActions.css",
                "upstreamPath": "src/TrailingActions.css",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/TrailingActions.css",
                "upstreamSha256": "sha256:e4b0d71fd49fc549d0fc83e72c07fd5601781b2c457ff720e55c050d0c4c12b7",
                "contentSha256": "sha256:e4b0d71fd49fc549d0fc83e72c07fd5601781b2c457ff720e55c050d0c4c12b7",
                "changes": []
              },
              {
                "shippedPath": "components/react-swipeable-list/module.d.ts",
                "upstreamPath": "src/module.d.ts",
                "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/src/module.d.ts",
                "upstreamSha256": "sha256:38271d0dc6cfe17d93258ea9e6e9790645b90e8fd65f0a85113261c7b7b2c2eb",
                "contentSha256": "sha256:a3895fee60577c8d57d6f265da1b43ee8a4784bd525855732376facf0c4971da",
                "changes": [
                  "Aligned the upstream declarations with the strict TypeScript ports, symbol-valued Type API, native button default, ElementType tags, action delay, class names, and new reveal-label props."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "src/index.js, src/SwipeableList.js, src/SwipeableList.css, src/SwipeableListItem.js, src/SwipeableListItem.css, src/SwipeAction.js, src/SwipeAction.css, src/LeadingActions.js, src/LeadingActions.css, src/TrailingActions.js, src/TrailingActions.css, and src/module.d.ts",
            "copyright": [
              "Copyright (c) 2021 Marek Rozmus"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/marekrozmus/react-swipeable-list/blob/10ca0c66f7ec4aa4904a02e8dd197180dc56b125/LICENSE",
              "sha256": "sha256:88676b8b30a3fa0764504966ac9fc66704094535123d6613ebc50e3c1022b8fb",
              "localPath": "registry/sources/react-swipeable-list/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/react-swipeable-list/index.ts",
              "change": "Ported the runtime entry to TypeScript, added the client boundary, and exposed the ported prop types.",
              "reason": "Install the hook and lifecycle based source safely in React Server Component hosts without shipping a parallel PropTypes runtime."
            },
            {
              "shippedPath": "components/react-swipeable-list/SwipeableList.tsx",
              "change": "Mechanically ported the upstream list and Type contract from PropTypes and clsx to strict TypeScript and a local class join. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Use host React without adding the upstream project's undeclared prop-types or clsx development dependencies. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            },
            {
              "shippedPath": "components/react-swipeable-list/SwipeableListItem.tsx",
              "change": "Ported the upstream row state machine to strict TypeScript and added cancellation cleanup, semantic keyboard reveal and focus handling, logical RTL sides, resize remeasurement, a single frame scheduler, and a destructive-result announcement.",
              "reason": "Clear the pinned source's touch, keyboard, focus, RTL, responsive measurement, lifecycle, and perceivable-result conditional gates without replacing its drag or action state machine."
            },
            {
              "shippedPath": "components/react-swipeable-list/SwipeableListItem.css",
              "change": "Added logical RTL geometry, the semantic reveal route and focus styles, pan-y mobile behavior, and static reduced-motion outcomes to the upstream row CSS.",
              "reason": "Keep leading and trailing behavior correct across direction, coarse pointers, keyboard use, and reduced-motion preferences."
            },
            {
              "shippedPath": "components/react-swipeable-list/SwipeAction.tsx",
              "change": "Ported the action to strict TypeScript, made button the semantic default, added a keyboard fallback for custom tags, gated tab focus by reveal state, and tracked every delayed callback. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Remove click-only generic actions, hidden focus targets, undeclared runtime dependencies, and callbacks that could fire after unmount. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            },
            {
              "shippedPath": "components/react-swipeable-list/SwipeAction.css",
              "change": "Adapted the upstream action skin for a native button with accessible target and focus sizing and a reduced-motion width branch.",
              "reason": "Preserve caller-owned styling while keeping the semantic action usable on keyboard, touch, and reduced-motion setups."
            },
            {
              "shippedPath": "components/react-swipeable-list/LeadingActions.tsx",
              "change": "Mechanically ported the upstream leading-action child helper to strict TypeScript.",
              "reason": "Retain the complete upstream helper closure without PropTypes."
            },
            {
              "shippedPath": "components/react-swipeable-list/TrailingActions.tsx",
              "change": "Mechanically ported the upstream trailing-action child helper to strict TypeScript.",
              "reason": "Retain the complete upstream helper closure without PropTypes."
            },
            {
              "shippedPath": "components/react-swipeable-list/module.d.ts",
              "change": "Updated the upstream declarations for the strict ports, semantic action default, and reveal-label extension.",
              "reason": "Keep the copied declaration closure consistent with the preserved runtime exports and narrow accessibility additions."
            }
          ],
          "dedupe": {
            "family": "swipeable-row-actions",
            "sourceHash": "sha256:f92a2b6de14cb4e7423ca44f7430411eea546741f40c8522f766704c7ddbd974",
            "contentHash": "sha256:3eb8465095efc56c24c2611c7e9b20db2fa02036ff0ffa29c4d3254ae8d7d88c",
            "structureHash": "sha256:979003fa62ba855778f832425ce9f00e0615f00da3104bbc95644b910b7cbec8"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "tremor-progress-circle",
      "type": "registry:component",
      "title": "Progress Circle",
      "description": "Shows a bounded scalar value as an accessible circular progress indicator with caller-provided center content.",
      "author": "Tremor",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.2.0",
        "tailwind-variants@1.0.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/tremor-raw/components/tremor-progress-circle/src/components/ProgressCircle/ProgressCircle.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/tremor-progress-circle/src/components/ProgressCircle/ProgressCircle.tsx"
        },
        {
          "path": "registry/sources/tremor-raw/components/tremor-progress-circle/src/utils/cx.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/tremor-progress-circle/src/utils/cx.ts"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "progress",
            "circle",
            "svg",
            "status"
          ],
          "renderer": "svg",
          "preview": "previews/tremor-progress-circle.tsx",
          "source": {
            "project": "Tremor Raw",
            "repository": "https://github.com/tremorlabs/tremor",
            "revision": "ca4d588f47820ff3d514d37fa4ee08a4222dec11",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/tremor-progress-circle/src/components/ProgressCircle/ProgressCircle.tsx",
                "upstreamPath": "src/components/ProgressCircle/ProgressCircle.tsx",
                "permalink": "https://github.com/tremorlabs/tremor/blob/ca4d588f47820ff3d514d37fa4ee08a4222dec11/src/components/ProgressCircle/ProgressCircle.tsx",
                "upstreamSha256": "sha256:8de300aef8b40af1eaacd4a19e3802127f69a0109dd97487c2ab63cb7c9a93e0",
                "contentSha256": "sha256:2468549018803650cce5d43b62720d3fd47996e99147d42bcdfca4a5ed7463ac",
                "changes": [
                  "Added a prominent Apache-2.0 modification notice.",
                  "Normalized invalid maximum and value inputs before geometry, data attributes, and ARIA output.",
                  "Forwarded the caller's accessible name, description, and value text to the progressbar and hid its decorative SVG and center content from assistive technology.",
                  "Disabled the animated stroke transition when reduced motion is requested.",
                  "Removed the unreachable nonnegative-value conditional around the foreground circle."
                ]
              },
              {
                "shippedPath": "components/tremor-progress-circle/src/utils/cx.ts",
                "upstreamPath": "src/utils/cx.ts",
                "permalink": "https://github.com/tremorlabs/tremor/blob/ca4d588f47820ff3d514d37fa4ee08a4222dec11/src/utils/cx.ts",
                "upstreamSha256": "sha256:1d84c1b1b8afa7708dd626acf536ae1b7f57b3162b3a959b1cf02c5f22e98592",
                "contentSha256": "sha256:1d84c1b1b8afa7708dd626acf536ae1b7f57b3162b3a959b1cf02c5f22e98592",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "src/components/ProgressCircle/ProgressCircle.tsx and src/utils/cx.ts",
            "copyright": [
              "Copyright © 2025 Tremor"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/tremorlabs/tremor/blob/ca4d588f47820ff3d514d37fa4ee08a4222dec11/LICENSE",
              "sha256": "sha256:6e43333ff4b171baacff233a3672365923eb688bf7ce8724eac42868bc4a08eb",
              "localPath": "registry/sources/tremor-raw/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/tremor-progress-circle/src/components/ProgressCircle/ProgressCircle.tsx",
              "change": "Added the required modification marker and minimally corrected value normalization, accessible naming and description, decorative semantics, reduced-motion behavior, and an unreachable render branch.",
              "reason": "Keep Tremor's visual and prop API while making the draft safe for invalid progress inputs and baseline accessibility review."
            }
          ],
          "dedupe": {
            "family": "circular-scalar-progress",
            "sourceHash": "sha256:1253cec33614f8aa26ad513db69b6fdfbd149cb32cb114a229ccb1ebb6b482f1",
            "contentHash": "sha256:ab279e111d2cf63735f0944315079113b1c1e597e686802418a426b97330b4a7",
            "structureHash": "sha256:d5b1ea0ecda1c7eae0502c7026f16d193253e09434ece9c62213c785db7bb9c3"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "trickle-highlighter-sweep",
      "type": "registry:component",
      "title": "Highlighter Sweep",
      "description": "Highlights selected text segments in sequence with an expanding background.",
      "author": "trickle contributors",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/trickle/components/trickle-highlighter-sweep/highlighter-sweep.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/trickle-highlighter-sweep.tsx"
        },
        {
          "path": "registry/sources/trickle/lib/cn.ts",
          "type": "registry:lib",
          "target": "@lib/cn.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "cssVars": {
        "theme": {
          "--animate-trickle-highlighter-sweep": "trickle-highlighter-sweep 0.35s ease-out both"
        }
      },
      "css": {
        "@keyframes trickle-highlighter-sweep": {
          "0%": {
            "background-size": "0% 100%"
          },
          "100%": {
            "background-size": "100% 100%"
          }
        },
        ".trickle-highlight-word": {
          "--trickle-hl": "oklch(80% 0.18 80 / 0.45)",
          "padding": "0 0.125rem",
          "margin": "0 -0.125rem",
          "border-radius": "0.125rem",
          "box-decoration-break": "clone",
          "-webkit-box-decoration-break": "clone",
          "background-image": "linear-gradient(to right, var(--trickle-hl), var(--trickle-hl))",
          "background-repeat": "no-repeat",
          "background-position": "left center",
          "background-size": "0% 100%"
        },
        "@media (prefers-reduced-motion: reduce)": {
          ".animate-trickle-highlighter-sweep": {
            "animation": "none",
            "background-size": "100% 100%"
          }
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "highlight",
            "sequence",
            "emphasis"
          ],
          "renderer": "dom",
          "preview": "previews/trickle-highlighter-sweep.tsx",
          "source": {
            "project": "trickle",
            "repository": "https://github.com/akaieuan/trickle-UI-kit",
            "revision": "b99c513b1806028137d9d907cebc829d46b62686",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/trickle-highlighter-sweep/highlighter-sweep.tsx",
                "upstreamPath": "registry/default/highlighter-sweep/highlighter-sweep.tsx",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/registry/default/highlighter-sweep/highlighter-sweep.tsx",
                "upstreamSha256": "sha256:1bb0f1a0f6e6eb1cf303a299431d3a29d686ddf133070e89cd9128bf9d43dbd5",
                "contentSha256": "sha256:a877f0a3dd62d196842efd004ddb0dc2c755b347a70e035bd010e9d69028bbd8",
                "changes": [
                  "Changed the cn import from @/lib/cn to ../../lib/cn so the copied support file resolves source-locally and after installation.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/cn.ts",
                "upstreamPath": "lib/cn.ts",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/lib/cn.ts",
                "upstreamSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "contentSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/highlighter-sweep/highlighter-sweep.tsx and lib/cn.ts",
            "copyright": [
              "Copyright (c) 2026 trickle contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/LICENSE",
              "sha256": "sha256:869578f8849f5cc6e318cc55175220afeef930f112d710406f46a1e919233137",
              "localPath": "registry/sources/trickle/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/trickle-highlighter-sweep/highlighter-sweep.tsx",
              "change": "Changed the cn import from @/lib/cn to ../../lib/cn. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Resolve the copied upstream helper from both the source batch and its registry install targets without relying on the upstream site alias. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "sequential-text-highlighting",
            "sourceHash": "sha256:a6edad7853b089f52ddae567c6fc35eee198e03f2e492c82b94f8bb92fad0935",
            "contentHash": "sha256:8ac153d9764c24ab408ed1f4f55e0eb76fc8905e375c451350a15168a2213a06",
            "structureHash": "sha256:5f41506964dacffcd1cdd031ad5474d78c1c29abf66b2dde896eed54a51611e3"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "trickle-ink-bleed",
      "type": "registry:component",
      "title": "Ink Bleed",
      "description": "Reveals caller-provided text through a radial ink-mask animation.",
      "author": "trickle contributors",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/trickle/components/trickle-ink-bleed/ink-bleed.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/trickle-ink-bleed.tsx"
        },
        {
          "path": "registry/sources/trickle/lib/cn.ts",
          "type": "registry:lib",
          "target": "@lib/cn.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "cssVars": {
        "theme": {
          "--animate-trickle-ink-bleed": "trickle-ink-bleed 1.2s cubic-bezier(0.4, 0, 0.2, 1) both"
        }
      },
      "css": {
        "@keyframes trickle-ink-bleed": {
          "from": {
            "-webkit-mask-image": "radial-gradient(circle at 0% 50%, black 0%, transparent 0%)",
            "mask-image": "radial-gradient(circle at 0% 50%, black 0%, transparent 0%)"
          },
          "to": {
            "-webkit-mask-image": "radial-gradient(circle at 50% 50%, black 100%, transparent 130%)",
            "mask-image": "radial-gradient(circle at 50% 50%, black 100%, transparent 130%)"
          }
        },
        "@media (prefers-reduced-motion: reduce)": {
          ".animate-trickle-ink-bleed": {
            "animation": "none",
            "-webkit-mask-image": "none",
            "mask-image": "none"
          }
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "mask",
            "ink",
            "reveal"
          ],
          "renderer": "dom",
          "preview": "previews/trickle-ink-bleed.tsx",
          "source": {
            "project": "trickle",
            "repository": "https://github.com/akaieuan/trickle-UI-kit",
            "revision": "b99c513b1806028137d9d907cebc829d46b62686",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/trickle-ink-bleed/ink-bleed.tsx",
                "upstreamPath": "registry/default/ink-bleed/ink-bleed.tsx",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/registry/default/ink-bleed/ink-bleed.tsx",
                "upstreamSha256": "sha256:3e10af09758e0fff6c8e9c5882cb17ce5d080ce7e4a52ce225ea56415ba525e0",
                "contentSha256": "sha256:9b2a8961d0f73116732389f087013320855d7267afe8011cf651140be12c9941",
                "changes": [
                  "Changed the cn import from @/lib/cn to ../../lib/cn so the copied support file resolves source-locally and after installation.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/cn.ts",
                "upstreamPath": "lib/cn.ts",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/lib/cn.ts",
                "upstreamSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "contentSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/ink-bleed/ink-bleed.tsx and lib/cn.ts",
            "copyright": [
              "Copyright (c) 2026 trickle contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/LICENSE",
              "sha256": "sha256:869578f8849f5cc6e318cc55175220afeef930f112d710406f46a1e919233137",
              "localPath": "registry/sources/trickle/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/trickle-ink-bleed/ink-bleed.tsx",
              "change": "Changed the cn import from @/lib/cn to ../../lib/cn. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Resolve the copied upstream helper from both the source batch and its registry install targets without relying on the upstream site alias. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "ink-mask-text-reveal",
            "sourceHash": "sha256:be64041f0d80d53c1c19b19db993adee7832d1ce2d1c8c2c711258d3f0ae5d50",
            "contentHash": "sha256:256950110bc30d54971a6289b7b46f54ebf6ad0a6a0cba5c2575b881fb9c3a4c",
            "structureHash": "sha256:c1041436372b1705a40b97b9afd144a4f0596eb7cba253eb7b0f2892ce772961"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "trickle-pixelate",
      "type": "registry:component",
      "title": "Pixelate",
      "description": "Resolves text characters from a blurred pixelated state in deterministic order.",
      "author": "trickle contributors",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/trickle/components/trickle-pixelate/pixelate.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/trickle-pixelate.tsx"
        },
        {
          "path": "registry/sources/trickle/lib/cn.ts",
          "type": "registry:lib",
          "target": "@lib/cn.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "cssVars": {
        "theme": {
          "--animate-trickle-pixelate": "trickle-pixelate 1.4s cubic-bezier(0.5, 0, 0.2, 1) both"
        }
      },
      "css": {
        "@keyframes trickle-pixelate": {
          "0%": {
            "filter": "blur(10px) contrast(1.4) brightness(0.8)",
            "letter-spacing": "0.15em",
            "opacity": "0"
          },
          "30%": {
            "filter": "blur(8px) contrast(1.3)",
            "opacity": "0.6"
          },
          "60%": {
            "filter": "blur(3px) contrast(1.1)",
            "letter-spacing": "0.02em",
            "opacity": "0.95"
          },
          "100%": {
            "filter": "blur(0) contrast(1)",
            "letter-spacing": "0",
            "opacity": "1"
          }
        },
        "@media (prefers-reduced-motion: reduce)": {
          ".animate-trickle-pixelate": {
            "animation": "none",
            "filter": "none",
            "opacity": "1",
            "letter-spacing": "0"
          }
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "pixelate",
            "characters",
            "reveal"
          ],
          "renderer": "dom",
          "preview": "previews/trickle-pixelate.tsx",
          "source": {
            "project": "trickle",
            "repository": "https://github.com/akaieuan/trickle-UI-kit",
            "revision": "b99c513b1806028137d9d907cebc829d46b62686",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/trickle-pixelate/pixelate.tsx",
                "upstreamPath": "registry/default/pixelate/pixelate.tsx",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/registry/default/pixelate/pixelate.tsx",
                "upstreamSha256": "sha256:b4ecaff807b2c815749961d9e996eec0fb05df8e320e85285145ab91081fc96e",
                "contentSha256": "sha256:7f4faac459dda4cd5b3940fec100fb91fe32634e6abc23ac7764dff13a439f66",
                "changes": [
                  "Changed the cn import from @/lib/cn to ../../lib/cn so the copied support file resolves source-locally and after installation.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/cn.ts",
                "upstreamPath": "lib/cn.ts",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/lib/cn.ts",
                "upstreamSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "contentSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/pixelate/pixelate.tsx and lib/cn.ts",
            "copyright": [
              "Copyright (c) 2026 trickle contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/LICENSE",
              "sha256": "sha256:869578f8849f5cc6e318cc55175220afeef930f112d710406f46a1e919233137",
              "localPath": "registry/sources/trickle/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/trickle-pixelate/pixelate.tsx",
              "change": "Changed the cn import from @/lib/cn to ../../lib/cn. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Resolve the copied upstream helper from both the source batch and its registry install targets without relying on the upstream site alias. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "shuffled-character-pixelate-reveal",
            "sourceHash": "sha256:835fee192c5d2b3ad1941744611917f1efbd6251bfecf1c4c9744ec1efd0c4a0",
            "contentHash": "sha256:d889f5a9ca3517b65da94914fad3b2adb6eafba7895ca2f036b7bf4fe9ef6e89",
            "structureHash": "sha256:9e9f93ae7845e0e0691486fc9c3945d17fc932cd23bf41972b66f40bc6a4224f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "trickle-shutter",
      "type": "registry:component",
      "title": "Shutter",
      "description": "Reveals caller-provided text through a configurable vertical-bar mask.",
      "author": "trickle contributors",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/trickle/components/trickle-shutter/shutter.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/trickle-shutter.tsx"
        },
        {
          "path": "registry/sources/trickle/lib/cn.ts",
          "type": "registry:lib",
          "target": "@lib/cn.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "cssVars": {
        "theme": {
          "--animate-trickle-shutter": "trickle-shutter 1.1s cubic-bezier(0.7, 0, 0.3, 1) both"
        }
      },
      "css": {
        ".animate-trickle-shutter": {
          "--trickle-shutter-bars": "8"
        },
        "@keyframes trickle-shutter": {
          "0%": {
            "-webkit-mask-image": "repeating-linear-gradient(to right, black 0, black calc(100% / var(--trickle-shutter-bars, 8) / 2), transparent calc(100% / var(--trickle-shutter-bars, 8) / 2), transparent calc(100% / var(--trickle-shutter-bars, 8)))",
            "mask-image": "repeating-linear-gradient(to right, black 0, black calc(100% / var(--trickle-shutter-bars, 8) / 2), transparent calc(100% / var(--trickle-shutter-bars, 8) / 2), transparent calc(100% / var(--trickle-shutter-bars, 8)))",
            "opacity": "0",
            "transform": "scaleY(0.4)"
          },
          "40%": {
            "opacity": "1",
            "transform": "scaleY(1)"
          },
          "100%": {
            "-webkit-mask-image": "linear-gradient(black, black)",
            "mask-image": "linear-gradient(black, black)",
            "opacity": "1",
            "transform": "scaleY(1)"
          }
        },
        "@media (prefers-reduced-motion: reduce)": {
          ".animate-trickle-shutter": {
            "animation": "none",
            "opacity": "1",
            "transform": "none",
            "-webkit-mask-image": "none",
            "mask-image": "none"
          }
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "mask",
            "shutter",
            "reveal"
          ],
          "renderer": "dom",
          "preview": "previews/trickle-shutter.tsx",
          "source": {
            "project": "trickle",
            "repository": "https://github.com/akaieuan/trickle-UI-kit",
            "revision": "b99c513b1806028137d9d907cebc829d46b62686",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/trickle-shutter/shutter.tsx",
                "upstreamPath": "registry/default/shutter/shutter.tsx",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/registry/default/shutter/shutter.tsx",
                "upstreamSha256": "sha256:4d72175b928b3220516c6cd68c4d60812e6d788246373df746d5d0f1665346e4",
                "contentSha256": "sha256:371c67036651f5813b1b973172111b912972962dd265c7378738c3d1ea368a68",
                "changes": [
                  "Changed the cn import from @/lib/cn to ../../lib/cn so the copied support file resolves source-locally and after installation.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/cn.ts",
                "upstreamPath": "lib/cn.ts",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/lib/cn.ts",
                "upstreamSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "contentSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/shutter/shutter.tsx and lib/cn.ts",
            "copyright": [
              "Copyright (c) 2026 trickle contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/LICENSE",
              "sha256": "sha256:869578f8849f5cc6e318cc55175220afeef930f112d710406f46a1e919233137",
              "localPath": "registry/sources/trickle/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/trickle-shutter/shutter.tsx",
              "change": "Changed the cn import from @/lib/cn to ../../lib/cn. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Resolve the copied upstream helper from both the source batch and its registry install targets without relying on the upstream site alias. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "shutter-mask-text-reveal",
            "sourceHash": "sha256:8f01cbbfd55e25d32610747dda5cd5c71d452905b26828dabb9f66df3af8b76f",
            "contentHash": "sha256:22811acfff72415efba7c9a2206be296675aace839d6489992d5350802933289",
            "structureHash": "sha256:29871c7b7a771240e81e57c827c634427caa350797c9416b4476381be7091a29"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "trickle-underline-draw",
      "type": "registry:component",
      "title": "Underline Draw",
      "description": "Draws a configurable underline beneath caller-provided text.",
      "author": "trickle contributors",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/trickle/components/trickle-underline-draw/underline-draw.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/trickle-underline-draw.tsx"
        },
        {
          "path": "registry/sources/trickle/lib/cn.ts",
          "type": "registry:lib",
          "target": "@lib/cn.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "cssVars": {
        "theme": {
          "--animate-trickle-underline-draw": "trickle-underline-draw 0.6s cubic-bezier(0.16, 1, 0.3, 1) both"
        }
      },
      "css": {
        "@keyframes trickle-underline-draw": {
          "from": {
            "background-size": "0% var(--trickle-underline-thickness, 2px)"
          },
          "to": {
            "background-size": "100% var(--trickle-underline-thickness, 2px)"
          }
        },
        "@media (prefers-reduced-motion: reduce)": {
          ".animate-trickle-underline-draw": {
            "animation": "none",
            "background-size": "100% var(--trickle-underline-thickness, 2px)"
          }
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "underline",
            "emphasis",
            "draw"
          ],
          "renderer": "dom",
          "preview": "previews/trickle-underline-draw.tsx",
          "source": {
            "project": "trickle",
            "repository": "https://github.com/akaieuan/trickle-UI-kit",
            "revision": "b99c513b1806028137d9d907cebc829d46b62686",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/trickle-underline-draw/underline-draw.tsx",
                "upstreamPath": "registry/default/underline-draw/underline-draw.tsx",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/registry/default/underline-draw/underline-draw.tsx",
                "upstreamSha256": "sha256:abeb98f2a77f3c1812c4e11a483ba3675c57d82837c7c7ff07826857fb448aca",
                "contentSha256": "sha256:f07a85a1586f8a76e705bce2bb54a57d087d5191c5d017c7b6f8d0c6e4de758f",
                "changes": [
                  "Changed the cn import from @/lib/cn to ../../lib/cn so the copied support file resolves source-locally and after installation.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/cn.ts",
                "upstreamPath": "lib/cn.ts",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/lib/cn.ts",
                "upstreamSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "contentSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/underline-draw/underline-draw.tsx and lib/cn.ts",
            "copyright": [
              "Copyright (c) 2026 trickle contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/LICENSE",
              "sha256": "sha256:869578f8849f5cc6e318cc55175220afeef930f112d710406f46a1e919233137",
              "localPath": "registry/sources/trickle/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/trickle-underline-draw/underline-draw.tsx",
              "change": "Changed the cn import from @/lib/cn to ../../lib/cn. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Resolve the copied upstream helper from both the source batch and its registry install targets without relying on the upstream site alias. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "drawn-text-underline",
            "sourceHash": "sha256:e7ea5b9909988d068bc7807fe0dbc58cc0d0f2133a62556cf69a3db009b2a6cd",
            "contentHash": "sha256:3128e34a1868242d8442c5fc7f4744c55b21957a148707122b2b50c967919581",
            "structureHash": "sha256:41e4fe8b891b109fc02491c0c22ffe0f00efee776291f14aedbc962a56100857"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "trickle-wireframe",
      "type": "registry:component",
      "title": "Wireframe",
      "description": "Transitions text characters from outlined strokes to a solid fill.",
      "author": "trickle contributors",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.5.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/trickle/components/trickle-wireframe/wireframe.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/trickle-wireframe.tsx"
        },
        {
          "path": "registry/sources/trickle/lib/cn.ts",
          "type": "registry:lib",
          "target": "@lib/cn.ts"
        }
      ],
      "categories": [
        "text-motion"
      ],
      "cssVars": {
        "theme": {
          "--animate-trickle-wireframe": "trickle-wireframe 1.6s cubic-bezier(0.65, 0, 0.35, 1) both"
        }
      },
      "css": {
        "@keyframes trickle-wireframe": {
          "0%": {
            "-webkit-text-stroke": "var(--trickle-wireframe-stroke, 1px) currentColor",
            "color": "transparent",
            "letter-spacing": "0.08em",
            "opacity": "0"
          },
          "20%": {
            "opacity": "1"
          },
          "60%": {
            "-webkit-text-stroke": "var(--trickle-wireframe-stroke, 1px) currentColor",
            "color": "transparent",
            "letter-spacing": "0"
          },
          "100%": {
            "-webkit-text-stroke": "0 currentColor",
            "color": "currentColor",
            "letter-spacing": "0",
            "opacity": "1"
          }
        },
        "@media (prefers-reduced-motion: reduce)": {
          ".animate-trickle-wireframe": {
            "animation": "none",
            "color": "currentColor",
            "-webkit-text-stroke": "0",
            "opacity": "1"
          }
        }
      },
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "text-motion",
          "tags": [
            "text",
            "outline",
            "characters",
            "fill"
          ],
          "renderer": "dom",
          "preview": "previews/trickle-wireframe.tsx",
          "source": {
            "project": "trickle",
            "repository": "https://github.com/akaieuan/trickle-UI-kit",
            "revision": "b99c513b1806028137d9d907cebc829d46b62686",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/trickle-wireframe/wireframe.tsx",
                "upstreamPath": "registry/default/wireframe/wireframe.tsx",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/registry/default/wireframe/wireframe.tsx",
                "upstreamSha256": "sha256:b18e08c12257d9c1e584ffe7e66c9bd48d6b5a745cebb96d9636526e18e94795",
                "contentSha256": "sha256:245e78f31be0185522ea0f68151316df97902fc096bcc55d7907b67bb6d6403b",
                "changes": [
                  "Changed the cn import from @/lib/cn to ../../lib/cn so the copied support file resolves source-locally and after installation.",
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "lib/cn.ts",
                "upstreamPath": "lib/cn.ts",
                "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/lib/cn.ts",
                "upstreamSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "contentSha256": "sha256:d6cf1d2c25e92eba18c73f11c9676f0a7099020f1010396b94fa4c0356e7fc9a",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "registry/default/wireframe/wireframe.tsx and lib/cn.ts",
            "copyright": [
              "Copyright (c) 2026 trickle contributors"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/akaieuan/trickle-UI-kit/blob/b99c513b1806028137d9d907cebc829d46b62686/LICENSE",
              "sha256": "sha256:869578f8849f5cc6e318cc55175220afeef930f112d710406f46a1e919233137",
              "localPath": "registry/sources/trickle/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/trickle-wireframe/wireframe.tsx",
              "change": "Changed the cn import from @/lib/cn to ../../lib/cn. Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Resolve the copied upstream helper from both the source batch and its registry install targets without relying on the upstream site alias. Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "character-wireframe-fill",
            "sourceHash": "sha256:f5480a85c2009b7aa5953ba8f95933dd1b6db03db0195fe4fdc655f74d662534",
            "contentHash": "sha256:cd00c9c5ee0893dfc4d289f2bfc5cccd43f33a57268c1fa8d2e9f68ea4be489a",
            "structureHash": "sha256:4f4efc3119f55dd71a2d5e96a43f1499c3dc179109b074f9971a19771abcc050"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ui-x-date-time-range-field",
      "type": "registry:component",
      "title": "Date Time Range Field",
      "description": "Provides keyboard-editable start and end date-time segments with controlled and uncontrolled range state.",
      "author": "Kwan Jun Wen",
      "dependencies": [
        "@base-ui/react@1.6.0",
        "@base-ui/utils@0.3.1",
        "clsx@2.1.1",
        "react-day-picker@9.7.0",
        "tailwind-merge@3.6.0",
        "timescape@0.8.0"
      ],
      "registryDependencies": [
        "input-group"
      ],
      "files": [
        {
          "path": "registry/sources/ui-x/components/ui-x/date-time-range-field.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/ui-x/date-time-range-field.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/date-time-range-field-primitive.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/date-time-range-field-primitive.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/date-time-field.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/date-time-field.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/date-time-field-primitive.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/date-time-field-primitive.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/use-timescape.ts",
          "type": "registry:hook",
          "target": "@components/taste-blocks/ui-x/use-timescape.ts"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "date",
            "time",
            "range",
            "segmented-input"
          ],
          "renderer": "dom",
          "preview": "previews/ui-x-date-time-range-field.tsx",
          "source": {
            "project": "UI-X",
            "repository": "https://github.com/junwen-k/ui-x",
            "revision": "800d4f47fec33524967f97fde59a762df4afbf00",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ui-x/date-time-range-field.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/date-time-range-field.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/date-time-range-field.tsx",
                "upstreamSha256": "sha256:379d0aedc1ff4fbfb97ae628b33283fd82cd3d6e47c4b829b95e9764e78952c8",
                "contentSha256": "sha256:123d8188fc23b6cf29bab58a8b42d4ab41f4cfd907806d69727a5b37820b5d5d",
                "changes": [
                  "Changed UI-X internal and cn aliases to copied source-local imports."
                ]
              },
              {
                "shippedPath": "components/ui-x/date-time-range-field-primitive.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/date-time-range-field-primitive.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/date-time-range-field-primitive.tsx",
                "upstreamSha256": "sha256:76aeeb6c9466f3c071900c93cfa3a040dcdcffb9b429bda616338d14490de8d3",
                "contentSha256": "sha256:1b0227924359d63603c0d69d0e4fb2ff6e8350cf287ca63ff5356d0a3ae51afa",
                "changes": [
                  "Changed the UI-X hook alias to the copied source-local module."
                ]
              },
              {
                "shippedPath": "components/ui-x/date-time-field.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/date-time-field.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/date-time-field.tsx",
                "upstreamSha256": "sha256:3f5fd8e821f34c1ba030145b37225a30a6e09fd16e00805291fc1f763ceeeec6",
                "contentSha256": "sha256:1b153f19669e3066e675c3565fe25978bb68550aff671eead663cfa036e95328",
                "changes": [
                  "Changed UI-X internal and cn aliases to copied source-local imports."
                ]
              },
              {
                "shippedPath": "components/ui-x/date-time-field-primitive.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/date-time-field-primitive.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/date-time-field-primitive.tsx",
                "upstreamSha256": "sha256:616efafedbf3410257d44775c2ccdcc9692f1f42e59ac95a06c9b604826b4c44",
                "contentSha256": "sha256:548525b1bb2243fb47350834f6cf921c1c73038d7c61e22b3b94368f483ab1a5",
                "changes": [
                  "Changed the UI-X hook alias to the copied source-local module."
                ]
              },
              {
                "shippedPath": "components/ui-x/use-timescape.ts",
                "upstreamPath": "apps/v4/src/registry/new-york/hooks/use-timescape.ts",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/hooks/use-timescape.ts",
                "upstreamSha256": "sha256:14d120d2e8c61eaa589b8e3f77e92728a858a3df0cf83916a653d0ac4f8c96e9",
                "contentSha256": "sha256:14d120d2e8c61eaa589b8e3f77e92728a858a3df0cf83916a653d0ac4f8c96e9",
                "changes": []
              },
              {
                "shippedPath": "components/ui-x/lib/utils.ts",
                "upstreamPath": "apps/v4/src/lib/utils.ts",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/src/registry/new-york/ui/date-time-range-field.tsx, apps/v4/src/registry/new-york/ui/date-time-range-field-primitive.tsx, apps/v4/src/registry/new-york/ui/date-time-field.tsx, apps/v4/src/registry/new-york/ui/date-time-field-primitive.tsx, apps/v4/src/registry/new-york/hooks/use-timescape.ts, apps/v4/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 junwen-k"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/LICENSE.md",
              "sha256": "sha256:a80d52497975e3a97ebf893008dab7ad8ea176e9b48b179b443c60650af770e2",
              "localPath": "registry/sources/ui-x/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ui-x/date-time-range-field.tsx",
              "change": "Changed UI-X internal and cn aliases to copied source-local imports.",
              "reason": "Keep the copied component source-local and safe in forms while preserving upstream behavior."
            },
            {
              "shippedPath": "components/ui-x/date-time-range-field-primitive.tsx",
              "change": "Changed the UI-X hook alias to the copied source-local module.",
              "reason": "Keep the copied component source-local and safe in forms while preserving upstream behavior."
            },
            {
              "shippedPath": "components/ui-x/date-time-field.tsx",
              "change": "Changed UI-X internal and cn aliases to copied source-local imports.",
              "reason": "Keep the copied component source-local and safe in forms while preserving upstream behavior."
            },
            {
              "shippedPath": "components/ui-x/date-time-field-primitive.tsx",
              "change": "Changed the UI-X hook alias to the copied source-local module.",
              "reason": "Keep the copied component source-local and safe in forms while preserving upstream behavior."
            }
          ],
          "dedupe": {
            "family": "segmented-date-time-range-field",
            "sourceHash": "sha256:ab7030dcf52efd9b8418e89890dbb54ba852b6fe704e67527af749cd8c63ef7c",
            "contentHash": "sha256:fc5202a9d71c76ce78f16af01035ff52f9ae66c63a31639b3aabda3bdd1de213",
            "structureHash": "sha256:fca1c52088ec69933a1d909b830fd3bc5ce1006adeaac9853046b9524c8bfd54"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ui-x-dropzone",
      "type": "registry:component",
      "title": "Dropzone",
      "description": "Provides an accessible file input with drag states, validation states, keyboard activation, and accepted-file output.",
      "author": "Kwan Jun Wen",
      "dependencies": [
        "@base-ui/react@1.6.0",
        "clsx@2.1.1",
        "lucide-react@0.511.0",
        "react-dropzone@17.0.0",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ui-x/components/ui-x/dropzone.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/ui-x/dropzone.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/dropzone-primitive.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/dropzone-primitive.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "files",
            "drag-and-drop",
            "upload",
            "validation"
          ],
          "renderer": "dom",
          "preview": "previews/ui-x-dropzone.tsx",
          "source": {
            "project": "UI-X",
            "repository": "https://github.com/junwen-k/ui-x",
            "revision": "800d4f47fec33524967f97fde59a762df4afbf00",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ui-x/dropzone.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/dropzone.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/dropzone.tsx",
                "upstreamSha256": "sha256:e6c69822c394e7a25ed1cd662ad144aff3e105c9a9aae7902769a67bd160d818",
                "contentSha256": "sha256:fdf970dad6210a4126ced3cea277628ccaf2ed6bc44c7bfb831615c638bb1c7e",
                "changes": [
                  "Changed UI-X internal and cn aliases to copied source-local imports.",
                  "Disabled the color transition when reduced motion is requested."
                ]
              },
              {
                "shippedPath": "components/ui-x/dropzone-primitive.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/dropzone-primitive.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/dropzone-primitive.tsx",
                "upstreamSha256": "sha256:42108e385a351010e3cbdce7b81b5318cdd57070c82daef6e6db5ffdbfe3be4d",
                "contentSha256": "sha256:18eb02e690d2c3e59dc4c04e42452fd422e961882988c433ca221aeddff845e3",
                "changes": [
                  "Set the optional trigger to type=button so it cannot submit a parent form."
                ]
              },
              {
                "shippedPath": "components/ui-x/lib/utils.ts",
                "upstreamPath": "apps/v4/src/lib/utils.ts",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/src/registry/new-york/ui/dropzone.tsx, apps/v4/src/registry/new-york/ui/dropzone-primitive.tsx, apps/v4/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 junwen-k"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/LICENSE.md",
              "sha256": "sha256:a80d52497975e3a97ebf893008dab7ad8ea176e9b48b179b443c60650af770e2",
              "localPath": "registry/sources/ui-x/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ui-x/dropzone.tsx",
              "change": "Changed UI-X internal and cn aliases to copied source-local imports. Disabled the color transition when reduced motion is requested.",
              "reason": "Keep the copied component source-local and safe in forms while preserving upstream behavior."
            },
            {
              "shippedPath": "components/ui-x/dropzone-primitive.tsx",
              "change": "Set the optional trigger to type=button so it cannot submit a parent form.",
              "reason": "Keep the copied component source-local and safe in forms while preserving upstream behavior."
            }
          ],
          "dedupe": {
            "family": "accessible-drag-and-drop-file-input",
            "sourceHash": "sha256:d720bd5d8510a5d0eb944927a8d4dbe9982086eb3737d6bd2c178c6d24979548",
            "contentHash": "sha256:cfa7aecdcfcd0874c21073d1b16b9a1f6223330e49293a8fcdebe90e391f6560",
            "structureHash": "sha256:aa1686c7475a632d5a8aa3e50ac9b31c4435b25168aa5ca85a660d5a9b34e453"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ui-x-phone-input",
      "type": "registry:component",
      "title": "Phone Input",
      "description": "Provides international phone formatting with a searchable country selector, flags, and calling codes.",
      "author": "Kwan Jun Wen",
      "dependencies": [
        "@base-ui/react@1.6.0",
        "@base-ui/utils@0.3.1",
        "clsx@2.1.1",
        "lucide-react@0.511.0",
        "react-phone-number-input@3.4.17",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [
        "input",
        "select"
      ],
      "files": [
        {
          "path": "registry/sources/ui-x/components/ui-x/phone-input.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/ui-x/phone-input.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/phone-input-primitive.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/phone-input-primitive.tsx"
        },
        {
          "path": "registry/sources/ui-x/components/ui-x/lib/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/ui-x/lib/utils.ts"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "phone",
            "country",
            "international",
            "validation"
          ],
          "renderer": "dom",
          "preview": "previews/ui-x-phone-input.tsx",
          "source": {
            "project": "UI-X",
            "repository": "https://github.com/junwen-k/ui-x",
            "revision": "800d4f47fec33524967f97fde59a762df4afbf00",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ui-x/phone-input.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/phone-input.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/phone-input.tsx",
                "upstreamSha256": "sha256:e02699b08523d2bbb1c75db50829ad0403359431da4b0a2e6b81a25148d2fef0",
                "contentSha256": "sha256:e42aaa50ea272eb232cb6cc757cb5dcfd972779acbc17151188fdd8b2abbb29a",
                "changes": [
                  "Changed UI-X internal and cn aliases to copied source-local imports."
                ]
              },
              {
                "shippedPath": "components/ui-x/phone-input-primitive.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/phone-input-primitive.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/phone-input-primitive.tsx",
                "upstreamSha256": "sha256:ea48d3559c6f0eae9904e8faed0553b719162fc11c81dd0bd1c4545d2fb5d5ec",
                "contentSha256": "sha256:ea48d3559c6f0eae9904e8faed0553b719162fc11c81dd0bd1c4545d2fb5d5ec",
                "changes": []
              },
              {
                "shippedPath": "components/ui-x/lib/utils.ts",
                "upstreamPath": "apps/v4/src/lib/utils.ts",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/lib/utils.ts",
                "upstreamSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/src/registry/new-york/ui/phone-input.tsx, apps/v4/src/registry/new-york/ui/phone-input-primitive.tsx, apps/v4/src/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2025 junwen-k"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/LICENSE.md",
              "sha256": "sha256:a80d52497975e3a97ebf893008dab7ad8ea176e9b48b179b443c60650af770e2",
              "localPath": "registry/sources/ui-x/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/ui-x/phone-input.tsx",
              "change": "Changed UI-X internal and cn aliases to copied source-local imports.",
              "reason": "Keep the copied component source-local and safe in forms while preserving upstream behavior."
            }
          ],
          "dedupe": {
            "family": "country-aware-international-phone-input",
            "sourceHash": "sha256:26f961f45bff6c7ff088fb0a450f46ab39720a7f040527e40bf69d5a530508b1",
            "contentHash": "sha256:1248dbd791e5b8c81e7524a48ade5da94c8516e70c3d7fe4b00ca6053595fe2e",
            "structureHash": "sha256:27350da2d70aac157bb7fd6b782d8325bfa4099c526ba1c156e6125e02d011c2"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "ui-x-virtualized",
      "type": "registry:component",
      "title": "Virtualized Collection",
      "description": "Provides list, grid, and external-scroll virtualizers for rendering large collections efficiently.",
      "author": "Kwan Jun Wen",
      "dependencies": [
        "@base-ui/react@1.6.0",
        "virtua@0.49.3"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ui-x/components/ui-x/virtualized.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/ui-x/virtualized.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "virtualization",
            "list",
            "grid",
            "performance"
          ],
          "renderer": "dom",
          "preview": "previews/ui-x-virtualized.tsx",
          "source": {
            "project": "UI-X",
            "repository": "https://github.com/junwen-k/ui-x",
            "revision": "800d4f47fec33524967f97fde59a762df4afbf00",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/ui-x/virtualized.tsx",
                "upstreamPath": "apps/v4/src/registry/new-york/ui/virtualized.tsx",
                "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/apps/v4/src/registry/new-york/ui/virtualized.tsx",
                "upstreamSha256": "sha256:c04e9cfd9c209a5361b9674397ff4458d7fd350d5456d7d6593e3d2db49d9e27",
                "contentSha256": "sha256:c04e9cfd9c209a5361b9674397ff4458d7fd350d5456d7d6593e3d2db49d9e27",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/v4/src/registry/new-york/ui/virtualized.tsx",
            "copyright": [
              "Copyright (c) 2025 junwen-k"
            ],
            "evidence": {
              "upstreamPath": "LICENSE.md",
              "permalink": "https://github.com/junwen-k/ui-x/blob/800d4f47fec33524967f97fde59a762df4afbf00/LICENSE.md",
              "sha256": "sha256:a80d52497975e3a97ebf893008dab7ad8ea176e9b48b179b443c60650af770e2",
              "localPath": "registry/sources/ui-x/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [],
          "dedupe": {
            "family": "virtualized-list-grid-container",
            "sourceHash": "sha256:ce609329b03cef0c54a1ac56df914171945d40a2723eceeda3019f1b7031af90",
            "contentHash": "sha256:ce609329b03cef0c54a1ac56df914171945d40a2723eceeda3019f1b7031af90",
            "structureHash": "sha256:23e152785b3ea3e6bb354d0a70e59652e25c72738581cac204194b61c4d865ca"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "uilayouts-blur-vignette",
      "type": "registry:component",
      "title": "Blur Vignette",
      "description": "Applies a soft edge blur and mask around caller-provided media or content.",
      "author": "UI LAYOUT",
      "dependencies": [
        "clsx@2.1.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-blur-vignette/blur-vignette.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/blur-vignette.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-blur-vignette/blur-vignette.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/blur-vignette.css"
        },
        {
          "path": "registry/sources/ui-layouts/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "blur",
            "vignette",
            "mask"
          ],
          "renderer": "dom",
          "preview": "previews/uilayouts-blur-vignette.tsx",
          "source": {
            "project": "UI Layouts Free",
            "repository": "https://github.com/ui-layouts/uilayouts",
            "revision": "fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/uilayouts-blur-vignette/blur-vignette.tsx",
                "upstreamPath": "apps/ui-layout/components/ui/blur-vignette.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/components/ui/blur-vignette.tsx",
                "upstreamSha256": "sha256:c3847b185a3e5208854c8be001be11ddb91755825e6e0d5c69250555e89a5b73",
                "contentSha256": "sha256:ba76d50e152cb1d5ad992441f558a5bd48356c20736206224cd18bf51640eeda",
                "changes": [
                  "Changed the root-alias utility import to ../../lib/utils and imported the copied component CSS.",
                  "Marked an empty blur overlay decorative while preserving semantic child content.",
                  "Normalized formatting."
                ]
              },
              {
                "shippedPath": "components/uilayouts-blur-vignette/blur-vignette.css",
                "upstreamPath": "apps/ui-layout/app/globals.css",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/app/globals.css",
                "upstreamSha256": "sha256:8eb641289a096f6f1a12ae4192c56251eca333e20c1ca7b1ee73d97effab66f6",
                "contentSha256": "sha256:76ba85ac604bcdfa609ba71c1dc1ab11e148b7343ad790f63986df971c0faed7",
                "changes": [
                  "Extracted only the required blur-vignette utility from the site stylesheet.",
                  "Converted the Tailwind @utility wrapper to a portable class and added unprefixed mask declarations for non-WebKit browsers."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/ui-layout/lib/utils.ts",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/lib/utils.ts",
                "upstreamSha256": "sha256:e5cfefb5de4d4e1f22ec85ef7229f06154fbad3a19cdcf64cb19b5b738e9f996",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Retained only the upstream cn helper and removed site configuration, URLs, and unrelated timing helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/ui-layout/components/ui/blur-vignette.tsx, the blur-vignette utility in apps/ui-layout/app/globals.css, and apps/ui-layout/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 UI LAYOUT"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/LICENSE",
              "sha256": "sha256:25d698c61ceea4d42107ef85ef37d4449f1169ca24c7ee288db434688071e1e3",
              "localPath": "registry/sources/ui-layouts/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/uilayouts-blur-vignette/blur-vignette.tsx",
              "change": "Rewired local support imports, added the required stylesheet import, marked an empty overlay decorative, and normalized formatting.",
              "reason": "Make the copied component self-contained and keep an empty visual overlay out of the accessibility tree."
            },
            {
              "shippedPath": "components/uilayouts-blur-vignette/blur-vignette.css",
              "change": "Extracted the blur-vignette utility as a component class and added standard mask properties beside the upstream WebKit-prefixed properties.",
              "reason": "Ship the exact required style closure without the site stylesheet and preserve the effect in browsers using unprefixed masks."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed unrelated site configuration and timing helpers, retaining cn only.",
              "reason": "Keep the copied support closure minimal and remove site URLs."
            }
          ],
          "dedupe": {
            "family": "edge-blur-vignette",
            "sourceHash": "sha256:5841f72dc2e224dbf89684d832001a340c31f044bbeb153bc0094bb9dd005f26",
            "contentHash": "sha256:1e3f3b2f98ee824b910e1f4f6de8d9306db25aa0aa9c58a8bdf6aa77d55730c3",
            "structureHash": "sha256:1a38943af9e6e9e8ccfd9d371fff342fdf80344e161b0578fee7c94e293d8647"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "uilayouts-code-tabs",
      "type": "registry:component",
      "title": "Code Tabs",
      "description": "Displays one or more caller-provided code samples with accessible tabs, highlighting, and copy controls.",
      "author": "UI LAYOUT",
      "dependencies": [
        "@radix-ui/react-tabs@1.1.16",
        "clsx@2.1.1",
        "lucide-react@1.23.0",
        "shiki@4.3.1",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-code-tabs/code-tabs.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/code-tabs.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-code-tabs/code-tabs-tabs.tsx",
          "type": "registry:ui",
          "target": "@components/taste-blocks/code-tabs-tabs.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-code-tabs/code-tabs-copy-button.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/code-tabs-copy-button.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "code",
            "tabs",
            "syntax-highlighting"
          ],
          "renderer": "dom",
          "preview": "previews/uilayouts-code-tabs.tsx",
          "source": {
            "project": "UI Layouts Free",
            "repository": "https://github.com/ui-layouts/uilayouts",
            "revision": "fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/uilayouts-code-tabs/code-tabs.tsx",
                "upstreamPath": "apps/ui-layout/components/ui/code-tabs.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/components/ui/code-tabs.tsx",
                "upstreamSha256": "sha256:4bd4e60018ecabeb0b0545d0410c1e459e00826bbfb18fa63c1f35159cff0f37",
                "contentSha256": "sha256:55d849b34fcc427747abdbb8b76199a93240c49bb7a754864defdaf46ad2e1db",
                "changes": [
                  "Changed website and root-alias imports to copied local support files.",
                  "Removed the branded ui-layouts/shadcn logo branch and retained the generic caller-driven tabs API.",
                  "Added a plain-code fallback for Shiki load failures and horizontal overflow for long lines.",
                  "Normalized formatting."
                ]
              },
              {
                "shippedPath": "components/uilayouts-code-tabs/code-tabs-tabs.tsx",
                "upstreamPath": "apps/ui-layout/components/website/ui/tabs.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/components/website/ui/tabs.tsx",
                "upstreamSha256": "sha256:191f604e4b9f6ee0b8471f97bbf47baabdf69d68b37c4be35db422c369646390",
                "contentSha256": "sha256:55c282892f167b2da50ae9bfcb87b9e52b7db06dff57fdebbdb909d31f4f96a5",
                "changes": [
                  "Changed the utility import to ../../lib/utils, added a reduced-motion transition class, and normalized formatting."
                ]
              },
              {
                "shippedPath": "components/uilayouts-code-tabs/code-tabs-copy-button.tsx",
                "upstreamPath": "apps/ui-layout/components/website/code-components/copy-button.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/components/website/code-components/copy-button.tsx",
                "upstreamSha256": "sha256:b9182a153f3e468338dc76bdc6b10dd0681e786b837917142e734d1075bb314a",
                "contentSha256": "sha256:a9e4e38ef9a87989d39958825e5105b1779bc1711a1789f6376211280ce26c58",
                "changes": [
                  "Changed the utility import to ../../lib/utils.",
                  "Replaced the clickable div with a named button, handled clipboard rejection, and cleaned up the reset timer.",
                  "Added reduced-motion styling and normalized formatting."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/ui-layout/lib/utils.ts",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/lib/utils.ts",
                "upstreamSha256": "sha256:e5cfefb5de4d4e1f22ec85ef7229f06154fbad3a19cdcf64cb19b5b738e9f996",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Retained only the upstream cn helper and removed site configuration, URLs, and unrelated timing helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/ui-layout/components/ui/code-tabs.tsx, apps/ui-layout/components/website/ui/tabs.tsx, apps/ui-layout/components/website/code-components/copy-button.tsx, and apps/ui-layout/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 UI LAYOUT"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/LICENSE",
              "sha256": "sha256:25d698c61ceea4d42107ef85ef37d4449f1169ca24c7ee288db434688071e1e3",
              "localPath": "registry/sources/ui-layouts/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/uilayouts-code-tabs/code-tabs.tsx",
              "change": "Rewired copied support, removed the branded demo mode, and added highlighting failure and long-line fallbacks.",
              "reason": "Keep one generic component API, remove built-in trademarks, and preserve readable code if optional highlighting fails."
            },
            {
              "shippedPath": "components/uilayouts-code-tabs/code-tabs-tabs.tsx",
              "change": "Rewired the copied utility and disabled CSS transitions for reduced motion.",
              "reason": "Make the copied Radix tabs support portable and respect the user motion preference."
            },
            {
              "shippedPath": "components/uilayouts-code-tabs/code-tabs-copy-button.tsx",
              "change": "Rewired the copied utility, changed the clickable div to a named button, handled clipboard failure, cleaned up its timer, and disabled transitions for reduced motion.",
              "reason": "Make copy keyboard-accessible and prevent stale timers or false success feedback."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed unrelated site configuration and timing helpers, retaining cn only.",
              "reason": "Keep the copied support closure minimal and remove site URLs."
            }
          ],
          "dedupe": {
            "family": "syntax-highlighted-code-tabs",
            "sourceHash": "sha256:a35791122d7bf0d98e6bc5151f798391712255ed03c347b4ebad6f6fd3722fb6",
            "contentHash": "sha256:f423641c07aab715cb22dc759c36b79551d24f899b21978631d4c9ba1ed714d8",
            "structureHash": "sha256:c6feb96550507faf4d0cb48371fe37b77a3fd1697955c97086895f615b38027c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "uilayouts-image-tabs",
      "type": "registry:component",
      "title": "Image Tabs",
      "description": "Pairs descriptive tabs with a responsive caller-provided visual for the active item.",
      "author": "UI LAYOUT",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.42.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-image-tabs/image-tabs.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/image-tabs.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/hooks/use-media-query.tsx",
          "type": "registry:hook",
          "target": "@hooks/use-media-query.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "tabs",
            "images",
            "descriptions"
          ],
          "renderer": "dom",
          "preview": "previews/uilayouts-image-tabs.tsx",
          "source": {
            "project": "UI Layouts Free",
            "repository": "https://github.com/ui-layouts/uilayouts",
            "revision": "fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/uilayouts-image-tabs/image-tabs.tsx",
                "upstreamPath": "apps/ui-layout/components/ui/image-tabs.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/components/ui/image-tabs.tsx",
                "upstreamSha256": "sha256:4a8d46d9bb7e785246a473f828f54b58be689c38f8607cadbf88dca89abedeb1",
                "contentSha256": "sha256:998fe9739fe94aff54445850e680d5483a90579d9a701591d9d302d95dcfcda8",
                "changes": [
                  "Changed root-alias imports to the copied hook and utility paths.",
                  "Moved selection from a clickable div to the existing header as a button and added tablist, tab, and tabpanel relationships.",
                  "Added arrow, Home, and End keyboard navigation plus reduced-motion transitions.",
                  "Normalized formatting."
                ]
              },
              {
                "shippedPath": "hooks/use-media-query.tsx",
                "upstreamPath": "apps/ui-layout/hooks/use-media-query.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/hooks/use-media-query.tsx",
                "upstreamSha256": "sha256:4b40788a32615b8165a1be8fe3372aa566be1237821448a581f45e69f6adc659",
                "contentSha256": "sha256:b4b64881a60d5524a93d1ff54efcbda6cd2af3ed211f73e475fb39dfdb2b7fb2",
                "changes": [
                  "Normalized formatting without changing behavior."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/ui-layout/lib/utils.ts",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/lib/utils.ts",
                "upstreamSha256": "sha256:e5cfefb5de4d4e1f22ec85ef7229f06154fbad3a19cdcf64cb19b5b738e9f996",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Retained only the upstream cn helper and removed site configuration, URLs, and unrelated timing helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/ui-layout/components/ui/image-tabs.tsx, apps/ui-layout/hooks/use-media-query.tsx, and apps/ui-layout/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 UI LAYOUT"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/LICENSE",
              "sha256": "sha256:25d698c61ceea4d42107ef85ef37d4449f1169ca24c7ee288db434688071e1e3",
              "localPath": "registry/sources/ui-layouts/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/uilayouts-image-tabs/image-tabs.tsx",
              "change": "Rewired copied support imports, moved activation to a button, added complete tab semantics and keyboard navigation, and disabled transitions for reduced motion.",
              "reason": "Preserve the source interaction while making it keyboard-operable and semantically identifiable as tabs."
            },
            {
              "shippedPath": "hooks/use-media-query.tsx",
              "change": "Normalized formatting.",
              "reason": "Match the repository source format without changing behavior."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed unrelated site configuration and timing helpers, retaining cn only.",
              "reason": "Keep the copied support closure minimal and remove site URLs."
            }
          ],
          "dedupe": {
            "family": "descriptive-image-tab-selector",
            "sourceHash": "sha256:f0e8f8c53a79da9316f7a479aeb169228f94ef3cc7a9ad7f9b7bc9e75b1b2ef2",
            "contentHash": "sha256:a6bc05caa99ffc17d2a19e34d9c491e7323e4313903a063c82a03b7e1ba80680",
            "structureHash": "sha256:09c49b7d5634653905e1851a79fb2a06b4a31fdbb660c8ffecdf8d0e75d04445"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "uilayouts-liquid-glass",
      "type": "registry:component",
      "title": "Liquid Glass",
      "description": "Renders an optionally draggable or expandable glass surface with an SVG displacement filter.",
      "author": "UI LAYOUT",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.42.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-liquid-glass/liquid-glass.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/liquid-glass.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "visual-effects"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "visual-effects",
          "tags": [
            "glass",
            "svg-filter",
            "expandable"
          ],
          "renderer": "svg",
          "preview": "previews/uilayouts-liquid-glass.tsx",
          "source": {
            "project": "UI Layouts Free",
            "repository": "https://github.com/ui-layouts/uilayouts",
            "revision": "fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/uilayouts-liquid-glass/liquid-glass.tsx",
                "upstreamPath": "apps/ui-layout/components/ui/liquid-glass.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/components/ui/liquid-glass.tsx",
                "upstreamSha256": "sha256:f00ef2b1ba54475581feec8069ce9b092b14c27acb1401a318ac78c2c919bcdc",
                "contentSha256": "sha256:ec17ac66b8c1785c7eb50aff1591d0360beac6648355856416e175fe7afb0215",
                "changes": [
                  "Removed @ts-nocheck by typing the copied Motion props and changed the utility import to ../../lib/utils.",
                  "Generated a unique SVG filter ID per instance and marked filter layers decorative.",
                  "Changed draggable to opt in so the default surface has no pointer-only motion.",
                  "Replaced click and synthetic-button behavior on the content wrapper with a native expansion button carrying aria-expanded.",
                  "Limited hover and tap scaling to explicit drag mode and retained reduced-motion behavior.",
                  "Normalized formatting."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/ui-layout/lib/utils.ts",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/lib/utils.ts",
                "upstreamSha256": "sha256:e5cfefb5de4d4e1f22ec85ef7229f06154fbad3a19cdcf64cb19b5b738e9f996",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Retained only the upstream cn helper and removed site configuration, URLs, and unrelated timing helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/ui-layout/components/ui/liquid-glass.tsx and apps/ui-layout/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 UI LAYOUT"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/LICENSE",
              "sha256": "sha256:25d698c61ceea4d42107ef85ef37d4449f1169ca24c7ee288db434688071e1e3",
              "localPath": "registry/sources/ui-layouts/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/uilayouts-liquid-glass/liquid-glass.tsx",
              "change": "Typed the source, rewired its local utility, scoped SVG filter IDs, hid decorative layers, made drag opt in, moved expansion to a native button, and limited motion under reduced-motion or non-draggable defaults.",
              "reason": "Allow multiple instances, preserve type safety, avoid default pointer-only motion, and prevent arbitrary child controls from being nested inside a synthetic button."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed unrelated site configuration and timing helpers, retaining cn only.",
              "reason": "Keep the copied support closure minimal and remove site URLs."
            }
          ],
          "dedupe": {
            "family": "interactive-liquid-glass-surface",
            "sourceHash": "sha256:125d04e2d1272578cbaa6aa8fdc3cf9957be3800ebb34f496f702729bf5c7441",
            "contentHash": "sha256:6df3958fc51fc986dbc7363d9e79ff7ca7eea4cba95ae9656ee7274dc72f85f9",
            "structureHash": "sha256:fff2da5dc8e59f1f806c9668eef15bca6ebd707022e988c1baccef85de5d6a3e"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "uilayouts-progressive-carousel",
      "type": "registry:component",
      "title": "Progressive Carousel",
      "description": "Provides direct slide selection with optional timed progress and a controlled pause state.",
      "author": "UI LAYOUT",
      "dependencies": [
        "clsx@2.1.1",
        "motion@12.42.2",
        "tailwind-merge@3.6.0"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/ui-layouts/components/uilayouts-progressive-carousel/progressive-carousel.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/progressive-carousel.tsx"
        },
        {
          "path": "registry/sources/ui-layouts/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "carousel",
            "progress",
            "autoplay"
          ],
          "renderer": "dom",
          "preview": "previews/uilayouts-progressive-carousel.tsx",
          "source": {
            "project": "UI Layouts Free",
            "repository": "https://github.com/ui-layouts/uilayouts",
            "revision": "fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/uilayouts-progressive-carousel/progressive-carousel.tsx",
                "upstreamPath": "apps/ui-layout/components/ui/progressive-carousel.tsx",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/components/ui/progressive-carousel.tsx",
                "upstreamSha256": "sha256:5d18b425f316b2f9732256cc0d4bac91d60dc3b2e4ba73838d84db5f9c5df3ad",
                "contentSha256": "sha256:42565b22b0356e19dd76c5e073edd6a3eb00f366732ff09b79375adae3d18dbb",
                "changes": [
                  "Added the client boundary and changed the root-alias utility import to ../../lib/utils.",
                  "Made autoplay opt-in with autoPlay defaulting to false and added a controlled paused prop for a stable external pause/resume control.",
                  "Paused opted-in autoplay while offscreen, hidden, hovered, or keyboard-focused while allowing an explicit fast-forward selection to complete, and stopped autoplay for reduced motion.",
                  "Fixed fast-forward progress timing and made reduced-motion slide selection immediate.",
                  "Marked the visual progress fill decorative and exposed the active control with aria-pressed.",
                  "Normalized formatting."
                ]
              },
              {
                "shippedPath": "lib/utils.ts",
                "upstreamPath": "apps/ui-layout/lib/utils.ts",
                "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/apps/ui-layout/lib/utils.ts",
                "upstreamSha256": "sha256:e5cfefb5de4d4e1f22ec85ef7229f06154fbad3a19cdcf64cb19b5b738e9f996",
                "contentSha256": "sha256:4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
                "changes": [
                  "Retained only the upstream cn helper and removed site configuration, URLs, and unrelated timing helpers."
                ]
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "apps/ui-layout/components/ui/progressive-carousel.tsx and apps/ui-layout/lib/utils.ts",
            "copyright": [
              "Copyright (c) 2024 UI LAYOUT"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/ui-layouts/uilayouts/blob/fcc2c596d38c0d7d72b0a4550f75c17a652c0bf6/LICENSE",
              "sha256": "sha256:25d698c61ceea4d42107ef85ef37d4449f1169ca24c7ee288db434688071e1e3",
              "localPath": "registry/sources/ui-layouts/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/uilayouts-progressive-carousel/progressive-carousel.tsx",
              "change": "Added a client boundary and local import, made autoplay opt-in, exposed a controlled paused prop, corrected fast-forward timing, paused autoplay when hidden or engaged without blocking direct selection, added reduced-motion behavior, and clarified control semantics.",
              "reason": "Keep the copied carousel portable, prevent unsolicited or unstoppable motion, and give callers a stable pause/resume control contract."
            },
            {
              "shippedPath": "lib/utils.ts",
              "change": "Removed unrelated site configuration and timing helpers, retaining cn only.",
              "reason": "Keep the copied support closure minimal and remove site URLs."
            }
          ],
          "dedupe": {
            "family": "progressive-timed-carousel",
            "sourceHash": "sha256:3a93d67e254c276997e145e55ffb87b34ea7fedfdbe2739cb32a826907e709de",
            "contentHash": "sha256:b9ec715c60a6e015b3723e1d95f1de245f6fd86aa8e8a8259799880427a1b89f",
            "structureHash": "sha256:ac004c710d68a1c26356f2290ba8c09a2987070d195fa2e953e293ee5fcb6784"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-audio-player",
      "type": "registry:component",
      "title": "Audio Player",
      "description": "A composable audio transport with seek, time, mute, and volume controls.",
      "author": "Vercel",
      "dependencies": [
        "media-chrome@4.17.2"
      ],
      "registryDependencies": [
        "button",
        "button-group",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/audio-player.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/audio-player.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "audio",
            "media",
            "transport",
            "seek"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-audio-player.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/audio-player.tsx",
                "upstreamPath": "packages/elements/src/audio-player.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/audio-player.tsx",
                "upstreamSha256": "sha256:375c174c83cf3770f1cf8b56a3e18584a773bce2141e451bfefc779d4901b5f3",
                "contentSha256": "sha256:9699253b1d2a70cac9d7484f239ca79179d92db3ab4c8df59cb32be110c4e54e",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Replaced the AI SDK type-only audio shape with an equivalent local structural type."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/audio-player.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/audio-player.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Replaced the AI SDK type-only audio shape with an equivalent local structural type.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "media-audio-transport",
            "sourceHash": "sha256:1b877ce218cda6f6e6f82c6406effd7d009721ca35e3bd23895a6a2d9c43506d",
            "contentHash": "sha256:c9b9931ab2bbbc0fb71542d776e0a2e0a91afe9c20a1e22932505d077694d8de",
            "structureHash": "sha256:7ca166529113f29128d7dc4c362f8782fa6369e4207df7bca7f75107cb1656f5"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-commit-inspector",
      "type": "registry:component",
      "title": "Commit Inspector",
      "description": "A collapsible commit inspector with metadata, copy action, and per-file changes.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "avatar",
        "button",
        "collapsible",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/commit.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/commit.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "git",
            "commit",
            "files",
            "clipboard"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-commit-inspector.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/commit.tsx",
                "upstreamPath": "packages/elements/src/commit.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/commit.tsx",
                "upstreamSha256": "sha256:877708682428984f5776dafb774da222fbee837804f220ce699956e32938fa1b",
                "contentSha256": "sha256:a5d2bf1a0630e148b9870c5bc997d3befe031192af8141bfbab25cf4229950e5",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added reduced-motion handling and logical spacing for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/commit.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/commit.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added reduced-motion handling and logical spacing for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "collapsible-git-commit-inspector",
            "sourceHash": "sha256:a2bf74f8c1bf38a3130c2d4e4b30f7ea8d7041c87f84e48a0b12af50b39228c1",
            "contentHash": "sha256:1a7a0930046e152c84a07e49b357ac16999c0816c3fd124566a1976f3d6ab767",
            "structureHash": "sha256:9dfe49a5caedf86a6af5f0f2439b6babca2673ee60d928c12bcfaf13264c6fdb"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-confirmation",
      "type": "registry:component",
      "title": "Action Confirmation",
      "description": "A state-aware approval prompt for requested, accepted, and rejected actions.",
      "author": "Vercel",
      "dependencies": [],
      "registryDependencies": [
        "alert",
        "button",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/confirmation.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/confirmation.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "approval",
            "confirmation",
            "state",
            "feedback"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-confirmation.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/confirmation.tsx",
                "upstreamPath": "packages/elements/src/confirmation.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/confirmation.tsx",
                "upstreamSha256": "sha256:7cc0befed99499ed9010643e7a90ec619180a3f6e79cba5668cfc84126b96a10",
                "contentSha256": "sha256:400e963d29912e6dd8620d2e284ab81ba744008fb516d2f655b6fea227635542",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Replaced the AI SDK type-only tool state with an equivalent local state union."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/confirmation.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/confirmation.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Replaced the AI SDK type-only tool state with an equivalent local state union.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "tool-approval-state",
            "sourceHash": "sha256:d140c823b155ae36a79622e1ca87aa5e080b27b67b71db8f12e9ed6ef3ea6bbf",
            "contentHash": "sha256:f449126d224d984637a43d085da6394b9ead06d3e68cb52c122dcad5a5e7bc3e",
            "structureHash": "sha256:9f63a834b4e4036aab3cab90d8e194615adef4c2c742f4fbe5a251c5a0ca9bca"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-context-meter",
      "type": "registry:component",
      "title": "Context Meter",
      "description": "A model context meter with token breakdown, capacity, and estimated cost.",
      "author": "Vercel",
      "dependencies": [
        "tokenlens@1.3.1"
      ],
      "registryDependencies": [
        "button",
        "hover-card",
        "progress",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/context.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/context.tsx"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "tokens",
            "context",
            "usage",
            "cost"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-context-meter.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/context.tsx",
                "upstreamPath": "packages/elements/src/context.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/context.tsx",
                "upstreamSha256": "sha256:e511015bd0d58d4dcc179d672fe2de980ff923654a53541d4396f209bf02c243",
                "contentSha256": "sha256:3389077b4c78d70534526aeb471ef1c8f33fa8eee2c5c71a4eba39fbdb1920f4",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Replaced the AI SDK type-only usage shape with an equivalent local structural type.",
                  "Changed physical spacing utilities to logical equivalents for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/context.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/context.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Replaced the AI SDK type-only usage shape with an equivalent local structural type. Changed physical spacing utilities to logical equivalents for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "model-context-cost-meter",
            "sourceHash": "sha256:301d9bbc4b46d04a1bdb2e801c6ab85cb60ae4c568dfe1c516c1144d5e8ff5e9",
            "contentHash": "sha256:ea61c42dea78820ab61fc24bed9cc14b7c9b89747e042d7016e1d5ae003b74c0",
            "structureHash": "sha256:d71c585c525e7a83a37e75a645b3348d4a0fcb30424f8c799c6efe446fb9a32a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-environment-variables",
      "type": "registry:component",
      "title": "Environment Variables",
      "description": "A masked environment-variable list with reveal, required state, and copy formats.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "switch",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/environment-variables.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/environment-variables.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "environment",
            "masking",
            "clipboard",
            "settings"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-environment-variables.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/environment-variables.tsx",
                "upstreamPath": "packages/elements/src/environment-variables.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/environment-variables.tsx",
                "upstreamSha256": "sha256:6b685aacb47e7bcb62e15b74b4e0b0bd7beffb892f3769ad7fc3580e00aae88b",
                "contentSha256": "sha256:d60c1cb9406bbc91585585a9c0f817ad6657b8a7409f3657b0c320000cff274b",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/environment-variables.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/environment-variables.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "masked-environment-variable-list",
            "sourceHash": "sha256:9bf740b881a9431a989b49b34590b28dfd494a7f56f9257dbdc29f71f529365b",
            "contentHash": "sha256:bd81d558762471ff3a15d9b76f4d5a19c956efadf3bbecc0c2dd71bedd629654",
            "structureHash": "sha256:c18f6bb383a340e1b7eb2f4fbec4f049a67c6d0f37b5da9c2ea6e81a90778f5b"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-file-tree",
      "type": "registry:component",
      "title": "File Tree",
      "description": "A controlled file hierarchy with disclosure, selection, and nested actions.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "collapsible",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/file-tree.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/file-tree.tsx"
        }
      ],
      "categories": [
        "navigation-menus"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "navigation-menus",
          "tags": [
            "files",
            "tree",
            "disclosure",
            "selection"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-file-tree.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/file-tree.tsx",
                "upstreamPath": "packages/elements/src/file-tree.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/file-tree.tsx",
                "upstreamSha256": "sha256:9b6946171369d224d5d10df686c3c18ce7608aa4a4792744fc5c313499cec0cb",
                "contentSha256": "sha256:c02c77030b9335631a6077aa999b70ae0bab04f0b166a43620ae58555da0fe1d",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Removed incomplete ARIA tree roles so native nested buttons expose honest disclosure semantics.",
                  "Added reduced-motion handling and logical spacing for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/file-tree.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/file-tree.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Removed incomplete ARIA tree roles so native nested buttons expose honest disclosure semantics. Added reduced-motion handling and logical spacing for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "selectable-disclosure-file-tree",
            "sourceHash": "sha256:92bb4c25c3373c8a91d152e799826b11fc8ae0d724788a480ca0c9525d130d66",
            "contentHash": "sha256:d248bdfefb416e855e339a5e385ca8c8d85b024d36c8dbbd2f582cefa76f3f33",
            "structureHash": "sha256:3073f59478abaa20a781e90742ebe1de714b3425d151b74e2bac708db637e25c"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-inline-citation",
      "type": "registry:component",
      "title": "Inline Citation",
      "description": "An inline citation trigger with an accessible hover card and multi-source carousel.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "badge",
        "carousel",
        "hover-card",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/inline-citation.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/inline-citation.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "citation",
            "sources",
            "carousel",
            "reference"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-inline-citation.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/inline-citation.tsx",
                "upstreamPath": "packages/elements/src/inline-citation.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/inline-citation.tsx",
                "upstreamSha256": "sha256:c7dc2a67386bc06d23fa42344f48f3b45e51f1f91b22e44801a2902acdf64018",
                "contentSha256": "sha256:fb99dd7aee7a5ef503e30810133c84f2e99822af8528da47341533f42cc4de9a",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added reduced-motion handling and logical spacing and icon direction for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/inline-citation.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/inline-citation.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added reduced-motion handling and logical spacing and icon direction for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "hover-citation-carousel",
            "sourceHash": "sha256:60518e2f4c19332273ca988ee7ec1efa95914b3643f213a391d04a701d93e900",
            "contentHash": "sha256:5031e7e875f8872d48d1e125abfd504f0cb0e4a9c575d1a24a1b54e3f308b1cc",
            "structureHash": "sha256:04fcd95abbcc6e4cf815f595b7b17e9b78b08b24854bf886764240909fba4f92"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-jsx-preview",
      "type": "registry:component",
      "title": "JSX Preview",
      "description": "A trusted-input JSX renderer with streaming completion and error fallback.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0",
        "react-jsx-parser@2.4.1"
      ],
      "registryDependencies": [
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/jsx-preview.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/jsx-preview.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "jsx",
            "renderer",
            "streaming",
            "error"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-jsx-preview.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/jsx-preview.tsx",
                "upstreamPath": "packages/elements/src/jsx-preview.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/jsx-preview.tsx",
                "upstreamSha256": "sha256:0701c0610bd651fbe1d8f2cf35ec3598571381d2641b5da6daac9c677eac5d8d",
                "contentSha256": "sha256:cedcfcdd1be7949ffa63f688b5a67690e8369ee85e5b2e3cd933e3087aa79b5f",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/jsx-preview.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/jsx-preview.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "streaming-jsx-renderer",
            "sourceHash": "sha256:5299ba9b690a9a7d7e50f7a169aa82b4eaef157e5145db41e22883127d45524c",
            "contentHash": "sha256:1c3eed79b59c170349372f775530fb67698c4c8d8dd27de92b50b5f635c4ced1",
            "structureHash": "sha256:cc6f4dc49df339afaeb2b4013212cdc847a872042ebf5bfc6bb11c8c2ded768a"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-mic-selector",
      "type": "registry:component",
      "title": "Microphone Selector",
      "description": "A searchable audio-input selector with permission and device-change handling.",
      "author": "Vercel",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2",
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "button",
        "command",
        "popover",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/mic-selector.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/mic-selector.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "microphone",
            "device",
            "permission",
            "selector"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-mic-selector.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/mic-selector.tsx",
                "upstreamPath": "packages/elements/src/mic-selector.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/mic-selector.tsx",
                "upstreamSha256": "sha256:3b69b527315f81114fb99518f5078a183092f16ad4cf4105ef94861da1724dce",
                "contentSha256": "sha256:bf82744fcb69cdaeca6585915b73df1464c0acdbfcf4cc2b4ea6bf899b9202c0",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added a guard and unavailable state for browsers without navigator.mediaDevices.",
                  "Changed text alignment to logical RTL-aware utilities."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/mic-selector.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/mic-selector.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added a guard and unavailable state for browsers without navigator.mediaDevices. Changed text alignment to logical RTL-aware utilities.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "audio-input-device-selector",
            "sourceHash": "sha256:6bd24756c76edfbf4684d71f3dd41921c37ad44e8dedab555080d74b8e636a38",
            "contentHash": "sha256:ea736541982f62c1a419f3b025541fbfaf3b36b48df4f0a43d21cb9bd9de6d5b",
            "structureHash": "sha256:f9ac5f8ea1c3ac4573e25b0a763623305e2b02186e3b1bc0abed6165ef0fe0f0"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-reasoning",
      "type": "registry:component",
      "title": "Streaming Reasoning",
      "description": "A streaming-aware reasoning disclosure with rich content and lifecycle behavior.",
      "author": "Vercel",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2",
        "@streamdown/cjk@1.0.2",
        "@streamdown/code@1.1.0",
        "@streamdown/math@1.0.2",
        "@streamdown/mermaid@1.0.2",
        "lucide-react@0.577.0",
        "motion@12.26.2",
        "streamdown@2.4.0"
      ],
      "registryDependencies": [
        "collapsible",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/reasoning.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/reasoning.tsx"
        },
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/shimmer.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/vercel-ai-elements/shimmer.tsx"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "reasoning",
            "streaming",
            "markdown",
            "disclosure"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-reasoning.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/reasoning.tsx",
                "upstreamPath": "packages/elements/src/reasoning.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/reasoning.tsx",
                "upstreamSha256": "sha256:f138cddde35854f73632ff51d48230f8d6e16e0a49a74b44a93b51993a65550e",
                "contentSha256": "sha256:3edde068893c445b88a5e422770442786372e8ab1267e8128283381f57cbe228",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added reduced-motion classes to disclosure transitions."
                ]
              },
              {
                "shippedPath": "components/vercel-ai-elements/shimmer.tsx",
                "upstreamPath": "packages/elements/src/shimmer.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/shimmer.tsx",
                "upstreamSha256": "sha256:89d2284ee165aa57fec960e17c6c71078d22ad3fb3798ca683d7e3d850919a46",
                "contentSha256": "sha256:1128e96bd345e80e9d100f85c388130b27566ecd8d76b6ac2e1c5e0e18cec7e2",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Used Motion's reduced-motion preference to stop the repeating shimmer and render a static state."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/reasoning.tsx, packages/elements/src/shimmer.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/reasoning.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added reduced-motion classes to disclosure transitions.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            },
            {
              "shippedPath": "components/vercel-ai-elements/shimmer.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Used Motion's reduced-motion preference to stop the repeating shimmer and render a static state.",
              "reason": "Retain upstream streaming feedback while respecting reduced-motion preferences."
            }
          ],
          "dedupe": {
            "family": "streaming-reasoning-disclosure",
            "sourceHash": "sha256:b685e2c820d96c63431adc14d706bc926b31748bb9fc848178459967cb2988bc",
            "contentHash": "sha256:d6886449ac310b6232d1994436c02d5c4d3bf553ffa24906c0ffebdd8bfd5b03",
            "structureHash": "sha256:f0a4d178d6763e30d0c6fa504a1dcb4c09606bee28cc0880f898e25c5a83d51f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-reasoning-timeline",
      "type": "registry:component",
      "title": "Reasoning Timeline",
      "description": "An expandable reasoning timeline with steps, status, and supporting results.",
      "author": "Vercel",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2",
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "badge",
        "collapsible",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/chain-of-thought.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/chain-of-thought.tsx"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "reasoning",
            "timeline",
            "status",
            "disclosure"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-reasoning-timeline.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/chain-of-thought.tsx",
                "upstreamPath": "packages/elements/src/chain-of-thought.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/chain-of-thought.tsx",
                "upstreamSha256": "sha256:ddc63b036299d636483b2041599248226e05ef01afd9c5e32724e3a849def8c4",
                "contentSha256": "sha256:a6a4898e126d05d5397ddf30e9f0bf7cce09454609bf66bf8e0209bf0f577154",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added reduced-motion classes to upstream transitions and entry animations."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/chain-of-thought.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/chain-of-thought.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added reduced-motion classes to upstream transitions and entry animations.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "expandable-reasoning-step-timeline",
            "sourceHash": "sha256:4dff112e38c05967b8f9cce0cdfb105ce8a50858624d1e2e003e77bd8cac07ab",
            "contentHash": "sha256:750a4b8f6cfa1f55d9d77dd4aa6e8a5cf1a411b4fe474aabd0128f1c7c1bfa11",
            "structureHash": "sha256:7d9d51ab5ce82191d0d15cb8af2242981258145d1fb324599637fa527fc24e4f"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-schema-display",
      "type": "registry:component",
      "title": "Schema Display",
      "description": "An interactive API schema inspector for parameters, request data, and responses.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "badge",
        "collapsible",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/schema-display.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/schema-display.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "schema",
            "api",
            "request",
            "response"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-schema-display.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/schema-display.tsx",
                "upstreamPath": "packages/elements/src/schema-display.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/schema-display.tsx",
                "upstreamSha256": "sha256:805ca0b043ff5beb21f15b616df19df995fd4ecd3c48f8a9bc2ce588c86adfe7",
                "contentSha256": "sha256:d489d27abb4727d5f92d6d8f7f8e5f51e3993d2f60681834c00f489cde0eef21",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Replaced caller-controlled dangerouslySetInnerHTML path highlighting with React text nodes.",
                  "Added reduced-motion handling and logical spacing and icon direction for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/schema-display.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/schema-display.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Replaced caller-controlled dangerouslySetInnerHTML path highlighting with React text nodes. Added reduced-motion handling and logical spacing and icon direction for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "interactive-api-schema",
            "sourceHash": "sha256:aaaa284e9e9a82976c602ee58e45c000cc501c425d316268624fb4278da52807",
            "contentHash": "sha256:b67f3afd5f851025f8a9a37eccdf1ad135ae0fd7c0a743a010f2e36b7686ed05",
            "structureHash": "sha256:84a35d662f5e0fb1ac96e01820e2b266e92b6f9b8c816401ce7c6fc1fdd43976"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-speech-input",
      "type": "registry:component",
      "title": "Speech Input",
      "description": "A speech capture control with Web Speech and caller-provided MediaRecorder fallback.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "button",
        "spinner",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/speech-input.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/speech-input.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "speech",
            "microphone",
            "recorder",
            "transcription"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-speech-input.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/speech-input.tsx",
                "upstreamPath": "packages/elements/src/speech-input.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/speech-input.tsx",
                "upstreamSha256": "sha256:25747138c9c41cca6f96caf69faa9ff6e39910dabac534c84eba41cbd9ba54d3",
                "contentSha256": "sha256:23d0b5391f8cf21e8b67cf38e1f7c4c9a52e772974103de09dae880529440edf",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added reduced-motion handling to pulse and button transitions."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/speech-input.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/speech-input.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added reduced-motion handling to pulse and button transitions.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "browser-speech-recorder",
            "sourceHash": "sha256:72b8f34ba51060e8d9e7db8b5c734fcdb7b3903dfd3c2e6a7fdebf62573ace2c",
            "contentHash": "sha256:d26c3917c4d7ef629680ba6263bd8f0744757f732d9f8465bc90d3510fc9c7f1",
            "structureHash": "sha256:0e32bbd4401fcc4c3738f7247c95bf13259d66e28b2eeca1c67941128f9dcc70"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-stack-trace",
      "type": "registry:component",
      "title": "Stack Trace",
      "description": "A parsed stack-trace inspector with copy, expansion, and source callbacks.",
      "author": "Vercel",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2",
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "button",
        "collapsible",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/stack-trace.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/stack-trace.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "error",
            "stack",
            "debugging",
            "clipboard"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-stack-trace.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/stack-trace.tsx",
                "upstreamPath": "packages/elements/src/stack-trace.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/stack-trace.tsx",
                "upstreamSha256": "sha256:a2d31824b2b09df91fc6fc5921f2a7610abe2c839655d51770d9c3072db7e546",
                "contentSha256": "sha256:fd6ff43a68ffdecc9a1528fffae64b40306b7859502b891a7fc53c3dbee4b296",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added reduced-motion handling and logical text alignment for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/stack-trace.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/stack-trace.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added reduced-motion handling and logical text alignment for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "parsed-stack-trace-inspector",
            "sourceHash": "sha256:fa9f80376e7bbe75f3ca255c1b3b4b40562e66467fd15c003d4e0e1f317bb2cc",
            "contentHash": "sha256:8c783b0b57b5cc1d9019ff05eaeb8260caf57beb5e6baad0270e205fe7fd94f3",
            "structureHash": "sha256:12e4c3552252a4ce194aa2449af48f11fcbdb7b3956625e5f62c4294fbee9619"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-syntax-code",
      "type": "registry:component",
      "title": "Syntax Code",
      "description": "Asynchronous syntax highlighting with line numbers, language selection, and copy controls.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0",
        "shiki@3.22.0"
      ],
      "registryDependencies": [
        "button",
        "select",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/code-block.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/code-block.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "code",
            "syntax",
            "shiki",
            "clipboard"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-syntax-code.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/code-block.tsx",
                "upstreamPath": "packages/elements/src/code-block.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/code-block.tsx",
                "upstreamSha256": "sha256:5c7285171c5aa741749a1642a85f492a9b5e80dc4ccb704b5c3f58c45efebd04",
                "contentSha256": "sha256:344f5ab4f8ede48d17a21f9164d33f397dd11e0108b5f1e5a274e4d216577439",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Replaced the collision-prone abbreviated token cache key with the complete language and source pair.",
                  "Changed physical spacing utilities to logical equivalents for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/code-block.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/code-block.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Replaced the collision-prone abbreviated token cache key with the complete language and source pair. Changed physical spacing utilities to logical equivalents for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "async-syntax-highlighted-code",
            "sourceHash": "sha256:fb583be87adfa443b8c39c7dac086d8cfa1e3f1d32cf3de562fe52727f80b954",
            "contentHash": "sha256:28143567b296d2944e838fcc8fb5558121c42f96ca54a7b8accb42f512a0d224",
            "structureHash": "sha256:d76ec5b77601f206c3bdd2d7db0c9a2d3598b8fa07e0112402dd61819a57e68d"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-test-results",
      "type": "registry:component",
      "title": "Test Results",
      "description": "A hierarchical test report with progress, suite disclosure, status, and errors.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "badge",
        "collapsible",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/test-results.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/test-results.tsx"
        }
      ],
      "categories": [
        "status-progress"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "status-progress",
          "tags": [
            "tests",
            "status",
            "progress",
            "errors"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-test-results.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/test-results.tsx",
                "upstreamPath": "packages/elements/src/test-results.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/test-results.tsx",
                "upstreamSha256": "sha256:71fb2b77cfa34e6d7d3b1cc06a765622f755bcec193d3d539f4bead0e937f346",
                "contentSha256": "sha256:c40723f5390bd303fca6dd8c5d629ac1912c0aaddccbeea496a193cf44658e75",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Added reduced-motion handling and logical spacing and text alignment for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/test-results.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/test-results.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Added reduced-motion handling and logical spacing and text alignment for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "hierarchical-test-result-report",
            "sourceHash": "sha256:a1125a215cccabb603467d2fffdbb4afd6385104a47576c350260dff1f367fd9",
            "contentHash": "sha256:e78d2add38bb879c5b54e1f8599ed18d788cc6828c9cee91985c8267f27b6310",
            "structureHash": "sha256:6239c91af8b366208ba716ca465156b23366196c627e98c013364daafc5821ff"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-transcription",
      "type": "registry:component",
      "title": "Interactive Transcription",
      "description": "A synchronized transcript whose segments expose active, past, and seek states.",
      "author": "Vercel",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2"
      ],
      "registryDependencies": [
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/transcription.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/transcription.tsx"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "transcript",
            "seek",
            "timing",
            "audio"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-transcription.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/transcription.tsx",
                "upstreamPath": "packages/elements/src/transcription.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/transcription.tsx",
                "upstreamSha256": "sha256:c9edab6a677ec9fdd09fdd5657bf56fcc674457e52ab7c6f686107c6ba787e29",
                "contentSha256": "sha256:ad278999d4838a25e0379d175966a613aca7352b207613fc8fbd187cd32eb36d",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Replaced the AI SDK type-only segment shape with an equivalent local structural type.",
                  "Changed text alignment to a logical RTL-aware utility."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/transcription.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/transcription.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Replaced the AI SDK type-only segment shape with an equivalent local structural type. Changed text alignment to a logical RTL-aware utility.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "seekable-transcript",
            "sourceHash": "sha256:704aa4dd5fbeaf2fc5e49c001f91a7cc6804aeee0cad3aeda233d3435f2e16e2",
            "contentHash": "sha256:423b33ff6e39a68098597b263554c04a6a46dafd0e83a78ff48781e724f96ff3",
            "structureHash": "sha256:842050a685edbf67eb3cf99ca34e85fb10da6ac780f634090c9f7ba9ce223b91"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-voice-selector",
      "type": "registry:component",
      "title": "Voice Selector",
      "description": "A searchable voice dialog with metadata, selection, and preview-control states.",
      "author": "Vercel",
      "dependencies": [
        "@radix-ui/react-use-controllable-state@1.2.2",
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "button",
        "command",
        "dialog",
        "spinner",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/voice-selector.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/voice-selector.tsx"
        }
      ],
      "categories": [
        "forms-feedback"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "forms-feedback",
          "tags": [
            "voice",
            "search",
            "dialog",
            "selector"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-voice-selector.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/voice-selector.tsx",
                "upstreamPath": "packages/elements/src/voice-selector.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/voice-selector.tsx",
                "upstreamSha256": "sha256:c777aa17525ea3664880f52e762dc1f49d4e9b32f0b815cc839677bff406aa3d",
                "contentSha256": "sha256:dd40bd9a218cfa74f09bb1276eef72b9ea9e278dadad219552d0a77c09089d8b",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Changed text alignment to a logical RTL-aware utility."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/voice-selector.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/voice-selector.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Changed text alignment to a logical RTL-aware utility.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "searchable-voice-selector",
            "sourceHash": "sha256:424f3145b89832680a9673017bbf83c26b2e702e2c8902db649915d5175a9fb3",
            "contentHash": "sha256:75d5fe7c618e495ae03abfbdfb23bbd08f9e599cc673c1be9b462b54ccd71d74",
            "structureHash": "sha256:420f4eac932c8f030542b6f5e4420b1d171f04e23cf0b3e6884b86b8aa69b240"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "vercel-ai-web-preview",
      "type": "registry:component",
      "title": "Web Preview",
      "description": "A sandboxed web renderer with URL state, navigation controls, and console output.",
      "author": "Vercel",
      "dependencies": [
        "lucide-react@0.577.0"
      ],
      "registryDependencies": [
        "button",
        "collapsible",
        "input",
        "tooltip",
        "utils"
      ],
      "files": [
        {
          "path": "registry/sources/vercel-ai-elements/components/vercel-ai-elements/web-preview.tsx",
          "type": "registry:component",
          "target": "@components/taste-blocks/vercel-ai-elements/web-preview.tsx"
        }
      ],
      "categories": [
        "cards-containers"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "cards-containers",
          "tags": [
            "iframe",
            "preview",
            "console",
            "sandbox"
          ],
          "renderer": "dom",
          "preview": "previews/vercel-ai-web-preview.tsx",
          "source": {
            "project": "Vercel AI Elements",
            "repository": "https://github.com/vercel/ai-elements",
            "revision": "0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b",
            "retrievedAt": "2026-07-20",
            "files": [
              {
                "shippedPath": "components/vercel-ai-elements/web-preview.tsx",
                "upstreamPath": "packages/elements/src/web-preview.tsx",
                "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/packages/elements/src/web-preview.tsx",
                "upstreamSha256": "sha256:7ae44586766db67c5341b36a30340b202e6f45c205457ad98f0817968d162d2c",
                "contentSha256": "sha256:863104140d2a5111c2da86207cf6357592a6e0b7b9ba299a6727d5895387307f",
                "changes": [
                  "Changed Vercel workspace-local shadcn imports to standard consumer aliases.",
                  "Removed allow-same-origin from the iframe sandbox to keep script previews isolated.",
                  "Added reduced-motion handling and logical text alignment for RTL."
                ]
              }
            ]
          },
          "license": {
            "spdx": "Apache-2.0",
            "scope": "packages/elements/src/web-preview.tsx",
            "copyright": [
              "Copyright 2023 Vercel, Inc."
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/vercel/ai-elements/blob/0c1f5e8c75273f0e95c8faa031544a8aa2bb1a5b/LICENSE",
              "sha256": "sha256:b4f9adb7c568904834d0dd6cc98d16c390d21ca32fc17ae7a267715269bd5529",
              "localPath": "registry/sources/vercel-ai-elements/LICENSE"
            },
            "notices": [
              "registry/sources/vercel-ai-elements/NOTICE",
              "registry/sources/vercel-ai-elements/LICENSE-APACHE-2.0.txt"
            ]
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/vercel-ai-elements/web-preview.tsx",
              "change": "Changed Vercel workspace-local shadcn imports to standard consumer aliases. Removed allow-same-origin from the iframe sandbox to keep script previews isolated. Added reduced-motion handling and logical text alignment for RTL.",
              "reason": "Keep the copied component portable and meet security, accessibility, reduced-motion, and RTL requirements without changing its product role."
            }
          ],
          "dedupe": {
            "family": "sandboxed-web-preview",
            "sourceHash": "sha256:fb9c6abb2d61b5417de41713a4b8e0cf8c2d7392b2b31b205be0b68857c66ebe",
            "contentHash": "sha256:50ad95d1ee4a307076e4a46b4b27aa36d909f3a951c05ca4d2a92fb68605bcd7",
            "structureHash": "sha256:6a9c662d4a16207901cad41bd534cdefef46951285bf5e583364779ccdc0c7fc"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    },
    {
      "name": "yarl-lightbox",
      "type": "registry:component",
      "title": "Yet Another React Lightbox",
      "description": "Opens caller-provided images in an accessible modal gallery with keyboard, pointer, touch, RTL, and responsive-image support.",
      "author": "Igor Danchenko",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/index.ts",
          "type": "registry:component",
          "target": "@components/taste-blocks/yarl-lightbox/index.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/components/IconButton.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/components/IconButton.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/components/Icons.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/components/Icons.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/components/ImageSlide.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/components/ImageSlide.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/components/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/components/index.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/components/LightboxRoot.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/components/LightboxRoot.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/config.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/config.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/consts.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/consts.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/A11yContext.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/A11yContext.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/DocumentContext.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/DocumentContext.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/Events.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/Events.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/index.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/LightboxProps.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/LightboxProps.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/LightboxState.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/LightboxState.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/RTLContext.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/RTLContext.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/contexts/Timeouts.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/contexts/Timeouts.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/index.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useAnimation.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useAnimation.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useContainerRect.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useContainerRect.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useDelay.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useDelay.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useEventCallback.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useEventCallback.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useForkRef.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useForkRef.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useLayoutEffect.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useLayoutEffect.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useLoseFocus.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useLoseFocus.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useMotionPreference.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useMotionPreference.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/usePointerEvents.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/usePointerEvents.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useRTL.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useRTL.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useSensors.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useSensors.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/hooks/useThrottle.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/hooks/useThrottle.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/Lightbox.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/Lightbox.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Carousel.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Carousel.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Controller/Controller.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Controller/Controller.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Controller/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Controller/index.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Controller/SwipeState.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Controller/SwipeState.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Controller/usePointerSwipe.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Controller/usePointerSwipe.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Controller/usePreventWheelDefaults.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Controller/usePreventWheelDefaults.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Controller/useWheelSwipe.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Controller/useWheelSwipe.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/index.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Navigation/index.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Navigation/index.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Navigation/Navigation.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Navigation/Navigation.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Navigation/useKeyboardNavigation.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Navigation/useKeyboardNavigation.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Navigation/useNavigationState.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Navigation/useNavigationState.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/NoScroll.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/NoScroll.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Portal.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Portal.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Root.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Root.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/modules/Toolbar.tsx",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/modules/Toolbar.tsx"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/props.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/props.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/styles.css",
          "type": "registry:file",
          "target": "@components/taste-blocks/yarl-lightbox/styles.css"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/types.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/types.ts"
        },
        {
          "path": "registry/sources/yarl/components/yarl-lightbox/utils.ts",
          "type": "registry:lib",
          "target": "@components/taste-blocks/yarl-lightbox/utils.ts"
        }
      ],
      "categories": [
        "media-galleries"
      ],
      "meta": {
        "tasteblocks": {
          "status": "verified",
          "category": "media-galleries",
          "tags": [
            "lightbox",
            "gallery",
            "modal",
            "images",
            "keyboard",
            "swipe",
            "rtl"
          ],
          "renderer": "dom",
          "preview": "previews/yarl-lightbox.tsx",
          "source": {
            "project": "Yet Another React Lightbox",
            "repository": "https://github.com/igordanchenko/yet-another-react-lightbox",
            "revision": "18dc3afe76de67c4f6ea576ab9289b98bf36c550",
            "retrievedAt": "2026-07-20",
            "package": {
              "name": "yet-another-react-lightbox",
              "version": "3.32.1",
              "tarball": "https://registry.npmjs.org/yet-another-react-lightbox/-/yet-another-react-lightbox-3.32.1.tgz",
              "integrity": "sha512-/OK5U79uTD2kGv3m+w22IDCuVtgC0l9J2SwJRYE+88XqfkWwVkAVNbE8AdWozAlPFTjGiIyPHxukoIINH9mpiw==",
              "publishedFile": "dist/styles.css",
              "publishedSha256": "sha256:f6b2ddd26d229055264e03575d11d91c003a72d42a54ce790b94a640845f6f09"
            },
            "files": [
              {
                "shippedPath": "components/yarl-lightbox/index.ts",
                "upstreamPath": "src/index.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/index.ts",
                "upstreamSha256": "sha256:2d68f0417a530fd8cb42f2197c447fb5bebb0e46ecf86ab156e98c93a5eff557",
                "contentSha256": "sha256:351181ca184fca771d96fb7bde853654544b1971fdf2783935f16cf0cee6d86e",
                "changes": [
                  "Added a React client boundary so the hook-based lightbox is safe to install in React Server Component projects."
                ]
              },
              {
                "shippedPath": "components/yarl-lightbox/components/IconButton.tsx",
                "upstreamPath": "src/components/IconButton.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/components/IconButton.tsx",
                "upstreamSha256": "sha256:63edf71084a6ff1262782b9536755484fdbe0d880526ae454beb3e8ed999f56e",
                "contentSha256": "sha256:681cd24138f906b0d4dfb3856eeac630929ebfb62d8520f326a8aba82354202a",
                "changes": [
                  "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior."
                ]
              },
              {
                "shippedPath": "components/yarl-lightbox/components/Icons.tsx",
                "upstreamPath": "src/components/Icons.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/components/Icons.tsx",
                "upstreamSha256": "sha256:c61e46f73ea7a9ccdc06f293f9077787cc701511c2608b80de7521f11ecf7a81",
                "contentSha256": "sha256:c61e46f73ea7a9ccdc06f293f9077787cc701511c2608b80de7521f11ecf7a81",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/components/ImageSlide.tsx",
                "upstreamPath": "src/components/ImageSlide.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/components/ImageSlide.tsx",
                "upstreamSha256": "sha256:8158b5f520b028e0fd6985f679847751f693c12171defe7633c6d3bc080c2215",
                "contentSha256": "sha256:8158b5f520b028e0fd6985f679847751f693c12171defe7633c6d3bc080c2215",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/components/index.ts",
                "upstreamPath": "src/components/index.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/components/index.ts",
                "upstreamSha256": "sha256:d61fc0af26cc5270016ddd389718a439c74275a98cb91ff6305d7704b1b0aea9",
                "contentSha256": "sha256:d61fc0af26cc5270016ddd389718a439c74275a98cb91ff6305d7704b1b0aea9",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/components/LightboxRoot.tsx",
                "upstreamPath": "src/components/LightboxRoot.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/components/LightboxRoot.tsx",
                "upstreamSha256": "sha256:262aa7f73996dbbc2adb42306887f40afb9af9161c89d01fd1dc363129465e86",
                "contentSha256": "sha256:262aa7f73996dbbc2adb42306887f40afb9af9161c89d01fd1dc363129465e86",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/config.ts",
                "upstreamPath": "src/config.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/config.ts",
                "upstreamSha256": "sha256:779f092a6c3ce7038ddc520a15ef09368e884964e98c72a55a46e6eab160774a",
                "contentSha256": "sha256:779f092a6c3ce7038ddc520a15ef09368e884964e98c72a55a46e6eab160774a",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/consts.ts",
                "upstreamPath": "src/consts.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/consts.ts",
                "upstreamSha256": "sha256:332591ac9c29cf20221edef29ff7a68651014094b50a89393ca3ee616c59a9a8",
                "contentSha256": "sha256:332591ac9c29cf20221edef29ff7a68651014094b50a89393ca3ee616c59a9a8",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/A11yContext.tsx",
                "upstreamPath": "src/contexts/A11yContext.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/A11yContext.tsx",
                "upstreamSha256": "sha256:f1bb6ae1003a005b4781dcea2b25bb02f7f541acc821b4d882869753d19dd9f6",
                "contentSha256": "sha256:f1bb6ae1003a005b4781dcea2b25bb02f7f541acc821b4d882869753d19dd9f6",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/DocumentContext.tsx",
                "upstreamPath": "src/contexts/DocumentContext.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/DocumentContext.tsx",
                "upstreamSha256": "sha256:ec9e284fc3bbc89ac2f82aa0ea59a6898527fa2d76cd5b5610ccc6cc627045e2",
                "contentSha256": "sha256:ec9e284fc3bbc89ac2f82aa0ea59a6898527fa2d76cd5b5610ccc6cc627045e2",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/Events.tsx",
                "upstreamPath": "src/contexts/Events.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/Events.tsx",
                "upstreamSha256": "sha256:06382989cd5b03abf1ddf97719413f74b5dfd3cdd7b477f21c59fa3b6d654e14",
                "contentSha256": "sha256:06382989cd5b03abf1ddf97719413f74b5dfd3cdd7b477f21c59fa3b6d654e14",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/index.ts",
                "upstreamPath": "src/contexts/index.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/index.ts",
                "upstreamSha256": "sha256:e0162e8d37ece28eefb10426523e7cb5424bd6c44719adb7734bef4c21318f50",
                "contentSha256": "sha256:e0162e8d37ece28eefb10426523e7cb5424bd6c44719adb7734bef4c21318f50",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/LightboxProps.tsx",
                "upstreamPath": "src/contexts/LightboxProps.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/LightboxProps.tsx",
                "upstreamSha256": "sha256:fddc512f32402324714bf7be8bcd5453412618f01ca7dc7143d5c1107a6aaffd",
                "contentSha256": "sha256:fddc512f32402324714bf7be8bcd5453412618f01ca7dc7143d5c1107a6aaffd",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/LightboxState.tsx",
                "upstreamPath": "src/contexts/LightboxState.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/LightboxState.tsx",
                "upstreamSha256": "sha256:c8bb406f79affb319c72f116ebeb7e7e9a41442aaa4230a8dbf0c33ac9580e96",
                "contentSha256": "sha256:c8bb406f79affb319c72f116ebeb7e7e9a41442aaa4230a8dbf0c33ac9580e96",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/RTLContext.tsx",
                "upstreamPath": "src/contexts/RTLContext.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/RTLContext.tsx",
                "upstreamSha256": "sha256:26e9fe03237ff199e543ee73c2d1c2469a11212b6bcc070d4b02d59478fbd96a",
                "contentSha256": "sha256:26e9fe03237ff199e543ee73c2d1c2469a11212b6bcc070d4b02d59478fbd96a",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/contexts/Timeouts.tsx",
                "upstreamPath": "src/contexts/Timeouts.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/contexts/Timeouts.tsx",
                "upstreamSha256": "sha256:c95ce15ea71d37257f5e83c2865c5409a1d24372b0eee00a483f2da77f3300ed",
                "contentSha256": "sha256:c95ce15ea71d37257f5e83c2865c5409a1d24372b0eee00a483f2da77f3300ed",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/index.ts",
                "upstreamPath": "src/hooks/index.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/index.ts",
                "upstreamSha256": "sha256:95c7437e296de9a0fc2054df323c3a0ada7faa69e4392a7f8281cdfe02f36f57",
                "contentSha256": "sha256:95c7437e296de9a0fc2054df323c3a0ada7faa69e4392a7f8281cdfe02f36f57",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useAnimation.ts",
                "upstreamPath": "src/hooks/useAnimation.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useAnimation.ts",
                "upstreamSha256": "sha256:cab2ecee5c463f114f1307c68dc82fc29f385f1c853dc27c05fae2ca00df617e",
                "contentSha256": "sha256:cab2ecee5c463f114f1307c68dc82fc29f385f1c853dc27c05fae2ca00df617e",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useContainerRect.ts",
                "upstreamPath": "src/hooks/useContainerRect.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useContainerRect.ts",
                "upstreamSha256": "sha256:cfbe6c60310c9cd01e4aca3dcfbbb7bc855cfd48bb4a4c6fe57d8f29ae6421d6",
                "contentSha256": "sha256:cfbe6c60310c9cd01e4aca3dcfbbb7bc855cfd48bb4a4c6fe57d8f29ae6421d6",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useDelay.ts",
                "upstreamPath": "src/hooks/useDelay.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useDelay.ts",
                "upstreamSha256": "sha256:cd441cb32cab55f333b2044d8b20d5f8700c7585503f6562863be475a6b7139b",
                "contentSha256": "sha256:cd441cb32cab55f333b2044d8b20d5f8700c7585503f6562863be475a6b7139b",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useEventCallback.ts",
                "upstreamPath": "src/hooks/useEventCallback.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useEventCallback.ts",
                "upstreamSha256": "sha256:d24242b364ae8fabef339fc268399c442e101ef20a8b1ff342461448777ee13e",
                "contentSha256": "sha256:d24242b364ae8fabef339fc268399c442e101ef20a8b1ff342461448777ee13e",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useForkRef.ts",
                "upstreamPath": "src/hooks/useForkRef.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useForkRef.ts",
                "upstreamSha256": "sha256:de2b3dbc168478b68184ef47826fab510a5c64b0753710cde5a558b8f760c3c9",
                "contentSha256": "sha256:de2b3dbc168478b68184ef47826fab510a5c64b0753710cde5a558b8f760c3c9",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useLayoutEffect.ts",
                "upstreamPath": "src/hooks/useLayoutEffect.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useLayoutEffect.ts",
                "upstreamSha256": "sha256:98bc7094af07e347a8c435f3d6c3b44051892ac2333c6d2d589c8d0c28f6bfd7",
                "contentSha256": "sha256:98bc7094af07e347a8c435f3d6c3b44051892ac2333c6d2d589c8d0c28f6bfd7",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useLoseFocus.ts",
                "upstreamPath": "src/hooks/useLoseFocus.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useLoseFocus.ts",
                "upstreamSha256": "sha256:b840106a022af23bb3cd369e3b8b3d6d2b51d355955ab2b6f383f4fe6eccd528",
                "contentSha256": "sha256:b840106a022af23bb3cd369e3b8b3d6d2b51d355955ab2b6f383f4fe6eccd528",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useMotionPreference.ts",
                "upstreamPath": "src/hooks/useMotionPreference.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useMotionPreference.ts",
                "upstreamSha256": "sha256:1f1a0bd199163f1b92c16b886ec4a2f0cc731aa9f9b28a5f96c3325eb299ffb4",
                "contentSha256": "sha256:1f1a0bd199163f1b92c16b886ec4a2f0cc731aa9f9b28a5f96c3325eb299ffb4",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/usePointerEvents.ts",
                "upstreamPath": "src/hooks/usePointerEvents.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/usePointerEvents.ts",
                "upstreamSha256": "sha256:b11681da165e23567b558bbc1967172b2b05a0b66dce18ff10a7ed20816f26c5",
                "contentSha256": "sha256:b11681da165e23567b558bbc1967172b2b05a0b66dce18ff10a7ed20816f26c5",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useRTL.ts",
                "upstreamPath": "src/hooks/useRTL.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useRTL.ts",
                "upstreamSha256": "sha256:7669829a2f62797e23904db273b807264996fbfb95104fe1205cfa59ff2094f7",
                "contentSha256": "sha256:7669829a2f62797e23904db273b807264996fbfb95104fe1205cfa59ff2094f7",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useSensors.ts",
                "upstreamPath": "src/hooks/useSensors.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useSensors.ts",
                "upstreamSha256": "sha256:551988a55635a513502f5c3e37928327504c4c020ae7abad04aaa48cdd5062d5",
                "contentSha256": "sha256:551988a55635a513502f5c3e37928327504c4c020ae7abad04aaa48cdd5062d5",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/hooks/useThrottle.ts",
                "upstreamPath": "src/hooks/useThrottle.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/hooks/useThrottle.ts",
                "upstreamSha256": "sha256:8317ab9a1a29525536898801e3841005b5afbe3242aa616a090763a49961dd2f",
                "contentSha256": "sha256:8317ab9a1a29525536898801e3841005b5afbe3242aa616a090763a49961dd2f",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/Lightbox.tsx",
                "upstreamPath": "src/Lightbox.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/Lightbox.tsx",
                "upstreamSha256": "sha256:d559d736fcd6f87679f7c687b936d40d5bc7f2f694d68b25d15f94bb3a39edd9",
                "contentSha256": "sha256:d559d736fcd6f87679f7c687b936d40d5bc7f2f694d68b25d15f94bb3a39edd9",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Carousel.tsx",
                "upstreamPath": "src/modules/Carousel.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Carousel.tsx",
                "upstreamSha256": "sha256:02dd70ae8ce49c7af2ce3de75553fc07baf5bcdd45561b33daa61e139fd7653e",
                "contentSha256": "sha256:02dd70ae8ce49c7af2ce3de75553fc07baf5bcdd45561b33daa61e139fd7653e",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Controller/Controller.tsx",
                "upstreamPath": "src/modules/Controller/Controller.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Controller/Controller.tsx",
                "upstreamSha256": "sha256:d3e75cefebbd3b36ad21463e87e8278349392b797b6ea0f8b68de6ebeb0803eb",
                "contentSha256": "sha256:d3e75cefebbd3b36ad21463e87e8278349392b797b6ea0f8b68de6ebeb0803eb",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Controller/index.ts",
                "upstreamPath": "src/modules/Controller/index.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Controller/index.ts",
                "upstreamSha256": "sha256:7eac9cd4ba509d02ca540fb887470d02998dde9f40cb12e64c161c9e5a0e9cc4",
                "contentSha256": "sha256:7eac9cd4ba509d02ca540fb887470d02998dde9f40cb12e64c161c9e5a0e9cc4",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Controller/SwipeState.ts",
                "upstreamPath": "src/modules/Controller/SwipeState.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Controller/SwipeState.ts",
                "upstreamSha256": "sha256:2b3aacd696f090be21a9132c395a1be1d9e6e40139e8c5a1d8f22278a49666d5",
                "contentSha256": "sha256:2b3aacd696f090be21a9132c395a1be1d9e6e40139e8c5a1d8f22278a49666d5",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Controller/usePointerSwipe.ts",
                "upstreamPath": "src/modules/Controller/usePointerSwipe.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Controller/usePointerSwipe.ts",
                "upstreamSha256": "sha256:a4023dcc29cee51b3b37e35e92502c8036dbe0b1684c2e7318c5d47a3608c991",
                "contentSha256": "sha256:a4023dcc29cee51b3b37e35e92502c8036dbe0b1684c2e7318c5d47a3608c991",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Controller/usePreventWheelDefaults.ts",
                "upstreamPath": "src/modules/Controller/usePreventWheelDefaults.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Controller/usePreventWheelDefaults.ts",
                "upstreamSha256": "sha256:69f78253d651d53f67d4cb736c91e75459ede92245cb415a6e98f94102e29954",
                "contentSha256": "sha256:69f78253d651d53f67d4cb736c91e75459ede92245cb415a6e98f94102e29954",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Controller/useWheelSwipe.ts",
                "upstreamPath": "src/modules/Controller/useWheelSwipe.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Controller/useWheelSwipe.ts",
                "upstreamSha256": "sha256:7b02514f55cb9d3fde3884b1f9deb35eceed286520b8bb9b9f77cf3fd1d891d8",
                "contentSha256": "sha256:7b02514f55cb9d3fde3884b1f9deb35eceed286520b8bb9b9f77cf3fd1d891d8",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/index.ts",
                "upstreamPath": "src/modules/index.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/index.ts",
                "upstreamSha256": "sha256:ba2bf5b0e0261ce63ee8291b99d0d9b02bff876cc9f17a398e8fe66d9f6668db",
                "contentSha256": "sha256:ba2bf5b0e0261ce63ee8291b99d0d9b02bff876cc9f17a398e8fe66d9f6668db",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Navigation/index.ts",
                "upstreamPath": "src/modules/Navigation/index.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Navigation/index.ts",
                "upstreamSha256": "sha256:98b4fc7a695f1184505124d8146f8b528b90c0c459b22dc1301e4f3cd07681f3",
                "contentSha256": "sha256:98b4fc7a695f1184505124d8146f8b528b90c0c459b22dc1301e4f3cd07681f3",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Navigation/Navigation.tsx",
                "upstreamPath": "src/modules/Navigation/Navigation.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Navigation/Navigation.tsx",
                "upstreamSha256": "sha256:e19260687cc38711c1368ac5261b4b8677038fcc8fa03aba7693de5f84075dab",
                "contentSha256": "sha256:e19260687cc38711c1368ac5261b4b8677038fcc8fa03aba7693de5f84075dab",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Navigation/useKeyboardNavigation.ts",
                "upstreamPath": "src/modules/Navigation/useKeyboardNavigation.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Navigation/useKeyboardNavigation.ts",
                "upstreamSha256": "sha256:9632a5695b49cec7699952d5981613b63533c9fc2ca6c00da0b4c3c74d2a6e06",
                "contentSha256": "sha256:9632a5695b49cec7699952d5981613b63533c9fc2ca6c00da0b4c3c74d2a6e06",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Navigation/useNavigationState.ts",
                "upstreamPath": "src/modules/Navigation/useNavigationState.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Navigation/useNavigationState.ts",
                "upstreamSha256": "sha256:d3bcca7afd29f0a1bc39500061e28eaf6e9509ce4ca121890ccd564ebaa94af7",
                "contentSha256": "sha256:d3bcca7afd29f0a1bc39500061e28eaf6e9509ce4ca121890ccd564ebaa94af7",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/NoScroll.tsx",
                "upstreamPath": "src/modules/NoScroll.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/NoScroll.tsx",
                "upstreamSha256": "sha256:2d19876cce61ab4beaa8227865f585f3c5f820b45cf28f65ea26b000ed42631c",
                "contentSha256": "sha256:2d19876cce61ab4beaa8227865f585f3c5f820b45cf28f65ea26b000ed42631c",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Portal.tsx",
                "upstreamPath": "src/modules/Portal.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Portal.tsx",
                "upstreamSha256": "sha256:b99ab7177baf77e551e4086c14bc789d3242d65cf3df1ef517d39b60081b580b",
                "contentSha256": "sha256:b99ab7177baf77e551e4086c14bc789d3242d65cf3df1ef517d39b60081b580b",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Root.tsx",
                "upstreamPath": "src/modules/Root.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Root.tsx",
                "upstreamSha256": "sha256:8106a82ecb371a85ddb9e2d93d7266386ed488cafb1c2fb51da4514ea6f200c2",
                "contentSha256": "sha256:8106a82ecb371a85ddb9e2d93d7266386ed488cafb1c2fb51da4514ea6f200c2",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/modules/Toolbar.tsx",
                "upstreamPath": "src/modules/Toolbar.tsx",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/modules/Toolbar.tsx",
                "upstreamSha256": "sha256:cf090ad528f72709e753b34baaa56da59a44d7327eb318f1502765a82cc83800",
                "contentSha256": "sha256:cf090ad528f72709e753b34baaa56da59a44d7327eb318f1502765a82cc83800",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/props.ts",
                "upstreamPath": "src/props.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/props.ts",
                "upstreamSha256": "sha256:1880ac14e79872e5baa8568043995fdc3d5b4af70a4120b6240e5975b7f742b3",
                "contentSha256": "sha256:1880ac14e79872e5baa8568043995fdc3d5b4af70a4120b6240e5975b7f742b3",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/styles.css",
                "upstreamPath": "src/styles.scss",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/styles.scss",
                "upstreamSha256": "sha256:9782518d57179689cbdda57b4beba02e6bf5ccaba650d517c21b61f7c83982c8",
                "contentSha256": "sha256:954687a9ead074fe0c55c32a889badb18aab494b02575131d14038b6afa51f27",
                "changes": [
                  "Compiled the upstream styles.scss entry and its _common.scss dependency to the official 3.32.1 published CSS output, then normalized the trailing newline."
                ]
              },
              {
                "shippedPath": "components/yarl-lightbox/types.ts",
                "upstreamPath": "src/types.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/types.ts",
                "upstreamSha256": "sha256:d1d72fa2a4f8344a9d10c071eaf423d3311a6dfe1c1998b033166a4d51ba4275",
                "contentSha256": "sha256:d1d72fa2a4f8344a9d10c071eaf423d3311a6dfe1c1998b033166a4d51ba4275",
                "changes": []
              },
              {
                "shippedPath": "components/yarl-lightbox/utils.ts",
                "upstreamPath": "src/utils.ts",
                "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/src/utils.ts",
                "upstreamSha256": "sha256:a07242e4724429dfc8232beca9d77600675082d8867f587d340fecf790e6fde4",
                "contentSha256": "sha256:a07242e4724429dfc8232beca9d77600675082d8867f587d340fecf790e6fde4",
                "changes": []
              }
            ]
          },
          "license": {
            "spdx": "MIT",
            "scope": "The core files under src excluding src/plugins, plus src/styles.scss and its src/_common.scss dependency.",
            "copyright": [
              "Copyright (c) 2022 Igor Danchenko"
            ],
            "evidence": {
              "upstreamPath": "LICENSE",
              "permalink": "https://github.com/igordanchenko/yet-another-react-lightbox/blob/18dc3afe76de67c4f6ea576ab9289b98bf36c550/LICENSE",
              "sha256": "sha256:edde2a52c6ac1a1dcce70a4f3dd739e27f160ebc0615587e2ee2aa609f13facb",
              "localPath": "registry/sources/yarl/LICENSE"
            },
            "notices": []
          },
          "assets": [],
          "modifications": [
            {
              "shippedPath": "components/yarl-lightbox/index.ts",
              "change": "Added a use client directive.",
              "reason": "Expose the hook-based upstream component as a safe client boundary in Next.js and other React Server Component projects."
            },
            {
              "shippedPath": "components/yarl-lightbox/styles.css",
              "change": "Compiled the upstream Sass entry to the official 3.32.1 CSS output and normalized its trailing newline.",
              "reason": "Ship the exact visual skin without requiring every registry consumer to install and configure Sass."
            },
            {
              "shippedPath": "components/yarl-lightbox/components/IconButton.tsx",
              "change": "Added a local render-component type bridge for React 19 polymorphic JSX without changing runtime behavior.",
              "reason": "Keep the original polymorphic API while compiling the upstream React 18-era generic JSX against React 19 types."
            }
          ],
          "dedupe": {
            "family": "modal-image-lightbox",
            "sourceHash": "sha256:a604f956101ce185625b85b25a60972b16bff4b601755bcc4d269ac971ff2876",
            "contentHash": "sha256:d660b368773aa9579e5d2b2981b82206010c7cbbe7ff37e088141f396f86b35e",
            "structureHash": "sha256:5d6763c6e03f2cda03170c9ff2a9c3ca6d1cb0130d225e2c31c0b9d3e528ad87"
          },
          "verification": {
            "reviewedBy": "Codex",
            "reviewedAt": "2026-07-20"
          }
        }
      }
    }
  ]
}
