@desource/phone-mask-svelte 1.0.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +21 -0
  3. package/README.md +529 -0
  4. package/dist/index.cjs +1301 -0
  5. package/dist/index.mjs +1284 -0
  6. package/dist/phone-mask-svelte.css +383 -0
  7. package/dist/types/composables/internal/useCopyAction.svelte.d.ts +13 -0
  8. package/dist/types/composables/internal/useCopyAction.svelte.d.ts.map +1 -0
  9. package/dist/types/composables/internal/useCountry.svelte.d.ts +17 -0
  10. package/dist/types/composables/internal/useCountry.svelte.d.ts.map +1 -0
  11. package/dist/types/composables/internal/useCountrySelector.svelte.d.ts +31 -0
  12. package/dist/types/composables/internal/useCountrySelector.svelte.d.ts.map +1 -0
  13. package/dist/types/composables/internal/useFormatter.svelte.d.ts +29 -0
  14. package/dist/types/composables/internal/useFormatter.svelte.d.ts.map +1 -0
  15. package/dist/types/composables/internal/useInputHandlers.svelte.d.ts +18 -0
  16. package/dist/types/composables/internal/useInputHandlers.svelte.d.ts.map +1 -0
  17. package/dist/types/composables/internal/useTheme.svelte.d.ts +9 -0
  18. package/dist/types/composables/internal/useTheme.svelte.d.ts.map +1 -0
  19. package/dist/types/composables/internal/useValidationHint.svelte.d.ts +6 -0
  20. package/dist/types/composables/internal/useValidationHint.svelte.d.ts.map +1 -0
  21. package/dist/types/composables/usePhoneMask.svelte.d.ts +31 -0
  22. package/dist/types/composables/usePhoneMask.svelte.d.ts.map +1 -0
  23. package/dist/types/composables/utility/useClipboard.svelte.d.ts +6 -0
  24. package/dist/types/composables/utility/useClipboard.svelte.d.ts.map +1 -0
  25. package/dist/types/composables/utility/useTimer.svelte.d.ts +8 -0
  26. package/dist/types/composables/utility/useTimer.svelte.d.ts.map +1 -0
  27. package/dist/types/index.d.ts +17 -0
  28. package/dist/types/index.d.ts.map +1 -0
  29. package/dist/types/types.d.ts +84 -0
  30. package/dist/types/types.d.ts.map +1 -0
  31. package/package.json +77 -0
