onecart-ui 1.0.1 → 1.0.3

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 (60) hide show
  1. package/README.md +64 -27
  2. package/dist/components/Button/Button.d.ts.map +1 -1
  3. package/dist/components/Button/index.d.ts +2 -2
  4. package/dist/components/Button/index.d.ts.map +1 -1
  5. package/dist/components/Icon/Icon.d.ts +40 -0
  6. package/dist/components/Icon/Icon.d.ts.map +1 -0
  7. package/dist/components/Icon/IconList.d.ts +21 -0
  8. package/dist/components/Icon/IconList.d.ts.map +1 -0
  9. package/dist/components/Icon/index.d.ts +6 -0
  10. package/dist/components/Icon/index.d.ts.map +1 -0
  11. package/dist/components/Typography/Body.d.ts +4 -0
  12. package/dist/components/Typography/Body.d.ts.map +1 -0
  13. package/dist/components/Typography/Display.d.ts +4 -0
  14. package/dist/components/Typography/Display.d.ts.map +1 -0
  15. package/dist/components/Typography/Heading.d.ts +4 -0
  16. package/dist/components/Typography/Heading.d.ts.map +1 -0
  17. package/dist/components/Typography/Utility.d.ts +4 -0
  18. package/dist/components/Typography/Utility.d.ts.map +1 -0
  19. package/dist/components/Typography/index.d.ts +4 -2
  20. package/dist/components/Typography/index.d.ts.map +1 -1
  21. package/dist/index.d.ts +4 -9
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.esm.js +1 -1
  24. package/dist/index.esm.js.map +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/styles/tokens/typography.d.ts +11 -0
  28. package/dist/styles/tokens/typography.d.ts.map +1 -1
  29. package/dist/types/Button.d.ts +17 -40
  30. package/dist/types/Button.d.ts.map +1 -1
  31. package/dist/types/Typography.d.ts +20 -55
  32. package/dist/types/Typography.d.ts.map +1 -1
  33. package/package.json +2 -1
  34. package/src/components/Button/Button.tsx +233 -136
  35. package/src/components/Button/index.ts +7 -2
  36. package/src/components/Icon/Icon.tsx +113 -0
  37. package/src/components/Icon/IconList.tsx +110 -0
  38. package/src/components/Icon/icons.json +81 -0
  39. package/src/components/Icon/index.ts +5 -0
  40. package/src/components/Typography/Body.tsx +94 -0
  41. package/src/components/Typography/Display.tsx +79 -0
  42. package/src/components/Typography/Heading.tsx +110 -0
  43. package/src/components/Typography/Utility.tsx +107 -0
  44. package/src/components/Typography/index.ts +4 -7
  45. package/src/index.ts +8 -17
  46. package/src/styles/tokens/tokens-autocomplete-config.json +2 -2
  47. package/src/styles/tokens/tokens.css +1 -1
  48. package/src/styles/tokens/typography.ts +11 -0
  49. package/src/types/Button.ts +19 -48
  50. package/src/types/Typography.ts +21 -81
  51. package/src/components/Heading/Heading.tsx +0 -48
  52. package/src/components/Heading/index.ts +0 -2
  53. package/src/components/Paragraph/Paragraph.tsx +0 -93
  54. package/src/components/Paragraph/index.ts +0 -6
  55. package/src/components/Text/Text.tsx +0 -96
  56. package/src/components/Text/index.ts +0 -2
  57. package/src/components/Typography/Typography.tsx +0 -123
  58. package/src/types/Heading.ts +0 -27
  59. package/src/types/Paragraph.ts +0 -40
  60. package/src/types/Text.ts +0 -40
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/styles/tokens/tokens.ts","../src/styles/tokens/utils/utils.ts","../src/styles/tokens/utils/fontUtils.ts","../src/styles/tokens/typography.ts","../src/styles/tokens/index.ts","../src/theme/index.ts","../src/theme/ThemeProvider.tsx","../src/components/Typography/Typography.tsx","../src/components/Text/Text.tsx","../src/components/Heading/Heading.tsx","../src/components/Button/Button.tsx","../src/components/Paragraph/Paragraph.tsx"],"sourcesContent":["/**\n * File generated by the Figma Token Engine\n * Do not edit directly\n */\n\nexport const BORDER_RADIUS_TOOLTIP_DEFAULT = \"0.25rem\";\nexport const BORDER_RADIUS_POPOVER_DEFAULT = \"0.5rem\";\nexport const BORDER_RADIUS_TAG_SM = \"0.25rem\";\nexport const BORDER_RADIUS_TAG_XL = \"62.4rem\";\nexport const BORDER_RADIUS_BUTTON_SM = \"0.25rem\";\nexport const BORDER_RADIUS_BUTTON_FULL = \"62.4rem\";\nexport const BORDER_RADIUS_INPUT_SM = \"0.25rem\";\nexport const BORDER_RADIUS_INPUT_LG = \"0.5rem\";\nexport const BORDER_RADIUS_CARD_SM = \"0.25rem\";\nexport const BORDER_RADIUS_CARD_MD = \"0.5rem\";\nexport const BORDER_RADIUS_CARD_LG = \"0.75rem\";\nexport const BORDER_RADIUS_MODAL_LG = \"0.75rem\";\nexport const BORDER_RADIUS_MODAL_XL = \"1rem\";\nexport const BORDER_RADIUS_NONE = 0;\nexport const BORDER_RADIUS_XS = \"0.25rem\";\nexport const BORDER_RADIUS_SM = \"0.5rem\";\nexport const BORDER_RADIUS_MD = \"0.75rem\";\nexport const BORDER_RADIUS_LG = \"1rem\";\nexport const BORDER_RADIUS_XL = \"1.25rem\";\nexport const BORDER_RADIUS_2XL = \"1.5rem\";\nexport const BORDER_RADIUS_3XL = \"1.75rem\";\nexport const BORDER_RADIUS_FULL = \"62.4rem\";\nexport const BORDER_WIDTH_BUTTON_DEFAULT = \"0.0625rem\";\nexport const BORDER_WIDTH_BUTTON_HOVER = \"0.125rem\";\nexport const BORDER_WIDTH_BUTTON_PRESSED = \"0.125rem\";\nexport const BORDER_WIDTH_INPUT_DEFAULT = \"0.0625rem\";\nexport const BORDER_WIDTH_INPUT_FOCUS = \"0.125rem\";\nexport const BORDER_WIDTH_INPUT_ERROR = \"0.125rem\";\nexport const BORDER_WIDTH_CARD_DEFAULT = \"0.0625rem\";\nexport const BORDER_WIDTH_CARD_HOVER = \"0.125rem\";\nexport const BORDER_WIDTH_NONE = 0;\nexport const BORDER_WIDTH_XS = \"0.0625rem\";\nexport const BORDER_WIDTH_SM = \"0.125rem\";\nexport const BORDER_WIDTH_MD = \"0.25rem\";\nexport const BORDER_GREEN = \"#00df88\";\nexport const BORDER_BLUE = \"#0053e2\";\nexport const BORDER_YELLOW = \"#f4b400\";\nexport const BORDER_RED = \"#a90000\";\nexport const BORDER_DARK = \"#111\";\nexport const BORDER_LIGHT = \"#e2e2e2\";\nexport const BORDER_LIGHTER = \"#f1f1f1\";\nexport const LAYOUT_SPACING_INLINE_NONE = 0;\nexport const LAYOUT_SPACING_INLINE_3XS = \"0.125rem\";\nexport const LAYOUT_SPACING_INLINE_2XS = \"0.25rem\";\nexport const LAYOUT_SPACING_INLINE_XS = \"0.5rem\";\nexport const LAYOUT_SPACING_INLINE_SM = \"0.75rem\";\nexport const LAYOUT_SPACING_INLINE_MD = \"1rem\";\nexport const LAYOUT_SPACING_INLINE_LG = \"2rem\";\nexport const LAYOUT_SPACING_INLINE_XL = \"2.5rem\";\nexport const LAYOUT_SPACING_INLINE_2XL = \"5rem\";\nexport const LAYOUT_SPACING_STACK_NONE = 0;\nexport const LAYOUT_SPACING_STACK_3XS = \"0.125rem\";\nexport const LAYOUT_SPACING_STACK_2XS = \"0.25rem\";\nexport const LAYOUT_SPACING_STACK_XS = \"0.5rem\";\nexport const LAYOUT_SPACING_STACK_SM = \"0.75rem\";\nexport const LAYOUT_SPACING_STACK_MD = \"1rem\";\nexport const LAYOUT_SPACING_STACK_LG = \"2rem\";\nexport const LAYOUT_SPACING_STACK_XL = \"2.5rem\";\nexport const LAYOUT_SPACING_STACK_2XL = \"5rem\";\nexport const SECTION_SPACING_SM = \"1.5rem\";\nexport const SECTION_SPACING_MD = \"1.75rem\";\nexport const SECTION_SPACING_LG = \"2rem\";\nexport const SECTION_SPACING_XL = \"2.5rem\";\nexport const SECTION_SPACING_2XL = \"3.5rem\";\nexport const SECTION_SPACING_3XL = \"5rem\";\nexport const COMPONENT_CARD_SM = \"0.75rem\";\nexport const COMPONENT_CARD_MD = \"1.25rem\";\nexport const COMPONENT_CARD_LG = \"1.5rem\";\nexport const COMPONENT_CARD_XL = \"2rem\";\nexport const COMPONENT_CARD_2XL = \"2.5rem\";\nexport const COMPONENT_MODAL_SM = \"1.25rem\";\nexport const COMPONENT_MODAL_MD = \"1.5rem\";\nexport const COMPONENT_MODAL_LG = \"1.75rem\";\nexport const SPACE_0 = 0;\nexport const SPACE_3XS = \"0.125rem\";\nexport const SPACE_2XS = \"0.25rem\";\nexport const SPACE_XS = \"0.5rem\";\nexport const SPACE_SM = \"0.75rem\";\nexport const SPACE_MD = \"1rem\";\nexport const SPACE_LG = \"1.25rem\";\nexport const SPACE_XL = \"1.5rem\";\nexport const SPACE_2XL = \"1.75rem\";\nexport const SPACE_3XL = \"2rem\";\nexport const SPACE_4XL = \"2.5rem\";\nexport const SPACE_5XL = \"3rem\";\nexport const SPACE_6XL = \"3.5rem\";\nexport const SPACE_7XL = \"4rem\";\nexport const SPACE_8XL = \"5rem\";\nexport const XS = \"0.75rem\";\nexport const S = \"1rem\";\nexport const MD = \"1.25rem\";\nexport const LG = \"1.5rem\";\nexport const XL = \"1.75rem\";\nexport const XXL = \"2rem\";\nexport const BACKGROUND_YELLOW_LIGHT = \"#fff5d9\";\nexport const BACKGROUND_YELLOW_MEDIUM = \"#ffe7a5\";\nexport const BACKGROUND_BLUE_LIGHT = \"#e3ebff\";\nexport const BACKGROUND_BLUE_MEDIUM = \"#c3deff\";\nexport const BACKGROUND_GREEN_LIGHT = \"#E5FCF3\";\nexport const BACKGROUND_GREEN_MEDIUM = \"#ccf9e7\";\nexport const BACKGROUND_GREEN_DARK = \"#00df88\";\nexport const BACKGROUND_RED_LIGHT = \"#feecec\";\nexport const BACKGROUND_RED_MEDIUM = \"#fed8d8\";\nexport const BACKGROUND_WHITE_LIGHT = \"#ffffff\";\nexport const BACKGROUND_NEUTRAL_DARK = \"#111\";\nexport const BACKGROUND_NEUTRAL_GREY = \"#e2e2e2\";\nexport const BACKGROUND_NEUTRAL_LIGHT = \"#f1f1f1\";\nexport const TEXT_INVERSE = \"#ffffff\";\nexport const TEXT_DISABLED = \"#ababab\";\nexport const TEXT_PLACEHOLDER = \"#919191\";\nexport const TEXT_TERTIARY = \"#525252\";\nexport const TEXT_BODY = \"#3b3b3b\";\nexport const TEXT_HEADER = \"#111\";\nexport const TEXT_GREEN = \"#00df88\";\nexport const TEXT_BLUE = \"#0053e2\";\nexport const TEXT_ERROR = \"#a90000\";\nexport const TEXT_YELLOW = \"#f4b400\";\nexport const FEEDBACK_ALERT_SUCCESS = \"#00df88\";\nexport const FEEDBACK_ALERT_ERROR = \"#a90000\";\nexport const FEEDBACK_ALERT_WARNING = \"#fff5d9\";\nexport const FEEDBACK_ALERT_NEUTRAL = \"#111\";\nexport const ACTION_PRIMARY_DEFAULT = \"#00df88\";\nexport const ACTION_PRIMARY_HOVER = \"#4ce9ac\";\nexport const ACTION_PRIMARY_ACTIVE = \"#98f2cf\";\nexport const ACTION_PRIMARY_DISABLED = \"#E5FCF3\";\nexport const ACTION_SECONDARY_DEFAULT = \"#0053e2\";\nexport const ACTION_SECONDARY_HOVER = \"#254cac\";\nexport const ACTION_SECONDARY_ACTIVE = \"#9ec1ff\";\nexport const ACTION_SECONDARY_DISABLED = \"#e3ebff\";\nexport const ACTION_DESTRUCTIVE_DEFAULT = \"#d60000\";\nexport const ACTION_DESTRUCTIVE_HOVER = \"#a90000\";\nexport const ACTION_DESTRUCTIVE_ACTIVE = \"#fed8d8\";\nexport const ACTION_DESTRUCTIVE_DISABLE = \"#feecec\";\nexport const ACTION_TERTIARY_DEFAULT = \"#3b3b3b\";\nexport const ACTION_TERTIARY_HOVER = \"#111\";\nexport const ACTION_TERTIARY_ACTIVE = \"#ababab\";\nexport const ACTION_TERTIARY_DISABLE = \"#f1f1f1\";\nexport const ICON_YELLOW = \"#f4b400\";\nexport const ICON_BLUE = \"#0053e2\";\nexport const ICON_GREEN = \"#00df88\";\nexport const ICON_RED = \"#a90000\";\nexport const ICON_NEUTRAL = \"#111\";\nexport const ICON_LIGHT = \"#e2e2e2\";\nexport const ICON_LIGHTER = \"#f1f1f1\";\nexport const GREEN_10 = \"#E5FCF3\";\nexport const GREEN_20 = \"#ccf9e7\";\nexport const GREEN_30 = \"#B2F5DB\";\nexport const GREEN_40 = \"#98f2cf\";\nexport const GREEN_50 = \"#81efc3\";\nexport const GREEN_60 = \"#66ecb8\";\nexport const GREEN_70 = \"#4ce9ac\";\nexport const GREEN_80 = \"#31e5a0\";\nexport const GREEN_90 = \"#1ae294\";\nexport const GREEN_100 = \"#00df88\";\nexport const NEUTRAL_10 = \"#f1f1f1\";\nexport const NEUTRAL_20 = \"#e2e2e2\";\nexport const NEUTRAL_30 = \"#c6c6c6\";\nexport const NEUTRAL_40 = \"#ababab\";\nexport const NEUTRAL_50 = \"#919191\";\nexport const NEUTRAL_60 = \"#6a6a6a\";\nexport const NEUTRAL_70 = \"#525252\";\nexport const NEUTRAL_80 = \"#3b3b3b\";\nexport const NEUTRAL_90 = \"#262626\";\nexport const NEUTRAL_100 = \"#111\";\nexport const BLUE_10 = \"#e3ebff\";\nexport const BLUE_20 = \"#c3deff\";\nexport const BLUE_30 = \"#9ec1ff\";\nexport const BLUE_40 = \"#5c83fd\";\nexport const BLUE_50 = \"#446ef5\";\nexport const BLUE_60 = \"#0053e2\";\nexport const BLUE_70 = \"#254cac\";\nexport const BLUE_80 = \"#14328d\";\nexport const BLUE_90 = \"#0c285f\";\nexport const BLUE_100 = \"#071e3c\";\nexport const RED_10 = \"#feecec\";\nexport const RED_20 = \"#fed8d8\";\nexport const RED_30 = \"#feb3b3\";\nexport const RED_40 = \"#fe8888\";\nexport const RED_50 = \"#fb5959\";\nexport const RED_60 = \"#d60000\";\nexport const RED_70 = \"#a90000\";\nexport const RED_80 = \"#820000\";\nexport const RED_90 = \"#550000\";\nexport const RED_100 = \"#3a0000\";\nexport const YELLOW_10 = \"#fff5d9\";\nexport const YELLOW_20 = \"#ffe7a5\";\nexport const YELLOW_30 = \"#ffd86b\";\nexport const YELLOW_40 = \"#ffce46\";\nexport const YELLOW_50 = \"#ffc420\";\nexport const YELLOW_60 = \"#f4b400\";\nexport const YELLOW_70 = \"#dba200\";\nexport const YELLOW_80 = \"#c69200\";\nexport const YELLOW_90 = \"#b38400\";\nexport const YELLOW_100 = \"#9a7100\";\nexport const WHITE_10 = \"#ffffff\";\nexport const DISPLAY_2XL_FONT_FAMILY = \"Campton\";\nexport const DISPLAY_2XL_FONT_WEIGHT = 500;\nexport const DISPLAY_2XL_LINE_HEIGHT = \"56px\";\nexport const DISPLAY_2XL_FONT_SIZE = \"52px\";\nexport const DISPLAY_2XL_LETTER_SPACING = \"0%\";\nexport const DISPLAY_2XL_PARAGRAPH_INDENT = \"0px\";\nexport const DISPLAY_2XL_TEXT_CASE = \"none\";\nexport const DISPLAY_2XL_TEXT_DECORATION = \"none\";\nexport const DISPLAY_XL_FONT_FAMILY = \"Campton\";\nexport const DISPLAY_XL_FONT_WEIGHT = 500;\nexport const DISPLAY_XL_LINE_HEIGHT = \"48px\";\nexport const DISPLAY_XL_FONT_SIZE = \"44px\";\nexport const DISPLAY_XL_LETTER_SPACING = \"0%\";\nexport const DISPLAY_XL_PARAGRAPH_INDENT = \"0px\";\nexport const DISPLAY_XL_TEXT_CASE = \"none\";\nexport const DISPLAY_XL_TEXT_DECORATION = \"none\";\nexport const HEADING_XL_FONT_FAMILY = \"Campton\";\nexport const HEADING_XL_FONT_WEIGHT = 600;\nexport const HEADING_XL_LINE_HEIGHT = \"48px\";\nexport const HEADING_XL_FONT_SIZE = \"40px\";\nexport const HEADING_XL_LETTER_SPACING = \"0%\";\nexport const HEADING_XL_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_XL_TEXT_CASE = \"none\";\nexport const HEADING_XL_TEXT_DECORATION = \"none\";\nexport const HEADING_LG_FONT_FAMILY = \"Campton\";\nexport const HEADING_LG_FONT_WEIGHT = 600;\nexport const HEADING_LG_LINE_HEIGHT = \"44px\";\nexport const HEADING_LG_FONT_SIZE = \"36px\";\nexport const HEADING_LG_LETTER_SPACING = \"0%\";\nexport const HEADING_LG_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_LG_TEXT_CASE = \"none\";\nexport const HEADING_LG_TEXT_DECORATION = \"none\";\nexport const HEADING_MD_FONT_FAMILY = \"Campton\";\nexport const HEADING_MD_FONT_WEIGHT = 600;\nexport const HEADING_MD_LINE_HEIGHT = \"40px\";\nexport const HEADING_MD_FONT_SIZE = \"32px\";\nexport const HEADING_MD_LETTER_SPACING = \"0%\";\nexport const HEADING_MD_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_MD_TEXT_CASE = \"none\";\nexport const HEADING_MD_TEXT_DECORATION = \"none\";\nexport const HEADING_SM_FONT_FAMILY = \"Campton\";\nexport const HEADING_SM_FONT_WEIGHT = 600;\nexport const HEADING_SM_LINE_HEIGHT = \"36px\";\nexport const HEADING_SM_FONT_SIZE = \"28px\";\nexport const HEADING_SM_LETTER_SPACING = \"0%\";\nexport const HEADING_SM_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_SM_TEXT_CASE = \"none\";\nexport const HEADING_SM_TEXT_DECORATION = \"none\";\nexport const HEADING_XS_FONT_FAMILY = \"Campton\";\nexport const HEADING_XS_FONT_WEIGHT = 600;\nexport const HEADING_XS_LINE_HEIGHT = \"28px\";\nexport const HEADING_XS_FONT_SIZE = \"20px\";\nexport const HEADING_XS_LETTER_SPACING = \"0%\";\nexport const HEADING_XS_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_XS_TEXT_CASE = \"none\";\nexport const HEADING_XS_TEXT_DECORATION = \"none\";\nexport const HEADING_2XS_FONT_FAMILY = \"Campton\";\nexport const HEADING_2XS_FONT_WEIGHT = 600;\nexport const HEADING_2XS_LINE_HEIGHT = \"24px\";\nexport const HEADING_2XS_FONT_SIZE = \"18px\";\nexport const HEADING_2XS_LETTER_SPACING = \"0%\";\nexport const HEADING_2XS_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_2XS_TEXT_CASE = \"none\";\nexport const HEADING_2XS_TEXT_DECORATION = \"none\";\nexport const BODY_XL_FONT_FAMILY = \"Campton\";\nexport const BODY_XL_FONT_WEIGHT = \"book\";\nexport const BODY_XL_LINE_HEIGHT = \"28px\";\nexport const BODY_XL_FONT_SIZE = \"18px\";\nexport const BODY_XL_LETTER_SPACING = \"0%\";\nexport const BODY_XL_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_XL_TEXT_CASE = \"none\";\nexport const BODY_XL_TEXT_DECORATION = \"none\";\nexport const BODY_LG_FONT_FAMILY = \"Campton\";\nexport const BODY_LG_FONT_WEIGHT = \"book\";\nexport const BODY_LG_LINE_HEIGHT = \"24px\";\nexport const BODY_LG_FONT_SIZE = \"16px\";\nexport const BODY_LG_LETTER_SPACING = \"0%\";\nexport const BODY_LG_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_LG_TEXT_CASE = \"none\";\nexport const BODY_LG_TEXT_DECORATION = \"none\";\nexport const BODY_MD_FONT_FAMILY = \"Campton\";\nexport const BODY_MD_FONT_WEIGHT = \"book\";\nexport const BODY_MD_LINE_HEIGHT = \"20px\";\nexport const BODY_MD_FONT_SIZE = \"14px\";\nexport const BODY_MD_LETTER_SPACING = \"0%\";\nexport const BODY_MD_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_MD_TEXT_CASE = \"none\";\nexport const BODY_MD_TEXT_DECORATION = \"none\";\nexport const BODY_SM_FONT_FAMILY = \"Campton\";\nexport const BODY_SM_FONT_WEIGHT = \"book\";\nexport const BODY_SM_LINE_HEIGHT = \"20px\";\nexport const BODY_SM_FONT_SIZE = \"12px\";\nexport const BODY_SM_LETTER_SPACING = \"0%\";\nexport const BODY_SM_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_SM_TEXT_CASE = \"none\";\nexport const BODY_SM_TEXT_DECORATION = \"none\";\nexport const UTILITY_BUTTON_FONT_FAMILY = \"Campton\";\nexport const UTILITY_BUTTON_FONT_WEIGHT = 500;\nexport const UTILITY_BUTTON_LINE_HEIGHT = \"16px\";\nexport const UTILITY_BUTTON_FONT_SIZE = \"16px\";\nexport const UTILITY_BUTTON_LETTER_SPACING = \"0%\";\nexport const UTILITY_BUTTON_PARAGRAPH_INDENT = \"0px\";\nexport const UTILITY_BUTTON_TEXT_CASE = \"none\";\nexport const UTILITY_BUTTON_TEXT_DECORATION = \"none\";\nexport const UTILITY_LINK_FONT_FAMILY = \"Campton\";\nexport const UTILITY_LINK_FONT_WEIGHT = 500;\nexport const UTILITY_LINK_LINE_HEIGHT = \"20px\";\nexport const UTILITY_LINK_FONT_SIZE = \"14px\";\nexport const UTILITY_LINK_LETTER_SPACING = \"0%\";\nexport const UTILITY_LINK_PARAGRAPH_INDENT = \"0px\";\nexport const UTILITY_LINK_TEXT_CASE = \"none\";\nexport const UTILITY_LINK_TEXT_DECORATION = \"underline\";\nexport const UTILITY_CAPTION_FONT_FAMILY = \"Campton\";\nexport const UTILITY_CAPTION_FONT_WEIGHT = \"book\";\nexport const UTILITY_CAPTION_LINE_HEIGHT = \"16px\";\nexport const UTILITY_CAPTION_FONT_SIZE = \"12px\";\nexport const UTILITY_CAPTION_LETTER_SPACING = \"0%\";\nexport const UTILITY_CAPTION_PARAGRAPH_INDENT = \"0px\";\nexport const UTILITY_CAPTION_TEXT_CASE = \"none\";\nexport const UTILITY_CAPTION_TEXT_DECORATION = \"none\";\nexport const FONT_FAMILIES_CAMPTON = \"Campton\";\nexport const LINE_HEIGHT_6XL = \"56px\";\nexport const LINE_HEIGHT_5XL = \"48px\";\nexport const LINE_HEIGHT_4XL = \"44px\";\nexport const LINE_HEIGHT_3XL = \"40px\";\nexport const LINE_HEIGHT_2XL = \"36px\";\nexport const LINE_HEIGHT_XL = \"32px\";\nexport const LINE_HEIGHT_LG = \"28px\";\nexport const LINE_HEIGHT_MD = \"24px\";\nexport const LINE_HEIGHT_S = \"20px\";\nexport const LINE_HEIGHT_XS = \"16px\";\nexport const MEDIUM = 500;\nexport const SEMI_BOLD = 600;\nexport const BOOK = \"book\";\nexport const FONT_SIZE_2XS = \"14px\";\nexport const FONT_SIZE_3XS = \"12px\";\nexport const FONT_SIZE_XS = \"16px\";\nexport const FONT_SIZE_MD = \"18px\";\nexport const FONT_SIZE_LG = \"20px\";\nexport const FONT_SIZE_XL = \"28px\";\nexport const FONT_SIZE_2XL = \"32px\";\nexport const FONT_SIZE_3XL = \"36px\";\nexport const FONT_SIZE_4XL = \"40px\";\nexport const FONT_SIZE_5XL = \"44px\";\nexport const FONT_SIZE_6XL = \"52px\";\nexport const LETTER_SPACING_0 = \"0%\";\nexport const TEXT_CASE_NONE = \"none\";\nexport const TEXT_DECORATION_NONE = \"none\";\nexport const TEXT_DECORATION_UNDERLINE = \"underline\";\nexport const PARAGRAPH_INDENT_0 = \"0px\";\n","/**\n * Convert rem values to numbers\n * @param remValue The rem value to convert (e.g. \"1.5rem\")\n * @returns The converted number value\n */\nexport const remToNumber = (remValue: string): number => {\n if (!remValue || typeof remValue !== 'string') return 0;\n return parseFloat(remValue.replace('rem', '')) * 16; // Assuming 1rem = 16px\n};\n\n/**\n * Convert px values to numbers\n * @param pxValue The px value to convert (e.g. \"24px\")\n * @returns The converted number value\n */\nexport const pxToNumber = (pxValue: string): number => {\n if (!pxValue || typeof pxValue !== 'string') return 0;\n return parseFloat(pxValue.replace('px', ''));\n};\n","import { pxToNumber } from \"./utils\";\n\n/**\n * Normalizes font weight to a string representation\n * Converts numeric values to string, handles special cases like \"book\"\n * @param weight The font weight value, can be a string or number\n * @returns Normalized font weight as a string\n */\nexport const normalizeFontWeight = (weight: string | number): string => {\n if (typeof weight === \"number\") {\n return weight.toString();\n }\n\n if (weight === \"book\") {\n return \"400\";\n }\n\n return weight;\n};\n\n/**\n * Calculates an appropriate line height based on font size\n * Uses a standard typographic ratio or falls back to a default multiplier\n *\n * @param fontSize The font size in pixels\n * @param ratio Optional ratio to calculate line height (default: 1.5)\n * @returns The calculated line height as a number\n */\nexport const calculateLineHeight = (\n fontSize: string | number,\n ratio: number = 1.5\n): number => {\n const size = typeof fontSize === \"string\" ? pxToNumber(fontSize) : fontSize;\n return Math.round(size * ratio);\n};\n\n/**\n * Converts letter spacing percentage to a pixel value\n * Figma often uses percentage values for letter spacing\n *\n * @param letterSpacing The letter spacing value (e.g. \"0%\", \"2%\")\n * @param fontSize The font size to calculate relative to\n * @returns The letter spacing in pixels as a number\n */\nexport const letterSpacingToPixels = (\n letterSpacing: string,\n fontSize: string | number\n): number => {\n // If letterSpacing is already a pixel value, convert and return\n if (letterSpacing.endsWith(\"px\")) {\n return pxToNumber(letterSpacing);\n }\n\n // Handle percentage values\n if (letterSpacing.endsWith(\"%\")) {\n const percentage = parseFloat(letterSpacing) / 100;\n const size = typeof fontSize === \"string\" ? pxToNumber(fontSize) : fontSize;\n return size * percentage;\n }\n\n // Default to 0 if format is not recognized\n return 0;\n};\n","// This file maps the generated tokens to a structured format for Typography component\nimport * as tokens from \"./tokens\";\nimport { normalizeFontWeight } from \"./utils/fontUtils\";\nimport { pxToNumber } from \"./utils/utils\";\n\nexport const typographyTokens = {\n // Display variants\n display2xl: {\n fontFamily: tokens.DISPLAY_2XL_FONT_FAMILY,\n fontSize: pxToNumber(tokens.DISPLAY_2XL_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.DISPLAY_2XL_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_6XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.DISPLAY_2XL_LETTER_SPACING,\n textDecoration: tokens.DISPLAY_2XL_TEXT_DECORATION,\n textCase: tokens.DISPLAY_2XL_TEXT_CASE,\n },\n displayXl: {\n fontFamily: tokens.DISPLAY_XL_FONT_FAMILY,\n fontSize: pxToNumber(tokens.DISPLAY_XL_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.DISPLAY_XL_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_5XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.DISPLAY_XL_LETTER_SPACING,\n textDecoration: tokens.DISPLAY_XL_TEXT_DECORATION,\n textCase: tokens.DISPLAY_XL_TEXT_CASE,\n },\n\n // Heading variants\n headingXl: {\n fontFamily: tokens.HEADING_XL_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_XL_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_XL_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_4XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_XL_LETTER_SPACING,\n textDecoration: tokens.HEADING_XL_TEXT_DECORATION,\n textCase: tokens.HEADING_XL_TEXT_CASE,\n },\n headingLg: {\n fontFamily: tokens.HEADING_LG_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_LG_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_LG_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_3XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_LG_LETTER_SPACING,\n textDecoration: tokens.HEADING_LG_TEXT_DECORATION,\n textCase: tokens.HEADING_LG_TEXT_CASE,\n },\n headingMd: {\n fontFamily: tokens.HEADING_MD_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_MD_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_MD_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_2XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_MD_LETTER_SPACING,\n textDecoration: tokens.HEADING_MD_TEXT_DECORATION,\n textCase: tokens.HEADING_MD_TEXT_CASE,\n },\n headingSm: {\n fontFamily: tokens.HEADING_SM_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_SM_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_SM_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_SM_LETTER_SPACING,\n textDecoration: tokens.HEADING_SM_TEXT_DECORATION,\n textCase: tokens.HEADING_SM_TEXT_CASE,\n },\n headingXs: {\n fontFamily: tokens.HEADING_XS_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_XS_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_XS_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_LG),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_XS_LETTER_SPACING,\n textDecoration: tokens.HEADING_XS_TEXT_DECORATION,\n textCase: tokens.HEADING_XS_TEXT_CASE,\n },\n\n // Body text variants\n bodyLg: {\n fontFamily: tokens.BODY_LG_FONT_FAMILY,\n fontSize: pxToNumber(tokens.BODY_LG_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.BODY_LG_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.BODY_LG_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.BODY_LG_LETTER_SPACING,\n textDecoration: tokens.BODY_LG_TEXT_DECORATION,\n textCase: tokens.BODY_LG_TEXT_CASE,\n paragraphIndent: tokens.BODY_LG_PARAGRAPH_INDENT,\n },\n bodyMd: {\n fontFamily: tokens.BODY_MD_FONT_FAMILY,\n fontSize: pxToNumber(tokens.BODY_MD_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.BODY_MD_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.BODY_MD_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.BODY_MD_LETTER_SPACING,\n textDecoration: tokens.BODY_MD_TEXT_DECORATION,\n textCase: tokens.BODY_MD_TEXT_CASE,\n paragraphIndent: tokens.BODY_MD_PARAGRAPH_INDENT,\n },\n bodySm: {\n fontFamily: tokens.BODY_SM_FONT_FAMILY,\n fontSize: pxToNumber(tokens.BODY_SM_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.BODY_SM_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.BODY_SM_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.BODY_SM_LETTER_SPACING,\n textDecoration: tokens.BODY_SM_TEXT_DECORATION,\n textCase: tokens.BODY_SM_TEXT_CASE,\n paragraphIndent: tokens.BODY_SM_PARAGRAPH_INDENT,\n },\n bodyXs: {\n // Map to utility-caption which is our smallest text style in Figma tokens\n fontFamily: tokens.UTILITY_CAPTION_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_CAPTION_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_CAPTION_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_CAPTION_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.UTILITY_CAPTION_LETTER_SPACING,\n textDecoration: tokens.UTILITY_CAPTION_TEXT_DECORATION,\n textCase: tokens.UTILITY_CAPTION_TEXT_CASE,\n paragraphIndent: tokens.UTILITY_CAPTION_PARAGRAPH_INDENT,\n },\n\n // Label variants - map to Utility tokens from Figma\n labelLg: {\n // Maps to utility-button\n fontFamily: tokens.UTILITY_BUTTON_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_BUTTON_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_BUTTON_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_BUTTON_LINE_HEIGHT),\n color: tokens.TEXT_TERTIARY,\n letterSpacing: tokens.UTILITY_BUTTON_LETTER_SPACING,\n textDecoration: tokens.UTILITY_BUTTON_TEXT_DECORATION,\n textCase: tokens.UTILITY_BUTTON_TEXT_CASE,\n },\n labelMd: {\n // Maps to utility-link\n fontFamily: tokens.UTILITY_LINK_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_LINK_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_LINK_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_LINK_LINE_HEIGHT),\n color: tokens.TEXT_TERTIARY,\n letterSpacing: tokens.UTILITY_LINK_LETTER_SPACING,\n textDecoration: tokens.TEXT_DECORATION_NONE, // Override the default underline from utility-link\n textCase: tokens.UTILITY_LINK_TEXT_CASE,\n },\n labelSm: {\n // Maps to utility-caption\n fontFamily: tokens.UTILITY_CAPTION_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_CAPTION_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_CAPTION_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_CAPTION_LINE_HEIGHT),\n color: tokens.TEXT_TERTIARY,\n letterSpacing: tokens.UTILITY_CAPTION_LETTER_SPACING,\n textDecoration: tokens.UTILITY_CAPTION_TEXT_DECORATION,\n textCase: tokens.UTILITY_CAPTION_TEXT_CASE,\n },\n\n // Weights mapping for custom weight overrides\n weights: {\n normal: \"400\", // Regular weight\n medium: normalizeFontWeight(tokens.MEDIUM),\n semibold: normalizeFontWeight(tokens.SEMI_BOLD),\n bold: \"700\", // Bold weight (not directly defined in tokens)\n },\n};\n\nexport default typographyTokens;\n","// This file maps the generated tokens to a structured format our components expect\nimport * as tokens from './tokens';\nimport { typographyTokens } from './typography';\n\nexport { typographyTokens };\n\n// Convert rem values to numbers\nconst remToNumber = (remValue: string): number => {\n if (!remValue || typeof remValue !== 'string') return 0;\n return parseFloat(remValue.replace('rem', '')) * 16; // Assuming 1rem = 16px\n};\n\n// Convert px values to numbers\nconst pxToNumber = (pxValue: string): number => {\n if (!pxValue || typeof pxValue !== 'string') return 0;\n return parseFloat(pxValue.replace('px', ''));\n};\n\n// Size configurations for buttons\nconst buttonSizes = {\n sm: {\n paddingHorizontal: remToNumber(tokens.LAYOUT_SPACING_INLINE_SM),\n paddingVertical: remToNumber(tokens.LAYOUT_SPACING_STACK_XS),\n fontSize: pxToNumber(tokens.FONT_SIZE_3XS),\n borderRadius: remToNumber(tokens.BORDER_RADIUS_BUTTON_SM),\n minHeight: 32,\n },\n md: {\n paddingHorizontal: remToNumber(tokens.LAYOUT_SPACING_INLINE_MD),\n paddingVertical: remToNumber(tokens.LAYOUT_SPACING_STACK_SM),\n fontSize: pxToNumber(tokens.FONT_SIZE_XS),\n borderRadius: remToNumber(tokens.BORDER_RADIUS_XS),\n minHeight: 40,\n },\n lg: {\n paddingHorizontal: remToNumber(tokens.LAYOUT_SPACING_INLINE_LG),\n paddingVertical: remToNumber(tokens.LAYOUT_SPACING_STACK_MD),\n fontSize: pxToNumber(tokens.FONT_SIZE_MD),\n borderRadius: remToNumber(tokens.BORDER_RADIUS_SM),\n minHeight: 48,\n }\n};\n\n// Common button properties\nconst buttonCommon = {\n fontWeight: tokens.MEDIUM,\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_XS),\n borderWidth: pxToNumber(tokens.BORDER_WIDTH_BUTTON_DEFAULT),\n transition: 'all 0.2s ease-in-out',\n};\n\n// Button tokens organized by variant and size\nexport const buttonTokens = {\n primary: {\n background: {\n default: tokens.ACTION_PRIMARY_DEFAULT,\n hover: tokens.ACTION_PRIMARY_HOVER,\n active: tokens.ACTION_PRIMARY_ACTIVE,\n disabled: tokens.ACTION_PRIMARY_DISABLED,\n },\n text: {\n default: \"#FFFFFF\", // White\n disabled: tokens.NEUTRAL_50,\n },\n border: {\n default: tokens.ACTION_PRIMARY_DEFAULT,\n hover: tokens.ACTION_PRIMARY_HOVER,\n active: tokens.ACTION_PRIMARY_ACTIVE,\n disabled: tokens.ACTION_PRIMARY_DISABLED,\n }\n },\n secondary: {\n background: {\n default: tokens.NEUTRAL_10,\n hover: tokens.NEUTRAL_20,\n active: tokens.NEUTRAL_30,\n disabled: tokens.NEUTRAL_10,\n },\n text: {\n default: tokens.NEUTRAL_70,\n disabled: tokens.NEUTRAL_40,\n },\n border: {\n default: tokens.NEUTRAL_30,\n hover: tokens.NEUTRAL_40,\n active: tokens.NEUTRAL_50,\n disabled: tokens.NEUTRAL_20,\n }\n },\n outline: {\n background: {\n default: 'transparent',\n hover: tokens.ACTION_PRIMARY_DISABLED,\n active: tokens.ACTION_PRIMARY_ACTIVE,\n disabled: 'transparent',\n },\n text: {\n default: tokens.ACTION_PRIMARY_DEFAULT,\n disabled: tokens.NEUTRAL_40,\n },\n border: {\n default: tokens.ACTION_PRIMARY_DEFAULT,\n hover: tokens.ACTION_PRIMARY_HOVER,\n active: tokens.ACTION_PRIMARY_ACTIVE,\n disabled: tokens.NEUTRAL_30,\n }\n },\n ghost: {\n background: {\n default: 'transparent',\n hover: tokens.NEUTRAL_10,\n active: tokens.NEUTRAL_20,\n disabled: 'transparent',\n },\n text: {\n default: tokens.NEUTRAL_60,\n disabled: tokens.NEUTRAL_40,\n },\n border: {\n default: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n }\n },\n sizes: buttonSizes,\n common: buttonCommon\n};\n\nexport default buttonTokens;\n","export interface ThemeColors {\n primary: string;\n secondary: string;\n background: string;\n surface: string;\n text: string;\n textSecondary: string;\n border: string;\n error: string;\n warning: string;\n success: string;\n}\n\nexport interface ThemeSpacing {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n}\n\nexport interface ThemeBorderRadius {\n none: number;\n sm: number;\n md: number;\n lg: number;\n full: number;\n}\n\nexport interface ThemeTypography {\n fontSize: {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n xxl: number;\n };\n fontWeight: {\n normal: '400' | 'normal';\n medium: '500' | 'medium';\n semibold: '600' | 'semibold';\n bold: '700' | 'bold';\n };\n lineHeight: {\n tight: number;\n normal: number;\n relaxed: number;\n };\n}\n\nexport interface Theme {\n colors: ThemeColors;\n spacing: ThemeSpacing;\n borderRadius: ThemeBorderRadius;\n typography: ThemeTypography;\n}\n\nexport const defaultTheme: Theme = {\n colors: {\n primary: '#007AFF',\n secondary: '#5856D6',\n background: '#FFFFFF',\n surface: '#F2F2F7',\n text: '#000000',\n textSecondary: '#8E8E93',\n border: '#E5E5EA',\n error: '#FF3B30',\n warning: '#FF9500',\n success: '#34C759',\n },\n spacing: {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32,\n },\n borderRadius: {\n none: 0,\n sm: 4,\n md: 8,\n lg: 12,\n full: 9999,\n },\n typography: {\n fontSize: {\n xs: 12,\n sm: 14,\n md: 16,\n lg: 18,\n xl: 20,\n xxl: 24,\n },\n fontWeight: {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n lineHeight: {\n tight: 1.2,\n normal: 1.5,\n relaxed: 1.8,\n },\n },\n};\n","import React, { createContext, useContext, ReactNode } from \"react\";\nimport { Theme, defaultTheme } from \"./index\";\n\ninterface ThemeContextValue {\n theme: Theme;\n updateTheme: (newTheme: Partial<Theme>) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\ninterface ThemeProviderProps {\n children: ReactNode;\n theme?: Partial<Theme>;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n theme: customTheme,\n}) => {\n // Using useMemo instead of useState to prevent unnecessary re-renders\n const theme = React.useMemo<Theme>(\n () => ({\n ...defaultTheme,\n ...customTheme,\n colors: { ...defaultTheme.colors, ...customTheme?.colors },\n spacing: { ...defaultTheme.spacing, ...customTheme?.spacing },\n borderRadius: {\n ...defaultTheme.borderRadius,\n ...customTheme?.borderRadius,\n },\n typography: {\n ...defaultTheme.typography,\n ...customTheme?.typography,\n fontSize: {\n ...defaultTheme.typography.fontSize,\n ...customTheme?.typography?.fontSize,\n },\n fontWeight: {\n ...defaultTheme.typography.fontWeight,\n ...customTheme?.typography?.fontWeight,\n },\n lineHeight: {\n ...defaultTheme.typography.lineHeight,\n ...customTheme?.typography?.lineHeight,\n },\n },\n }),\n [customTheme]\n );\n\n const updateTheme = React.useCallback((newTheme: Partial<Theme>) => {\n console.log(\n \"Theme update requested, but we are using static theme for now.\",\n newTheme\n );\n }, []);\n\n return (\n <ThemeContext.Provider value={{ theme, updateTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextValue => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n","import React from \"react\";\nimport { Text, TextStyle } from \"react-native\";\nimport { typographyTokens } from \"../../styles/tokens\";\nimport * as tokens from \"../../styles/tokens/tokens\";\nimport { useTheme } from \"../../theme/ThemeProvider\";\nimport { letterSpacingToPixels } from \"../../styles/tokens/utils/fontUtils\";\nimport { TypographyProps } from \"../../types/Typography\";\n\nexport const Typography: React.FC<TypographyProps> = ({\n children,\n variant = \"bodyMd\",\n align = \"left\",\n weight,\n color,\n truncate = false,\n numberOfLines,\n style,\n accessibilityLabel,\n testID,\n ...rest\n}) => {\n const { theme } = useTheme();\n\n const getTypographyStyles = React.useMemo((): TextStyle => {\n try {\n const variantStyle = typographyTokens[variant];\n\n const textAlign = align;\n\n const fontWeight = weight\n ? typographyTokens.weights[weight]\n : variantStyle.fontWeight;\n\n let defaultColor = variantStyle.color;\n if (theme?.colors?.text && typeof theme.colors.text === \"object\") {\n const themeTextColor = (theme.colors.text as Record<string, string>)[\n variant\n ];\n if (themeTextColor) {\n defaultColor = themeTextColor;\n }\n }\n const textColor = color || defaultColor;\n\n // Create style object\n const styles: TextStyle = {\n fontFamily: variantStyle.fontFamily,\n fontSize: variantStyle.fontSize,\n fontWeight: fontWeight as any,\n lineHeight: variantStyle.lineHeight,\n color: textColor,\n textAlign,\n };\n\n if (variantStyle.letterSpacing) {\n styles.letterSpacing = letterSpacingToPixels(\n variantStyle.letterSpacing.toString(),\n variantStyle.fontSize\n );\n }\n\n if (\n variantStyle.textDecoration &&\n variantStyle.textDecoration !== \"none\"\n ) {\n styles.textDecorationLine = variantStyle.textDecoration as any;\n }\n\n if (variantStyle.textCase && variantStyle.textCase !== \"none\") {\n if (variantStyle.textCase === \"uppercase\") {\n styles.textTransform = \"uppercase\";\n } else if (variantStyle.textCase === \"lowercase\") {\n styles.textTransform = \"lowercase\";\n } else if (variantStyle.textCase === \"capitalize\") {\n styles.textTransform = \"capitalize\";\n }\n }\n\n return styles;\n } catch (error) {\n return {\n fontSize: 16,\n fontWeight: \"400\",\n lineHeight: 24,\n color: tokens.TEXT_BODY || \"#000000\",\n textAlign: align,\n };\n }\n }, [variant, align, weight, color, theme]);\n\n const textStyles = React.useMemo((): TextStyle => {\n const combinedStyles: TextStyle = { ...getTypographyStyles };\n\n if (truncate) {\n const webStyles: any = {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n };\n Object.assign(combinedStyles, webStyles);\n }\n\n if (style) {\n Object.assign(combinedStyles, style);\n }\n\n return combinedStyles;\n }, [getTypographyStyles, truncate, style]);\n\n return (\n <Text\n style={textStyles}\n numberOfLines={numberOfLines || (truncate ? 1 : undefined)}\n accessibilityLabel={accessibilityLabel}\n testID={testID}\n {...rest}\n >\n {children}\n </Text>\n );\n};\n\nexport default Typography;\n","import React from \"react\";\nimport { TouchableOpacity, TextStyle, View } from \"react-native\";\nimport * as tokens from \"../../styles/tokens/tokens\";\nimport { Typography } from \"../Typography\";\nimport { useTheme } from \"../../theme/ThemeProvider\";\nimport { TextProps } from \"../../types/Text\";\n\nexport const Text: React.FC<TextProps> = ({\n children,\n variant = \"bodyMd\",\n align,\n weight,\n color,\n underline = false,\n strikethrough = false,\n italic = false,\n link = false,\n onLinkPress,\n style,\n ...rest\n}) => {\n const { theme } = useTheme();\n\n const getTextDecorations = React.useMemo((): TextStyle => {\n const decorations: TextStyle = {};\n\n if (underline) {\n decorations.textDecorationLine = \"underline\";\n }\n\n if (strikethrough) {\n decorations.textDecorationLine = decorations.textDecorationLine\n ? \"underline line-through\"\n : \"line-through\";\n }\n\n if (italic) {\n decorations.fontStyle = \"italic\";\n }\n\n if (link) {\n const linkColor = color || theme.colors?.primary || tokens.TEXT_BLUE;\n decorations.color = linkColor;\n\n decorations.textDecorationLine = underline\n ? \"underline\"\n : decorations.textDecorationLine || tokens.TEXT_DECORATION_NONE;\n }\n\n return decorations;\n }, [underline, strikethrough, italic, link, color, theme]);\n\n const combinedStyle = React.useMemo(\n () => ({\n ...getTextDecorations,\n ...style,\n }),\n [getTextDecorations, style]\n );\n\n if (link && onLinkPress) {\n return (\n <TouchableOpacity\n onPress={onLinkPress}\n accessibilityRole=\"link\"\n activeOpacity={0.7}\n >\n <Typography\n variant={variant}\n align={align}\n weight={weight}\n color={color || theme.colors?.primary || tokens.TEXT_BLUE}\n style={combinedStyle}\n {...rest}\n >\n {children}\n </Typography>\n </TouchableOpacity>\n );\n }\n\n return (\n <Typography\n variant={variant}\n align={align}\n weight={weight}\n color={color}\n style={combinedStyle}\n {...rest}\n >\n {children}\n </Typography>\n );\n};\n\nexport default Text;\n","import React from \"react\";\nimport * as tokens from \"../../styles/tokens/tokens\";\nimport { HeadingProps } from \"../../types/Heading\";\nimport { Typography } from \"../Typography\";\n\nconst headingLevelToVariant = {\n h1: \"headingXl\",\n h2: \"headingLg\",\n h3: \"headingMd\",\n h4: \"headingSm\",\n h5: \"headingXs\",\n h6: \"headingXs\",\n};\n\nexport const Heading: React.FC<HeadingProps> = ({\n children,\n level = \"h2\",\n subtitle,\n subtitleProps,\n ...rest\n}) => {\n const variant = headingLevelToVariant[level];\n\n return (\n <>\n <Typography variant={variant} accessibilityRole={level} {...rest}>\n {children}\n </Typography>\n\n {subtitle && (\n <Typography\n variant=\"bodySm\"\n color={tokens.TEXT_TERTIARY}\n style={{\n marginTop: tokens.LAYOUT_SPACING_STACK_XS\n ? parseInt(tokens.LAYOUT_SPACING_STACK_XS)\n : 4,\n }}\n {...subtitleProps}\n >\n {subtitle}\n </Typography>\n )}\n </>\n );\n};\n\nexport default Heading;\n","import React from \"react\";\nimport {\n TouchableOpacity,\n Text,\n ActivityIndicator,\n ViewStyle,\n TextStyle,\n} from \"react-native\";\nimport { buttonTokens } from \"../../styles/tokens\";\nimport { ButtonProps } from \"../../types/Button\";\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant = \"primary\",\n size = \"md\",\n disabled = false,\n fullWidth = false,\n loading = false,\n style,\n textStyle,\n accessibilityLabel,\n testID,\n onPress,\n}) => {\n // Calculate variant styles\n const variantStyles = React.useMemo(() => {\n try {\n const sizeConfig = buttonTokens.sizes[size];\n const variantConfig = buttonTokens[variant];\n\n const baseStyle: ViewStyle = {\n borderRadius: sizeConfig.borderRadius,\n borderWidth: buttonTokens.common.borderWidth,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"row\",\n };\n\n return {\n ...baseStyle,\n backgroundColor: disabled\n ? variantConfig.background.disabled\n : variantConfig.background.default,\n borderColor: disabled\n ? variantConfig.border.disabled\n : variantConfig.border.default,\n };\n } catch (error) {\n // Fallback styles\n return {\n backgroundColor: variant === \"primary\" ? \"#007AFF\" : \"transparent\",\n borderColor: variant === \"primary\" ? \"#007AFF\" : \"#E5E5EA\",\n borderWidth: 1,\n borderRadius: 4,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"row\",\n };\n }\n }, [variant, size, disabled]);\n\n // Calculate size styles\n const sizeStyles = React.useMemo(() => {\n try {\n const sizeConfig = buttonTokens.sizes[size];\n return {\n paddingHorizontal: sizeConfig.paddingHorizontal,\n paddingVertical: sizeConfig.paddingVertical,\n minHeight: sizeConfig.minHeight,\n };\n } catch (error) {\n // Fallback styles\n return {\n paddingHorizontal: 16,\n paddingVertical: 8,\n minHeight: size === \"sm\" ? 32 : size === \"lg\" ? 48 : 40,\n };\n }\n }, [size]);\n\n // Calculate text styles\n const textStyles = React.useMemo(() => {\n try {\n const sizeConfig = buttonTokens.sizes[size];\n const variantConfig = buttonTokens[variant];\n\n const baseTextStyle: TextStyle = {\n fontSize: sizeConfig.fontSize,\n fontWeight: buttonTokens.common.fontWeight as any,\n lineHeight: buttonTokens.common.lineHeight,\n color: disabled\n ? variantConfig.text.disabled\n : variantConfig.text.default,\n };\n\n return {\n ...baseTextStyle,\n ...textStyle,\n };\n } catch (error) {\n // Fallback styles\n return {\n fontSize: size === \"sm\" ? 12 : size === \"lg\" ? 18 : 16,\n fontWeight: \"500\",\n color: disabled\n ? \"#8E8E93\"\n : variant === \"primary\"\n ? \"#FFFFFF\"\n : \"#007AFF\",\n ...textStyle,\n };\n }\n }, [variant, size, disabled, textStyle]);\n\n // Handle button press\n const handlePress = React.useCallback(() => {\n if (!disabled && !loading && onPress) {\n onPress();\n }\n }, [disabled, loading, onPress]);\n\n // Combine all styles\n const buttonStyles = React.useMemo(\n () => ({\n ...variantStyles,\n ...sizeStyles,\n ...(fullWidth && { width: \"100%\" }),\n ...(disabled && { opacity: 0.6 }),\n ...style,\n }),\n [variantStyles, sizeStyles, fullWidth, disabled, style]\n );\n\n return (\n <TouchableOpacity\n style={buttonStyles}\n onPress={handlePress}\n disabled={disabled || loading}\n accessibilityLabel={accessibilityLabel}\n accessibilityRole=\"button\"\n testID={testID}\n >\n {loading && (\n <ActivityIndicator\n size=\"small\"\n color={\n typeof textStyles.color === \"string\" ? textStyles.color : \"#000000\"\n }\n style={{ marginRight: 8 }}\n />\n )}\n <Text style={textStyles}>{children}</Text>\n </TouchableOpacity>\n );\n};\n","import React from \"react\";\nimport { View } from \"react-native\";\nimport * as tokens from \"../../styles/tokens/tokens\";\nimport { ParagraphProps } from \"../../types/Paragraph\";\nimport { remToNumber } from \"../../styles/tokens/utils/utils\";\nimport { Text } from \"../Text\";\n\nexport const Paragraph: React.FC<ParagraphProps> = ({\n children,\n size = \"md\",\n spacing = \"md\",\n firstLineIndent = false,\n dropCap = false,\n style,\n ...rest\n}) => {\n const getVariant = () => {\n switch (size) {\n case \"xs\":\n return \"bodyXs\";\n case \"sm\":\n return \"bodySm\";\n case \"lg\":\n return \"bodyLg\";\n case \"md\":\n default:\n return \"bodyMd\";\n }\n };\n\n const getMarginBottom = () => {\n switch (spacing) {\n case \"none\":\n return tokens.LAYOUT_SPACING_STACK_NONE;\n case \"xs\":\n return remToNumber(tokens.LAYOUT_SPACING_STACK_XS);\n case \"sm\":\n return remToNumber(tokens.LAYOUT_SPACING_STACK_SM);\n case \"lg\":\n return remToNumber(tokens.LAYOUT_SPACING_STACK_LG);\n case \"xl\":\n return remToNumber(tokens.LAYOUT_SPACING_STACK_XL);\n case \"md\":\n default:\n return remToNumber(tokens.LAYOUT_SPACING_STACK_MD);\n }\n };\n\n const paragraphStyle = {\n marginBottom: getMarginBottom(),\n ...(firstLineIndent\n ? {\n textIndent: remToNumber(tokens.LAYOUT_SPACING_INLINE_MD) || 20,\n }\n : {}),\n ...style,\n };\n\n if (dropCap && typeof children === \"string\" && children.length > 0) {\n const firstChar = children.charAt(0);\n const restOfText = children.slice(1);\n\n return (\n <View style={paragraphStyle}>\n <View style={{ flexDirection: \"row\", alignItems: \"flex-start\" }}>\n <Text\n variant=\"headingLg\"\n style={{\n lineHeight: 1,\n marginRight:\n remToNumber(tokens.LAYOUT_SPACING_INLINE_2XS) / 4 || 2,\n marginTop: -2,\n }}\n {...rest}\n >\n {firstChar}\n </Text>\n <Text variant={getVariant()} {...rest}>\n {restOfText}\n </Text>\n </View>\n </View>\n );\n }\n\n return (\n <Text variant={getVariant()} style={paragraphStyle} {...rest}>\n {children}\n </Text>\n );\n};\n\nexport default Paragraph;\n"],"names":["LAYOUT_SPACING_INLINE_MD","LAYOUT_SPACING_STACK_XS","LAYOUT_SPACING_STACK_SM","LAYOUT_SPACING_STACK_MD","TEXT_TERTIARY","TEXT_BODY","TEXT_HEADER","TEXT_BLUE","ACTION_PRIMARY_DEFAULT","ACTION_PRIMARY_HOVER","ACTION_PRIMARY_ACTIVE","ACTION_PRIMARY_DISABLED","NEUTRAL_10","NEUTRAL_20","NEUTRAL_30","NEUTRAL_40","NEUTRAL_50","UTILITY_CAPTION_FONT_FAMILY","UTILITY_CAPTION_FONT_WEIGHT","UTILITY_CAPTION_LINE_HEIGHT","UTILITY_CAPTION_FONT_SIZE","UTILITY_CAPTION_TEXT_CASE","UTILITY_CAPTION_TEXT_DECORATION","TEXT_DECORATION_NONE","remToNumber","remValue","parseFloat","replace","pxToNumber","pxValue","normalizeFontWeight","weight","toString","typographyTokens","display2xl","fontFamily","fontSize","fontWeight","lineHeight","color","tokens.TEXT_HEADER","letterSpacing","textDecoration","textCase","displayXl","headingXl","headingLg","headingMd","headingSm","headingXs","bodyLg","tokens.TEXT_BODY","paragraphIndent","bodyMd","bodySm","bodyXs","tokens.UTILITY_CAPTION_FONT_FAMILY","tokens.UTILITY_CAPTION_FONT_SIZE","tokens.UTILITY_CAPTION_FONT_WEIGHT","tokens.UTILITY_CAPTION_LINE_HEIGHT","tokens.UTILITY_CAPTION_TEXT_DECORATION","tokens.UTILITY_CAPTION_TEXT_CASE","labelLg","tokens.TEXT_TERTIARY","labelMd","tokens.TEXT_DECORATION_NONE","labelSm","weights","normal","medium","semibold","bold","buttonTokens","primary","background","default","tokens.ACTION_PRIMARY_DEFAULT","hover","tokens.ACTION_PRIMARY_HOVER","active","tokens.ACTION_PRIMARY_ACTIVE","disabled","tokens.ACTION_PRIMARY_DISABLED","text","tokens.NEUTRAL_50","border","secondary","tokens.NEUTRAL_10","tokens.NEUTRAL_20","tokens.NEUTRAL_30","tokens.NEUTRAL_40","outline","ghost","sizes","sm","paddingHorizontal","paddingVertical","tokens.LAYOUT_SPACING_STACK_XS","borderRadius","minHeight","md","tokens.LAYOUT_SPACING_INLINE_MD","tokens.LAYOUT_SPACING_STACK_SM","lg","tokens.LAYOUT_SPACING_STACK_MD","common","borderWidth","transition","defaultTheme","colors","surface","textSecondary","error","warning","success","spacing","xs","xl","none","full","typography","xxl","tight","relaxed","ThemeContext","createContext","undefined","useTheme","context","useContext","Error","Typography","children","variant","align","truncate","numberOfLines","style","accessibilityLabel","testID","rest","theme","getTypographyStyles","React","useMemo","variantStyle","textAlign","defaultColor","_a","themeTextColor","textColor","styles","endsWith","percentage","letterSpacingToPixels","textDecorationLine","textTransform","textStyles","combinedStyles","webStyles","overflow","textOverflow","whiteSpace","Object","assign","_jsx","jsx","Text","underline","strikethrough","italic","link","onLinkPress","getTextDecorations","decorations","fontStyle","linkColor","tokens.TEXT_BLUE","combinedStyle","TouchableOpacity","onPress","accessibilityRole","activeOpacity","headingLevelToVariant","h1","h2","h3","h4","h5","h6","size","fullWidth","loading","textStyle","variantStyles","sizeConfig","variantConfig","alignItems","justifyContent","flexDirection","backgroundColor","borderColor","sizeStyles","handlePress","useCallback","buttonStyles","width","opacity","_jsxs","jsxs","ActivityIndicator","marginRight","level","subtitle","subtitleProps","_Fragment","marginTop","parseInt","firstLineIndent","dropCap","getVariant","paragraphStyle","marginBottom","getMarginBottom","textIndent","length","firstChar","charAt","restOfText","slice","View","customTheme","_b","_c","updateTheme","newTheme","console","log","Provider","value"],"mappings":"uOASO,MA0CMA,EAA2B,OAO3BC,EAA0B,SAC1BC,EAA0B,UAC1BC,EAA0B,OAuD1BC,EAAgB,UAChBC,EAAY,UACZC,EAAc,OAEdC,EAAY,UAOZC,EAAyB,UACzBC,EAAuB,UACvBC,EAAwB,UACxBC,EAA0B,UA8B1BC,EAAa,UACbC,EAAa,UACbC,EAAa,UACbC,EAAa,UACbC,EAAa,UAqJbC,EAA8B,UAC9BC,EAA8B,OAC9BC,EAA8B,OAC9BC,EAA4B,OAG5BC,EAA4B,OAC5BC,EAAkC,OA4BlCC,EAAuB,OCtVvBC,EAAeC,GACrBA,GAAgC,iBAAbA,EACyB,GAA1CC,WAAWD,EAASE,QAAQ,MAAO,KADY,EAS3CC,EAAcC,GACpBA,GAA8B,iBAAZA,EAChBH,WAAWG,EAAQF,QAAQ,KAAM,KADY,ECRzCG,EAAuBC,GACZ,iBAAXA,EACFA,EAAOC,WAGD,SAAXD,EACK,MAGFA,ECZIE,EAAmB,CAE9BC,WAAY,CACVC,WHgMmC,UG/LnCC,SAAUR,EHkMuB,QGjMjCS,WAAYP,EH+LuB,KG9LnCQ,WAAYV,EHsTe,QGrT3BW,MAAOC,EACPC,cH+LsC,KG9LtCC,eHiMuC,OGhMvCC,SH+LiC,QG7LnCC,UAAW,CACTT,WH8LkC,UG7LlCC,SAAUR,EHgMsB,QG/LhCS,WAAYP,EH6LsB,KG5LlCQ,WAAYV,EH6Se,QG5S3BW,MAAOC,EACPC,cH6LqC,KG5LrCC,eH+LsC,OG9LtCC,SH6LgC,QGzLlCE,UAAW,CACTV,WH0LkC,UGzLlCC,SAAUR,EH4LsB,QG3LhCS,WAAYP,EHyLsB,KGxLlCQ,WAAYV,EHkSe,QGjS3BW,MAAOC,EACPC,cHyLqC,KGxLrCC,eH2LsC,OG1LtCC,SHyLgC,QGvLlCG,UAAW,CACTX,WHwLkC,UGvLlCC,SAAUR,EH0LsB,QGzLhCS,WAAYP,EHuLsB,KGtLlCQ,WAAYV,EHyRe,QGxR3BW,MAAOC,EACPC,cHuLqC,KGtLrCC,eHyLsC,OGxLtCC,SHuLgC,QGrLlCI,UAAW,CACTZ,WHsLkC,UGrLlCC,SAAUR,EHwLsB,QGvLhCS,WAAYP,EHqLsB,KGpLlCQ,WAAYV,EHgRe,QG/Q3BW,MAAOC,EACPC,cHqLqC,KGpLrCC,eHuLsC,OGtLtCC,SHqLgC,QGnLlCK,UAAW,CACTb,WHoLkC,UGnLlCC,SAAUR,EHsLsB,QGrLhCS,WAAYP,EHmLsB,KGlLlCQ,WAAYV,EHuQc,QGtQ1BW,MAAOC,EACPC,cHmLqC,KGlLrCC,eHqLsC,OGpLtCC,SHmLgC,QGjLlCM,UAAW,CACTd,WHkLkC,UGjLlCC,SAAUR,EHoLsB,QGnLhCS,WAAYP,EHiLsB,KGhLlCQ,WAAYV,EH8Pc,QG7P1BW,MAAOC,EACPC,cHiLqC,KGhLrCC,eHmLsC,OGlLtCC,SHiLgC,QG7KlCO,OAAQ,CACNf,WH8L+B,UG7L/BC,SAAUR,EHgMmB,QG/L7BS,WAAYP,EH6LmB,QG5L/BQ,WAAYV,EH6LmB,QG5L/BW,MAAOY,EACPV,cH6LkC,KG5LlCC,eH+LmC,OG9LnCC,SH6L6B,OG5L7BS,gBH2LoC,OGzLtCC,OAAQ,CACNlB,WH2L+B,UG1L/BC,SAAUR,EH6LmB,QG5L7BS,WAAYP,EH0LmB,QGzL/BQ,WAAYV,EH0LmB,QGzL/BW,MAAOY,EACPV,cH0LkC,KGzLlCC,eH4LmC,OG3LnCC,SH0L6B,OGzL7BS,gBHwLoC,OGtLtCE,OAAQ,CACNnB,WHwL+B,UGvL/BC,SAAUR,EH0LmB,QGzL7BS,WAAYP,EHuLmB,QGtL/BQ,WAAYV,EHuLmB,QGtL/BW,MAAOY,EACPV,cHuLkC,KGtLlCC,eHyLmC,OGxLnCC,SHuL6B,OGtL7BS,gBHqLoC,OGnLtCG,OAAQ,CAENpB,WAAYqB,EACZpB,SAAUR,EAAW6B,GACrBpB,WAAYP,EAAoB4B,GAChCpB,WAAYV,EAAW+B,GACvBpB,MAAOY,EACPV,cHmM0C,KGlM1CC,eAAgBkB,EAChBjB,SAAUkB,EACVT,gBHiM4C,OG7L9CU,QAAS,CAEP3B,WHsKsC,UGrKtCC,SAAUR,EHwK0B,QGvKpCS,WAAYP,EHqK0B,KGpKtCQ,WAAYV,EHqK0B,QGpKtCW,MAAOwB,EACPtB,cHqKyC,KGpKzCC,eHuK0C,OGtK1CC,SHqKoC,QGnKtCqB,QAAS,CAEP7B,WHmKoC,UGlKpCC,SAAUR,EHqKwB,QGpKlCS,WAAYP,EHkKwB,KGjKpCQ,WAAYV,EHkKwB,QGjKpCW,MAAOwB,EACPtB,cHkKuC,KGjKvCC,eAAgBuB,EAChBtB,SHkKkC,QGhKpCuB,QAAS,CAEP/B,WAAYqB,EACZpB,SAAUR,EAAW6B,GACrBpB,WAAYP,EAAoB4B,GAChCpB,WAAYV,EAAW+B,GACvBpB,MAAOwB,EACPtB,cH+J0C,KG9J1CC,eAAgBkB,EAChBjB,SAAUkB,GAIZM,QAAS,CACPC,OAAQ,MACRC,OAAQvC,EHsKU,KGrKlBwC,SAAUxC,EHsKW,KGrKrByC,KAAM,QChKJ/C,EAAeC,GACdA,GAAgC,iBAAbA,EACyB,GAA1CC,WAAWD,EAASE,QAAQ,MAAO,KADY,EAKlDC,EAAcC,GACbA,GAA8B,iBAAZA,EAChBH,WAAWG,EAAQF,QAAQ,KAAM,KADY,EAsCzC6C,EAAe,CAC1BC,QAAS,CACPC,WAAY,CACVC,QAASC,EACTC,MAAOC,EACPC,OAAQC,EACRC,SAAUC,GAEZC,KAAM,CACJR,QAAS,UACTM,SAAUG,GAEZC,OAAQ,CACNV,QAASC,EACTC,MAAOC,EACPC,OAAQC,EACRC,SAAUC,IAGdI,UAAW,CACTZ,WAAY,CACVC,QAASY,EACTV,MAAOW,EACPT,OAAQU,EACRR,SAAUM,GAEZJ,KAAM,CACJR,QJsFoB,UIrFpBM,SAAUS,GAEZL,OAAQ,CACNV,QAASc,EACTZ,MAAOa,EACPX,OAAQK,EACRH,SAAUO,IAGdG,QAAS,CACPjB,WAAY,CACVC,QAAS,cACTE,MAAOK,EACPH,OAAQC,EACRC,SAAU,eAEZE,KAAM,CACJR,QAASC,EACTK,SAAUS,GAEZL,OAAQ,CACNV,QAASC,EACTC,MAAOC,EACPC,OAAQC,EACRC,SAAUQ,IAGdG,MAAO,CACLlB,WAAY,CACVC,QAAS,cACTE,MAAOU,EACPR,OAAQS,EACRP,SAAU,eAEZE,KAAM,CACJR,QJiDoB,UIhDpBM,SAAUS,GAEZL,OAAQ,CACNV,QAAS,cACTE,MAAO,cACPE,OAAQ,cACRE,SAAU,gBAGdY,MA1GkB,CAClBC,GAAI,CACFC,kBAAmBvE,EJ6BiB,WI5BpCwE,gBAAiBxE,EAAYyE,GAC7B7D,SAAUR,EJwTe,QIvTzBsE,aAAc1E,EJfqB,WIgBnC2E,UAAW,IAEbC,GAAI,CACFL,kBAAmBvE,EAAY6E,GAC/BL,gBAAiBxE,EAAY8E,GAC7BlE,SAAUR,EJkTc,QIjTxBsE,aAAc1E,EJZc,WIa5B2E,UAAW,IAEbI,GAAI,CACFR,kBAAmBvE,EJiBiB,QIhBpCwE,gBAAiBxE,EAAYgF,GAC7BpE,SAAUR,EJ4Sc,QI3SxBsE,aAAc1E,EJlBc,UImB5B2E,UAAW,KAuFbM,OAlFmB,CACnBpE,WJ8RoB,II7RpBC,WAAYV,EJ4RgB,QI3R5B8E,YAAa9E,EJpB4B,aIqBzC+E,WAAY,yBCUDC,EAAsB,CACjCC,OAAQ,CACNpC,QAAS,UACTa,UAAW,UACXZ,WAAY,UACZoC,QAAS,UACT3B,KAAM,UACN4B,cAAe,UACf1B,OAAQ,UACR2B,MAAO,UACPC,QAAS,UACTC,QAAS,WAEXC,QAAS,CACPC,GAAI,EACJtB,GAAI,EACJM,GAAI,GACJG,GAAI,GACJc,GAAI,IAENnB,aAAc,CACZoB,KAAM,EACNxB,GAAI,EACJM,GAAI,EACJG,GAAI,GACJgB,KAAM,MAERC,WAAY,CACVpF,SAAU,CACRgF,GAAI,GACJtB,GAAI,GACJM,GAAI,GACJG,GAAI,GACJc,GAAI,GACJI,IAAK,IAEPpF,WAAY,CACV+B,OAAQ,MACRC,OAAQ,MACRC,SAAU,MACVC,KAAM,OAERjC,WAAY,CACVoF,MAAO,IACPtD,OAAQ,IACRuD,QAAS,OC/FTC,EAAeC,EAAAA,mBAA6CC,GAwDrDC,EAAW,KACtB,MAAMC,EAAUC,aAAWL,GAC3B,IAAKI,EACH,MAAM,IAAIE,MAAM,gDAElB,OAAOF,GC7DIG,EAAwC,EACnDC,WACAC,UAAU,SACVC,QAAQ,OACRvG,SACAQ,QACAgG,YAAW,EACXC,gBACAC,QACAC,qBACAC,YACGC,MAEH,MAAMC,MAAEA,GAAUd,IAEZe,EAAsBC,UAAMC,SAAQ,WACxC,IACE,MAAMC,EAAehH,EAAiBoG,GAEhCa,EAAYZ,EAEZjG,EAAaN,EACfE,EAAiBkC,QAAQpC,GACzBkH,EAAa5G,WAEjB,IAAI8G,EAAeF,EAAa1G,MAChC,IAAiB,UAAbsG,aAAA,EAAAA,EAAOhC,cAAM,IAAAuC,OAAA,EAAAA,EAAEjE,OAAqC,iBAAtB0D,EAAMhC,OAAO1B,KAAmB,CAChE,MAAMkE,EAAkBR,EAAMhC,OAAO1B,KACnCkD,GAEEgB,IACFF,EAAeE,EAElB,CACD,MAAMC,EAAY/G,GAAS4G,EAGrBI,EAAoB,CACxBpH,WAAY8G,EAAa9G,WACzBC,SAAU6G,EAAa7G,SACvBC,WAAYA,EACZC,WAAY2G,EAAa3G,WACzBC,MAAO+G,EACPJ,aA2BF,OAxBID,EAAaxG,gBACf8G,EAAO9G,cLXsB,EACnCA,EACAL,KAGA,GAAIK,EAAc+G,SAAS,MACzB,OAAO5H,EAAWa,GAIpB,GAAIA,EAAc+G,SAAS,KAAM,CAC/B,MAAMC,EAAa/H,WAAWe,GAAiB,IAE/C,OADiC,iBAAbL,EAAwBR,EAAWQ,GAAYA,GACrDqH,CACf,CAGD,OAAO,GKNsBC,CACrBT,EAAaxG,cAAcT,WAC3BiH,EAAa7G,WAKf6G,EAAavG,gBACmB,SAAhCuG,EAAavG,iBAEb6G,EAAOI,mBAAqBV,EAAavG,gBAGvCuG,EAAatG,UAAsC,SAA1BsG,EAAatG,WACV,cAA1BsG,EAAatG,SACf4G,EAAOK,cAAgB,YACY,cAA1BX,EAAatG,SACtB4G,EAAOK,cAAgB,YACY,eAA1BX,EAAatG,WACtB4G,EAAOK,cAAgB,eAIpBL,CACR,CAAC,MAAOvC,GACP,MAAO,CACL5E,SAAU,GACVC,WAAY,MACZC,WAAY,GACZC,MAAOY,EACP+F,UAAWZ,EAEd,IACA,CAACD,EAASC,EAAOvG,EAAQQ,EAAOsG,IAE7BgB,EAAad,UAAMC,SAAQ,KAC/B,MAAMc,EAA4B,IAAKhB,GAEvC,GAAIP,EAAU,CACZ,MAAMwB,EAAiB,CACrBC,SAAU,SACVC,aAAc,WACdC,WAAY,UAEdC,OAAOC,OAAON,EAAgBC,EAC/B,CAMD,OAJItB,GACF0B,OAAOC,OAAON,EAAgBrB,GAGzBqB,IACN,CAAChB,EAAqBP,EAAUE,IAEnC,OACE4B,EAACC,IAAAC,EAAIA,KACH,CAAA9B,MAAOoB,EACPrB,cAAeA,IAAkBD,EAAW,OAAIT,GAChDY,mBAAoBA,EACpBC,OAAQA,KACJC,WAEHR,KC9GMmC,EAA4B,EACvCnC,WACAC,UAAU,SACVC,QACAvG,SACAQ,QACAiI,aAAY,EACZC,iBAAgB,EAChBC,UAAS,EACTC,QAAO,EACPC,cACAnC,WACGG,YAEH,MAAMC,MAAEA,GAAUd,IAEZ8C,EAAqB9B,UAAMC,SAAQ,WACvC,MAAM8B,EAAyB,CAAA,EAgB/B,GAdIN,IACFM,EAAYnB,mBAAqB,aAG/Bc,IACFK,EAAYnB,mBAAqBmB,EAAYnB,mBACzC,yBACA,gBAGFe,IACFI,EAAYC,UAAY,UAGtBJ,EAAM,CACR,MAAMK,EAAYzI,IAAqB,UAAZsG,EAAMhC,cAAM,IAAAuC,OAAA,EAAAA,EAAE3E,UAAWwG,EACpDH,EAAYvI,MAAQyI,EAEpBF,EAAYnB,mBAAqBa,EAC7B,YACAM,EAAYnB,oBAAsB1F,CACvC,CAED,OAAO6G,IACN,CAACN,EAAWC,EAAeC,EAAQC,EAAMpI,EAAOsG,IAE7CqC,EAAgBnC,UAAMC,SAC1B,KAAO,IACF6B,KACApC,KAEL,CAACoC,EAAoBpC,IAGvB,OAAIkC,GAAQC,EAERP,EAACC,IAAAa,EAAgBA,iBACf,CAAAC,QAASR,EACTS,kBAAkB,OAClBC,cAAe,GAAGlD,SAElBiC,MAAClC,EACC,CAAAE,QAASA,EACTC,MAAOA,EACPvG,OAAQA,EACRQ,MAAOA,IAAuB,QAAd6G,EAAAP,EAAMhC,cAAQ,IAAAuC,OAAA,EAAAA,EAAA3E,UAAWwG,EACzCxC,MAAOyC,KACHtC,EAAIR,SAEPA,MAOPiC,EAAAA,IAAClC,EAAU,CACTE,QAASA,EACTC,MAAOA,EACPvG,OAAQA,EACRQ,MAAOA,EACPkG,MAAOyC,KACHtC,EAAIR,SAEPA,KCrFDmD,EAAwB,CAC5BC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,4BCAuC,EAC3CzD,WACAC,UAAU,UACVyD,OAAO,KACP7G,YAAW,EACX8G,aAAY,EACZC,WAAU,EACVvD,QACAwD,YACAvD,qBACAC,SACAyC,cAGA,MAAMc,EAAgBnD,UAAMC,SAAQ,KAClC,IACE,MAAMmD,EAAa3H,EAAaqB,MAAMiG,GAChCM,EAAgB5H,EAAa6D,GAUnC,MAAO,IARsB,CAC3BnC,aAAciG,EAAWjG,aACzBQ,YAAalC,EAAaiC,OAAOC,YACjC2F,WAAY,SACZC,eAAgB,SAChBC,cAAe,OAKfC,gBAAiBvH,EACbmH,EAAc1H,WAAWO,SACzBmH,EAAc1H,WAAWC,QAC7B8H,YAAaxH,EACTmH,EAAc/G,OAAOJ,SACrBmH,EAAc/G,OAAOV,QAE5B,CAAC,MAAOqC,GAEP,MAAO,CACLwF,gBAA6B,YAAZnE,EAAwB,UAAY,cACrDoE,YAAyB,YAAZpE,EAAwB,UAAY,UACjD3B,YAAa,EACbR,aAAc,EACdmG,WAAY,SACZC,eAAgB,SAChBC,cAAe,MAElB,IACA,CAAClE,EAASyD,EAAM7G,IAGbyH,EAAa3D,UAAMC,SAAQ,KAC/B,IACE,MAAMmD,EAAa3H,EAAaqB,MAAMiG,GACtC,MAAO,CACL/F,kBAAmBoG,EAAWpG,kBAC9BC,gBAAiBmG,EAAWnG,gBAC5BG,UAAWgG,EAAWhG,UAEzB,CAAC,MAAOa,GAEP,MAAO,CACLjB,kBAAmB,GACnBC,gBAAiB,EACjBG,UAAoB,OAAT2F,EAAgB,GAAc,OAATA,EAAgB,GAAK,GAExD,IACA,CAACA,IAGEjC,EAAad,UAAMC,SAAQ,KAC/B,IACE,MAAMmD,EAAa3H,EAAaqB,MAAMiG,GAChCM,EAAgB5H,EAAa6D,GAWnC,MAAO,IAT0B,CAC/BjG,SAAU+J,EAAW/J,SACrBC,WAAYmC,EAAaiC,OAAOpE,WAChCC,WAAYkC,EAAaiC,OAAOnE,WAChCC,MAAO0C,EACHmH,EAAcjH,KAAKF,SACnBmH,EAAcjH,KAAKR,YAKpBsH,EAEN,CAAC,MAAOjF,GAEP,MAAO,CACL5E,SAAmB,OAAT0J,EAAgB,GAAc,OAATA,EAAgB,GAAK,GACpDzJ,WAAY,MACZE,MAAO0C,EACH,UACY,YAAZoD,EACE,UACA,aACH4D,EAEN,IACA,CAAC5D,EAASyD,EAAM7G,EAAUgH,IAGvBU,EAAc5D,UAAM6D,aAAY,KAC/B3H,GAAa+G,IAAWZ,GAC3BA,MAED,CAACnG,EAAU+G,EAASZ,IAGjByB,EAAe9D,UAAMC,SACzB,KAAO,IACFkD,KACAQ,KACCX,GAAa,CAAEe,MAAO,WACtB7H,GAAY,CAAE8H,QAAS,OACxBtE,KAEL,CAACyD,EAAeQ,EAAYX,EAAW9G,EAAUwD,IAGnD,OACEuE,EAACC,KAAA9B,mBACC,CAAA1C,MAAOoE,EACPzB,QAASuB,EACT1H,SAAUA,GAAY+G,EACtBtD,mBAAoBA,EACpB2C,kBAAkB,SAClB1C,OAAQA,EAEPP,SAAA,CAAA4D,GACC3B,EAAAA,IAAC6C,EAAiBA,kBAChB,CAAApB,KAAK,QACLvJ,MAC8B,iBAArBsH,EAAWtH,MAAqBsH,EAAWtH,MAAQ,UAE5DkG,MAAO,CAAE0E,YAAa,KAG1B9C,EAAAA,IAACE,EAAIA,KAAC,CAAA9B,MAAOoB,EAAUzB,SAAGA,wBDzIe,EAC7CA,WACAgF,QAAQ,KACRC,WACAC,mBACG1E,MAEH,MAAMP,EAAUkD,EAAsB6B,GAEtC,OACEJ,OAAAO,EAAAA,SAAA,CAAAnF,SAAA,CACEiC,EAAAA,IAAClC,GAAWE,QAASA,EAASgD,kBAAmB+B,KAAWxE,WACzDR,IAGFiF,GACChD,EAAAA,IAAClC,EAAU,CACTE,QAAQ,SACR9F,MAAOwB,EACP0E,MAAO,CACL+E,UACIC,SAASxH,OAGXqH,EAEHlF,SAAAiF,0BEjCwC,EACjDjF,WACA0D,OAAO,KACP3E,UAAU,KACVuG,mBAAkB,EAClBC,WAAU,EACVlF,WACGG,MAEH,MAAMgF,EAAa,KACjB,OAAQ9B,GACN,IAAK,KACH,MAAO,SACT,IAAK,KACH,MAAO,SACT,IAAK,KACH,MAAO,SAET,QACE,MAAO,WAsBP+B,EAAiB,CACrBC,aAnBsB,MACtB,OAAQ3G,GACN,IAAK,OACH,OXsBiC,EWrBnC,IAAK,KACH,OAAO3F,EAAYyE,GACrB,IAAK,KACH,OAAOzE,EAAY8E,GACrB,IAAK,KACH,OAAO9E,EXsBwB,QWrBjC,IAAK,KACH,OAAOA,EXqBwB,UWnBjC,QACE,OAAOA,EAAYgF,KAKTuH,MACVL,EACA,CACEM,WAAYxM,EAAY6E,IAAoC,IAE9D,MACDoC,GAGL,GAAIkF,GAA+B,iBAAbvF,GAAyBA,EAAS6F,OAAS,EAAG,CAClE,MAAMC,EAAY9F,EAAS+F,OAAO,GAC5BC,EAAahG,EAASiG,MAAM,GAElC,OACEhE,EAAAC,IAACgE,OAAI,CAAC7F,MAAOoF,EAAczF,SACzB4E,OAACsB,EAAAA,KAAK,CAAA7F,MAAO,CAAE8D,cAAe,MAAOF,WAAY,cAC/CjE,SAAA,CAAAiC,MAACE,EAAI,CACHlC,QAAQ,YACRI,MAAO,CACLnG,WAAY,EACZ6K,YACE3L,EXtByB,WWsBuB,GAAK,EACvDgM,WAAY,MAEV5E,WAEHsF,IAEH7D,EAAAA,IAACE,GAAKlC,QAASuF,OAAkBhF,EAC9BR,SAAAgG,QAKV,CAED,OACE/D,MAACE,GAAKlC,QAASuF,IAAcnF,MAAOoF,KAAoBjF,WACrDR,0CLxEoD,EACzDA,WACAS,MAAO0F,MAGP,MAAM1F,EAAQE,UAAMC,SAClB,eAAM,MAAC,IACFpC,KACA2H,EACH1H,OAAQ,IAAKD,EAAaC,UAAW0H,aAAW,EAAXA,EAAa1H,QAClDM,QAAS,IAAKP,EAAaO,WAAYoH,aAAW,EAAXA,EAAapH,SACpDjB,aAAc,IACTU,EAAaV,gBACbqI,aAAA,EAAAA,EAAarI,cAElBsB,WAAY,IACPZ,EAAaY,cACb+G,aAAA,EAAAA,EAAa/G,WAChBpF,SAAU,IACLwE,EAAaY,WAAWpF,YACD,QAAvBgH,EAAAmF,eAAAA,EAAa/G,kBAAU,IAAA4B,OAAA,EAAAA,EAAEhH,UAE9BC,WAAY,IACPuE,EAAaY,WAAWnF,cACD,QAAvBmM,EAAAD,eAAAA,EAAa/G,kBAAU,IAAAgH,OAAA,EAAAA,EAAEnM,YAE9BC,WAAY,IACPsE,EAAaY,WAAWlF,cACD,QAAvBmM,EAAAF,eAAAA,EAAa/G,kBAAU,IAAAiH,OAAA,EAAAA,EAAEnM,gBAIlC,CAACiM,IAGGG,EAAc3F,EAAAA,QAAM6D,aAAa+B,IACrCC,QAAQC,IACN,iEACAF,KAED,IAEH,OACEtE,MAACzC,EAAakH,UAASC,MAAO,CAAElG,QAAO6F,wBACpCtG"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/Icon/Icon.tsx","../src/styles/tokens/tokens.ts","../src/styles/tokens/utils/utils.ts","../src/styles/tokens/utils/fontUtils.ts","../src/styles/tokens/typography.ts","../src/theme/index.ts","../src/theme/ThemeProvider.tsx","../src/components/Typography/Body.tsx","../src/components/Button/Button.tsx","../src/components/Typography/Display.tsx","../src/components/Typography/Heading.tsx","../src/components/Icon/IconList.tsx","../src/components/Typography/Utility.tsx"],"sourcesContent":["import React from 'react';\nimport iconData from './icons.json';\n\nexport interface IconProps {\n /**\n * Name of the icon to display\n */\n name: string;\n\n /**\n * Size of the icon in pixels\n */\n size?: number;\n\n /**\n * Color of the icon\n */\n color?: string;\n\n /**\n * Optional CSS class name\n */\n className?: string;\n\n /**\n * Optional style overrides\n */\n style?: React.CSSProperties;\n\n /**\n * Optional click handler\n */\n onClick?: React.MouseEventHandler<SVGSVGElement>;\n\n /**\n * Aria label for accessibility\n */\n ariaLabel?: string;\n}\n\nexport interface IconData {\n name: string;\n path: string;\n viewBox: string;\n fill?: string;\n}\n\n// Export icon data for use in other components\nexport const icons: IconData[] = iconData.icons;\n\n// Create a map of icon names to icon data for quick lookup\nconst iconMap = new Map<string, IconData>();\nicons.forEach((icon) => {\n iconMap.set(icon.name, icon);\n});\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n size = 24,\n color = 'currentColor',\n className = '',\n style = {},\n onClick,\n ariaLabel,\n}) => {\n // Find the icon data for the given name\n const iconInfo = iconMap.get(name);\n\n // If the icon doesn't exist, return null or a fallback\n if (!iconInfo) {\n console.warn(`Icon \"${name}\" not found`);\n return null;\n }\n\n // Split the path string into multiple paths if it contains multiple commands\n const paths = iconInfo.path.split(' M ').map((path, index) => \n index === 0 ? path : `M ${path}`\n );\n\n // Combine the style props\n const combinedStyle: React.CSSProperties = {\n display: 'inline-block',\n verticalAlign: 'middle',\n ...style,\n };\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={iconInfo.viewBox}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={combinedStyle}\n onClick={onClick}\n aria-label={ariaLabel || `${name} icon`}\n role=\"img\"\n >\n {paths.map((path, index) => (\n <path\n key={index}\n d={path}\n stroke={iconInfo.fill ? 'none' : color}\n fill={iconInfo.fill ? color : 'none'}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </svg>\n );\n};\n","/**\n * File generated by the Figma Token Engine\n * Do not edit directly\n */\n\nexport const BORDER_RADIUS_TOOLTIP_DEFAULT = \"0.25rem\";\nexport const BORDER_RADIUS_POPOVER_DEFAULT = \"0.5rem\";\nexport const BORDER_RADIUS_TAG_SM = \"0.25rem\";\nexport const BORDER_RADIUS_TAG_XL = \"62.4rem\";\nexport const BORDER_RADIUS_BUTTON_SM = \"0.25rem\";\nexport const BORDER_RADIUS_BUTTON_FULL = \"62.4rem\";\nexport const BORDER_RADIUS_INPUT_SM = \"0.25rem\";\nexport const BORDER_RADIUS_INPUT_LG = \"0.5rem\";\nexport const BORDER_RADIUS_CARD_SM = \"0.25rem\";\nexport const BORDER_RADIUS_CARD_MD = \"0.5rem\";\nexport const BORDER_RADIUS_CARD_LG = \"0.75rem\";\nexport const BORDER_RADIUS_MODAL_LG = \"0.75rem\";\nexport const BORDER_RADIUS_MODAL_XL = \"1rem\";\nexport const BORDER_RADIUS_NONE = 0;\nexport const BORDER_RADIUS_XS = \"0.25rem\";\nexport const BORDER_RADIUS_SM = \"0.5rem\";\nexport const BORDER_RADIUS_MD = \"0.75rem\";\nexport const BORDER_RADIUS_LG = \"1rem\";\nexport const BORDER_RADIUS_XL = \"1.25rem\";\nexport const BORDER_RADIUS_2XL = \"1.5rem\";\nexport const BORDER_RADIUS_3XL = \"1.75rem\";\nexport const BORDER_RADIUS_FULL = \"62.4rem\";\nexport const BORDER_WIDTH_BUTTON_DEFAULT = \"0.0625rem\";\nexport const BORDER_WIDTH_BUTTON_HOVER = \"0.125rem\";\nexport const BORDER_WIDTH_BUTTON_PRESSED = \"0.125rem\";\nexport const BORDER_WIDTH_INPUT_DEFAULT = \"0.0625rem\";\nexport const BORDER_WIDTH_INPUT_FOCUS = \"0.125rem\";\nexport const BORDER_WIDTH_INPUT_ERROR = \"0.125rem\";\nexport const BORDER_WIDTH_CARD_DEFAULT = \"0.0625rem\";\nexport const BORDER_WIDTH_CARD_HOVER = \"0.125rem\";\nexport const BORDER_WIDTH_NONE = 0;\nexport const BORDER_WIDTH_XS = \"0.0625rem\";\nexport const BORDER_WIDTH_SM = \"0.125rem\";\nexport const BORDER_WIDTH_MD = \"0.25rem\";\nexport const BORDER_GREEN = \"#00df88\";\nexport const BORDER_BLUE = \"#0053e2\";\nexport const BORDER_YELLOW = \"#f4b400\";\nexport const BORDER_RED = \"#a90000\";\nexport const BORDER_DARK = \"#111\";\nexport const BORDER_LIGHT = \"#e2e2e2\";\nexport const BORDER_LIGHTER = \"#f1f1f1\";\nexport const LAYOUT_SPACING_INLINE_NONE = 0;\nexport const LAYOUT_SPACING_INLINE_3XS = \"0.125rem\";\nexport const LAYOUT_SPACING_INLINE_2XS = \"0.25rem\";\nexport const LAYOUT_SPACING_INLINE_XS = \"0.5rem\";\nexport const LAYOUT_SPACING_INLINE_SM = \"0.75rem\";\nexport const LAYOUT_SPACING_INLINE_MD = \"1rem\";\nexport const LAYOUT_SPACING_INLINE_LG = \"2rem\";\nexport const LAYOUT_SPACING_INLINE_XL = \"2.5rem\";\nexport const LAYOUT_SPACING_INLINE_2XL = \"5rem\";\nexport const LAYOUT_SPACING_STACK_NONE = 0;\nexport const LAYOUT_SPACING_STACK_3XS = \"0.125rem\";\nexport const LAYOUT_SPACING_STACK_2XS = \"0.25rem\";\nexport const LAYOUT_SPACING_STACK_XS = \"0.5rem\";\nexport const LAYOUT_SPACING_STACK_SM = \"0.75rem\";\nexport const LAYOUT_SPACING_STACK_MD = \"1rem\";\nexport const LAYOUT_SPACING_STACK_LG = \"2rem\";\nexport const LAYOUT_SPACING_STACK_XL = \"2.5rem\";\nexport const LAYOUT_SPACING_STACK_2XL = \"5rem\";\nexport const SECTION_SPACING_SM = \"1.5rem\";\nexport const SECTION_SPACING_MD = \"1.75rem\";\nexport const SECTION_SPACING_LG = \"2rem\";\nexport const SECTION_SPACING_XL = \"2.5rem\";\nexport const SECTION_SPACING_2XL = \"3.5rem\";\nexport const SECTION_SPACING_3XL = \"5rem\";\nexport const COMPONENT_CARD_SM = \"0.75rem\";\nexport const COMPONENT_CARD_MD = \"1.25rem\";\nexport const COMPONENT_CARD_LG = \"1.5rem\";\nexport const COMPONENT_CARD_XL = \"2rem\";\nexport const COMPONENT_CARD_2XL = \"2.5rem\";\nexport const COMPONENT_MODAL_SM = \"1.25rem\";\nexport const COMPONENT_MODAL_MD = \"1.5rem\";\nexport const COMPONENT_MODAL_LG = \"1.75rem\";\nexport const SPACE_0 = 0;\nexport const SPACE_3XS = \"0.125rem\";\nexport const SPACE_2XS = \"0.25rem\";\nexport const SPACE_XS = \"0.5rem\";\nexport const SPACE_SM = \"0.75rem\";\nexport const SPACE_MD = \"1rem\";\nexport const SPACE_LG = \"1.25rem\";\nexport const SPACE_XL = \"1.5rem\";\nexport const SPACE_2XL = \"1.75rem\";\nexport const SPACE_3XL = \"2rem\";\nexport const SPACE_4XL = \"2.5rem\";\nexport const SPACE_5XL = \"3rem\";\nexport const SPACE_6XL = \"3.5rem\";\nexport const SPACE_7XL = \"4rem\";\nexport const SPACE_8XL = \"5rem\";\nexport const XS = \"0.75rem\";\nexport const S = \"1rem\";\nexport const MD = \"1.25rem\";\nexport const LG = \"1.5rem\";\nexport const XL = \"1.75rem\";\nexport const XXL = \"2rem\";\nexport const BACKGROUND_YELLOW_LIGHT = \"#fff5d9\";\nexport const BACKGROUND_YELLOW_MEDIUM = \"#ffe7a5\";\nexport const BACKGROUND_BLUE_LIGHT = \"#e3ebff\";\nexport const BACKGROUND_BLUE_MEDIUM = \"#c3deff\";\nexport const BACKGROUND_GREEN_LIGHT = \"#E5FCF3\";\nexport const BACKGROUND_GREEN_MEDIUM = \"#ccf9e7\";\nexport const BACKGROUND_GREEN_DARK = \"#00df88\";\nexport const BACKGROUND_RED_LIGHT = \"#feecec\";\nexport const BACKGROUND_RED_MEDIUM = \"#fed8d8\";\nexport const BACKGROUND_WHITE_LIGHT = \"#ffffff\";\nexport const BACKGROUND_NEUTRAL_DARK = \"#111\";\nexport const BACKGROUND_NEUTRAL_GREY = \"#e2e2e2\";\nexport const BACKGROUND_NEUTRAL_LIGHT = \"#f1f1f1\";\nexport const TEXT_INVERSE = \"#ffffff\";\nexport const TEXT_DISABLED = \"#ababab\";\nexport const TEXT_PLACEHOLDER = \"#919191\";\nexport const TEXT_TERTIARY = \"#525252\";\nexport const TEXT_BODY = \"#3b3b3b\";\nexport const TEXT_HEADER = \"#111\";\nexport const TEXT_GREEN = \"#00df88\";\nexport const TEXT_BLUE = \"#0053e2\";\nexport const TEXT_ERROR = \"#a90000\";\nexport const TEXT_YELLOW = \"#f4b400\";\nexport const FEEDBACK_ALERT_SUCCESS = \"#00df88\";\nexport const FEEDBACK_ALERT_ERROR = \"#a90000\";\nexport const FEEDBACK_ALERT_WARNING = \"#fff5d9\";\nexport const FEEDBACK_ALERT_NEUTRAL = \"#111\";\nexport const ACTION_PRIMARY_DEFAULT = \"#00df88\";\nexport const ACTION_PRIMARY_HOVER = \"#4ce9ac\";\nexport const ACTION_PRIMARY_ACTIVE = \"#98f2cf\";\nexport const ACTION_PRIMARY_DISABLED = \"#E5FCF3\";\nexport const ACTION_SECONDARY_DEFAULT = \"#0053e2\";\nexport const ACTION_SECONDARY_HOVER = \"#254cac\";\nexport const ACTION_SECONDARY_ACTIVE = \"#9ec1ff\";\nexport const ACTION_SECONDARY_DISABLED = \"#e3ebff\";\nexport const ACTION_DESTRUCTIVE_DEFAULT = \"#d60000\";\nexport const ACTION_DESTRUCTIVE_HOVER = \"#a90000\";\nexport const ACTION_DESTRUCTIVE_ACTIVE = \"#fed8d8\";\nexport const ACTION_DESTRUCTIVE_DISABLE = \"#feecec\";\nexport const ACTION_TERTIARY_DEFAULT = \"#3b3b3b\";\nexport const ACTION_TERTIARY_HOVER = \"#111\";\nexport const ACTION_TERTIARY_ACTIVE = \"#ababab\";\nexport const ACTION_TERTIARY_DISABLE = \"#f1f1f1\";\nexport const ICON_YELLOW = \"#f4b400\";\nexport const ICON_BLUE = \"#0053e2\";\nexport const ICON_GREEN = \"#00df88\";\nexport const ICON_RED = \"#a90000\";\nexport const ICON_NEUTRAL = \"#111\";\nexport const ICON_LIGHT = \"#e2e2e2\";\nexport const ICON_LIGHTER = \"#f1f1f1\";\nexport const GREEN_10 = \"#E5FCF3\";\nexport const GREEN_20 = \"#ccf9e7\";\nexport const GREEN_30 = \"#B2F5DB\";\nexport const GREEN_40 = \"#98f2cf\";\nexport const GREEN_50 = \"#81efc3\";\nexport const GREEN_60 = \"#66ecb8\";\nexport const GREEN_70 = \"#4ce9ac\";\nexport const GREEN_80 = \"#31e5a0\";\nexport const GREEN_90 = \"#1ae294\";\nexport const GREEN_100 = \"#00df88\";\nexport const NEUTRAL_10 = \"#f1f1f1\";\nexport const NEUTRAL_20 = \"#e2e2e2\";\nexport const NEUTRAL_30 = \"#c6c6c6\";\nexport const NEUTRAL_40 = \"#ababab\";\nexport const NEUTRAL_50 = \"#919191\";\nexport const NEUTRAL_60 = \"#6a6a6a\";\nexport const NEUTRAL_70 = \"#525252\";\nexport const NEUTRAL_80 = \"#3b3b3b\";\nexport const NEUTRAL_90 = \"#262626\";\nexport const NEUTRAL_100 = \"#111\";\nexport const BLUE_10 = \"#e3ebff\";\nexport const BLUE_20 = \"#c3deff\";\nexport const BLUE_30 = \"#9ec1ff\";\nexport const BLUE_40 = \"#5c83fd\";\nexport const BLUE_50 = \"#446ef5\";\nexport const BLUE_60 = \"#0053e2\";\nexport const BLUE_70 = \"#254cac\";\nexport const BLUE_80 = \"#14328d\";\nexport const BLUE_90 = \"#0c285f\";\nexport const BLUE_100 = \"#071e3c\";\nexport const RED_10 = \"#feecec\";\nexport const RED_20 = \"#fed8d8\";\nexport const RED_30 = \"#feb3b3\";\nexport const RED_40 = \"#fe8888\";\nexport const RED_50 = \"#fb5959\";\nexport const RED_60 = \"#d60000\";\nexport const RED_70 = \"#a90000\";\nexport const RED_80 = \"#820000\";\nexport const RED_90 = \"#550000\";\nexport const RED_100 = \"#3a0000\";\nexport const YELLOW_10 = \"#fff5d9\";\nexport const YELLOW_20 = \"#ffe7a5\";\nexport const YELLOW_30 = \"#ffd86b\";\nexport const YELLOW_40 = \"#ffce46\";\nexport const YELLOW_50 = \"#ffc420\";\nexport const YELLOW_60 = \"#f4b400\";\nexport const YELLOW_70 = \"#dba200\";\nexport const YELLOW_80 = \"#c69200\";\nexport const YELLOW_90 = \"#b38400\";\nexport const YELLOW_100 = \"#9a7100\";\nexport const WHITE_10 = \"#ffffff\";\nexport const DISPLAY_2XL_FONT_FAMILY = \"Campton\";\nexport const DISPLAY_2XL_FONT_WEIGHT = 500;\nexport const DISPLAY_2XL_LINE_HEIGHT = \"56px\";\nexport const DISPLAY_2XL_FONT_SIZE = \"52px\";\nexport const DISPLAY_2XL_LETTER_SPACING = \"0%\";\nexport const DISPLAY_2XL_PARAGRAPH_INDENT = \"0px\";\nexport const DISPLAY_2XL_TEXT_CASE = \"none\";\nexport const DISPLAY_2XL_TEXT_DECORATION = \"none\";\nexport const DISPLAY_XL_FONT_FAMILY = \"Campton\";\nexport const DISPLAY_XL_FONT_WEIGHT = 500;\nexport const DISPLAY_XL_LINE_HEIGHT = \"48px\";\nexport const DISPLAY_XL_FONT_SIZE = \"44px\";\nexport const DISPLAY_XL_LETTER_SPACING = \"0%\";\nexport const DISPLAY_XL_PARAGRAPH_INDENT = \"0px\";\nexport const DISPLAY_XL_TEXT_CASE = \"none\";\nexport const DISPLAY_XL_TEXT_DECORATION = \"none\";\nexport const HEADING_XL_FONT_FAMILY = \"Campton\";\nexport const HEADING_XL_FONT_WEIGHT = 600;\nexport const HEADING_XL_LINE_HEIGHT = \"48px\";\nexport const HEADING_XL_FONT_SIZE = \"40px\";\nexport const HEADING_XL_LETTER_SPACING = \"0%\";\nexport const HEADING_XL_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_XL_TEXT_CASE = \"none\";\nexport const HEADING_XL_TEXT_DECORATION = \"none\";\nexport const HEADING_LG_FONT_FAMILY = \"Campton\";\nexport const HEADING_LG_FONT_WEIGHT = 600;\nexport const HEADING_LG_LINE_HEIGHT = \"44px\";\nexport const HEADING_LG_FONT_SIZE = \"36px\";\nexport const HEADING_LG_LETTER_SPACING = \"0%\";\nexport const HEADING_LG_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_LG_TEXT_CASE = \"none\";\nexport const HEADING_LG_TEXT_DECORATION = \"none\";\nexport const HEADING_MD_FONT_FAMILY = \"Campton\";\nexport const HEADING_MD_FONT_WEIGHT = 600;\nexport const HEADING_MD_LINE_HEIGHT = \"40px\";\nexport const HEADING_MD_FONT_SIZE = \"32px\";\nexport const HEADING_MD_LETTER_SPACING = \"0%\";\nexport const HEADING_MD_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_MD_TEXT_CASE = \"none\";\nexport const HEADING_MD_TEXT_DECORATION = \"none\";\nexport const HEADING_SM_FONT_FAMILY = \"Campton\";\nexport const HEADING_SM_FONT_WEIGHT = 600;\nexport const HEADING_SM_LINE_HEIGHT = \"36px\";\nexport const HEADING_SM_FONT_SIZE = \"28px\";\nexport const HEADING_SM_LETTER_SPACING = \"0%\";\nexport const HEADING_SM_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_SM_TEXT_CASE = \"none\";\nexport const HEADING_SM_TEXT_DECORATION = \"none\";\nexport const HEADING_XS_FONT_FAMILY = \"Campton\";\nexport const HEADING_XS_FONT_WEIGHT = 600;\nexport const HEADING_XS_LINE_HEIGHT = \"28px\";\nexport const HEADING_XS_FONT_SIZE = \"20px\";\nexport const HEADING_XS_LETTER_SPACING = \"0%\";\nexport const HEADING_XS_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_XS_TEXT_CASE = \"none\";\nexport const HEADING_XS_TEXT_DECORATION = \"none\";\nexport const HEADING_2XS_FONT_FAMILY = \"Campton\";\nexport const HEADING_2XS_FONT_WEIGHT = 600;\nexport const HEADING_2XS_LINE_HEIGHT = \"24px\";\nexport const HEADING_2XS_FONT_SIZE = \"18px\";\nexport const HEADING_2XS_LETTER_SPACING = \"0%\";\nexport const HEADING_2XS_PARAGRAPH_INDENT = \"0px\";\nexport const HEADING_2XS_TEXT_CASE = \"none\";\nexport const HEADING_2XS_TEXT_DECORATION = \"none\";\nexport const BODY_XL_FONT_FAMILY = \"Campton\";\nexport const BODY_XL_FONT_WEIGHT = \"book\";\nexport const BODY_XL_LINE_HEIGHT = \"28px\";\nexport const BODY_XL_FONT_SIZE = \"18px\";\nexport const BODY_XL_LETTER_SPACING = \"0%\";\nexport const BODY_XL_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_XL_TEXT_CASE = \"none\";\nexport const BODY_XL_TEXT_DECORATION = \"none\";\nexport const BODY_LG_FONT_FAMILY = \"Campton\";\nexport const BODY_LG_FONT_WEIGHT = \"book\";\nexport const BODY_LG_LINE_HEIGHT = \"24px\";\nexport const BODY_LG_FONT_SIZE = \"16px\";\nexport const BODY_LG_LETTER_SPACING = \"0%\";\nexport const BODY_LG_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_LG_TEXT_CASE = \"none\";\nexport const BODY_LG_TEXT_DECORATION = \"none\";\nexport const BODY_MD_FONT_FAMILY = \"Campton\";\nexport const BODY_MD_FONT_WEIGHT = \"book\";\nexport const BODY_MD_LINE_HEIGHT = \"20px\";\nexport const BODY_MD_FONT_SIZE = \"14px\";\nexport const BODY_MD_LETTER_SPACING = \"0%\";\nexport const BODY_MD_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_MD_TEXT_CASE = \"none\";\nexport const BODY_MD_TEXT_DECORATION = \"none\";\nexport const BODY_SM_FONT_FAMILY = \"Campton\";\nexport const BODY_SM_FONT_WEIGHT = \"book\";\nexport const BODY_SM_LINE_HEIGHT = \"20px\";\nexport const BODY_SM_FONT_SIZE = \"12px\";\nexport const BODY_SM_LETTER_SPACING = \"0%\";\nexport const BODY_SM_PARAGRAPH_INDENT = \"0px\";\nexport const BODY_SM_TEXT_CASE = \"none\";\nexport const BODY_SM_TEXT_DECORATION = \"none\";\nexport const UTILITY_BUTTON_FONT_FAMILY = \"Campton\";\nexport const UTILITY_BUTTON_FONT_WEIGHT = 500;\nexport const UTILITY_BUTTON_LINE_HEIGHT = \"16px\";\nexport const UTILITY_BUTTON_FONT_SIZE = \"16px\";\nexport const UTILITY_BUTTON_LETTER_SPACING = \"0%\";\nexport const UTILITY_BUTTON_PARAGRAPH_INDENT = \"0px\";\nexport const UTILITY_BUTTON_TEXT_CASE = \"none\";\nexport const UTILITY_BUTTON_TEXT_DECORATION = \"none\";\nexport const UTILITY_LINK_FONT_FAMILY = \"Campton\";\nexport const UTILITY_LINK_FONT_WEIGHT = 500;\nexport const UTILITY_LINK_LINE_HEIGHT = \"20px\";\nexport const UTILITY_LINK_FONT_SIZE = \"14px\";\nexport const UTILITY_LINK_LETTER_SPACING = \"0%\";\nexport const UTILITY_LINK_PARAGRAPH_INDENT = \"0px\";\nexport const UTILITY_LINK_TEXT_CASE = \"none\";\nexport const UTILITY_LINK_TEXT_DECORATION = \"underline\";\nexport const UTILITY_CAPTION_FONT_FAMILY = \"Campton\";\nexport const UTILITY_CAPTION_FONT_WEIGHT = \"book\";\nexport const UTILITY_CAPTION_LINE_HEIGHT = \"16px\";\nexport const UTILITY_CAPTION_FONT_SIZE = \"12px\";\nexport const UTILITY_CAPTION_LETTER_SPACING = \"0%\";\nexport const UTILITY_CAPTION_PARAGRAPH_INDENT = \"0px\";\nexport const UTILITY_CAPTION_TEXT_CASE = \"none\";\nexport const UTILITY_CAPTION_TEXT_DECORATION = \"none\";\nexport const FONT_FAMILIES_CAMPTON = \"Campton\";\nexport const LINE_HEIGHT_6XL = \"56px\";\nexport const LINE_HEIGHT_5XL = \"48px\";\nexport const LINE_HEIGHT_4XL = \"44px\";\nexport const LINE_HEIGHT_3XL = \"40px\";\nexport const LINE_HEIGHT_2XL = \"36px\";\nexport const LINE_HEIGHT_XL = \"32px\";\nexport const LINE_HEIGHT_LG = \"28px\";\nexport const LINE_HEIGHT_MD = \"24px\";\nexport const LINE_HEIGHT_S = \"20px\";\nexport const LINE_HEIGHT_XS = \"16px\";\nexport const MEDIUM = 500;\nexport const SEMI_BOLD = 600;\nexport const BOOK = \"book\";\nexport const FONT_SIZE_2XS = \"14px\";\nexport const FONT_SIZE_3XS = \"12px\";\nexport const FONT_SIZE_XS = \"16px\";\nexport const FONT_SIZE_MD = \"18px\";\nexport const FONT_SIZE_LG = \"20px\";\nexport const FONT_SIZE_XL = \"28px\";\nexport const FONT_SIZE_2XL = \"32px\";\nexport const FONT_SIZE_3XL = \"36px\";\nexport const FONT_SIZE_4XL = \"40px\";\nexport const FONT_SIZE_5XL = \"44px\";\nexport const FONT_SIZE_6XL = \"52px\";\nexport const LETTER_SPACING_0 = \"0%\";\nexport const TEXT_CASE_NONE = \"none\";\nexport const TEXT_DECORATION_NONE = \"none\";\nexport const TEXT_DECORATION_UNDERLINE = \"underline\";\nexport const PARAGRAPH_INDENT_0 = \"0px\";\n","/**\n * Convert rem values to numbers\n * @param remValue The rem value to convert (e.g. \"1.5rem\")\n * @returns The converted number value\n */\nexport const remToNumber = (remValue: string): number => {\n if (!remValue || typeof remValue !== 'string') return 0;\n return parseFloat(remValue.replace('rem', '')) * 16; // Assuming 1rem = 16px\n};\n\n/**\n * Convert px values to numbers\n * @param pxValue The px value to convert (e.g. \"24px\")\n * @returns The converted number value\n */\nexport const pxToNumber = (pxValue: string): number => {\n if (!pxValue || typeof pxValue !== 'string') return 0;\n return parseFloat(pxValue.replace('px', ''));\n};\n","import { pxToNumber } from \"./utils\";\n\n/**\n * Normalizes font weight to a string representation\n * Converts numeric values to string, handles special cases like \"book\"\n * @param weight The font weight value, can be a string or number\n * @returns Normalized font weight as a string\n */\nexport const normalizeFontWeight = (weight: string | number): string => {\n if (typeof weight === \"number\") {\n return weight.toString();\n }\n\n if (weight === \"book\") {\n return \"400\";\n }\n\n return weight;\n};\n\n/**\n * Calculates an appropriate line height based on font size\n * Uses a standard typographic ratio or falls back to a default multiplier\n *\n * @param fontSize The font size in pixels\n * @param ratio Optional ratio to calculate line height (default: 1.5)\n * @returns The calculated line height as a number\n */\nexport const calculateLineHeight = (\n fontSize: string | number,\n ratio: number = 1.5\n): number => {\n const size = typeof fontSize === \"string\" ? pxToNumber(fontSize) : fontSize;\n return Math.round(size * ratio);\n};\n\n/**\n * Converts letter spacing percentage to a pixel value\n * Figma often uses percentage values for letter spacing\n *\n * @param letterSpacing The letter spacing value (e.g. \"0%\", \"2%\")\n * @param fontSize The font size to calculate relative to\n * @returns The letter spacing in pixels as a number\n */\nexport const letterSpacingToPixels = (\n letterSpacing: string,\n fontSize: string | number\n): number => {\n // If letterSpacing is already a pixel value, convert and return\n if (letterSpacing.endsWith(\"px\")) {\n return pxToNumber(letterSpacing);\n }\n\n // Handle percentage values\n if (letterSpacing.endsWith(\"%\")) {\n const percentage = parseFloat(letterSpacing) / 100;\n const size = typeof fontSize === \"string\" ? pxToNumber(fontSize) : fontSize;\n return size * percentage;\n }\n\n // Default to 0 if format is not recognized\n return 0;\n};\n","// This file maps the generated tokens to a structured format for Typography component\nimport * as tokens from \"./tokens\";\nimport { normalizeFontWeight } from \"./utils/fontUtils\";\nimport { pxToNumber } from \"./utils/utils\";\n\nexport const typographyTokens = {\n // Display variants\n display2xl: {\n fontFamily: tokens.DISPLAY_2XL_FONT_FAMILY,\n fontSize: pxToNumber(tokens.DISPLAY_2XL_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.DISPLAY_2XL_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_6XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.DISPLAY_2XL_LETTER_SPACING,\n textDecoration: tokens.DISPLAY_2XL_TEXT_DECORATION,\n textCase: tokens.DISPLAY_2XL_TEXT_CASE,\n },\n displayXl: {\n fontFamily: tokens.DISPLAY_XL_FONT_FAMILY,\n fontSize: pxToNumber(tokens.DISPLAY_XL_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.DISPLAY_XL_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_5XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.DISPLAY_XL_LETTER_SPACING,\n textDecoration: tokens.DISPLAY_XL_TEXT_DECORATION,\n textCase: tokens.DISPLAY_XL_TEXT_CASE,\n },\n\n // Heading variants\n headingXl: {\n fontFamily: tokens.HEADING_XL_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_XL_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_XL_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_4XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_XL_LETTER_SPACING,\n textDecoration: tokens.HEADING_XL_TEXT_DECORATION,\n textCase: tokens.HEADING_XL_TEXT_CASE,\n },\n headingLg: {\n fontFamily: tokens.HEADING_LG_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_LG_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_LG_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_3XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_LG_LETTER_SPACING,\n textDecoration: tokens.HEADING_LG_TEXT_DECORATION,\n textCase: tokens.HEADING_LG_TEXT_CASE,\n },\n headingMd: {\n fontFamily: tokens.HEADING_MD_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_MD_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_MD_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_2XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_MD_LETTER_SPACING,\n textDecoration: tokens.HEADING_MD_TEXT_DECORATION,\n textCase: tokens.HEADING_MD_TEXT_CASE,\n },\n headingSm: {\n fontFamily: tokens.HEADING_SM_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_SM_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_SM_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_XL),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_SM_LETTER_SPACING,\n textDecoration: tokens.HEADING_SM_TEXT_DECORATION,\n textCase: tokens.HEADING_SM_TEXT_CASE,\n },\n headingXs: {\n fontFamily: tokens.HEADING_XS_FONT_FAMILY,\n fontSize: pxToNumber(tokens.HEADING_XS_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.HEADING_XS_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.LINE_HEIGHT_LG),\n color: tokens.TEXT_HEADER,\n letterSpacing: tokens.HEADING_XS_LETTER_SPACING,\n textDecoration: tokens.HEADING_XS_TEXT_DECORATION,\n textCase: tokens.HEADING_XS_TEXT_CASE,\n },\n\n // Body text variants\n bodyXl: {\n fontFamily: tokens.BODY_XL_FONT_FAMILY,\n fontSize: pxToNumber(tokens.BODY_XL_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.BODY_XL_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.BODY_XL_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.BODY_XL_LETTER_SPACING,\n textDecoration: tokens.BODY_XL_TEXT_DECORATION,\n textCase: tokens.BODY_XL_TEXT_CASE,\n paragraphIndent: tokens.BODY_XL_PARAGRAPH_INDENT,\n },\n bodyLg: {\n fontFamily: tokens.BODY_LG_FONT_FAMILY,\n fontSize: pxToNumber(tokens.BODY_LG_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.BODY_LG_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.BODY_LG_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.BODY_LG_LETTER_SPACING,\n textDecoration: tokens.BODY_LG_TEXT_DECORATION,\n textCase: tokens.BODY_LG_TEXT_CASE,\n paragraphIndent: tokens.BODY_LG_PARAGRAPH_INDENT,\n },\n bodyMd: {\n fontFamily: tokens.BODY_MD_FONT_FAMILY,\n fontSize: pxToNumber(tokens.BODY_MD_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.BODY_MD_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.BODY_MD_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.BODY_MD_LETTER_SPACING,\n textDecoration: tokens.BODY_MD_TEXT_DECORATION,\n textCase: tokens.BODY_MD_TEXT_CASE,\n paragraphIndent: tokens.BODY_MD_PARAGRAPH_INDENT,\n },\n bodySm: {\n fontFamily: tokens.BODY_SM_FONT_FAMILY,\n fontSize: pxToNumber(tokens.BODY_SM_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.BODY_SM_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.BODY_SM_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.BODY_SM_LETTER_SPACING,\n textDecoration: tokens.BODY_SM_TEXT_DECORATION,\n textCase: tokens.BODY_SM_TEXT_CASE,\n paragraphIndent: tokens.BODY_SM_PARAGRAPH_INDENT,\n },\n bodyXs: {\n // Map to utility-caption which is our smallest text style in Figma tokens\n fontFamily: tokens.UTILITY_CAPTION_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_CAPTION_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_CAPTION_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_CAPTION_LINE_HEIGHT),\n color: tokens.TEXT_BODY,\n letterSpacing: tokens.UTILITY_CAPTION_LETTER_SPACING,\n textDecoration: tokens.UTILITY_CAPTION_TEXT_DECORATION,\n textCase: tokens.UTILITY_CAPTION_TEXT_CASE,\n paragraphIndent: tokens.UTILITY_CAPTION_PARAGRAPH_INDENT,\n },\n\n // Label variants - map to Utility tokens from Figma\n labelLg: {\n // Maps to utility-button\n fontFamily: tokens.UTILITY_BUTTON_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_BUTTON_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_BUTTON_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_BUTTON_LINE_HEIGHT),\n color: tokens.TEXT_TERTIARY,\n letterSpacing: tokens.UTILITY_BUTTON_LETTER_SPACING,\n textDecoration: tokens.UTILITY_BUTTON_TEXT_DECORATION,\n textCase: tokens.UTILITY_BUTTON_TEXT_CASE,\n },\n labelMd: {\n // Maps to utility-link\n fontFamily: tokens.UTILITY_LINK_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_LINK_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_LINK_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_LINK_LINE_HEIGHT),\n color: tokens.TEXT_TERTIARY,\n letterSpacing: tokens.UTILITY_LINK_LETTER_SPACING,\n textDecoration: tokens.TEXT_DECORATION_NONE, // Override the default underline from utility-link\n textCase: tokens.UTILITY_LINK_TEXT_CASE,\n },\n labelSm: {\n // Maps to utility-caption\n fontFamily: tokens.UTILITY_CAPTION_FONT_FAMILY,\n fontSize: pxToNumber(tokens.UTILITY_CAPTION_FONT_SIZE),\n fontWeight: normalizeFontWeight(tokens.UTILITY_CAPTION_FONT_WEIGHT),\n lineHeight: pxToNumber(tokens.UTILITY_CAPTION_LINE_HEIGHT),\n color: tokens.TEXT_TERTIARY,\n letterSpacing: tokens.UTILITY_CAPTION_LETTER_SPACING,\n textDecoration: tokens.UTILITY_CAPTION_TEXT_DECORATION,\n textCase: tokens.UTILITY_CAPTION_TEXT_CASE,\n },\n\n // Weights mapping for custom weight overrides\n weights: {\n normal: \"400\", // Regular weight\n medium: normalizeFontWeight(tokens.MEDIUM),\n semibold: normalizeFontWeight(tokens.SEMI_BOLD),\n bold: \"700\", // Bold weight (not directly defined in tokens)\n },\n};\n\nexport default typographyTokens;\n","export interface ThemeColors {\n primary: string;\n secondary: string;\n background: string;\n surface: string;\n text: string;\n textSecondary: string;\n border: string;\n error: string;\n warning: string;\n success: string;\n}\n\nexport interface ThemeSpacing {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n}\n\nexport interface ThemeBorderRadius {\n none: number;\n sm: number;\n md: number;\n lg: number;\n full: number;\n}\n\nexport interface ThemeTypography {\n fontSize: {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n xxl: number;\n };\n fontWeight: {\n normal: '400' | 'normal';\n medium: '500' | 'medium';\n semibold: '600' | 'semibold';\n bold: '700' | 'bold';\n };\n lineHeight: {\n tight: number;\n normal: number;\n relaxed: number;\n };\n}\n\nexport interface Theme {\n colors: ThemeColors;\n spacing: ThemeSpacing;\n borderRadius: ThemeBorderRadius;\n typography: ThemeTypography;\n}\n\nexport const defaultTheme: Theme = {\n colors: {\n primary: '#007AFF',\n secondary: '#5856D6',\n background: '#FFFFFF',\n surface: '#F2F2F7',\n text: '#000000',\n textSecondary: '#8E8E93',\n border: '#E5E5EA',\n error: '#FF3B30',\n warning: '#FF9500',\n success: '#34C759',\n },\n spacing: {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32,\n },\n borderRadius: {\n none: 0,\n sm: 4,\n md: 8,\n lg: 12,\n full: 9999,\n },\n typography: {\n fontSize: {\n xs: 12,\n sm: 14,\n md: 16,\n lg: 18,\n xl: 20,\n xxl: 24,\n },\n fontWeight: {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n lineHeight: {\n tight: 1.2,\n normal: 1.5,\n relaxed: 1.8,\n },\n },\n};\n","import React, { createContext, useContext, ReactNode } from \"react\";\nimport { Theme, defaultTheme } from \"./index\";\n\ninterface ThemeContextValue {\n theme: Theme;\n updateTheme: (newTheme: Partial<Theme>) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\ninterface ThemeProviderProps {\n children: ReactNode;\n theme?: Partial<Theme>;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n theme: customTheme,\n}) => {\n // Using useMemo instead of useState to prevent unnecessary re-renders\n const theme = React.useMemo<Theme>(\n () => ({\n ...defaultTheme,\n ...customTheme,\n colors: { ...defaultTheme.colors, ...customTheme?.colors },\n spacing: { ...defaultTheme.spacing, ...customTheme?.spacing },\n borderRadius: {\n ...defaultTheme.borderRadius,\n ...customTheme?.borderRadius,\n },\n typography: {\n ...defaultTheme.typography,\n ...customTheme?.typography,\n fontSize: {\n ...defaultTheme.typography.fontSize,\n ...customTheme?.typography?.fontSize,\n },\n fontWeight: {\n ...defaultTheme.typography.fontWeight,\n ...customTheme?.typography?.fontWeight,\n },\n lineHeight: {\n ...defaultTheme.typography.lineHeight,\n ...customTheme?.typography?.lineHeight,\n },\n },\n }),\n [customTheme]\n );\n\n const updateTheme = React.useCallback((newTheme: Partial<Theme>) => {\n console.log(\n \"Theme update requested, but we are using static theme for now.\",\n newTheme\n );\n }, []);\n\n return (\n <ThemeContext.Provider value={{ theme, updateTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextValue => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n","import React from \"react\";\nimport typographyTokens from \"../../styles/tokens/typography\";\nimport { BodyProps } from \"../../types/Typography\";\n\nexport const Body: React.FC<BodyProps> = ({\n size = \"lg\",\n element = \"p\",\n align = \"left\",\n weight,\n color,\n truncate = false,\n lineClamp,\n children,\n className = \"\",\n style = {},\n onClick,\n testID,\n ...rest\n}) => {\n const getStyles = (): React.CSSProperties => {\n let tokenSet;\n switch (size) {\n case \"xl\":\n tokenSet = typographyTokens.bodyXl;\n break;\n case \"lg\":\n tokenSet = typographyTokens.bodyLg;\n break;\n case \"md\":\n tokenSet = typographyTokens.bodyMd;\n break;\n case \"sm\":\n tokenSet = typographyTokens.bodySm;\n break;\n }\n\n let fontWeightValue = parseInt(tokenSet.fontWeight);\n if (weight) {\n if (weight === \"normal\") fontWeightValue = 400;\n else if (weight === \"medium\") fontWeightValue = 500;\n else if (weight === \"semibold\") fontWeightValue = 600;\n else if (weight === \"bold\") fontWeightValue = 700;\n }\n\n const baseStyles: React.CSSProperties = {\n fontFamily: tokenSet.fontFamily,\n fontSize: `${tokenSet.fontSize}px`,\n lineHeight: `${tokenSet.lineHeight}px`,\n fontWeight: fontWeightValue,\n color: color || tokenSet.color,\n textAlign: align,\n letterSpacing: tokenSet.letterSpacing,\n textDecoration: tokenSet.textDecoration || \"none\",\n };\n\n if (truncate) {\n baseStyles.whiteSpace = \"nowrap\";\n baseStyles.overflow = \"hidden\";\n baseStyles.textOverflow = \"ellipsis\";\n baseStyles.display = \"block\";\n }\n\n if (lineClamp && lineClamp > 0) {\n baseStyles.display = \"-webkit-box\";\n baseStyles.WebkitLineClamp = lineClamp;\n baseStyles.WebkitBoxOrient = \"vertical\";\n baseStyles.overflow = \"hidden\";\n baseStyles.textOverflow = \"ellipsis\";\n }\n\n return baseStyles;\n };\n\n const combinedStyles = {\n ...getStyles(),\n ...style,\n };\n\n const linkProps = element === \"a\" ? rest : {};\n\n const Component = element as React.ElementType;\n\n return (\n <Component\n style={combinedStyles}\n className={className}\n data-testid={testID}\n onClick={onClick}\n {...linkProps}\n >\n {children}\n </Component>\n );\n};\n","import React, { useState } from \"react\";\nimport { ButtonProps, ButtonState } from \"../../types/Button\";\nimport { Icon } from \"../Icon\";\nimport typographyTokens from \"../../styles/tokens/typography\";\nimport * as tokens from \"../../styles/tokens/tokens\";\n\nexport const Button: React.FC<ButtonProps> = ({\n label,\n type = \"primary\",\n size = \"large\",\n disabled = false,\n leftIcon,\n rightIcon,\n icon,\n fullWidth = false,\n style,\n accessibilityLabel,\n testID,\n onClick,\n className,\n onMouseEnter,\n onMouseLeave,\n onMouseDown,\n onMouseUp,\n}) => {\n const isIconOnly = !!icon;\n\n // Create icon components from icon names\n const leftIconComponent = leftIcon ? (\n <Icon name={leftIcon} size={size === \"large\" ? 20 : 16} />\n ) : null;\n const rightIconComponent = rightIcon ? (\n <Icon name={rightIcon} size={size === \"large\" ? 20 : 16} />\n ) : null;\n const iconButton = icon ? (\n <Icon name={icon} size={size === \"large\" ? 20 : 16} />\n ) : null;\n\n const [buttonState, setButtonState] = useState<ButtonState>(\n disabled ? \"disabled\" : \"default\"\n );\n\n const hasBothIcons = leftIcon && rightIcon;\n\n // Base button styles\n const getBaseStyles = (): React.CSSProperties => {\n const baseStyle: React.CSSProperties = {\n display: isIconOnly ? \"inline-flex\" : \"flex\",\n width: isIconOnly ? \"auto\" : fullWidth ? \"100%\" : \"9.375rem\",\n height: size === \"large\" ? \"2.75rem\" : \"2rem\",\n padding: type === \"ghost\" ? tokens.SPACE_0 : tokens.COMPONENT_CARD_SM,\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: hasBothIcons\n ? tokens.LAYOUT_SPACING_INLINE_MD\n : tokens.LAYOUT_SPACING_INLINE_XS,\n flexShrink: 0,\n borderRadius: tokens.BORDER_RADIUS_BUTTON_FULL,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n transition: \"all 0.2s ease-in-out\",\n border: \"none\",\n };\n\n // Apply styles based on type and state\n switch (type) {\n case \"primary\":\n switch (buttonState) {\n case \"default\":\n baseStyle.background = tokens.ACTION_PRIMARY_DEFAULT;\n break;\n case \"hover\":\n baseStyle.background = tokens.ACTION_PRIMARY_HOVER;\n break;\n case \"active\":\n baseStyle.background = tokens.ACTION_PRIMARY_ACTIVE;\n break;\n case \"disabled\":\n baseStyle.background = tokens.ACTION_PRIMARY_DISABLED;\n baseStyle.opacity = 0.6;\n break;\n }\n break;\n case \"outline\":\n baseStyle.background = \"transparent\";\n switch (buttonState) {\n case \"default\":\n baseStyle.border = `${tokens.BORDER_WIDTH_BUTTON_DEFAULT} solid ${tokens.ACTION_TERTIARY_DEFAULT}`;\n break;\n case \"hover\":\n baseStyle.border = `${tokens.BORDER_WIDTH_BUTTON_HOVER} solid ${tokens.ACTION_TERTIARY_HOVER}`;\n break;\n case \"active\":\n baseStyle.border = `${tokens.BORDER_WIDTH_BUTTON_PRESSED} solid ${tokens.ACTION_TERTIARY_ACTIVE}`;\n break;\n case \"disabled\":\n baseStyle.border = `${tokens.BORDER_WIDTH_BUTTON_DEFAULT} solid ${tokens.ACTION_TERTIARY_DISABLE}`;\n baseStyle.opacity = 0.6;\n break;\n }\n break;\n case \"ghost\":\n baseStyle.background = \"transparent\";\n break;\n case \"destructive\":\n baseStyle.background = \"transparent\";\n switch (buttonState) {\n case \"default\":\n baseStyle.color = tokens.ACTION_DESTRUCTIVE_HOVER;\n break;\n case \"hover\":\n baseStyle.color = tokens.ACTION_DESTRUCTIVE_DEFAULT;\n break;\n case \"active\":\n baseStyle.color = tokens.ACTION_DESTRUCTIVE_ACTIVE;\n break;\n case \"disabled\":\n baseStyle.color = tokens.ACTION_DESTRUCTIVE_DISABLE;\n baseStyle.opacity = 0.6;\n break;\n }\n break;\n }\n\n return { ...baseStyle, ...style };\n };\n\n const getTextStyles = (): React.CSSProperties => {\n const buttonTokens =\n size === \"large\" ? typographyTokens.labelLg : typographyTokens.labelMd;\n\n const textStyle: React.CSSProperties = {\n fontFamily: buttonTokens.fontFamily,\n fontWeight: parseInt(buttonTokens.fontWeight),\n fontSize: `${buttonTokens.fontSize}px`,\n lineHeight: `${buttonTokens.lineHeight}px`,\n transition: \"all 0.2s ease-in-out\",\n };\n\n switch (type) {\n case \"primary\":\n textStyle.color = tokens.NEUTRAL_80;\n break;\n case \"outline\":\n switch (buttonState) {\n case \"default\":\n textStyle.color = tokens.ACTION_TERTIARY_DEFAULT;\n break;\n case \"hover\":\n textStyle.color = tokens.ACTION_TERTIARY_HOVER;\n break;\n case \"active\":\n textStyle.color = tokens.ACTION_TERTIARY_ACTIVE;\n break;\n case \"disabled\":\n textStyle.color = tokens.ACTION_TERTIARY_DISABLE;\n break;\n }\n break;\n case \"ghost\":\n switch (buttonState) {\n case \"default\":\n textStyle.color = tokens.ACTION_TERTIARY_DEFAULT;\n break;\n case \"hover\":\n textStyle.color = tokens.ACTION_TERTIARY_HOVER;\n break;\n case \"active\":\n textStyle.color = tokens.ACTION_TERTIARY_ACTIVE;\n break;\n case \"disabled\":\n textStyle.color = tokens.ACTION_TERTIARY_DISABLE;\n break;\n }\n break;\n case \"destructive\":\n break;\n }\n\n return textStyle;\n };\n\n // Icon styles\n const getIconStyles = (): React.CSSProperties => {\n return {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"currentColor\",\n };\n };\n\n // Event handlers for state changes\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n setButtonState(\"hover\");\n onMouseEnter && onMouseEnter(e);\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n setButtonState(\"default\");\n onMouseLeave && onMouseLeave(e);\n }\n };\n\n const handleMouseDown = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n setButtonState(\"active\");\n onMouseDown && onMouseDown(e);\n }\n };\n\n const handleMouseUp = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n setButtonState(\"hover\");\n onMouseUp && onMouseUp(e);\n }\n };\n\n return (\n <button\n style={getBaseStyles()}\n onClick={onClick}\n disabled={disabled}\n aria-label={accessibilityLabel || label}\n data-testid={testID}\n className={className}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n >\n {!isIconOnly && leftIcon && (\n <span style={getIconStyles()} className=\"button-left-icon\">\n {leftIconComponent}\n </span>\n )}\n\n {!isIconOnly && <span style={getTextStyles()}>{label}</span>}\n\n {isIconOnly && <span style={getIconStyles()}>{iconButton}</span>}\n\n {!isIconOnly && rightIcon && (\n <span style={getIconStyles()} className=\"button-right-icon\">\n {rightIconComponent}\n </span>\n )}\n </button>\n );\n};\n","import React from \"react\";\nimport typographyTokens from \"../../styles/tokens/typography\";\nimport { DisplayProps } from \"../../types/Typography\";\n\nexport const Display: React.FC<DisplayProps> = ({\n size = \"2xl\",\n element = \"h1\",\n align = \"left\",\n weight,\n color,\n truncate = false,\n lineClamp,\n children,\n className = \"\",\n style = {},\n onClick,\n testID,\n ...rest\n}) => {\n const getStyles = (): React.CSSProperties => {\n const tokenSet =\n size === \"2xl\" ? typographyTokens.display2xl : typographyTokens.displayXl;\n\n let fontWeightValue = parseInt(tokenSet.fontWeight);\n if (weight) {\n if (weight === \"normal\") fontWeightValue = 400;\n else if (weight === \"medium\") fontWeightValue = 500;\n else if (weight === \"semibold\") fontWeightValue = 600;\n else if (weight === \"bold\") fontWeightValue = 700;\n }\n\n const baseStyles: React.CSSProperties = {\n fontFamily: tokenSet.fontFamily,\n fontSize: `${tokenSet.fontSize}px`,\n lineHeight: `${tokenSet.lineHeight}px`,\n fontWeight: fontWeightValue,\n color: color || tokenSet.color,\n textAlign: align,\n letterSpacing: tokenSet.letterSpacing,\n textDecoration: tokenSet.textDecoration || \"none\",\n };\n\n if (truncate) {\n baseStyles.whiteSpace = \"nowrap\";\n baseStyles.overflow = \"hidden\";\n baseStyles.textOverflow = \"ellipsis\";\n baseStyles.display = \"block\";\n }\n\n if (lineClamp && lineClamp > 0) {\n baseStyles.display = \"-webkit-box\";\n baseStyles.WebkitLineClamp = lineClamp;\n baseStyles.WebkitBoxOrient = \"vertical\";\n baseStyles.overflow = \"hidden\";\n baseStyles.textOverflow = \"ellipsis\";\n }\n\n return baseStyles;\n };\n\n const combinedStyles = {\n ...getStyles(),\n ...style,\n };\n\n const Component = element as React.ElementType;\n\n return (\n <Component\n style={combinedStyles}\n className={className}\n data-testid={testID}\n onClick={onClick}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n","import React from \"react\";\nimport typographyTokens from \"../../styles/tokens/typography\";\nimport { HeadingProps, TypographyWeight } from \"../../types/Typography\";\n\ntype HeadingTokenKey =\n | \"headingXl\"\n | \"headingLg\"\n | \"headingMd\"\n | \"headingSm\"\n | \"headingXs\";\n\nexport const Heading: React.FC<HeadingProps> = ({\n size = \"xl\",\n element = \"h2\",\n align = \"left\",\n weight,\n color,\n truncate = false,\n lineClamp,\n children,\n className = \"\",\n style = {},\n onClick,\n testID,\n ...rest\n}) => {\n const getStyles = (): React.CSSProperties => {\n const tokenKeyMap: Record<string, HeadingTokenKey> = {\n xl: \"headingXl\",\n lg: \"headingLg\",\n md: \"headingMd\",\n sm: \"headingSm\",\n xs: \"headingXs\",\n };\n\n const tokenSet = typographyTokens[tokenKeyMap[size]];\n\n const fontWeightValue = weight\n ? parseInt(typographyTokens.weights[weight])\n : parseInt(tokenSet.fontWeight);\n\n const baseStyles: React.CSSProperties = {\n fontFamily: tokenSet.fontFamily,\n fontSize: `${tokenSet.fontSize}px`,\n lineHeight: `${tokenSet.lineHeight}px`,\n fontWeight: fontWeightValue,\n color: color || tokenSet.color,\n textAlign: align,\n letterSpacing: tokenSet.letterSpacing,\n textDecoration: tokenSet.textDecoration || \"none\",\n };\n\n const truncationStyles: React.CSSProperties = truncate\n ? {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"block\",\n }\n : {};\n\n const lineClampStyles: React.CSSProperties =\n lineClamp && lineClamp > 0\n ? {\n display: \"-webkit-box\",\n WebkitLineClamp: lineClamp,\n WebkitBoxOrient: \"vertical\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }\n : {};\n\n return {\n ...baseStyles,\n ...truncationStyles,\n ...lineClampStyles,\n };\n };\n\n const combinedStyles = {\n ...getStyles(),\n ...style,\n };\n\n const linkProps = element === \"a\" ? rest : {};\n\n const headingElementMap: Record<string, React.ElementType> = {\n xl: \"h1\",\n lg: \"h2\",\n md: \"h3\",\n sm: \"h4\",\n xs: \"h5\",\n };\n\n const defaultElement = element === \"h2\" ? headingElementMap[size] : element;\n\n const Component = defaultElement as React.ElementType;\n\n return (\n <Component\n style={combinedStyles}\n className={className}\n data-testid={testID}\n onClick={onClick}\n {...linkProps}\n >\n {children}\n </Component>\n );\n};\n","import React from 'react';\nimport { Icon, icons, IconData } from './Icon';\n\nexport interface IconListProps {\n /**\n * Search query to filter icons\n */\n searchQuery?: string;\n\n /**\n * Size of each icon\n */\n iconSize?: number;\n\n /**\n * Color of each icon\n */\n iconColor?: string;\n\n /**\n * Function to handle when an icon is clicked\n */\n onIconClick?: (iconName: string) => void;\n}\n\nexport const IconList: React.FC<IconListProps> = ({\n searchQuery = '',\n iconSize = 24,\n iconColor = 'currentColor',\n onIconClick,\n}) => {\n // Filter icons based on the search query\n const filteredIcons = searchQuery\n ? icons.filter(icon => \n icon.name.toLowerCase().includes(searchQuery.toLowerCase())\n )\n : icons;\n\n const handleIconClick = (iconName: string) => {\n if (onIconClick) {\n onIconClick(iconName);\n }\n };\n\n return (\n <div>\n {filteredIcons.length === 0 ? (\n <div style={{ padding: '20px', textAlign: 'center' }}>\n No icons found matching \"{searchQuery}\"\n </div>\n ) : (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(100px, 1fr))',\n gap: '20px',\n }}\n >\n {filteredIcons.map((icon: IconData) => (\n <div\n key={icon.name}\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '12px',\n border: '1px solid #eee',\n borderRadius: '8px',\n cursor: onIconClick ? 'pointer' : 'default',\n transition: 'all 0.2s ease-in-out',\n }}\n onClick={() => handleIconClick(icon.name)}\n onMouseOver={(e) => {\n e.currentTarget.style.backgroundColor = '#f9f9f9';\n e.currentTarget.style.transform = 'translateY(-2px)';\n e.currentTarget.style.boxShadow = '0 2px 8px rgba(0,0,0,0.05)';\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = 'none';\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '50px',\n marginBottom: '8px',\n }}\n >\n <Icon name={icon.name} size={iconSize} color={iconColor} />\n </div>\n <div\n style={{\n fontSize: '12px',\n textAlign: 'center',\n wordBreak: 'break-word',\n }}\n >\n {icon.name}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport typographyTokens from \"../../styles/tokens/typography\";\nimport { UtilityProps } from \"../../types/Typography\";\n\nexport const Utility: React.FC<UtilityProps> = ({\n variant = \"button\",\n element,\n align = \"left\",\n weight,\n color,\n truncate = false,\n lineClamp,\n children,\n className = \"\",\n style = {},\n onClick,\n testID,\n ...rest\n}) => {\n const getDefaultElement = () => {\n switch (variant) {\n case \"button\":\n return \"span\";\n case \"link\":\n return \"a\";\n case \"caption\":\n return \"span\";\n default:\n return \"span\";\n }\n };\n\n const elementToUse = element || getDefaultElement();\n\n const getStyles = (): React.CSSProperties => {\n let tokenSet;\n switch (variant) {\n case \"button\":\n tokenSet = typographyTokens.labelLg;\n break;\n case \"link\":\n tokenSet = typographyTokens.labelMd;\n break;\n case \"caption\":\n tokenSet = typographyTokens.labelSm;\n break;\n }\n\n let fontWeightValue = parseInt(tokenSet.fontWeight);\n if (weight) {\n if (weight === \"normal\") fontWeightValue = 400;\n else if (weight === \"medium\") fontWeightValue = 500;\n else if (weight === \"semibold\") fontWeightValue = 600;\n else if (weight === \"bold\") fontWeightValue = 700;\n }\n\n const baseStyles: React.CSSProperties = {\n fontFamily: tokenSet.fontFamily,\n fontSize: `${tokenSet.fontSize}px`,\n lineHeight: `${tokenSet.lineHeight}px`,\n fontWeight: fontWeightValue,\n color: color || tokenSet.color,\n textAlign: align,\n letterSpacing: tokenSet.letterSpacing,\n textDecoration:\n variant === \"link\" ? \"underline\" : tokenSet.textDecoration || \"none\",\n };\n\n if (truncate) {\n baseStyles.whiteSpace = \"nowrap\";\n baseStyles.overflow = \"hidden\";\n baseStyles.textOverflow = \"ellipsis\";\n baseStyles.display = \"block\";\n }\n\n if (lineClamp && lineClamp > 0) {\n baseStyles.display = \"-webkit-box\";\n baseStyles.WebkitLineClamp = lineClamp;\n baseStyles.WebkitBoxOrient = \"vertical\";\n baseStyles.overflow = \"hidden\";\n baseStyles.textOverflow = \"ellipsis\";\n }\n\n return baseStyles;\n };\n\n const combinedStyles = {\n ...getStyles(),\n ...style,\n };\n\n const linkProps = elementToUse === \"a\" ? rest : {};\n\n const Component = elementToUse as React.ElementType;\n\n return (\n <Component\n style={combinedStyles}\n className={className}\n data-testid={testID}\n onClick={onClick}\n {...linkProps}\n >\n {children}\n </Component>\n );\n};\n"],"names":["icons","iconMap","Map","forEach","icon","set","name","Icon","size","color","className","style","onClick","ariaLabel","iconInfo","get","console","warn","paths","path","split","map","index","combinedStyle","display","verticalAlign","_jsx","jsx","width","height","viewBox","fill","xmlns","role","children","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","BORDER_WIDTH_BUTTON_DEFAULT","TEXT_TERTIARY","TEXT_BODY","TEXT_HEADER","ACTION_TERTIARY_DEFAULT","ACTION_TERTIARY_HOVER","ACTION_TERTIARY_ACTIVE","ACTION_TERTIARY_DISABLE","UTILITY_CAPTION_FONT_FAMILY","UTILITY_CAPTION_FONT_WEIGHT","UTILITY_CAPTION_LINE_HEIGHT","UTILITY_CAPTION_FONT_SIZE","UTILITY_CAPTION_TEXT_CASE","UTILITY_CAPTION_TEXT_DECORATION","pxToNumber","pxValue","parseFloat","replace","normalizeFontWeight","weight","toString","typographyTokens","display2xl","fontFamily","fontSize","fontWeight","lineHeight","tokens.TEXT_HEADER","letterSpacing","textDecoration","textCase","displayXl","headingXl","headingLg","headingMd","headingSm","headingXs","bodyXl","tokens.TEXT_BODY","paragraphIndent","bodyLg","bodyMd","bodySm","bodyXs","tokens.UTILITY_CAPTION_FONT_FAMILY","tokens.UTILITY_CAPTION_FONT_SIZE","tokens.UTILITY_CAPTION_FONT_WEIGHT","tokens.UTILITY_CAPTION_LINE_HEIGHT","tokens.UTILITY_CAPTION_TEXT_DECORATION","tokens.UTILITY_CAPTION_TEXT_CASE","labelLg","tokens.TEXT_TERTIARY","labelMd","labelSm","weights","normal","medium","semibold","bold","defaultTheme","colors","primary","secondary","background","surface","text","textSecondary","border","error","warning","success","spacing","xs","sm","md","lg","xl","borderRadius","none","full","typography","xxl","tight","relaxed","ThemeContext","createContext","undefined","element","align","truncate","lineClamp","testID","rest","combinedStyles","tokenSet","fontWeightValue","parseInt","baseStyles","textAlign","whiteSpace","overflow","textOverflow","WebkitLineClamp","WebkitBoxOrient","getStyles","linkProps","Component","label","type","disabled","leftIcon","rightIcon","fullWidth","accessibilityLabel","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","isIconOnly","leftIconComponent","rightIconComponent","iconButton","buttonState","setButtonState","useState","hasBothIcons","_jsxs","baseStyle","padding","justifyContent","alignItems","gap","flexShrink","cursor","opacity","transition","tokens.BORDER_WIDTH_BUTTON_DEFAULT","tokens.ACTION_TERTIARY_DEFAULT","tokens.ACTION_TERTIARY_HOVER","tokens.ACTION_TERTIARY_ACTIVE","tokens.ACTION_TERTIARY_DISABLE","getBaseStyles","e","buttonTokens","textStyle","getTextStyles","searchQuery","iconSize","iconColor","onIconClick","filteredIcons","filter","toLowerCase","includes","length","gridTemplateColumns","flexDirection","handleIconClick","iconName","onMouseOver","currentTarget","backgroundColor","transform","boxShadow","onMouseOut","marginBottom","wordBreak","theme","customTheme","React","useMemo","_a","_b","_c","updateTheme","useCallback","newTheme","log","Provider","value","variant","elementToUse","getDefaultElement","context","useContext","Error"],"mappings":"6MAgDa,MAAAA,kvGAGPC,EAAU,IAAIC,IACpBF,EAAMG,SAASC,IACbH,EAAQI,IAAID,EAAKE,KAAMF,MAGlB,MAAMG,EAA4B,EACvCD,OACAE,OAAO,GACPC,QAAQ,eACRC,YAAY,GACZC,QAAQ,CAAE,EACVC,UACAC,gBAGA,MAAMC,EAAWb,EAAQc,IAAIT,GAG7B,IAAKQ,EAEH,OADAE,QAAQC,KAAK,SAASX,gBACf,KAIT,MAAMY,EAAQJ,EAASK,KAAKC,MAAM,OAAOC,KAAI,CAACF,EAAMG,IACxC,IAAVA,EAAcH,EAAO,KAAKA,MAItBI,EAAqC,CACzCC,QAAS,eACTC,cAAe,YACZd,GAGL,OACEe,EACEC,IAAA,MAAA,CAAAC,MAAOpB,EACPqB,OAAQrB,EACRsB,QAAShB,EAASgB,QAClBC,KAAK,OACLC,MAAM,6BACNtB,UAAWA,EACXC,MAAOY,EACPX,QAASA,EAAO,aACJC,GAAa,GAAGP,SAC5B2B,KAAK,MAEJC,SAAAhB,EAAMG,KAAI,CAACF,EAAMG,IAChBI,EAAAA,IAAA,OAAA,CAEES,EAAGhB,EACHiB,OAAQtB,EAASiB,KAAO,OAAStB,EACjCsB,KAAMjB,EAASiB,KAAOtB,EAAQ,OAC9B4B,YAAY,MACZC,cAAc,QACdC,eAAe,SANVjB,QC1EFkB,EAA8B,YAwF9BC,EAAgB,UAChBC,EAAY,UACZC,EAAc,OAqBdC,EAA0B,UAC1BC,EAAwB,OACxBC,EAAyB,UACzBC,EAA0B,UA2K1BC,EAA8B,UAC9BC,EAA8B,OAC9BC,EAA8B,OAC9BC,EAA4B,OAG5BC,EAA4B,OAC5BC,EAAkC,OChTlCC,EAAcC,GACpBA,GAA8B,iBAAZA,EAChBC,WAAWD,EAAQE,QAAQ,KAAM,KADY,ECRzCC,EAAuBC,GACZ,iBAAXA,EACFA,EAAOC,WAGD,SAAXD,EACK,MAGFA,ECZIE,EAAmB,CAE9BC,WAAY,CACVC,WHgMmC,UG/LnCC,SAAUV,EHkMuB,QGjMjCW,WAAYP,EH+LuB,KG9LnCQ,WAAYZ,EHsTe,QGrT3B7C,MAAO0D,EACPC,cH+LsC,KG9LtCC,eHiMuC,OGhMvCC,SH+LiC,QG7LnCC,UAAW,CACTR,WH8LkC,UG7LlCC,SAAUV,EHgMsB,QG/LhCW,WAAYP,EH6LsB,KG5LlCQ,WAAYZ,EH6Se,QG5S3B7C,MAAO0D,EACPC,cH6LqC,KG5LrCC,eH+LsC,OG9LtCC,SH6LgC,QGzLlCE,UAAW,CACTT,WH0LkC,UGzLlCC,SAAUV,EH4LsB,QG3LhCW,WAAYP,EHyLsB,KGxLlCQ,WAAYZ,EHkSe,QGjS3B7C,MAAO0D,EACPC,cHyLqC,KGxLrCC,eH2LsC,OG1LtCC,SHyLgC,QGvLlCG,UAAW,CACTV,WHwLkC,UGvLlCC,SAAUV,EH0LsB,QGzLhCW,WAAYP,EHuLsB,KGtLlCQ,WAAYZ,EHyRe,QGxR3B7C,MAAO0D,EACPC,cHuLqC,KGtLrCC,eHyLsC,OGxLtCC,SHuLgC,QGrLlCI,UAAW,CACTX,WHsLkC,UGrLlCC,SAAUV,EHwLsB,QGvLhCW,WAAYP,EHqLsB,KGpLlCQ,WAAYZ,EHgRe,QG/Q3B7C,MAAO0D,EACPC,cHqLqC,KGpLrCC,eHuLsC,OGtLtCC,SHqLgC,QGnLlCK,UAAW,CACTZ,WHoLkC,UGnLlCC,SAAUV,EHsLsB,QGrLhCW,WAAYP,EHmLsB,KGlLlCQ,WAAYZ,EHuQc,QGtQ1B7C,MAAO0D,EACPC,cHmLqC,KGlLrCC,eHqLsC,OGpLtCC,SHmLgC,QGjLlCM,UAAW,CACTb,WHkLkC,UGjLlCC,SAAUV,EHoLsB,QGnLhCW,WAAYP,EHiLsB,KGhLlCQ,WAAYZ,EH8Pc,QG7P1B7C,MAAO0D,EACPC,cHiLqC,KGhLrCC,eHmLsC,OGlLtCC,SHiLgC,QG7KlCO,OAAQ,CACNd,WHsL+B,UGrL/BC,SAAUV,EHwLmB,QGvL7BW,WAAYP,EHqLmB,QGpL/BQ,WAAYZ,EHqLmB,QGpL/B7C,MAAOqE,EACPV,cHqLkC,KGpLlCC,eHuLmC,OGtLnCC,SHqL6B,OGpL7BS,gBHmLoC,OGjLtCC,OAAQ,CACNjB,WHmL+B,UGlL/BC,SAAUV,EHqLmB,QGpL7BW,WAAYP,EHkLmB,QGjL/BQ,WAAYZ,EHkLmB,QGjL/B7C,MAAOqE,EACPV,cHkLkC,KGjLlCC,eHoLmC,OGnLnCC,SHkL6B,OGjL7BS,gBHgLo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"}
@@ -69,6 +69,17 @@ export declare const typographyTokens: {
69
69
  textDecoration: string;
70
70
  textCase: string;
71
71
  };
