periplo-ui 4.6.3 → 4.8.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.
@@ -0,0 +1,63 @@
1
+ import { PhoneCountry } from './countries';
2
+ import * as React from 'react';
3
+ export type PhoneInputCountryAccessors<T> = {
4
+ /** Returns the unique key used to identify a country in the selector. */
5
+ getCountryValue: (country: T) => string;
6
+ /** Returns the E.164 dial code, including the leading "+", e.g. "+34". */
7
+ getCountryDialCode: (country: T) => string;
8
+ /** Returns the flag emoji (or any other leading glyph) for a country. */
9
+ getCountryFlag: (country: T) => string;
10
+ /** Returns the display name used for search and the option list. */
11
+ getCountryName: (country: T) => string;
12
+ };
13
+ /** Props unrelated to the country shape, shared by both usage modes. */
14
+ type PhoneInputBaseProps = {
15
+ /** Id applied to the number input, so a `<label htmlFor>` / `FormControl` targets it. */
16
+ id?: string;
17
+ /** Name applied to the number input. */
18
+ name?: string;
19
+ /** Classes for the outer wrapper. */
20
+ className?: string;
21
+ /** Classes for the country selector trigger button. */
22
+ prefixClassName?: string;
23
+ /** Classes for the number `<input>` element. */
24
+ numberClassName?: string;
25
+ disabled?: boolean;
26
+ error?: boolean | string;
27
+ /** Selected country, expressed as `getCountryValue(country)`. */
28
+ country?: string;
29
+ /** Digits value of the number field. */
30
+ number?: string;
31
+ onNumberChange?: (number: string) => void;
32
+ /** Extra attributes forwarded to the number `<input>`. */
33
+ numberInputProps?: Omit<React.InputHTMLAttributes<HTMLInputElement>, 'id' | 'name' | 'disabled' | 'value' | 'onChange' | 'className'>;
34
+ /** Placeholder for the number field. */
35
+ placeholder?: string;
36
+ /** Accessible label for the country selector trigger (announced by screen readers; not visible). */
37
+ countryAriaLabel?: string;
38
+ /** Placeholder for the country search field. */
39
+ searchPlaceholder?: string;
40
+ /** Message shown when no country matches the search. */
41
+ emptyMessage?: string;
42
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'id' | 'onChange'>;
43
+ /** Default mode: use the built-in `PhoneCountry` list. Accessors are optional (sensible defaults applied). */
44
+ export type PhoneInputDefaultProps = PhoneInputBaseProps & Partial<PhoneInputCountryAccessors<PhoneCountry>> & {
45
+ /** Country list backing the prefix selector. Defaults to `defaultCountries`. */
46
+ countries?: Array<PhoneCountry>;
47
+ /** Fires with the full selected country object, so callers can persist whichever fields they need. */
48
+ onCountryChange?: (country: PhoneCountry) => void;
49
+ };
50
+ /** Custom mode: bring your own country shape. `countries` and all accessors are required. */
51
+ export type PhoneInputCustomProps<T extends object> = PhoneInputBaseProps & PhoneInputCountryAccessors<T> & {
52
+ /** Backend-driven / custom country list. */
53
+ countries: Array<T>;
54
+ /** Fires with the full selected country object, so callers can persist whichever fields they need. */
55
+ onCountryChange?: (country: T) => void;
56
+ };
57
+ export type PhoneInputProps<T extends object = PhoneCountry> = PhoneInputDefaultProps | PhoneInputCustomProps<T>;
58
+ export declare function PhoneInput(props: PhoneInputDefaultProps): React.ReactElement;
59
+ export declare function PhoneInput<T extends object>(props: PhoneInputCustomProps<T>): React.ReactElement;
60
+ export declare namespace PhoneInput {
61
+ var displayName: string;
62
+ }
63
+ export {};
@@ -0,0 +1,168 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { CaretDown } from '@phosphor-icons/react/dist/ssr/CaretDown';
3
+ import { Check } from '@phosphor-icons/react/dist/ssr/Check';
4
+ import { Globe } from '@phosphor-icons/react/dist/ssr/Globe';
5
+ import { WarningCircle } from '@phosphor-icons/react/dist/ssr/WarningCircle';
6
+ import * as React from 'react';
7
+ import { cn } from '../../lib/utils.js';
8
+ import { Command, CommandInput, CommandList, CommandEmpty, CommandItem } from '../Command/Command.js';
9
+ import { PopoverRoot, PopoverTrigger, PopoverContent } from '../Popover/Popover.js';
10
+ import { defaultCountries } from './countries.js';
11
+
12
+ const defaultAccessors = {
13
+ getCountryValue: (country) => country.isoCode,
14
+ getCountryDialCode: (country) => country.dialCode,
15
+ getCountryFlag: (country) => country.flag,
16
+ getCountryName: (country) => country.name
17
+ };
18
+ function PhoneInput(props) {
19
+ const {
20
+ id,
21
+ name,
22
+ className,
23
+ prefixClassName,
24
+ numberClassName,
25
+ disabled = false,
26
+ error = false,
27
+ countries,
28
+ country,
29
+ onCountryChange,
30
+ number,
31
+ onNumberChange,
32
+ numberInputProps,
33
+ placeholder,
34
+ countryAriaLabel = "Select country",
35
+ searchPlaceholder = "Search...",
36
+ emptyMessage = "No results found.",
37
+ getCountryValue,
38
+ getCountryDialCode,
39
+ getCountryFlag,
40
+ getCountryName,
41
+ "aria-describedby": ariaDescribedBy,
42
+ "aria-invalid": ariaInvalid,
43
+ ...rest
44
+ } = props;
45
+ const fallback = { countries: defaultCountries, ...defaultAccessors };
46
+ const options = countries ?? fallback.countries;
47
+ const resolveValue = getCountryValue ?? fallback.getCountryValue;
48
+ const resolveDialCode = getCountryDialCode ?? fallback.getCountryDialCode;
49
+ const resolveFlag = getCountryFlag ?? fallback.getCountryFlag;
50
+ const resolveName = getCountryName ?? fallback.getCountryName;
51
+ const [open, setOpen] = React.useState(false);
52
+ const [search, setSearch] = React.useState("");
53
+ const hasError = Boolean(error);
54
+ const prefixDisabled = disabled || options.length <= 1;
55
+ const selectedCountry = React.useMemo(
56
+ () => options.find((option) => resolveValue(option) === country),
57
+ [options, country, resolveValue]
58
+ );
59
+ const filteredOptions = React.useMemo(() => {
60
+ const normalized = search.toLowerCase().trim();
61
+ if (!normalized) return options;
62
+ return options.filter(
63
+ (option) => resolveName(option).toLowerCase().includes(normalized) || resolveDialCode(option).toLowerCase().includes(normalized)
64
+ );
65
+ }, [options, search, resolveName, resolveDialCode]);
66
+ const handleOpenChange = (next) => {
67
+ setOpen(next);
68
+ if (!next) setSearch("");
69
+ };
70
+ const handleSelect = (option) => {
71
+ onCountryChange?.(option);
72
+ handleOpenChange(false);
73
+ };
74
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex w-full flex-col gap-1", className), ...rest, children: [
75
+ /* @__PURE__ */ jsxs(
76
+ "div",
77
+ {
78
+ className: cn(
79
+ "flex h-12 w-full items-stretch overflow-hidden rounded-lg border border-neutral-200 bg-white transition-colors has-[input:focus]:border-neutral-950",
80
+ disabled && "bg-neutral-50",
81
+ hasError && "border-error-400 has-[input:focus]:border-error-700"
82
+ ),
83
+ children: [
84
+ /* @__PURE__ */ jsxs(PopoverRoot, { open, onOpenChange: handleOpenChange, children: [
85
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
86
+ "button",
87
+ {
88
+ type: "button",
89
+ id: id ? `${id}-country` : void 0,
90
+ disabled: prefixDisabled,
91
+ "aria-label": selectedCountry ? resolveName(selectedCountry) : countryAriaLabel,
92
+ className: cn(
93
+ "flex w-28 shrink-0 items-center gap-1.5 border-r border-neutral-200 px-3 text-base text-neutral-950 outline-none transition-colors",
94
+ !prefixDisabled && "cursor-pointer hover:bg-neutral-50",
95
+ prefixDisabled && "cursor-not-allowed",
96
+ disabled && "opacity-50",
97
+ prefixClassName
98
+ ),
99
+ children: [
100
+ selectedCountry ? /* @__PURE__ */ jsxs(Fragment, { children: [
101
+ /* @__PURE__ */ jsx("span", { className: "text-lg leading-none", children: resolveFlag(selectedCountry) }),
102
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: resolveDialCode(selectedCountry) })
103
+ ] }) : /* @__PURE__ */ jsx(Globe, { className: "h-5 w-5 text-neutral-300", "aria-hidden": true }),
104
+ !prefixDisabled && /* @__PURE__ */ jsx(CaretDown, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
105
+ ]
106
+ }
107
+ ) }),
108
+ /* @__PURE__ */ jsx(PopoverContent, { align: "start", className: "w-72 overflow-hidden p-0", children: /* @__PURE__ */ jsxs(Command, { shouldFilter: false, children: [
109
+ /* @__PURE__ */ jsx(CommandInput, { placeholder: searchPlaceholder, value: search, onValueChange: setSearch }),
110
+ /* @__PURE__ */ jsx(CommandList, { className: "px-2.5 pb-2", children: filteredOptions.length === 0 ? /* @__PURE__ */ jsx(CommandEmpty, { children: emptyMessage }) : filteredOptions.map((option) => {
111
+ const value = resolveValue(option);
112
+ const isSelected = value === country;
113
+ return /* @__PURE__ */ jsxs(
114
+ CommandItem,
115
+ {
116
+ value,
117
+ onSelect: () => handleSelect(option),
118
+ className: "gap-2 rounded-lg px-3",
119
+ children: [
120
+ /* @__PURE__ */ jsx("span", { className: "text-lg leading-none", children: resolveFlag(option) }),
121
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 text-neutral-500", children: resolveDialCode(option) }),
122
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: resolveName(option) }),
123
+ isSelected && /* @__PURE__ */ jsx(
124
+ Check,
125
+ {
126
+ "data-testid": "selected-check",
127
+ weight: "bold",
128
+ className: "ml-auto h-4 w-4 shrink-0 text-neutral-950"
129
+ }
130
+ )
131
+ ]
132
+ },
133
+ value
134
+ );
135
+ }) })
136
+ ] }) })
137
+ ] }),
138
+ /* @__PURE__ */ jsx(
139
+ "input",
140
+ {
141
+ id,
142
+ name,
143
+ type: "tel",
144
+ inputMode: "numeric",
145
+ disabled,
146
+ value: number ?? "",
147
+ onChange: (event) => onNumberChange?.(event.target.value.replace(/\D/g, "")),
148
+ placeholder,
149
+ "aria-invalid": ariaInvalid ?? (hasError || void 0),
150
+ "aria-describedby": ariaDescribedBy,
151
+ className: cn(
152
+ "min-w-0 flex-1 bg-transparent px-3 text-base text-neutral-950 outline-none placeholder:text-neutral-300 disabled:cursor-not-allowed disabled:opacity-50",
153
+ numberClassName
154
+ ),
155
+ ...numberInputProps
156
+ }
157
+ ),
158
+ hasError && /* @__PURE__ */ jsx("div", { className: "flex items-center pr-3", children: /* @__PURE__ */ jsx(WarningCircle, { "data-testid": "exclaim-icon", className: "text-error-500", size: 18 }) })
159
+ ]
160
+ }
161
+ ),
162
+ typeof error === "string" && /* @__PURE__ */ jsx("span", { className: "text-error-500 text-sm", children: error })
163
+ ] });
164
+ }
165
+ PhoneInput.displayName = "PhoneInput";
166
+
167
+ export { PhoneInput };
168
+ //# sourceMappingURL=PhoneInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhoneInput.js","sources":["../../../src/components/PhoneInput/PhoneInput.tsx"],"sourcesContent":["import { CaretDown } from '@phosphor-icons/react/dist/ssr/CaretDown'\nimport { Check } from '@phosphor-icons/react/dist/ssr/Check'\nimport { Globe } from '@phosphor-icons/react/dist/ssr/Globe'\nimport { WarningCircle } from '@phosphor-icons/react/dist/ssr/WarningCircle'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nimport { Command, CommandEmpty, CommandInput, CommandItem, CommandList } from '../Command'\nimport { PopoverContent, PopoverRoot, PopoverTrigger } from '../Popover'\n\nimport { defaultCountries, type PhoneCountry } from './countries'\n\nexport type PhoneInputCountryAccessors<T> = {\n /** Returns the unique key used to identify a country in the selector. */\n getCountryValue: (country: T) => string\n /** Returns the E.164 dial code, including the leading \"+\", e.g. \"+34\". */\n getCountryDialCode: (country: T) => string\n /** Returns the flag emoji (or any other leading glyph) for a country. */\n getCountryFlag: (country: T) => string\n /** Returns the display name used for search and the option list. */\n getCountryName: (country: T) => string\n}\n\n/** Props unrelated to the country shape, shared by both usage modes. */\ntype PhoneInputBaseProps = {\n /** Id applied to the number input, so a `<label htmlFor>` / `FormControl` targets it. */\n id?: string\n /** Name applied to the number input. */\n name?: string\n /** Classes for the outer wrapper. */\n className?: string\n /** Classes for the country selector trigger button. */\n prefixClassName?: string\n /** Classes for the number `<input>` element. */\n numberClassName?: string\n disabled?: boolean\n error?: boolean | string\n /** Selected country, expressed as `getCountryValue(country)`. */\n country?: string\n /** Digits value of the number field. */\n number?: string\n onNumberChange?: (number: string) => void\n /** Extra attributes forwarded to the number `<input>`. */\n numberInputProps?: Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'id' | 'name' | 'disabled' | 'value' | 'onChange' | 'className'\n >\n /** Placeholder for the number field. */\n placeholder?: string\n /** Accessible label for the country selector trigger (announced by screen readers; not visible). */\n countryAriaLabel?: string\n /** Placeholder for the country search field. */\n searchPlaceholder?: string\n /** Message shown when no country matches the search. */\n emptyMessage?: string\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'id' | 'onChange'>\n\n/** Default mode: use the built-in `PhoneCountry` list. Accessors are optional (sensible defaults applied). */\nexport type PhoneInputDefaultProps = PhoneInputBaseProps &\n Partial<PhoneInputCountryAccessors<PhoneCountry>> & {\n /** Country list backing the prefix selector. Defaults to `defaultCountries`. */\n countries?: Array<PhoneCountry>\n /** Fires with the full selected country object, so callers can persist whichever fields they need. */\n onCountryChange?: (country: PhoneCountry) => void\n }\n\n/** Custom mode: bring your own country shape. `countries` and all accessors are required. */\nexport type PhoneInputCustomProps<T extends object> = PhoneInputBaseProps &\n PhoneInputCountryAccessors<T> & {\n /** Backend-driven / custom country list. */\n countries: Array<T>\n /** Fires with the full selected country object, so callers can persist whichever fields they need. */\n onCountryChange?: (country: T) => void\n }\n\nexport type PhoneInputProps<T extends object = PhoneCountry> = PhoneInputDefaultProps | PhoneInputCustomProps<T>\n\n/** Both prop modes viewed uniformly in terms of `T` — used only inside the implementation. */\ntype ResolvedPhoneInputProps<T extends object> = PhoneInputBaseProps &\n Partial<PhoneInputCountryAccessors<T>> & {\n countries?: Array<T>\n onCountryChange?: (country: T) => void\n }\n\nconst defaultAccessors: PhoneInputCountryAccessors<PhoneCountry> = {\n getCountryValue: (country) => country.isoCode,\n getCountryDialCode: (country) => country.dialCode,\n getCountryFlag: (country) => country.flag,\n getCountryName: (country) => country.name,\n}\n\n// Overloads give callers clean inference: the default mode needs no accessors, while the custom mode\n// infers `T` from `countries` and type-checks every accessor. The implementation signature below is\n// broader (accessors optional) and is not visible to callers.\nexport function PhoneInput(props: PhoneInputDefaultProps): React.ReactElement\nexport function PhoneInput<T extends object>(props: PhoneInputCustomProps<T>): React.ReactElement\nexport function PhoneInput<T extends object>(props: ResolvedPhoneInputProps<T>): React.ReactElement {\n const {\n id,\n name,\n className,\n prefixClassName,\n numberClassName,\n disabled = false,\n error = false,\n countries,\n country,\n onCountryChange,\n number,\n onNumberChange,\n numberInputProps,\n placeholder,\n countryAriaLabel = 'Select country',\n searchPlaceholder = 'Search...',\n emptyMessage = 'No results found.',\n getCountryValue,\n getCountryDialCode,\n getCountryFlag,\n getCountryName,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n ...rest\n } = props\n\n // The overloads guarantee a custom `T` always brings its own `countries` + accessors, so this\n // `PhoneCountry` fallback is only ever reached when `T` is `PhoneCountry` — making the cast safe.\n const fallback = { countries: defaultCountries, ...defaultAccessors } as unknown as {\n countries: Array<T>\n } & PhoneInputCountryAccessors<T>\n\n const options = countries ?? fallback.countries\n const resolveValue = getCountryValue ?? fallback.getCountryValue\n const resolveDialCode = getCountryDialCode ?? fallback.getCountryDialCode\n const resolveFlag = getCountryFlag ?? fallback.getCountryFlag\n const resolveName = getCountryName ?? fallback.getCountryName\n\n const [open, setOpen] = React.useState(false)\n const [search, setSearch] = React.useState('')\n\n const hasError = Boolean(error)\n const prefixDisabled = disabled || options.length <= 1\n\n const selectedCountry = React.useMemo(\n () => options.find((option) => resolveValue(option) === country),\n [options, country, resolveValue],\n )\n\n const filteredOptions = React.useMemo(() => {\n const normalized = search.toLowerCase().trim()\n if (!normalized) return options\n return options.filter(\n (option) =>\n resolveName(option).toLowerCase().includes(normalized) ||\n resolveDialCode(option).toLowerCase().includes(normalized),\n )\n }, [options, search, resolveName, resolveDialCode])\n\n const handleOpenChange = (next: boolean) => {\n setOpen(next)\n if (!next) setSearch('')\n }\n\n const handleSelect = (option: T) => {\n onCountryChange?.(option)\n handleOpenChange(false)\n }\n\n return (\n <div className={cn('flex w-full flex-col gap-1', className)} {...rest}>\n <div\n className={cn(\n 'flex h-12 w-full items-stretch overflow-hidden rounded-lg border border-neutral-200 bg-white transition-colors has-[input:focus]:border-neutral-950',\n disabled && 'bg-neutral-50',\n hasError && 'border-error-400 has-[input:focus]:border-error-700',\n )}\n >\n <PopoverRoot open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n id={id ? `${id}-country` : undefined}\n disabled={prefixDisabled}\n aria-label={selectedCountry ? resolveName(selectedCountry) : countryAriaLabel}\n className={cn(\n 'flex w-28 shrink-0 items-center gap-1.5 border-r border-neutral-200 px-3 text-base text-neutral-950 outline-none transition-colors',\n !prefixDisabled && 'cursor-pointer hover:bg-neutral-50',\n prefixDisabled && 'cursor-not-allowed',\n disabled && 'opacity-50',\n prefixClassName,\n )}\n >\n {selectedCountry ? (\n <>\n <span className=\"text-lg leading-none\">{resolveFlag(selectedCountry)}</span>\n <span className=\"tabular-nums\">{resolveDialCode(selectedCountry)}</span>\n </>\n ) : (\n <Globe className=\"h-5 w-5 text-neutral-300\" aria-hidden />\n )}\n {!prefixDisabled && <CaretDown className=\"ml-auto h-4 w-4 shrink-0 opacity-50\" />}\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-72 overflow-hidden p-0\">\n <Command shouldFilter={false}>\n <CommandInput placeholder={searchPlaceholder} value={search} onValueChange={setSearch} />\n <CommandList className=\"px-2.5 pb-2\">\n {filteredOptions.length === 0 ? (\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n ) : (\n filteredOptions.map((option) => {\n const value = resolveValue(option)\n const isSelected = value === country\n return (\n <CommandItem\n key={value}\n value={value}\n onSelect={() => handleSelect(option)}\n className=\"gap-2 rounded-lg px-3\"\n >\n <span className=\"text-lg leading-none\">{resolveFlag(option)}</span>\n <span className=\"shrink-0 text-neutral-500\">{resolveDialCode(option)}</span>\n <span className=\"truncate\">{resolveName(option)}</span>\n {isSelected && (\n <Check\n data-testid=\"selected-check\"\n weight=\"bold\"\n className=\"ml-auto h-4 w-4 shrink-0 text-neutral-950\"\n />\n )}\n </CommandItem>\n )\n })\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </PopoverRoot>\n\n <input\n id={id}\n name={name}\n type=\"tel\"\n inputMode=\"numeric\"\n disabled={disabled}\n value={number ?? ''}\n onChange={(event) => onNumberChange?.(event.target.value.replace(/\\D/g, ''))}\n placeholder={placeholder}\n aria-invalid={ariaInvalid ?? (hasError || undefined)}\n aria-describedby={ariaDescribedBy}\n className={cn(\n 'min-w-0 flex-1 bg-transparent px-3 text-base text-neutral-950 outline-none placeholder:text-neutral-300 disabled:cursor-not-allowed disabled:opacity-50',\n numberClassName,\n )}\n {...numberInputProps}\n />\n\n {hasError && (\n <div className=\"flex items-center pr-3\">\n <WarningCircle data-testid=\"exclaim-icon\" className=\"text-error-500\" size={18} />\n </div>\n )}\n </div>\n {typeof error === 'string' && <span className=\"text-error-500 text-sm\">{error}</span>}\n </div>\n )\n}\n\nPhoneInput.displayName = 'PhoneInput'\n"],"names":[],"mappings":";;;;;;;;;;;AAqFA,MAAM,gBAAA,GAA6D;AAAA,EACjE,eAAA,EAAiB,CAAC,OAAA,KAAY,OAAA,CAAQ,OAAA;AAAA,EACtC,kBAAA,EAAoB,CAAC,OAAA,KAAY,OAAA,CAAQ,QAAA;AAAA,EACzC,cAAA,EAAgB,CAAC,OAAA,KAAY,OAAA,CAAQ,IAAA;AAAA,EACrC,cAAA,EAAgB,CAAC,OAAA,KAAY,OAAA,CAAQ;AACvC,CAAA;AAOO,SAAS,WAA6B,KAAA,EAAuD;AAClG,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,KAAA,GAAQ,KAAA;AAAA,IACR,SAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAA,GAAmB,gBAAA;AAAA,IACnB,iBAAA,GAAoB,WAAA;AAAA,IACpB,YAAA,GAAe,mBAAA;AAAA,IACf,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA,EAAoB,eAAA;AAAA,IACpB,cAAA,EAAgB,WAAA;AAAA,IAChB,GAAG;AAAA,GACL,GAAI,KAAA;AAIJ,EAAA,MAAM,QAAA,GAAW,EAAE,SAAA,EAAW,gBAAA,EAAkB,GAAG,gBAAA,EAAiB;AAIpE,EAAA,MAAM,OAAA,GAAU,aAAa,QAAA,CAAS,SAAA;AACtC,EAAA,MAAM,YAAA,GAAe,mBAAmB,QAAA,CAAS,eAAA;AACjD,EAAA,MAAM,eAAA,GAAkB,sBAAsB,QAAA,CAAS,kBAAA;AACvD,EAAA,MAAM,WAAA,GAAc,kBAAkB,QAAA,CAAS,cAAA;AAC/C,EAAA,MAAM,WAAA,GAAc,kBAAkB,QAAA,CAAS,cAAA;AAE/C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,KAAA,CAAM,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,KAAA,CAAM,SAAS,EAAE,CAAA;AAE7C,EAAA,MAAM,QAAA,GAAW,QAAQ,KAAK,CAAA;AAC9B,EAAA,MAAM,cAAA,GAAiB,QAAA,IAAY,OAAA,CAAQ,MAAA,IAAU,CAAA;AAErD,EAAA,MAAM,kBAAkB,KAAA,CAAM,OAAA;AAAA,IAC5B,MAAM,QAAQ,IAAA,CAAK,CAAC,WAAW,YAAA,CAAa,MAAM,MAAM,OAAO,CAAA;AAAA,IAC/D,CAAC,OAAA,EAAS,OAAA,EAAS,YAAY;AAAA,GACjC;AAEA,EAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,OAAA,CAAQ,MAAM;AAC1C,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,WAAA,EAAY,CAAE,IAAA,EAAK;AAC7C,IAAA,IAAI,CAAC,YAAY,OAAO,OAAA;AACxB,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MACb,CAAC,MAAA,KACC,WAAA,CAAY,MAAM,CAAA,CAAE,aAAY,CAAE,QAAA,CAAS,UAAU,CAAA,IACrD,gBAAgB,MAAM,CAAA,CAAE,WAAA,EAAY,CAAE,SAAS,UAAU;AAAA,KAC7D;AAAA,EACF,GAAG,CAAC,OAAA,EAAS,MAAA,EAAQ,WAAA,EAAa,eAAe,CAAC,CAAA;AAElD,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAkB;AAC1C,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,IAAI,CAAC,IAAA,EAAM,SAAA,CAAU,EAAE,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KAAc;AAClC,IAAA,eAAA,GAAkB,MAAM,CAAA;AACxB,IAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,8BAA8B,SAAS,CAAA,EAAI,GAAG,IAAA,EAC/D,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,qJAAA;AAAA,UACA,QAAA,IAAY,eAAA;AAAA,UACZ,QAAA,IAAY;AAAA,SACd;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAY,YAAA,EAAc,gBAAA,EACrC,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,IAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,EAAA,EAAI,EAAA,GAAK,CAAA,EAAG,EAAE,CAAA,QAAA,CAAA,GAAa,MAAA;AAAA,gBAC3B,QAAA,EAAU,cAAA;AAAA,gBACV,YAAA,EAAY,eAAA,GAAkB,WAAA,CAAY,eAAe,CAAA,GAAI,gBAAA;AAAA,gBAC7D,SAAA,EAAW,EAAA;AAAA,kBACT,oIAAA;AAAA,kBACA,CAAC,cAAA,IAAkB,oCAAA;AAAA,kBACnB,cAAA,IAAkB,oBAAA;AAAA,kBAClB,QAAA,IAAY,YAAA;AAAA,kBACZ;AAAA,iBACF;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,eAAA,mBACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,WAAA,CAAY,eAAe,CAAA,EAAE,CAAA;AAAA,wCACpE,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAgB,QAAA,EAAA,eAAA,CAAgB,eAAe,CAAA,EAAE;AAAA,mBAAA,EACnE,oBAEA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,0BAAA,EAA2B,eAAW,IAAA,EAAC,CAAA;AAAA,kBAEzD,CAAC,cAAA,oBAAkB,GAAA,CAAC,SAAA,EAAA,EAAU,WAAU,qCAAA,EAAsC;AAAA;AAAA;AAAA,aACjF,EACF,CAAA;AAAA,4BACA,GAAA,CAAC,kBAAe,KAAA,EAAM,OAAA,EAAQ,WAAU,0BAAA,EACtC,QAAA,kBAAA,IAAA,CAAC,OAAA,EAAA,EAAQ,YAAA,EAAc,KAAA,EACrB,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,gBAAa,WAAA,EAAa,iBAAA,EAAmB,KAAA,EAAO,MAAA,EAAQ,eAAe,SAAA,EAAW,CAAA;AAAA,8BACvF,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,aAAA,EACpB,0BAAgB,MAAA,KAAW,CAAA,mBAC1B,GAAA,CAAC,YAAA,EAAA,EAAc,QAAA,EAAA,YAAA,EAAa,CAAA,GAE5B,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,KAAW;AAC9B,gBAAA,MAAM,KAAA,GAAQ,aAAa,MAAM,CAAA;AACjC,gBAAA,MAAM,aAAa,KAAA,KAAU,OAAA;AAC7B,gBAAA,uBACE,IAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBAEC,KAAA;AAAA,oBACA,QAAA,EAAU,MAAM,YAAA,CAAa,MAAM,CAAA;AAAA,oBACnC,SAAA,EAAU,uBAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,WAAA,CAAY,MAAM,CAAA,EAAE,CAAA;AAAA,0CAC3D,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,eAAA,CAAgB,MAAM,CAAA,EAAE,CAAA;AAAA,0CACpE,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,WAAA,CAAY,MAAM,CAAA,EAAE,CAAA;AAAA,sBAC/C,UAAA,oBACC,GAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACC,aAAA,EAAY,gBAAA;AAAA,0BACZ,MAAA,EAAO,MAAA;AAAA,0BACP,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,mBAAA;AAAA,kBAbG;AAAA,iBAeP;AAAA,cAEJ,CAAC,CAAA,EAEL;AAAA,aAAA,EACF,CAAA,EACF;AAAA,WAAA,EACF,CAAA;AAAA,0BAEA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,EAAA;AAAA,cACA,IAAA;AAAA,cACA,IAAA,EAAK,KAAA;AAAA,cACL,SAAA,EAAU,SAAA;AAAA,cACV,QAAA;AAAA,cACA,OAAO,MAAA,IAAU,EAAA;AAAA,cACjB,QAAA,EAAU,CAAC,KAAA,KAAU,cAAA,GAAiB,KAAA,CAAM,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA;AAAA,cAC3E,WAAA;AAAA,cACA,cAAA,EAAc,gBAAgB,QAAA,IAAY,MAAA,CAAA;AAAA,cAC1C,kBAAA,EAAkB,eAAA;AAAA,cAClB,SAAA,EAAW,EAAA;AAAA,gBACT,yJAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACC,GAAG;AAAA;AAAA,WACN;AAAA,UAEC,QAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,aAAA,EAAY,cAAA,EAAe,SAAA,EAAU,gBAAA,EAAiB,IAAA,EAAM,IAAI,CAAA,EACjF;AAAA;AAAA;AAAA,KAEJ;AAAA,IACC,OAAO,KAAA,KAAU,QAAA,wBAAa,MAAA,EAAA,EAAK,SAAA,EAAU,0BAA0B,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChF,CAAA;AAEJ;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}
@@ -0,0 +1,16 @@
1
+ export type PhoneCountry = {
2
+ /** English country/territory name. */
3
+ name: string;
4
+ /** E.164 calling code, including the leading "+", e.g. "+34". */
5
+ dialCode: string;
6
+ /** ISO 3166-1 alpha-2 code, e.g. "ES". */
7
+ isoCode: string;
8
+ /** Flag emoji derived from the ISO code. */
9
+ flag: string;
10
+ };
11
+ /**
12
+ * Canonical default country list for `PhoneInput`, ordered alphabetically by name.
13
+ * Consumers can import and spread/filter this to extend or trim it, or replace it
14
+ * entirely via the `countries` prop.
15
+ */
16
+ export declare const defaultCountries: Array<PhoneCountry>;
@@ -0,0 +1,254 @@
1
+ const RAW_COUNTRIES = [
2
+ { name: "Afghanistan", dialCode: "+93", isoCode: "AF" },
3
+ { name: "Åland Islands", dialCode: "+358", isoCode: "AX" },
4
+ { name: "Albania", dialCode: "+355", isoCode: "AL" },
5
+ { name: "Algeria", dialCode: "+213", isoCode: "DZ" },
6
+ { name: "American Samoa", dialCode: "+1", isoCode: "AS" },
7
+ { name: "Andorra", dialCode: "+376", isoCode: "AD" },
8
+ { name: "Angola", dialCode: "+244", isoCode: "AO" },
9
+ { name: "Anguilla", dialCode: "+1", isoCode: "AI" },
10
+ { name: "Antigua and Barbuda", dialCode: "+1", isoCode: "AG" },
11
+ { name: "Argentina", dialCode: "+54", isoCode: "AR" },
12
+ { name: "Armenia", dialCode: "+374", isoCode: "AM" },
13
+ { name: "Aruba", dialCode: "+297", isoCode: "AW" },
14
+ { name: "Australia", dialCode: "+61", isoCode: "AU" },
15
+ { name: "Austria", dialCode: "+43", isoCode: "AT" },
16
+ { name: "Azerbaijan", dialCode: "+994", isoCode: "AZ" },
17
+ { name: "Bahamas", dialCode: "+1", isoCode: "BS" },
18
+ { name: "Bahrain", dialCode: "+973", isoCode: "BH" },
19
+ { name: "Bangladesh", dialCode: "+880", isoCode: "BD" },
20
+ { name: "Barbados", dialCode: "+1", isoCode: "BB" },
21
+ { name: "Belarus", dialCode: "+375", isoCode: "BY" },
22
+ { name: "Belgium", dialCode: "+32", isoCode: "BE" },
23
+ { name: "Belize", dialCode: "+501", isoCode: "BZ" },
24
+ { name: "Benin", dialCode: "+229", isoCode: "BJ" },
25
+ { name: "Bermuda", dialCode: "+1", isoCode: "BM" },
26
+ { name: "Bhutan", dialCode: "+975", isoCode: "BT" },
27
+ { name: "Bolivia", dialCode: "+591", isoCode: "BO" },
28
+ { name: "Bosnia and Herzegovina", dialCode: "+387", isoCode: "BA" },
29
+ { name: "Botswana", dialCode: "+267", isoCode: "BW" },
30
+ { name: "Brazil", dialCode: "+55", isoCode: "BR" },
31
+ { name: "British Indian Ocean Territory", dialCode: "+246", isoCode: "IO" },
32
+ { name: "British Virgin Islands", dialCode: "+1", isoCode: "VG" },
33
+ { name: "Brunei", dialCode: "+673", isoCode: "BN" },
34
+ { name: "Bulgaria", dialCode: "+359", isoCode: "BG" },
35
+ { name: "Burkina Faso", dialCode: "+226", isoCode: "BF" },
36
+ { name: "Burundi", dialCode: "+257", isoCode: "BI" },
37
+ { name: "Cabo Verde", dialCode: "+238", isoCode: "CV" },
38
+ { name: "Cambodia", dialCode: "+855", isoCode: "KH" },
39
+ { name: "Cameroon", dialCode: "+237", isoCode: "CM" },
40
+ { name: "Canada", dialCode: "+1", isoCode: "CA" },
41
+ { name: "Caribbean Netherlands", dialCode: "+599", isoCode: "BQ" },
42
+ { name: "Cayman Islands", dialCode: "+1", isoCode: "KY" },
43
+ { name: "Central African Republic", dialCode: "+236", isoCode: "CF" },
44
+ { name: "Chad", dialCode: "+235", isoCode: "TD" },
45
+ { name: "Chile", dialCode: "+56", isoCode: "CL" },
46
+ { name: "China", dialCode: "+86", isoCode: "CN" },
47
+ { name: "Christmas Island", dialCode: "+61", isoCode: "CX" },
48
+ { name: "Cocos Islands", dialCode: "+61", isoCode: "CC" },
49
+ { name: "Colombia", dialCode: "+57", isoCode: "CO" },
50
+ { name: "Comoros", dialCode: "+269", isoCode: "KM" },
51
+ { name: "Cook Islands", dialCode: "+682", isoCode: "CK" },
52
+ { name: "Costa Rica", dialCode: "+506", isoCode: "CR" },
53
+ { name: "Côte d'Ivoire", dialCode: "+225", isoCode: "CI" },
54
+ { name: "Croatia", dialCode: "+385", isoCode: "HR" },
55
+ { name: "Cuba", dialCode: "+53", isoCode: "CU" },
56
+ { name: "Curaçao", dialCode: "+599", isoCode: "CW" },
57
+ { name: "Cyprus", dialCode: "+357", isoCode: "CY" },
58
+ { name: "Czechia", dialCode: "+420", isoCode: "CZ" },
59
+ { name: "Democratic Republic of the Congo", dialCode: "+243", isoCode: "CD" },
60
+ { name: "Denmark", dialCode: "+45", isoCode: "DK" },
61
+ { name: "Djibouti", dialCode: "+253", isoCode: "DJ" },
62
+ { name: "Dominica", dialCode: "+1", isoCode: "DM" },
63
+ { name: "Dominican Republic", dialCode: "+1", isoCode: "DO" },
64
+ { name: "Ecuador", dialCode: "+593", isoCode: "EC" },
65
+ { name: "Egypt", dialCode: "+20", isoCode: "EG" },
66
+ { name: "El Salvador", dialCode: "+503", isoCode: "SV" },
67
+ { name: "Equatorial Guinea", dialCode: "+240", isoCode: "GQ" },
68
+ { name: "Eritrea", dialCode: "+291", isoCode: "ER" },
69
+ { name: "Estonia", dialCode: "+372", isoCode: "EE" },
70
+ { name: "Eswatini", dialCode: "+268", isoCode: "SZ" },
71
+ { name: "Ethiopia", dialCode: "+251", isoCode: "ET" },
72
+ { name: "Falkland Islands", dialCode: "+500", isoCode: "FK" },
73
+ { name: "Faroe Islands", dialCode: "+298", isoCode: "FO" },
74
+ { name: "Fiji", dialCode: "+679", isoCode: "FJ" },
75
+ { name: "Finland", dialCode: "+358", isoCode: "FI" },
76
+ { name: "France", dialCode: "+33", isoCode: "FR" },
77
+ { name: "French Guiana", dialCode: "+594", isoCode: "GF" },
78
+ { name: "French Polynesia", dialCode: "+689", isoCode: "PF" },
79
+ { name: "Gabon", dialCode: "+241", isoCode: "GA" },
80
+ { name: "Gambia", dialCode: "+220", isoCode: "GM" },
81
+ { name: "Georgia", dialCode: "+995", isoCode: "GE" },
82
+ { name: "Germany", dialCode: "+49", isoCode: "DE" },
83
+ { name: "Ghana", dialCode: "+233", isoCode: "GH" },
84
+ { name: "Gibraltar", dialCode: "+350", isoCode: "GI" },
85
+ { name: "Greece", dialCode: "+30", isoCode: "GR" },
86
+ { name: "Greenland", dialCode: "+299", isoCode: "GL" },
87
+ { name: "Grenada", dialCode: "+1", isoCode: "GD" },
88
+ { name: "Guadeloupe", dialCode: "+590", isoCode: "GP" },
89
+ { name: "Guam", dialCode: "+1", isoCode: "GU" },
90
+ { name: "Guatemala", dialCode: "+502", isoCode: "GT" },
91
+ { name: "Guernsey", dialCode: "+44", isoCode: "GG" },
92
+ { name: "Guinea", dialCode: "+224", isoCode: "GN" },
93
+ { name: "Guinea-Bissau", dialCode: "+245", isoCode: "GW" },
94
+ { name: "Guyana", dialCode: "+592", isoCode: "GY" },
95
+ { name: "Haiti", dialCode: "+509", isoCode: "HT" },
96
+ { name: "Honduras", dialCode: "+504", isoCode: "HN" },
97
+ { name: "Hong Kong", dialCode: "+852", isoCode: "HK" },
98
+ { name: "Hungary", dialCode: "+36", isoCode: "HU" },
99
+ { name: "Iceland", dialCode: "+354", isoCode: "IS" },
100
+ { name: "India", dialCode: "+91", isoCode: "IN" },
101
+ { name: "Indonesia", dialCode: "+62", isoCode: "ID" },
102
+ { name: "Iran", dialCode: "+98", isoCode: "IR" },
103
+ { name: "Iraq", dialCode: "+964", isoCode: "IQ" },
104
+ { name: "Ireland", dialCode: "+353", isoCode: "IE" },
105
+ { name: "Isle of Man", dialCode: "+44", isoCode: "IM" },
106
+ { name: "Israel", dialCode: "+972", isoCode: "IL" },
107
+ { name: "Italy", dialCode: "+39", isoCode: "IT" },
108
+ { name: "Jamaica", dialCode: "+1", isoCode: "JM" },
109
+ { name: "Japan", dialCode: "+81", isoCode: "JP" },
110
+ { name: "Jersey", dialCode: "+44", isoCode: "JE" },
111
+ { name: "Jordan", dialCode: "+962", isoCode: "JO" },
112
+ { name: "Kazakhstan", dialCode: "+7", isoCode: "KZ" },
113
+ { name: "Kenya", dialCode: "+254", isoCode: "KE" },
114
+ { name: "Kiribati", dialCode: "+686", isoCode: "KI" },
115
+ { name: "Kosovo", dialCode: "+383", isoCode: "XK" },
116
+ { name: "Kuwait", dialCode: "+965", isoCode: "KW" },
117
+ { name: "Kyrgyzstan", dialCode: "+996", isoCode: "KG" },
118
+ { name: "Laos", dialCode: "+856", isoCode: "LA" },
119
+ { name: "Latvia", dialCode: "+371", isoCode: "LV" },
120
+ { name: "Lebanon", dialCode: "+961", isoCode: "LB" },
121
+ { name: "Lesotho", dialCode: "+266", isoCode: "LS" },
122
+ { name: "Liberia", dialCode: "+231", isoCode: "LR" },
123
+ { name: "Libya", dialCode: "+218", isoCode: "LY" },
124
+ { name: "Liechtenstein", dialCode: "+423", isoCode: "LI" },
125
+ { name: "Lithuania", dialCode: "+370", isoCode: "LT" },
126
+ { name: "Luxembourg", dialCode: "+352", isoCode: "LU" },
127
+ { name: "Macao", dialCode: "+853", isoCode: "MO" },
128
+ { name: "Madagascar", dialCode: "+261", isoCode: "MG" },
129
+ { name: "Malawi", dialCode: "+265", isoCode: "MW" },
130
+ { name: "Malaysia", dialCode: "+60", isoCode: "MY" },
131
+ { name: "Maldives", dialCode: "+960", isoCode: "MV" },
132
+ { name: "Mali", dialCode: "+223", isoCode: "ML" },
133
+ { name: "Malta", dialCode: "+356", isoCode: "MT" },
134
+ { name: "Marshall Islands", dialCode: "+692", isoCode: "MH" },
135
+ { name: "Martinique", dialCode: "+596", isoCode: "MQ" },
136
+ { name: "Mauritania", dialCode: "+222", isoCode: "MR" },
137
+ { name: "Mauritius", dialCode: "+230", isoCode: "MU" },
138
+ { name: "Mayotte", dialCode: "+262", isoCode: "YT" },
139
+ { name: "Mexico", dialCode: "+52", isoCode: "MX" },
140
+ { name: "Micronesia", dialCode: "+691", isoCode: "FM" },
141
+ { name: "Moldova", dialCode: "+373", isoCode: "MD" },
142
+ { name: "Monaco", dialCode: "+377", isoCode: "MC" },
143
+ { name: "Mongolia", dialCode: "+976", isoCode: "MN" },
144
+ { name: "Montenegro", dialCode: "+382", isoCode: "ME" },
145
+ { name: "Montserrat", dialCode: "+1", isoCode: "MS" },
146
+ { name: "Morocco", dialCode: "+212", isoCode: "MA" },
147
+ { name: "Mozambique", dialCode: "+258", isoCode: "MZ" },
148
+ { name: "Myanmar", dialCode: "+95", isoCode: "MM" },
149
+ { name: "Namibia", dialCode: "+264", isoCode: "NA" },
150
+ { name: "Nauru", dialCode: "+674", isoCode: "NR" },
151
+ { name: "Nepal", dialCode: "+977", isoCode: "NP" },
152
+ { name: "Netherlands", dialCode: "+31", isoCode: "NL" },
153
+ { name: "New Caledonia", dialCode: "+687", isoCode: "NC" },
154
+ { name: "New Zealand", dialCode: "+64", isoCode: "NZ" },
155
+ { name: "Nicaragua", dialCode: "+505", isoCode: "NI" },
156
+ { name: "Niger", dialCode: "+227", isoCode: "NE" },
157
+ { name: "Nigeria", dialCode: "+234", isoCode: "NG" },
158
+ { name: "Niue", dialCode: "+683", isoCode: "NU" },
159
+ { name: "Norfolk Island", dialCode: "+672", isoCode: "NF" },
160
+ { name: "North Korea", dialCode: "+850", isoCode: "KP" },
161
+ { name: "North Macedonia", dialCode: "+389", isoCode: "MK" },
162
+ { name: "Northern Mariana Islands", dialCode: "+1", isoCode: "MP" },
163
+ { name: "Norway", dialCode: "+47", isoCode: "NO" },
164
+ { name: "Oman", dialCode: "+968", isoCode: "OM" },
165
+ { name: "Pakistan", dialCode: "+92", isoCode: "PK" },
166
+ { name: "Palau", dialCode: "+680", isoCode: "PW" },
167
+ { name: "Palestine", dialCode: "+970", isoCode: "PS" },
168
+ { name: "Panama", dialCode: "+507", isoCode: "PA" },
169
+ { name: "Papua New Guinea", dialCode: "+675", isoCode: "PG" },
170
+ { name: "Paraguay", dialCode: "+595", isoCode: "PY" },
171
+ { name: "Peru", dialCode: "+51", isoCode: "PE" },
172
+ { name: "Philippines", dialCode: "+63", isoCode: "PH" },
173
+ { name: "Poland", dialCode: "+48", isoCode: "PL" },
174
+ { name: "Portugal", dialCode: "+351", isoCode: "PT" },
175
+ { name: "Puerto Rico", dialCode: "+1", isoCode: "PR" },
176
+ { name: "Qatar", dialCode: "+974", isoCode: "QA" },
177
+ { name: "Republic of the Congo", dialCode: "+242", isoCode: "CG" },
178
+ { name: "Réunion", dialCode: "+262", isoCode: "RE" },
179
+ { name: "Romania", dialCode: "+40", isoCode: "RO" },
180
+ { name: "Russia", dialCode: "+7", isoCode: "RU" },
181
+ { name: "Rwanda", dialCode: "+250", isoCode: "RW" },
182
+ { name: "Saint Barthélemy", dialCode: "+590", isoCode: "BL" },
183
+ { name: "Saint Helena", dialCode: "+290", isoCode: "SH" },
184
+ { name: "Saint Kitts and Nevis", dialCode: "+1", isoCode: "KN" },
185
+ { name: "Saint Lucia", dialCode: "+1", isoCode: "LC" },
186
+ { name: "Saint Martin", dialCode: "+590", isoCode: "MF" },
187
+ { name: "Saint Pierre and Miquelon", dialCode: "+508", isoCode: "PM" },
188
+ { name: "Saint Vincent and the Grenadines", dialCode: "+1", isoCode: "VC" },
189
+ { name: "Samoa", dialCode: "+685", isoCode: "WS" },
190
+ { name: "San Marino", dialCode: "+378", isoCode: "SM" },
191
+ { name: "São Tomé and Príncipe", dialCode: "+239", isoCode: "ST" },
192
+ { name: "Saudi Arabia", dialCode: "+966", isoCode: "SA" },
193
+ { name: "Senegal", dialCode: "+221", isoCode: "SN" },
194
+ { name: "Serbia", dialCode: "+381", isoCode: "RS" },
195
+ { name: "Seychelles", dialCode: "+248", isoCode: "SC" },
196
+ { name: "Sierra Leone", dialCode: "+232", isoCode: "SL" },
197
+ { name: "Singapore", dialCode: "+65", isoCode: "SG" },
198
+ { name: "Sint Maarten", dialCode: "+1", isoCode: "SX" },
199
+ { name: "Slovakia", dialCode: "+421", isoCode: "SK" },
200
+ { name: "Slovenia", dialCode: "+386", isoCode: "SI" },
201
+ { name: "Solomon Islands", dialCode: "+677", isoCode: "SB" },
202
+ { name: "Somalia", dialCode: "+252", isoCode: "SO" },
203
+ { name: "South Africa", dialCode: "+27", isoCode: "ZA" },
204
+ { name: "South Korea", dialCode: "+82", isoCode: "KR" },
205
+ { name: "South Sudan", dialCode: "+211", isoCode: "SS" },
206
+ { name: "Spain", dialCode: "+34", isoCode: "ES" },
207
+ { name: "Sri Lanka", dialCode: "+94", isoCode: "LK" },
208
+ { name: "Sudan", dialCode: "+249", isoCode: "SD" },
209
+ { name: "Suriname", dialCode: "+597", isoCode: "SR" },
210
+ { name: "Svalbard and Jan Mayen", dialCode: "+47", isoCode: "SJ" },
211
+ { name: "Sweden", dialCode: "+46", isoCode: "SE" },
212
+ { name: "Switzerland", dialCode: "+41", isoCode: "CH" },
213
+ { name: "Syria", dialCode: "+963", isoCode: "SY" },
214
+ { name: "Taiwan", dialCode: "+886", isoCode: "TW" },
215
+ { name: "Tajikistan", dialCode: "+992", isoCode: "TJ" },
216
+ { name: "Tanzania", dialCode: "+255", isoCode: "TZ" },
217
+ { name: "Thailand", dialCode: "+66", isoCode: "TH" },
218
+ { name: "Timor-Leste", dialCode: "+670", isoCode: "TL" },
219
+ { name: "Togo", dialCode: "+228", isoCode: "TG" },
220
+ { name: "Tokelau", dialCode: "+690", isoCode: "TK" },
221
+ { name: "Tonga", dialCode: "+676", isoCode: "TO" },
222
+ { name: "Trinidad and Tobago", dialCode: "+1", isoCode: "TT" },
223
+ { name: "Tunisia", dialCode: "+216", isoCode: "TN" },
224
+ { name: "Turkey", dialCode: "+90", isoCode: "TR" },
225
+ { name: "Turkmenistan", dialCode: "+993", isoCode: "TM" },
226
+ { name: "Turks and Caicos Islands", dialCode: "+1", isoCode: "TC" },
227
+ { name: "Tuvalu", dialCode: "+688", isoCode: "TV" },
228
+ { name: "Uganda", dialCode: "+256", isoCode: "UG" },
229
+ { name: "Ukraine", dialCode: "+380", isoCode: "UA" },
230
+ { name: "United Arab Emirates", dialCode: "+971", isoCode: "AE" },
231
+ { name: "United Kingdom", dialCode: "+44", isoCode: "GB" },
232
+ { name: "United States", dialCode: "+1", isoCode: "US" },
233
+ { name: "United States Virgin Islands", dialCode: "+1", isoCode: "VI" },
234
+ { name: "Uruguay", dialCode: "+598", isoCode: "UY" },
235
+ { name: "Uzbekistan", dialCode: "+998", isoCode: "UZ" },
236
+ { name: "Vanuatu", dialCode: "+678", isoCode: "VU" },
237
+ { name: "Vatican City", dialCode: "+379", isoCode: "VA" },
238
+ { name: "Venezuela", dialCode: "+58", isoCode: "VE" },
239
+ { name: "Vietnam", dialCode: "+84", isoCode: "VN" },
240
+ { name: "Wallis and Futuna", dialCode: "+681", isoCode: "WF" },
241
+ { name: "Western Sahara", dialCode: "+212", isoCode: "EH" },
242
+ { name: "Yemen", dialCode: "+967", isoCode: "YE" },
243
+ { name: "Zambia", dialCode: "+260", isoCode: "ZM" },
244
+ { name: "Zimbabwe", dialCode: "+263", isoCode: "ZW" }
245
+ ];
246
+ const REGIONAL_INDICATOR_OFFSET = 127397;
247
+ const isoCodeToFlagEmoji = (isoCode) => isoCode.toUpperCase().split("").map((char) => String.fromCodePoint(REGIONAL_INDICATOR_OFFSET + (char.codePointAt(0) ?? 0))).join("");
248
+ const defaultCountries = RAW_COUNTRIES.map((country) => ({
249
+ ...country,
250
+ flag: isoCodeToFlagEmoji(country.isoCode)
251
+ })).sort((a, b) => a.name.localeCompare(b.name));
252
+
253
+ export { defaultCountries };
254
+ //# sourceMappingURL=countries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countries.js","sources":["../../../src/components/PhoneInput/countries.ts"],"sourcesContent":["export type PhoneCountry = {\n /** English country/territory name. */\n name: string\n /** E.164 calling code, including the leading \"+\", e.g. \"+34\". */\n dialCode: string\n /** ISO 3166-1 alpha-2 code, e.g. \"ES\". */\n isoCode: string\n /** Flag emoji derived from the ISO code. */\n flag: string\n}\n\ntype RawCountry = Omit<PhoneCountry, 'flag'>\n\nconst RAW_COUNTRIES: Array<RawCountry> = [\n { name: 'Afghanistan', dialCode: '+93', isoCode: 'AF' },\n { name: 'Åland Islands', dialCode: '+358', isoCode: 'AX' },\n { name: 'Albania', dialCode: '+355', isoCode: 'AL' },\n { name: 'Algeria', dialCode: '+213', isoCode: 'DZ' },\n { name: 'American Samoa', dialCode: '+1', isoCode: 'AS' },\n { name: 'Andorra', dialCode: '+376', isoCode: 'AD' },\n { name: 'Angola', dialCode: '+244', isoCode: 'AO' },\n { name: 'Anguilla', dialCode: '+1', isoCode: 'AI' },\n { name: 'Antigua and Barbuda', dialCode: '+1', isoCode: 'AG' },\n { name: 'Argentina', dialCode: '+54', isoCode: 'AR' },\n { name: 'Armenia', dialCode: '+374', isoCode: 'AM' },\n { name: 'Aruba', dialCode: '+297', isoCode: 'AW' },\n { name: 'Australia', dialCode: '+61', isoCode: 'AU' },\n { name: 'Austria', dialCode: '+43', isoCode: 'AT' },\n { name: 'Azerbaijan', dialCode: '+994', isoCode: 'AZ' },\n { name: 'Bahamas', dialCode: '+1', isoCode: 'BS' },\n { name: 'Bahrain', dialCode: '+973', isoCode: 'BH' },\n { name: 'Bangladesh', dialCode: '+880', isoCode: 'BD' },\n { name: 'Barbados', dialCode: '+1', isoCode: 'BB' },\n { name: 'Belarus', dialCode: '+375', isoCode: 'BY' },\n { name: 'Belgium', dialCode: '+32', isoCode: 'BE' },\n { name: 'Belize', dialCode: '+501', isoCode: 'BZ' },\n { name: 'Benin', dialCode: '+229', isoCode: 'BJ' },\n { name: 'Bermuda', dialCode: '+1', isoCode: 'BM' },\n { name: 'Bhutan', dialCode: '+975', isoCode: 'BT' },\n { name: 'Bolivia', dialCode: '+591', isoCode: 'BO' },\n { name: 'Bosnia and Herzegovina', dialCode: '+387', isoCode: 'BA' },\n { name: 'Botswana', dialCode: '+267', isoCode: 'BW' },\n { name: 'Brazil', dialCode: '+55', isoCode: 'BR' },\n { name: 'British Indian Ocean Territory', dialCode: '+246', isoCode: 'IO' },\n { name: 'British Virgin Islands', dialCode: '+1', isoCode: 'VG' },\n { name: 'Brunei', dialCode: '+673', isoCode: 'BN' },\n { name: 'Bulgaria', dialCode: '+359', isoCode: 'BG' },\n { name: 'Burkina Faso', dialCode: '+226', isoCode: 'BF' },\n { name: 'Burundi', dialCode: '+257', isoCode: 'BI' },\n { name: 'Cabo Verde', dialCode: '+238', isoCode: 'CV' },\n { name: 'Cambodia', dialCode: '+855', isoCode: 'KH' },\n { name: 'Cameroon', dialCode: '+237', isoCode: 'CM' },\n { name: 'Canada', dialCode: '+1', isoCode: 'CA' },\n { name: 'Caribbean Netherlands', dialCode: '+599', isoCode: 'BQ' },\n { name: 'Cayman Islands', dialCode: '+1', isoCode: 'KY' },\n { name: 'Central African Republic', dialCode: '+236', isoCode: 'CF' },\n { name: 'Chad', dialCode: '+235', isoCode: 'TD' },\n { name: 'Chile', dialCode: '+56', isoCode: 'CL' },\n { name: 'China', dialCode: '+86', isoCode: 'CN' },\n { name: 'Christmas Island', dialCode: '+61', isoCode: 'CX' },\n { name: 'Cocos Islands', dialCode: '+61', isoCode: 'CC' },\n { name: 'Colombia', dialCode: '+57', isoCode: 'CO' },\n { name: 'Comoros', dialCode: '+269', isoCode: 'KM' },\n { name: 'Cook Islands', dialCode: '+682', isoCode: 'CK' },\n { name: 'Costa Rica', dialCode: '+506', isoCode: 'CR' },\n { name: \"Côte d'Ivoire\", dialCode: '+225', isoCode: 'CI' },\n { name: 'Croatia', dialCode: '+385', isoCode: 'HR' },\n { name: 'Cuba', dialCode: '+53', isoCode: 'CU' },\n { name: 'Curaçao', dialCode: '+599', isoCode: 'CW' },\n { name: 'Cyprus', dialCode: '+357', isoCode: 'CY' },\n { name: 'Czechia', dialCode: '+420', isoCode: 'CZ' },\n { name: 'Democratic Republic of the Congo', dialCode: '+243', isoCode: 'CD' },\n { name: 'Denmark', dialCode: '+45', isoCode: 'DK' },\n { name: 'Djibouti', dialCode: '+253', isoCode: 'DJ' },\n { name: 'Dominica', dialCode: '+1', isoCode: 'DM' },\n { name: 'Dominican Republic', dialCode: '+1', isoCode: 'DO' },\n { name: 'Ecuador', dialCode: '+593', isoCode: 'EC' },\n { name: 'Egypt', dialCode: '+20', isoCode: 'EG' },\n { name: 'El Salvador', dialCode: '+503', isoCode: 'SV' },\n { name: 'Equatorial Guinea', dialCode: '+240', isoCode: 'GQ' },\n { name: 'Eritrea', dialCode: '+291', isoCode: 'ER' },\n { name: 'Estonia', dialCode: '+372', isoCode: 'EE' },\n { name: 'Eswatini', dialCode: '+268', isoCode: 'SZ' },\n { name: 'Ethiopia', dialCode: '+251', isoCode: 'ET' },\n { name: 'Falkland Islands', dialCode: '+500', isoCode: 'FK' },\n { name: 'Faroe Islands', dialCode: '+298', isoCode: 'FO' },\n { name: 'Fiji', dialCode: '+679', isoCode: 'FJ' },\n { name: 'Finland', dialCode: '+358', isoCode: 'FI' },\n { name: 'France', dialCode: '+33', isoCode: 'FR' },\n { name: 'French Guiana', dialCode: '+594', isoCode: 'GF' },\n { name: 'French Polynesia', dialCode: '+689', isoCode: 'PF' },\n { name: 'Gabon', dialCode: '+241', isoCode: 'GA' },\n { name: 'Gambia', dialCode: '+220', isoCode: 'GM' },\n { name: 'Georgia', dialCode: '+995', isoCode: 'GE' },\n { name: 'Germany', dialCode: '+49', isoCode: 'DE' },\n { name: 'Ghana', dialCode: '+233', isoCode: 'GH' },\n { name: 'Gibraltar', dialCode: '+350', isoCode: 'GI' },\n { name: 'Greece', dialCode: '+30', isoCode: 'GR' },\n { name: 'Greenland', dialCode: '+299', isoCode: 'GL' },\n { name: 'Grenada', dialCode: '+1', isoCode: 'GD' },\n { name: 'Guadeloupe', dialCode: '+590', isoCode: 'GP' },\n { name: 'Guam', dialCode: '+1', isoCode: 'GU' },\n { name: 'Guatemala', dialCode: '+502', isoCode: 'GT' },\n { name: 'Guernsey', dialCode: '+44', isoCode: 'GG' },\n { name: 'Guinea', dialCode: '+224', isoCode: 'GN' },\n { name: 'Guinea-Bissau', dialCode: '+245', isoCode: 'GW' },\n { name: 'Guyana', dialCode: '+592', isoCode: 'GY' },\n { name: 'Haiti', dialCode: '+509', isoCode: 'HT' },\n { name: 'Honduras', dialCode: '+504', isoCode: 'HN' },\n { name: 'Hong Kong', dialCode: '+852', isoCode: 'HK' },\n { name: 'Hungary', dialCode: '+36', isoCode: 'HU' },\n { name: 'Iceland', dialCode: '+354', isoCode: 'IS' },\n { name: 'India', dialCode: '+91', isoCode: 'IN' },\n { name: 'Indonesia', dialCode: '+62', isoCode: 'ID' },\n { name: 'Iran', dialCode: '+98', isoCode: 'IR' },\n { name: 'Iraq', dialCode: '+964', isoCode: 'IQ' },\n { name: 'Ireland', dialCode: '+353', isoCode: 'IE' },\n { name: 'Isle of Man', dialCode: '+44', isoCode: 'IM' },\n { name: 'Israel', dialCode: '+972', isoCode: 'IL' },\n { name: 'Italy', dialCode: '+39', isoCode: 'IT' },\n { name: 'Jamaica', dialCode: '+1', isoCode: 'JM' },\n { name: 'Japan', dialCode: '+81', isoCode: 'JP' },\n { name: 'Jersey', dialCode: '+44', isoCode: 'JE' },\n { name: 'Jordan', dialCode: '+962', isoCode: 'JO' },\n { name: 'Kazakhstan', dialCode: '+7', isoCode: 'KZ' },\n { name: 'Kenya', dialCode: '+254', isoCode: 'KE' },\n { name: 'Kiribati', dialCode: '+686', isoCode: 'KI' },\n { name: 'Kosovo', dialCode: '+383', isoCode: 'XK' },\n { name: 'Kuwait', dialCode: '+965', isoCode: 'KW' },\n { name: 'Kyrgyzstan', dialCode: '+996', isoCode: 'KG' },\n { name: 'Laos', dialCode: '+856', isoCode: 'LA' },\n { name: 'Latvia', dialCode: '+371', isoCode: 'LV' },\n { name: 'Lebanon', dialCode: '+961', isoCode: 'LB' },\n { name: 'Lesotho', dialCode: '+266', isoCode: 'LS' },\n { name: 'Liberia', dialCode: '+231', isoCode: 'LR' },\n { name: 'Libya', dialCode: '+218', isoCode: 'LY' },\n { name: 'Liechtenstein', dialCode: '+423', isoCode: 'LI' },\n { name: 'Lithuania', dialCode: '+370', isoCode: 'LT' },\n { name: 'Luxembourg', dialCode: '+352', isoCode: 'LU' },\n { name: 'Macao', dialCode: '+853', isoCode: 'MO' },\n { name: 'Madagascar', dialCode: '+261', isoCode: 'MG' },\n { name: 'Malawi', dialCode: '+265', isoCode: 'MW' },\n { name: 'Malaysia', dialCode: '+60', isoCode: 'MY' },\n { name: 'Maldives', dialCode: '+960', isoCode: 'MV' },\n { name: 'Mali', dialCode: '+223', isoCode: 'ML' },\n { name: 'Malta', dialCode: '+356', isoCode: 'MT' },\n { name: 'Marshall Islands', dialCode: '+692', isoCode: 'MH' },\n { name: 'Martinique', dialCode: '+596', isoCode: 'MQ' },\n { name: 'Mauritania', dialCode: '+222', isoCode: 'MR' },\n { name: 'Mauritius', dialCode: '+230', isoCode: 'MU' },\n { name: 'Mayotte', dialCode: '+262', isoCode: 'YT' },\n { name: 'Mexico', dialCode: '+52', isoCode: 'MX' },\n { name: 'Micronesia', dialCode: '+691', isoCode: 'FM' },\n { name: 'Moldova', dialCode: '+373', isoCode: 'MD' },\n { name: 'Monaco', dialCode: '+377', isoCode: 'MC' },\n { name: 'Mongolia', dialCode: '+976', isoCode: 'MN' },\n { name: 'Montenegro', dialCode: '+382', isoCode: 'ME' },\n { name: 'Montserrat', dialCode: '+1', isoCode: 'MS' },\n { name: 'Morocco', dialCode: '+212', isoCode: 'MA' },\n { name: 'Mozambique', dialCode: '+258', isoCode: 'MZ' },\n { name: 'Myanmar', dialCode: '+95', isoCode: 'MM' },\n { name: 'Namibia', dialCode: '+264', isoCode: 'NA' },\n { name: 'Nauru', dialCode: '+674', isoCode: 'NR' },\n { name: 'Nepal', dialCode: '+977', isoCode: 'NP' },\n { name: 'Netherlands', dialCode: '+31', isoCode: 'NL' },\n { name: 'New Caledonia', dialCode: '+687', isoCode: 'NC' },\n { name: 'New Zealand', dialCode: '+64', isoCode: 'NZ' },\n { name: 'Nicaragua', dialCode: '+505', isoCode: 'NI' },\n { name: 'Niger', dialCode: '+227', isoCode: 'NE' },\n { name: 'Nigeria', dialCode: '+234', isoCode: 'NG' },\n { name: 'Niue', dialCode: '+683', isoCode: 'NU' },\n { name: 'Norfolk Island', dialCode: '+672', isoCode: 'NF' },\n { name: 'North Korea', dialCode: '+850', isoCode: 'KP' },\n { name: 'North Macedonia', dialCode: '+389', isoCode: 'MK' },\n { name: 'Northern Mariana Islands', dialCode: '+1', isoCode: 'MP' },\n { name: 'Norway', dialCode: '+47', isoCode: 'NO' },\n { name: 'Oman', dialCode: '+968', isoCode: 'OM' },\n { name: 'Pakistan', dialCode: '+92', isoCode: 'PK' },\n { name: 'Palau', dialCode: '+680', isoCode: 'PW' },\n { name: 'Palestine', dialCode: '+970', isoCode: 'PS' },\n { name: 'Panama', dialCode: '+507', isoCode: 'PA' },\n { name: 'Papua New Guinea', dialCode: '+675', isoCode: 'PG' },\n { name: 'Paraguay', dialCode: '+595', isoCode: 'PY' },\n { name: 'Peru', dialCode: '+51', isoCode: 'PE' },\n { name: 'Philippines', dialCode: '+63', isoCode: 'PH' },\n { name: 'Poland', dialCode: '+48', isoCode: 'PL' },\n { name: 'Portugal', dialCode: '+351', isoCode: 'PT' },\n { name: 'Puerto Rico', dialCode: '+1', isoCode: 'PR' },\n { name: 'Qatar', dialCode: '+974', isoCode: 'QA' },\n { name: 'Republic of the Congo', dialCode: '+242', isoCode: 'CG' },\n { name: 'Réunion', dialCode: '+262', isoCode: 'RE' },\n { name: 'Romania', dialCode: '+40', isoCode: 'RO' },\n { name: 'Russia', dialCode: '+7', isoCode: 'RU' },\n { name: 'Rwanda', dialCode: '+250', isoCode: 'RW' },\n { name: 'Saint Barthélemy', dialCode: '+590', isoCode: 'BL' },\n { name: 'Saint Helena', dialCode: '+290', isoCode: 'SH' },\n { name: 'Saint Kitts and Nevis', dialCode: '+1', isoCode: 'KN' },\n { name: 'Saint Lucia', dialCode: '+1', isoCode: 'LC' },\n { name: 'Saint Martin', dialCode: '+590', isoCode: 'MF' },\n { name: 'Saint Pierre and Miquelon', dialCode: '+508', isoCode: 'PM' },\n { name: 'Saint Vincent and the Grenadines', dialCode: '+1', isoCode: 'VC' },\n { name: 'Samoa', dialCode: '+685', isoCode: 'WS' },\n { name: 'San Marino', dialCode: '+378', isoCode: 'SM' },\n { name: 'São Tomé and Príncipe', dialCode: '+239', isoCode: 'ST' },\n { name: 'Saudi Arabia', dialCode: '+966', isoCode: 'SA' },\n { name: 'Senegal', dialCode: '+221', isoCode: 'SN' },\n { name: 'Serbia', dialCode: '+381', isoCode: 'RS' },\n { name: 'Seychelles', dialCode: '+248', isoCode: 'SC' },\n { name: 'Sierra Leone', dialCode: '+232', isoCode: 'SL' },\n { name: 'Singapore', dialCode: '+65', isoCode: 'SG' },\n { name: 'Sint Maarten', dialCode: '+1', isoCode: 'SX' },\n { name: 'Slovakia', dialCode: '+421', isoCode: 'SK' },\n { name: 'Slovenia', dialCode: '+386', isoCode: 'SI' },\n { name: 'Solomon Islands', dialCode: '+677', isoCode: 'SB' },\n { name: 'Somalia', dialCode: '+252', isoCode: 'SO' },\n { name: 'South Africa', dialCode: '+27', isoCode: 'ZA' },\n { name: 'South Korea', dialCode: '+82', isoCode: 'KR' },\n { name: 'South Sudan', dialCode: '+211', isoCode: 'SS' },\n { name: 'Spain', dialCode: '+34', isoCode: 'ES' },\n { name: 'Sri Lanka', dialCode: '+94', isoCode: 'LK' },\n { name: 'Sudan', dialCode: '+249', isoCode: 'SD' },\n { name: 'Suriname', dialCode: '+597', isoCode: 'SR' },\n { name: 'Svalbard and Jan Mayen', dialCode: '+47', isoCode: 'SJ' },\n { name: 'Sweden', dialCode: '+46', isoCode: 'SE' },\n { name: 'Switzerland', dialCode: '+41', isoCode: 'CH' },\n { name: 'Syria', dialCode: '+963', isoCode: 'SY' },\n { name: 'Taiwan', dialCode: '+886', isoCode: 'TW' },\n { name: 'Tajikistan', dialCode: '+992', isoCode: 'TJ' },\n { name: 'Tanzania', dialCode: '+255', isoCode: 'TZ' },\n { name: 'Thailand', dialCode: '+66', isoCode: 'TH' },\n { name: 'Timor-Leste', dialCode: '+670', isoCode: 'TL' },\n { name: 'Togo', dialCode: '+228', isoCode: 'TG' },\n { name: 'Tokelau', dialCode: '+690', isoCode: 'TK' },\n { name: 'Tonga', dialCode: '+676', isoCode: 'TO' },\n { name: 'Trinidad and Tobago', dialCode: '+1', isoCode: 'TT' },\n { name: 'Tunisia', dialCode: '+216', isoCode: 'TN' },\n { name: 'Turkey', dialCode: '+90', isoCode: 'TR' },\n { name: 'Turkmenistan', dialCode: '+993', isoCode: 'TM' },\n { name: 'Turks and Caicos Islands', dialCode: '+1', isoCode: 'TC' },\n { name: 'Tuvalu', dialCode: '+688', isoCode: 'TV' },\n { name: 'Uganda', dialCode: '+256', isoCode: 'UG' },\n { name: 'Ukraine', dialCode: '+380', isoCode: 'UA' },\n { name: 'United Arab Emirates', dialCode: '+971', isoCode: 'AE' },\n { name: 'United Kingdom', dialCode: '+44', isoCode: 'GB' },\n { name: 'United States', dialCode: '+1', isoCode: 'US' },\n { name: 'United States Virgin Islands', dialCode: '+1', isoCode: 'VI' },\n { name: 'Uruguay', dialCode: '+598', isoCode: 'UY' },\n { name: 'Uzbekistan', dialCode: '+998', isoCode: 'UZ' },\n { name: 'Vanuatu', dialCode: '+678', isoCode: 'VU' },\n { name: 'Vatican City', dialCode: '+379', isoCode: 'VA' },\n { name: 'Venezuela', dialCode: '+58', isoCode: 'VE' },\n { name: 'Vietnam', dialCode: '+84', isoCode: 'VN' },\n { name: 'Wallis and Futuna', dialCode: '+681', isoCode: 'WF' },\n { name: 'Western Sahara', dialCode: '+212', isoCode: 'EH' },\n { name: 'Yemen', dialCode: '+967', isoCode: 'YE' },\n { name: 'Zambia', dialCode: '+260', isoCode: 'ZM' },\n { name: 'Zimbabwe', dialCode: '+263', isoCode: 'ZW' },\n]\n\nconst REGIONAL_INDICATOR_OFFSET = 127397\n\nconst isoCodeToFlagEmoji = (isoCode: string): string =>\n isoCode\n .toUpperCase()\n .split('')\n .map((char) => String.fromCodePoint(REGIONAL_INDICATOR_OFFSET + (char.codePointAt(0) ?? 0)))\n .join('')\n\n/**\n * Canonical default country list for `PhoneInput`, ordered alphabetically by name.\n * Consumers can import and spread/filter this to extend or trim it, or replace it\n * entirely via the `countries` prop.\n */\nexport const defaultCountries: Array<PhoneCountry> = RAW_COUNTRIES.map((country) => ({\n ...country,\n flag: isoCodeToFlagEmoji(country.isoCode),\n})).sort((a, b) => a.name.localeCompare(b.name))\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './PhoneInput';
2
+ export * from './countries';
@@ -0,0 +1,3 @@
1
+ export { PhoneInput } from './PhoneInput.js';
2
+ export { defaultCountries } from './countries.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +1,6 @@
1
1
  import { TooltipContent } from '../Tooltip';
