{"version":3,"sources":["../src/text/index.native.tsx"],"names":["forwardRef","Text","useTheme","jsx","RNText"],"mappings":";;;;;;;;AAcA,IAAM,OAAA,GAAkE;AAAA,EACtE,EAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACjC,EAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACjC,EAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACjC,EAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACjC,EAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACjC,KAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACjC,KAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA;AAChC,CAAA;AAEA,IAAM,SAAA,GAAyD;AAAA,EAC7D,OAAA,EAAS,KAAA;AAAA,EACT,MAAA,EAAQ,KAAA;AAAA,EACR,QAAA,EAAU,KAAA;AAAA,EACV,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,QAAA,GAAsD;AAAA,EAC1D,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK;AACP,CAAA;AAWA,SAAS,YAAA,CACP,OACA,WAAA,EACQ;AACR,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,WAAA,CAAY,IAAA;AAC/B,EAAA,IAAK,WAAA,CAAuC,KAAe,CAAA,IAAK,IAAA,EAAM;AACpE,IAAA,OAAQ,YAAuC,KAAe,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,OAAOA,gBAAA,CAA8B,SAASC,KAAAA,CACzD,EAAE,OAAO,IAAA,EAAM,MAAA,GAAS,SAAA,EAAW,KAAA,EAAO,OAAO,QAAA,EAAU,KAAA,EAAO,GAAG,IAAA,IACrE,GAAA,EACA;AACA,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIC,eAAA,EAAS;AAC5B,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAI,CAAA;AACzB,EAAA,MAAM,QAAA,GAAsB;AAAA,IAC1B,UAAU,IAAA,CAAK,IAAA;AAAA,IACf,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,UAAA,EAAY,UAAU,MAAM,CAAA;AAAA,IAC5B,KAAA,EAAO,YAAA,CAAa,KAAA,EAAO,MAAM,CAAA;AAAA,IACjC,GAAI,KAAA,GAAQ,EAAE,WAAW,QAAA,CAAS,KAAK,GAAE,GAAI,IAAA;AAAA,IAC7C,GAAG;AAAA,GACL;AACA,EAAA,uBACEC,cAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,aAAA,EAAe,QAAA,GAAW,CAAA,GAAI,IAAA,CAAK,aAAA;AAAA,MACnC,KAAA,EAAO,QAAA;AAAA,MACN,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC","file":"text.native.cjs","sourcesContent":["/**\n * Text (native). Same prop shape, RN Text under the hood.\n */\nimport { forwardRef, type ForwardedRef } from \"react\";\nimport { Text as RNText, type TextStyle, type TextProps as RNTextProps } from \"react-native\";\nimport { useTheme } from \"@plyxui/styles\";\nimport type { OmniColorTokens } from \"@plyxui/core\";\n\ntype ThemeColorKey = keyof OmniColorTokens;\n\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\nexport type TextWeight = \"regular\" | \"medium\" | \"semibold\" | \"bold\";\nexport type TextAlign = \"start\" | \"center\" | \"end\";\n\nconst sizeMap: Record<TextSize, { size: number; lineHeight: number }> = {\n  xs:   { size: 11, lineHeight: 16 },\n  sm:   { size: 13, lineHeight: 18 },\n  md:   { size: 15, lineHeight: 22 },\n  lg:   { size: 18, lineHeight: 26 },\n  xl:   { size: 22, lineHeight: 30 },\n  \"2xl\":{ size: 28, lineHeight: 36 },\n  \"3xl\":{ size: 36, lineHeight: 44 },\n};\n\nconst weightMap: Record<TextWeight, TextStyle[\"fontWeight\"]> = {\n  regular: \"400\",\n  medium: \"500\",\n  semibold: \"600\",\n  bold: \"700\",\n};\n\nconst alignMap: Record<TextAlign, TextStyle[\"textAlign\"]> = {\n  start: \"left\",\n  center: \"center\",\n  end: \"right\",\n};\n\nexport interface TextProps extends Omit<RNTextProps, \"style\"> {\n  size?: TextSize;\n  weight?: TextWeight;\n  color?: ThemeColorKey | (string & {});\n  align?: TextAlign;\n  truncate?: boolean;\n  style?: TextStyle;\n}\n\nfunction resolveColor(\n  color: TextProps[\"color\"],\n  themeColors: Record<keyof OmniColorTokens, string>,\n): string {\n  if (!color) return themeColors.text;\n  if ((themeColors as Record<string, string>)[color as string] != null) {\n    return (themeColors as Record<string, string>)[color as string]!;\n  }\n  return color as string;\n}\n\nexport const Text = forwardRef<RNText, TextProps>(function Text(\n  { size = \"md\", weight = \"regular\", color, align, truncate, style, ...rest },\n  ref,\n) {\n  const { colors } = useTheme();\n  const dims = sizeMap[size];\n  const computed: TextStyle = {\n    fontSize: dims.size,\n    lineHeight: dims.lineHeight,\n    fontWeight: weightMap[weight],\n    color: resolveColor(color, colors),\n    ...(align ? { textAlign: alignMap[align] } : null),\n    ...style,\n  };\n  return (\n    <RNText\n      ref={ref}\n      numberOfLines={truncate ? 1 : rest.numberOfLines}\n      style={computed}\n      {...rest}\n    />\n  );\n});\n"]}