@@ -0,0 +1,84 @@
1
+ import type { MaskFull, CountryKey } from '@desource/phone-mask';
2
+ import type { Snippet } from 'svelte';
3
+ export type Size = 'compact' | 'normal' | 'large';
4
+ export type Theme = 'auto' | 'light' | 'dark';
5
+ export type PhoneNumber = {
6
+ full: string;
7
+ fullFormatted: string;
8
+ digits: string;
9
+ };
10
+ export interface PhoneInputProps {
11
+ value?: string;
12
+ country?: CountryKey;
13
+ detect?: boolean;
14
+ locale?: string;
15
+ size?: Size;
16
+ theme?: Theme;
17
+ disabled?: boolean;
18
+ readonly?: boolean;
19
+ showCopy?: boolean;
20
+ showClear?: boolean;
21
+ withValidity?: boolean;
22
+ searchPlaceholder?: string;
23
+ noResultsText?: string;
24
+ clearButtonLabel?: string;
25
+ dropdownClass?: string;
26
+ disableDefaultStyles?: boolean;
27
+ onchange?: (data: PhoneNumber) => void;
28
+ oncountrychange?: (country: MaskFull) => void;
29
+ onvalidationchange?: (complete: boolean) => void;
30
+ onfocus?: (e: FocusEvent) => void;
31
+ onblur?: (e: FocusEvent) => void;
32
+ oncopy?: (value: string) => void;
33
+ onclear?: () => void;
34
+ flag?: Snippet<[MaskFull]>;
35
+ copysvg?: Snippet<[boolean]>;
36
+ clearsvg?: Snippet<[]>;
37
+ actionsbefore?: Snippet<[]>;
38
+ /** Extra CSS class(es) merged onto the root element */
39
+ class?: string;
40
+ /** Any additional HTML attributes are forwarded to the root element */
41
+ [key: string]: unknown;
42
+ }
43
+ export interface PhoneInputExposed {
44
+ focus: () => void;
45
+ blur: () => void;
46
+ clear: () => void;
47
+ selectCountry: (code?: string | null) => void;
48
+ getFullNumber: () => string;
49
+ getFullFormattedNumber: () => string;
50
+ getDigits: () => string;
51
+ isValid: () => boolean;
52
+ isComplete: () => boolean;
53
+ }
54
+ export interface UsePhoneMaskOptions {
55
+ /** Controlled value getter — digits only, without country code */
56
+ value: () => string;
57
+ /** Called when digits change */
58
+ onChange: (digits: string) => void;
59
+ /** Country ISO 3166-1 alpha-2 code getter */
60
+ country?: () => string | undefined;
61
+ /** Locale for country names getter (defaults to browser language) */
62
+ locale?: () => string | undefined;
63
+ /** Auto-detect country via GeoIP getter */
64
+ detect?: () => boolean | undefined;
65
+ /** Called on every phone number update */
66
+ onPhoneChange?: (data: PhoneNumber) => void;
67
+ /** Called when country changes */
68
+ onCountryChange?: (country: MaskFull) => void;
69
+ }
70
+ export interface UsePhoneMaskReturn {
71
+ /** Bind this to your &lt;input&gt; element via bind:this */
72
+ inputRef: HTMLInputElement | null;
73
+ digits: string;
74
+ full: string;
75
+ fullFormatted: string;
76
+ isComplete: boolean;
77
+ isEmpty: boolean;
78
+ shouldShowWarn: boolean;
79
+ country: MaskFull;
80
+ locale: string;
81
+ setCountry: (countryCode?: string | null) => boolean;
82
+ clear: () => void;
83
+ }
84
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@desource/phone-mask-svelte",
3
+ "version": "1.0.0",
4
+ "description": "🌍 Svelte 5 component and composable for international phone number masking. Powered by @desource/phone-mask with Google libphonenumber sync.",
5
+ "keywords": [
6
+ "svelte",
7
+ "svelte5",
8
+ "phone",
9
+ "mask",
10
+ "input",
11
+ "component",
12
+ "international",
13
+ "libphonenumber",
14
+ "country-code",
15
+ "phone-number",
16
+ "formatting",
17
+ "validation",
18
+ "typescript"
19
+ ],
20
+ "author": "Stefan Popov <stefan@desource-labs.org>",
21
+ "license": "MIT",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/DeSource-Labs/phone-mask.git",
25
+ "directory": "packages/phone-mask-svelte"
26
+ },
27
+ "bugs": {
28
+ "url": "https://github.com/DeSource-Labs/phone-mask/issues"
29
+ },
30
+ "homepage": "https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask-svelte#readme",
31
+ "private": false,
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "type": "module",
36
+ "main": "dist/index.cjs",
37
+ "module": "dist/index.mjs",
38
+ "svelte": "dist/index.mjs",
39
+ "types": "dist/types/index.d.ts",
40
+ "exports": {
41
+ ".": {
42
+ "types": "./dist/types/index.d.ts",
43
+ "svelte": "./dist/index.mjs",
44
+ "import": "./dist/index.mjs",
45
+ "require": "./dist/index.cjs"
46
+ },
47
+ "./assets/lib.css": "./dist/phone-mask-svelte.css"
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "CHANGELOG.md",
52
+ "README.md"
53
+ ],
54
+ "peerDependencies": {
55
+ "svelte": "^5.0.0"
56
+ },
57
+ "dependencies": {
58
+ "@desource/phone-mask": "1.0.0"
59
+ },
60
+ "devDependencies": {
61
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
62
+ "svelte": "^5.53.7",
63
+ "svelte-check": "^4.4.4"
64
+ },
65
+ "scripts": {
66
+ "clean": "rimraf dist tsconfig.build.tsbuildinfo test-results coverage",
67
+ "dev": "vite demo",
68
+ "build": "pnpm clean && pnpm build:internal",
69
+ "build:internal": "pnpm build:lib && pnpm build:types",
70
+ "build:lib": "vite build",
71
+ "build:types": "tsc --project tsconfig.build.json",
72
+ "typecheck": "svelte-check --tsconfig tsconfig.json",
73
+ "test:unit": "vitest run",
74
+ "test:unit:coverage": "vitest run --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage",
75
+ "test:e2e": "playwright test"
76
+ }
77
+ }