UNPKG

ts-turkey-map

Version:

Customizable Turkey map with TypeScript and React 19 support

157 lines (120 loc) 3.18 kB
# ts-turkey-map Customizable Turkey map with TypeScript and React 19 support [![npm](https://img.shields.io/npm/v/ts-turkey-map.svg?style=flat-square)](https://www.npmjs.com/package/ts-turkey-map) [![license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/corevider/ts-turkey-map/blob/main/license) ## Installation Install with NPM ```sh npm install ts-turkey-map ``` Or with Yarn ```sh yarn add ts-turkey-map ``` ## Usage ### JavaScript/JSX ```jsx import TurkeyMap from 'ts-turkey-map' export default () => { return ( <TurkeyMap /> ) } ``` ### TypeScript/TSX ```tsx import TurkeyMap from 'ts-turkey-map' import type { TurkeyMapProps } from 'ts-turkey-map' const MyComponent: React.FC = () => { const handleCityClick = (data: { city: string; plate: string }) => { console.log('Clicked city:', data.city, 'Plate:', data.plate) } return ( <TurkeyMap onClick={handleCityClick} showTooltip={true} /> ) } export default MyComponent ``` ### Next.js Usage For Next.js projects, use the SSR-compatible wrapper: ```tsx import dynamic from 'next/dynamic' import type { TurkeyMapProps } from 'ts-turkey-map' // Using dynamic import to avoid SSR issues const TurkeyMap = dynamic(() => import('ts-turkey-map'), { ssr: false, loading: () => <div>Harita yükleniyor...</div> }) export default function MyPage() { const colorData = { "01": "#ff0000", // Adana - red "06": "#00ff00", // Ankara - green } return ( <div> <h1>Turkey Map</h1> <TurkeyMap colorData={colorData} showTooltip={true} onClick={(data) => console.log(data)} /> </div> ) } ``` ## Props ```tsx <TurkeyMap showTooltip={true} colorData={{}} tooltipData={{}} onClick={(data) => console.log(data)} /> ``` ### TypeScript Interface ```typescript interface TurkeyMapProps { colorData?: ColorData; // Record<string, string> showTooltip?: boolean; // default: true tooltipData?: TooltipData; // Record<string, string | number> onClick?: (data: { city: string; plate: string }) => void; } interface ColorData { [plate: string]: string; // plate number to color mapping } interface TooltipData { [plate: string]: string | number; // plate number to tooltip content } ``` ### Prop Details - **showTooltip**: `boolean` (default: `true`) - Shows/hides city tooltips on hover - **colorData**: `ColorData` (default: `{}`) - Maps plate numbers to colors - **tooltipData**: `TooltipData` (default: `{}`) - Maps plate numbers to tooltip content - **onClick**: `function` (optional) - Callback when a city is clicked ```typescript // colorData prop // plate: city color colorData={{ '34': '#071E58', '06': '#253494', '35': '#253494', '16': '#253494', '07': '#225EA8' }} // tooltipData prop // plate: city tooltip tooltipData={{ '34': '15.655.924', '06': '5.803.482', '35': '4.479.525', '16': '3.214.571', '07': '2.696.249' }} ``` ## Based on [react-turkey-map](https://github.com/ozgrozer/react-turkey-map) ## License [MIT](https://github.com/corevider/ts-turkey-map/blob/main/license)