{"_id":"@ankhzet/router","_rev":"2-06ccb06c7b4b7349402be085a6038ef7","name":"@ankhzet/router","dist-tags":{"latest":"1.3.0"},"versions":{"1.2.0":{"name":"@ankhzet/router","version":"1.2.0","author":{"name":"ankhzet"},"license":"MIT","_id":"@ankhzet/router@1.2.0","maintainers":[{"name":"ankhzet","email":"ankhzet@gmail.com"}],"dist":{"shasum":"937575a316e72b77ffabca2093ebf77ab2d0bcc3","tarball":"https://registry.npmjs.org/@ankhzet/router/-/router-1.2.0.tgz","fileCount":11,"integrity":"sha512-HYM+c1pidEz23+edubXmtGcKqeHzWUcdsAC2GtyX0AKqyTLtVezuA0KcDxZA88YSCo1xT17RMGUtcUw+AVJJvQ==","signatures":[{"sig":"MEUCIEXK69ug+4kN6y3XqQs/l5hhhpLkOu6hc88QfZU+R5T3AiEA2YxMX3ZCUyxByBpKqsltzK3HQJ8jOROKYGFRLI3QUoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9741},"main":"./src/index.ts","type":"module","_from":"file:ankhzet-router-1.2.0.tgz","types":"./src/index.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"api":"api-extractor run --local --verbose","test":"jest","build":"vite build","clean":"rm -rf ./{build,dist,api} && rm -rf ./*.log","preview":".bin/publish --dry-run --no-git-checks"},"_npmUser":{"name":"ankhzet","email":"ankhzet@gmail.com"},"_resolved":"/private/var/folders/t0/crkrf0813j10dr28s3t630c40000gn/T/76edc3ee50e263370aa8f4fa37c32c1c/ankhzet-router-1.2.0.tgz","_integrity":"sha512-HYM+c1pidEz23+edubXmtGcKqeHzWUcdsAC2GtyX0AKqyTLtVezuA0KcDxZA88YSCo1xT17RMGUtcUw+AVJJvQ==","_npmVersion":"11.12.1","description":"Simple router","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"history":"^4.10.1","react-router-dom":"^5.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^19.2.15","@types/history":"^4.7.11","@types/react-router-dom":"^5.3.3","@microsoft/api-extractor":"^7.47.7"},"peerDependencies":{"react":"^19.2.5"},"_npmOperationalInternal":{"tmp":"tmp/router_1.2.0_1779805220296_0.6275126105549096","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@ankhzet/router","version":"1.3.0","author":{"name":"ankhzet"},"description":"Simple router","license":"MIT","type":"module","main":"./src/index.ts","types":"./src/index.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"dependencies":{"history":"^4.10.1","react-router-dom":"^5.3.4"},"peerDependencies":{"react":"^19.2.5"},"devDependencies":{"@microsoft/api-extractor":"^7.47.7","@types/history":"^4.7.11","@types/react":"^19.2.15","@types/react-router-dom":"^5.3.3"},"sideEffects":false,"engines":{"node":">=24"},"scripts":{"clean":"rm -rf ./{build,dist,api} && rm -rf ./*.log","build":"vite build","api":"api-extractor run --local --verbose","preview":".bin/publish --dry-run --no-git-checks","test":"jest"},"_id":"@ankhzet/router@1.3.0","_integrity":"sha512-pCpPgVYngeLHeltwPnYgnxjdKZmkiXcTn5MxGNOS7nMyetJvofeNpxRWupcKJguW2nB46gW0yD4qpJ0tpnxJWg==","_resolved":"/private/var/folders/t0/crkrf0813j10dr28s3t630c40000gn/T/7a1935cd01996e2a442408079e461951/ankhzet-router-1.3.0.tgz","_from":"file:ankhzet-router-1.3.0.tgz","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-pCpPgVYngeLHeltwPnYgnxjdKZmkiXcTn5MxGNOS7nMyetJvofeNpxRWupcKJguW2nB46gW0yD4qpJ0tpnxJWg==","shasum":"b22145f2ac7d19d28f288c7376d180276879e19b","tarball":"https://registry.npmjs.org/@ankhzet/router/-/router-1.3.0.tgz","fileCount":14,"unpackedSize":21267,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDq37pBbDqfYQbY/g8hOcohutSpwHDYsZPJXIjRlxn11wIhAO0wcT4B9W/bGd7na5Nesq0s6T70zx/MWtx1iwK5zbQk"}]},"_npmUser":{"name":"ankhzet","email":"ankhzet@gmail.com"},"directories":{},"maintainers":[{"name":"ankhzet","email":"ankhzet@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/router_1.3.0_1779807315630_0.34615299365656993"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-26T14:20:20.138Z","modified":"2026-05-26T14:55:15.861Z","1.2.0":"2026-05-26T14:20:20.439Z","1.3.0":"2026-05-26T14:55:15.756Z"},"author":{"name":"ankhzet"},"license":"MIT","description":"Simple router","maintainers":[{"name":"ankhzet","email":"ankhzet@gmail.com"}],"readme":"# @ankhzet/router\nSimple router\n\n## Usage example:\n\n```tsx\n// App.tsx\nimport { UIRouter } from '@ankhzet/router';\nimport { Routing } from './routing';\n\nexport function App() {\n  return (\n      <UIRouter root={Routing} />\n  );\n}\n```\n\n```tsx\n// ./routing.tsx\nimport { PropsWithChildren } from 'react';\nimport { UIRoute, Link, useLocationState } from '@ankhzet/router';\nimport { Routes, BParams } from './routes';\n\nconst RootScreen = ({ children }: PropsWithChildren) => (\n    <div>\n        <div>Root Screen</div>\n        <div>{children}</div>\n    </div>\n);\n\nconst Screens = ({ children }: PropsWithChildren) => (\n    <div>\n        <div>Screens</div>\n        <div>\n            <div><Link to={Routes.screens.a.root()}>A</Link></div>\n            <div><Link to={Routes.screens.b.root({ first: 1, second: 2 })}>B</Link></div>\n            <div><Link to={Routes.screens.c.root()}>C</Link></div>\n        </div>\n        <div>{children}</div>\n    </div>\n);\n\nconst ScreenA = () => (\n    <div>Screen A</div>\n);\n\nconst ScreenB = () => {\n    const { first, second } = useLocationState<BParams>({});\n    \n    return (\n        <div>\n            <div>Screen B</div>\n            <div>\n                <div>First: {first}</div>\n                <div>Second: {second}</div>\n            </div>\n        </div>\n    );\n}\n\nconst ScreenC = () => (\n    <div>Screen C</div>\n);\n\nexport const Routing = UIRoute.process(Routes, {\n    screen: RootScreen,\n    children: {\n        screens: {\n            screen: Screens,\n            children: {\n                a: {\n                    screen: ScreenA,\n                },\n                b: {\n                    screen: ScreenB,\n                },\n                c: {\n                    screen: ScreenC,\n                },\n            },\n        },\n    },\n});\n```\n\n```ts\n// ./routes.ts\nimport { UIRoute } from '@ankhzet/router';\n\nexport type BParams = { first: number; second: number };\n\nexport const Routes = UIRoute.route({\n    screens: UIRoute.route('/screens', {\n        a: UIRoute.route('/screens/a'),\n        b: UIRoute.make<BParams>('/screens/b', (pathname) => (state) => ({\n            pathname,\n            // tweak state here?\n            state, \n        })),\n        c: UIRoute.route('/screens/c'),\n    }),\n});\n\n// or \n\nexport const Screens = UIRoute.route('/screens', {\n    a: UIRoute.route('/screens/a'),\n    b: UIRoute.make<BParams>('/screens/b', (pathname) => (state) => ({ pathname, state })),\n    c: UIRoute.route('/screens/c'),\n});\n\nexport const Routes = UIRoute.route({\n    screens: Screens,\n});\n```\n\n## [API Reference](https://github.com/ankh-intent/ankhzet/blob/master/docs/markdown/router.md)\n","readmeFilename":"README.md"}