Code for deployement

This commit is contained in:
Naval 2025-03-04 11:44:16 +05:30
parent 7c923cfb60
commit 7ab8dff78f
8 changed files with 9567 additions and 35 deletions

View file

@ -22,6 +22,7 @@
"@radix-ui/react-dialog": "^1.1.2",
"@radix-ui/react-dropdown-menu": "^2.1.1",
"@radix-ui/react-hover-card": "^1.1.1",
"@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-label": "^2.1.0",
"@radix-ui/react-menubar": "^1.1.1",
"@radix-ui/react-navigation-menu": "^1.2.0",
@ -47,8 +48,10 @@
"date-fns": "^4.1.0",
"embla-carousel-react": "^8.3.0",
"input-otp": "^1.2.4",
"libphonenumber-js": "^1.12.4",
"lucide-react": "^0.462.0",
"next-themes": "^0.3.0",
"radix-ui": "^1.1.3",
"react": "^18.3.1",
"react-day-picker": "^8.10.1",
"react-dom": "^18.3.1",

View file

@ -0,0 +1,181 @@
import { useState } from "react";
import { Send } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Card } from "@/components/ui/card";
import { toast } from "sonner";
import { supabase } from "@/lib/supabase";
import { CheckIcon, ChevronDownIcon } from "@radix-ui/react-icons";
import {
Select,
SelectTrigger,
SelectValue,
SelectContent,
SelectViewport,
SelectItem,
SelectItemText,
SelectItemIndicator,
SelectPortal,
} from "@radix-ui/react-select";
import countriesJson from "@/utils/countries.json";
import serviceJson from "@/utils/services.json";
// const countries = Object.values(countriesJson).map((name) => ({
// code: name.toLowerCase().replace(/\s/g, ""), // Creating a pseudo-code
// name,
// }));
const countries = Object.entries(countriesJson).map(([code, name]) => ({
code, // Now it correctly stores the country code
name,
}));
const services = Object.values(serviceJson).map((name, code) => ({
code: code,
name,
}));
export function BuyANumber() {
const [message, setMessage] = useState("");
const [phoneNumber, setPhoneNumber] = useState("");
const [isSending, setIsSending] = useState(false);
const [selectedCountry, setSelectedCountry] = useState("180");
const [selectedService, setSelectedService] = useState("fb");
// const [selectedCountry, setSelectedCountry] = useState(countries[0]?.code || "");
// const [selectedService, setSelectedService] = useState(services[0]?.name?.code || "");
const [response, setResponse] = useState("");
const handleSend = async () => {
if (!selectedCountry || !selectedService) {
toast.error("Please enter both phone number and message");
return;
}
try {
const myHeaders = new Headers({
Origin: window.location.origin,
"x-requested-with": "XMLHttpRequest",
});
const requestOptions = {
method: "GET",
headers: myHeaders,
};
let apiResponse;
// Using a CORS proxy
const corsProxy = "https://cors-anywhere.herokuapp.com/";
const apiUrl = `https://api.sms-activate.ae/stubs/handler_api.php?api_key=3e70A03f3dA6bfb2b32b2cc09Adb6841&action=getNumber&service=${selectedService}&operator=any&country=${selectedCountry}&maxPrice=0.2250`;
// console.log(apiUrl);
await fetch(corsProxy + apiUrl, requestOptions)
.then((response) => response.text())
.then((result) => (apiResponse = result))
.catch((error) => console.error(error));
if (apiResponse.includes("ACCESS_NUMBER")) {
const parts = apiResponse.split(":");
const lastString = parts[parts.length - 1];
setResponse(lastString);
toast.success(`Number Purchased successfully!` + lastString);
} else {
toast.error("Something went wrong");
}
} catch (error: any) {
console.error("Detailed error:", error);
toast.error(
`Failed to store message: ${error.message || "Please try again"}`
);
} finally {
setIsSending(false);
}
};
return (
<div className="relative">
<Card className="p-6 animate-fadeIn overflow-visible">
<div className="space-y-4">
<h2 className="text-2xl font-semibold tracking-tight">
Buy a Number
</h2>
<div className="space-y-4">
<div className="space-y-2">
<label
htmlFor="phone"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Service
</label>
<Select
onValueChange={setSelectedService}
value={selectedService}
>
<SelectTrigger className="inline-flex items-center justify-between w-full px-4 py-2 text-sm font-medium text-left bg-white border border-gray-300 rounded-md shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
<SelectValue placeholder="Select a country" />
<ChevronDownIcon className="w-5 h-5 ml-2" />
</SelectTrigger>
<SelectContent className="z-50 fixed">
<SelectViewport className="bg-white">
{services.map((service) => (
<SelectItem
key={service?.name?.code}
value={service?.name?.code}
className="m-4"
>
<SelectItemText>{service?.name?.name}</SelectItemText>
<SelectItemIndicator>
<CheckIcon />
</SelectItemIndicator>
</SelectItem>
))}
</SelectViewport>
</SelectContent>
</Select>
</div>
<div className="space-y-2">
<label
htmlFor="phone"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Country
</label>
<Select
onValueChange={setSelectedCountry}
value={selectedCountry}
>
<SelectTrigger className="inline-flex items-center justify-between w-full px-4 py-2 text-sm font-medium text-left bg-white border border-gray-300 rounded-md shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
<SelectValue placeholder="Select a country" />
<ChevronDownIcon className="w-5 h-5 ml-2" />
</SelectTrigger>
<SelectPortal>
<SelectContent>
<SelectViewport className="bg-white">
{countries.map((country) => (
<SelectItem
className="m-4"
key={country.code}
value={country.code}
>
<SelectItemText>{country.name}</SelectItemText>
<SelectItemIndicator>
<CheckIcon />
</SelectItemIndicator>
</SelectItem>
))}
</SelectViewport>
</SelectContent>
</SelectPortal>
</Select>
</div>
<Button
onClick={handleSend}
className="w-full group hover:shadow-md transition-all"
disabled={isSending}
>
<Send className="mr-2 h-4 w-4 group-hover:scale-110 transition-transform" />
{isSending ? "Buying..." : "Buy A Number"}
</Button>
</div>
</div>
</Card>
</div>
);
}