2
2
  import * as React from 'react';
3
+ export type SidebarSize = 'small' | 'medium' | 'big';
3
4
  type SidebarContext = {
4
5
  state: 'expanded' | 'collapsed';
5
6
  open: boolean;
@@ -8,6 +9,7 @@ type SidebarContext = {
8
9
  setOpenMobile: (open: boolean) => void;
9
10
  isMobile: boolean;
10
11
  toggleSidebar: () => void;
12
+ size: SidebarSize;
11
13
  };
12
14
  declare const SidebarContext: React.Context<SidebarContext | null>;
13
15
  declare function useSidebar(): SidebarContext;
@@ -15,6 +17,7 @@ declare const SidebarProvider: React.ForwardRefExoticComponent<Omit<React.ClassA
15
17
  defaultOpen?: boolean;
16
18
  open?: boolean;
17
19
  onOpenChange?: (open: boolean) => void;
20
+ size?: SidebarSize;
18
21
  }, "ref"> & React.RefAttributes<HTMLDivElement>>;
19
22
  declare const SidebarRoot: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
20
23
  side?: "left" | "right";
@@ -64,11 +67,16 @@ declare const SidebarGroupAction: React.ForwardRefExoticComponent<Omit<React.Cla
64
67
  declare const SidebarGroupContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
