{
  "id": "21st-ab147cf17529",
  "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
  "demoIdentity": {
    "file": "author-example.tsx",
    "export": "default",
    "source": "author-official-example"
  },
  "fidelity": {
    "preserved": "정확히 식별한 작성자의 MIT 구현과 공식 예제; 원래 CDN demo의 license 표기는 별도 유지",
    "original_demo_license": "mit",
    "dependency_revision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
    "observed_differences": [
      "원래 21st의 설치용 Alert(layout/icon/action/isNotification) 래퍼는 공개 source가 없어 사용하지 않는다. 정확히 대응하는 Origin author의 개별 컴포넌트 파일을 실행 entry로 쓴다.",
      "직접 DOM 원본은 wrapper의 row/complex 속성 대신 inline icon 또는 flex 행과 border/padding/shadow/max-width를 명시한다. 같은 변형의 현재 공개 원본이며 원래21st 비공개 래퍼 바이트 동일성을 주장하지 않는다.",
      "Notification의 닫기/수행 버튼은 원본에 실제 onClick 처리기가 없다. 실제 동작했다고 주장하지 않으며 임의 업무 동작을 추가하지 않는다."
    ],
    "mapping": [
      "Notification registry → apps/origin/registry/default/components/comp-287.tsx; 원래 demo와 문구·아이콘·버튼/목록 구성을 함께 확인"
    ]
  },
  "acquisitionLimitations": [
    "CDN 데모는 SHA256으로, 작성자 원본과 의존 파일은 Git 커밋 및 blob SHA로 고정했다.",
    "현재 작성자 revision의 의존 파일이 과거 21st 내부 구현과 바이트 단위로 같다는 주장은 하지 않는다.",
    "다운로드한 코드를 실행하지 않았으며 브라우저·상호작용 검증은 별도 단계다."
  ],
  "files": [
    {
      "file": "author-example.tsx",
      "kind": "implementation",
      "sha256": "e497a284b1021bb3efa02a7e6e576cb58b4f2171f5706255e8c9eb2ab309d9ec",
      "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
      "license": "MIT"
    },
    {
      "file": "LICENSE",
      "kind": "license",
      "sha256": "4fe705509418993f1ad677f91108c2df676228d7b0a758b42ebe79e8b5ad5a4b",
      "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
      "license": "MIT"
    },
    {
      "file": "upstream/apps/origin/config/components.ts",
      "kind": "upstream-implementation",
      "sha256": "f6818c506ed905f11c3dac09ffa389d02cc444c9de5012655e671c87ee4e8edd",
      "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
      "license": "MIT"
    },
    {
      "file": "author/apps/origin/registry/default/ui/button.tsx",
      "kind": "implementation-dependency",
      "sha256": "00c5b5d0afad82b368cfa34ae4abdaf1e0851dfa49adeb836d9a69747ef4bc49",
      "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
      "license": "MIT"
    },
    {
      "file": "author/apps/origin/registry/default/lib/utils.ts",
      "kind": "implementation-dependency",
      "sha256": "4acbc7165a8d54738ff62b51414e772c08fe78434e524e6d8770180d3ba2925f",
      "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
      "license": "MIT"
    },
    {
      "file": "author/apps/origin/app/globals.css",
      "kind": "theme-source",
      "sha256": "32516eeb848422448834d25bbcdce735323f03f00914d7a9377f2e2e2f2f71a9",
      "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
      "license": "MIT"
    },
    {
      "file": "author/apps/origin/package.json",
      "kind": "dependency-manifest",
      "sha256": "3972a2277166802b5a333210c761c9889e5dc2683c0f3d85b91a174e94ed313d",
      "sourceRevision": "60b6b444e6dfb670fab47bfb0da9dd9da1f8150b",
      "license": "MIT"
    }
  ],
  "importMap": {
    "@/registry/default/ui/button": "author/apps/origin/registry/default/ui/button.tsx",
    "@/registry/default/lib/utils": "author/apps/origin/registry/default/lib/utils.ts"
  },
  "declaredDependencies": {
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "lucide-react": "^0.539.0",
    "radix-ui": "1.4.4-rc.1762291353631",
    "react": "^19.2.6",
    "tailwind-merge": "^3.4.0"
  },
  "runtimeDependencies": {
    "react-origin": "19.2.6",
    "lucide-origin": "0.539.0",
    "clsx": "2.1.1",
    "class-variance-authority": "0.7.1",
    "react-dom-origin": "19.2.6",
    "@radix-ui/react-compose-refs": "1.1.2",
    "@radix-ui/react-slot": [
      "1.2.3",
      "1.2.4"
    ],
    "@radix-ui/react-primitive": [
      "2.1.3",
      "2.1.4"
    ],
    "@radix-ui/react-visually-hidden": [
      "1.2.3",
      "1.2.4"
    ],
    "@radix-ui/react-accessible-icon": "1.1.8",
    "@radix-ui/react-context": [
      "1.1.2",
      "1.1.3"
    ],
    "@radix-ui/react-collection": "1.1.9-rc.1762291353631",
    "@radix-ui/primitive": "1.1.3",
    "@radix-ui/react-use-layout-effect": "1.1.1",
    "@radix-ui/react-use-effect-event": "0.0.2",
    "@radix-ui/react-use-controllable-state": "1.2.2",
    "@radix-ui/react-presence": "1.1.5",
    "@radix-ui/react-id": "1.1.1",
    "@radix-ui/react-collapsible": "1.1.12",
    "@radix-ui/react-direction": "1.1.2-rc.1762291353631",
    "@radix-ui/react-accordion": "1.2.13-rc.1762291353631",
    "@radix-ui/react-use-callback-ref": "1.1.1",
    "@radix-ui/react-use-escape-keydown": "1.1.1",
    "@radix-ui/react-dismissable-layer": "1.1.11",
    "@radix-ui/react-focus-scope": [
      "1.1.7",
      "1.1.8"
    ],
    "@radix-ui/react-portal": [
      "1.1.10",
      "1.1.9"
    ],
    "@radix-ui/react-focus-guards": "1.1.3",
    "tslib": "2.8.1",
    "react-remove-scroll-bar": "2.3.8",
    "use-callback-ref": "1.3.3",
    "detect-node-es": "1.1.0",
    "use-sidecar": "1.1.3",
    "react-remove-scroll": "2.7.2",
    "get-nonce": "1.0.1",
    "react-style-singleton": "2.2.3",
    "aria-hidden": "1.2.6",
    "@radix-ui/react-dialog": "1.1.15",
    "@radix-ui/react-alert-dialog": "1.1.15",
    "@radix-ui/react-aspect-ratio": "1.1.8",
    "use-sync-external-store": "1.7.0",
    "@radix-ui/react-use-is-hydrated": "0.1.0",
    "@radix-ui/react-avatar": "1.1.11",
    "@radix-ui/react-use-previous": "1.1.1",
    "@radix-ui/react-use-size": "1.1.1",
    "@radix-ui/react-checkbox": "1.3.3",
    "@floating-ui/utils": "0.2.12",
    "@floating-ui/core": "1.8.0",
    "@floating-ui/dom": "1.8.0",
    "@floating-ui/react-dom": "2.1.9",
    "@radix-ui/react-arrow": "1.1.7",
    "@radix-ui/react-popper": "1.2.8",
    "@radix-ui/react-roving-focus": "1.1.12-rc.1762291353631",
    "@radix-ui/react-menu": "2.1.17-rc.1762291353631",
    "@radix-ui/react-context-menu": "2.2.17-rc.1762291353631",
    "@radix-ui/react-dropdown-menu": "2.1.17-rc.1762291353631",
    "@radix-ui/react-label": [
      "2.1.7",
      "2.1.8"
    ],
    "@radix-ui/react-form": "0.1.8",
    "@radix-ui/react-hover-card": "1.1.15",
    "@radix-ui/react-menubar": "1.1.17-rc.1762291353631",
    "@radix-ui/react-navigation-menu": "1.2.15-rc.1762291353631",
    "@radix-ui/number": "1.1.1",
    "@radix-ui/react-one-time-password-field": "0.1.9-rc.1762291353631",
    "@radix-ui/react-password-toggle-field": "0.1.3",
    "@radix-ui/react-popover": "1.1.15",
    "@radix-ui/react-progress": "1.1.8",
    "@radix-ui/react-radio-group": "1.3.9-rc.1762291353631",
    "@radix-ui/react-scroll-area": "1.2.11-rc.1762291353631",
    "@radix-ui/react-select": "2.2.7-rc.1762291353631",
    "@radix-ui/react-separator": "1.1.8",
    "@radix-ui/react-slider": "1.3.7-rc.1762291353631",
    "@radix-ui/react-switch": "1.2.6",
    "@radix-ui/react-tabs": "1.1.14-rc.1762291353631",
    "@radix-ui/react-toast": "1.2.16-rc.1762291353631",
    "@radix-ui/react-toggle": "1.1.10",
    "@radix-ui/react-toggle-group": "1.1.12-rc.1762291353631",
    "@radix-ui/react-toolbar": "1.1.12-rc.1762291353631",
    "@radix-ui/react-tooltip": "1.2.8",
    "radix-ui": "1.4.4-rc.1762291353631",
    "tailwind-merge-origin": "3.4.0",
    "scheduler": "0.27.0",
    "tailwindcss": "4.1.13"
  },
  "packageAliases": {
    "react": "react-origin",
    "react-dom": "react-dom-origin",
    "lucide-react": "lucide-origin",
    "tailwind-merge": "tailwind-merge-origin"
  },
  "assets": [],
  "assetAdaptations": [],
  "adaptations": [
    "The unchanged official Origin example apps/origin/registry/default/components/comp-287.tsx is the entry, pinned to cosscom/coss revision 60b6b444e6dfb670fab47bfb0da9dd9da1f8150b under the apps/origin MIT notice.",
    "The historical 21st Alert(layout/icon/action/isNotification) wrapper is not reused. The matching official variant uses explicit DOM; historical wrapper byte identity is not claimed.",
    "The original Origin theme is supplied by the host. The source implementation and its available Button/cn dependencies remain unchanged.",
    "The original You&lsquo;ve made changes! copy, small Undo button, and Close banner control are retained. No rollback state, undo window, or dismiss handler is added."
  ],
  "runtime_verified": false
}
