@newtonedev/components 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +506 -0
- package/dist/Button/Button.d.ts +23 -0
- package/dist/Button/Button.d.ts.map +1 -0
- package/dist/Button/Button.styles.d.ts +39 -0
- package/dist/Button/Button.styles.d.ts.map +1 -0
- package/dist/Button/Button.types.d.ts +42 -0
- package/dist/Button/Button.types.d.ts.map +1 -0
- package/dist/Button/index.d.ts +3 -0
- package/dist/Button/index.d.ts.map +1 -0
- package/dist/Card/Card.d.ts +4 -0
- package/dist/Card/Card.d.ts.map +1 -0
- package/dist/Card/Card.styles.d.ts +12 -0
- package/dist/Card/Card.styles.d.ts.map +1 -0
- package/dist/Card/Card.types.d.ts +9 -0
- package/dist/Card/Card.types.d.ts.map +1 -0
- package/dist/Card/index.d.ts +3 -0
- package/dist/Card/index.d.ts.map +1 -0
- package/dist/HueSlider/HueSlider.d.ts +14 -0
- package/dist/HueSlider/HueSlider.d.ts.map +1 -0
- package/dist/HueSlider/HueSlider.styles.d.ts +28 -0
- package/dist/HueSlider/HueSlider.styles.d.ts.map +1 -0
- package/dist/HueSlider/HueSlider.types.d.ts +12 -0
- package/dist/HueSlider/HueSlider.types.d.ts.map +1 -0
- package/dist/HueSlider/index.d.ts +3 -0
- package/dist/HueSlider/index.d.ts.map +1 -0
- package/dist/Select/Select.d.ts +11 -0
- package/dist/Select/Select.d.ts.map +1 -0
- package/dist/Select/Select.styles.d.ts +23 -0
- package/dist/Select/Select.styles.d.ts.map +1 -0
- package/dist/Select/Select.types.d.ts +14 -0
- package/dist/Select/Select.types.d.ts.map +1 -0
- package/dist/Select/index.d.ts +3 -0
- package/dist/Select/index.d.ts.map +1 -0
- package/dist/Slider/Slider.d.ts +4 -0
- package/dist/Slider/Slider.d.ts.map +1 -0
- package/dist/Slider/Slider.styles.d.ts +27 -0
- package/dist/Slider/Slider.styles.d.ts.map +1 -0
- package/dist/Slider/Slider.types.d.ts +13 -0
- package/dist/Slider/Slider.types.d.ts.map +1 -0
- package/dist/Slider/index.d.ts +3 -0
- package/dist/Slider/index.d.ts.map +1 -0
- package/dist/TextInput/TextInput.d.ts +4 -0
- package/dist/TextInput/TextInput.d.ts.map +1 -0
- package/dist/TextInput/TextInput.styles.d.ts +23 -0
- package/dist/TextInput/TextInput.styles.d.ts.map +1 -0
- package/dist/TextInput/TextInput.types.d.ts +7 -0
- package/dist/TextInput/TextInput.types.d.ts.map +1 -0
- package/dist/TextInput/index.d.ts +3 -0
- package/dist/TextInput/index.d.ts.map +1 -0
- package/dist/Toggle/Toggle.d.ts +4 -0
- package/dist/Toggle/Toggle.d.ts.map +1 -0
- package/dist/Toggle/Toggle.styles.d.ts +30 -0
- package/dist/Toggle/Toggle.styles.d.ts.map +1 -0
- package/dist/Toggle/Toggle.types.d.ts +9 -0
- package/dist/Toggle/Toggle.types.d.ts.map +1 -0
- package/dist/Toggle/index.d.ts +3 -0
- package/dist/Toggle/index.d.ts.map +1 -0
- package/dist/index.cjs +736 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +719 -0
- package/dist/index.js.map +1 -0
- package/dist/theme/NewtoneProvider.d.ts +33 -0
- package/dist/theme/NewtoneProvider.d.ts.map +1 -0
- package/dist/theme/defaults.d.ts +7 -0
- package/dist/theme/defaults.d.ts.map +1 -0
- package/dist/theme/types.d.ts +56 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/tokens/computeTokens.d.ts +30 -0
- package/dist/tokens/computeTokens.d.ts.map +1 -0
- package/dist/tokens/types.d.ts +31 -0
- package/dist/tokens/types.d.ts.map +1 -0
- package/dist/tokens/useTokens.d.ts +26 -0
- package/dist/tokens/useTokens.d.ts.map +1 -0
- package/package.json +57 -0
- package/src/Button/Button.styles.ts +100 -0
- package/src/Button/Button.tsx +67 -0
- package/src/Button/Button.types.ts +49 -0
- package/src/Button/index.ts +2 -0
- package/src/Card/Card.styles.ts +16 -0
- package/src/Card/Card.tsx +25 -0
- package/src/Card/Card.types.ts +9 -0
- package/src/Card/index.ts +2 -0
- package/src/HueSlider/HueSlider.styles.ts +77 -0
- package/src/HueSlider/HueSlider.tsx +70 -0
- package/src/HueSlider/HueSlider.types.ts +12 -0
- package/src/HueSlider/index.ts +2 -0
- package/src/Select/Select.styles.ts +29 -0
- package/src/Select/Select.tsx +60 -0
- package/src/Select/Select.types.ts +15 -0
- package/src/Select/index.ts +2 -0
- package/src/Slider/Slider.styles.ts +45 -0
- package/src/Slider/Slider.tsx +57 -0
- package/src/Slider/Slider.types.ts +13 -0
- package/src/Slider/index.ts +2 -0
- package/src/TextInput/TextInput.styles.ts +29 -0
- package/src/TextInput/TextInput.tsx +32 -0
- package/src/TextInput/TextInput.types.ts +7 -0
- package/src/TextInput/index.ts +2 -0
- package/src/Toggle/Toggle.styles.ts +45 -0
- package/src/Toggle/Toggle.tsx +42 -0
- package/src/Toggle/Toggle.types.ts +9 -0
- package/src/Toggle/index.ts +2 -0
- package/src/index.ts +49 -0
- package/src/theme/NewtoneProvider.tsx +65 -0
- package/src/theme/defaults.ts +42 -0
- package/src/theme/types.ts +62 -0
- package/src/tokens/computeTokens.ts +217 -0
- package/src/tokens/types.ts +31 -0
- package/src/tokens/useTokens.ts +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme/defaults.ts","../src/theme/NewtoneProvider.tsx","../src/tokens/computeTokens.ts","../src/tokens/useTokens.ts","../src/Button/Button.styles.ts","../src/Button/Button.tsx","../src/Card/Card.styles.ts","../src/Card/Card.tsx","../src/TextInput/TextInput.styles.ts","../src/TextInput/TextInput.tsx","../src/Select/Select.styles.ts","../src/Select/Select.tsx","../src/Toggle/Toggle.styles.ts","../src/Toggle/Toggle.tsx","../src/Slider/Slider.styles.ts","../src/Slider/Slider.tsx","../src/HueSlider/HueSlider.styles.ts","../src/HueSlider/HueSlider.tsx"],"names":["DEFAULT_NEUTRAL_HUE","DEFAULT_NEUTRAL_SATURATION","DEFAULT_ACCENT_HUE","DEFAULT_ACCENT_SATURATION","DEFAULT_SUCCESS_HUE","DEFAULT_SUCCESS_SATURATION","DEFAULT_WARNING_HUE","DEFAULT_WARNING_SATURATION","DEFAULT_ERROR_HUE","DEFAULT_ERROR_SATURATION","createContext","useState","useMemo","React","useContext","getColor","getColorByContrast","srgbToHex","StyleSheet","Pressable","Text","View","RNTextInput"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { NewtoneThemeConfig } from './types';\nimport {\n DEFAULT_NEUTRAL_HUE,\n DEFAULT_NEUTRAL_SATURATION,\n DEFAULT_ACCENT_HUE,\n DEFAULT_ACCENT_SATURATION,\n DEFAULT_SUCCESS_HUE,\n DEFAULT_SUCCESS_SATURATION,\n DEFAULT_WARNING_HUE,\n DEFAULT_WARNING_SATURATION,\n DEFAULT_ERROR_HUE,\n DEFAULT_ERROR_SATURATION,\n} from 'newtone';\n\n/**\n * Default theme configuration matching playground defaults.\n * Palettes: [0] Neutral, [1] Accent, [2] Success, [3] Warning, [4] Error\n */\nexport const DEFAULT_THEME_CONFIG: NewtoneThemeConfig = {\n colorSystem: {\n dynamicRange: {\n lightest: 1,\n darkest: 1,\n },\n palettes: [\n { hue: DEFAULT_NEUTRAL_HUE, saturation: DEFAULT_NEUTRAL_SATURATION },\n { hue: DEFAULT_ACCENT_HUE, saturation: DEFAULT_ACCENT_SATURATION },\n { hue: DEFAULT_SUCCESS_HUE, saturation: DEFAULT_SUCCESS_SATURATION },\n { hue: DEFAULT_WARNING_HUE, saturation: DEFAULT_WARNING_SATURATION },\n { hue: DEFAULT_ERROR_HUE, saturation: DEFAULT_ERROR_SATURATION },\n ],\n },\n themes: {\n neutral: { paletteIndex: 0, lightModeNv: 0.95, darkModeNv: 0.1 },\n primary: { paletteIndex: 1, lightModeNv: 0.95, darkModeNv: 0.1 },\n secondary: { paletteIndex: 1, lightModeNv: 0.85, darkModeNv: 0.15 },\n strong: { paletteIndex: 0, lightModeNv: 0.1, darkModeNv: 0.95 },\n },\n elevation: {\n offsets: [-0.02, 0, 0.04], // [sunken, default, elevated]\n },\n};\n","import React, { createContext, useState, useMemo, useContext } from 'react';\nimport type { NewtoneThemeConfig, NewtoneThemeContext, ColorMode, ThemeName } from './types';\nimport { DEFAULT_THEME_CONFIG } from './defaults';\n\nconst ThemeContext = createContext<NewtoneThemeContext | null>(null);\n\nexport interface NewtoneProviderProps {\n readonly config?: NewtoneThemeConfig;\n readonly initialMode?: ColorMode;\n readonly initialTheme?: ThemeName;\n readonly children: React.ReactNode;\n}\n\n/**\n * NewtoneProvider - Provides theme context to all Newtone components\n *\n * Wrap your app with this provider to enable theme and mode switching.\n *\n * @example\n * ```tsx\n * <NewtoneProvider initialMode=\"light\" initialTheme=\"neutral\">\n * <App />\n * </NewtoneProvider>\n * ```\n */\nexport function NewtoneProvider({\n config = DEFAULT_THEME_CONFIG,\n initialMode = 'light',\n initialTheme = 'neutral',\n children,\n}: NewtoneProviderProps) {\n const [mode, setMode] = useState<ColorMode>(initialMode);\n const [theme, setTheme] = useState<ThemeName>(initialTheme);\n\n const value = useMemo(\n () => ({\n config,\n mode,\n theme,\n setMode,\n setTheme,\n }),\n [config, mode, theme]\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * useNewtoneTheme - Hook to access theme context\n *\n * Must be used within a NewtoneProvider.\n *\n * @example\n * ```tsx\n * const { mode, theme, setMode, setTheme } = useNewtoneTheme();\n * ```\n */\nexport function useNewtoneTheme(): NewtoneThemeContext {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useNewtoneTheme must be used within NewtoneProvider');\n }\n return context;\n}\n","import { getColor, getColorByContrast } from 'newtone';\nimport type { ColorSystemConfig, ColorMode, ThemeMapping, ElevationLevel } from '../theme/types';\nimport type { ResolvedTokens } from './types';\n\n/**\n * Compute design tokens for a specific mode/theme/elevation combination.\n *\n * This function calls the Newtone engine to generate all necessary color tokens\n * based on the current theme context. All colors are computed on-demand using\n * the pure functions from the engine.\n *\n * @param config - Complete color system configuration (dynamic range + palettes)\n * @param mode - Current color mode ('light' or 'dark')\n * @param themeMapping - Theme configuration (which palette and NV to use)\n * @param elevation - Elevation level (0=sunken, 1=default, 2=elevated)\n * @param elevationOffsets - NV offsets for each elevation level\n * @returns Resolved design tokens with all necessary colors\n *\n * @example\n * ```typescript\n * const tokens = computeTokens(\n * config.colorSystem,\n * 'light',\n * config.themes.neutral,\n * 1,\n * config.elevation.offsets\n * );\n * console.log(tokens.background.srgb); // { r: 0.95, g: 0.95, b: 0.95 }\n * ```\n */\nexport function computeTokens(\n config: ColorSystemConfig,\n mode: ColorMode,\n themeMapping: ThemeMapping,\n elevation: ElevationLevel,\n elevationOffsets: readonly [number, number, number]\n): ResolvedTokens {\n const { dynamicRange, palettes } = config;\n const palette = palettes[themeMapping.paletteIndex];\n\n if (!palette) {\n throw new Error(`Palette at index ${themeMapping.paletteIndex} not found`);\n }\n\n // Determine base NV for this mode + elevation\n const baseNv = mode === 'light' ? themeMapping.lightModeNv : themeMapping.darkModeNv;\n const elevationOffset = elevationOffsets[elevation];\n const backgroundNv = Math.max(0, Math.min(1, baseNv + elevationOffset));\n\n // Derive effective text mode from actual background lightness.\n // This handles inverted themes (e.g., strong: dark bg in light mode)\n // where the mode flag doesn't match the background's visual lightness.\n const effectiveTextMode: ColorMode = backgroundNv >= 0.5 ? 'light' : 'dark';\n\n // Compute background colors for current elevation\n const background = getColor(\n palette.hue,\n palette.saturation,\n dynamicRange,\n backgroundNv,\n palette.desaturation,\n palette.paletteHueGrading\n );\n\n // Compute elevated surface (always at elevation 2 offset)\n const elevatedNv = Math.max(0, Math.min(1, baseNv + elevationOffsets[2]));\n const backgroundElevated = getColor(\n palette.hue,\n palette.saturation,\n dynamicRange,\n elevatedNv,\n palette.desaturation,\n palette.paletteHueGrading\n );\n\n // Compute sunken surface (always at elevation 0 offset)\n const sunkenNv = Math.max(0, Math.min(1, baseNv + elevationOffsets[0]));\n const backgroundSunken = getColor(\n palette.hue,\n palette.saturation,\n dynamicRange,\n sunkenNv,\n palette.desaturation,\n palette.paletteHueGrading\n );\n\n // Compute text colors with WCAG contrast requirements\n // Primary text: WCAG AA (4.5:1 for body text)\n const textPrimary = getColorByContrast(\n palette.hue,\n palette.saturation,\n dynamicRange,\n 4.5,\n effectiveTextMode,\n palette.desaturation,\n palette.paletteHueGrading\n );\n\n // Secondary text: Lower contrast (3.0:1 for captions)\n const textSecondary = getColorByContrast(\n palette.hue,\n palette.saturation,\n dynamicRange,\n 3.0,\n effectiveTextMode,\n palette.desaturation,\n palette.paletteHueGrading\n );\n\n // Interactive colors: Use accent palette (index 1)\n const accentPalette = palettes[1];\n\n if (!accentPalette) {\n throw new Error('Accent palette (index 1) not found');\n }\n\n // Interactive base: WCAG AA contrast against current background\n const interactive = getColorByContrast(\n accentPalette.hue,\n accentPalette.saturation,\n dynamicRange,\n 4.5,\n effectiveTextMode,\n accentPalette.desaturation,\n accentPalette.paletteHueGrading\n );\n\n // Hover/active states: Shift NV slightly from interactive base\n // In light mode (light bg), go darker; in dark mode (dark bg), go lighter\n const interactiveNv = effectiveTextMode === 'light' ? 0.3 : 0.7;\n\n const interactiveHover = getColor(\n accentPalette.hue,\n accentPalette.saturation,\n dynamicRange,\n interactiveNv + (effectiveTextMode === 'light' ? -0.05 : 0.05),\n accentPalette.desaturation,\n accentPalette.paletteHueGrading\n );\n\n const interactiveActive = getColor(\n accentPalette.hue,\n accentPalette.saturation,\n dynamicRange,\n interactiveNv + (effectiveTextMode === 'light' ? -0.1 : 0.1),\n accentPalette.desaturation,\n accentPalette.paletteHueGrading\n );\n\n // Border: Subtle contrast from background\n const borderNv = effectiveTextMode === 'light' ? backgroundNv - 0.1 : backgroundNv + 0.1;\n const border = getColor(\n palette.hue,\n palette.saturation,\n dynamicRange,\n Math.max(0, Math.min(1, borderNv)),\n palette.desaturation,\n palette.paletteHueGrading\n );\n\n // Semantic status colors: success (palette 2), warning (palette 3), error (palette 4)\n // Each computed at WCAG AA contrast against the mode background, same as interactive\n const successPalette = palettes[2];\n const warningPalette = palettes[3];\n const errorPalette = palettes[4];\n\n const success = successPalette\n ? getColorByContrast(\n successPalette.hue,\n successPalette.saturation,\n dynamicRange,\n 4.5,\n effectiveTextMode,\n successPalette.desaturation,\n successPalette.paletteHueGrading\n )\n : interactive; // Fallback to interactive if palette missing\n\n const warning = warningPalette\n ? getColorByContrast(\n warningPalette.hue,\n warningPalette.saturation,\n dynamicRange,\n 4.5,\n effectiveTextMode,\n warningPalette.desaturation,\n warningPalette.paletteHueGrading\n )\n : interactive;\n\n const error = errorPalette\n ? getColorByContrast(\n errorPalette.hue,\n errorPalette.saturation,\n dynamicRange,\n 4.5,\n effectiveTextMode,\n errorPalette.desaturation,\n errorPalette.paletteHueGrading\n )\n : interactive;\n\n return {\n background,\n backgroundElevated,\n backgroundSunken,\n textPrimary,\n textSecondary,\n interactive,\n interactiveHover,\n interactiveActive,\n border,\n success,\n warning,\n error,\n };\n}\n","import { useMemo } from 'react';\nimport { useNewtoneTheme } from '../theme/NewtoneProvider';\nimport { computeTokens } from './computeTokens';\nimport type { ElevationLevel } from '../theme/types';\nimport type { ResolvedTokens } from './types';\n\n/**\n * Hook to compute design tokens for the current theme/mode/elevation.\n *\n * This hook automatically recomputes tokens when the theme configuration,\n * mode, theme name, or elevation changes. Results are memoized to avoid\n * unnecessary computation.\n *\n * @param elevation - Elevation level (0=sunken, 1=default, 2=elevated)\n * @returns Resolved design tokens with all necessary colors\n *\n * @example\n * ```tsx\n * function Button() {\n * const tokens = useTokens(1); // Default elevation\n * return (\n * <button style={{ backgroundColor: srgbToHex(tokens.interactive.srgb) }}>\n * Click me\n * </button>\n * );\n * }\n * ```\n */\nexport function useTokens(elevation: ElevationLevel = 1): ResolvedTokens {\n const { config, mode, theme } = useNewtoneTheme();\n\n return useMemo(() => {\n const themeMapping = config.themes[theme];\n return computeTokens(\n config.colorSystem,\n mode,\n themeMapping,\n elevation,\n config.elevation.offsets\n );\n }, [config, mode, theme, elevation]);\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport type { ResolvedTokens } from '../tokens/types';\nimport type { ButtonVariant, ButtonSize } from './Button.types';\n\n/**\n * Size configuration for buttons\n */\nconst SIZE_CONFIG = {\n sm: { paddingVertical: 6, paddingHorizontal: 12, fontSize: 12, borderRadius: 4 },\n md: { paddingVertical: 10, paddingHorizontal: 20, fontSize: 14, borderRadius: 6 },\n lg: { paddingVertical: 14, paddingHorizontal: 28, fontSize: 16, borderRadius: 8 },\n} as const;\n\n/**\n * Compute button styles based on tokens, variant, size, and state\n *\n * @param tokens - Resolved design tokens from useTokens\n * @param variant - Button variant (primary, secondary, ghost, outline)\n * @param size - Button size (sm, md, lg)\n * @param disabled - Whether button is disabled\n * @returns StyleSheet with button styles\n */\nexport function getButtonStyles(\n tokens: ResolvedTokens,\n variant: ButtonVariant,\n size: ButtonSize,\n disabled: boolean\n) {\n const sizeConfig = SIZE_CONFIG[size];\n\n // Base styles\n const base = {\n paddingVertical: sizeConfig.paddingVertical,\n paddingHorizontal: sizeConfig.paddingHorizontal,\n borderRadius: sizeConfig.borderRadius,\n alignItems: 'center' as const,\n justifyContent: 'center' as const,\n flexDirection: 'row' as const,\n };\n\n // Variant-specific colors\n let backgroundColor: string;\n let textColor: string;\n let borderColor: string | undefined;\n let borderWidth = 0;\n\n switch (variant) {\n case 'primary':\n backgroundColor = srgbToHex(tokens.interactive.srgb);\n textColor = srgbToHex(tokens.background.srgb); // Contrast inversion\n break;\n case 'secondary':\n backgroundColor = srgbToHex(tokens.backgroundElevated.srgb);\n textColor = srgbToHex(tokens.textPrimary.srgb);\n break;\n case 'outline':\n backgroundColor = 'transparent';\n textColor = srgbToHex(tokens.interactive.srgb);\n borderColor = srgbToHex(tokens.border.srgb);\n borderWidth = 1;\n break;\n case 'ghost':\n backgroundColor = 'transparent';\n textColor = srgbToHex(tokens.interactive.srgb);\n break;\n }\n\n return StyleSheet.create({\n base: {\n ...base,\n backgroundColor: disabled ? srgbToHex(tokens.backgroundSunken.srgb) : backgroundColor,\n borderWidth,\n ...(borderColor && { borderColor }),\n },\n pressed: {\n backgroundColor:\n variant === 'primary'\n ? srgbToHex(tokens.interactiveActive.srgb)\n : variant === 'secondary'\n ? srgbToHex(tokens.backgroundSunken.srgb)\n : 'transparent',\n opacity: variant === 'ghost' || variant === 'outline' ? 0.7 : 1,\n },\n disabled: {\n opacity: 0.4,\n },\n text: {\n fontSize: sizeConfig.fontSize,\n fontWeight: '600' as const,\n color: disabled ? srgbToHex(tokens.textSecondary.srgb) : textColor,\n },\n textPressed: {\n // Color changes handled by parent opacity\n },\n textDisabled: {\n // Color already set in text style via disabled check\n },\n });\n}\n","import React from 'react';\nimport { Pressable, Text } from 'react-native';\nimport type { ButtonProps } from './Button.types';\nimport { useTokens } from '../tokens/useTokens';\nimport { getButtonStyles } from './Button.styles';\n\n/**\n * Button component with support for multiple variants and sizes.\n *\n * Automatically adapts to the current theme and mode from NewtoneProvider.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\" onPress={() => console.log('Pressed')}>\n * Click me\n * </Button>\n * ```\n *\n * @example\n * ```tsx\n * <Button variant=\"outline\" size=\"lg\" disabled>\n * Disabled button\n * </Button>\n * ```\n */\nexport function Button({\n children,\n variant = 'primary',\n size = 'md',\n disabled = false,\n style,\n textStyle,\n ...pressableProps\n}: ButtonProps) {\n const tokens = useTokens(1); // Default elevation\n\n const styles = React.useMemo(\n () => getButtonStyles(tokens, variant, size, disabled),\n [tokens, variant, size, disabled]\n );\n\n return (\n <Pressable\n style={({ pressed }) => [\n styles.base,\n pressed && !disabled && styles.pressed,\n disabled && styles.disabled,\n ...(Array.isArray(style) ? style : [style]),\n ]}\n disabled={disabled}\n {...pressableProps}\n >\n {({ pressed }) => (\n <Text\n style={[\n styles.text,\n pressed && !disabled && styles.textPressed,\n disabled && styles.textDisabled,\n ...(Array.isArray(textStyle) ? textStyle : [textStyle]),\n ]}\n >\n {children}\n </Text>\n )}\n </Pressable>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport type { ResolvedTokens } from '../tokens/types';\n\nexport function getCardStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n backgroundColor: srgbToHex(tokens.background.srgb),\n borderWidth: 1,\n borderColor: srgbToHex(tokens.border.srgb),\n borderRadius: 8,\n padding: 16,\n opacity: disabled ? 0.5 : 1,\n },\n });\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport type { CardProps } from './Card.types';\nimport { useTokens } from '../tokens/useTokens';\nimport { getCardStyles } from './Card.styles';\n\nexport function Card({\n children,\n elevation = 1,\n style,\n disabled = false,\n}: CardProps) {\n const tokens = useTokens(elevation);\n\n const styles = React.useMemo(\n () => getCardStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {children}\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport type { ResolvedTokens } from '../tokens/types';\n\nexport function getTextInputStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: 4,\n },\n label: {\n fontSize: 12,\n fontWeight: '600',\n color: srgbToHex(tokens.textSecondary.srgb),\n },\n input: {\n backgroundColor: srgbToHex(tokens.backgroundSunken.srgb),\n borderWidth: 1,\n borderColor: srgbToHex(tokens.border.srgb),\n borderRadius: 6,\n paddingVertical: 8,\n paddingHorizontal: 12,\n fontSize: 14,\n color: disabled\n ? srgbToHex(tokens.textSecondary.srgb)\n : srgbToHex(tokens.textPrimary.srgb),\n opacity: disabled ? 0.5 : 1,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, TextInput as RNTextInput } from 'react-native';\nimport type { TextInputProps } from './TextInput.types';\nimport { useTokens } from '../tokens/useTokens';\nimport { getTextInputStyles } from './TextInput.styles';\nimport { srgbToHex } from 'newtone';\n\nexport function TextInput({\n label,\n disabled = false,\n style,\n ...textInputProps\n}: TextInputProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getTextInputStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <RNTextInput\n style={styles.input}\n editable={!disabled}\n placeholderTextColor={srgbToHex(tokens.textSecondary.srgb)}\n {...textInputProps}\n />\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport type { ResolvedTokens } from '../tokens/types';\n\nexport function getSelectStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: 4,\n },\n label: {\n fontSize: 12,\n fontWeight: '600',\n color: srgbToHex(tokens.textSecondary.srgb),\n },\n select: {\n backgroundColor: srgbToHex(tokens.backgroundSunken.srgb),\n borderWidth: 1,\n borderColor: srgbToHex(tokens.border.srgb),\n borderRadius: 6,\n paddingVertical: 8,\n paddingHorizontal: 12,\n fontSize: 14,\n color: disabled\n ? srgbToHex(tokens.textSecondary.srgb)\n : srgbToHex(tokens.textPrimary.srgb),\n opacity: disabled ? 0.5 : 1,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport type { SelectProps } from './Select.types';\nimport { useTokens } from '../tokens/useTokens';\nimport { getSelectStyles } from './Select.styles';\n\n/**\n * Select dropdown component.\n *\n * Renders a native HTML <select> element styled with design tokens.\n * On web (via react-native-web), View renders as a div which can contain\n * standard HTML elements.\n */\nexport function Select({\n options,\n value,\n onValueChange,\n label,\n disabled = false,\n style,\n}: SelectProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getSelectStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n onValueChange(e.target.value);\n },\n [onValueChange]\n );\n\n // Flatten StyleSheet styles into inline style for the native <select>\n const selectStyle = StyleSheet.flatten(styles.select);\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <select\n value={value}\n onChange={handleChange}\n disabled={disabled}\n style={{\n ...selectStyle,\n cursor: disabled ? 'default' : 'pointer',\n appearance: 'auto',\n } as React.CSSProperties}\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport type { ResolvedTokens } from '../tokens/types';\n\nconst TRACK_WIDTH = 40;\nconst TRACK_HEIGHT = 22;\nconst THUMB_SIZE = 18;\nconst THUMB_OFFSET = 2;\n\nexport function getToggleStyles(\n tokens: ResolvedTokens,\n value: boolean,\n disabled: boolean\n) {\n return StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n opacity: disabled ? 0.5 : 1,\n },\n label: {\n fontSize: 12,\n fontWeight: '600',\n color: srgbToHex(tokens.textSecondary.srgb),\n },\n track: {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n backgroundColor: value\n ? srgbToHex(tokens.interactive.srgb)\n : srgbToHex(tokens.border.srgb),\n justifyContent: 'center',\n paddingHorizontal: THUMB_OFFSET,\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: srgbToHex(tokens.background.srgb),\n alignSelf: value ? 'flex-end' : 'flex-start',\n },\n });\n}\n","import React from 'react';\nimport { View, Text, Pressable } from 'react-native';\nimport type { ToggleProps } from './Toggle.types';\nimport { useTokens } from '../tokens/useTokens';\nimport { getToggleStyles } from './Toggle.styles';\n\nexport function Toggle({\n value,\n onValueChange,\n label,\n disabled = false,\n style,\n}: ToggleProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getToggleStyles(tokens, value, disabled),\n [tokens, value, disabled]\n );\n\n const handlePress = React.useCallback(() => {\n if (!disabled) {\n onValueChange(!value);\n }\n }, [disabled, value, onValueChange]);\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <Pressable\n onPress={handlePress}\n disabled={disabled}\n accessibilityRole=\"switch\"\n accessibilityState={{ checked: value, disabled }}\n >\n <View style={styles.track}>\n <View style={styles.thumb} />\n </View>\n </Pressable>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport type { ResolvedTokens } from '../tokens/types';\n\nexport function getSliderStyles(tokens: ResolvedTokens) {\n return StyleSheet.create({\n container: {\n gap: 4,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontSize: 12,\n fontWeight: '600',\n color: srgbToHex(tokens.textSecondary.srgb),\n },\n value: {\n fontSize: 12,\n fontWeight: '500',\n color: srgbToHex(tokens.textPrimary.srgb),\n },\n });\n}\n\n/**\n * Generate CSS for the range input styling.\n * Returns inline CSS properties for the native <input type=\"range\">.\n */\nexport function getSliderInputStyle(\n tokens: ResolvedTokens,\n disabled: boolean\n): React.CSSProperties {\n return {\n width: '100%',\n height: 6,\n borderRadius: 3,\n appearance: 'auto' as const,\n cursor: disabled ? 'default' : 'pointer',\n opacity: disabled ? 0.5 : 1,\n accentColor: srgbToHex(tokens.interactive.srgb),\n };\n}\n","import React from 'react';\nimport { View, Text } from 'react-native';\nimport type { SliderProps } from './Slider.types';\nimport { useTokens } from '../tokens/useTokens';\nimport { getSliderStyles, getSliderInputStyle } from './Slider.styles';\n\nexport function Slider({\n value,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n label,\n showValue = false,\n disabled = false,\n style,\n}: SliderProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getSliderStyles(tokens),\n [tokens]\n );\n\n const inputStyle = React.useMemo(\n () => getSliderInputStyle(tokens, disabled),\n [tokens, disabled]\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onValueChange(Number(e.target.value));\n },\n [onValueChange]\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {(label || showValue) && (\n <View style={styles.labelRow}>\n {label && <Text style={styles.label}>{label}</Text>}\n {showValue && <Text style={styles.value}>{value}</Text>}\n </View>\n )}\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n style={inputStyle}\n />\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport type { ResolvedTokens } from '../tokens/types';\n\n/** Rainbow gradient for hue slider track */\nconst HUE_GRADIENT =\n 'linear-gradient(to right, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000)';\n\n/** Convert an HSL hue (S=100%, L=50%) to a hex string for gradient stops. */\nfunction hueToHex(hue: number): string {\n const h = ((hue % 360) + 360) % 360;\n const x = 1 - Math.abs((h / 60) % 2 - 1);\n let r: number, g: number, b: number;\n if (h < 60) { r = 1; g = x; b = 0; }\n else if (h < 120) { r = x; g = 1; b = 0; }\n else if (h < 180) { r = 0; g = 1; b = x; }\n else if (h < 240) { r = 0; g = x; b = 1; }\n else if (h < 300) { r = x; g = 0; b = 1; }\n else { r = 1; g = 0; b = x; }\n const toHex = (v: number) => Math.round(v * 255).toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nfunction buildHueGradient(min: number, max: number): string {\n if (min === 0 && max === 359) return HUE_GRADIENT;\n const steps = 7;\n const stops: string[] = [];\n for (let i = 0; i <= steps; i++) {\n const hue = min + (max - min) * (i / steps);\n stops.push(hueToHex(hue));\n }\n return `linear-gradient(to right, ${stops.join(', ')})`;\n}\n\nexport function getHueSliderStyles(tokens: ResolvedTokens) {\n return StyleSheet.create({\n container: {\n gap: 4,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontSize: 12,\n fontWeight: '600',\n color: srgbToHex(tokens.textSecondary.srgb),\n },\n value: {\n fontSize: 12,\n fontWeight: '500',\n color: srgbToHex(tokens.textPrimary.srgb),\n },\n sliderTrack: {\n height: 22,\n borderRadius: 11,\n overflow: 'hidden',\n },\n });\n}\n\nexport function getHueSliderInputStyle(\n disabled: boolean,\n min: number = 0,\n max: number = 359,\n): React.CSSProperties {\n return {\n width: '100%',\n height: 22,\n borderRadius: 11,\n cursor: disabled ? 'default' : 'pointer',\n opacity: disabled ? 0.5 : 1,\n background: buildHueGradient(min, max),\n appearance: 'auto' as const,\n };\n}\n","import React from 'react';\nimport { View, Text } from 'react-native';\nimport type { HueSliderProps } from './HueSlider.types';\nimport { useTokens } from '../tokens/useTokens';\nimport { getHueSliderStyles, getHueSliderInputStyle } from './HueSlider.styles';\n\n/**\n * Hue slider with rainbow gradient track.\n *\n * Value range: 0-359 (traditional color wheel hue).\n * 0=red, 60=yellow, 120=green, 180=cyan, 240=blue, 300=magenta.\n *\n * Optional min/max constrain the selectable range.\n * For wrapping ranges (e.g. red: min=345 max=375), max may exceed 359;\n * the returned value is always normalized to [0, 359].\n */\nexport function HueSlider({\n value,\n onValueChange,\n min = 0,\n max = 359,\n label,\n showValue = false,\n disabled = false,\n style,\n}: HueSliderProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getHueSliderStyles(tokens),\n [tokens]\n );\n\n const inputStyle = React.useMemo(\n () => getHueSliderInputStyle(disabled, min, max),\n [disabled, min, max]\n );\n\n // For wrapping ranges (max > 359), convert stored value to slider range.\n const sliderValue = (max > 359 && value < min) ? value + 360 : value;\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = Number(e.target.value);\n onValueChange(((raw % 360) + 360) % 360);\n },\n [onValueChange]\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {(label || showValue) && (\n <View style={styles.labelRow}>\n {label && <Text style={styles.label}>{label}</Text>}\n {showValue && <Text style={styles.value}>{value}°</Text>}\n </View>\n )}\n <input\n type=\"range\"\n min={min}\n max={max}\n step={1}\n value={sliderValue}\n onChange={handleChange}\n disabled={disabled}\n style={inputStyle}\n />\n </View>\n );\n}\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { NewtoneProvider, useNewtoneTheme } from './theme/NewtoneProvider';
|
|
2
|
+
export type { ColorMode, ThemeName, ElevationLevel, ThemeMapping, ColorSystemConfig, NewtoneThemeConfig, NewtoneThemeContext, } from './theme/types';
|
|
3
|
+
export { DEFAULT_THEME_CONFIG } from './theme/defaults';
|
|
4
|
+
export { useTokens } from './tokens/useTokens';
|
|
5
|
+
export { computeTokens } from './tokens/computeTokens';
|
|
6
|
+
export type { ResolvedTokens } from './tokens/types';
|
|
7
|
+
export { Button } from './Button/Button';
|
|
8
|
+
export type { ButtonProps, ButtonVariant, ButtonSize } from './Button/Button.types';
|
|
9
|
+
export { Card } from './Card/Card';
|
|
10
|
+
export type { CardProps } from './Card/Card.types';
|
|
11
|
+
export { TextInput } from './TextInput/TextInput';
|
|
12
|
+
export type { TextInputProps } from './TextInput/TextInput.types';
|
|
13
|
+
export { Select } from './Select/Select';
|
|
14
|
+
export type { SelectProps, SelectOption } from './Select/Select.types';
|
|
15
|
+
export { Toggle } from './Toggle/Toggle';
|
|
16
|
+
export type { ToggleProps } from './Toggle/Toggle.types';
|
|
17
|
+
export { Slider } from './Slider/Slider';
|
|
18
|
+
export type { SliderProps } from './Slider/Slider.types';
|
|
19
|
+
export { HueSlider } from './HueSlider/HueSlider';
|
|
20
|
+
export type { HueSliderProps } from './HueSlider/HueSlider.types';
|
|
21
|
+
export type { DynamicRange, PaletteConfig, ColorResult, Srgb, Oklch, HexColor, } from 'newtone';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEpF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,IAAI,EACJ,KAAK,EACL,QAAQ,GACT,MAAM,SAAS,CAAC"}
|