{"_id":"@emblamedical/tokens","_rev":"9-f3b743389370e04662daa0c23bc7fdc7","name":"@emblamedical/tokens","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.3":{"name":"@emblamedical/tokens","version":"0.1.3","keywords":["tokens","design-tokens","semantic-tokens","theming"],"author":{"name":"karljohann","email":"karljohann@hotmail.com"},"license":"MIT","_id":"@emblamedical/tokens@0.1.3","maintainers":[{"name":"embladigital","email":"ossurdigital@gmail.com"}],"homepage":"https://github.com/ossurdigital/ossur-packages#readme","bugs":{"url":"https://github.com/ossurdigital/ossur-packages/issues"},"dist":{"shasum":"9cab393054e679fed8f7cf34b9eb0f495b58251f","tarball":"https://registry.npmjs.org/@emblamedical/tokens/-/tokens-0.1.3.tgz","fileCount":41,"integrity":"sha512-6FpAUAiE/SiLqOCbuT6bPCAL/ijjcRkVw/Oy5IZUmkhpOzOOlu80dsnAvUYFs+WZvno+TCHvH0KY8+2c6SUG+w==","signatures":[{"sig":"MEUCIQDXsKuf9gVKUwfsiChnkhUa1e24LV/EGrj1UjSywqh7igIgUe45B50qDJ4YiS3e9mtYSoLUQZxOUh+R0s4NAA82/qQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210373},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e98a76ff4a5045a8c900999e4a644a93068d6fa4","scripts":{"test":"node ./__tests__/@emblamedical/tokens.test.js","build":"tsc","prepublishOnly":"yarn build"},"_npmUser":{"name":"embladigital","email":"ossurdigital@gmail.com"},"repository":{"url":"git+https://github.com/ossurdigital/ossur-packages.git","type":"git"},"_npmVersion":"11.3.0","description":"Semantic design tokens for Embla Medical projects","directories":{},"_nodeVersion":"24.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^4.9.5"},"_npmOperationalInternal":{"tmp":"tmp/tokens_0.1.3_1764366031251_0.28038280622565126","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@emblamedical/tokens","version":"0.2.0","keywords":["tokens","design-tokens","semantic-tokens","theming"],"author":{"name":"karljohann","email":"karljohann@hotmail.com"},"license":"MIT","_id":"@emblamedical/tokens@0.2.0","maintainers":[{"name":"embladigital","email":"ossurdigital@gmail.com"},{"name":"karljohann","email":"karljohann@gmail.com"}],"homepage":"https://github.com/ossurdigital/ossur-packages#readme","bugs":{"url":"https://github.com/ossurdigital/ossur-packages/issues"},"dist":{"shasum":"f40b3c42e898239afceee2b686746a94b333ea2c","tarball":"https://registry.npmjs.org/@emblamedical/tokens/-/tokens-0.2.0.tgz","fileCount":23,"integrity":"sha512-OKtUdYJBM0+9fWDKOJWaOg9N2hfwMt/0pw/VbrP9ZNpaJTJSCpg7RRro78z4bGUDjOmDRhukJK7DnIHXxnj8jQ==","signatures":[{"sig":"MEQCIGmISzlH66wgQY8R6Nk0LcJ+hzYKpoGTdXvUsq+n2AH3AiA8DLpafRVLgc0pj/F2KArciwM4AvZNB78bPCXknnLqkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217117},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2ab7132f62d77964eb47b19d1274baea811e7b76","scripts":{"test":"node ./__tests__/@emblamedical/tokens.test.js","build":"tsc","prepublishOnly":"yarn build"},"_npmUser":{"name":"embladigital","email":"ossurdigital@gmail.com"},"repository":{"url":"git+https://github.com/ossurdigital/ossur-packages.git","type":"git"},"_npmVersion":"11.3.0","description":"Semantic design tokens for Embla Medical projects","directories":{},"_nodeVersion":"24.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^4.9.5"},"_npmOperationalInternal":{"tmp":"tmp/tokens_0.2.0_1781601977701_0.9112325232408749","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@emblamedical/tokens","version":"0.3.0","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"license":"MIT","description":"Semantic design tokens for Embla Medical projects","keywords":["tokens","design-tokens","semantic-tokens","theming"],"author":{"name":"karljohann","email":"karljohann@hotmail.com"},"repository":{"type":"git","url":"git+https://github.com/ossurdigital/ossur-packages.git"},"scripts":{"build":"tsc","prepublishOnly":"yarn build","test":"node ./__tests__/@emblamedical/tokens.test.js"},"devDependencies":{"typescript":"^4.9.5"},"bugs":{"url":"https://github.com/ossurdigital/ossur-packages/issues"},"homepage":"https://github.com/ossurdigital/ossur-packages#readme","_id":"@emblamedical/tokens@0.3.0","gitHead":"2ab7132f62d77964eb47b19d1274baea811e7b76","_nodeVersion":"24.1.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-14M4wLOD/KYAMD0cxcYaTWQFtmplFMTuwP1dYxebJp2POXr8KsgpFb8k1QT3VU+I9Oq9xrSSN85pWlABszCO/w==","shasum":"950d9fe62507b3ced438b865c6ff80cd4631ebe3","tarball":"https://registry.npmjs.org/@emblamedical/tokens/-/tokens-0.3.0.tgz","fileCount":24,"unpackedSize":174918,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID6vgUD/QmzVFjNVhD9vE6tpo5k7+7nREEyBUiALZmSpAiEAmDPcaKfMATIaUEvDISsGOPnbwmpOuaDHPBWHAerPByk="}]},"_npmUser":{"name":"embladigital","email":"ossurdigital@gmail.com"},"directories":{},"maintainers":[{"name":"embladigital","email":"ossurdigital@gmail.com"},{"name":"karljohann","email":"karljohann@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tokens_0.3.0_1781782326187_0.5429101614618701"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-28T21:40:31.189Z","modified":"2026-06-18T11:32:06.545Z","0.1.0":"2025-11-28T14:47:32.986Z","0.1.1":"2025-11-28T15:22:03.494Z","0.1.2":"2025-11-28T18:23:28.371Z","0.1.3":"2025-11-28T21:40:31.436Z","0.2.0":"2026-06-16T09:26:17.843Z","0.3.0":"2026-06-18T11:32:06.344Z"},"bugs":{"url":"https://github.com/ossurdigital/ossur-packages/issues"},"author":{"name":"karljohann","email":"karljohann@hotmail.com"},"license":"MIT","homepage":"https://github.com/ossurdigital/ossur-packages#readme","keywords":["tokens","design-tokens","semantic-tokens","theming"],"repository":{"type":"git","url":"git+https://github.com/ossurdigital/ossur-packages.git"},"description":"Semantic design tokens for Embla Medical projects","maintainers":[{"name":"embladigital","email":"ossurdigital@gmail.com"},{"name":"karljohann","email":"karljohann@gmail.com"}],"readme":"# `@emblamedical/tokens`\n\nRaw design token JSON and TypeScript types for Össur, Bionics, Embla, and Formotion brands.\n\n## What this package provides\n\n- **Raw token JSON**: core and semantic token files for all brands, exported as the `tokens` object\n- **TypeScript types**: `SemanticTokens` namespace describing the resolved theme shape\n\nBrand-specific theme processing (merging shared + brand tokens, resolving references, building the styled-components proxy) lives in the consuming codebase, not in this package.\n\n## Installation\n\n```bash\nyarn add @emblamedical/tokens\n```\n\n## Exported API\n\n```typescript\nimport { tokens } from '@emblamedical/tokens';\nimport type { SemanticTokens } from '@emblamedical/tokens';\n```\n\n### `tokens`\n\n```typescript\ntokens.core         // Record<'all' | 'ossur' | 'bionic' | 'embla' | 'formotion', TokenFile>\ntokens.semantic     // Record<'all' | 'ossur' | 'bionic' | 'embla' | 'formotion', TokenFile>\ntokens.spacings     // Record<'desktop' | 'mobile' | 'tablet', TokenFile>\ntokens.typography   // Record<'desktop' | 'mobile' | 'tablet', TokenFile>\n```\n\n`core.all` and `semantic.all` hold shared tokens common across all brands. Each brand key holds only that brand's additions and overrides. Consumer code merges them using `core.all` + `core.<brand>` and `semantic.all` + `semantic.<brand>`.\n\n### `SemanticTokens` types\n\nThe namespace exports structural types for raw JSON (`TokenObject`, `TokenNode`, `TokenFile`) and precise types for the fully-resolved per-brand theme (`ThemeTokens`, `CoreTokens`, `SemanticBrandTokens`, `TypographyTokens`, `SpacingTokens`, and their nested interfaces).\n\n## Token structure\n\n### Core tokens (`core-all.json` + `core-<brand>.json`)\n\n| Category | Keys |\n|---|---|\n| `color.global` | `white`, `transparent`, `black` |\n| `color.{success,error,alert,info}` | `100`–`900` scale |\n| `color.{neutrals,primary,secondary}` | `100`–`900` scale (brand-specific) |\n| `font_family` | `primary`, `secondary` |\n| `font_size`, `font_weight`, `line_height`, `letter_spacing` | numeric scale keys |\n| `border_radius`, `border_width`, `opacity`, `sizing`, `spacing` | numeric scale keys |\n| `text_decoration`, `text_case`, `paragraph_spacing` | named keys |\n\n### Semantic tokens (`semantic-all.json` + `semantic-<brand>.json`)\n\n| Category | Structure |\n|---|---|\n| `color.text`, `color.icon` | `base.{default,interactive,soft}`, `accent.{default,interactive,stronger}`, `inverse`, `disabled` |\n| `color.surface` | `base.{default,interactive,strong,stronger}`, `accent.{default,interactive}`, `complementary.{default,interactive,soft,softer}`, `inverse`, `disabled`, `transparent` |\n| `color.border` | `base.{default,interactive,soft,softer,softest}`, `accent.{default,interactive,stronger}`, `focus.{default,inverse}`, `inverse`, `disabled` |\n| `color.overlay` | `base.{default,hover,pressed,soft,strong}`, `inverse.{default,hover,pressed,soft}` |\n| `color.supportive_feedback` | `{success,error,alert,info}.{default,soft,softer,stronger}` |\n| `color.background` | `base.{default,strong}` |\n| `border_radius` | `none`, `xsmall`–`2xlarge`, `full` |\n| `opacity` | `base.{15,30,60,none,full}`, `state.{hover,pressed}` |\n| `border_width` | `none`, `default`, `strong`, `focus` |\n| `sizing` | `base.{none,3xsmall–7xlarge}`, `icon.{xsmall–xlarge}` |\n| `spacing.general` | `none`, `3xsmall`–`7xlarge` |\n\n### Spacing tokens (`spacings-<device>.json`)\n\n`semantic.spacing.sections.padding.{small,medium,large,xsmall}`, `sections.in_between`, `grids.{gutter_width,spacing_width,columns}`\n\n### Typography tokens (`typography-<device>.json`)\n\n`semantic.typography.titles.{display,display_bold,title_00–title_06,*_bold}` and `semantic.typography.body.{large,large_bold,large_link,default,default_bold,default_link,small,small_bold,small_link,caption,caption_bold}`\n\nEach leaf has composite value: `fontFamily`, `fontWeight`, `fontSize`, `lineHeight`, `letterSpacing`, `textDecoration`, `textCase` — all resolved as reference strings.\n","readmeFilename":"README.md"}