{"_id":"@firna/ui","_rev":"35-450add1c279a239ad933a7f54e35d8fb","name":"@firna/ui","dist-tags":{"latest":"3.1.1"},"versions":{"0.1.0":{"name":"@firna/ui","version":"0.1.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.1.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"6d464c9719f668940bdff56c7378a78d733aecc5","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.1.0.tgz","fileCount":586,"integrity":"sha512-5+rj3daWrrhs0RdfFO6q528oN4khX6IkkupHy/JmmWV3XzEA/+I0qzrHPNafgdidW6lBQzVATiDqkkny0a16Zg==","signatures":[{"sig":"MEUCIQCKCjTDWqhmJUy26U9CVjdymhlZSMNGERSIJm37sR1OVAIgQ3jcPowMCbgNlMoqCNBOvt7bKTafr5v1Zs9Gh0flRzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":927041},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"}},"private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"calum.moore","email":"calum.moore@gmail.com"},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"25.4.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@vitejs/plugin-react":"^5.1.2","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.0_1781523083755_0.712279201502122","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@firna/ui","version":"0.1.1","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.1.1","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"d70b88485f36df247388c3b7597a74b087bc7afc","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.1.1.tgz","fileCount":586,"integrity":"sha512-C7QDYZ8wEEeM0zUQQ49d6T6HKovWnusSWN577/66ivS45OHc/5vVbBHUmMmtZSidKl8ioAGau0uMmTMlFyarKQ==","signatures":[{"sig":"MEQCIBEz49j4VVbTEquLYVhUt+LFKBafZXWEqAmEWsBJOJQiAiAz2sfENc3YssqChfG28t5r/jiBKPjUSUP33sbYXCmS8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":928244},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"}},"gitHead":"c30225daeec31c3be21befadd1682bfd89131e16","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.16.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@vitejs/plugin-react":"^5.1.2","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.1_1781541129018_0.21311139787055855","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@firna/ui","version":"0.2.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.2.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"951a569e5c4297a29c13035ffcab9e48fb0384b6","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.2.0.tgz","fileCount":762,"integrity":"sha512-te3ufnON519XVtjGfmOI0pYZZieHw7fMmc6gdXKZBUDogFZHv7sTSU9c04dUpd+DU+VA/gzOwJS9EdbRi3F+pA==","signatures":[{"sig":"MEYCIQCjR5yhXrT7fSbkbaDp936MkJ7EfjqGqZCz5lc068uhtwIhAPF2p+VxdXLY998c7bY4X1Cd1xeFItw9MRoeRycddctd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1205423},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"}},"gitHead":"9201940d614d33cc9193e50cffb4f8c43c82cd52","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.16.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@vitejs/plugin-react":"^5.1.2","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.0_1781628758840_0.12186155287049538","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@firna/ui","version":"0.3.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.3.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"976b98a3bcc953036e712975df18071a7ad93a6e","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.3.0.tgz","fileCount":962,"integrity":"sha512-jv0T4/uOx0rfofXeU2EEV8StAJkNe5wDM/AIxRErvN8iPtmbdpPwdDBeBQfLthk8XnJc2yjFmNmr1t9xiOI/Eg==","signatures":[{"sig":"MEQCIHf3hipB1d2NkEQylukEMur/hYgJWYyNINwJa8Hd5IiqAiBE+61j+Ho7X6tV+S2dO5nPjXaaPfMKnegzqDLJaJ5Z+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1799061},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"}},"gitHead":"a574aa4edfd3f2346b3b97433167616c81b68873","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.16.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@vitejs/plugin-react":"^5.1.2","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.3.0_1781795189667_0.030632671634242437","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@firna/ui","version":"0.4.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.4.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"fe1bea1ab94ce333db9fd94ad7ab440bef5a39fa","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.4.0.tgz","fileCount":1146,"integrity":"sha512-CjTWER/ur8CqhY19ccWqduph6srf1s1e0euShH/rx0F63RPOihc5WtNOr9zS3lriRBsIUplUYOgiA5iIjGmyvA==","signatures":[{"sig":"MEYCIQDhE0zgfQ3j+G7X7EUa5Cl+lIRffx90kbaeYd8ouriFIQIhAJHOUd0bQwGENLdz2NGzCKOUGQL54FTFdsw95MWpx30g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2414367},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"}},"gitHead":"a91cb41309595a0195c12f88f3b1af198a919e45","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.16.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.4.0_1781877489195_0.039844042227744625","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@firna/ui","version":"0.5.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.5.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"6324c07124acd7bf0001c1763e590d5291ef2d40","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.5.0.tgz","fileCount":1194,"integrity":"sha512-vUwAXdpfLQhDwE9WEGtI6ogwIjS8PgBN2C54sDHLEMenTgCsqWuG7/NWl7brX5ZtelCYxd1Kj3lwubfxhcXcyQ==","signatures":[{"sig":"MEYCIQDL5jFPbOI0jF+4chybCpQporI/csrxK8Coi3kwwH3lPQIhANXMYc3Lm2g0k4t5w/KY8Nj/1rO/TVoyFEMn6+V/hsCe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2533408},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"}},"gitHead":"1433f7c1a30566055d4d3bb8bf7928bd2d02b46a","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.16.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.5.0_1782035539282_0.7075635238357194","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@firna/ui","version":"0.6.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.6.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"0d06316a20d9b85817ef3688be06cae3dba9ad6c","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.6.0.tgz","fileCount":1202,"integrity":"sha512-nA2qSDAeeUAgCnK8ujhihOhLaVURATaryY3klTfT9k9+wwaZOVVv872QnAzevXM8cTfHjc1NIwympgHByiHBeg==","signatures":[{"sig":"MEYCIQDDZuseTgxW5d+I09LN4wASufuaXaPZ9l1SPtXy+rNfvQIhAI886xj2DyxLZ9SLMEy0JfCAbmYKJJmNfkNaFifv5fFO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2545344},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"}},"gitHead":"875d85131bb1c16864a3160d9a1059f566cb9674","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.16.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.6.0_1782042517923_0.47979299493628713","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@firna/ui","version":"0.7.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.7.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"97adaf44def768e77ce0230131f99cf9317166d4","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.7.0.tgz","fileCount":1202,"integrity":"sha512-kyKYsUwcTH/ia8T+VbSdU/KNleDlF9s0kjIf/p569hNuUA+WZ/3CBAH1FhMRSsnO2xl1IZ6Or2FpC8cESstYww==","signatures":[{"sig":"MEUCIQC95FiLZ+IDcp2dSlui3Xkr+CLNqixbMBPzvkdseM/FjwIgMCtuyuJReZLbcxlPueH4JvKNF75muB7Yg4Kd+cvDZ5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2571223},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"}},"gitHead":"e85d8c568464a24579a88de0c13802fc1abd9462","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.16.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.7.0_1782129985841_0.642541203741223","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@firna/ui","version":"0.8.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.8.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"bab087946eb5100a03aa3c085db6993809c09e17","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.8.0.tgz","fileCount":1602,"integrity":"sha512-jyOWXLNLIIvTctHG1ap4DlPoOg/rlf4eJO46WQXv28B1rcjdItk91JGAy9E4XHEvmTnOtoELyUIrO2bmbnyawA==","signatures":[{"sig":"MEUCIC0AnwSVDkr/Qw76OwTRPB3LEnW1BbLULJLhqXG+vVAsAiEAgt1h3I/2N4gNvEYIK2MVVvMUP77QL5gEqWF4CND+fYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3534320},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"75661c07e6e02cd1ab7b6c6ad60f2477aca73a69","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.17.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.8.0_1782904602293_0.2201576339604392","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@firna/ui","version":"0.9.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.9.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"916663d4c4e871b07486b825458956874bd57a6f","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.9.0.tgz","fileCount":1634,"integrity":"sha512-XEqfuCb0/gcAmzBlErT3lpl2sQUtih+lNcQhk9/hWkZSmKSjk5i/KuwJ5Kjgb1eGYzhAl4FxyWE4DWVzmXbJmQ==","signatures":[{"sig":"MEQCICu+BfjX5MoNjPrydLaqj/QLhkpUkIYHx/GXiZ9qh/cIAiALks6JJe34kLxeLpQZcF8dGCSjHdvgJxWuCjhmSGPfKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3634344},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"b6014bb73637297c5b4b29e758e3d2af34ff47b9","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.9.0_1783608209849_0.21628893013134576","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@firna/ui","version":"0.10.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.10.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"bc32010582aadf1c12f821e0bdf32c7aa78f8cdd","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.10.0.tgz","fileCount":1714,"integrity":"sha512-5gTsBQ3ZYWvvjeiBlWuNWp2E+S1mRUo88R+InZaUnEwaqkF82xjMjbjeFZ1B7VuykukGc7aiZuAF8cv0lT0GOg==","signatures":[{"sig":"MEUCIGKT3apvdrGKpwYcoWBTyOKJuT5S3BNy+BUBmbTyriDXAiEAqjMuGLqxxLLjCCqq6CACYHkuClMpYh41b45y/y4yc4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3714337},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"7b21b095976f432b062c0c6c454605c1e359a979","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.10.0_1783684355161_0.5169763955293327","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@firna/ui","version":"0.11.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.11.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"87744a8b4bb2a95b2768971e8b74b8361db5a6ff","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.11.0.tgz","fileCount":1714,"integrity":"sha512-N4j3nxhxZ9kdrwOCLmwEYM/jmhH/Adwpk4OPQvCj9YthakpA7VAspSCaSdks0+/T7qaG033bTXlltVl/922YLw==","signatures":[{"sig":"MEUCIQDXqF4N55fffJVTGpRgxQj3QJrsghJ5IFhCqkOPyBf9VwIgUGHtdDQyn3488/7S1/zwgz3LJFW9SL9OJhF4Y1HbAv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3749879},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"40bb71c5a81b8002b21ca5122d25ffdfe1be2689","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.11.0_1783850297144_0.8682125253258843","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@firna/ui","version":"0.12.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.12.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"c66d63b27f05d626c8876496f17596329746d1e6","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.12.0.tgz","fileCount":1714,"integrity":"sha512-jdljkaWhHmQaWNG5CWQ4wdPCFFXx8bZBhHJTCTBoV0JcHDH/nwhcBBIYvhzaI7/62/wnWRPk2gYWOOa9neG+pg==","signatures":[{"sig":"MEQCIEKcuXXYGozpb9XORZ+vTazuW+UD3a4a70mcDFrnuOUJAiA9RQZUP7uhUBiBiuEfTYq8g2eTbR+uRcM+xF2UeggOHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3755785},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"d36889be243a24f862d5d02539f15eca80e3fb7a","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.12.0_1784368244634_0.6070431361613986","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@firna/ui","version":"0.13.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.13.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"63029e1dca8ddad64f8b044059d062b5cc42cacc","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.13.0.tgz","fileCount":1714,"integrity":"sha512-IH4+jTf6fiYWY+kCBrmW2S8UaiCBubUOkMyiF7dVJORlJhHvgVnG9u9Y6Qb2CvjgE/fR+sh2QCIfvkEdNlrmpA==","signatures":[{"sig":"MEUCIFHab8JD0Dm7vPbH9fOJQ6PV5XYUpQ/zgb0OVkeNmUk7AiEA0CI0j4jLHHf8X+xCdYJohLgmfgmD2Po4uIPMSPimyzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3786403},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"bba3d2ae834957e66ec90c5fcdce7d6422dd8618","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.13.0_1784489653949_0.4217467782907087","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@firna/ui","version":"0.14.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.14.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"f857f9a8e554f494b6e5e88b03cbf5a0aa30cd4d","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.14.0.tgz","fileCount":1714,"integrity":"sha512-K82ca3htf1qbi+yXRGYRNYIetNRN8/I/mHL4v7enY7EXYLDeq0O5Y9vox0SSm853OKjdWNvmF1o/kFVI45J44w==","signatures":[{"sig":"MEUCIFgveH2Qx+SYDVE+Id11KYK7AVumds16+xeLez0sR7lvAiEAksSCglCc8NwMSJ1uCc1a0byeBAsl6pZ1cJejVGn1alQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3844543},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"0954ba2086f47a08ba1aaf1182931a500ff5d069","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.14.0_1784547518676_0.569016656678776","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@firna/ui","version":"0.15.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@0.15.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"a915aa7e2e51bb470b17918d2912df6ccd191358","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-0.15.0.tgz","fileCount":1738,"integrity":"sha512-eQMgtsosZmLRDklE8WbCKXAt8Gp7E7fYE4R63A4IykKPvXCu9hzy9zvDbbBQSIy14j6qOANqpO5OFehBgRVhQA==","signatures":[{"sig":"MEUCIQCN4ziBK1zw1EgiG3K0lBj5lbToWLLExfbpBil3ipDInQIgDugYv6O+8ODVPelsd+CrYktos4B3sFBLQAhKBwm+F5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3945877},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"cc0f8753ead0bee90a3df16d46d31006bf05a1bd","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.15.0_1784571071748_0.4069149346839054","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@firna/ui","version":"1.0.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.0.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"71497cdc74fd63901051a53d76f3d108a3502965","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.0.0.tgz","fileCount":1962,"integrity":"sha512-8mpdSS376DJdxVHIF+p2VhGzhsqjDyQ+kWO/Iw8T6V/c5waFpGte4+djcGU8LTZMjopO9Tled0UzWJzT+3ybew==","signatures":[{"sig":"MEYCIQCWRkbc1wdAzOrNJn/+Qj/2y8VCFPF3nLRG7Jl4czvftQIhAP8JDr8ZWdECasW5yGEks31F3Irv8NhBINdjyu9OIArU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4790820},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"dde6e9733e2850499253d04fdaf20a982ae47f11","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.0.0_1784588286312_0.6066811133725827","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@firna/ui","version":"1.1.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.1.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"f7d559cee2f70a5b84e1a26e17bb466c0b965de3","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.1.0.tgz","fileCount":2074,"integrity":"sha512-bVhZuZsDjfcj0bBH76U4v3ti9AKET4+QYFTpVUxxPhtE68eYVmYKsRmGjPQ1UM+NvpF5g7VPQP9Zv5Jx1c3MJw==","signatures":[{"sig":"MEUCIQCodrVYQ846Hi18Jxi0HfYbON1IkdA5vh1Xwd4i85sRtwIgMUGBJBLNmG7wWf2umhwEDPnjFVPy79N1JGjNXZKDh4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5294714},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"3f551317665c53208c7cdc0c2602bb98e8a4fe2b","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.1.0_1784724979946_0.5297759366625676","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@firna/ui","version":"1.2.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.2.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"abe7ddf372e8b96d9eb61cacbc687f403b3dd82f","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.2.0.tgz","fileCount":2090,"integrity":"sha512-3VjiKOEEnrKrsXJVbcFof2sguv9x1OhqI+hOk+jKaydaNz525UMgulRsqIT2XUI+RJxCR0QusEGSDruKwGf69A==","signatures":[{"sig":"MEUCIQDc7niQWgkJtsurZaXVvQkLqyV6Tx5yvuyeHmh7YTXLDQIgOYbXrecizEGEmayaoQoF5RDwuYD4ZMVofczNiY5M+Us=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5313759},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"7218a1737fe585ac148e5d84fd535f4e194b6488","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.2.0_1785161664976_0.3488303908431396","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@firna/ui","version":"1.2.1","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.2.1","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"0d45bf42497e7b145afb942a722203d88d9f50c0","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.2.1.tgz","fileCount":2090,"integrity":"sha512-RphdK2CplNFzGGKKJyTtMm6Cq6qn5strc1tS4kRwjh+7ZO5K8LE/XTv9yw+Fiq6UdLSDnR+ytDkERbjdN+OVyQ==","signatures":[{"sig":"MEQCIAY7W9XI97HvOCbxxgWLCoT7fvKwLOpuE7vsKLFU5b7hAiAinodYUQHvnP3/9bsqSv1aT7ad/jayc2BjO3FaoqUIvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5321805},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"3ff5ba15a0f3079bcc13f355c1353eb553aca729","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.2.1_1785239712190_0.3722488296683535","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@firna/ui","version":"1.3.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.3.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"e79d94aa51c06eab965095acfd12db21bff1680c","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.3.0.tgz","fileCount":2146,"integrity":"sha512-GmcxjB+U5ENs8WpaT3OsjDdk/vWaPpxhvF5jzDvYXda7pAZTMPDSH0ECQF7u1zs5HtuSJA7nRIiWWQ4sdmAC1w==","signatures":[{"sig":"MEQCIDTja8on/4qh1/I1uXbHfTRpsR9yukbqtok74c08iLSyAiAIUYbGA0H+D0W5SqmXolI8Rw7uYJlQhV3JDlyQn+wbow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5478360},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"954b247188012a3097f0c96ba4dccfb551342934","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.3.0_1785498950388_0.7276731947335391","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@firna/ui","version":"1.4.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.4.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"305f536c52042998cdd92622a4e6aecd02a76e0a","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.4.0.tgz","fileCount":2266,"integrity":"sha512-9kfmBBg+TPKtXgxkUeo3GgIEfgKcgmu3/VrahW6D2IX9ePJQNoWKZBC4BN9YcC7bnQyR5Uhq0Npa3M9XETznFg==","signatures":[{"sig":"MEUCIQDtn4LYbwLikGRt4lGXrtHp6ErjkrN5Ht4ZlpOF2dtR1QIgQIe/KJpp46wBmrkEvY5vNIoqPPqbcvBuLaSjsZkjjzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5679265},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"fe365d08d874a4b1086e4dd2bb235d6a5e263225","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.4.0_1785754534240_0.9332244196719743","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@firna/ui","version":"1.5.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.5.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"bde4dc5a5d92bfc1d0d5eef9bffc527d2e6404fc","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.5.0.tgz","fileCount":2266,"integrity":"sha512-JYT+DZzcq4x5WTCft5RpVa7mIDLinK9PD/ySvrMJLob0X79Thw/qHgy5VaEMphGs07iO7yjEeFIAr+eMjWI16w==","signatures":[{"sig":"MEUCICMgOsdLfwzQBZa26vceA6k24SFbDmVDEHKdCXkOwvBdAiEAwKU3DDMi1ahwEh5jH8VzUMCnu9THrXmwAiytIUq5PE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5684217},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"34d775bc45c3091def29e5383a410e6a8443ee3f","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.5.0_1785759685874_0.7002028375175566","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@firna/ui","version":"1.6.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.6.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"1985ce36d0c905c3996f061ff8c05a52744b2fa9","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.6.0.tgz","fileCount":2274,"integrity":"sha512-/V3BhPpqSO6gqFPKHZlcA2gCzg6Pfql9yTnt/gig0qtQrLxpCiQrVmBlCG2sx8HAx1JdeBHNTAYUxPjN2XBgnQ==","signatures":[{"sig":"MEUCIAk5jz8PV1YhbXx3VHD5njwE7Et45zLO2dcWWpg5zAkVAiEAhMD2nW3Nsq7F+/W5Tw0kFqGUWh94FUm8SRB2GbrCHcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5708830},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"22c91ef751578833858270cbed7a27eaf65f6de1","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.6.0_1785772367941_0.34264898402364774","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@firna/ui","version":"1.6.1","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.6.1","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"d24fd4da9c381d9481167dfbf190f4538be554b8","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.6.1.tgz","fileCount":2274,"integrity":"sha512-jOXiNCNkxF4aeeb0sgo5gYLOGpEvYlV5jbqSL7A8HD1QPI5tl/h3DGIIw/wQ4cgsDaqfmMPdNeyFajFnbrT4fA==","signatures":[{"sig":"MEQCIBUorjemizziBVoOyjMZN+zxbZBVmn5VdAJ+Xf9V8nzSAiB8YATyptH2IsWrIVmDOMkdqPRIbJ8x238tPtJY3dMBIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5710258},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"498d43a49f5dd0edac6a40bb35867af9bd840765","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.6.1_1785860639413_0.8830239580754686","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@firna/ui","version":"1.7.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.7.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"7a566f819ad68b95f49963e9f577c51df231d7d4","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.7.0.tgz","fileCount":2282,"integrity":"sha512-wjka/1PfTonv/ccCdbsMCBFknjIhpbuXXJ23EgNkYwKE82WiQwGYYGI3cJix7wmx3UsDx9hSYheCBTadCaR2Eg==","signatures":[{"sig":"MEUCIQDsCyMiJYw5KmSY2+/MqRyNEUmsp3nmAXgBFjId3QHmiwIgFz4zrNMwd6/qHjfCqpP+pEXZfcGcHhEdHgvvxiPUTwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5718014},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"6e9608dffcc76e2d960ec5a2dbd8d219d5098ca3","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.7.0_1785917990814_0.6531834667475254","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@firna/ui","version":"1.8.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.8.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"f1681d54d55f7aa156380f3a757b1c2b9b887a7f","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.8.0.tgz","fileCount":2322,"integrity":"sha512-UfhbA/SALLRu3z7u/iUibcZU7Cr3kqCLsrpINNsx/Glbu/nDyUQbQb1JOO3pbkCdu4O1cIPm9bmovogd+ScRng==","signatures":[{"sig":"MEUCIB6gtwvg8RfK83pqJY5nlDVDsZajSbPi/pVg+YrEEnw5AiEAhDt+XywAfc2rp+3qQl/N0G5MYnLtJHDoTJHX39cxu7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5791394},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"c77474759d694fd85325ffe77cb65f0917057e04","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.8.0_1786015445787_0.8327541571976576","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@firna/ui","version":"1.8.1","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.8.1","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"d9b27f2955c9c605002265afc69021c14d7b03ef","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.8.1.tgz","fileCount":2346,"integrity":"sha512-+GUdsl01qFl1yjorgQAiKY5a4SeJi5j+mL1CEWYNZMO30iY8pmaDhSyV/HEzRZj/UVFu4b9nd//06r1i/blCRw==","signatures":[{"sig":"MEUCIQD/gR2p0CpRUxqgvXIiz8kbQOTNxZYY4YtGW0Woqb2BpQIgMKBlVaNeVvIDQ/aXbSSDptZjOTW3D1ugvz99FfvwepU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5815778},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"43908e659d61283b1ca8b23641cfec4a3ce89052","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.8.1_1786352359980_0.2668680905726666","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@firna/ui","version":"1.9.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@1.9.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"332865dd6436fe8bc79be89dec6ea9888569f053","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-1.9.0.tgz","fileCount":2354,"integrity":"sha512-5k34erdr0sN+4ufDOEdZGCQmWqnI3DjTvZFBSUR/8tg3znvQnnQJceArBoWAXyH9M1TwpRA8k8LpuogmjhPS+A==","signatures":[{"sig":"MEYCIQDxtRcqGwzPa7iQ7bAZ1o3JQc1o41deBiuCM/mSyn7EbAIhANZGUK6/wIAfklnBa+TAtbnHrX6Ql73DNyc5eyJwOnE6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5853168},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./focusRing":{"types":"./dist/node/focusRing.d.ts","import":"./dist/node/focusRing.js","react-native":"./dist/focusRing.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"eaa7d659374baa90fda7b9f88b3ca1ff9a99eeb4","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.18.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.9.0_1786387744098_0.549959359927636","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@firna/ui","version":"2.0.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@2.0.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"4008da0b11f482edb3144258a1a05e647c0105ea","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-2.0.0.tgz","fileCount":3266,"integrity":"sha512-sNrHJ8rGs6n9kb2RooAG7QRzCwP1WgwelhJtT6fQv8vBl5Xf/ko/H8J7OgK9pFHm/XAz10rtGEwH+bf1nDg4jg==","signatures":[{"sig":"MEQCIDRxBsznM9nHkSgzOMdeoNbBw8LNMCQOxlm318pF5O7BAiA+SFk+daKJhQfv4gH0p1coUESZWC6KbkcadO0SZwXMzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8318663},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./chart":{"types":"./dist/node/chart/index.d.ts","import":"./dist/node/chart/index.js","react-native":"./dist/chart/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./timeline":{"types":"./dist/node/timeline/index.d.ts","import":"./dist/node/timeline/index.js","react-native":"./dist/timeline/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./focusRing":{"types":"./dist/node/focusRing.d.ts","import":"./dist/node/focusRing.js","react-native":"./dist/focusRing.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./video-editor":{"types":"./dist/node/video-editor/index.d.ts","import":"./dist/node/video-editor/index.js","react-native":"./dist/video-editor/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"fe96e380e7d3c354a8901256dccf16560033814d","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.19.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_2.0.0_1787325025460_0.12006681983435019","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@firna/ui","version":"2.0.1","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@2.0.1","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"7248326de2146afbb459a80f5389480ffe16ca7f","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-2.0.1.tgz","fileCount":3266,"integrity":"sha512-qByyY1JVAk+V7k2y+ypdV1wtm0nVEW8aKwPVKvgWqzK2THZyXEy62UK5O2UZfce9nGk9BMGSFRKVkTic0ApJCg==","signatures":[{"sig":"MEQCIGMqFN4SG0OklFDFX98qXMB87BXSa5WHUnUl+a7jQ4hkAiAFCD/nZXCVeOktww4wVmIQ/rrbxJuUW0EVvzpQG6Rg1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8330870},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./chart":{"types":"./dist/node/chart/index.d.ts","import":"./dist/node/chart/index.js","react-native":"./dist/chart/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./timeline":{"types":"./dist/node/timeline/index.d.ts","import":"./dist/node/timeline/index.js","react-native":"./dist/timeline/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./focusRing":{"types":"./dist/node/focusRing.d.ts","import":"./dist/node/focusRing.js","react-native":"./dist/focusRing.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./video-editor":{"types":"./dist/node/video-editor/index.d.ts","import":"./dist/node/video-editor/index.js","react-native":"./dist/video-editor/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"88563d2b2aa412a126ff273542e2197f767a8580","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.19.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_2.0.1_1787348891807_0.40596464119367526","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@firna/ui","version":"2.1.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@2.1.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"bd3e0fdcd1d9193b17f393542aa1ea49209a6188","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-2.1.0.tgz","fileCount":3266,"integrity":"sha512-UHqpvrMxNgounxv4rPS4mEajWMYAwHKgLIWK4Yng+5npJsYt8rVZV3JxY27SjZpXBpN2T6jzhU2//KV/+JwMjg==","signatures":[{"sig":"MEUCIQDD1Et0qQq0DMWypUM7b4e2LlD9C3J1m9SYqniznqtEFAIgLRy87I7Uba+8pEwtHZv9RpXHUleyxgRQh15iJFt2+LA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8335799},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./chart":{"types":"./dist/node/chart/index.d.ts","import":"./dist/node/chart/index.js","react-native":"./dist/chart/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./timeline":{"types":"./dist/node/timeline/index.d.ts","import":"./dist/node/timeline/index.js","react-native":"./dist/timeline/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./focusRing":{"types":"./dist/node/focusRing.d.ts","import":"./dist/node/focusRing.js","react-native":"./dist/focusRing.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./video-editor":{"types":"./dist/node/video-editor/index.d.ts","import":"./dist/node/video-editor/index.js","react-native":"./dist/video-editor/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"aa9d45654cf235d6eafccb5b839c4056dc93ccf6","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.19.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_2.1.0_1787903412197_0.6967316830562438","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@firna/ui","version":"3.0.0","keywords":["expo","react","react-native","react-native-web","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@3.0.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"cba2e05297b723d37c49ba427c9376df45b525ca","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-3.0.0.tgz","fileCount":3362,"integrity":"sha512-mtNNwRqTFQq4EffCj1bzacs0RovPt0AMrpOgglYUR5+nYvmmxYbD9X+zqaSw2BTluCfKKp3Tthr6LanpssJ5kA==","signatures":[{"sig":"MEUCIQDWhmMiD74+FN9x3A9KXIjQrJuSwRwdKwjlJ7IpDg1u+gIgTWmaK5eAcN7kNY1QSyY97cV7YXZN0h2XTjXJBWZe3mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8576115},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./chart":{"types":"./dist/node/chart/index.d.ts","import":"./dist/node/chart/index.js","react-native":"./dist/chart/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./timeline":{"types":"./dist/node/timeline/index.d.ts","import":"./dist/node/timeline/index.js","react-native":"./dist/timeline/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./focusRing":{"types":"./dist/node/focusRing.d.ts","import":"./dist/node/focusRing.js","react-native":"./dist/focusRing.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./video-editor":{"types":"./dist/node/video-editor/index.d.ts","import":"./dist/node/video-editor/index.js","react-native":"./dist/video-editor/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"81919194638fab155658592759466271f7a5d333","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist && tsc --project tsconfig.build.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run build && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and React Native Web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.20.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","react-native-web":"^0.21.2","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","react-native-gesture-handler":"^2.31.2"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","react-native-web":">=0.21 <0.22","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_3.0.0_1788563714434_0.18433005851778894","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@firna/ui","version":"3.1.0","keywords":["expo","react","react-dom","react-native","ui"],"author":{"name":"Firna"},"license":"MIT","_id":"@firna/ui@3.1.0","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"homepage":"https://github.com/futex-ai/ui#readme","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"ce943cff0aa1c6fc814211eeed2cc5f4a0b3ec03","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-3.1.0.tgz","fileCount":3938,"integrity":"sha512-bTXYsrgGFTl9uliJvkDkyI9bC0w1Pdrykgn7Se5lOnrFp8rJIEyRYEa8YPSr6y8t6mlYqYI62FlJQvBPZjhzkg==","signatures":[{"sig":"MEUCICDlocoNbJ2rtpi+q0aOcOEj3H7KGEdHP4vS+cuvNCijAiEA4v8YU/szGb7aO7sVO4itLnGIZJIKUTnRkT58GCZWNRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9962978},"main":"./dist/node/index.js","type":"module","types":"./dist/node/index.d.ts","exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./chart":{"types":"./dist/node/chart/index.d.ts","import":"./dist/node/chart/index.js","react-native":"./dist/chart/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./timeline":{"types":"./dist/node/timeline/index.d.ts","import":"./dist/node/timeline/index.js","react-native":"./dist/timeline/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./focusRing":{"types":"./dist/node/focusRing.d.ts","import":"./dist/node/focusRing.js","react-native":"./dist/focusRing.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./video-editor":{"types":"./dist/node/video-editor/index.d.ts","import":"./dist/node/video-editor/index.js","react-native":"./dist/video-editor/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"d9095a036a28539c02f542caf4e82d0f7dcf923b","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist .dist-web-types && tsc --project tsconfig.build.json && tsc --project tsconfig.build.web.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist .dist-web-types storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run typecheck:web && npm run build && npm run test:dist && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","test:dist":"node --import tsx --test tests/unit/distDeclarations.test.ts","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","typecheck:web":"tsc --noEmit --project tsconfig.web.json","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and web UI primitives for Firna apps.","directories":{},"_nodeVersion":"24.20.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","lucide-react":"0.562.0","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","@fontsource/inter":"^5.3.0","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","@fontsource/jetbrains-mono":"^5.3.0","@fontsource/noto-sans-math":"^5.3.0","react-native-gesture-handler":"^2.31.2","@fontsource/noto-sans-symbols-2":"^5.3.0"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","lucide-react":">=0.560.0 <1","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"lucide-react":{"optional":true},"react-native":{"optional":true},"react-native-svg":{"optional":true},"lucide-react-native":{"optional":true},"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_3.1.0_1789665354775_0.7850081144914678","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"_id":"@firna/ui@3.1.1","bugs":{"url":"https://github.com/futex-ai/ui/issues"},"dist":{"shasum":"a9ad2b7d69839adbc7de1e2dbb694623317ef8b3","tarball":"https://registry.npmjs.org/@firna/ui/-/ui-3.1.1.tgz","fileCount":3966,"integrity":"sha512-J7UHrisD2LPSm4ZU0BS0pqnnABgwf64KG/7qPl1YniLD5f2IYU/pfjCch3fqWRrtVlCGmkCPU6ivULMEQF3s9Q==","signatures":[{"sig":"MEQCIGXdl7RNRkZDyv9tIx2L1oGEl1gYMBE1TrT2nJkmtMfnAiA4PlHS+jp46gNVT5zhQF+CVDQA9ac3qQ5/qUIfEGA6xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDbQReyH3dD6e6tK7Liaqqd7vqlfhzsBMQb56Zn5zutuQIgJwo7Zj8J80LEnfYB8xFdWXdsOBUD94K3ixIikDHtaUw="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firna%2fui@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9995290},"main":"./dist/node/index.js","name":"@firna/ui","type":"module","types":"./dist/node/index.d.ts","author":{"name":"Firna"},"exports":{".":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.js","react-native":"./dist/index.js"},"./date":{"types":"./dist/node/date/index.d.ts","import":"./dist/node/date/index.js","react-native":"./dist/date/index.js"},"./list":{"types":"./dist/node/list/index.d.ts","import":"./dist/node/list/index.js","react-native":"./dist/list/index.js"},"./badge":{"types":"./dist/node/badge/index.d.ts","import":"./dist/node/badge/index.js","react-native":"./dist/badge/index.js"},"./chart":{"types":"./dist/node/chart/index.d.ts","import":"./dist/node/chart/index.js","react-native":"./dist/chart/index.js"},"./input":{"types":"./dist/node/input/index.d.ts","import":"./dist/node/input/index.js","react-native":"./dist/input/index.js"},"./modal":{"types":"./dist/node/modal/index.d.ts","import":"./dist/node/modal/index.js","react-native":"./dist/modal/index.js"},"./radio":{"types":"./dist/node/radio/index.d.ts","import":"./dist/node/radio/index.js","react-native":"./dist/radio/index.js"},"./sheet":{"types":"./dist/node/sheet/index.d.ts","import":"./dist/node/sheet/index.js","react-native":"./dist/sheet/index.js"},"./table":{"types":"./dist/node/table/index.d.ts","import":"./dist/node/table/index.js","react-native":"./dist/table/index.js"},"./theme":{"types":"./dist/node/theme.d.ts","import":"./dist/node/theme.js","react-native":"./dist/theme.js"},"./toast":{"types":"./dist/node/toast/index.d.ts","import":"./dist/node/toast/index.js","react-native":"./dist/toast/index.js"},"./avatar":{"types":"./dist/node/avatar/index.d.ts","import":"./dist/node/avatar/index.js","react-native":"./dist/avatar/index.js"},"./button":{"types":"./dist/node/button/index.d.ts","import":"./dist/node/button/index.js","react-native":"./dist/button/index.js"},"./kanban":{"types":"./dist/node/kanban/index.d.ts","import":"./dist/node/kanban/index.js","react-native":"./dist/kanban/index.js"},"./loader":{"types":"./dist/node/loader/index.d.ts","import":"./dist/node/loader/index.js","react-native":"./dist/loader/index.js"},"./switch":{"types":"./dist/node/switch/index.d.ts","import":"./dist/node/switch/index.js","react-native":"./dist/switch/index.js"},"./heatmap":{"types":"./dist/node/heatmap/index.d.ts","import":"./dist/node/heatmap/index.js","react-native":"./dist/heatmap/index.js"},"./popover":{"types":"./dist/node/popover/index.d.ts","import":"./dist/node/popover/index.js","react-native":"./dist/popover/index.js"},"./spinner":{"types":"./dist/node/spinner/index.d.ts","import":"./dist/node/spinner/index.js","react-native":"./dist/spinner/index.js"},"./calendar":{"types":"./dist/node/calendar/index.d.ts","import":"./dist/node/calendar/index.js","react-native":"./dist/calendar/index.js"},"./dropdown":{"types":"./dist/node/dropdown/index.d.ts","import":"./dist/node/dropdown/index.js","react-native":"./dist/dropdown/index.js"},"./skeleton":{"types":"./dist/node/skeleton/index.d.ts","import":"./dist/node/skeleton/index.js","react-native":"./dist/skeleton/index.js"},"./timeline":{"types":"./dist/node/timeline/index.d.ts","import":"./dist/node/timeline/index.js","react-native":"./dist/timeline/index.js"},"./workflow":{"types":"./dist/node/workflow/index.d.ts","import":"./dist/node/workflow/index.js","react-native":"./dist/workflow/index.js"},"./data-grid":{"types":"./dist/node/data-grid/index.d.ts","import":"./dist/node/data-grid/index.js","react-native":"./dist/data-grid/index.js"},"./focusRing":{"types":"./dist/node/focusRing.d.ts","import":"./dist/node/focusRing.js","react-native":"./dist/focusRing.js"},"./rich-text":{"types":"./dist/node/rich-text/index.d.ts","import":"./dist/node/rich-text/index.js","react-native":"./dist/rich-text/index.js"},"./segmented":{"types":"./dist/node/segmented/index.d.ts","import":"./dist/node/segmented/index.js","react-native":"./dist/segmented/index.js"},"./status-dot":{"types":"./dist/node/status-dot/index.d.ts","import":"./dist/node/status-dot/index.js","react-native":"./dist/status-dot/index.js"},"./typography":{"types":"./dist/node/typography/index.d.ts","import":"./dist/node/typography/index.js","react-native":"./dist/typography/index.js"},"./drag-select":{"types":"./dist/node/drag-select/index.d.ts","import":"./dist/node/drag-select/index.js","react-native":"./dist/drag-select/index.js"},"./video-editor":{"types":"./dist/node/video-editor/index.d.ts","import":"./dist/node/video-editor/index.js","react-native":"./dist/video-editor/index.js"},"./sortable-list":{"types":"./dist/node/sortable-list/index.d.ts","import":"./dist/node/sortable-list/index.js","react-native":"./dist/sortable-list/index.js"},"./animated-border":{"types":"./dist/node/animated-border/index.d.ts","import":"./dist/node/animated-border/index.js","react-native":"./dist/animated-border/index.js"}},"gitHead":"d7ae7227c0ef3a0e816fba401adcf408dc16b0ee","license":"MIT","private":false,"scripts":{"test":"node --import tsx --test tests/unit/*.test.ts","build":"rm -rf dist .dist-web-types && tsc --project tsconfig.build.json && tsc --project tsconfig.build.web.json && node scripts/prepare-node-esm.mjs","clean":"rm -rf dist .dist-web-types storybook-static playwright-report test-results","format":"prettier --write \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","verify":"npm run format:check && npm run test && npm run typecheck && npm run typecheck:web && npm run build && npm run test:dist && npm run test:package && npm run storybook:build && npm run test:browser","storybook":"storybook dev -p 6006","test:dist":"FIRNA_TEST_DIST=1 node --import tsx --test tests/unit/distDeclarations.test.ts tests/unit/staticFocusRing.test.ts","typecheck":"tsc --noEmit --project tsconfig.json","format:check":"prettier --check \"**/*.{ts,tsx,js,json,md,yml,yaml}\"","test:browser":"playwright test","test:package":"node scripts/package-smoke.mjs","typecheck:web":"tsc --noEmit --project tsconfig.web.json","storybook:build":"storybook build","storybook:native":"npm run build && cd storybook-native && npm start -- --clear"},"version":"3.1.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6137be88-d021-4b7c-a9ed-188bcdedd031"}},"homepage":"https://github.com/futex-ai/ui#readme","keywords":["expo","react","react-dom","react-native","ui"],"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"_npmVersion":"11.7.0","description":"Shared React Native and web UI primitives for Firna apps.","directories":{},"maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"_nodeVersion":"24.21.0","react-native":"./dist/index.js","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"npm@11.7.0","devDependencies":{"tsx":"^4.21.0","vite":"^7.2.7","react":"19.2.3","prettier":"^3.7.4","wrangler":"^4.56.1","react-dom":"19.2.3","storybook":"^10.1.6","typescript":"^6.0.3","@types/node":"^25.0.1","@types/react":"^19.2.17","lucide-react":"0.562.0","react-native":"0.85.3","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","react-native-svg":"^15.15.5","@fontsource/inter":"^5.3.0","lucide-react-native":"^0.562.0","@axe-core/playwright":"^4.11.3","@gorhom/bottom-sheet":"^5.2.14","@vitejs/plugin-react":"^5.1.2","@storybook/addon-a11y":"^10.4.6","@storybook/react-vite":"^10.1.6","react-native-worklets":"0.8.3","react-native-reanimated":"4.3.1","@fontsource/jetbrains-mono":"^5.3.0","@fontsource/noto-sans-math":"^5.3.0","react-native-gesture-handler":"^2.31.2","@fontsource/noto-sans-symbols-2":"^5.3.0"},"peerDependencies":{"react":">=19 <20","react-dom":">=19 <20","lucide-react":">=0.560.0 <1","react-native":">=0.83 <0.86","react-native-svg":">=15 <16","lucide-react-native":">=0.560.0 <1","@gorhom/bottom-sheet":">=5 <6","react-native-reanimated":">=3.16 <5","react-native-gesture-handler":">=2.20 <3"},"peerDependenciesMeta":{"lucide-react":{"optional":true},"react-native":{"optional":true},"react-native-svg":{"optional":true},"lucide-react-native":{"optional":true},"@gorhom/bottom-sheet":{"optional":true},"react-native-reanimated":{"optional":true},"react-native-gesture-handler":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_3.1.1_1790497853283_0.9413016638325344"}}},"time":{"created":"2026-06-15T11:31:23.578Z","modified":"2026-09-27T08:30:53.909Z","0.1.0":"2026-06-15T11:31:23.997Z","0.1.1":"2026-06-15T16:32:09.184Z","0.2.0":"2026-06-16T16:52:39.104Z","0.3.0":"2026-06-18T15:06:29.931Z","0.4.0":"2026-06-19T13:58:09.398Z","0.5.0":"2026-06-21T09:52:19.449Z","0.6.0":"2026-06-21T11:48:38.128Z","0.7.0":"2026-06-22T12:06:26.015Z","0.8.0":"2026-07-01T11:16:42.537Z","0.9.0":"2026-07-09T14:43:30.098Z","0.10.0":"2026-07-10T11:52:35.374Z","0.11.0":"2026-07-12T09:58:17.361Z","0.12.0":"2026-07-18T09:50:44.813Z","0.13.0":"2026-07-19T19:34:14.112Z","0.14.0":"2026-07-20T11:38:38.839Z","0.15.0":"2026-07-20T18:11:11.941Z","1.0.0":"2026-07-20T22:58:06.525Z","1.1.0":"2026-07-22T12:56:20.143Z","1.2.0":"2026-07-27T14:14:25.189Z","1.2.1":"2026-07-28T11:55:12.335Z","1.3.0":"2026-07-31T11:55:50.561Z","1.4.0":"2026-08-03T10:55:34.537Z","1.5.0":"2026-08-03T12:21:26.029Z","1.6.0":"2026-08-03T15:52:48.153Z","1.6.1":"2026-08-04T16:23:59.587Z","1.7.0":"2026-08-05T08:19:51.028Z","1.8.0":"2026-08-06T11:24:06.003Z","1.8.1":"2026-08-10T08:59:20.133Z","1.9.0":"2026-08-10T18:49:04.279Z","2.0.0":"2026-08-21T15:10:25.676Z","2.0.1":"2026-08-21T21:48:11.994Z","2.1.0":"2026-08-28T07:50:12.436Z","3.0.0":"2026-09-04T23:15:14.631Z","3.1.0":"2026-09-17T17:15:54.985Z","3.1.1":"2026-09-27T08:30:53.495Z"},"bugs":{"url":"https://github.com/futex-ai/ui/issues"},"author":{"name":"Firna"},"license":"MIT","homepage":"https://github.com/futex-ai/ui#readme","keywords":["expo","react","react-dom","react-native","ui"],"repository":{"url":"git+https://github.com/futex-ai/ui.git","type":"git"},"description":"Shared React Native and web UI primitives for Firna apps.","maintainers":[{"name":"calum.moore","email":"calum.moore@gmail.com"}],"readme":"# ui\n\nShared UI component library for Firna React Native and web surfaces. The first consumers are the accounting app and the Juno app.\n\n## Key Features\n\n- Shared dropdown menu, selector, combobox, drag-select, segmented control,\n  radio card, switch, spinner, loaders (six indeterminate shapes plus\n  determinate progress bar and ring), button, labelled input/textarea,\n  data table,\n  editable data grid (Airtable/Notion-style),\n  a from-scratch interactive chart family (bar, line, area, sparkline, stat\n  tile, donut, gauge, bullet, funnel, matrix heatmap, scatter, histogram,\n  waterfall, small multiples) on a colourblind-validated palette,\n  cross-platform block rich-text editor with canonical markdown and a\n  collaboration layer (live carets, tracked changes, comment threads),\n  modal, toast provider/controller, avatar, status badge, animated comet-trail\n  border, calendar heatmap, full event-calendar (month/week/day/agenda,\n  recurring events, drag-to-create), branching workflow-builder step-graph\n  primitives, a multi-track editing timeline with pro clip edits, and the\n  video-editor panels that surround it (program monitor, transport, level\n  meter, media bin, property inspector, effects rack, keyframe editor, export\n  dialog).\n- A shared `sm` / `md` / `lg` size scale (`ControlSize`) across the interactive\n  controls — buttons, inputs, dropdown selectors, date fields, segmented\n  controls, and switches.\n- Themeable visual tokens so consumers can use their own brand primary color,\n  with four shipped presets — the accounting default and Juno, each in a light\n  and a dark variant. Every component reads its colors from the tokens, so dark\n  mode is a preset swap rather than a per-component opt-in.\n- A shared, calm focus glow across every control. On web the DOM backend paints\n  it from CSS `:focus-visible`, so server-rendered and static HTML keeps the same\n  keyboard affordance before hydration — or with no JavaScript at all. Native\n  keeps its platform focus behavior. Disable the glow globally with\n  `focusRing: false` or per instance with `disableFocusRing`; both are deliberate\n  opt-outs that restore the browser outline on the control's visible box.\n- Portaled, anchored web date/dropdown/popover overlays with viewport-aware,\n  content-sized selector menus and z-index escape hatches, plus touch-friendly\n  native date sheets.\n- Platform files shared by Expo, React Native, and the library's own DOM\n  backend on web.\n- Focused unit tests, browser interaction tests, and package export checks.\n- Storybook previews for visual review on same-repository non-release PRs.\n- Release-please release PRs and npm trusted publishing for `@firna/ui`.\n\n## User-Facing Interface\n\nThe package name is `@firna/ui`. Public exports are available from:\n\n- `@firna/ui` for all public components and helpers.\n- `@firna/ui/animated-border` for the animated comet-trail border that traces a\n  rounded-rectangle perimeter to highlight an element, in a single color or a\n  two-color brand gradient.\n- `@firna/ui/avatar` for the themed initials avatar (circle or rounded square).\n- `@firna/ui/badge` for the themed status badge pill with tone, variant, and\n  size variants.\n- `@firna/ui/button` for the themed button with tone, size, and block variants,\n  and a `role` that re-points it at another single-activation role (`checkbox`,\n  `menuitem`, `radio`, `switch`, `tab`) with the state that role must carry — so\n  a tab or checkbox keeps the shared focus glow instead of being hand-rolled.\n- `@firna/ui/calendar` for the full event calendar (month, week, day, and agenda\n  views, recurring events, and drag-to-create).\n- `@firna/ui/chart` for the interactive chart family — bar, line, area,\n  sparkline, stat tile, donut, gauge, bullet, funnel, matrix heatmap, scatter,\n  bubble, histogram, waterfall and small multiples — built from this library's\n  own primitives and `react-native-svg`, with no charting dependency. Every\n  chart ships a keyboard-navigable hit layer, a hover/scrub readout and an\n  accessible data-table twin.\n- `@firna/ui/data-grid` for the editable Airtable/Notion-style data grid\n  (cell-range selection, keyboard nav, virtualized infinite scroll, typed\n  editable cells, column menus, and a responsive card stack).\n- `@firna/ui/date` for single-date and date-range fields.\n- `@firna/ui/drag-select` for web drag-selection providers, target hooks, and\n  geometry helpers.\n- `@firna/ui/dropdown` for dropdown menu, selector, combobox, layer helpers, and\n  selector trigger refs for imperative focus after async form hydration.\n- `@firna/ui/heatmap` for the calendar contribution heatmap and its pure layout\n  and color-scale helpers.\n- `@firna/ui/input` for the labelled text input, textarea, and bare input\n  frame.\n- `@firna/ui/list` for the vertical list with between-item separators, optional\n  clickable items, and the `ListItem` row.\n- `@firna/ui/loader` for the loading indicator family: `Loader` with six\n  interchangeable indeterminate shapes (`ring`, `dot-grid`, `dots`, `bars`,\n  `blades`, `pulse`), plus `ProgressBar` and `ProgressRing` for work whose total\n  is known.\n- `@firna/ui/modal` for web modal frame, portal, model, and layer helpers.\n- `@firna/ui/popover` for generic anchored popovers.\n- `@firna/ui/radio` for themed titled radio-option cards.\n- `@firna/ui/rich-text` for the Notion-style block editor with markdown in/out,\n  inline formatting, lists/checklists, native keyboard toolbars, and the\n  collaboration layer (live carets, tracked changes, comment threads) with its\n  `RichTextPresenceBar` and `RichTextCollabRail` surfaces.\n- `@firna/ui/segmented` for themed single-select segmented controls.\n- `@firna/ui/sortable-list` for the drag-and-drop sortable list (pointer +\n  keyboard reordering, an optional start/end grab handle, and vertical or\n  horizontal flow), plus the `SortableGroups` coordinator that lets several\n  lists exchange items — stacked as sections or laid out as a board — reporting\n  each move with its source and destination group.\n- `@firna/ui/spinner` for the themed indeterminate spinning loading indicator.\n- `@firna/ui/switch` for themed binary on/off switches.\n- `@firna/ui/table` for the data table with optional headers and clickable rows.\n- `@firna/ui/theme` for `SharedUiThemeProvider`, default accounting-style\n  tokens, the Juno token preset, the `darkSharedUiTheme` and\n  `junoDarkSharedUiTheme` dark presets, the `SharedUiScheme` type,\n  `createSharedUiTheme(overrides, base)`, and the global `focusRing` switch\n  (`SharedUiThemeProvider theme={{ focusRing: false }}` disables every control's\n  focus glow at once). See [Theming](#theming) for the dark-mode contract.\n- `@firna/ui/focusRing` for `useFocusRing`, `focusRingStyleFor`,\n  `focusRingCssVariablesFor`, and `focusRingDomPropsFor`. Library controls use\n  the hook's CSS marker as the canonical web paint path; `focused` and\n  `focusVisible` remain available for non-painting interaction state. Custom\n  controls include `focusRingVariables` in the painted host's style and spread\n  the marker in the spelling their host understands: `focusRingProps` on a\n  Firna primitive (`View`, `Pressable`, `TextInput`) or React Native element,\n  which write `dataSet` out as `data-*` attributes, or `focusRingDomProps` on\n  a raw DOM element (`<button>`, `<div>`), which React DOM would otherwise\n  leave unmarked. Split controls mark the real focus target the same two ways\n  (`focusTargetProps` / `focusTargetDomProps`); a `descendant` host glows only\n  for that target, so a nested clear or remove button keeps its own browser\n  outline. Existing hydrated controls that conditionally apply\n  `focusRingStyle` keep their inline glow for compatibility; adopting the\n  marker is only required for the glow to survive server/static rendering.\n  `focusRingStyleFor` keeps the explicit inline glow escape hatch for\n  caller-owned local style sheets. Pass `disableFocusRing` to one control, or\n  set the theme's `focusRing: false`, to omit the CSS marker and restore the\n  browser outline (WCAG 2.4.7).\n- `@firna/ui/toast` for the toast provider, the `useToast` hook, the\n  `toastController` method API, and transient notification toasts including\n  card and solid variants with optional custom leading icons.\n- `@firna/ui/workflow` for the branching workflow builder — a step-graph canvas\n  (color-coded nodes, tinted edge labels, forks, legend, add-step) for\n  constructing automation workflows.\n\n## Installation\n\n```bash\nnpm install @firna/ui\n```\n\nAll platform packages are optional peer dependencies; install the set for\nyour target:\n\n- **Web only (Vite, Next.js, any DOM bundler):** `react`, `react-dom`, and\n  `lucide-react` — that is the whole web peer set. No `react-native` and no\n  `react-native-web` install, and no bundler alias is needed: the `import`\n  condition resolves to `dist/node`, where every primitive renders through the\n  library's own DOM backend. That holds for types too — the web build's\n  declarations are self-contained, so even a strict TypeScript consumer\n  installs nothing extra.\n- **Expo / React Native (iOS, Android, and Expo web):** `react`, `react-dom`,\n  `react-native`, `react-native-svg`, `lucide-react-native`, and\n  `lucide-react`. Metro's `react-native` condition resolves `dist/**`, where\n  platform files pick native or web implementations per file. An Expo web app\n  keeps whatever `react-native-web` its own React Native code needs; the\n  library's `.web` files resolve to the DOM backend there too and never reach\n  for it.\n- **Optional on native:** `@gorhom/bottom-sheet`, `react-native-gesture-handler`,\n  and `react-native-reanimated` power the native bottom sheet.\n\nEvery component reaches the platform through `src/primitives`, a small set of\nmodules with a native file and a `.web` sibling: React Native primitives\n(`react-native` on native; the library's own DOM backend on web), SVG\n(`react-native-svg` on\nnative, DOM `<svg>` on web), and icons (`lucide-react-native` on native,\n`lucide-react` on web). Icon props accept `IconComponent`, a type both Lucide\npackages' icons satisfy, so a consumer passes whichever matches their\nplatform.\n\n## Theming\n\nFour presets ship, all built from the same semantic token set:\n`defaultSharedUiTheme` and `junoSharedUiTheme` (light), `darkSharedUiTheme` and\n`junoDarkSharedUiTheme` (dark). Pass one to `SharedUiThemeProvider`, or brand it\nfirst with `createSharedUiTheme(overrides, base)` — the second argument picks\nthe preset to extend, so a dark brand tint stays dark:\n\n```tsx\nconst brandDark = createSharedUiTheme(\n  { colors: { primary: \"#8fb3ff\" } },\n  darkSharedUiTheme,\n);\n```\n\nTwo token-level rules make dark mode work without per-component branching:\n\n- **`colors.onSolid`** is the text/icon color on solid accent fills (the solid\n  badge, the primary button, the dropdown's active row, the calendar \"today\"\n  disc, the switch knob at the on-position…). It is white in the light themes\n  and the near-black page ink-well in the dark ones.\n- **Solid fills invert.** In the dark presets the `*Deep` tokens become _light_\n  accents and `onSolid` darkens, so every existing token relationship\n  (deep-on-soft, deep-as-fill, the heatmap ramp's ordering) keeps working\n  unchanged. Every documented WCAG 2.1 — 1.4.3/1.4.11 pair is pinned by unit\n  tests across all four presets, and every dark Storybook story is swept by axe.\n\n`theme.scheme` (`\"light\" | \"dark\"`) is available for the rare physical-metaphor\ncase, but components should read colors from tokens rather than branch on it.\n\n### Web focus CSS and server rendering\n\nOn web, `SharedUiThemeProvider` adds a boxless (`display: contents`) DOM boundary\nthat serializes the active theme's focus variables around its children:\n\n- `--firna-focus-ring-color` — `colors.primary` composed at the standard `0.35`\n  alpha, for example `rgba(79, 120, 100, 0.35)` in the default theme.\n- `--firna-focus-ring-width` — the standard `4px` halo width.\n\nThat boundary is a real `<div>`, so mount the provider around block content —\nan app shell, a page, a panel. Do not mount it directly inside a table row, a\nlist, a paragraph, or SVG: a `div` is invalid HTML there, and server-rendered\noutput would fail to hydrate. The library never nests the provider inside its\nown components.\n\nControls repeat those variables on their marked host when needed, so a\nper-control `color`, `width`, or `alpha` passed to `useFocusRing` wins locally.\nThe DOM backend's attribute-based `:focus-visible` rules read the variables;\ninset hosts carry a second attribute, and forced-colors mode replaces the shadow\nwith a `2px solid Highlight` outline. The rules do not animate. A `descendant`\nhost (an input frame, a chip multi-select, the wheel date trigger) paints only\nwhile its marked focus target has visible focus; any other focusable element\ninside it, such as a clear or chip-remove button, keeps the browser outline so\nthe focused action stays distinguishable from the field.\n\nA hand-rolled control gets the same treatment from the hook. On a Firna\nprimitive spread `focusRingProps`; on a raw DOM element spread\n`focusRingDomProps`, the same markers spelled as literal `data-*` attributes:\n\n```tsx\nimport { useFocusRing } from \"@firna/ui/focusRing\";\n\nfunction Swatch({ color }: { color: string }) {\n  const focus = useFocusRing();\n  return (\n    <button\n      {...focus.focusRingDomProps}\n      onBlur={focus.onBlur}\n      onFocus={focus.onFocus}\n      style={{ backgroundColor: color, ...focus.focusRingVariables }}\n      type=\"button\"\n    />\n  );\n}\n```\n\nFor a frame that paints while an inner element owns focus, pass\n`target: \"descendant\"`, spread `focusRingDomProps` on the frame and\n`focusTargetDomProps` on the inner element. The \"Raw DOM control\" story under\nFocus ring/Examples renders both patterns.\n\nTwo rules apply to raw DOM hosts that the primitives handle for you:\n\n- **The stylesheet.** `View`, `Text`, `TextInput`, and `SharedUiThemeProvider`\n  each inject `domBackendCss` once per document on the client, so a page whose\n  only Firna code is the provider plus raw DOM controls still paints the glow.\n  The \"Raw DOM only page\" story renders exactly that. The injection is a client\n  effect: static and server-rendered markup must still emit `domBackendCss` in\n  `<head>` (next section).\n- **A resting shadow.** The glow is a `box-shadow`, and an inline `box-shadow`\n  on the host outranks the stylesheet, so the glow never paints and the host\n  loses its focus indicator. `View` rewrites an inline `boxShadow` into\n  `--firna-focus-ring-base-shadow` automatically; a raw host must set that\n  variable itself instead of `box-shadow`. The stylesheet paints the base\n  shadow at rest and composes it behind the glow on focus:\n\n```tsx\n<button\n  {...focus.focusRingDomProps}\n  style={\n    {\n      ...focus.focusRingVariables,\n      \"--firna-focus-ring-base-shadow\": \"0 1px 2px rgba(0, 0, 0, 0.2)\",\n    } as CSSProperties\n  }\n  type=\"button\"\n/>\n```\n\nServer-rendered and static pages must emit `domBackendCss` in `<head>` before\ntheir own stylesheets. Emitting the variables there as a `:root` fallback makes\nthe first paint complete even outside a provider boundary; the provider also\nserializes them inline, so `renderToStaticMarkup` output remains self-contained:\n\n```tsx\nimport {\n  defaultSharedUiTheme,\n  domBackendCss,\n  focusRingCssVariablesFor,\n} from \"@firna/ui\";\n\nconst focusVariables = focusRingCssVariablesFor(\n  defaultSharedUiTheme.colors.primary,\n);\nconst focusVariableCss = `:root{${Object.entries(focusVariables)\n  .map(([name, value]) => `${name}:${value}`)\n  .join(\";\")}}`;\n\n<head>\n  <style>{`${domBackendCss}\\n${focusVariableCss}`}</style>\n  {/* Consumer stylesheets come after this style. */}\n</head>;\n```\n\nLater consumer rules can override the focus treatment at equal specificity.\n`focusRing: false` is not required for static rendering; it is now purely an\nopt-out for consumers that want the browser default or supply their own focus\ntreatment.\n\n### Chart colors\n\n`theme.charts` carries the data-visualization scales used by `@firna/ui/chart`,\neach encoding exactly one job: `series` (identity — 8 slots, assigned in order\nand never cycled), `sequential` (magnitude), `ordinal` (ordered marks),\n`diverging` (polarity, with a neutral grey midpoint) and `status` (reserved\nstate, never handed out as a series color). The chart furniture — `grid`,\n`axis`, `label`, `surface`, `deemphasis` — derives from the theme's own\nneutrals, so all four presets stay in sync with nothing maintained by hand.\n\n`createSharedUiTheme` resolves `charts` from `scheme` and `colors`, so a theme\nbuilt through it never supplies one. Values you set explicitly are carried\nforward when that theme is extended.\n\n**`scheme` and `colors` must agree.** `createSharedUiTheme({ scheme: \"dark\" })`\nalone yields a dark-schemed theme still wearing the _light_ palette — the dark\nseries steps then paint on a white surface and several drop below their\ncontrast floor. Extend a dark preset instead:\n`createSharedUiTheme(overrides, darkSharedUiTheme)`. Before charts, `scheme`\nonly affected a few physical-metaphor sites; it now selects whole color scales,\nso the mismatch matters much more than it used to.\n\nThe slot **order** is the colorblind-safety mechanism, not a cosmetic choice —\nit was picked by enumerating all 40,320 orderings and keeping only those that\nclear the gates on every shipped surface. Re-order it and you must re-validate:\n\n```sh\nnode scripts/validate-chart-palette.mjs           # report the shipped palette\nnode scripts/validate-chart-palette.mjs --derive  # re-run the enumeration\n```\n\n`tests/unit/chartPalette.test.ts` pins every measured number, so a token edit\nthat regresses the palette fails the suite rather than shipping quietly.\n\nThe library does **not** detect the OS setting — the provider stays free of a\n`react-native` import so it can be loaded by the node test runner and the\npackage-smoke stubs. Consumers own that wiring:\n\n```tsx\nimport { useColorScheme } from \"react-native\";\nimport {\n  darkSharedUiTheme,\n  defaultSharedUiTheme,\n  SharedUiThemeProvider,\n} from \"@firna/ui/theme\";\n\nfunction App() {\n  const scheme = useColorScheme();\n  return (\n    <SharedUiThemeProvider\n      theme={scheme === \"dark\" ? darkSharedUiTheme : defaultSharedUiTheme}\n    >\n      {/* … */}\n    </SharedUiThemeProvider>\n  );\n}\n```\n\n## Developer Get Started\n\n```bash\nnpm ci\nnpm test\nnpm run typecheck\nnpm run typecheck:web\nnpm run build\nnpm run test:dist\nnpm run test:package\nnpm run storybook\nnpm run storybook:build\nnpm run test:browser\n```\n\n`npm run typecheck` resolves the native files of the platform seam;\n`npm run typecheck:web` re-runs the same program against the `.web` siblings\n(`tsconfig.web.json` sets `moduleSuffixes`), which is the resolution every web\nconsumer and the emitted declarations use. Both are part of `npm run verify`.\n\n`npm run test:dist` re-runs the declaration guard in\n`tests/unit/distDeclarations.test.ts` against build output. `npm test` includes\nit too, but it skips there on a clean checkout because `dist` does not exist\nyet, so `npm run verify` runs it again right after `npm run build` — that is\nthe run that actually proves `dist/node` names no `react-native`.\n\nRun the full JavaScript verification suite with:\n\n```bash\ncargo xtask check\n```\n\nRun the same read-only AI review wrapper used by the accounting repo with:\n\n```bash\ncargo xtask review\n```\n\nBrowser interaction tests start Storybook automatically through Playwright.\nStorybook is built to `storybook-static`. `npm run test:package` builds a\npacked tarball, installs it into temporary consumers, imports every public\npackage subpath with Node's native ESM resolver, typechecks those subpaths with\nTypeScript's NodeNext resolver, and then verifies the same subpaths through a\nVite build.\n\nThe axe accessibility gate discovers every Storybook story at runtime and\nsplits the sorted story list into four deterministic shards. Playwright runs\nthose shards across its workers so the complete sweep does not depend on one\nlong-running test. `UPDATE_A11Y_BASELINE=1 npm run test:browser -- a11y.spec.ts`\nuses one serial sweep instead, ensuring `axe-baseline.json` has a single writer.\n\nThe story snapshot sweep (`tests/browser/snapshots.spec.ts`) is the visual and\nARIA regression gate. It discovers the same story list at runtime, renders every\nstory alone in a fresh 900x600 context (`deviceScaleFactor: 1`, reduced motion,\nforced light scheme, `en-US`, UTC), and pins two baselines per story: a\nfull-viewport PNG and an ARIA snapshot of the rendered document. It runs in four\nshards like the axe sweep. Re-record after an intentional visual change with\neither of:\n\n```bash\nnpx playwright test snapshots --update-snapshots   # four shards, faster\nSNAPSHOT_UPDATE=1 npx playwright test snapshots    # one serial sweep\n```\n\nBaselines live in `tests/browser/snapshots.spec.ts-snapshots/` as\n`<story-id>-linux.png` and `<story-id>.aria.yml`. **The screenshots are\nLinux-only.** CI and the development VM both run Linux; macOS rasterizes text\ndifferently, so a macOS checkout will see whole-suite pixel diffs and must never\nre-record them. ARIA snapshots carry no platform suffix, because an\naccessibility tree does not depend on the rasterizer. A newly added story has no\nbaseline, and CI runs Playwright in its default `missing` mode, which writes the\nfile and then fails; record the two new files on Linux with the same command and\ncommit them alongside the story.\n\nSo that every Linux machine rasterizes the same glyphs, Storybook bundles its\nown fonts through `.storybook/fonts.ts`: Inter for `theme.fonts.sans`, JetBrains\nMono registered as `Menlo` for `theme.fonts.mono`, the same Inter files\nregistered as `Segoe UI` for the system stack the primitives give text a\ncomponent leaves unstyled, and two Noto subsets as in-family fallbacks for the arrows,\nmaths relations and symbols (⌘ ★ ✓ ✕ braille) none of those faces carry. These\nare Storybook devDependencies only — the published package ships no fonts and\nconsumers are unaffected.\n\nStorybook's prop docgen is switched off (`typescript: { reactDocgen: false }`).\nIts importer resolves module specifiers without the `.web` preference, so it\nfollows every story's `src/primitives` import to the native file and into\n`react-native`'s Flow source, which it cannot parse; it only survives by\nrewriting that path to `react-native-web/dist/index.js` when that package is\ninstalled. Nothing here reads docgen output — no story declares `args` or\n`argTypes`, there is no autodocs tag or `.mdx` file, and both suites render\n`iframe.html` — so the option is off and `react-native-web` is not installed at\nall. `.storybook/main.ts` carries the note.\n\nStories that cannot be pinned — a `requestAnimationFrame` loop that ignores\nreduced motion, or an accessibility tree that is legitimately empty — are listed\nwith a one-line reason in `tests/browser/snapshotOptOuts.ts`, which is the only\nplace an opt-out may be declared.\n\nPlaywright uses `STORYBOOK_PORT` when set, then Conductor's workspace-specific\n`CONDUCTOR_PORT`, and otherwise port `6006`. This lets browser checks run safely\nalongside previews from parallel workspaces.\n\nThe package export map intentionally separates runtime targets:\n\n- The standard `import` condition points at `dist/node/**`, where relative ESM\n  specifiers include explicit `.js` files and web platform files are selected\n  when they exist. Because the platform seam's `.web` files delegate to the\n  library's own DOM backend, `lucide-react`, and DOM SVG, this tree never\n  imports `react-native`, `react-native-web`, `react-native-svg`, or\n  `lucide-react-native` at runtime — `react-native-web` is not a peer\n  dependency at all, and `npm run test:package` proves the packed build bundles\n  with only `react`, `react-dom` and `lucide-react` installed.\n- Type declarations also point at `dist/node/**`, where relative declaration\n  specifiers use NodeNext-compatible `.js` paths. They are emitted by a second,\n  web-resolution `tsc` pass (`tsconfig.build.web.json`) and typed from the\n  seam's own vendored declarations in `src/primitives/types`, so nothing under\n  `dist/node` mentions `react-native`. The build drops every native module a\n  `.web` sibling shadows from that tree for the same reason.\n- The `react-native` condition points at `dist/**`, preserving extensionless\n  specifiers so Metro and React Native platform resolution can choose native or\n  web files.\n\n## Package Releases\n\n- Release-please opens and updates the release PR for `@firna/ui` from\n  Conventional Commits.\n- The release PR updates `CHANGELOG.md`, `package.json`, and\n  `package-lock.json` through release-please's `node` release type.\n- When release-please creates or updates a release PR, the release workflow\n  checks out that generated PR branch, runs `npm run format`, and pushes a\n  `chore: format release PR` commit only if the generated files need Prettier\n  cleanup.\n- Merging the release PR lets release-please create the `vX.Y.Z` tag and GitHub\n  release. Ordinary non-release pushes to `main` only update the release PR.\n- npm publishing runs in the same `.github/workflows/release-plz.yml` invocation\n  that creates the GitHub release, using npm trusted publishing. The npm package\n  must configure this repository and `release-plz.yml` as the\n  trusted publisher, with allowed action `npm publish`.\n- The workflow file keeps the historical `release-plz.yml` filename because npm\n  trusted publishing validates the workflow filename configured on npmjs.com.\n  The workflow implementation itself uses release-please.\n- The workflow falls back to `GITHUB_TOKEN` for release-please, but a\n  repository secret named `RELEASE_PLEASE_TOKEN` can be added if release PRs\n  need to trigger normal PR checks.\n- Before publishing, the release workflow installs dependencies, installs the\n  Playwright browser, verifies the release tag matches `package.json`, runs\n  `cargo xtask check`, and skips publishing if the version already exists on\n  npm.\n- If publish fails after the GitHub release was created, manually dispatch the\n  release workflow with `publish_ref` set to the existing `vX.Y.Z` tag. The\n  retry path checks out that tag and runs the same verification and publish\n  steps.\n- Scoped npm packages default to private, so `publishConfig.access` is set to\n  `public`.\n\n## Storybook Deployments\n\n- Main branch Storybook deploys to Cloudflare Pages project\n  `futex-ui-storybook`.\n- Main URL: `https://futex-ui-storybook.pages.dev`.\n- Same-repository non-release PR previews deploy to Cloudflare branch\n  `pr-<number>`.\n- PR preview URL shape:\n  `https://pr-<number>.futex-ui-storybook.pages.dev`.\n- PR previews are posted through a sticky comment marked\n  `<!-- futex-ui-storybook-preview -->`.\n- Release Please PRs are skipped by the Storybook preview deploy job; their\n  component changes were already previewed in the source PRs.\n- Closing a same-repository PR marks the sticky comment inactive and attempts\n  to delete aliased preview deployments for that PR branch; if Cloudflare\n  cleanup cannot complete safely, the comment reports the retained reason.\n- Storybook examples are grouped under one top-level folder per family:\n  `Avatar/Examples`, `Badge/Examples`, `Button/Examples`, `Calendar/Examples`,\n  `Date/Examples`,\n  `Drag Select/Examples`, `Dropdown/Examples`, `Heatmap/Examples`,\n  `Input/Examples`, `Kanban/Examples`, `List/Examples`, `Loader/Examples`,\n  `Modal/Examples`,\n  `Popover/Examples`,\n  `Radio/Examples`, `RichText/Examples`, `RichText/Collaboration`,\n  `Segmented/Examples`, `SortableList/Examples`, `Spinner/Examples`,\n  `Status dot/Examples`,\n  `Switch/Examples`, `Table/Examples`, `Theme/Examples`, `Timeline/Examples`,\n  `Toast/Examples`, and `Video editor/Examples` (whose `Full editor` story\n  assembles the whole family into a working editor, in light, dark, and\n  compact).\n- Required repository variable: `CLOUDFLARE_ACCOUNT_ID`.\n- Required repository secret: `CLOUDFLARE_PAGES_API_TOKEN` or\n  `CLOUDFLARE_API_TOKEN`.\n\n## Key Code Jumping Points\n\n- Platform seam (React Native, SVG, icons): [src/primitives](src/primitives)\n- Shared theme boundary: [src/theme.tsx](src/theme.tsx)\n- Animated border component:\n  [src/animated-border/README.md](src/animated-border/README.md)\n- Avatar component: [src/avatar/README.md](src/avatar/README.md)\n- Badge component: [src/badge/README.md](src/badge/README.md)\n- Shared control-size scale: [src/controlSize.ts](src/controlSize.ts)\n- Shared focus-glow primitive: [src/focusRing.ts](src/focusRing.ts), its\n  marker spellings in [src/focusRingHost.ts](src/focusRingHost.ts), and the\n  CSS rules in [src/primitives/dom/css.ts](src/primitives/dom/css.ts)\n- Button component: [src/button/README.md](src/button/README.md)\n- Calendar component: [src/calendar/README.md](src/calendar/README.md)\n- Input and textarea components: [src/input/README.md](src/input/README.md)\n- Kanban component: [src/kanban/README.md](src/kanban/README.md)\n- List component: [src/list/README.md](src/list/README.md)\n- Loader components: [src/loader/README.md](src/loader/README.md)\n- SortableList component: [src/sortable-list/README.md](src/sortable-list/README.md)\n- Dropdown components: [src/dropdown/README.md](src/dropdown/README.md)\n- Drag-select components:\n  [src/drag-select/README.md](src/drag-select/README.md)\n- Heatmap component: [src/heatmap/README.md](src/heatmap/README.md)\n- Modal components: [src/modal/README.md](src/modal/README.md)\n- Radio card component: [src/radio/README.md](src/radio/README.md)\n- Rich-text editor: [src/rich-text/README.md](src/rich-text/README.md)\n- Segmented control component:\n  [src/segmented/README.md](src/segmented/README.md)\n- Spinner component: [src/spinner/README.md](src/spinner/README.md)\n- Status dot component: [src/status-dot/README.md](src/status-dot/README.md)\n- Switch component: [src/switch/README.md](src/switch/README.md)\n- Table component: [src/table/README.md](src/table/README.md)\n- Timeline component: [src/timeline/README.md](src/timeline/README.md)\n- Toast component: [src/toast/README.md](src/toast/README.md)\n- Video-editor panels: [src/video-editor/README.md](src/video-editor/README.md)\n- Workflow builder component: [src/workflow/README.md](src/workflow/README.md)\n- Browser tests: [tests/browser/storybook.spec.ts](tests/browser/storybook.spec.ts)\n- Story visual/ARIA snapshot sweep:\n  [tests/browser/snapshots.spec.ts](tests/browser/snapshots.spec.ts)\n- Repository automation: [xtask/README.md](xtask/README.md)\n- Shared component protocol:\n  [docs/protocol/shared-ui-components.md](docs/protocol/shared-ui-components.md)\n- Rich-text collaboration protocol:\n  [docs/protocol/rich-text-collaboration.md](docs/protocol/rich-text-collaboration.md)\n- Consumer migration handoff: [docs/consumer-migration.md](docs/consumer-migration.md)\n- Active and completed implementation plans: [plans/README.md](plans/README.md)\n\n## Related Repositories\n\n- Accounting consumer/source components:\n  `/Users/calummoore/projects/futex/accounting`\n- Juno consumer:\n  `/Users/calummoore/projects/futex/juno`\n","readmeFilename":"README.md"}