{"_id":"@dankupfer/dn-tokens","_rev":"6-27fab18b96d906ae008a0fbae037a3b0","name":"@dankupfer/dn-tokens","dist-tags":{"latest":"1.1.4"},"versions":{"1.0.0":{"name":"@dankupfer/dn-tokens","version":"1.0.0","keywords":["experimental","prototype","development-only","design-tokens"],"author":{"name":"Your Name"},"license":"MIT","_id":"@dankupfer/dn-tokens@1.0.0","maintainers":[{"name":"dankupfer","email":"daniel@kupfer.co"}],"homepage":"https://github.com/your-username/dn-tokens#readme","bugs":{"url":"https://github.com/your-username/dn-tokens/issues"},"dist":{"shasum":"92543f91fdbd97398a9b8b3b084e9e7a1f86a688","tarball":"https://registry.npmjs.org/@dankupfer/dn-tokens/-/dn-tokens-1.0.0.tgz","fileCount":22,"integrity":"sha512-yfPwPLSE240KhcPbDTGy4JH3LtBFwDTkmNBBGd0hVO2qWfrGmQ6CfpkSXMD+4Y3d+arM8aJfWn4tUCp/6M5vew==","signatures":[{"sig":"MEUCIC48kteFA5gA8DHTQAQJ5eWDXyxx832+tnw5YQSZpbpMAiEA+2ON6qLfEbTz93WVQOmFUze84ARaIG0HhwTTCG2vNoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711969},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b875aaa771dd5bb6a330f801a6f58e2363aaece2","scripts":{"dev":"tsc --watch","test":"node dist/test.js","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"dankupfer","email":"daniel@kupfer.co"},"repository":{"url":"git+https://github.com/your-username/dn-tokens.git","type":"git"},"_npmVersion":"10.8.2","description":"🚧 EXPERIMENTAL: Design tokens for DN system - not for production use","directories":{},"_nodeVersion":"18.20.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"peerDependencies":{"react":">=16.8.0","expo-font":">=11.0.0","react-native":">=0.60.0"},"_npmOperationalInternal":{"tmp":"tmp/dn-tokens_1.0.0_1752303961175_0.8839706560981453","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dankupfer/dn-tokens","version":"1.1.0","keywords":["experimental","prototype","development-only","design-tokens"],"author":{"name":"Your Name"},"license":"MIT","_id":"@dankupfer/dn-tokens@1.1.0","maintainers":[{"name":"dankupfer","email":"daniel@kupfer.co"}],"homepage":"https://github.com/your-username/dn-tokens#readme","bugs":{"url":"https://github.com/your-username/dn-tokens/issues"},"dist":{"shasum":"6c4b4aee1d9e9ee61c151cc5e7b1455f57e88641","tarball":"https://registry.npmjs.org/@dankupfer/dn-tokens/-/dn-tokens-1.1.0.tgz","fileCount":24,"integrity":"sha512-sJH/E2Z3RvNfuow5EmzzBUFZBfL5IMzBztIDoPEE9BR3mWlDCpMz3NNUh9zW7OKEbYek4tnOhqlGsuXcJgKUdw==","signatures":[{"sig":"MEQCICe+2PnqV0OAsYrNwIprv0dxJf+uFyN4bRJjSJKv+yIQAiBj1KZu/hmi1rIAqi2f38jfYiN6bQbdPuT5beVcBStG8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3243341},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0def897142e784cb08aba9d56d322db813c3daa5","scripts":{"dev":"tsc --watch","test":"node dist/test.js","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"dankupfer","email":"daniel@kupfer.co"},"repository":{"url":"git+https://github.com/your-username/dn-tokens.git","type":"git"},"_npmVersion":"11.5.1","description":"🚧 EXPERIMENTAL: Design tokens for DN system - not for production use","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=16.8.0","expo-font":">=11.0.0","react-native":">=0.60.0"},"_npmOperationalInternal":{"tmp":"tmp/dn-tokens_1.1.0_1757349166767_0.8268850019036822","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@dankupfer/dn-tokens","version":"1.1.1","keywords":["experimental","prototype","development-only","design-tokens"],"author":{"name":"Your Name"},"license":"MIT","_id":"@dankupfer/dn-tokens@1.1.1","maintainers":[{"name":"dankupfer","email":"daniel@kupfer.co"}],"homepage":"https://github.com/your-username/dn-tokens#readme","bugs":{"url":"https://github.com/your-username/dn-tokens/issues"},"dist":{"shasum":"1c1c149540e8941709ca866e9f3a2170eefa2f47","tarball":"https://registry.npmjs.org/@dankupfer/dn-tokens/-/dn-tokens-1.1.1.tgz","fileCount":24,"integrity":"sha512-QX8uIUsUX8XckG+i0BQbtemOz2Bq+AhO5SuwYnisFT9Yx7fFd3UWfBqNsUvgz15YJlWnsjWg8LeNgW54ssRZCA==","signatures":[{"sig":"MEYCIQDAzx/fyavsNQKkTBIMz9W2jGWfAHbqCYGqwYw5mnD35gIhAMTMqg4LyujvnkdqTsnLoEyI2+S5fQJnSd7O34cSjED4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3243683},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2b5f4e24e9595ee04cb23f884a2e1c56303b136a","scripts":{"dev":"tsc --watch","test":"node dist/test.js","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"dankupfer","email":"daniel@kupfer.co"},"repository":{"url":"git+https://github.com/your-username/dn-tokens.git","type":"git"},"_npmVersion":"11.5.1","description":"🚧 EXPERIMENTAL: Design tokens for DN system - not for production use","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=16.8.0","expo-font":">=11.0.0","react-native":">=0.60.0"},"_npmOperationalInternal":{"tmp":"tmp/dn-tokens_1.1.1_1757351594302_0.3689162198521456","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@dankupfer/dn-tokens","version":"1.1.2","keywords":["experimental","prototype","development-only","design-tokens"],"author":{"name":"Your Name"},"license":"MIT","_id":"@dankupfer/dn-tokens@1.1.2","maintainers":[{"name":"dankupfer","email":"daniel@kupfer.co"}],"homepage":"https://github.com/your-username/dn-tokens#readme","bugs":{"url":"https://github.com/your-username/dn-tokens/issues"},"dist":{"shasum":"d4a39dac315886cd286136ab875ab5181e20e01d","tarball":"https://registry.npmjs.org/@dankupfer/dn-tokens/-/dn-tokens-1.1.2.tgz","fileCount":28,"integrity":"sha512-F0yEHAFJrELGGVkXzeVwU1R4unzQWEJiJK2FkG/7uNb7RwceBuDWuBszdMwkoQM5xbhDmHSycFny6hKDcU18+A==","signatures":[{"sig":"MEUCIQDbOAfKp4in151HL/648sL6YFBSh92mlbwdQsEXvqRFKAIgbmzic12c1MQ5MjUlKOkk9fCDIX798vkyJlEfhrAbvHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3254114},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"84d67a76cbfffbc234d19546645365f9d3e3d60b","scripts":{"dev":"tsc --watch","test":"node dist/test.js","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"dankupfer","email":"daniel@kupfer.co"},"repository":{"url":"git+https://github.com/your-username/dn-tokens.git","type":"git"},"_npmVersion":"11.5.1","description":"🚧 EXPERIMENTAL: Design tokens for DN system - not for production use","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=16.8.0","expo-font":">=11.0.0","react-native":">=0.60.0"},"_npmOperationalInternal":{"tmp":"tmp/dn-tokens_1.1.2_1757355099905_0.461842701439402","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@dankupfer/dn-tokens","version":"1.1.3","keywords":["experimental","prototype","development-only","design-tokens"],"author":{"name":"Your Name"},"license":"MIT","_id":"@dankupfer/dn-tokens@1.1.3","maintainers":[{"name":"dankupfer","email":"daniel@kupfer.co"}],"homepage":"https://github.com/your-username/dn-tokens#readme","bugs":{"url":"https://github.com/your-username/dn-tokens/issues"},"dist":{"shasum":"d4c19320f715e567658eb18809842b0f4e6fbaa4","tarball":"https://registry.npmjs.org/@dankupfer/dn-tokens/-/dn-tokens-1.1.3.tgz","fileCount":28,"integrity":"sha512-JjK9z2tE1trbpjN3lWyFgLF2AXeojo8VwUO+rIBGTnwXxN1X1n4mCPSI8kmTShKLa/AOJJrlDRalQ6fTOvgs9g==","signatures":[{"sig":"MEYCIQDgRscokTMRtzhqyloguW0hnDPBLpwkFUXaSVa/SJRW5QIhAKT48U9PoXkAlHvGey5OqbQ6gxrU341Q+ay7X86tjxIj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3254215},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"49dc614c503a8197ed81d69b6c1f6844c745ae04","scripts":{"dev":"tsc --watch","test":"node dist/test.js","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"dankupfer","email":"daniel@kupfer.co"},"repository":{"url":"git+https://github.com/your-username/dn-tokens.git","type":"git"},"_npmVersion":"11.5.1","description":"🚧 EXPERIMENTAL: Design tokens for DN system - not for production use","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=16.8.0","expo-font":">=11.0.0","react-native":">=0.60.0"},"_npmOperationalInternal":{"tmp":"tmp/dn-tokens_1.1.3_1759413557029_0.4578912831773636","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@dankupfer/dn-tokens","version":"1.1.4","description":"🚧 EXPERIMENTAL: Design tokens for DN system - not for production use","keywords":["experimental","prototype","development-only","design-tokens"],"publishConfig":{"access":"public"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","prepublishOnly":"npm run build","test":"node dist/test.js"},"author":{"name":"Your Name"},"license":"MIT","peerDependencies":{"expo-font":">=11.0.0","react":">=16.8.0","react-native":">=0.60.0"},"devDependencies":{"typescript":"^5.0.0","@types/react":"^18.0.0"},"repository":{"type":"git","url":"git+https://github.com/your-username/dn-tokens.git"},"_id":"@dankupfer/dn-tokens@1.1.4","gitHead":"cd3e709995929cd3885b31f623c1c28683fd7a58","bugs":{"url":"https://github.com/your-username/dn-tokens/issues"},"homepage":"https://github.com/your-username/dn-tokens#readme","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-q53Bgw0ttbbGGM7QzzBJJMrD/UxjNaGqJp9i0ToOfyvbP9mSBFAsilPhMljzut7fxHhYTvSGigr/lp7Vl8Sarw==","shasum":"daa7c60a0e382343d39f8c6169cccff47c9f82f2","tarball":"https://registry.npmjs.org/@dankupfer/dn-tokens/-/dn-tokens-1.1.4.tgz","fileCount":28,"unpackedSize":3254238,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCOh808iwUmuF05PNXoG7pdU6h+fI47ZUT43xNNFLmjQIgLUXQmdR3FQyInkhq6mpy3AHoyaZxKRkXaEt5c1pYN8Q="}]},"_npmUser":{"name":"dankupfer","email":"daniel@kupfer.co"},"directories":{},"maintainers":[{"name":"dankupfer","email":"daniel@kupfer.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dn-tokens_1.1.4_1759413876338_0.11756943230623129"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-12T07:06:01.006Z","modified":"2025-10-02T14:04:36.748Z","1.0.0":"2025-07-12T07:06:01.389Z","1.1.0":"2025-09-08T16:32:47.045Z","1.1.1":"2025-09-08T17:13:14.502Z","1.1.2":"2025-09-08T18:11:40.196Z","1.1.3":"2025-10-02T13:59:17.250Z","1.1.4":"2025-10-02T14:04:36.549Z"},"bugs":{"url":"https://github.com/your-username/dn-tokens/issues"},"author":{"name":"Your Name"},"license":"MIT","homepage":"https://github.com/your-username/dn-tokens#readme","keywords":["experimental","prototype","development-only","design-tokens"],"repository":{"type":"git","url":"git+https://github.com/your-username/dn-tokens.git"},"description":"🚧 EXPERIMENTAL: Design tokens for DN system - not for production use","maintainers":[{"name":"dankupfer","email":"daniel@kupfer.co"}],"readme":"# @dankupfer/dn-tokens\n\n> ⚠️ **EXPERIMENTAL - NOT FOR PRODUCTION USE**\n> \n> This package is experimental and under active development. APIs are subject to breaking changes without notice. Not recommended for production applications.\n\n## Status\n- 🚧 **Pre-alpha**: APIs will change frequently  \n- ❌ **No semantic versioning**: Breaking changes may occur in any version\n- 🔬 **Research project**: Used for prototyping and experimentation\n\nDesign tokens and assets for the DN design system. This package provides a centralized source of truth for colors, typography, spacing, icons, and fonts used across DN projects with comprehensive brand and theme support.\n\n## Features\n\n- 🎨 **Comprehensive Design Tokens** - Advanced token system with 15+ brand variants\n- 🏢 **Multi-Brand Support** - Lloyds, Halifax, BOS, MBNA, Scottish Widows with light/dark variants\n- 🌓 **Advanced Theme Processing** - Sophisticated light/dark mode handling through brand variants\n- 🔤 **Font Assets** - GT-Ultra font family files\n- 🎯 **TypeScript Support** - Full type safety for all tokens and processing functions\n- 🖼️ **SVG Icon System** - Brand-specific icons with light/dark variants\n- 🔧 **Advanced Token Processor** - Utilities for typography, shadows, and complex token types\n\n## Installation\n\n```bash\nnpm install @dankupfer/dn-tokens\n```\n\n## Quick Start\n\n```typescript\nimport { processTokens, getAllTokens, getAllIcons, type Token } from '@dankupfer/dn-tokens';\n\n// Get all tokens\nconst tokens: Token[] = getAllTokens();\n\n// Process tokens for a specific brand\nconst lightTheme = processTokens(tokens, 'lloyds', 'light');\nconst darkTheme = processTokens(tokens, 'reimaginedLloydsDark', 'dark');\n\n// Access processed theme values\nconsole.log(lightTheme.colors.action.background);\nconsole.log(lightTheme.spacing.md);\nconsole.log(lightTheme.typography.body.fontSize);\n\n// Get all icons\nconst icons = getAllIcons();\n```\n\n## Available Brands\n\nThe token system supports comprehensive brand coverage:\n\n### Core Brands\n- **`lloyds`** - Lloyds Bank standard theme\n- **`halifax`** - Halifax brand theme\n- **`bos`** - Bank of Scotland theme\n- **`mbna`** - MBNA brand theme\n- **`scottishWidows`** - Scottish Widows theme\n\n### Reimagined Variants\n- **`reimaginedLloyds`** / **`reimaginedLloydsDark`** - Modern Lloyds themes\n- **`reimaginedBos`** / **`reimaginedBosDark`** - Modern Bank of Scotland themes\n- **`reimaginedHalifax`** / **`reimaginedHalifaxDark`** - Modern Halifax themes\n- **`reimaginedMbna`** / **`reimaginedMbnaDark`** - Modern MBNA themes\n- **`reimaginedScottishWidows`** / **`reimaginedScottishWidowsDark`** - Modern Scottish Widows themes\n\n## Advanced Token System\n\n### Token Structure\n\nEach token follows a comprehensive structure supporting multiple brands and complex value types:\n\n```typescript\ninterface Token {\n  name: string;\n  type: 'color' | 'spacing' | 'borderRadius' | 'borderWidth' | 'typography' | 'shadow';\n  description?: string;\n  values: {\n    [brandKey: string]: string | TypographyValue | ShadowValue;\n  };\n}\n```\n\n### Token Processing\n\n```typescript\nimport { \n  processTokens, \n  getToken, \n  getTypographyToken, \n  getShadowToken,\n  type ProcessedTheme \n} from '@dankupfer/dn-tokens';\n\nconst tokens = getAllTokens();\n\n// Process into runtime theme\nconst theme: ProcessedTheme = processTokens(tokens, 'lloyds', 'light');\n\n// Direct token access\nconst backgroundColor = getToken('background_page_default', 'lloyds', 'light', tokens);\nconst spacing = getNumericToken('spacing_size_16', 'lloyds', 'light', tokens);\n\n// Complex token types\nconst typography = getTypographyToken('style_3', 'lloyds', 'light', tokens);\nconst shadow = getShadowToken('shadow_default', 'lloyds', 'light', tokens);\n```\n\n### Processed Theme Structure\n\nThe `ProcessedTheme` provides structured access to common design patterns:\n\n```typescript\ninterface ProcessedTheme {\n  // Direct token access\n  tokens: { [tokenName: string]: string | number };\n  \n  // Structured convenience accessors\n  colors: {\n    action: {\n      background: string;\n      backgroundPressed: string;\n      backgroundDisabled: string;\n      text: string;\n      border: string;\n    };\n    brandAccent: { background: string; backgroundPressed: string; text: string; };\n    page: { background: string; };\n    panel: { background: string; };\n    text: { default: string; subdued: string; };\n    border: { default: string; action: string; };\n  };\n  \n  spacing: { xs: number; sm: number; md: number; lg: number; };\n  borderRadius: { button: number; };\n  borderWidth: { button: number; };\n  typography: {\n    heading: number;\n    body: { fontSize: number; fontFamily: string; };\n    small: number;\n  };\n}\n```\n\n## Icon System\n\nAdvanced SVG icon system with brand and theme variants:\n\n```typescript\nimport { getAllIcons } from '@dankupfer/dn-tokens';\n\nconst icons = getAllIcons();\n\n// Icons are organized by category and support brand/theme variants\nconst depositIcon = icons['icons|finance|deposit'];\nconst lloydLightIcon = depositIcon.lloyds.light; // SVG string\nconst lloydDarkIcon = depositIcon.lloyds.dark;   // SVG string\n```\n\n### Icon Categories\n\n- **Finance**: `icons|finance|deposit`, `icons|finance|cashpoint`, `icons|finance|cheque`\n- **Components**: `components|size|compact`, `components|size|default`\n- **Navigation**: Icons for common UI patterns\n- **Brand-specific**: Custom icons per brand\n\n### Icon Resolver Utility\n\nThe package includes a powerful icon resolution system that maps simple names to full icon paths:\n\n```typescript\nimport { resolveIcon, addIconMapping, getAvailableIconNames } from '@dankupfer/dn-tokens';\n\n// Simple name resolution\nconst homePath = resolveIcon('home'); // Returns 'icons|navigation|home'\nconst settingsPath = resolveIcon('settings'); // Returns 'icons|miscellaneous|settings'\n\n// Full paths pass through unchanged\nconst fullPath = resolveIcon('icons|finance|deposit'); // Returns 'icons|finance|deposit'\n\n// Get all available simple names\nconst availableNames = getAvailableIconNames(); // ['home', 'settings', 'cards', ...]\n\n// Extend mappings at runtime\naddIconMapping('custom-icon', 'icons|custom|my_icon');\n```\n\n**Features:**\n- **Simple name mapping** - Use friendly names like `'home'` instead of `'icons|navigation|home'`\n- **Fallback support** - Full paths work unchanged for advanced usage\n- **Runtime extension** - Add custom mappings with `addIconMapping()`\n- **Development helpers** - `getAvailableIconNames()` for debugging and discovery\n\n**Available Simple Names:**\n\n- **Navigation**: `home`, `back`, `close`, `search`, `menu`\n- **Actions**: `settings`, `notification`, `help`, `plus`, `minus`, `tick`\n- **Arrows**: `chevron-left`, `chevron-right`, `arrow-left`, `arrow-right`\n- **Finance**: `cards`, `wallet`, `payments`, `apply`, `bank`\n- **Communication**: `phone`, `email`, `chat`, `message`\n- **Security**: `lock`, `unlock`, `shield`, `key`\n- **Sentiment**: `success`, `error`, `warning`, `info`\n- **Miscellaneous**: `star`, `calendar`, `clock`, `camera`, `printer`\n\nThe IconResolver bridges the gap between developer-friendly naming and the structured token system, allowing both simple usage (`resolveIcon('home')`) and advanced control (`resolveIcon('icons|navigation|home')`).\n\n## Typography System\n\nComprehensive typography support with complex font definitions:\n\n```typescript\ninterface TypographyValue {\n  font_family: string;\n  default_font_size: string;\n  max_font_size: string;\n  font_weight: string;\n  line_height: string;\n  line_spacing: string;\n  letter_spacing: string;\n  ios_classification: string;\n}\n\n// Access typography tokens\nconst bodyTypography = getTypographyToken('style_3', 'lloyds', 'light', tokens);\nconsole.log(bodyTypography?.font_family); // GT-Ultra-Standard-Regular\nconsole.log(bodyTypography?.default_font_size); // 17\n```\n\n## Font Assets\n\nThe package includes GT-Ultra font files and a React Native font loading component:\n\n```\n@dankupfer/dn-tokens/fonts/\n├── GT-Ultra-Standard-Regular.ttf\n├── GT-Ultra-Standard-Bold.ttf\n├── GT-Ultra-Median-Regular.ttf\n└── GT-Ultra-Median-Bold.ttf\n```\n\n### Font Loading Component\n\nThe package provides a ready-to-use `FontLoader` component that automatically loads all GT-Ultra fonts:\n\n```typescript\nimport { FontLoader } from '@dankupfer/dn-tokens';\n\nexport default function App() {\n  return (\n    <FontLoader>\n      {/* Your app content - fonts will be loaded automatically */}\n      <YourAppContent />\n    </FontLoader>\n  );\n}\n```\n\n**Features:**\n- Automatically loads all GT-Ultra font variants\n- Handles loading states and errors gracefully\n- Uses expo-font under the hood\n- Children render only after fonts are loaded (or on error)\n- Console logging for debugging font loading issues\n\n### Font Constants\n\n```typescript\nimport { fontFamilies, type FontFamily } from '@dankupfer/dn-tokens';\n\n// Available font families\nconst fonts = {\n  primary: \"GT-Ultra-Median-Regular\",\n  primaryBold: \"GT-Ultra-Median-Bold\", \n  primarySemiBold: \"GT-Ultra-Standard-Bold\",\n  secondary: \"GT-Ultra-Standard-Regular\",\n};\n```\n\n### Alternative Font Loading\n\nIf you prefer to implement your own font loading strategy, you can import the font assets directly and use your preferred loading solution:\n\n```typescript\n// Manual font loading approach\nimport * as Font from 'expo-font';\n\nconst loadFonts = async () => {\n  await Font.loadAsync({\n    \"GT-Ultra-Standard-Regular\": require('@dankupfer/dn-tokens/fonts/GT-Ultra-Standard-Regular.ttf'),\n    // ... other fonts\n  });\n};\n```\n\n## Usage Examples\n\n### Basic Theme Creation\n\n```typescript\nimport { processTokens, getAllTokens } from '@dankupfer/dn-tokens';\n\nconst createTheme = (brand: string, mode: 'light' | 'dark') => {\n  const tokens = getAllTokens();\n  const brandName = mode === 'dark' ? `${brand}Dark` : brand;\n  return processTokens(tokens, brandName as any, mode);\n};\n\n// Create themes\nconst lloydLight = createTheme('lloyds', 'light');\nconst lloydDark = createTheme('reimaginedLloyds', 'dark');\n```\n\n### Component Integration\n\n```typescript\nimport { useTheme } from 'your-app';\nimport { getToken, getAllTokens } from '@dankupfer/dn-tokens';\n\nconst MyComponent = () => {\n  const tokens = getAllTokens();\n  const backgroundColor = getToken('background_panel_default', 'lloyds', 'light', tokens);\n  \n  return (\n    <View style={{ backgroundColor }}>\n      {/* Component content */}\n    </View>\n  );\n};\n```\n\n## TypeScript Support\n\nComprehensive TypeScript definitions:\n\n```typescript\nimport type { \n  Token,\n  ProcessedTheme,\n  BrandName,\n  ThemeMode,\n  TypographyValue,\n  ShadowValue,\n  FontFamily\n} from '@dankupfer/dn-tokens';\n\n// Type-safe brand selection\nconst brandName: BrandName = 'lloyds';\nconst themeMode: ThemeMode = 'light';\n\n// Fully typed theme processing\nconst tokens: Token[] = getAllTokens();\nconst theme: ProcessedTheme = processTokens(tokens, brandName, themeMode);\n```\n\n## Integration with Other Projects\n\nThis package is designed to be consumed by:\n\n- **dn-component-library** - React Native component library\n- **dn-starter-kit** - React Native application templates\n\nExample integration:\n\n```typescript\n// In your component library or app\nimport { processTokens, getAllTokens } from '@dankupfer/dn-tokens';\n\nexport const createAppTheme = (brand: string, mode: 'light' | 'dark') => {\n  const tokens = getAllTokens();\n  return processTokens(tokens, brand as any, mode);\n};\n```\n\n## Token File Management\n\n**Important**: The core token and icon files (`tokens/tokens.json` and `tokens/icons.json`) are managed locally due to security requirements and are not included in the published package or git repository.\n\n### Local Development Setup\n\n```bash\n# Clone the repository\ngit clone <repository-url>\ncd dn-tokens\n\n# Add your token files locally (not committed to git)\n# tokens/tokens.json - Your comprehensive token array\n# tokens/icons.json - Your SVG icon definitions\n\nnpm install\nnpm run build\n```\n\nThe package structure expects these files to be present locally:\n\n- `tokens/tokens.json` - Complete token definitions for all brand variants\n- `tokens/icons.json` - SVG icon definitions with brand and theme support\n\nThese files are in `.gitignore` to prevent accidental commits of sensitive design system data.\n\n## Project Structure\n\n```\n@dankupfer/dn-tokens/\n├── src/                          # TypeScript source files\n│   ├── index.ts                  # Main entry point with all exports\n│   └── tokenProcessor.ts         # Advanced token processing utilities\n├── tokens/                       # Design token files (local only)\n│   ├── tokens.json              # Comprehensive token array (not in git)\n│   └── icons.json               # SVG icon definitions (not in git)\n├── fonts/                        # Font asset files\n│   └── *.ttf                    # GT-Ultra font family\n├── dist/                         # Compiled JavaScript (generated)\n├── .gitignore                    # Excludes token files\n└── package.json\n```\n\n## Development\n\n### Building\n\n```bash\nnpm run build\n```\n\n### Development with Watch Mode\n\n```bash\nnpm run dev\n```\n\n### Publishing\n\n```bash\nnpm run build\nnpm publish\n```\n\n## Migration Notes\n\n**v1.1.0+** introduces a comprehensive token system replacing the previous simple brand-based approach:\n\n- **Before**: Simple brand files (lloyds.json, brandA.json, brandB.json)\n- **After**: Comprehensive token array with 15+ brand variants\n- **Before**: Basic `getBrandTokens()` function\n- **After**: Advanced processing with `getToken()`, `getTypographyToken()`, `getShadowToken()`\n\n## Contributing\n\n1. Clone the repository\n2. Install dependencies: `npm install`\n3. Make your changes\n4. Build and test: `npm run build`\n5. Submit a pull request","readmeFilename":"README.md"}