@nobak/design-system 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/LICENSE +73 -0
  2. package/README.md +142 -0
  3. package/lib/assets/icons.js +67 -0
  4. package/lib/components/AccountOverview/AccountOverview.js +122 -0
  5. package/lib/components/AdminPanel.js +58 -0
  6. package/lib/components/AssetExchange/AssetExchange.js +189 -0
  7. package/lib/components/AuthenticationFlow.js +216 -0
  8. package/lib/components/ConversationInterface/ConversationInterface.js +232 -0
  9. package/lib/components/DevFooter.js +38 -0
  10. package/lib/components/DevMenu.js +35 -0
  11. package/lib/components/DevSidebar.js +28 -0
  12. package/lib/components/DigitalDisplay.js +83 -0
  13. package/lib/components/Footer.js +45 -0
  14. package/lib/components/HeroContainer.js +10 -0
  15. package/lib/components/IntentRecognition/IntentRecognition.js +174 -0
  16. package/lib/components/Logo.js +259 -0
  17. package/lib/components/MenuBar.js +56 -0
  18. package/lib/components/NetworkSettings.js +223 -0
  19. package/lib/components/RecoverySetup/RecoverySetup.js +354 -0
  20. package/lib/components/RisingSun.js +122 -0
  21. package/lib/components/Symbol.js +226 -0
  22. package/lib/components/TransactionComposer/TransactionComposer.js +258 -0
  23. package/lib/components/TransactionConfirmation.js +184 -0
  24. package/lib/components/WalletMenu.js +33 -0
  25. package/lib/components/console/code/CodeBlock.js +150 -0
  26. package/lib/components/console/code/index.js +9 -0
  27. package/lib/components/console/data/DataTable.js +245 -0
  28. package/lib/components/console/data/MetricCard.js +79 -0
  29. package/lib/components/console/data/index.js +11 -0
  30. package/lib/components/console/documentation/index.js +10 -0
  31. package/lib/components/console/forms/APIKeyGenerator.js +261 -0
  32. package/lib/components/console/forms/SearchBar.js +210 -0
  33. package/lib/components/console/forms/index.js +10 -0
  34. package/lib/components/console/index.js +29 -0
  35. package/lib/components/console/layout/ConsoleCard.js +82 -0
  36. package/lib/components/console/layout/ConsoleLayout.js +86 -0
  37. package/lib/components/console/layout/index.js +10 -0
  38. package/lib/components/console/monitoring/StatusIndicator.js +128 -0
  39. package/lib/components/console/monitoring/index.js +9 -0
  40. package/lib/components/console/navigation/DevFooter.js +38 -0
  41. package/lib/components/console/navigation/DevMenu.js +35 -0
  42. package/lib/components/console/navigation/DevSidebar.js +28 -0
  43. package/lib/components/console/navigation/index.js +11 -0
  44. package/lib/components/console/settings/index.js +10 -0
  45. package/lib/components/index.js +12 -0
  46. package/lib/design/ColorPicker.stories.js +9 -0
  47. package/lib/design/HSLTool-V1.js +345 -0
  48. package/lib/design/HSLTool-V2.js +475 -0
  49. package/lib/design/HSLTool-V3.js +543 -0
  50. package/lib/design/HSLTool-V4.js +1139 -0
  51. package/lib/design/HSLTool.js +374 -0
  52. package/lib/design/OKLCHColorPicker.stories.js +24 -0
  53. package/lib/design/OKLCHTool.js +1014 -0
  54. package/lib/index.js +4 -0
  55. package/lib/shared/components/Avatar/Avatar.js +18 -0
  56. package/lib/shared/components/Avatar/index.js +1 -0
  57. package/lib/shared/components/Badge/Badge.js +34 -0
  58. package/lib/shared/components/Badge/index.js +1 -0
  59. package/lib/shared/components/Breadcrumb/Breadcrumb.js +13 -0
  60. package/lib/shared/components/Breadcrumb/index.js +1 -0
  61. package/lib/shared/components/Button/Button.js +184 -0
  62. package/lib/shared/components/Button/index.js +1 -0
  63. package/lib/shared/components/Calendar/Calendar.js +155 -0
  64. package/lib/shared/components/Calendar/CalendarDay.js +251 -0
  65. package/lib/shared/components/Calendar/CalendarHeader.js +88 -0
  66. package/lib/shared/components/Calendar/CalendarMonth.js +106 -0
  67. package/lib/shared/components/Calendar/CalendarWeek.js +267 -0
  68. package/lib/shared/components/Calendar/constants.js +73 -0
  69. package/lib/shared/components/Calendar/index.js +3 -0
  70. package/lib/shared/components/Calendar/types.d.js +0 -0
  71. package/lib/shared/components/Cartel/Cartel.js +44 -0
  72. package/lib/shared/components/Cartel/index.js +1 -0
  73. package/lib/shared/components/Cell/Cell.js +105 -0
  74. package/lib/shared/components/Cell/index.js +1 -0
  75. package/lib/shared/components/Checkbox/Checkbox.js +27 -0
  76. package/lib/shared/components/Checkbox/index.js +1 -0
  77. package/lib/shared/components/Clock/Clock.js +6 -0
  78. package/lib/shared/components/Clock/index.js +1 -0
  79. package/lib/shared/components/ColorChecker/ColorChecker.js +89 -0
  80. package/lib/shared/components/ColorChecker/index.js +2 -0
  81. package/lib/shared/components/ColorChecker/utils.js +159 -0
  82. package/lib/shared/components/Command/Command.js +95 -0
  83. package/lib/shared/components/Command/index.js +1 -0
  84. package/lib/shared/components/Container/Container.js +18 -0
  85. package/lib/shared/components/Container/index.js +1 -0
  86. package/lib/shared/components/Cover/Cover.js +17 -0
  87. package/lib/shared/components/Cover/index.js +1 -0
  88. package/lib/shared/components/DatePicker/DatePicker.js +52 -0
  89. package/lib/shared/components/DatePicker/components/Calendar.js +125 -0
  90. package/lib/shared/components/DatePicker/components/CalendarDay.js +23 -0
  91. package/lib/shared/components/DatePicker/components/DateWrapper.js +15 -0
  92. package/lib/shared/components/DatePicker/components/index.js +2 -0
  93. package/lib/shared/components/DatePicker/index.js +1 -0
  94. package/lib/shared/components/DateTime/DateTime.js +51 -0
  95. package/lib/shared/components/DateTime/index.js +1 -0
  96. package/lib/shared/components/Debug/Debug.js +12 -0
  97. package/lib/shared/components/Debug/index.js +1 -0
  98. package/lib/shared/components/Disclosure/Disclosure.js +31 -0
  99. package/lib/shared/components/Disclosure/index.js +1 -0
  100. package/lib/shared/components/Dropdown/Dropdown.js +91 -0
  101. package/lib/shared/components/Dropdown/index.js +1 -0
  102. package/lib/shared/components/EmptyState/EmptyState.js +40 -0
  103. package/lib/shared/components/EmptyState/index.js +1 -0
  104. package/lib/shared/components/Form/Form.js +41 -0
  105. package/lib/shared/components/Form/components/DynamicForm.js +66 -0
  106. package/lib/shared/components/Form/components/StepperForm.js +266 -0
  107. package/lib/shared/components/Form/components/index.js +2 -0
  108. package/lib/shared/components/Form/context/Form.js +164 -0
  109. package/lib/shared/components/Form/context/index.js +1 -0
  110. package/lib/shared/components/Form/index.js +1 -0
  111. package/lib/shared/components/Form/types.d.js +1 -0
  112. package/lib/shared/components/Form/utils/index.js +31 -0
  113. package/lib/shared/components/GroupItems/GroupItems.js +17 -0
  114. package/lib/shared/components/GroupItems/index.js +1 -0
  115. package/lib/shared/components/Header/Header.js +26 -0
  116. package/lib/shared/components/Header/index.js +1 -0
  117. package/lib/shared/components/Heading/Heading.js +5 -0
  118. package/lib/shared/components/Heading/index.js +1 -0
  119. package/lib/shared/components/Icon/Icon.js +28 -0
  120. package/lib/shared/components/Icon/index.js +1 -0
  121. package/lib/shared/components/Identicons/Identicons.js +6 -0
  122. package/lib/shared/components/Identicons/index.d.js +0 -0
  123. package/lib/shared/components/Identicons/index.js +1 -0
  124. package/lib/shared/components/Image/Image.js +22 -0
  125. package/lib/shared/components/Image/index.js +1 -0
  126. package/lib/shared/components/Input/Input.js +201 -0
  127. package/lib/shared/components/Input/components/CheckBoxInput.js +81 -0
  128. package/lib/shared/components/Input/components/DateInput.js +89 -0
  129. package/lib/shared/components/Input/components/DefaultInput.js +102 -0
  130. package/lib/shared/components/Input/components/FileReaderInput.js +88 -0
  131. package/lib/shared/components/Input/components/NumberInput.js +141 -0
  132. package/lib/shared/components/Input/components/PickerInput.js +122 -0
  133. package/lib/shared/components/Input/components/RCInput.js +112 -0
  134. package/lib/shared/components/Input/components/Radiobox/RadioboxBasic.js +56 -0
  135. package/lib/shared/components/Input/components/Radiobox/RadioboxCard.js +27 -0
  136. package/lib/shared/components/Input/components/Radiobox/RadioboxFull.js +44 -0
  137. package/lib/shared/components/Input/components/Radiobox/index.js +3 -0
  138. package/lib/shared/components/Input/components/RadioboxInput.js +102 -0
  139. package/lib/shared/components/Input/components/SelectInput.js +70 -0
  140. package/lib/shared/components/Input/components/TextAreaInput.js +67 -0
  141. package/lib/shared/components/Input/components/TextInput.js +139 -0
  142. package/lib/shared/components/Input/components/TimeInput.js +37 -0
  143. package/lib/shared/components/Input/components/UploadFileInput.js +123 -0
  144. package/lib/shared/components/Input/components/index.js +13 -0
  145. package/lib/shared/components/Input/components/types.d.js +0 -0
  146. package/lib/shared/components/Input/index.js +1 -0
  147. package/lib/shared/components/Input/types.d.js +0 -0
  148. package/lib/shared/components/Layout/Layout.js +13 -0
  149. package/lib/shared/components/Layout/index.js +1 -0
  150. package/lib/shared/components/List/List.js +30 -0
  151. package/lib/shared/components/List/index.js +1 -0
  152. package/lib/shared/components/Loader/Loader.js +27 -0
  153. package/lib/shared/components/Loader/index.js +1 -0
  154. package/lib/shared/components/Modal/Modal.js +102 -0
  155. package/lib/shared/components/Modal/index.js +1 -0
  156. package/lib/shared/components/Notification/Notification.js +39 -0
  157. package/lib/shared/components/Notification/index.js +1 -0
  158. package/lib/shared/components/Person/Person.js +81 -0
  159. package/lib/shared/components/Person/index.js +1 -0
  160. package/lib/shared/components/Popover/Popover.js +39 -0
  161. package/lib/shared/components/Popover/index.js +1 -0
  162. package/lib/shared/components/QRCode/QRCode.js +329 -0
  163. package/lib/shared/components/QRCode/index.js +1 -0
  164. package/lib/shared/components/RadioGroup/RadioGroup.js +35 -0
  165. package/lib/shared/components/RadioGroup/components/DefaultGroup.js +71 -0
  166. package/lib/shared/components/RadioGroup/components/VerticalGroup.js +83 -0
  167. package/lib/shared/components/RadioGroup/components/index.js +2 -0
  168. package/lib/shared/components/RadioGroup/index.js +1 -0
  169. package/lib/shared/components/Search/Search.js +12 -0
  170. package/lib/shared/components/Search/index.js +1 -0
  171. package/lib/shared/components/Select/Select.js +90 -0
  172. package/lib/shared/components/Select/index.js +1 -0
  173. package/lib/shared/components/Sidebar/Sidebar.js +42 -0
  174. package/lib/shared/components/Sidebar/index.js +1 -0
  175. package/lib/shared/components/SlideOver/SlideOver.js +81 -0
  176. package/lib/shared/components/SlideOver/index.js +1 -0
  177. package/lib/shared/components/Slider/Slider.js +80 -0
  178. package/lib/shared/components/Slider/index.js +1 -0
  179. package/lib/shared/components/Stepper/Stepper.js +32 -0
  180. package/lib/shared/components/Stepper/index.js +1 -0
  181. package/lib/shared/components/Steps/Steps.js +53 -0
  182. package/lib/shared/components/Steps/index.js +1 -0
  183. package/lib/shared/components/Switch/Switch.js +26 -0
  184. package/lib/shared/components/Switch/index.js +1 -0
  185. package/lib/shared/components/Tab/Tab.js +59 -0
  186. package/lib/shared/components/Tab/index.js +1 -0
  187. package/lib/shared/components/Table/Table.js +47 -0
  188. package/lib/shared/components/Table/index.js +1 -0
  189. package/lib/shared/components/Text/Text.js +11 -0
  190. package/lib/shared/components/Text/index.js +1 -0
  191. package/lib/shared/components/TextList/TextList.js +15 -0
  192. package/lib/shared/components/TextList/index.js +1 -0
  193. package/lib/shared/components/TimePicker/TimePicker.js +161 -0
  194. package/lib/shared/components/TimePicker/index.js +1 -0
  195. package/lib/shared/components/Tooltip/Tooltip.js +13 -0
  196. package/lib/shared/components/Tooltip/index.js +1 -0
  197. package/lib/shared/components/Uploader/Uploader.js +63 -0
  198. package/lib/shared/components/Uploader/index.js +1 -0
  199. package/lib/shared/components/Video/Video.js +20 -0
  200. package/lib/shared/components/Video/index.js +1 -0
  201. package/lib/shared/components/index.d.js +0 -0
  202. package/lib/shared/components/index.js +50 -0
  203. package/lib/shared/elements/Color/ColorPallet.js +20 -0
  204. package/lib/shared/elements/Color/index.js +1 -0
  205. package/lib/shared/elements/Text.js +37 -0
  206. package/lib/shared/elements/index.js +1 -0
  207. package/lib/shared/helpers/FakeLink.js +8 -0
  208. package/lib/shared/helpers/constants.js +359 -0
  209. package/lib/shared/helpers/index.js +2 -0
  210. package/lib/shared/helpers/isEqual.js +56 -0
  211. package/lib/shared/index.d.js +0 -0
  212. package/lib/shared/index.js +1 -0
  213. package/lib/shared/stories/components/Avatar.stories.js +17 -0
  214. package/lib/shared/stories/components/Badge.stories.dev.js +37 -0
  215. package/lib/shared/stories/components/Button.stories.js +553 -0
  216. package/lib/shared/stories/components/Calendar.stories.js +62 -0
  217. package/lib/shared/stories/components/Cartel.stories.js +32 -0
  218. package/lib/shared/stories/components/Checkbox.stories.js +15 -0
  219. package/lib/shared/stories/components/ColorChecker.stories.dev.js +16 -0
  220. package/lib/shared/stories/components/DateTime.stories.js +27 -0
  221. package/lib/shared/stories/components/Disclosure.stories.js +30 -0
  222. package/lib/shared/stories/components/Dropdown.stories.js +39 -0
  223. package/lib/shared/stories/components/Form/Default.stories.js +201 -0
  224. package/lib/shared/stories/components/Form/DummyForm.stories.js +48 -0
  225. package/lib/shared/stories/components/Form/DynamicForm.stories.js +155 -0
  226. package/lib/shared/stories/components/Form/StepperForm.stories.js +138 -0
  227. package/lib/shared/stories/components/Form/ValidateForm.stories.js +70 -0
  228. package/lib/shared/stories/components/Form/Validation.stories.js +184 -0
  229. package/lib/shared/stories/components/GroupItems.stories.js +23 -0
  230. package/lib/shared/stories/components/Header.stories.js +29 -0
  231. package/lib/shared/stories/components/Heading.stories.js +27 -0
  232. package/lib/shared/stories/components/Icon.stories.js +22 -0
  233. package/lib/shared/stories/components/Image.stories.js +23 -0
  234. package/lib/shared/stories/components/Input/Checkbox.stories.js +45 -0
  235. package/lib/shared/stories/components/Input/DatePicker.stories.js +23 -0
  236. package/lib/shared/stories/components/Input/Defaut.stories.js +24 -0
  237. package/lib/shared/stories/components/Input/Number.stories.js +24 -0
  238. package/lib/shared/stories/components/Input/RCI.stories.js +59 -0
  239. package/lib/shared/stories/components/Input/Radiobox.stories.dev.js +28 -0
  240. package/lib/shared/stories/components/Input/Select.stories.dev.js +27 -0
  241. package/lib/shared/stories/components/Input/SelectMultiple.stories.dev.js +510 -0
  242. package/lib/shared/stories/components/Input/Textarea.stories.js +24 -0
  243. package/lib/shared/stories/components/List.stories.js +34 -0
  244. package/lib/shared/stories/components/Loader.stories.js +15 -0
  245. package/lib/shared/stories/components/Modal.stories.js +50 -0
  246. package/lib/shared/stories/components/Notification.stories.js +22 -0
  247. package/lib/shared/stories/components/Person.stories.js +41 -0
  248. package/lib/shared/stories/components/Picker.stories.js +15 -0
  249. package/lib/shared/stories/components/Popover.stories.js +36 -0
  250. package/lib/shared/stories/components/QRCode.stories.js +20 -0
  251. package/lib/shared/stories/components/RadioGroup.stories.js +56 -0
  252. package/lib/shared/stories/components/Select.stories.js +50 -0
  253. package/lib/shared/stories/components/Sidebar.stories.js +35 -0
  254. package/lib/shared/stories/components/Slider.stories.dev.js +48 -0
  255. package/lib/shared/stories/components/Stepper/Stepper.stories.js +38 -0
  256. package/lib/shared/stories/components/Steps.stories.js +15 -0
  257. package/lib/shared/stories/components/Switch.stories.js +15 -0
  258. package/lib/shared/stories/components/Tab.stories.js +15 -0
  259. package/lib/shared/stories/components/Table.stories.js +95 -0
  260. package/lib/shared/stories/components/TextList.stories.js +23 -0
  261. package/lib/shared/stories/components/Tooltip.stories.dev.js +40 -0
  262. package/lib/shared/stories/elements/Color.stories.js +269 -0
  263. package/lib/shared/stories/elements/Text.stories.js +45 -0
  264. package/lib/shared/types/index.js +1 -0
  265. package/lib/stories/Foundation/BrandIdentity.prod.stories.js +510 -0
  266. package/lib/stories/Foundation/Logo.stories.js +19 -0
  267. package/lib/stories/Foundation/RisingSun.stories.js +16 -0
  268. package/lib/stories/Foundation/Shadows.stories.js +601 -0
  269. package/lib/stories/Foundation/Symbol.stories.js +18 -0
  270. package/lib/stories/HeroContainer.stories.js +18 -0
  271. package/lib/styles/accessibilityTokens.js +72 -0
  272. package/lib/styles/borderWidth.js +10 -0
  273. package/lib/styles/colors.js +303 -0
  274. package/lib/styles/elevation.js +240 -0
  275. package/lib/styles/icons.js +218 -0
  276. package/lib/styles/index.js +29 -0
  277. package/lib/styles/motion.js +668 -0
  278. package/lib/styles/opacity.js +10 -0
  279. package/lib/styles/radius.js +11 -0
  280. package/lib/styles/sizing.js +35 -0
  281. package/lib/styles/space.js +24 -0
  282. package/lib/styles/theme/darkTheme.js +471 -0
  283. package/lib/styles/theme/index.js +44 -0
  284. package/lib/styles/theme/lightTheme.js +480 -0
  285. package/lib/styles/theme/themeTypes.js +1 -0
  286. package/lib/styles/theme/themeUtils.js +63 -0
  287. package/lib/styles/typography-advanced.js +510 -0
  288. package/lib/styles/typography.js +1419 -0
  289. package/lib/styles/zIndex.js +19 -0
  290. package/lib/tokens/borders.js +161 -0
  291. package/lib/tokens/colors.js +426 -0
  292. package/lib/tokens/components.js +499 -0
  293. package/lib/tokens/index.js +84 -0
  294. package/lib/tokens/lighting.js +384 -0
  295. package/lib/tokens/motion.js +284 -0
  296. package/lib/tokens/semantic.js +367 -0
  297. package/lib/tokens/shadows.js +114 -0
  298. package/lib/tokens/spacing.js +189 -0
  299. package/lib/tokens/typography.js +268 -0
  300. package/package.json +176 -0
  301. package/styles/generated-tokens.css +677 -0
  302. package/styles/index.css +2 -0
  303. package/styles/main.css +610 -0
  304. package/tailwind.config.js +64 -0