65
68
  declare const SidebarMenu: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & React.RefAttributes<HTMLUListElement>>;
66
69
  declare const SidebarMenuItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
70
+ declare const sidebarMenuButtonVariants: (props?: ({
71
+ variant?: "element" | "navigation-item" | null | undefined;
72
+ size?: "big" | "small" | "medium" | null | undefined;
73
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
67
74
  declare const SidebarMenuButton: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
68
75
  asChild?: boolean;
69
76
  isActive?: boolean;
70
77
  tooltip?: string | React.ComponentProps<typeof TooltipContent>;
71
78
  variant?: "navigation-item" | "element";
79
+ size?: SidebarSize;
72
80
  }, "ref"> & React.RefAttributes<HTMLButtonElement>>;
73
81
  declare const SidebarMenuAction: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
74
82
  asChild?: boolean;
@@ -84,4 +92,4 @@ declare const SidebarMenuSubButton: React.ForwardRefExoticComponent<Omit<React.C
84
92
  asChild?: boolean;
85
93
  isActive?: boolean;
86
94
  }, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
87
- export { SidebarRoot, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, };
95
+ export { SidebarRoot, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, sidebarMenuButtonVariants, useSidebar, };
@@ -18,8 +18,12 @@ const SIDEBAR_COOKIE_NAME = "sidebar_state";
18
18
  const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
19
19
  const SIDEBAR_WIDTH = "16rem";
20
20
  const SIDEBAR_WIDTH_MOBILE = "18rem";
21
- const SIDEBAR_WIDTH_ICON = "3rem";
22
21
  const SIDEBAR_KEYBOARD_SHORTCUT = "b";
22
+ const SIDEBAR_WIDTH_ICON = {
23
+ small: "3rem",
24
+ medium: "3.5rem",
25
+ big: "4rem"
26
+ };
23
27
  const SidebarContext = React.createContext(null);
24
28
  function useSidebar() {
25
29
  const context = React.useContext(SidebarContext);
@@ -28,64 +32,79 @@ function useSidebar() {
28
32
  }
29
33
  return context;
30
34
  }
31
- const SidebarProvider = React.forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {
32
- const isMobile = useIsMobile();
33
- const [openMobile, setOpenMobile] = React.useState(false);
34
- const [_open, _setOpen] = React.useState(defaultOpen);
35
- const open = openProp ?? _open;
36
- const setOpen = React.useCallback(
37
- (value) => {
38
- const openState = typeof value === "function" ? value(open) : value;
39
- if (setOpenProp) {
40
- setOpenProp(openState);
41
- } else {
42
- _setOpen(openState);
43
- }
44
- document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
45
- },
46
- [setOpenProp, open]
47
- );
48
- const toggleSidebar = React.useCallback(() => {
49
- isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
50
- }, [isMobile, setOpen, setOpenMobile]);
51
- React.useEffect(() => {
52
- const handleKeyDown = (event) => {
53
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
54
- event.preventDefault();
55
- toggleSidebar();
56
- }
57
- };
58
- window.addEventListener("keydown", handleKeyDown);
59
- return () => window.removeEventListener("keydown", handleKeyDown);
60
- }, [toggleSidebar]);
61
- const state = open ? "expanded" : "collapsed";
62
- const contextValue = React.useMemo(
63
- () => ({
64
- state,
65
- open,
66
- setOpen,
67
- isMobile,
68
- openMobile,
69
- setOpenMobile,
70
- toggleSidebar
71
- }),
72
- [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
73
- );
74
- return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx(
75
- "div",
76
- {
77
- style: {
78
- "--sidebar-width": SIDEBAR_WIDTH,
79
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
80
- ...style
35
+ const SidebarProvider = React.forwardRef(
36
+ ({
37
+ defaultOpen = true,
38
+ open: openProp,
39
+ onOpenChange: setOpenProp,
40
+ size = "small",
41
+ className,
42
+ style,
43
+ children,
44
+ ...props
45
+ }, ref) => {
46
+ const isMobile = useIsMobile();
47
+ const [openMobile, setOpenMobile] = React.useState(false);
48
+ const [_open, _setOpen] = React.useState(defaultOpen);
49
+ const open = openProp ?? _open;
50
+ const setOpen = React.useCallback(
51
+ (value) => {
52
+ const openState = typeof value === "function" ? value(open) : value;
53
+ if (setOpenProp) {
54
+ setOpenProp(openState);
55
+ } else {
56
+ _setOpen(openState);
57
+ }
58
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
81
59
  },
82
- className: cn("group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full", className),
83
- ref,
84
- ...props,
85
- children
86
- }
87
- ) }) });
88
- });
60
+ [setOpenProp, open]
61
+ );
62
+ const toggleSidebar = React.useCallback(() => {
63
+ isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
64
+ }, [isMobile, setOpen, setOpenMobile]);
65
+ React.useEffect(() => {
66
+ const handleKeyDown = (event) => {
67
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
68
+ event.preventDefault();
69
+ toggleSidebar();
70
+ }
71
+ };
72
+ window.addEventListener("keydown", handleKeyDown);
73
+ return () => window.removeEventListener("keydown", handleKeyDown);
74
+ }, [toggleSidebar]);
75
+ const state = open ? "expanded" : "collapsed";
76
+ const contextValue = React.useMemo(
77
+ () => ({
78
+ state,
79
+ open,
80
+ setOpen,
81
+ isMobile,
82
+ openMobile,
83
+ setOpenMobile,
84
+ toggleSidebar,
85
+ size
86
+ }),
87
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, size]
88
+ );
89
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx(
90
+ "div",
91
+ {
92
+ style: {
93
+ "--sidebar-width": SIDEBAR_WIDTH,
94
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON[size],
95
+ ...style
96
+ },
97
+ className: cn(
98
+ "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
99
+ className
100
+ ),
101
+ ref,
102
+ ...props,
103
+ children
104
+ }
105
+ ) }) });
106
+ }
107
+ );
89
108
  SidebarProvider.displayName = "SidebarProvider";
