{"_id":"@arshad-shah/cynosure-core","_rev":"4-b3fa9645e2973b3ebcda14a2ba273d9e","name":"@arshad-shah/cynosure-core","dist-tags":{"latest":"3.3.0"},"versions":{"1.0.0":{"name":"@arshad-shah/cynosure-core","version":"1.0.0","license":"MIT","_id":"@arshad-shah/cynosure-core@1.0.0","maintainers":[{"name":"arshad-shah","email":"shaharshad57@gmail.com"}],"dist":{"shasum":"9d0616655841d25bc23b215de96262a1c3e92d8d","tarball":"https://registry.npmjs.org/@arshad-shah/cynosure-core/-/cynosure-core-1.0.0.tgz","fileCount":7,"integrity":"sha512-R3unzDi2d5VmEQX0aCNywW94lj28TscxgWbIZIMkHPLlkOevyV7kYFIp33wTspyi/TyoR6qmJ+5VKfJRc2HvJw==","signatures":[{"sig":"MEYCIQDP5GOoeI5B0ylyU4a6tslvk7d8zvpSDU4gKc/n8SLFgAIhAOBveVKur0FM1I1vXeaGyoCU+uJ2NBeJmF9d7JpIUPr/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18871},"main":"./dist/index.js","type":"module","_from":"file:arshad-shah-cynosure-core-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","test":"vitest run --passWithNoTests","build":"tsup","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit","test:watch":"vitest --passWithNoTests"},"_npmUser":{"name":"arshad-shah","email":"shaharshad57@gmail.com"},"_resolved":"C:\\Users\\shaha\\AppData\\Local\\Temp\\9bbcf5daa06d1f9c42651c70b3dbb054\\arshad-shah-cynosure-core-1.0.0.tgz","_integrity":"sha512-R3unzDi2d5VmEQX0aCNywW94lj28TscxgWbIZIMkHPLlkOevyV7kYFIp33wTspyi/TyoR6qmJ+5VKfJRc2HvJw==","_npmVersion":"11.8.0","description":"Cynosure UI — primitives, utilities, hooks","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.13.1","dependencies":{"@arshad-shah/cynosure-tokens":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","react":"19.2.5","vitest":"4.1.4","react-dom":"19.2.5","typescript":"5.9.3","@types/react":"19.2.14","@types/react-dom":"19.2.3","@arshad-shah/cynosure-config":"0.0.0"},"peerDependencies":{"react":">=19.0.0","react-dom":">=19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cynosure-core_1.0.0_1776518661014_0.2284488283378212","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@arshad-shah/cynosure-core","version":"2.1.1","license":"MIT","_id":"@arshad-shah/cynosure-core@2.1.1","maintainers":[{"name":"arshad-shah","email":"shaharshad57@gmail.com"}],"dist":{"shasum":"af84e361dd23d50b3f35dbaa681a0540f28fa257","tarball":"https://registry.npmjs.org/@arshad-shah/cynosure-core/-/cynosure-core-2.1.1.tgz","fileCount":7,"integrity":"sha512-tW1zK8eR2ogqdOgrRB3Ohkio9jC799PIhsAT1YfesF/DnigsByIxtQh/n0vSn43RmKIdPc8uQxggVdpmgVOSnA==","signatures":[{"sig":"MEQCIBn7nSA1alnzpCCvr9ZYQdWGp1GMluNdeTS0idz2MUnEAiAKfVTF6kG/QmLYOJx8poGlczgm8bHkSCZ1LJtNFrNCAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23777},"main":"./dist/index.js","type":"module","_from":"file:arshad-shah-cynosure-core-2.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","test":"vitest run --passWithNoTests","build":"tsup","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit","test:watch":"vitest --passWithNoTests"},"_npmUser":{"name":"arshad-shah","email":"shaharshad57@gmail.com"},"_resolved":"C:\\Users\\shaha\\AppData\\Local\\Temp\\c07d7349b45f045d57facf1fae6210a3\\arshad-shah-cynosure-core-2.1.1.tgz","_integrity":"sha512-tW1zK8eR2ogqdOgrRB3Ohkio9jC799PIhsAT1YfesF/DnigsByIxtQh/n0vSn43RmKIdPc8uQxggVdpmgVOSnA==","_npmVersion":"11.12.1","description":"Cynosure UI — primitives, utilities, hooks","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.15.0","dependencies":{"@arshad-shah/cynosure-tokens":"2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","react":"19.2.5","vitest":"4.1.4","react-dom":"19.2.5","typescript":"5.9.3","@types/react":"19.2.14","@types/react-dom":"19.2.3","@arshad-shah/cynosure-config":"0.0.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cynosure-core_2.1.1_1776979832754_0.25400400185728067","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@arshad-shah/cynosure-core","version":"3.0.0","keywords":["cynosure","design-system","react","primitives","hooks","utilities"],"license":"MIT","_id":"@arshad-shah/cynosure-core@3.0.0","maintainers":[{"name":"arshad-shah","email":"shaharshad57@gmail.com"}],"homepage":"https://cynosure.arshadshah.com","bugs":{"url":"https://github.com/arshad-shah/cynosure/issues"},"dist":{"shasum":"c64b0adc8f0b38c6285ea75f9b2ca3750b87dad5","tarball":"https://registry.npmjs.org/@arshad-shah/cynosure-core/-/cynosure-core-3.0.0.tgz","fileCount":8,"integrity":"sha512-5E+N2BrVyNZpiDw78z8uRDJIQRsl55V85ndZmAv7kzy+1lU48OjdXIdxvWv1HH8HL+C/w37lBpZESxjeUWsGkQ==","signatures":[{"sig":"MEYCIQDBPqo08pKEdRVRoS/e4/9uo96CGbfpp43/2wHlmXKZwgIhAKRsbuLiqgEQg+QKIcayzhRbab3qoMhbl3zF+Hfj+vzL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arshad-shah%2fcynosure-core@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24834},"main":"./dist/index.js","type":"module","_from":"file:arshad-shah-cynosure-core-3.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","test":"vitest run --passWithNoTests","build":"tsup","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit","test:watch":"vitest --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a8f0abee-8e00-4234-ba0b-046ce336d36f"}},"_resolved":"/tmp/61ee442907474db58df6227ce8e899e1/arshad-shah-cynosure-core-3.0.0.tgz","_integrity":"sha512-5E+N2BrVyNZpiDw78z8uRDJIQRsl55V85ndZmAv7kzy+1lU48OjdXIdxvWv1HH8HL+C/w37lBpZESxjeUWsGkQ==","repository":{"url":"git+https://github.com/arshad-shah/cynosure.git","type":"git","directory":"packages/core"},"_npmVersion":"11.5.2","description":"Cynosure UI — primitives, utilities, hooks","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.2","dependencies":{"@arshad-shah/cynosure-tokens":"3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","react":"19.2.5","vitest":"4.1.4","react-dom":"19.2.5","typescript":"5.9.3","@types/react":"19.2.14","@types/react-dom":"19.2.3","@arshad-shah/cynosure-config":"0.0.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cynosure-core_3.0.0_1778693324678_0.28404434782115273","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@arshad-shah/cynosure-core","version":"3.3.0","description":"Cynosure UI — primitives, utilities, hooks","license":"MIT","homepage":"https://cynosure.arshadshah.com","repository":{"type":"git","url":"git+https://github.com/arshad-shah/cynosure.git","directory":"packages/core"},"bugs":{"url":"https://github.com/arshad-shah/cynosure/issues"},"keywords":["cynosure","design-system","react","primitives","hooks","utilities"],"type":"module","sideEffects":["**/*.css"],"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"dependencies":{"@arshad-shah/cynosure-tokens":"3.3.0"},"devDependencies":{"@types/react":"19.2.14","@types/react-dom":"19.2.3","react":"19.2.5","react-dom":"19.2.5","tsup":"8.5.1","typescript":"5.9.3","vitest":"4.1.4","@arshad-shah/cynosure-config":"0.0.0"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run --passWithNoTests","test:watch":"vitest --passWithNoTests","clean":"rm -rf dist .turbo"},"_id":"@arshad-shah/cynosure-core@3.3.0","_integrity":"sha512-wEj/DXTKBbVQpojPqJ1qdAiMfpUn4ueKZGScKpCkTf0u6sGdtey/GHgVI7x2X+S9qAzfP2+YralSLTsmdgeRcw==","_resolved":"/tmp/16a2b99e4b9116bf74d4987e84bac3b5/arshad-shah-cynosure-core-3.3.0.tgz","_from":"file:arshad-shah-cynosure-core-3.3.0.tgz","_nodeVersion":"22.22.3","_npmVersion":"11.5.2","dist":{"integrity":"sha512-wEj/DXTKBbVQpojPqJ1qdAiMfpUn4ueKZGScKpCkTf0u6sGdtey/GHgVI7x2X+S9qAzfP2+YralSLTsmdgeRcw==","shasum":"763b18e68ffc3707dde5b69978482232b22a545b","tarball":"https://registry.npmjs.org/@arshad-shah/cynosure-core/-/cynosure-core-3.3.0.tgz","fileCount":8,"unpackedSize":25030,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arshad-shah%2fcynosure-core@3.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD7R7s9XCH8ou763k1J469J9pen32iGWwkrdV/nPjC1wAIgXGD00VBqmdcwdUwlvlTjnOaCqLHWa/nV5s66XHnhxLk="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a8f0abee-8e00-4234-ba0b-046ce336d36f"}},"directories":{},"maintainers":[{"name":"arshad-shah","email":"shaharshad57@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cynosure-core_3.3.0_1780177814629_0.25063658441525605"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-18T13:24:20.906Z","modified":"2026-05-30T21:50:15.034Z","1.0.0":"2026-04-18T13:24:21.161Z","2.1.1":"2026-04-23T21:30:32.927Z","3.0.0":"2026-05-13T17:28:44.841Z","3.3.0":"2026-05-30T21:50:14.751Z"},"bugs":{"url":"https://github.com/arshad-shah/cynosure/issues"},"license":"MIT","homepage":"https://cynosure.arshadshah.com","keywords":["cynosure","design-system","react","primitives","hooks","utilities"],"repository":{"type":"git","url":"git+https://github.com/arshad-shah/cynosure.git","directory":"packages/core"},"description":"Cynosure UI — primitives, utilities, hooks","maintainers":[{"name":"arshad-shah","email":"shaharshad57@gmail.com"}],"readme":"# @arshad-shah/cynosure-core\n\n> Headless primitives, hooks, and utilities that underpin Cynosure UI.\n\nMost application developers want [`@arshad-shah/cynosure-react`](https://www.npmjs.com/package/@arshad-shah/cynosure-react) instead — it's the batteries-included component library. This package is the substrate it sits on: low-level building blocks meant for library authors, advanced consumers, and anyone assembling their own components on top of Cynosure's behaviour layer.\n\n---\n\n## Install\n\n```bash\npnpm add @arshad-shah/cynosure-core\n```\n\nPeer requirements: `react@^19`, `react-dom@^19`.\n\n---\n\n## What's inside\n\n- **Hooks** — `useId`, `useMergedRef`, `useControllableState`, focus-trap utilities, keyboard-nav helpers\n- **Utilities** — DOM owner-document resolution, polymorphic `as` typings, SSR-safe helpers\n- **Primitives** — unstyled behaviour wrappers that the `react` package composes into themed components\n- **Types** — the shared TypeScript vocabulary the rest of Cynosure's packages reference\n\nEvery export is a single-purpose building block. None of them render visible UI on their own.\n\n---\n\n## Usage\n\n```ts\nimport { useMergedRef, useControllableState } from '@arshad-shah/cynosure-core';\n\nfunction MyInput({ value, defaultValue, onValueChange, ...props }) {\n  const [controlledValue, setControlledValue] = useControllableState({\n    prop: value,\n    defaultProp: defaultValue,\n    onChange: onValueChange,\n  });\n  // …\n}\n```\n\nBecause the package has no styles, nothing is imported implicitly. There are no side effects at module load outside of the CSS files consumers explicitly opt into via subpath imports.\n\n---\n\n## When to use this directly\n\n- You're building a component library that wants Cynosure's behaviour layer without its styling decisions\n- You need a Cynosure hook in a component that isn't wrapped in `@arshad-shah/cynosure-react`\n- You're writing a custom theme or token pipeline and want to reuse the type vocabulary\n\nIf none of those apply, you probably want `@arshad-shah/cynosure-react`.\n\n---\n\n## Links\n\n- [Main repo](https://github.com/arshad-shah/cynosure)\n- [Architecture overview](https://github.com/arshad-shah/cynosure/blob/main/docs/specs/ARCHITECTURE.md)\n- [Changelog](./CHANGELOG.md)\n\n## License\n\nMIT © [Arshad Shah](https://github.com/arshad-shah)\n","readmeFilename":"README.md"}