@@ -0,0 +1,1419 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ // src/design-tokens/typography.ts
8
+ // Typography Design System with Semantic Token Architecture
9
+ // Following Adobe Spectrum patterns: Global → Semantic → Fintech → Component
10
+
11
+ // ===========================
12
+ // LAYER 1: GLOBAL TYPOGRAPHY TOKENS
13
+ // Raw typographic values - the source of truth
14
+ // ===========================
15
+
16
+ // Add this type definition near the top of your file, with other type definitions
17
+
18
+ // Define valid font weight values
19
+
20
+ // Define the font weight mapping type
21
+
22
+ export var globalTypography = {
23
+ fontFamily: {
24
+ sans: 'Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
25
+ serif: 'ui-serif, Georgia, Cambria, "Times New Roman", Times, serif',
26
+ mono: 'ui-monospace, "SF Mono", "Monaco", "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace',
27
+ system: 'system-ui',
28
+ tabular: '"SF Pro Display", "Segoe UI", system-ui, sans-serif',
29
+ currency: '"SF Pro Display", "Segoe UI", system-ui, sans-serif'
30
+ },
31
+ fontWeight: {
32
+ light: 300,
33
+ regular: 400,
34
+ medium: 500,
35
+ semibold: 600,
36
+ bold: 700,
37
+ extrabold: 800,
38
+ black: 900
39
+ },
40
+ fontSize: {
41
+ 50: 6,
42
+ // Fine print
43
+ 75: 8,
44
+ // Captions
45
+ 100: 10,
46
+ // Small body
47
+ 200: 13,
48
+ // Default body
49
+ 300: 16,
50
+ // Large body
51
+ 400: 21,
52
+ // Emphasized body
53
+ 500: 24,
54
+ // Small headings
55
+ 600: 34,
56
+ // Medium headings
57
+ 700: 42,
58
+ // Large headings
59
+ 800: 55,
60
+ // XL headings
61
+ 900: 68,
62
+ // XXL headings
63
+ 1000: 89,
64
+ // Small display
65
+ 1100: 110,
66
+ // Medium display
67
+ 1200: 144,
68
+ // Large display
69
+ 1300: 178 // XL display
70
+ },
71
+ lineHeight: {
72
+ tight: 1.2,
73
+ normal: 1.5,
74
+ relaxed: 1.8
75
+ },
76
+ letterSpacing: {
77
+ tight: -0.05,
78
+ normal: 0,
79
+ wide: 0.05
80
+ },
81
+ fontFeatures: {
82
+ tabularNums: '"tnum" 1',
83
+ proportionalNums: '"pnum" 1',
84
+ slashedZero: '"zero" 1',
85
+ financialNums: '"tnum" 1, "zero" 1',
86
+ "default": 'normal'
87
+ }
88
+ };
89
+
90
+ // ===========================
91
+ // DERIVED GLOBAL TYPES
92
+ // ===========================
93
+
94
+ // ===========================
95
+ // UTILITY FUNCTIONS
96
+ // ===========================
97
+
98
+ // Helper type for text style properties
99
+
100
+ // Type guard to check if a value is a valid GlobalFontFamily
101
+ var isGlobalFontFamily = function isGlobalFontFamily(value) {
102
+ return ['sans', 'serif', 'mono', 'system', 'tabular', 'currency'].includes(value);
103
+ };
104
+
105
+ // Type guard to check if a value is a valid GlobalFontWeight
106
+ var isGlobalFontWeight = function isGlobalFontWeight(value) {
107
+ return ['light', 'regular', 'medium', 'semibold', 'bold', 'extrabold', 'black'].includes(value);
108
+ };
109
+
110
+ // Type for React Native font weights
111
+
112
+ // Map fontWeight values to React Native compatible values
113
+ var mapFontWeight = function mapFontWeight(weight) {
114
+ try {
115
+ // Handle numeric weights
116
+ if (typeof weight === 'number') {
117
+ var weightStr = weight.toString();
118
+ if (['100', '200', '300', '400', '500', '600', '700', '800', '900'].includes(weightStr)) {
119
+ return weightStr;
120
+ }
121
+ return null;
122
+ }
123
+
124
+ // Handle string weights
125
+ var lowerWeight = weight.toLowerCase();
126
+
127
+ // Map common weight names to numeric values
128
+ var weightMap = {
129
+ '100': '100',
130
+ '200': '200',
131
+ '300': '300',
132
+ '400': '400',
133
+ '500': '500',
134
+ '600': '600',
135
+ '700': '700',
136
+ '800': '800',
137
+ '900': '900',
138
+ 'normal': '400',
139
+ 'bold': '700',
140
+ 'lighter': '300',
141
+ 'bolder': '700'
142
+ };
143
+
144
+ // Check if the weight is a direct match
145
+ if (lowerWeight in weightMap) {
146
+ return weightMap[lowerWeight];
147
+ }
148
+
149
+ // Check if the weight exists in our global typography
150
+ if (lowerWeight in globalTypography.fontWeight) {
151
+ var numericWeight = globalTypography.fontWeight[lowerWeight];
152
+ if (typeof numericWeight === 'number') {
153
+ var _weightStr = numericWeight.toString();
154
+ if (['100', '200', '300', '400', '500', '600', '700', '800', '900'].includes(_weightStr)) {
155
+ return _weightStr;
156
+ }
157
+ }
158
+ }
159
+ return null;
160
+ } catch (e) {
161
+ console.warn('Error mapping font weight:', e);
162
+ return null;
163
+ }
164
+ };
165
+
166
+ /**
167
+ * Converts design system typography tokens to React Native's TextStyle format
168
+ * This is the unified function that handles all typography style conversions
169
+ */
170
+ var toTextStyle = function toTextStyle(style, baseFontSize) {
171
+ var result = {};
172
+ var resolvedFontSize;
173
+
174
+ // 1. Resolve Font Size
175
+ if (style.fontSize !== undefined) {
176
+ if (typeof style.fontSize === 'number') {
177
+ resolvedFontSize = style.fontSize;
178
+ } else if (typeof style.fontSize === 'string') {
179
+ // Check if it's a token key
180
+ if (style.fontSize in globalTypography.fontSize) {
181
+ var tokenValue = globalTypography.fontSize;
182
+ if (typeof tokenValue === 'number') {
183
+ resolvedFontSize = tokenValue;
184
+ }
185
+ } else if (!isNaN(Number(style.fontSize))) {
186
+ // It's a string number like ', '
187
+ resolvedFontSize = Number(style.fontSize);
188
+ }
189
+ }
190
+ if (resolvedFontSize !== undefined) {
191
+ result.fontSize = resolvedFontSize;
192
+ }
193
+ } else if (baseFontSize !== undefined) {
194
+ resolvedFontSize = baseFontSize;
195
+ }
196
+
197
+ // 2. Resolve Font Family
198
+ if (style.fontFamily) {
199
+ if (typeof style.fontFamily === 'string' && globalTypography.fontFamily[style.fontFamily]) {
200
+ result.fontFamily = globalTypography.fontFamily[style.fontFamily];
201
+ } else {
202
+ result.fontFamily = String(style.fontFamily);
203
+ }
204
+ }
205
+
206
+ // 3. Resolve Font Weight
207
+ if (style.fontWeight !== undefined) {
208
+ try {
209
+ if (typeof style.fontWeight === 'string' && globalTypography.fontWeight[style.fontWeight]) {
210
+ var fw = globalTypography.fontWeight[style.fontWeight];
211
+ result.fontWeight = fw.toString();
212
+ } else if (typeof style.fontWeight === 'string' || typeof style.fontWeight === 'number') {
213
+ var mappedWeight = mapFontWeight(style.fontWeight);
214
+ if (mappedWeight) {
215
+ result.fontWeight = mappedWeight;
216
+ } else {
217
+ // Fallback for direct string weights like 'bold' or '400'
218
+ result.fontWeight = String(style.fontWeight);
219
+ }
220
+ }
221
+ } catch (e) {
222
+ console.warn("Error processing font weight: ".concat(style.fontWeight), e);
223
+ }
224
+ }
225
+
226
+ // 4. Resolve Line Height (can be a key for multiplier or a raw number for absolute value)
227
+ if (style.lineHeight !== undefined) {
228
+ var lineHeightValue;
229
+ if (style.lineHeight === 'normal') {
230
+ lineHeightValue = undefined;
231
+ } else if (typeof style.lineHeight === 'string' && style.lineHeight in globalTypography.lineHeight) {
232
+ // Convert line height token to number (multiplier)
233
+ var _tokenValue = globalTypography.lineHeight[style.lineHeight];
234
+ if (typeof _tokenValue === 'number' && resolvedFontSize !== undefined) {
235
+ lineHeightValue = _tokenValue * resolvedFontSize;
236
+ }
237
+ } else if (typeof style.lineHeight === 'number' && !isNaN(style.lineHeight)) {
238
+ // Direct assignment for valid numbers (absolute pixel value)
239
+ lineHeightValue = style.lineHeight;
240
+ } else if (typeof style.lineHeight === 'string' && !isNaN(Number(style.lineHeight))) {
241
+ // Convert string numbers to actual numbers
242
+ lineHeightValue = Number(style.lineHeight);
243
+ }
244
+ if (lineHeightValue !== undefined) {
245
+ result.lineHeight = lineHeightValue;
246
+ }
247
+ }
248
+
249
+ // 5. Resolve Letter Spacing (can be a key for em-multiplier or a raw number for absolute value)
250
+ if (style.letterSpacing !== undefined) {
251
+ var letterSpacingValue;
252
+ if (typeof style.letterSpacing === 'string' && style.letterSpacing in globalTypography.letterSpacing) {
253
+ // Convert letter spacing token to number (em multiplier)
254
+ var _tokenValue2 = globalTypography.letterSpacing[style.letterSpacing];
255
+ if (typeof _tokenValue2 === 'number' && resolvedFontSize !== undefined) {
256
+ letterSpacingValue = _tokenValue2 * resolvedFontSize;
257
+ }
258
+ } else if (typeof style.letterSpacing === 'number' && !isNaN(style.letterSpacing)) {
259
+ // Direct assignment for valid numbers (absolute pixel value)
260
+ letterSpacingValue = style.letterSpacing;
261
+ } else if (typeof style.letterSpacing === 'string' && !isNaN(Number(style.letterSpacing))) {
262
+ // Convert string numbers to actual numbers
263
+ letterSpacingValue = Number(style.letterSpacing);
264
+ } else if (style.letterSpacing === 'normal') {
265
+ // 'normal' means 0 letter spacing
266
+ letterSpacingValue = 0;
267
+ }
268
+ if (typeof letterSpacingValue === 'number') {
269
+ result.letterSpacing = letterSpacingValue;
270
+ }
271
+ }
272
+
273
+ // 6. Handle textTransform and other text style properties
274
+ var textStyleProps = ['textTransform', 'fontFeatureSettings', 'textAlign', 'textAlignVertical', 'includeFontPadding'];
275
+ textStyleProps.forEach(function (prop) {
276
+ if (prop in style) {
277
+ result[prop] = style[prop];
278
+ }
279
+ });
280
+
281
+ // 7. Copy any additional properties that aren't handled above
282
+ Object.keys(style).forEach(function (key) {
283
+ if (!['fontFamily', 'fontSize', 'fontWeight', 'lineHeight', 'letterSpacing'].concat(textStyleProps).includes(key)) {
284
+ result[key] = style[key];
285
+ }
286
+ });
287
+ return result;
288
+ };
289
+
290
+ // ===========================
291
+ // LAYER 2: SEMANTIC TYPOGRAPHY TOKENS
292
+ // Purpose-based typography assignments
293
+ // ===========================
294
+
295
+ export var semanticTypography = {
296
+ // Text hierarchy - what users read
297
+ text: {
298
+ // Primary content text
299
+ primary: {
300
+ fontFamily: globalTypography.fontFamily.sans,
301
+ fontSize: globalTypography.fontSize[200],
302
+ fontWeight: globalTypography.fontWeight.regular,
303
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
304
+ letterSpacing: globalTypography.letterSpacing.normal
305
+ },
306
+ // Secondary supporting text
307
+ secondary: {
308
+ fontFamily: globalTypography.fontFamily.sans,
309
+ fontSize: globalTypography.fontSize[100],
310
+ fontWeight: globalTypography.fontWeight.regular,
311
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
312
+ letterSpacing: globalTypography.letterSpacing.normal
313
+ },
314
+ // Tertiary/subtle text
315
+ tertiary: {
316
+ fontFamily: globalTypography.fontFamily.sans,
317
+ fontSize: globalTypography.fontSize[75],
318
+ fontWeight: globalTypography.fontWeight.regular,
319
+ lineHeight: globalTypography.fontSize[75] * globalTypography.lineHeight.normal,
320
+ letterSpacing: globalTypography.letterSpacing.wide
321
+ },
322
+ // Emphasized text within body content
323
+ emphasis: {
324
+ fontFamily: globalTypography.fontFamily.sans,
325
+ fontSize: globalTypography.fontSize[200],
326
+ fontWeight: globalTypography.fontWeight.semibold,
327
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
328
+ letterSpacing: globalTypography.letterSpacing.normal
329
+ }
330
+ },
331
+ // Heading hierarchy
332
+ heading: {
333
+ // Page/section titles
334
+ primary: {
335
+ fontFamily: globalTypography.fontFamily.sans,
336
+ fontSize: globalTypography.fontSize[800],
337
+ fontWeight: globalTypography.fontWeight.bold,
338
+ lineHeight: globalTypography.fontSize[800] * globalTypography.lineHeight.tight,
339
+ letterSpacing: globalTypography.letterSpacing.tight
340
+ },
341
+ // Sub-section titles
342
+ secondary: {
343
+ fontFamily: globalTypography.fontFamily.sans,
344
+ fontSize: globalTypography.fontSize[600],
345
+ fontWeight: globalTypography.fontWeight.semibold,
346
+ lineHeight: globalTypography.fontSize[600] * globalTypography.lineHeight.tight,
347
+ letterSpacing: globalTypography.letterSpacing.normal
348
+ },
349
+ // Card/component titles
350
+ tertiary: {
351
+ fontFamily: globalTypography.fontFamily.sans,
352
+ fontSize: globalTypography.fontSize[500],
353
+ fontWeight: globalTypography.fontWeight.semibold,
354
+ lineHeight: globalTypography.fontSize[500] * globalTypography.lineHeight.normal,
355
+ letterSpacing: globalTypography.letterSpacing.normal
356
+ },
357
+ // Minor headings
358
+ quaternary: {
359
+ fontFamily: globalTypography.fontFamily.sans,
360
+ fontSize: globalTypography.fontSize[400],
361
+ fontWeight: globalTypography.fontWeight.medium,
362
+ lineHeight: globalTypography.fontSize[400] * globalTypography.lineHeight.normal,
363
+ letterSpacing: globalTypography.letterSpacing.normal
364
+ }
365
+ },
366
+ // Interactive text
367
+ interactive: {
368
+ // Links
369
+ link: {
370
+ fontFamily: globalTypography.fontFamily.sans,
371
+ fontSize: globalTypography.fontSize[200],
372
+ fontWeight: globalTypography.fontWeight.medium,
373
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
374
+ letterSpacing: globalTypography.letterSpacing.normal
375
+ },
376
+ // Button text
377
+ button: {
378
+ fontFamily: globalTypography.fontFamily.sans,
379
+ fontSize: globalTypography.fontSize[200],
380
+ fontWeight: globalTypography.fontWeight.semibold,
381
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
382
+ letterSpacing: globalTypography.letterSpacing.wide
383
+ }
384
+ },
385
+ // Utility text
386
+ utility: {
387
+ // Labels and form text
388
+ label: {
389
+ fontFamily: globalTypography.fontFamily.sans,
390
+ fontSize: globalTypography.fontSize[100],
391
+ fontWeight: globalTypography.fontWeight.medium,
392
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
393
+ letterSpacing: globalTypography.letterSpacing.wide
394
+ },
395
+ // Captions and metadata
396
+ caption: {
397
+ fontFamily: globalTypography.fontFamily.sans,
398
+ fontSize: globalTypography.fontSize[75],
399
+ fontWeight: globalTypography.fontWeight.regular,
400
+ lineHeight: globalTypography.fontSize[75] * globalTypography.lineHeight.normal,
401
+ letterSpacing: globalTypography.letterSpacing.wide
402
+ },
403
+ // Code and technical text
404
+ code: {
405
+ fontFamily: globalTypography.fontFamily.mono,
406
+ fontSize: globalTypography.fontSize[100],
407
+ fontWeight: globalTypography.fontWeight.regular,
408
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
409
+ letterSpacing: globalTypography.letterSpacing.normal
410
+ }
411
+ }
412
+ };
413
+
414
+ // ===========================
415
+ // LAYER 3: FINTECH-SPECIFIC TYPOGRAPHY TOKENS
416
+ // Business domain typography assignments
417
+ // ===========================
418
+
419
+ export var fintechTypography = {
420
+ // Currency and monetary amounts
421
+ currency: {
422
+ // Large amounts (hero displays)
423
+ large: {
424
+ fontFamily: globalTypography.fontFamily.currency,
425
+ fontSize: globalTypography.fontSize[800],
426
+ fontWeight: globalTypography.fontWeight.semibold,
427
+ lineHeight: globalTypography.fontSize[800] * globalTypography.lineHeight.tight,
428
+ letterSpacing: globalTypography.letterSpacing.tight,
429
+ fontFeatureSettings: globalTypography.fontFeatures.financialNums
430
+ },
431
+ // Standard amounts (cards, lists)
432
+ medium: {
433
+ fontFamily: globalTypography.fontFamily.currency,
434
+ fontSize: globalTypography.fontSize[500],
435
+ fontWeight: globalTypography.fontWeight.medium,
436
+ lineHeight: globalTypography.fontSize[500] * globalTypography.lineHeight.normal,
437
+ letterSpacing: globalTypography.letterSpacing.normal,
438
+ fontFeatureSettings: globalTypography.fontFeatures.financialNums
439
+ },
440
+ // Small amounts (subtext, fees)
441
+ small: {
442
+ fontFamily: globalTypography.fontFamily.currency,
443
+ fontSize: globalTypography.fontSize[300],
444
+ fontWeight: globalTypography.fontWeight.medium,
445
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal,
446
+ letterSpacing: globalTypography.letterSpacing.normal,
447
+ fontFeatureSettings: globalTypography.fontFeatures.financialNums
448
+ },
449
+ // Micro amounts (precise values)
450
+ micro: {
451
+ fontFamily: globalTypography.fontFamily.currency,
452
+ fontSize: globalTypography.fontSize[200],
453
+ fontWeight: globalTypography.fontWeight.regular,
454
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
455
+ letterSpacing: globalTypography.letterSpacing.normal,
456
+ fontFeatureSettings: globalTypography.fontFeatures.financialNums
457
+ }
458
+ },
459
+ // Tabular data (tables, lists with aligned numbers)
460
+ tabular: {
461
+ // Headers
462
+ header: {
463
+ fontFamily: globalTypography.fontFamily.tabular,
464
+ fontSize: globalTypography.fontSize[100],
465
+ fontWeight: globalTypography.fontWeight.semibold,
466
+ lineHeight: globalTypography.lineHeight.normal,
467
+ letterSpacing: globalTypography.letterSpacing.wide,
468
+ fontFeatureSettings: globalTypography.fontFeatures.tabularNums
469
+ },
470
+ // Data cells
471
+ data: {
472
+ fontFamily: globalTypography.fontFamily.tabular,
473
+ fontSize: globalTypography.fontSize[200],
474
+ fontWeight: globalTypography.fontWeight.regular,
475
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
476
+ letterSpacing: globalTypography.letterSpacing.normal,
477
+ fontFeatureSettings: globalTypography.fontFeatures.tabularNums
478
+ },
479
+ // Numeric data emphasis
480
+ dataEmphasis: {
481
+ fontFamily: globalTypography.fontFamily.tabular,
482
+ fontSize: globalTypography.fontSize[200],
483
+ fontWeight: globalTypography.fontWeight.medium,
484
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
485
+ letterSpacing: globalTypography.letterSpacing.normal,
486
+ fontFeatureSettings: globalTypography.fontFeatures.tabularNums
487
+ }
488
+ },
489
+ // Legal and compliance text
490
+ legal: {
491
+ // Terms and conditions
492
+ terms: {
493
+ fontFamily: globalTypography.fontFamily.sans,
494
+ fontSize: globalTypography.fontSize[100],
495
+ fontWeight: globalTypography.fontWeight.regular,
496
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.relaxed,
497
+ letterSpacing: globalTypography.letterSpacing.normal
498
+ },
499
+ // Disclaimers and fine print
500
+ disclaimer: {
501
+ fontFamily: globalTypography.fontFamily.sans,
502
+ fontSize: globalTypography.fontSize[75],
503
+ fontWeight: globalTypography.fontWeight.regular,
504
+ lineHeight: globalTypography.fontSize[75] * globalTypography.lineHeight.normal,
505
+ letterSpacing: globalTypography.letterSpacing.wide
506
+ },
507
+ // Risk warnings
508
+ warning: {
509
+ fontFamily: globalTypography.fontFamily.sans,
510
+ fontSize: globalTypography.fontSize[100],
511
+ fontWeight: globalTypography.fontWeight.medium,
512
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
513
+ letterSpacing: globalTypography.letterSpacing.normal
514
+ }
515
+ },
516
+ // Transaction and account identifiers
517
+ identifier: {
518
+ // Account numbers, transaction IDs
519
+ account: {
520
+ fontFamily: globalTypography.fontFamily.mono,
521
+ fontSize: globalTypography.fontSize[100],
522
+ fontWeight: globalTypography.fontWeight.regular,
523
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
524
+ letterSpacing: globalTypography.letterSpacing.wide,
525
+ fontFeatureSettings: globalTypography.fontFeatures.slashedZero
526
+ },
527
+ // Reference numbers, confirmation codes
528
+ reference: {
529
+ fontFamily: globalTypography.fontFamily.mono,
530
+ fontSize: globalTypography.fontSize[200],
531
+ fontWeight: globalTypography.fontWeight.medium,
532
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
533
+ letterSpacing: globalTypography.letterSpacing.wide,
534
+ fontFeatureSettings: globalTypography.fontFeatures.slashedZero
535
+ }
536
+ },
537
+ // Market data and trading
538
+ market: {
539
+ // Price displays
540
+ price: {
541
+ fontFamily: globalTypography.fontFamily.tabular,
542
+ fontSize: globalTypography.fontSize[400],
543
+ fontWeight: globalTypography.fontWeight.semibold,
544
+ lineHeight: globalTypography.fontSize[400] * globalTypography.lineHeight.tight,
545
+ letterSpacing: globalTypography.letterSpacing.normal,
546
+ fontFeatureSettings: globalTypography.fontFeatures.financialNums
547
+ },
548
+ // Percentage changes
549
+ percentage: {
550
+ fontFamily: globalTypography.fontFamily.tabular,
551
+ fontSize: globalTypography.fontSize[200],
552
+ fontWeight: globalTypography.fontWeight.medium,
553
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
554
+ letterSpacing: globalTypography.letterSpacing.normal,
555
+ fontFeatureSettings: globalTypography.fontFeatures.financialNums
556
+ },
557
+ // Symbol/ticker text
558
+ symbol: {
559
+ fontFamily: globalTypography.fontFamily.sans,
560
+ fontSize: globalTypography.fontSize[100],
561
+ fontWeight: globalTypography.fontWeight.semibold,
562
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
563
+ letterSpacing: globalTypography.letterSpacing.wide
564
+ }
565
+ }
566
+ };
567
+
568
+ // ===========================
569
+ // LAYER 4: COMPONENT-SPECIFIC TYPOGRAPHY TOKENS
570
+ // Typography for specific UI components
571
+ // ===========================
572
+
573
+ export var componentTypography = {
574
+ // Button component typography
575
+ button: {
576
+ large: _objectSpread(_objectSpread({}, semanticTypography.interactive.button), {}, {
577
+ fontSize: globalTypography.fontSize[300],
578
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
579
+ }),
580
+ medium: _objectSpread(_objectSpread({}, semanticTypography.interactive.button), {}, {
581
+ fontSize: globalTypography.fontSize[200],
582
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal
583
+ }),
584
+ small: _objectSpread(_objectSpread({}, semanticTypography.interactive.button), {}, {
585
+ fontSize: globalTypography.fontSize[100],
586
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
587
+ letterSpacing: globalTypography.letterSpacing.wide
588
+ })
589
+ },
590
+ // Input component typography
591
+ input: {
592
+ // Input field text
593
+ field: {
594
+ fontFamily: globalTypography.fontFamily.sans,
595
+ fontSize: globalTypography.fontSize[200],
596
+ fontWeight: globalTypography.fontWeight.regular,
597
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
598
+ letterSpacing: globalTypography.letterSpacing.normal
599
+ },
600
+ // Placeholder text
601
+ placeholder: {
602
+ fontFamily: globalTypography.fontFamily.sans,
603
+ fontSize: globalTypography.fontSize[200],
604
+ fontWeight: globalTypography.fontWeight.regular,
605
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
606
+ letterSpacing: globalTypography.letterSpacing.normal
607
+ },
608
+ // Label text
609
+ label: _objectSpread({}, semanticTypography.utility.label),
610
+ // Error messages
611
+ error: {
612
+ fontFamily: globalTypography.fontFamily.sans,
613
+ fontSize: globalTypography.fontSize[100],
614
+ fontWeight: globalTypography.fontWeight.medium,
615
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
616
+ letterSpacing: globalTypography.letterSpacing.normal
617
+ }
618
+ },
619
+ // Card component typography
620
+ card: {
621
+ // Card titles
622
+ title: _objectSpread({}, semanticTypography.heading.tertiary),
623
+ // Card content
624
+ content: _objectSpread({}, semanticTypography.text.primary),
625
+ // Card metadata
626
+ metadata: _objectSpread({}, semanticTypography.utility.caption)
627
+ },
628
+ // Navigation component typography
629
+ navigation: {
630
+ // Menu items
631
+ item: {
632
+ fontFamily: globalTypography.fontFamily.sans,
633
+ fontSize: globalTypography.fontSize[200],
634
+ fontWeight: globalTypography.fontWeight.medium,
635
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
636
+ letterSpacing: globalTypography.letterSpacing.normal
637
+ },
638
+ // Breadcrumbs
639
+ breadcrumb: {
640
+ fontFamily: globalTypography.fontFamily.sans,
641
+ fontSize: globalTypography.fontSize[100],
642
+ fontWeight: globalTypography.fontWeight.regular,
643
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
644
+ letterSpacing: globalTypography.letterSpacing.normal
645
+ }
646
+ },
647
+ // Alert/notification component typography
648
+ alert: {
649
+ // Alert titles
650
+ title: {
651
+ fontFamily: globalTypography.fontFamily.sans,
652
+ fontSize: globalTypography.fontSize[200],
653
+ fontWeight: globalTypography.fontWeight.semibold,
654
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
655
+ letterSpacing: globalTypography.letterSpacing.normal
656
+ },
657
+ // Alert body text
658
+ body: {
659
+ fontFamily: globalTypography.fontFamily.sans,
660
+ fontSize: globalTypography.fontSize[100],
661
+ fontWeight: globalTypography.fontWeight.regular,
662
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
663
+ letterSpacing: globalTypography.letterSpacing.normal
664
+ }
665
+ }
666
+ };
667
+
668
+ // ===========================
669
+ // TYPOGRAPHY UTILITIES
670
+ // ===========================
671
+
672
+ // Export the unified toTextStyle function for backward compatibility
673
+ export var typographyUtils = {
674
+ /**
675
+ * Create a complete TextStyle from typography tokens
676
+ * @deprecated Use toTextStyle() directly instead
677
+ */
678
+ createTextStyle: function createTextStyle(tokens) {
679
+ return toTextStyle(tokens);
680
+ },
681
+ /**
682
+ * Get responsive font size based on screen width
683
+ */
684
+ getResponsiveSize: function getResponsiveSize(baseSize, screenWidth) {
685
+ if (screenWidth < 375) {
686
+ return baseSize * 0.9; // Scale down for small screens
687
+ } else if (screenWidth > 768) {
688
+ return baseSize * 1.1; // Scale up for large screens
689
+ }
690
+ return baseSize;
691
+ },
692
+ /**
693
+ * Get currency style based on amount magnitude
694
+ */
695
+ getCurrencyStyle: function getCurrencyStyle(amount) {
696
+ var absAmount = Math.abs(amount);
697
+ if (absAmount >= 1000000) {
698
+ return fintechTypography.currency.large;
699
+ } else if (absAmount >= 1000) {
700
+ return fintechTypography.currency.medium;
701
+ } else if (absAmount >= 1) {
702
+ return fintechTypography.currency.small;
703
+ }
704
+ return fintechTypography.currency.micro;
705
+ },
706
+ /**
707
+ * Enhance text style with financial number features
708
+ */
709
+ withFinancialFeatures: function withFinancialFeatures(baseStyle) {
710
+ return _objectSpread(_objectSpread({}, baseStyle), {}, {
711
+ fontFeatureSettings: globalTypography.fontFeatures.financialNums
712
+ });
713
+ },
714
+ /**
715
+ * Enhance text style for accessibility
716
+ */
717
+ withA11yEnhancements: function withA11yEnhancements(baseStyle) {
718
+ var minSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;
719
+ return _objectSpread(_objectSpread({}, baseStyle), {}, {
720
+ fontSize: Math.max(baseStyle.fontSize || globalTypography.fontSize[200], minSize),
721
+ lineHeight: Math.max(baseStyle.lineHeight || globalTypography.lineHeight.normal, 1.4)
722
+ });
723
+ }
724
+ };
725
+
726
+ // ===========================
727
+ // TYPE EXPORTS
728
+ // ===========================
729
+
730
+ // ===========================
731
+ // MAIN EXPORT
732
+ // ===========================
733
+
734
+ export var typography = {
735
+ global: globalTypography,
736
+ semantic: semanticTypography,
737
+ fintech: fintechTypography,
738
+ component: componentTypography,
739
+ utils: typographyUtils
740
+ };
741
+
742
+ // ====================
743
+ // Type Definitions
744
+ // ====================
745
+
746
+ // Black
747
+
748
+ /**
749
+ * Defines the structure for a single typography variant using global token keys.
750
+ * This is used to define entries in `typographyVariantData`.
751
+ */
752
+
753
+ // ====================
754
+ // Font Definitions
755
+ // ====================
756
+
757
+ var Fonts = {
758
+ Inter: {
759
+ regular: 'Inter-Regular',
760
+ medium: 'Inter-Medium',
761
+ semiBold: 'Inter-SemiBold',
762
+ bold: 'Inter-Bold',
763
+ light: 'Inter-Light'
764
+ },
765
+ RobotoMono: 'RobotoMono-Regular'
766
+ };
767
+
768
+ // ===========================
769
+ // LAYER 2: SEMANTIC TYPOGRAPHY TOKENS
770
+ // Purpose-based typography assignments
771
+ // ===========================
772
+
773
+ export var textStyles = {
774
+ // Display styles
775
+ displayLarge: toTextStyle({
776
+ fontFamily: globalTypography.fontFamily.sans,
777
+ fontSize: globalTypography.fontSize[900],
778
+ fontWeight: globalTypography.fontWeight.regular,
779
+ lineHeight: globalTypography.fontSize[900] * globalTypography.lineHeight.tight
780
+ }),
781
+ displayMedium: toTextStyle({
782
+ fontFamily: globalTypography.fontFamily.sans,
783
+ fontSize: globalTypography.fontSize[800],
784
+ fontWeight: globalTypography.fontWeight.regular,
785
+ lineHeight: globalTypography.fontSize[800] * globalTypography.lineHeight.tight
786
+ }),
787
+ displaySmall: toTextStyle({
788
+ fontFamily: globalTypography.fontFamily.sans,
789
+ fontSize: globalTypography.fontSize[700],
790
+ fontWeight: globalTypography.fontWeight.regular,
791
+ lineHeight: globalTypography.fontSize[700] * globalTypography.lineHeight.tight
792
+ }),
793
+ // Heading styles
794
+ headingH1: toTextStyle({
795
+ fontFamily: globalTypography.fontFamily.sans,
796
+ fontSize: globalTypography.fontSize[600],
797
+ fontWeight: globalTypography.fontWeight.semiBold,
798
+ lineHeight: globalTypography.fontSize[600] * globalTypography.lineHeight.tight
799
+ }),
800
+ headingH2: toTextStyle({
801
+ fontFamily: globalTypography.fontFamily.sans,
802
+ fontSize: globalTypography.fontSize[500],
803
+ fontWeight: globalTypography.fontWeight.semiBold,
804
+ lineHeight: globalTypography.fontSize[500] * globalTypography.lineHeight.tight
805
+ }),
806
+ headingH3: toTextStyle({
807
+ fontFamily: globalTypography.fontFamily.sans,
808
+ fontSize: globalTypography.fontSize[400],
809
+ fontWeight: globalTypography.fontWeight.semiBold,
810
+ lineHeight: globalTypography.lineHeight.tight
811
+ }),
812
+ headingH4: toTextStyle({
813
+ fontFamily: globalTypography.fontFamily.sans,
814
+ fontSize: globalTypography.fontSize[300],
815
+ fontWeight: globalTypography.fontWeight.semiBold,
816
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
817
+ }),
818
+ headingH5: toTextStyle({
819
+ fontFamily: globalTypography.fontFamily.sans,
820
+ fontSize: globalTypography.fontSize[200],
821
+ fontWeight: globalTypography.fontWeight.semiBold,
822
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal
823
+ }),
824
+ headingH6: toTextStyle({
825
+ fontFamily: globalTypography.fontFamily.sans,
826
+ fontSize: globalTypography.fontSize[100],
827
+ fontWeight: globalTypography.fontWeight.semiBold,
828
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
829
+ }),
830
+ // Title styles
831
+ titleLarge: toTextStyle({
832
+ fontFamily: globalTypography.fontFamily.sans,
833
+ fontSize: globalTypography.fontSize[400],
834
+ fontWeight: globalTypography.fontWeight.semiBold,
835
+ lineHeight: globalTypography.lineHeight.tight
836
+ }),
837
+ titleMedium: toTextStyle({
838
+ fontFamily: globalTypography.fontFamily.sans,
839
+ fontSize: globalTypography.fontSize[300],
840
+ fontWeight: globalTypography.fontWeight.semiBold,
841
+ lineHeight: globalTypography.lineHeight.tight
842
+ }),
843
+ titleSmall: toTextStyle({
844
+ fontFamily: globalTypography.fontFamily.sans,
845
+ fontSize: globalTypography.fontSize[200],
846
+ fontWeight: globalTypography.fontWeight.semiBold,
847
+ lineHeight: globalTypography.lineHeight.normal
848
+ }),
849
+ // Body styles
850
+ bodyLarge: toTextStyle({
851
+ fontFamily: globalTypography.fontFamily.sans,
852
+ fontSize: globalTypography.fontSize[300],
853
+ fontWeight: globalTypography.fontWeight.regular,
854
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
855
+ }),
856
+ bodyMedium: toTextStyle({
857
+ fontFamily: globalTypography.fontFamily.sans,
858
+ fontSize: globalTypography.fontSize[200],
859
+ fontWeight: globalTypography.fontWeight.regular,
860
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal
861
+ }),
862
+ bodySmall: toTextStyle({
863
+ fontFamily: globalTypography.fontFamily.sans,
864
+ fontSize: globalTypography.fontSize[100],
865
+ fontWeight: globalTypography.fontWeight.regular,
866
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
867
+ }),
868
+ // Label styles
869
+ labelLarge: toTextStyle({
870
+ fontFamily: globalTypography.fontFamily.sans,
871
+ fontSize: globalTypography.fontSize[200],
872
+ fontWeight: globalTypography.fontWeight.medium,
873
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
874
+ letterSpacing: globalTypography.letterSpacing.wide
875
+ }),
876
+ labelMedium: toTextStyle({
877
+ fontFamily: globalTypography.fontFamily.sans,
878
+ fontSize: globalTypography.fontSize[100],
879
+ fontWeight: globalTypography.fontWeight.medium,
880
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.tight,
881
+ letterSpacing: globalTypography.letterSpacing.wide
882
+ }),
883
+ labelSmall: toTextStyle({
884
+ fontFamily: globalTypography.fontFamily.sans,
885
+ fontSize: globalTypography.fontSize[75],
886
+ fontWeight: globalTypography.fontWeight.medium,
887
+ lineHeight: globalTypography.fontSize[75] * globalTypography.lineHeight.normal,
888
+ letterSpacing: globalTypography.letterSpacing.wide
889
+ }),
890
+ // Other text styles
891
+ caption: toTextStyle({
892
+ fontFamily: globalTypography.fontFamily.sans,
893
+ fontSize: globalTypography.fontSize[100],
894
+ fontWeight: globalTypography.fontWeight.regular,
895
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.tight
896
+ }),
897
+ buttonLarge: toTextStyle({
898
+ fontFamily: globalTypography.fontFamily.sans,
899
+ fontSize: globalTypography.fontSize[300],
900
+ fontWeight: globalTypography.fontWeight.medium,
901
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal,
902
+ letterSpacing: globalTypography.letterSpacing.wide,
903
+ textTransform: 'uppercase'
904
+ }),
905
+ buttonMedium: toTextStyle({
906
+ fontFamily: globalTypography.fontFamily.sans,
907
+ fontSize: globalTypography.fontSize[200],
908
+ fontWeight: globalTypography.fontWeight.medium,
909
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
910
+ letterSpacing: globalTypography.letterSpacing.wide,
911
+ textTransform: 'uppercase'
912
+ }),
913
+ buttonSmall: toTextStyle({
914
+ fontFamily: globalTypography.fontFamily.sans,
915
+ fontSize: globalTypography.fontSize[200],
916
+ fontWeight: globalTypography.fontWeight.medium,
917
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.tight,
918
+ letterSpacing: globalTypography.letterSpacing.wide,
919
+ textTransform: 'uppercase'
920
+ }),
921
+ input: toTextStyle({
922
+ fontFamily: globalTypography.fontFamily.sans,
923
+ fontSize: globalTypography.fontSize[300],
924
+ fontWeight: globalTypography.fontWeight.regular,
925
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
926
+ }),
927
+ helper: toTextStyle({
928
+ fontFamily: globalTypography.fontFamily.sans,
929
+ fontSize: globalTypography.fontSize[100],
930
+ fontWeight: globalTypography.fontWeight.regular,
931
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
932
+ }),
933
+ error: toTextStyle({
934
+ fontFamily: globalTypography.fontFamily.sans,
935
+ fontSize: globalTypography.fontSize[100],
936
+ fontWeight: globalTypography.fontWeight.regular,
937
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
938
+ })
939
+ };
940
+
941
+ // ====================
942
+ // Typography Variant Mappings
943
+ // ====================
944
+
945
+ // Helper function to create a variant with consistent typing
946
+ var createVariant = function createVariant(variant) {
947
+ return toTextStyle(variant);
948
+ };
949
+
950
+ // Define the actual variant data with proper typing
951
+ var typographyVariantData = {
952
+ // global/display variants
953
+ 'global/display/large': {
954
+ fontFamily: globalTypography.fontFamily.sans,
955
+ fontSize: globalTypography.fontSize[1200],
956
+ fontWeight: globalTypography.fontWeight.regular,
957
+ lineHeight: globalTypography.fontSize[1200] * globalTypography.lineHeight.relaxed,
958
+ letterSpacing: globalTypography.letterSpacing.tight
959
+ },
960
+ 'global/display/medium': {
961
+ fontFamily: globalTypography.fontFamily.sans,
962
+ fontSize: globalTypography.fontSize[1100],
963
+ fontWeight: globalTypography.fontWeight.regular,
964
+ lineHeight: globalTypography.fontSize[1100] * globalTypography.lineHeight.tight
965
+ },
966
+ 'global/display/small': {
967
+ fontFamily: globalTypography.fontFamily.sans,
968
+ fontSize: globalTypography.fontSize[900],
969
+ fontWeight: globalTypography.fontWeight.regular,
970
+ lineHeight: globalTypography.fontSize[900] * globalTypography.lineHeight.tight
971
+ },
972
+ // global/heading variants
973
+ 'global/heading/h1': {
974
+ fontFamily: globalTypography.fontFamily.sans,
975
+ fontSize: globalTypography.fontSize[800],
976
+ fontWeight: globalTypography.fontWeight.semibold,
977
+ lineHeight: globalTypography.fontSize[800] * globalTypography.lineHeight.tight
978
+ },
979
+ 'global/heading/h2': {
980
+ fontFamily: globalTypography.fontFamily.sans,
981
+ fontSize: globalTypography.fontSize[700],
982
+ fontWeight: globalTypography.fontWeight.semibold,
983
+ lineHeight: globalTypography.fontSize[700] * globalTypography.lineHeight.tight
984
+ },
985
+ 'global/heading/h3': {
986
+ fontFamily: globalTypography.fontFamily.sans,
987
+ fontSize: globalTypography.fontSize[600],
988
+ fontWeight: globalTypography.fontWeight.semibold,
989
+ lineHeight: globalTypography.fontSize[600] * globalTypography.lineHeight.tight
990
+ },
991
+ 'global/heading/h4': {
992
+ fontFamily: globalTypography.fontFamily.sans,
993
+ fontSize: globalTypography.fontSize[500],
994
+ fontWeight: globalTypography.fontWeight.semibold,
995
+ lineHeight: globalTypography.fontSize[500] * globalTypography.lineHeight.normal
996
+ },
997
+ 'global/heading/h5': {
998
+ fontFamily: globalTypography.fontFamily.sans,
999
+ fontSize: globalTypography.fontSize[400],
1000
+ fontWeight: globalTypography.fontWeight.semibold,
1001
+ lineHeight: globalTypography.fontSize[400] * globalTypography.lineHeight.tight
1002
+ },
1003
+ 'global/heading/h6': {
1004
+ fontFamily: globalTypography.fontFamily.sans,
1005
+ fontSize: globalTypography.fontSize[300],
1006
+ fontWeight: globalTypography.fontWeight.semibold,
1007
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.tight
1008
+ },
1009
+ // global/title variants
1010
+ 'global/title/large': {
1011
+ fontFamily: globalTypography.fontFamily.sans,
1012
+ fontSize: globalTypography.fontSize[600],
1013
+ fontWeight: globalTypography.fontWeight.semibold,
1014
+ lineHeight: globalTypography.fontSize[600] * globalTypography.lineHeight.tight
1015
+ },
1016
+ 'global/title/medium': {
1017
+ fontFamily: globalTypography.fontFamily.sans,
1018
+ fontSize: globalTypography.fontSize[400],
1019
+ fontWeight: globalTypography.fontWeight.semibold,
1020
+ lineHeight: globalTypography.fontSize[400] * globalTypography.lineHeight.tight
1021
+ },
1022
+ 'global/title/small': {
1023
+ fontFamily: globalTypography.fontFamily.sans,
1024
+ fontSize: globalTypography.fontSize[200],
1025
+ fontWeight: globalTypography.fontWeight.semibold,
1026
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.tight
1027
+ },
1028
+ // global/body variants
1029
+ 'global/body/large/regular': {
1030
+ fontFamily: globalTypography.fontFamily.sans,
1031
+ fontSize: globalTypography.fontSize[300],
1032
+ fontWeight: globalTypography.fontWeight.regular,
1033
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
1034
+ },
1035
+ 'global/body/large/medium': {
1036
+ fontFamily: globalTypography.fontFamily.sans,
1037
+ fontSize: globalTypography.fontSize[300],
1038
+ fontWeight: globalTypography.fontWeight.medium,
1039
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
1040
+ },
1041
+ 'global/body/large/bold': {
1042
+ fontFamily: globalTypography.fontFamily.sans,
1043
+ fontSize: globalTypography.fontSize[300],
1044
+ fontWeight: globalTypography.fontWeight.bold,
1045
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
1046
+ },
1047
+ 'global/body/medium/regular': {
1048
+ fontFamily: globalTypography.fontFamily.sans,
1049
+ fontSize: globalTypography.fontSize[200],
1050
+ fontWeight: globalTypography.fontWeight.regular,
1051
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal
1052
+ },
1053
+ 'global/body/medium/medium': {
1054
+ fontFamily: globalTypography.fontFamily.sans,
1055
+ fontSize: globalTypography.fontSize[200],
1056
+ fontWeight: globalTypography.fontWeight.medium,
1057
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal
1058
+ },
1059
+ 'global/body/medium/bold': {
1060
+ fontFamily: globalTypography.fontFamily.sans,
1061
+ fontSize: globalTypography.fontSize[200],
1062
+ fontWeight: globalTypography.fontWeight.bold,
1063
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal
1064
+ },
1065
+ 'global/body/small/regular': {
1066
+ fontFamily: globalTypography.fontFamily.sans,
1067
+ fontSize: globalTypography.fontSize[100],
1068
+ fontWeight: globalTypography.fontWeight.regular,
1069
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
1070
+ },
1071
+ 'global/body/small/medium': {
1072
+ fontFamily: globalTypography.fontFamily.sans,
1073
+ fontSize: globalTypography.fontSize[100],
1074
+ fontWeight: globalTypography.fontWeight.medium,
1075
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
1076
+ },
1077
+ 'global/body/small/bold': {
1078
+ fontFamily: globalTypography.fontFamily.sans,
1079
+ fontSize: globalTypography.fontSize[100],
1080
+ fontWeight: globalTypography.fontWeight.bold,
1081
+ lineHeight: globalTypography.lineHeight.normal
1082
+ },
1083
+ // global/label variants
1084
+ 'global/label/large/regular': {
1085
+ fontFamily: globalTypography.fontFamily.sans,
1086
+ fontSize: globalTypography.fontSize[200],
1087
+ fontWeight: globalTypography.fontWeight.regular,
1088
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
1089
+ letterSpacing: globalTypography.letterSpacing.wide
1090
+ },
1091
+ 'global/label/large/medium': {
1092
+ fontFamily: globalTypography.fontFamily.sans,
1093
+ fontSize: globalTypography.fontSize[200],
1094
+ fontWeight: globalTypography.fontWeight.medium,
1095
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
1096
+ letterSpacing: globalTypography.letterSpacing.wide
1097
+ },
1098
+ 'global/label/large/bold': {
1099
+ fontFamily: globalTypography.fontFamily.sans,
1100
+ fontSize: globalTypography.fontSize[200],
1101
+ fontWeight: globalTypography.fontWeight.bold,
1102
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
1103
+ letterSpacing: globalTypography.letterSpacing.wide
1104
+ },
1105
+ 'global/label/medium/regular': {
1106
+ fontFamily: globalTypography.fontFamily.sans,
1107
+ fontSize: globalTypography.fontSize[100],
1108
+ fontWeight: globalTypography.fontWeight.regular,
1109
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
1110
+ letterSpacing: globalTypography.letterSpacing.wide
1111
+ },
1112
+ 'global/label/medium/medium': {
1113
+ fontFamily: globalTypography.fontFamily.sans,
1114
+ fontSize: globalTypography.fontSize[100],
1115
+ fontWeight: globalTypography.fontWeight.medium,
1116
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
1117
+ letterSpacing: globalTypography.letterSpacing.wide
1118
+ },
1119
+ 'global/label/medium/bold': {
1120
+ fontFamily: globalTypography.fontFamily.sans,
1121
+ fontSize: globalTypography.fontSize[100],
1122
+ fontWeight: globalTypography.fontWeight.bold,
1123
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal,
1124
+ letterSpacing: globalTypography.letterSpacing.wide
1125
+ },
1126
+ 'global/label/small/regular': {
1127
+ fontFamily: globalTypography.fontFamily.sans,
1128
+ fontSize: globalTypography.fontSize[75],
1129
+ fontWeight: globalTypography.fontWeight.regular,
1130
+ lineHeight: globalTypography.fontSize[75] * globalTypography.lineHeight.normal,
1131
+ letterSpacing: globalTypography.letterSpacing.wide
1132
+ },
1133
+ 'global/label/small/medium': {
1134
+ fontFamily: globalTypography.fontFamily.sans,
1135
+ fontSize: globalTypography.fontSize[75],
1136
+ fontWeight: globalTypography.fontWeight.medium,
1137
+ lineHeight: globalTypography.fontSize[75] * globalTypography.lineHeight.normal,
1138
+ letterSpacing: globalTypography.letterSpacing.wide
1139
+ },
1140
+ 'global/label/small/bold': {
1141
+ fontFamily: globalTypography.fontFamily.sans,
1142
+ fontSize: globalTypography.fontSize[75],
1143
+ fontWeight: globalTypography.fontWeight.bold,
1144
+ lineHeight: globalTypography.fontSize[75] * globalTypography.lineHeight.normal,
1145
+ letterSpacing: globalTypography.letterSpacing.wide
1146
+ },
1147
+ // global/code variants
1148
+ 'global/code/large': {
1149
+ fontFamily: globalTypography.fontFamily.mono,
1150
+ fontSize: globalTypography.fontSize[300],
1151
+ fontWeight: globalTypography.fontWeight.regular,
1152
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
1153
+ },
1154
+ 'global/code/medium': {
1155
+ fontFamily: globalTypography.fontFamily.mono,
1156
+ fontSize: globalTypography.fontSize[200],
1157
+ fontWeight: globalTypography.fontWeight.regular,
1158
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal
1159
+ },
1160
+ 'global/code/small': {
1161
+ fontFamily: globalTypography.fontFamily.mono,
1162
+ fontSize: globalTypography.fontSize[100],
1163
+ fontWeight: globalTypography.fontWeight.regular,
1164
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
1165
+ },
1166
+ // global/button variants
1167
+ 'global/button/large': {
1168
+ fontFamily: globalTypography.fontFamily.sans,
1169
+ fontSize: globalTypography.fontSize[200],
1170
+ fontWeight: globalTypography.fontWeight.medium,
1171
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
1172
+ letterSpacing: globalTypography.letterSpacing.wide,
1173
+ textTransform: 'uppercase'
1174
+ },
1175
+ 'global/button/medium': {
1176
+ fontFamily: globalTypography.fontFamily.sans,
1177
+ fontSize: globalTypography.fontSize[200],
1178
+ fontWeight: globalTypography.fontWeight.medium,
1179
+ lineHeight: globalTypography.fontSize[200] * globalTypography.lineHeight.normal,
1180
+ letterSpacing: globalTypography.letterSpacing.wide,
1181
+ textTransform: 'uppercase'
1182
+ },
1183
+ 'global/button/small': {
1184
+ fontFamily: globalTypography.fontFamily.sans,
1185
+ fontSize: globalTypography.fontSize[200],
1186
+ fontWeight: globalTypography.fontWeight.medium,
1187
+ lineHeight: globalTypography.lineHeight.tight,
1188
+ letterSpacing: globalTypography.letterSpacing.wide,
1189
+ textTransform: 'uppercase'
1190
+ },
1191
+ // global/input variants
1192
+ 'global/input/default': {
1193
+ fontFamily: globalTypography.fontFamily.sans,
1194
+ fontSize: globalTypography.fontSize[300],
1195
+ fontWeight: globalTypography.fontWeight.regular,
1196
+ lineHeight: globalTypography.fontSize[300] * globalTypography.lineHeight.normal
1197
+ },
1198
+ 'global/input/helper': {
1199
+ fontFamily: globalTypography.fontFamily.sans,
1200
+ fontSize: globalTypography.fontSize[100],
1201
+ fontWeight: globalTypography.fontWeight.regular,
1202
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
1203
+ },
1204
+ 'global/input/error': {
1205
+ fontFamily: globalTypography.fontFamily.sans,
1206
+ fontSize: globalTypography.fontSize[100],
1207
+ fontWeight: globalTypography.fontWeight.regular,
1208
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.normal
1209
+ },
1210
+ // global/caption variants
1211
+ 'global/caption/regular': {
1212
+ fontFamily: globalTypography.fontFamily.sans,
1213
+ fontSize: globalTypography.fontSize[100],
1214
+ fontWeight: globalTypography.fontWeight.regular,
1215
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.tight
1216
+ },
1217
+ 'global/caption/medium': {
1218
+ fontFamily: globalTypography.fontFamily.sans,
1219
+ fontSize: globalTypography.fontSize[100],
1220
+ fontWeight: globalTypography.fontWeight.medium,
1221
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.tight
1222
+ },
1223
+ 'global/caption/bold': {
1224
+ fontFamily: globalTypography.fontFamily.sans,
1225
+ fontSize: globalTypography.fontSize[100],
1226
+ fontWeight: globalTypography.fontWeight.bold,
1227
+ lineHeight: globalTypography.fontSize[100] * globalTypography.lineHeight.tight
1228
+ },
1229
+ // Buttons
1230
+ // Semantic Typography Variants - Directly spread from semanticTypography
1231
+ 'semantic/text/primary': _objectSpread({}, semanticTypography.text.primary),
1232
+ 'semantic/text/secondary': _objectSpread({}, semanticTypography.text.secondary),
1233
+ 'semantic/text/tertiary': _objectSpread({}, semanticTypography.text.tertiary),
1234
+ 'semantic/text/emphasis': _objectSpread({}, semanticTypography.text.emphasis),
1235
+ 'semantic/heading/primary': _objectSpread({}, semanticTypography.heading.primary),
1236
+ 'semantic/heading/secondary': _objectSpread({}, semanticTypography.heading.secondary),
1237
+ 'semantic/heading/tertiary': _objectSpread({}, semanticTypography.heading.tertiary),
1238
+ 'semantic/heading/quaternary': _objectSpread({}, semanticTypography.heading.quaternary),
1239
+ 'semantic/interactive/link': _objectSpread({}, semanticTypography.interactive.link),
1240
+ 'semantic/interactive/button': _objectSpread({}, semanticTypography.interactive.button),
1241
+ 'semantic/utility/label': _objectSpread({}, semanticTypography.utility.label),
1242
+ 'semantic/utility/caption': _objectSpread({}, semanticTypography.utility.caption),
1243
+ 'semantic/utility/code': _objectSpread({}, semanticTypography.utility.code),
1244
+ // Fintech Typography Variants - Directly spread from fintechTypography
1245
+ 'fintech/currency/large': _objectSpread({}, fintechTypography.currency.large),
1246
+ 'fintech/currency/medium': _objectSpread({}, fintechTypography.currency.medium),
1247
+ 'fintech/currency/small': _objectSpread({}, fintechTypography.currency.small),
1248
+ 'fintech/currency/micro': _objectSpread({}, fintechTypography.currency.micro),
1249
+ 'fintech/tabular/header': _objectSpread({}, fintechTypography.tabular.header),
1250
+ 'fintech/tabular/data': _objectSpread({}, fintechTypography.tabular.data),
1251
+ 'fintech/tabular/dataEmphasis': _objectSpread({}, fintechTypography.tabular.dataEmphasis),
1252
+ 'fintech/legal/terms': _objectSpread({}, fintechTypography.legal.terms),
1253
+ 'fintech/legal/disclaimer': _objectSpread({}, fintechTypography.legal.disclaimer),
1254
+ 'fintech/legal/warning': _objectSpread({}, fintechTypography.legal.warning),
1255
+ 'fintech/identifier/account': _objectSpread({}, fintechTypography.identifier.account),
1256
+ // Button Components - Using the new textStyles
1257
+ 'component/button/contained/large': toTextStyle(_objectSpread(_objectSpread({}, textStyles.buttonLarge), {}, {
1258
+ fontWeight: 'semibold'
1259
+ })),
1260
+ 'component/button/contained/medium': toTextStyle(_objectSpread(_objectSpread({}, textStyles.buttonMedium), {}, {
1261
+ fontWeight: 'semibold'
1262
+ })),
1263
+ 'component/button/contained/small': toTextStyle(_objectSpread(_objectSpread({}, textStyles.buttonSmall), {}, {
1264
+ fontWeight: 'semibold',
1265
+ lineHeight: 'tight'
1266
+ })),
1267
+ 'component/button/outlined/large': toTextStyle(_objectSpread({}, textStyles.buttonLarge)),
1268
+ 'component/button/outlined/medium': toTextStyle(_objectSpread({}, textStyles.buttonMedium)),
1269
+ 'component/button/outlined/small': toTextStyle(_objectSpread(_objectSpread({}, textStyles.buttonSmall), {}, {
1270
+ lineHeight: 'tight'
1271
+ })),
1272
+ 'component/button/text/large': toTextStyle(_objectSpread(_objectSpread({}, textStyles.buttonLarge), {}, {
1273
+ textTransform: 'none',
1274
+ letterSpacing: 'normal'
1275
+ })),
1276
+ 'component/button/text/medium': toTextStyle(_objectSpread(_objectSpread({}, textStyles.buttonMedium), {}, {
1277
+ textTransform: 'none',
1278
+ letterSpacing: 'normal'
1279
+ })),
1280
+ 'component/button/text/small': toTextStyle(_objectSpread(_objectSpread({}, textStyles.buttonSmall), {}, {
1281
+ textTransform: 'none',
1282
+ letterSpacing: 'normal'
1283
+ })),
1284
+ // Input Components
1285
+ 'component/input/label': toTextStyle(_objectSpread(_objectSpread({}, textStyles.labelMedium), {}, {
1286
+ marginBottom: 4
1287
+ })),
1288
+ 'component/input/value': toTextStyle(_objectSpread({}, textStyles.input)),
1289
+ 'component/input/placeholder': toTextStyle(_objectSpread(_objectSpread({}, textStyles.input), {}, {
1290
+ opacity: 0.6
1291
+ })),
1292
+ 'component/input/helper': toTextStyle(_objectSpread(_objectSpread({}, textStyles.helper), {}, {
1293
+ marginTop: 4
1294
+ })),
1295
+ 'component/input/error': toTextStyle(_objectSpread(_objectSpread({}, textStyles.error), {}, {
1296
+ fontWeight: 'medium',
1297
+ marginTop: 4
1298
+ })),
1299
+ // Card Components
1300
+ 'component/card/title': toTextStyle(_objectSpread(_objectSpread({}, textStyles.titleMedium), {}, {
1301
+ fontWeight: 'semibold',
1302
+ marginBottom: 8
1303
+ })),
1304
+ // Component variants
1305
+ 'component/card/subtitle': toTextStyle(_objectSpread(_objectSpread({}, textStyles.bodyMedium), {}, {
1306
+ fontWeight: 'medium',
1307
+ marginBottom: 4
1308
+ })),
1309
+ 'component/card/body': toTextStyle(_objectSpread({}, textStyles.bodyMedium)),
1310
+ 'component/card/caption': toTextStyle(_objectSpread(_objectSpread({}, textStyles.caption), {}, {
1311
+ opacity: 0.7
1312
+ })),
1313
+ // Fintech variants
1314
+ 'fintech/identifier/reference': toTextStyle({
1315
+ fontFamily: globalTypography.fontFamily.mono,
1316
+ fontSize: globalTypography.fontSize[100],
1317
+ // Using number literal type
1318
+ fontWeight: globalTypography.fontWeight.regular,
1319
+ lineHeight: globalTypography.lineHeight.normal,
1320
+ letterSpacing: globalTypography.letterSpacing.normal
1321
+ }),
1322
+ 'fintech/market/symbol': toTextStyle({
1323
+ fontFamily: globalTypography.fontFamily.sans,
1324
+ fontSize: globalTypography.fontSize[300],
1325
+ // Using number literal type
1326
+ fontWeight: globalTypography.fontWeight.semibold,
1327
+ lineHeight: globalTypography.lineHeight.normal,
1328
+ letterSpacing: globalTypography.letterSpacing.tight
1329
+ }),
1330
+ 'fintech/market/price': toTextStyle({
1331
+ fontFamily: globalTypography.fontFamily.tabular,
1332
+ fontSize: globalTypography.fontSize[400],
1333
+ // Using number literal type
1334
+ fontWeight: globalTypography.fontWeight.medium,
1335
+ lineHeight: globalTypography.lineHeight.normal,
1336
+ letterSpacing: globalTypography.letterSpacing.normal
1337
+ }),
1338
+ 'fintech/market/percentage': toTextStyle({
1339
+ fontFamily: globalTypography.fontFamily.tabular,
1340
+ fontSize: globalTypography.fontSize[300],
1341
+ // Using number literal type
1342
+ fontWeight: globalTypography.fontWeight.medium,
1343
+ lineHeight: globalTypography.lineHeight.normal,
1344
+ letterSpacing: globalTypography.letterSpacing.normal
1345
+ }),
1346
+ // Special variants
1347
+ 'special/table/header': toTextStyle({
1348
+ fontFamily: globalTypography.fontFamily.sans,
1349
+ fontSize: globalTypography.fontSize[100],
1350
+ // Using number literal type
1351
+ fontWeight: globalTypography.fontWeight.semibold,
1352
+ lineHeight: globalTypography.lineHeight.normal,
1353
+ letterSpacing: globalTypography.letterSpacing.normal,
1354
+ textTransform: 'uppercase'
1355
+ }),
1356
+ 'special/table/cell': toTextStyle({
1357
+ fontFamily: globalTypography.fontFamily.sans,
1358
+ fontSize: globalTypography.fontSize[200],
1359
+ // Using number literal type
1360
+ fontWeight: globalTypography.fontWeight.regular,
1361
+ lineHeight: globalTypography.lineHeight.normal,
1362
+ letterSpacing: globalTypography.letterSpacing.normal
1363
+ }),
1364
+ 'special/table/footer': toTextStyle({
1365
+ fontFamily: globalTypography.fontFamily.sans,
1366
+ fontSize: globalTypography.fontSize[100],
1367
+ // Using number literal type
1368
+ fontWeight: globalTypography.fontWeight.medium,
1369
+ lineHeight: globalTypography.lineHeight.normal,
1370
+ letterSpacing: globalTypography.letterSpacing.normal
1371
+ }),
1372
+ 'special/tooltip': toTextStyle({
1373
+ fontFamily: globalTypography.fontFamily.sans,
1374
+ fontSize: globalTypography.fontSize[100],
1375
+ // Using number literal type
1376
+ fontWeight: globalTypography.fontWeight.regular,
1377
+ lineHeight: globalTypography.lineHeight.normal,
1378
+ letterSpacing: globalTypography.letterSpacing.normal
1379
+ }),
1380
+ 'special/tab-bar': toTextStyle({
1381
+ fontFamily: globalTypography.fontFamily.sans,
1382
+ fontSize: globalTypography.fontSize[100],
1383
+ // Using number literal type
1384
+ fontWeight: globalTypography.fontWeight.medium,
1385
+ lineHeight: globalTypography.lineHeight.normal,
1386
+ letterSpacing: globalTypography.letterSpacing.normal
1387
+ })
1388
+ };
1389
+ /**
1390
+ * Get typography style for a given variant
1391
+ */
1392
+ export function getTypographyStyle(variant) {
1393
+ var variantDefinition = typographyVariantData[variant];
1394
+ if (!variantDefinition) {
1395
+ console.warn("[DesignSystem] Typography variant \"".concat(variant, "\" not found. Returning empty style."));
1396
+ return {};
1397
+ }
1398
+
1399
+ // Use the unified toTextStyle function to handle the variant definition
1400
+ return toTextStyle(variantDefinition);
1401
+ }
1402
+
1403
+ /**
1404
+ * Type guard to check if a string is a valid TypographyVariant
1405
+ */
1406
+ export function isTypographyVariant(value) {
1407
+ return value in typographyVariantData;
1408
+ }
1409
+
1410
+ /**
1411
+ * Get all available typography variants
1412
+ */
1413
+ export function getTypographyVariants() {
1414
+ return Object.keys(typographyVariantData);
1415
+ }
1416
+
1417
+ // ====================
1418
+ // Type Exports
1419
+ // ====================