72
+ bodyXl: {
73
+ fontFamily: string;
74
+ fontSize: number;
75
+ fontWeight: string;
76
+ lineHeight: number;
77
+ color: string;
78
+ letterSpacing: string;
79
+ textDecoration: string;
80
+ textCase: string;
81
+ paragraphIndent: string;
82
+ };
72
83
  bodyLg: {
73
84
  fontFamily: string;
74
85
  fontSize: number;
@@ -1 +1 @@
1
- {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../../src/styles/tokens/typography.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoK5B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../../src/styles/tokens/typography.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+K5B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,47 +1,24 @@
1
+ import React from "react";
2
+ export type ButtonType = "primary" | "outline" | "ghost" | "destructive";
3
+ export type ButtonSize = "medium" | "large";
4
+ export type ButtonState = "default" | "hover" | "active" | "disabled";
1
5
  export interface ButtonProps {
2
- /**
3
- * The content to display inside the button
4
- */
5
- children: React.ReactNode;
6
- /**
7
- * The variant of the button
8
- */
9
- variant?: "primary" | "secondary" | "outline" | "ghost";
10
- /**
11
- * The size of the button
12
- */
13
- size?: "sm" | "md" | "lg";
14
- /**
15
- * Whether the button is disabled
16
- */
6
+ label: string;
7
+ type?: ButtonType;
8
+ size?: ButtonSize;
17
9
  disabled?: boolean;
18
- /**
19
- * Whether the button should take full width
20
- */
10
+ leftIcon?: string;
11
+ rightIcon?: string;
12
+ icon?: string;
21
13
  fullWidth?: boolean;
22
- /**
23
- * Loading state
24
- */
25
- loading?: boolean;
26
- /**
27
- * Custom style override
28
- */
29
- style?: import("react-native").ViewStyle;
30
- /**
31
- * Custom text style override
32
- */
33
- textStyle?: import("react-native").TextStyle;
34
- /**
35
- * Accessibility label
36
- */
14
+ style?: React.CSSProperties;
37
15
  accessibilityLabel?: string;
38
- /**
39
- * Test ID for testing
40
- */
41
16
  testID?: string;
42
- /**
43
- * Press handler
44
- */
45
- onPress?: () => void;
17
+ onClick?: React.MouseEventHandler<HTMLButtonElement>;
18
+ className?: string;
19
+ onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
20
+ onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
21
+ onMouseDown?: React.MouseEventHandler<HTMLButtonElement>;
22
+ onMouseUp?: React.MouseEventHandler<HTMLButtonElement>;
46
23
  }
47
24
  //# sourceMappingURL=Button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/types/Button.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IAExD;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,cAAc,EAAE,SAAS,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,cAAc,EAAE,SAAS,CAAC;IAE7C;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/types/Button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACzD,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACxD"}
@@ -1,64 +1,29 @@
1
- import { TextProps } from "react-native";
2
- /**
3
- * Typography variants
4
- */
5
- export type TypographyVariant = "display2xl" | "displayXl" | "headingXl" | "headingLg" | "headingMd" | "headingSm" | "headingXs" | "bodyLg" | "bodyMd" | "bodySm" | "bodyXs" | "labelLg" | "labelMd" | "labelSm";
6
- /**
7
- * Text alignment options
8
- */
1
+ import React from "react";
9
2
  export type TypographyAlign = "left" | "center" | "right";
10
- /**
11
- * Font weight options
12
- */
13
3
  export type TypographyWeight = "normal" | "medium" | "semibold" | "bold";
14
- /**
15
- * Typography component props
16
- */
17
- export interface TypographyProps extends Omit<TextProps, "children"> {
18
- /**
19
- * The content to display
20
- */
21
- children?: React.ReactNode;
22
- /**
23
- * The typography variant to use
24
- * @default 'bodyMd'
25
- */
26
- variant?: TypographyVariant;
27
- /**
28
- * Text alignment
29
- * @default 'left'
30
- */
4
+ export interface BaseTypographyProps {
5
+ element?: React.ElementType;
31
6
  align?: TypographyAlign;
32
- /**
33
- * Font weight
34
- */
35
7
  weight?: TypographyWeight;
36
- /**
37
- * Text color
38
- * If not provided, uses variant's default color from theme
39
- */
40
8
  color?: string;
41
- /**
42
- * Whether to truncate text with ellipsis if it overflows
43
- * @default false
44
- */
45
9
  truncate?: boolean;
46
- /**
47
- * Maximum number of lines before truncating
48
- * If not provided, text will not be truncated
49
- */
50
- numberOfLines?: number;
51
- /**
52
- * Additional custom styles for the text
53
- */
54
- style?: TextProps["style"];
55
- /**
56
- * Accessibility label for screen readers
57
- */
58
- accessibilityLabel?: string;
59
- /**
60
- * Test ID for testing
61
- */
10
+ lineClamp?: number;
11
+ children: React.ReactNode;
12
+ className?: string;
13
+ style?: React.CSSProperties;
14
+ onClick?: (event: React.MouseEvent<HTMLElement>) => void;
62
15
  testID?: string;
63
16
  }
17
+ export interface DisplayProps extends BaseTypographyProps {
18
+ size: "2xl" | "xl";
19
+ }
20
+ export interface HeadingProps extends BaseTypographyProps {
21
+ size: "xl" | "lg" | "md" | "sm" | "xs";
22
+ }
23
+ export interface BodyProps extends BaseTypographyProps {
24
+ size: "xl" | "lg" | "md" | "sm";
25
+ }
26
+ export interface UtilityProps extends BaseTypographyProps {
27
+ variant: "button" | "link" | "caption";
28
+ }
64
29
  //# sourceMappingURL=Typography.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.d.ts","sourceRoot":"","sources":["../../src/types/Typography.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAEzB,YAAY,GACZ,WAAW,GAEX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GAEX,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GAER,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAClE;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAE5B;;;OAGG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAE3B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"Typography.d.ts","sourceRoot":"","sources":["../../src/types/Typography.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAC5B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;CACpB;AACD,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,SAAU,SAAQ,mBAAmB;IACpD,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;CACxC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "onecart-ui",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Cross-platform React and React Native component library with white-label support",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -40,6 +40,7 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@rollup/plugin-commonjs": "^28.0.3",
43
+ "@rollup/plugin-json": "6.1.0",
43
44
  "@rollup/plugin-node-resolve": "^16.0.1",
44
45
  "@rollup/plugin-typescript": "^12.1.2",
45
46
  "@storybook/addon-docs": "^9.0.4",