{"version":3,"sources":["../src/segmented/index.native.tsx"],"names":["useTheme","jsx","View","radius","Pressable","spacing","Text"],"mappings":";;;;;;;;AA0BA,IAAM,SAAA,GAA2C,EAAE,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAG;AAE3D,SAAS,SAAA,CAAqC;AAAA,EACnD,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIA,eAAA,EAAS;AAC5B,EAAA,MAAM,CAAA,GAAI,UAAU,IAAI,CAAA;AAExB,EAAA,uBACEC,cAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,aAAA,EAAe,KAAA;AAAA,QACf,SAAA,EAAW,YAAY,SAAA,GAAY,YAAA;AAAA,QACnC,MAAA,EAAQ,CAAA;AAAA,QACR,OAAA,EAAS,CAAA;AAAA,QACT,iBAAiB,MAAA,CAAO,aAAA;AAAA,QACxB,cAAcC,WAAA,CAAO,EAAA;AAAA,QACrB,GAAG;AAAA,OACL;AAAA,MAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM;AAClB,QAAA,MAAM,MAAA,GAAS,EAAE,KAAA,KAAU,KAAA;AAC3B,QAAA,uBACEF,cAAA;AAAA,UAACG,qBAAA;AAAA,UAAA;AAAA,YAEC,iBAAA,EAAkB,KAAA;AAAA,YAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAO;AAAA,YACvC,UAAU,CAAA,CAAE,QAAA;AAAA,YACZ,SAAS,MAAM,CAAC,EAAE,QAAA,IAAY,QAAA,CAAS,EAAE,KAAK,CAAA;AAAA,YAC9C,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,YAAY,CAAA,GAAI,MAAA;AAAA,cACtB,cAAA,EAAgB,QAAA;AAAA,cAChB,UAAA,EAAY,QAAA;AAAA,cACZ,iBAAA,EAAmBC,aAAQ,CAAC,CAAA;AAAA,cAC5B,cAAcF,WAAA,CAAO,EAAA;AAAA,cACrB,eAAA,EAAiB,MAAA,GAAS,MAAA,CAAO,WAAA,GAAc,aAAA;AAAA,cAC/C,OAAA,EAAS,CAAA,CAAE,QAAA,GAAW,GAAA,GAAM;AAAA,aAC9B;AAAA,YAEA,QAAA,kBAAAF,cAAA;AAAA,cAACK,gBAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,IAAA,KAAS,IAAA,GAAO,IAAA,GAAO,IAAA;AAAA,kBACjC,UAAA,EAAY,KAAA;AAAA,kBACZ,KAAA,EAAO,MAAA,GAAS,MAAA,CAAO,IAAA,GAAO,MAAA,CAAO;AAAA,iBACvC;AAAA,gBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA;AACL,WAAA;AAAA,UAvBK,CAAA,CAAE;AAAA,SAwBT;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ","file":"segmented.native.cjs","sourcesContent":["/**\n * Segmented (native). Row of pressable segments; the active one gets a\n * raised surface. No sliding layer (RN layout math) — the active\n * background is enough and reads cleanly.\n */\nimport { Pressable, Text, View, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"@plyxui/styles\";\nimport { radius, spacing } from \"@plyxui/core\";\n\nexport type SegmentedSize = \"sm\" | \"md\";\n\nexport interface SegmentedOption<T extends string = string> {\n  label: string;\n  value: T;\n  disabled?: boolean;\n}\n\nexport interface SegmentedProps<T extends string = string> {\n  options: SegmentedOption<T>[];\n  value: T;\n  onChange: (value: T) => void;\n  size?: SegmentedSize;\n  fullWidth?: boolean;\n  style?: ViewStyle;\n}\n\nconst heightMap: Record<SegmentedSize, number> = { sm: 30, md: 36 };\n\nexport function Segmented<T extends string = string>({\n  options,\n  value,\n  onChange,\n  size = \"md\",\n  fullWidth,\n  style,\n}: SegmentedProps<T>) {\n  const { colors } = useTheme();\n  const h = heightMap[size];\n\n  return (\n    <View\n      style={{\n        flexDirection: \"row\",\n        alignSelf: fullWidth ? \"stretch\" : \"flex-start\",\n        height: h,\n        padding: 3,\n        backgroundColor: colors.containerFill,\n        borderRadius: radius.md,\n        ...style,\n      }}\n    >\n      {options.map((o) => {\n        const active = o.value === value;\n        return (\n          <Pressable\n            key={o.value}\n            accessibilityRole=\"tab\"\n            accessibilityState={{ selected: active }}\n            disabled={o.disabled}\n            onPress={() => !o.disabled && onChange(o.value)}\n            style={{\n              flex: fullWidth ? 1 : undefined,\n              justifyContent: \"center\",\n              alignItems: \"center\",\n              paddingHorizontal: spacing[3],\n              borderRadius: radius.sm,\n              backgroundColor: active ? colors.surfaceFill : \"transparent\",\n              opacity: o.disabled ? 0.5 : 1,\n            }}\n          >\n            <Text\n              style={{\n                fontSize: size === \"sm\" ? 12.5 : 13.5,\n                fontWeight: \"600\",\n                color: active ? colors.text : colors.textMuted,\n              }}\n            >\n              {o.label}\n            </Text>\n          </Pressable>\n        );\n      })}\n    </View>\n  );\n}\n"]}