View file

@ -10,8 +10,9 @@ import {
Menu,
} from "lucide-react";
import { Button } from "@/components/ui/button";
import { BuyANumber } from "./BuyANumber";
type PanelView = "numbers" | "conversations" | "compose";
type PanelView = "numbers" | "conversations" | "compose" | "buyANumber";
export function Panel() {
const [view, setView] = useState<PanelView>("numbers");
@ -25,6 +26,8 @@ export function Panel() {
return <ConversationList />;
case "compose":
return <MessageComposer />;
case "buyANumber":
return <BuyANumber />;
default:
return <PhoneNumberList />;
}
@ -81,6 +84,14 @@ export function Panel() {
<Send className="mr-2 h-4 w-4" />
{isSidebarOpen && "New Message"}
</Button>
<Button
variant={view === "buyANumber" ? "default" : "ghost"}
className="w-full justify-start"
onClick={() => setView("buyANumber")}
>
<Send className="mr-2 h-4 w-4" />
{isSidebarOpen && "Buy a Number"}
</Button>
</div>
</nav>
</div>

View file

@ -1,6 +1,8 @@
import { Phone } from "lucide-react";
import { Clipboard, Phone } from "lucide-react";
import { Card } from "@/components/ui/card";
import { useEffect, useState } from "react";
import { parsePhoneNumberFromString } from 'libphonenumber-js';
interface PhoneNumber {
id: string;
@ -8,24 +10,68 @@ interface PhoneNumber {
status: "active" | "inactive";
}
const mockNumbers: PhoneNumber[] = [
{ id: "1", number: "+1 (555) 123-4567", status: "active" },
{ id: "2", number: "+1 (555) 234-5678", status: "active" },
];
const list = [
{
"activationId": "3336974038",
"serviceCode": "fb",
"phoneNumber": "19892798946",
"activationCost": 0.225,
"activationStatus": "4",
"activationTime": "2025-03-03 19:22:40",
"countryCode": "187",
"countryName": "USA",
"canGetAnotherSms": "1",
"currency": 840,
"smsCode": 64744,
"smsText": null,
"discount": "0",
"repeated": "0"
}
]
export function PhoneNumberList() {
const [numberList, setNumberList] = useState([])
const fetchNumberList = async () => {
try {
const myHeaders = new Headers({
"Origin": window.location.origin,
"x-requested-with": "XMLHttpRequest"
});
const requestOptions = {
method: "GET",
headers: myHeaders
};
const corsProxy = "https://cors-anywhere.herokuapp.com/";
const apiUrl = "https://api.sms-activate.ae/stubs/handler_api.php?api_key=3e70A03f3dA6bfb2b32b2cc09Adb6841&action=getActiveActivations";
const response = await fetch(corsProxy + apiUrl, requestOptions)
const data = await response.json()
console.log(data)
setNumberList(data?.activeActivations || [])
} catch (error) {
console.error("Error fetching phone numbers:", error)
}
}
useEffect(() => {
fetchNumberList()
}, [])
return (
<div className="space-y-4 p-4 animate-fadeIn">
<div className="flex items-center justify-between mb-6">
<h2 className="text-2xl font-semibold tracking-tight">Phone Numbers</h2>
<span className="text-sm text-muted-foreground">
{mockNumbers.length} numbers
{numberList.length} numbers
</span>
</div>
<div className="grid gap-4">
{mockNumbers.map((number) => (
{numberList.map((number) => (
<Card
key={number.id}
key={number.activationId}
className="p-4 transition-all hover:shadow-md cursor-pointer group"
>
<div className="flex items-center space-x-4">
@ -33,17 +79,31 @@ export function PhoneNumberList() {
<Phone className="h-5 w-5" />
</div>
<div className="flex-1">
<h3 className="font-medium">{number.number}</h3>
<h3 className="font-medium flex" onClick={() => navigator.clipboard.writeText(number.phoneNumber.toString())}>
{parsePhoneNumberFromString(number.phoneNumber)?.formatInternational() || number.phoneNumber}
<Clipboard className="ml-2 h-4 w-4 text-black " />
</h3>
<p className="text-sm text-muted-foreground">
Status:{" "}
<span
className={
number.status === "active"
number.activationStatus === "4"
? "text-green-500"
: "text-red-500"
}
>
{number.status}
{number.activationStatus}
</span>
</p>
<p className="text-sm text-muted-foreground flex gap-1">
OTP:
<span
className="text-green-500 cursor-pointer flex"
onClick={() => navigator.clipboard.writeText(number.smsCode.toString())}
title="Click to copy"
>
{ " " + number.smsCode}
<Clipboard className="ml-2 h-4 w-4 text-black " />
</span>
</p>
</div>

View file

@ -0,0 +1,16 @@
/* styles.css */
.PopoverTrigger {
background-color: white;
border-radius: 4px;
}
.PopoverContent {
border-radius: 4px;
padding: 20px;
width: 260px;
background-color: white;
}
.PopoverArrow {
fill: white;
}

196
src/utils/countries.json Normal file
View file

@ -0,0 +1,196 @@
{
"0": "Russia",
"1": "Ukraine",
"2": "Kazakhstan",
"3": "China",
"4": "Philippines",
"5": "Myanmar",
"6": "Indonesia",
"7": "Malaysia",
"8": "Kenya",
"9": "Tanzania",
"10": "Vietnam",
"11": "Kyrgyzstan",
"13": "Israel",
"14": "Hong Kong",
"15": "Poland",
"16": "United Kingdom",
"17": "Madagascar",
"18": "DCongo",
"19": "Nigeria",
"20": "Macao",
"21": "Egypt",
"22": "India",
"23": "Ireland",
"24": "Cambodia",
"25": "Laos",
"26": "Haiti",
"27": "Ivory",
"28": "Gambia",
"29": "Serbia",
"30": "Yemen",
"31": "Southafrica",
"32": "Romania",
"33": "Colombia",
"34": "Estonia",
"35": "Azerbaijan",
"36": "Canada",
"37": "Morocco",
"38": "Ghana",
"39": "Argentina",
"40": "Uzbekistan",
"41": "Cameroon",
"42": "Chad",
"43": "Germany",
"44": "Lithuania",
"45": "Croatia",
"46": "Sweden",
"47": "Iraq",
"48": "Netherlands",
"49": "Latvia",
"50": "Austria",
"51": "Belarus",
"52": "Thailand",
"53": "Saudiarabia",
"54": "Mexico",
"55": "Taiwan",
"56": "Spain",
"57": "Iran",
"58": "Algeria",
"59": "Slovenia",
"60": "Bangladesh",
"61": "Senegal",
"62": "Turkey",
"63": "Czech",
"64": "Srilanka",
"65": "Peru",
"66": "Pakistan",
"67": "New Zealand",
"68": "Guinea",
"69": "Mali",
"70": "Venezuela",
"71": "Ethiopia",
"72": "Mongolia",
"73": "Brazil",
"74": "Afghanistan",
"75": "Uganda",
"76": "Angola",
"77": "Cyprus",
"78": "France",
"79": "Papua",
"80": "Mozambique",
"81": "Nepal",
"82": "Belgium",
"83": "Bulgaria",
"84": "Hungary",
"85": "Moldova",
"86": "Italy",
"87": "Paraguay",
"88": "Honduras",
"89": "Tunisia",
"90": "Nicaragua",
"91": "Timorleste",
"92": "Bolivia",
"93": "Costarica",
"94": "Guatemala",
"95": "UAE",
"96": "Zimbabwe",
"97": "Puertorico",
"98": "Sudan",
"99": "Togo",
"100": "Kuwait",
"101": "Salvador",
"102": "Libyan",
"103": "Jamaica",
"104": "Trinidad",
"105": "Ecuador",
"106": "Swaziland",
"107": "Oman",
"108": "Bosnia",
"109": "Dominican",
"110": "Syrian",
"111": "Qatar",
"112": "Panama",
"113": "Cuba",
"114": "Mauritania",
"115": "Sierraleone",
"116": "Jordan",
"117": "Portugal",
"118": "Barbados",
"119": "Burundi",
"120": "Benin",
"121": "Brunei",
"122": "Bahamas",
"123": "Botswana",
"124": "Belize",
"125": "Caf",
"126": "Dominica",
"127": "Grenada",
"128": "Georgia",
"129": "Greece",
"130": "Guineabissau",
"131": "Guyana",
"132": "Iceland",
"133": "Comoros",
"134": "Saintkitts",
"135": "Liberia",
"136": "Lesotho",
"137": "Malawi",
"138": "Namibia",
"139": "Niger",
"140": "Rwanda",
"141": "Slovakia",
"142": "Suriname",
"143": "Tajikistan",
"144": "Monaco",
"145": "Bahrain",
"146": "Reunion",
"147": "Zambia",
"148": "Armenia",
"149": "Somalia",
"150": "Congo",
"151": "Chile",
"152": "Burkinafaso",
"153": "Lebanon",
"154": "Gabon",
"155": "Albania",
"156": "Uruguay",
"157": "Mauritius",
"158": "Bhutan",
"159": "Maldives",
"160": "Guadeloupe",
"161": "Turkmenistan",
"162": "Frenchguiana",
"163": "Finland",
"164": "Saintlucia",
"165": "Luxembourg",
"166": "Saintvincentgrenadines",
"167": "Equatorialguinea",
"168": "Djibouti",
"169": "Antiguabarbuda",
"170": "Caymanislands",
"171": "Montenegro",
"172": "Denmark",
"173": "Switzerland",
"174": "Norway",
"175": "Australia",
"176": "Eritrea",
"177": "Southsudan",
"178": "Saotomeandprincipe",
"179": "Aruba",
"180": "Montserrat",
"181": "Anguilla",
"182": "Japan",
"183": "Northmacedonia",
"184": "Seychelles",
"185": "New Caledonia",
"186": "Capeverde",
"187": "USA",
"188": "Palestine",
"189": "Fiji",
"196": "Singapore",
"199": "Malta",
"201": "Gibraltar",
"203": "Kosovo",
"204": "Niue"
}

8967
src/utils/services.json Normal file

File diff suppressed because it is too large Load diff

144
yarn.lock
View file

@ -480,7 +480,14 @@
resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.1.tgz#fc169732d755c7fbad33ba8d0cd7fd10c90dc8e3"
integrity sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==
"@radix-ui/react-accordion@^1.2.0":
"@radix-ui/react-accessible-icon@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.2.tgz#a4c32c32386555577d71b947665162268d264efc"
integrity sha512-+rnMO0SEfzkcHr93RshkQVpOA26MtGOv4pcS9QUnLg4F8+GDmCJ8c2FEPhPz5e7arf31EzbTqJxFbzg3qen14g==
dependencies:
"@radix-ui/react-visually-hidden" "1.1.2"
"@radix-ui/react-accordion@1.2.3", "@radix-ui/react-accordion@^1.2.0":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-accordion/-/react-accordion-1.2.3.tgz#7768a2d2daea18e5c09809f2c4b8097448ee2ff7"
integrity sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A==
@ -495,7 +502,7 @@
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-alert-dialog@^1.1.1":
"@radix-ui/react-alert-dialog@1.1.6", "@radix-ui/react-alert-dialog@^1.1.1":
version "1.1.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.6.tgz#52187fdaa5110ed6749e75974e90c3505f788c5d"
integrity sha512-p4XnPqgej8sZAAReCAKgz1REYZEBLR8hU9Pg27wFnCWIMc8g1ccCs0FjBcy05V15VTu8pAePw/VDYeOm/uZ6yQ==
@ -514,14 +521,14 @@
dependencies:
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-aspect-ratio@^1.1.0":
"@radix-ui/react-aspect-ratio@1.1.2", "@radix-ui/react-aspect-ratio@^1.1.0":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.2.tgz#661cdd1bc64f1359d7b331155edd4b21833ddc1d"
integrity sha512-TaJxYoCpxJ7vfEkv2PTNox/6zzmpKXT6ewvCuf2tTOIVN45/Jahhlld29Yw4pciOXS2Xq91/rSGEdmEnUWZCqA==
dependencies:
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-avatar@^1.1.0":
"@radix-ui/react-avatar@1.1.3", "@radix-ui/react-avatar@^1.1.0":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-avatar/-/react-avatar-1.1.3.tgz#8de2bcebdc38fbe14e952ccacf05ba2cb426bd83"
integrity sha512-Paen00T4P8L8gd9bNsRMw7Cbaz85oxiv+hzomsRZgFm2byltPFDtfcoqlWJ8GyZlIBWgLssJlzLCnKU0G0302g==
@ -531,7 +538,7 @@
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-use-layout-effect" "1.1.0"
"@radix-ui/react-checkbox@^1.1.1":
"@radix-ui/react-checkbox@1.1.4", "@radix-ui/react-checkbox@^1.1.1":
version "1.1.4"
resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.4.tgz#d7f5cb0a82ca6bb4eb717b74e9b2b0cc73ecf7a0"
integrity sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==
@ -574,7 +581,7 @@
resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz#6f766faa975f8738269ebb8a23bad4f5a8d2faec"
integrity sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==
"@radix-ui/react-context-menu@^2.2.1":
"@radix-ui/react-context-menu@2.2.6", "@radix-ui/react-context-menu@^2.2.1":
version "2.2.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.6.tgz#752fd1d91f92bba287ef2b558770f4ca7d74523e"
integrity sha512-aUP99QZ3VU84NPsHeaFt4cQUNgJqFsLLOt/RbbWXszZ6MP0DpDyjkFZORr4RpAEx3sUBk+Kc8h13yGtC5Qw8dg==
@ -627,7 +634,7 @@
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-use-escape-keydown" "1.1.0"
"@radix-ui/react-dropdown-menu@^2.1.1":
"@radix-ui/react-dropdown-menu@2.1.6", "@radix-ui/react-dropdown-menu@^2.1.1":
version "2.1.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz#b66b62648b378370aa3c38e5727fd3bc5b8792a3"
integrity sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==
@ -654,7 +661,19 @@
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-hover-card@^1.1.1":
"@radix-ui/react-form@0.1.2":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-form/-/react-form-0.1.2.tgz#1aa26d073d73d4f9bbd0ca73cdd9db1b1d382a94"
integrity sha512-Owj1MjLq6/Rp85bgzYI+zRK5APLiWDtXDM63Z39FW15bNdehrcS+FjQgLGQYswFzipYu4GAA+t5w/VqvvNZ3ag==
dependencies:
"@radix-ui/primitive" "1.1.1"
"@radix-ui/react-compose-refs" "1.1.1"
"@radix-ui/react-context" "1.1.1"
"@radix-ui/react-id" "1.1.0"
"@radix-ui/react-label" "2.1.2"
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-hover-card@1.1.6", "@radix-ui/react-hover-card@^1.1.1":
version "1.1.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.6.tgz#94fb87c047e1bb3bfd70439cf7ee48165ea4efa5"
integrity sha512-E4ozl35jq0VRlrdc4dhHrNSV0JqBb4Jy73WAhBEK7JoYnQ83ED5r0Rb/XdVKw89ReAJN38N492BAPBZQ57VmqQ==
@ -669,6 +688,11 @@
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-icons@^1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-icons/-/react-icons-1.3.2.tgz#09be63d178262181aeca5fb7f7bc944b10a7f441"
integrity sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==
"@radix-ui/react-id@1.1.0", "@radix-ui/react-id@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed"
@ -676,7 +700,7 @@
dependencies:
"@radix-ui/react-use-layout-effect" "1.1.0"
"@radix-ui/react-label@^2.1.0":
"@radix-ui/react-label@2.1.2", "@radix-ui/react-label@^2.1.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.1.2.tgz#994a5d815c2ff46e151410ae4e301f1b639f9971"
integrity sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==
@ -707,7 +731,7 @@
aria-hidden "^1.2.4"
react-remove-scroll "^2.6.3"
"@radix-ui/react-menubar@^1.1.1":
"@radix-ui/react-menubar@1.1.6", "@radix-ui/react-menubar@^1.1.1":
version "1.1.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-menubar/-/react-menubar-1.1.6.tgz#6f8009e7a3a22e5163350fe16e715d6241c99925"
integrity sha512-FHq7+3DlXwh/7FOM4i0G4bC4vPjiq89VEEvNF4VMLchGnaUuUbE5uKXMUCjdKaOghEEMeiKa5XCa2Pk4kteWmg==
@ -723,7 +747,7 @@
"@radix-ui/react-roving-focus" "1.1.2"
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-navigation-menu@^1.2.0":
"@radix-ui/react-navigation-menu@1.2.5", "@radix-ui/react-navigation-menu@^1.2.0":
version "1.2.5"
resolved "https://registry.yarnpkg.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.5.tgz#c882e2067f1101a9a5f18e05b73b68b2e158a272"
integrity sha512-myMHHQUZ3ZLTi8W381/Vu43Ia0NqakkQZ2vzynMmTUtQQ9kNkjzhOwkZC9TAM5R07OZUVIQyHC06f/9JZJpvvA==
@ -743,7 +767,7 @@
"@radix-ui/react-use-previous" "1.1.0"
"@radix-ui/react-visually-hidden" "1.1.2"
"@radix-ui/react-popover@^1.1.1":
"@radix-ui/react-popover@1.1.6", "@radix-ui/react-popover@^1.1.1":
version "1.1.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.6.tgz#699634dbc7899429f657bb590d71fb3ca0904087"
integrity sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg==
@ -803,7 +827,7 @@
dependencies:
"@radix-ui/react-slot" "1.1.2"
"@radix-ui/react-progress@^1.1.0":
"@radix-ui/react-progress@1.1.2", "@radix-ui/react-progress@^1.1.0":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.2.tgz#3584c346d47f2a6f86076ce5af56ab00c66ded2b"
integrity sha512-u1IgJFQ4zNAUTjGdDL5dcl/U8ntOR6jsnhxKb5RKp5Ozwl88xKR9EqRZOe/Mk8tnx0x5tNUe2F+MzsyjqMg0MA==
@ -811,7 +835,7 @@
"@radix-ui/react-context" "1.1.1"
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-radio-group@^1.2.0":
"@radix-ui/react-radio-group@1.2.3", "@radix-ui/react-radio-group@^1.2.0":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-1.2.3.tgz#f60f58179cce716ccdb5c3d53a2eca97e4efd520"
integrity sha512-xtCsqt8Rp09FK50ItqEqTJ7Sxanz8EM8dnkVIhJrc/wkMMomSmXHvYbhv3E7Zx4oXh98aaLt9W679SUYXg4IDA==
@ -842,7 +866,7 @@
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-scroll-area@^1.1.0":
"@radix-ui/react-scroll-area@1.2.3", "@radix-ui/react-scroll-area@^1.1.0":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.3.tgz#6a9a7897add739ce84b517796ee345d495893d3f"
integrity sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ==
@ -857,7 +881,7 @@
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-use-layout-effect" "1.1.0"
"@radix-ui/react-select@^2.1.1":
"@radix-ui/react-select@2.1.6", "@radix-ui/react-select@^2.1.1":
version "2.1.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.6.tgz#79c07cac4de0188e6f7afb2720a87a0405d88849"
integrity sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==
@ -884,14 +908,14 @@
aria-hidden "^1.2.4"
react-remove-scroll "^2.6.3"
"@radix-ui/react-separator@^1.1.0":
"@radix-ui/react-separator@1.1.2", "@radix-ui/react-separator@^1.1.0":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.2.tgz#24c5450db20f341f2b743ed4b07b907e18579216"
integrity sha512-oZfHcaAp2Y6KFBX6I5P1u7CQoy4lheCGiYj+pGFrHy8E/VNRb5E39TkTr3JrV520csPBTZjkuKFdEsjS5EUNKQ==
dependencies:
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-slider@^1.2.0":
"@radix-ui/react-slider@1.2.3", "@radix-ui/react-slider@^1.2.0":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-slider/-/react-slider-1.2.3.tgz#f40072e88891d756493f27bb53285e32d0e6af37"
integrity sha512-nNrLAWLjGESnhqBqcCNW4w2nn7LxudyMzeB6VgdyAnFLC6kfQgnAjSL2v6UkQTnDctJBlxrmxfplWS4iYjdUTw==
@ -915,7 +939,7 @@
dependencies:
"@radix-ui/react-compose-refs" "1.1.1"
"@radix-ui/react-switch@^1.1.0":
"@radix-ui/react-switch@1.1.3", "@radix-ui/react-switch@^1.1.0":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-switch/-/react-switch-1.1.3.tgz#cb6386909d1d3f65a2b81a3b15da8c91d18f49b0"
integrity sha512-1nc+vjEOQkJVsJtWPSiISGT6OKm4SiOdjMo+/icLxo2G4vxz1GntC5MzfL4v8ey9OEfw787QCD1y3mUv0NiFEQ==
@ -928,7 +952,7 @@
"@radix-ui/react-use-previous" "1.1.0"
"@radix-ui/react-use-size" "1.1.0"
"@radix-ui/react-tabs@^1.1.0":
"@radix-ui/react-tabs@1.1.3", "@radix-ui/react-tabs@^1.1.0":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz#c47c8202dc676dea47676215863d2ef9b141c17a"
integrity sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==
@ -942,7 +966,7 @@
"@radix-ui/react-roving-focus" "1.1.2"
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-toast@^1.2.1":
"@radix-ui/react-toast@1.2.6", "@radix-ui/react-toast@^1.2.1":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-toast/-/react-toast-1.2.6.tgz#f8d4bb2217851d221d700ac48fbe866b35023361"
integrity sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA==
@ -960,7 +984,7 @@
"@radix-ui/react-use-layout-effect" "1.1.0"
"@radix-ui/react-visually-hidden" "1.1.2"
"@radix-ui/react-toggle-group@^1.1.0":
"@radix-ui/react-toggle-group@1.1.2", "@radix-ui/react-toggle-group@^1.1.0":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.2.tgz#a4063a06124a008a206f5678018612e3ddd5923c"
integrity sha512-JBm6s6aVG/nwuY5eadhU2zDi/IwYS0sDM5ZWb4nymv/hn3hZdkw+gENn0LP4iY1yCd7+bgJaCwueMYJIU3vk4A==
@ -982,7 +1006,20 @@
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-tooltip@^1.1.4":
"@radix-ui/react-toolbar@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.1.2.tgz#3b05ba2e4908d54ec37157a6b2c4b17e4e60c6df"
integrity sha512-wT20eQ7ScFk+kBMDmHp+lMk18cgxhu35b2Bn5deUcPxiVwfn5vuZgi7NGcHu8ocdkinahmp4FaSZysKDyRVPWQ==
dependencies:
"@radix-ui/primitive" "1.1.1"
"@radix-ui/react-context" "1.1.1"
"@radix-ui/react-direction" "1.1.0"
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-roving-focus" "1.1.2"
"@radix-ui/react-separator" "1.1.2"
"@radix-ui/react-toggle-group" "1.1.2"
"@radix-ui/react-tooltip@1.1.8", "@radix-ui/react-tooltip@^1.1.4":
version "1.1.8"
resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz#1aa2a575630fca2b2845b62f85056bb826bec456"
integrity sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==
@ -2344,6 +2381,11 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
libphonenumber-js@^1.12.4:
version "1.12.4"
resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.12.4.tgz#15062e61ac29d381305f0a37b0c2aad6ae432931"
integrity sha512-vLmhg7Gan7idyAKfc6pvCtNzvar4/eIzrVVk3hjNFH5+fGqyjD0gQRovdTrDl20wsmZhBtmZpcsR0tOfquwb8g==
lilconfig@^3.0.0, lilconfig@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
@ -2669,6 +2711,62 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
radix-ui@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/radix-ui/-/radix-ui-1.1.3.tgz#c08fb8c183b0d9738f0b91888489a5af1cea9ca1"
integrity sha512-W8L6soM1vQnIXVvVa31AkQhoZBDPwVoNHhT13R3aB9Qq7ARYIUS9DLaCopRBsbTdZm1NEEPx3rnq659CiNOBDw==
dependencies:
"@radix-ui/primitive" "1.1.1"
"@radix-ui/react-accessible-icon" "1.1.2"
"@radix-ui/react-accordion" "1.2.3"
"@radix-ui/react-alert-dialog" "1.1.6"
"@radix-ui/react-aspect-ratio" "1.1.2"
"@radix-ui/react-avatar" "1.1.3"
"@radix-ui/react-checkbox" "1.1.4"
"@radix-ui/react-collapsible" "1.1.3"
"@radix-ui/react-collection" "1.1.2"
"@radix-ui/react-compose-refs" "1.1.1"
"@radix-ui/react-context" "1.1.1"
"@radix-ui/react-context-menu" "2.2.6"
"@radix-ui/react-dialog" "1.1.6"
"@radix-ui/react-direction" "1.1.0"
"@radix-ui/react-dismissable-layer" "1.1.5"
"@radix-ui/react-dropdown-menu" "2.1.6"
"@radix-ui/react-focus-guards" "1.1.1"
"@radix-ui/react-focus-scope" "1.1.2"
"@radix-ui/react-form" "0.1.2"
"@radix-ui/react-hover-card" "1.1.6"
"@radix-ui/react-label" "2.1.2"
"@radix-ui/react-menu" "2.1.6"
"@radix-ui/react-menubar" "1.1.6"
"@radix-ui/react-navigation-menu" "1.2.5"
"@radix-ui/react-popover" "1.1.6"
"@radix-ui/react-popper" "1.2.2"
"@radix-ui/react-portal" "1.1.4"
"@radix-ui/react-presence" "1.1.2"
"@radix-ui/react-primitive" "2.0.2"
"@radix-ui/react-progress" "1.1.2"
"@radix-ui/react-radio-group" "1.2.3"
"@radix-ui/react-roving-focus" "1.1.2"
"@radix-ui/react-scroll-area" "1.2.3"
"@radix-ui/react-select" "2.1.6"
"@radix-ui/react-separator" "1.1.2"
"@radix-ui/react-slider" "1.2.3"
"@radix-ui/react-slot" "1.1.2"
"@radix-ui/react-switch" "1.1.3"
"@radix-ui/react-tabs" "1.1.3"
"@radix-ui/react-toast" "1.2.6"
"@radix-ui/react-toggle" "1.1.2"
"@radix-ui/react-toggle-group" "1.1.2"
"@radix-ui/react-toolbar" "1.1.2"
"@radix-ui/react-tooltip" "1.1.8"
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-use-escape-keydown" "1.1.0"
"@radix-ui/react-use-layout-effect" "1.1.0"
"@radix-ui/react-use-size" "1.1.0"
"@radix-ui/react-visually-hidden" "1.1.2"
react-day-picker@^8.10.1:
version "8.10.1"
resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-8.10.1.tgz#4762ec298865919b93ec09ba69621580835b8e80"