Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

phone-mask-uz

ergashev200016MIT1.1.3TypeScript support: included

A flexible React component for formatting and validating Uzbekistan phone numbers

phone, mask, input, react, uzbekistan, phone-number, validation, formatting, uz, antd, material-ui, chakra-ui

readme

📱 Phone Mask UZ

NPM Version License Downloads Size

React Phone Number Input Component for Uzbekistan
Seamlessly integrates with Ant Design, Material-UI, Chakra UI, and other UI libraries


✨ Features

  • 🎯 Automatic formatting for Uzbekistan phone numbers
  • ✅ Built-in validation
  • 🔄 Works with all UI libraries
  • 🎨 Fully customizable
  • 📦 Lightweight (< 5KB)
  • 💪 Written in TypeScript
  • ⚡ Easy to use

🚀 Installation

npm install phone-mask-uz
<summary>Install with other package managers</summary>
# Yarn
yarn add phone-mask-uz

# pnpm
pnpm add phone-mask-uz

💻 Usage

1️⃣ Basic Example

import PhoneNumber from 'phone-mask-uz';

function App() {
  const [phone, setPhone] = useState('');

  return (
    <PhoneNumber
      value={phone}
      onChange={(value, isValid) => setPhone(value)}
      placeholder="+998 __ ___ __ __"
    />
  );
}

2️⃣ With Ant Design

import PhoneNumber from 'phone-mask-uz';
import { Form, Input } from 'antd';

function App() {
  const [form] = Form.useForm();

  return (
    <Form form={form}>
      <Form.Item name="phone">
        <PhoneNumber
          inputComponent={Input}
          inputProps={{ size: 'large' }}
        />
      </Form.Item>
    </Form>
  );
}
<summary>Usage with Material-UI and Chakra UI</summary>

Material-UI

import PhoneNumber from 'phone-mask-uz';
import { TextField } from '@mui/material';

function App() {
  return (
    <PhoneNumber
      inputComponent={TextField}
      inputProps={{ variant: 'outlined' }}
    />
  );
}

Chakra UI

import PhoneNumber from 'phone-mask-uz';
import { Input } from '@chakra-ui/react';

function App() {
  return (
    <PhoneNumber
      inputComponent={Input}
    />
  );
}

🎛 Props

Essential Props

Prop Type Default Description
value string '' Input value
onChange (value: string, isValid: boolean) => void - Callback when value changes
placeholder string '+998 __ ___ __ __' Input placeholder text
<summary>Additional Props</summary>
Prop Type Default Description
error string | boolean - Error message or state
showError boolean true Show error state
inputComponent React.ComponentType - Custom input component (Antd Input, MUI TextField)
inputProps object {} Props for input component
wrapperComponent React.ComponentType - Wrapper component
wrapperProps object {} Props for wrapper component
disabled boolean false Disable input
className string '' CSS class

🛠 Utility Functions

import { normalizePhoneNumber, isValidPhoneNumber } from 'phone-mask-uz';

// Format phone number
normalizePhoneNumber('998901234567'); // '+998 90 123 45 67'

// Validate phone number
isValidPhoneNumber('+998 90 123 45 67'); // true

✅ Validation

  • Must start with +998
  • Must be exactly 12 digits
  • Validation state returned through onChange callback

🎨 Formatting

Number format: +998 XX XXX XX XX

Example:

  • Input: 998901234567
  • Result: +998 90 123 45 67

🌐 Browser Support

  • Google Chrome
  • Mozilla Firefox
  • Safari
  • Microsoft Edge

🤝 Contributing

Contributions are welcome! Feel free to submit a Pull Request.

📄 License

MIT