normalize-languages 0.3.2

Tree-sitter language support and dynamic grammar loading
Documentation
import React, { useState, useEffect } from 'react';
import { View, Text } from 'react-native';
import type { FC } from 'react';

interface CounterProps {
    initialCount: number;
    step?: number;
    label: string;
}

interface ButtonProps {
    onClick: () => void;
    children: React.ReactNode;
}

type Theme = 'light' | 'dark';

const Button: FC<ButtonProps> = ({ onClick, children }) => (
    <button onClick={onClick}>{children}</button>
);

const Counter: FC<CounterProps> = ({ initialCount, step = 1, label }) => {
    const [count, setCount] = useState(initialCount);
    const [theme, setTheme] = useState<Theme>('light');

    useEffect(() => {
        document.title = `${label}: ${count}`;
    }, [count, label]);

    const increment = () => setCount(c => c + step);
    const decrement = () => setCount(c => c - step);
    const reset = () => setCount(initialCount);

    return (
        <div className={`counter ${theme}`}>
            <h2>{label}</h2>
            <p>Count: {count}</p>
            <Button onClick={increment}>+</Button>
            <Button onClick={decrement}>-</Button>
            <Button onClick={reset}>Reset</Button>
        </div>
    );
};

// Classify a number as negative, zero, or positive
function classify(n: number): string {
    if (n < 0) {
        return 'negative';
    } else if (n === 0) {
        return 'zero';
    } else {
        return 'positive';
    }
}

export default Counter;
export { classify, Button };