90
109
  const SidebarRoot = React.forwardRef(({ side = "left", variant = "default", className, children, ...props }, ref) => {
91
110
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
@@ -95,7 +114,7 @@ const SidebarRoot = React.forwardRef(({ side = "left", variant = "default", clas
95
114
  {
96
115
  "data-sidebar": "sidebar",
97
116
  "data-mobile": "true",
98
- className: "bg-sidebar text-sidebar-foreground w-[var(--sidebar-width)] p-0 [&>button]:hidden",
117
+ className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
99
118
  style: {
100
119
  "--sidebar-width": SIDEBAR_WIDTH_MOBILE
101
120
  },
@@ -123,8 +142,8 @@ const SidebarRoot = React.forwardRef(({ side = "left", variant = "default", clas
123
142
  "div",
124
143
  {
125
144
  className: cn(
126
- "relative w-[var(--sidebar-width)] bg-transparent transition-[width] duration-200 ease-linear",
127
- variant === "default" && "group-data-[state=collapsed]:w-[var(--sidebar-width-icon)]",
145
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
146
+ variant === "default" && "group-data-[state=collapsed]:w-(--sidebar-width-icon)",
128
147
  variant === "hidden" && "group-data-[state=collapsed]:w-0",
129
148
  "group-data-[side=right]:rotate-180"
130
149
  )
@@ -134,15 +153,15 @@ const SidebarRoot = React.forwardRef(({ side = "left", variant = "default", clas
134
153
  "div",
135
154
  {
136
155
  className: cn(
137
- "fixed inset-y-0 z-10 hidden h-svh w-[var(--sidebar-width)] transition-[left,right,width] duration-200 ease-linear md:flex",
156
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
138
157
  side === "left" ? [
139
158
  "left-0",
140
- variant === "default" && "group-data-[state=collapsed]:w-[var(--sidebar-width-icon)]",
141
- variant === "hidden" && "group-data-[state=collapsed]:left-[calc(var(--sidebar-width)*-1)]"
159
+ variant === "default" && "group-data-[state=collapsed]:w-(--sidebar-width-icon)",
160
+ variant === "hidden" && "group-data-[state=collapsed]:-left-(--sidebar-width)"
142
161
  ] : [
143
162
  "right-0",
144
- variant === "default" && "group-data-[state=collapsed]:w-[var(--sidebar-width-icon)]",
145
- variant === "hidden" && "group-data-[state=collapsed]:right-[calc(var(--sidebar-width)*-1)]"
163
+ variant === "default" && "group-data-[state=collapsed]:w-(--sidebar-width-icon)",
164
+ variant === "hidden" && "group-data-[state=collapsed]:-right-(--sidebar-width)"
146
165
  ],
147
166
  "group-data-[side=left]:border-r group-data-[side=right]:border-l",
148
167
  className
@@ -191,8 +210,8 @@ const SidebarRail = React.forwardRef(
191
210
  onClick: toggleSidebar,
192
211
  title: "Toggle Sidebar",
193
212
  className: cn(
194
- "hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex",
195
- "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
213
+ "hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 sm:flex",
214
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
196
215
  "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
197
216
  "group-data-[variant=offcanvas]:hover:bg-sidebar group-data-[variant=offcanvas]:translate-x-0 group-data-[variant=offcanvas]:after:left-full",
198
217
  "[[data-side=left][data-variant=offcanvas]_&]:-right-2",
@@ -336,47 +355,56 @@ const SidebarMenu = React.forwardRef(({ className, ...props }, ref) => /* @__PUR
336
355
  SidebarMenu.displayName = "SidebarMenu";
337
356
  const SidebarMenuItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, "data-sidebar": "menu-item", className: cn("group/menu-item relative", className), ...props }));
338
357
  SidebarMenuItem.displayName = "SidebarMenuItem";
339
- const SidebarMenuButton = React.forwardRef(({ asChild = false, isActive = false, tooltip, className, children, variant = "navigation-item", ...props }, ref) => {
340
- const Comp = asChild ? Slot : "button";
341
- const { isMobile, state } = useSidebar();
342
- const sidebarMenuButtonVariants = cva(
343
- "peer/menu-button flex w-full text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=expanded]:hover:bg-sidebar-accent data-[state=expanded]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
344
- {
345
- variants: {
346
- variant: {
347
- "navigation-item": "h-8",
348
- element: "group-data-[state=collapsed]:!p-0"
349
- }
358
+ const sidebarMenuButtonVariants = cva(
359
+ "peer/menu-button flex w-full text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground items-center overflow-hidden rounded-md text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=expanded]:hover:bg-sidebar-accent data-[state=expanded]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:shrink-0",
360
+ {
361
+ variants: {
362
+ variant: {
363
+ "navigation-item": "",
364
+ element: "group-data-[state=collapsed]:!p-0"
350
365
  },
351
- defaultVariants: {
352
- variant: "navigation-item"
366
+ size: {
367
+ small: "h-8 gap-2 p-2 [&>svg]:size-4",
368
+ medium: "h-10 gap-3 p-2.5 [&>svg]:size-5",
369
+ big: "h-12 gap-4 p-3 [&>svg]:size-6"
353
370
  }
371
+ },
372
+ defaultVariants: {
373
+ variant: "navigation-item",
374
+ size: "small"
354
375
  }
355
- );
356
- const button = /* @__PURE__ */ jsx(
357
- Comp,
358
- {
359
- ref,
360
- "data-sidebar": "menu-button",
361
- "data-active": isActive,
362
- className: cn(sidebarMenuButtonVariants({ variant }), className),
363
- ...props,
364
- children
365
- }
366
- );
367
- if (!tooltip) {
368
- return button;
369
376
  }
370
- if (typeof tooltip === "string") {
371
- tooltip = {
372
- children: tooltip
373
- };
377
+ );
378
+ const SidebarMenuButton = React.forwardRef(
379
+ ({ asChild = false, isActive = false, tooltip, className, children, variant = "navigation-item", size, ...props }, ref) => {
380
+ const Comp = asChild ? Slot : "button";
381
+ const { isMobile, state, size: contextSize } = useSidebar();
382
+ const resolvedSize = size ?? contextSize;
383
+ const button = /* @__PURE__ */ jsx(
384
+ Comp,
385
+ {
386
+ ref,
387
+ "data-sidebar": "menu-button",
388
+ "data-active": isActive,
389
+ className: cn(sidebarMenuButtonVariants({ variant, size: resolvedSize }), className),
390
+ ...props,
391
+ children
392
+ }
393
+ );
394
+ if (!tooltip) {
395
+ return button;
396
+ }
397
+ if (typeof tooltip === "string") {
398
+ tooltip = {
399
+ children: tooltip
400
+ };
401
+ }
402
+ return /* @__PURE__ */ jsxs(TooltipRoot, { children: [
403
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: button }),
404
+ /* @__PURE__ */ jsx(TooltipContent, { side: "right", align: "center", hidden: state !== "collapsed" || isMobile, ...tooltip })
405
+ ] });
374
406
  }
375
- return /* @__PURE__ */ jsxs(TooltipRoot, { children: [
376
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: button }),
377
- /* @__PURE__ */ jsx(TooltipContent, { side: "right", align: "center", hidden: state !== "collapsed" || isMobile, ...tooltip })
378
- ] });
379
- });
407
+ );
380
408
  SidebarMenuButton.displayName = "SidebarMenuButton";
381
409
  const SidebarMenuAction = React.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
382
410
  const Comp = asChild ? Slot : "button";
@@ -431,7 +459,7 @@ const SidebarMenuSkeleton = React.forwardRef(({ className, showIcon = false, ...
431
459
  /* @__PURE__ */ jsx(
432
460
  Skeleton,
433
461
  {
434
- className: "h-4 max-w-[var(--skeleton-width)] flex-1",
462
+ className: "h-4 max-w-(--skeleton-width) flex-1",
435
463
  "data-sidebar": "menu-skeleton-text",
436
464
  style: {
437
465
  "--skeleton-width": width
@@ -482,5 +510,5 @@ const SidebarMenuSubButton = React.forwardRef(({ asChild = false, isActive, clas
482
510
  });
483
511
  SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
484
512
 
485
- export { SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarRoot, SidebarSeparator, SidebarTrigger, useSidebar };
513
+ export { SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarRoot, SidebarSeparator, SidebarTrigger, sidebarMenuButtonVariants, useSidebar };
486
514
  //# sourceMappingURL=Sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["'use client'\n\nimport { SidebarSimple as SidebarIcon } from '@phosphor-icons/react/dist/ssr/SidebarSimple'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { useIsMobile } from '../../lib/useMobile'\nimport { Button } from '../Button'\nimport { Input } from '../Input'\nimport { Separator } from '../Separator'\nimport { SheetContent, SheetDescription, SheetHeader, SheetRoot, SheetTitle } from '../Sheet'\nimport { Skeleton } from '../Skeleton'\nimport { TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger } from '../Tooltip'\nimport { Typography } from '../Typography'\n\nimport { cn } from '@/lib/utils'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open],\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn('group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n})\nSidebarProvider.displayName = 'SidebarProvider'\n\nconst SidebarRoot = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'default' | 'hidden'\n }\n>(({ side = 'left', variant = 'default', className, children, ...props }, ref) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (isMobile) {\n return (\n <SheetRoot open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-[var(--sidebar-width)] p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </SheetRoot>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer text-sidebar-foreground hidden shadow-md md:block\"\n data-state={state}\n data-side={side}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'relative w-[var(--sidebar-width)] bg-transparent transition-[width] duration-200 ease-linear',\n variant === 'default' && 'group-data-[state=collapsed]:w-[var(--sidebar-width-icon)]',\n variant === 'hidden' && 'group-data-[state=collapsed]:w-0',\n 'group-data-[side=right]:rotate-180',\n )}\n />\n <div\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-[var(--sidebar-width)] transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? [\n 'left-0',\n variant === 'default' && 'group-data-[state=collapsed]:w-[var(--sidebar-width-icon)]',\n variant === 'hidden' && 'group-data-[state=collapsed]:left-[calc(var(--sidebar-width)*-1)]',\n ]\n : [\n 'right-0',\n variant === 'default' && 'group-data-[state=collapsed]:w-[var(--sidebar-width-icon)]',\n variant === 'hidden' && 'group-data-[state=collapsed]:right-[calc(var(--sidebar-width)*-1)]',\n ],\n 'group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div data-sidebar=\"sidebar\" className=\"bg-sidebar flex h-full w-full flex-col\">\n {children}\n </div>\n </div>\n </div>\n )\n})\nSidebarRoot.displayName = 'SidebarRoot'\n\nconst SidebarTrigger = React.forwardRef<React.ComponentRef<typeof Button>, React.ComponentProps<typeof Button>>(\n ({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"text\"\n className={cn('text-primary-foreground h-8 w-8 p-1', className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n StartIcon={SidebarIcon}\n >\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n },\n)\nSidebarTrigger.displayName = 'SidebarTrigger'\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n '[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[variant=offcanvas]:hover:bg-sidebar group-data-[variant=offcanvas]:translate-x-0 group-data-[variant=offcanvas]:after:left-full',\n '[[data-side=left][data-variant=offcanvas]_&]:-right-2',\n '[[data-side=right][data-variant=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n )\n },\n)\nSidebarRail.displayName = 'SidebarRail'\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2',\n className,\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = 'SidebarInset'\n\nconst SidebarInput = React.forwardRef<React.ComponentRef<typeof Input>, React.ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'bg-background focus-visible:ring-sidebar-ring h-8 w-full shadow-none focus-visible:ring-2',\n className,\n )}\n {...props}\n />\n )\n },\n)\nSidebarInput.displayName = 'SidebarInput'\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n})\nSidebarHeader.displayName = 'SidebarHeader'\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n})\nSidebarFooter.displayName = 'SidebarFooter'\n\nconst SidebarSeparator = React.forwardRef<React.ComponentRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\n ({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n },\n)\nSidebarSeparator.displayName = 'SidebarSeparator'\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto',\n 'group-data-[variant=default]:group-data-[state=collapsed]:overflow-hidden',\n className,\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = 'SidebarContent'\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = 'SidebarGroup'\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'> & { asChild?: boolean }>(\n ({ className, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 transition-[margin,opacity] duration-200 ease-linear outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[state=collapsed]:group-data-[variant=hidden]:hidden',\n 'group-data-[state=collapsed]:group-data-[variant=default]:-mt-8 group-data-[state=collapsed]:group-data-[variant=default]:opacity-0',\n className,\n )}\n {...props}\n >\n {typeof children === 'string' ? (\n <Typography variant=\"label-md\" color=\"secondary\">\n {children}\n </Typography>\n ) : (\n children\n )}\n </Comp>\n )\n },\n)\nSidebarGroupLabel.displayName = 'SidebarGroupLabel'\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[state=collapsed]:hidden',\n className,\n )}\n {...props}\n />\n )\n },\n)\nSidebarGroupAction.displayName = 'SidebarGroupAction'\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />\n ),\n)\nSidebarGroupContent.displayName = 'SidebarGroupContent'\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul ref={ref} data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />\n))\nSidebarMenu.displayName = 'SidebarMenu'\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ className, ...props }, ref) => (\n <li ref={ref} data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />\n))\nSidebarMenuItem.displayName = 'SidebarMenuItem'\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n variant?: 'navigation-item' | 'element'\n }\n>(({ asChild = false, isActive = false, tooltip, className, children, variant = 'navigation-item', ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=expanded]:hover:bg-sidebar-accent data-[state=expanded]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n 'navigation-item': 'h-8',\n element: 'group-data-[state=collapsed]:!p-0',\n },\n },\n defaultVariants: {\n variant: 'navigation-item',\n },\n },\n )\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant }), className)}\n {...props}\n >\n {children}\n </Comp>\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <TooltipRoot>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </TooltipRoot>\n )\n})\nSidebarMenuButton.displayName = 'SidebarMenuButton'\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[state=collapsed]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=expanded]:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = 'SidebarMenuAction'\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute top-1.5 right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'group-data-[state=collapsed]:group-data-[variant=hidden]:hidden',\n 'group-data-[state=collapsed]:group-data-[variant=default]:opacity-0',\n className,\n )}\n {...props}\n />\n ),\n)\nSidebarMenuBadge.displayName = 'SidebarMenuBadge'\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor((window.crypto.getRandomValues(new Uint32Array(1))[0] % 40) + 50)}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-[var(--skeleton-width)] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton'\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[state=collapsed]:hidden',\n className,\n )}\n {...props}\n />\n ),\n)\nSidebarMenuSub.displayName = 'SidebarMenuSub'\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ ...props }, ref) => (\n <li ref={ref} {...props} />\n))\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem'\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean\n isActive?: boolean\n }\n>(({ asChild = false, isActive, className, children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[state=collapsed]:hidden',\n className,\n )}\n {...props}\n >\n {typeof children === 'string' ? <Typography variant=\"body-md\">{children}</Typography> : children}\n </Comp>\n )\n})\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton'\n\nexport {\n SidebarRoot,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAkBA;AACA;AACA;AACA;AACA;AACA;AAYA;AAEA;AACE;AACA;AACE;AAAmE;AAGrE;AACF;AAEA;AAQE;AACA;AAIA;AACA;AACA;AAAsB;AAElB;AACA;AACE;AAAqB;AAErB;AAAkB;AAIpB;AAAgG;AAClG;AACkB;AAIpB;AACE;AAAmE;AAIrE;AACE;AACE;AACE;AACA;AAAc;AAChB;AAGF;AACA;AAAgE;AAKlE;AAEA;AAA2B;AAClB;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AACyE;AAG3E;AAGM;AAAC;AAAA;AAEG;AACqB;AACK;AACrB;AACL;AAE0G;AAC5G;AACI;AAEH;AAAA;AAKX;AACA;AAEA;AAOE;AAEA;AACE;AAEI;AAAC;AAAA;AACc;AACD;AACF;AAER;AACqB;AACrB;AAEF;AAEA;AACE;AAAmB;AAC2B;AAChD;AACuD;AAAA;AAAA;AAE3D;AAIJ;AACE;AAAC;AAAA;AACC;AACU;AACE;AACD;AACG;AAGd;AAAA;AAAC;AAAA;AACY;AACT;AACyB;AACD;AACxB;AACF;AAAA;AACF;AACA;AAAC;AAAA;AACY;AACT;AAEI;AACE;AACyB;AACD;AAE1B;AACE;AACyB;AACD;AAC1B;AACJ;AACA;AACF;AACI;AAIJ;AAAA;AACF;AAAA;AAAA;AAGN;AACA;AAEA;AAA6B;AAEzB;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACL;AACsD;AAE5D;AACA;AAAc;AAChB;AACI;AACO;AAE6B;AAAA;AAC1C;AAGN;AACA;AAEA;AAA0B;AAEtB;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACD;AACD;AACH;AACK;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AACI;AAAA;AACN;AAGN;AACA;AAEA;AACE;AACE;AAAC;AAAA;AACC;AACW;AACT;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAA2B;AAEvB;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACF;AACI;AAAA;AACN;AAGN;AACA;AAEA;AACE;AACF;AACA;AAEA;AACE;AACF;AACA;AAEA;AAA+B;AAE3B;AACE;AAAC;AAAA;AACC;AACa;AAC2C;AACpD;AAAA;AACN;AAGN;AACA;AAEA;AACE;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AACE;AACE;AAAC;AAAA;AACC;AACa;AACuD;AAChE;AAAA;AAGV;AACA;AAEA;AAAgC;AAE5B;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACA;AACF;AACI;AAOF;AAAA;AAEJ;AAGN;AACA;AAEA;AAAiC;AAE7B;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACA;AACF;AACI;AAAA;AACN;AAGN;AACA;AAEA;AAAkC;AAIlC;AACA;AAEA;AAGA;AAEA;AAGA;AAEA;AASE;AACA;AAEA;AAAkC;AAChC;AACA;AACY;AACC;AACY;AACV;AACX;AACF;AACiB;AACN;AACX;AACF;AAGF;AACE;AAAC;AAAA;AACC;AACa;AACA;AACkD;AAC3D;AAEH;AAAA;AAIL;AACE;AAAO;AAGT;AACE;AAAU;AACE;AACZ;AAGF;AAEI;AAAgC;AACoE;AAG1G;AACA;AAEA;AAOE;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AAEE;AACF;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAA+B;AAE3B;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAOE;AACE;AAAsF;AAGxF;AACE;AAAC;AAAA;AACC;AACa;AACyD;AAClE;AAEH;AAAsF;AACvF;AAAC;AAAA;AACW;AACG;AAEX;AACsB;AACtB;AAAA;AAEJ;AAAA;AAAA;AAGN;AACA;AAEA;AAA6B;AAEzB;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAGA;AAEA;AAOE;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACA;AACF;AACT;AACA;AACA;AACA;AACF;AACI;AAEoF;AAAA;AAG9F;AACA;;"}
1
+ {"version":3,"file":"Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["'use client'\n\nimport { SidebarSimple as SidebarIcon } from '@phosphor-icons/react/dist/ssr/SidebarSimple'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { useIsMobile } from '../../lib/useMobile'\nimport { Button } from '../Button'\nimport { Input } from '../Input'\nimport { Separator } from '../Separator'\nimport { SheetContent, SheetDescription, SheetHeader, SheetRoot, SheetTitle } from '../Sheet'\nimport { Skeleton } from '../Skeleton'\nimport { TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger } from '../Tooltip'\nimport { Typography } from '../Typography'\n\nimport { cn } from '@/lib/utils'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\nexport type SidebarSize = 'small' | 'medium' | 'big'\n\nconst SIDEBAR_WIDTH_ICON: Record<SidebarSize, string> = {\n small: '3rem',\n medium: '3.5rem',\n big: '4rem',\n}\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n size: SidebarSize\n}\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n size?: SidebarSize\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n size = 'small',\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open],\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n size,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, size],\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON[size],\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n },\n)\nSidebarProvider.displayName = 'SidebarProvider'\n\nconst SidebarRoot = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'default' | 'hidden'\n }\n>(({ side = 'left', variant = 'default', className, children, ...props }, ref) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (isMobile) {\n return (\n <SheetRoot open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </SheetRoot>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer text-sidebar-foreground hidden shadow-md md:block\"\n data-state={state}\n data-side={side}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n variant === 'default' && 'group-data-[state=collapsed]:w-(--sidebar-width-icon)',\n variant === 'hidden' && 'group-data-[state=collapsed]:w-0',\n 'group-data-[side=right]:rotate-180',\n )}\n />\n <div\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? [\n 'left-0',\n variant === 'default' && 'group-data-[state=collapsed]:w-(--sidebar-width-icon)',\n variant === 'hidden' && 'group-data-[state=collapsed]:-left-(--sidebar-width)',\n ]\n : [\n 'right-0',\n variant === 'default' && 'group-data-[state=collapsed]:w-(--sidebar-width-icon)',\n variant === 'hidden' && 'group-data-[state=collapsed]:-right-(--sidebar-width)',\n ],\n 'group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div data-sidebar=\"sidebar\" className=\"bg-sidebar flex h-full w-full flex-col\">\n {children}\n </div>\n </div>\n </div>\n )\n})\nSidebarRoot.displayName = 'SidebarRoot'\n\nconst SidebarTrigger = React.forwardRef<React.ComponentRef<typeof Button>, React.ComponentProps<typeof Button>>(\n ({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"text\"\n className={cn('text-primary-foreground h-8 w-8 p-1', className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n StartIcon={SidebarIcon}\n >\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n },\n)\nSidebarTrigger.displayName = 'SidebarTrigger'\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[variant=offcanvas]:hover:bg-sidebar group-data-[variant=offcanvas]:translate-x-0 group-data-[variant=offcanvas]:after:left-full',\n '[[data-side=left][data-variant=offcanvas]_&]:-right-2',\n '[[data-side=right][data-variant=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n )\n },\n)\nSidebarRail.displayName = 'SidebarRail'\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2',\n className,\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = 'SidebarInset'\n\nconst SidebarInput = React.forwardRef<React.ComponentRef<typeof Input>, React.ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'bg-background focus-visible:ring-sidebar-ring h-8 w-full shadow-none focus-visible:ring-2',\n className,\n )}\n {...props}\n />\n )\n },\n)\nSidebarInput.displayName = 'SidebarInput'\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n})\nSidebarHeader.displayName = 'SidebarHeader'\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n})\nSidebarFooter.displayName = 'SidebarFooter'\n\nconst SidebarSeparator = React.forwardRef<React.ComponentRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\n ({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n },\n)\nSidebarSeparator.displayName = 'SidebarSeparator'\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto',\n 'group-data-[variant=default]:group-data-[state=collapsed]:overflow-hidden',\n className,\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = 'SidebarContent'\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = 'SidebarGroup'\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'> & { asChild?: boolean }>(\n ({ className, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 transition-[margin,opacity] duration-200 ease-linear outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[state=collapsed]:group-data-[variant=hidden]:hidden',\n 'group-data-[state=collapsed]:group-data-[variant=default]:-mt-8 group-data-[state=collapsed]:group-data-[variant=default]:opacity-0',\n className,\n )}\n {...props}\n >\n {typeof children === 'string' ? (\n <Typography variant=\"label-md\" color=\"secondary\">\n {children}\n </Typography>\n ) : (\n children\n )}\n </Comp>\n )\n },\n)\nSidebarGroupLabel.displayName = 'SidebarGroupLabel'\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[state=collapsed]:hidden',\n className,\n )}\n {...props}\n />\n )\n },\n)\nSidebarGroupAction.displayName = 'SidebarGroupAction'\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />\n ),\n)\nSidebarGroupContent.displayName = 'SidebarGroupContent'\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul ref={ref} data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />\n))\nSidebarMenu.displayName = 'SidebarMenu'\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ className, ...props }, ref) => (\n <li ref={ref} data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />\n))\nSidebarMenuItem.displayName = 'SidebarMenuItem'\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground items-center overflow-hidden rounded-md text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=expanded]:hover:bg-sidebar-accent data-[state=expanded]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n 'navigation-item': '',\n element: 'group-data-[state=collapsed]:!p-0',\n },\n size: {\n small: 'h-8 gap-2 p-2 [&>svg]:size-4',\n medium: 'h-10 gap-3 p-2.5 [&>svg]:size-5',\n big: 'h-12 gap-4 p-3 [&>svg]:size-6',\n },\n },\n defaultVariants: {\n variant: 'navigation-item',\n size: 'small',\n },\n },\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n variant?: 'navigation-item' | 'element'\n size?: SidebarSize\n }\n>(\n (\n { asChild = false, isActive = false, tooltip, className, children, variant = 'navigation-item', size, ...props },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state, size: contextSize } = useSidebar()\n const resolvedSize = size ?? contextSize\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size: resolvedSize }), className)}\n {...props}\n >\n {children}\n </Comp>\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <TooltipRoot>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </TooltipRoot>\n )\n },\n)\nSidebarMenuButton.displayName = 'SidebarMenuButton'\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[state=collapsed]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=expanded]:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = 'SidebarMenuAction'\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute top-1.5 right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'group-data-[state=collapsed]:group-data-[variant=hidden]:hidden',\n 'group-data-[state=collapsed]:group-data-[variant=default]:opacity-0',\n className,\n )}\n {...props}\n />\n ),\n)\nSidebarMenuBadge.displayName = 'SidebarMenuBadge'\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor((window.crypto.getRandomValues(new Uint32Array(1))[0] % 40) + 50)}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton'\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[state=collapsed]:hidden',\n className,\n )}\n {...props}\n />\n ),\n)\nSidebarMenuSub.displayName = 'SidebarMenuSub'\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ ...props }, ref) => (\n <li ref={ref} {...props} />\n))\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem'\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean\n isActive?: boolean\n }\n>(({ asChild = false, isActive, className, children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[state=collapsed]:hidden',\n className,\n )}\n {...props}\n >\n {typeof children === 'string' ? <Typography variant=\"body-md\">{children}</Typography> : children}\n </Comp>\n )\n})\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton'\n\nexport {\n SidebarRoot,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n sidebarMenuButtonVariants,\n useSidebar,\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAkBA;AACA;AACA;AACA;AACA;AAIA;AAAwD;AAC/C;AACC;AAEV;AAaA;AAEA;AACE;AACA;AACE;AAAmE;AAGrE;AACF;AAEA;AAA8B;AAU1B;AACgB;AACR;AACQ;AACP;AACP;AACA;AACA;AACG;AAIL;AACA;AAIA;AACA;AACA;AAAsB;AAElB;AACA;AACE;AAAqB;AAErB;AAAkB;AAIpB;AAAgG;AAClG;AACkB;AAIpB;AACE;AAAmE;AAIrE;AACE;AACE;AACE;AACA;AAAc;AAChB;AAGF;AACA;AAAgE;AAKlE;AAEA;AAA2B;AAClB;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AAC+E;AAGjF;AAGM;AAAC;AAAA;AAEG;AACqB;AAC4B;AAC5C;AACL;AAES;AACT;AACA;AACF;AACA;AACI;AAEH;AAAA;AAGP;AAGN;AACA;AAEA;AAOE;AAEA;AACE;AAEI;AAAC;AAAA;AACc;AACD;AACF;AAER;AACqB;AACrB;AAEF;AAEA;AACE;AAAmB;AAC2B;AAChD;AACuD;AAAA;AAAA;AAE3D;AAIJ;AACE;AAAC;AAAA;AACC;AACU;AACE;AACD;AACG;AAGd;AAAA;AAAC;AAAA;AACY;AACT;AACyB;AACD;AACxB;AACF;AAAA;AACF;AACA;AAAC;AAAA;AACY;AACT;AAEI;AACE;AACyB;AACD;AAE1B;AACE;AACyB;AACD;AAC1B;AACJ;AACA;AACF;AACI;AAIJ;AAAA;AACF;AAAA;AAAA;AAGN;AACA;AAEA;AAA6B;AAEzB;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACL;AACsD;AAE5D;AACA;AAAc;AAChB;AACI;AACO;AAE6B;AAAA;AAC1C;AAGN;AACA;AAEA;AAA0B;AAEtB;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACD;AACD;AACH;AACK;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AACI;AAAA;AACN;AAGN;AACA;AAEA;AACE;AACE;AAAC;AAAA;AACC;AACW;AACT;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAA2B;AAEvB;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACF;AACI;AAAA;AACN;AAGN;AACA;AAEA;AACE;AACF;AACA;AAEA;AACE;AACF;AACA;AAEA;AAA+B;AAE3B;AACE;AAAC;AAAA;AACC;AACa;AAC2C;AACpD;AAAA;AACN;AAGN;AACA;AAEA;AACE;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AACE;AACE;AAAC;AAAA;AACC;AACa;AACuD;AAChE;AAAA;AAGV;AACA;AAEA;AAAgC;AAE5B;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACA;AACF;AACI;AAOF;AAAA;AAEJ;AAGN;AACA;AAEA;AAAiC;AAE7B;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACA;AACF;AACI;AAAA;AACN;AAGN;AACA;AAEA;AAAkC;AAIlC;AACA;AAEA;AAGA;AAEA;AAGA;AAEA;AAAkC;AAChC;AACA;AACY;AACC;AACY;AACV;AACX;AACM;AACG;AACC;AACH;AACP;AACF;AACiB;AACN;AACH;AACR;AAEJ;AAEA;AAAgC;AAc5B;AACA;AACA;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACA;AACsE;AAC/E;AAEH;AAAA;AAIL;AACE;AAAO;AAGT;AACE;AAAU;AACE;AACZ;AAGF;AAEI;AAAgC;AACoE;AACtG;AAGN;AACA;AAEA;AAOE;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AAEE;AACF;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAA+B;AAE3B;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAOE;AACE;AAAsF;AAGxF;AACE;AAAC;AAAA;AACC;AACa;AACyD;AAClE;AAEH;AAAsF;AACvF;AAAC;AAAA;AACW;AACG;AAEX;AACsB;AACtB;AAAA;AAEJ;AAAA;AAAA;AAGN;AACA;AAEA;AAA6B;AAEzB;AAAC;AAAA;AACC;AACa;AACF;AACT;AACA;AACA;AACF;AACI;AAAA;AAGV;AACA;AAEA;AAGA;AAEA;AAOE;AAEA;AACE;AAAC;AAAA;AACC;AACa;AACA;AACF;AACT;AACA;AACA;AACA;AACF;AACI;AAEoF;AAAA;AAG9F;AACA;;"}
@@ -1,2 +1,2 @@
1
- export { SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarRoot, SidebarSeparator, SidebarTrigger, useSidebar } from './Sidebar.js';
1
+ export { SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarRoot, SidebarSeparator, SidebarTrigger, sidebarMenuButtonVariants, useSidebar } from './Sidebar.js';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export * from './components/LazyDatePicker';
23
23
  export * from './components/Marquee';
24
24
  export * from './components/MultiSelect';
25
25
  export * from './components/Pagination';
26
+ export * from './components/PhoneInput';
26
27
  export * from './components/Popover';
27
28
  export * from './components/Progress';
28
29
  export * from './components/RadioGroup';
package/dist/index.js CHANGED
@@ -27,13 +27,15 @@ export { LazyDatePicker } from './components/LazyDatePicker/LazyDatePicker.js';
27
27
  export { Marquee } from './components/Marquee/Marquee.js';
28
28
  export { MultiSelect } from './components/MultiSelect/MultiSelect.js';
29
29
  export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaginationRoot } from './components/Pagination/Pagination.js';
30
+ export { PhoneInput } from './components/PhoneInput/PhoneInput.js';
31
+ export { defaultCountries } from './components/PhoneInput/countries.js';
30
32
  export { Popover, PopoverAnchor, PopoverContent, PopoverRoot, PopoverTrigger } from './components/Popover/Popover.js';
31
33
  export { Progress } from './components/Progress/Progress.js';
32
34
  export { RadioGroup, RadioGroupItem } from './components/RadioGroup/RadioGroup.js';
33
35
  export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from './components/Select/Select.js';
34
36
  export { Separator } from './components/Separator/Separator.js';
35
37
  export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetRoot, SheetTitle, SheetTrigger } from './components/Sheet/Sheet.js';
36
- export { SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarRoot, SidebarSeparator, SidebarTrigger, useSidebar } from './components/Sidebar/Sidebar.js';
38
+ export { SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarRoot, SidebarSeparator, SidebarTrigger, sidebarMenuButtonVariants, useSidebar } from './components/Sidebar/Sidebar.js';
37
39
  export { Skeleton } from './components/Skeleton/Skeleton.js';
38
40
  export { StarRating } from './components/StarRating/StarRating.js';
39
41
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './components/Table/Table.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "periplo-ui",
3
3
  "description": "IATI UI library",
4
4
  "private": false,
5
- "version": "4.6.3",
5
+ "version": "4.8.0",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
8
  "types": "dist/index.d.ts",
@@ -112,6 +112,10 @@
112
112
  "types": "./dist/components/Pagination/index.d.ts",
113
113
  "import": "./dist/components/Pagination/index.js"
114
114
  },
115
+ "./phone-input": {
116
+ "types": "./dist/components/PhoneInput/index.d.ts",
117
+ "import": "./dist/components/PhoneInput/index.js"
118
+ },
115
119
  "./popover": {
116
120
  "types": "./dist/components/Popover/index.d.ts",
117
121
  "import": "./dist/components/Popover/index.js"