@bizapps/ui 1.5.1 → 1.7.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.
package/dist/phone.cjs ADDED
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var libphonenumberJs = require('libphonenumber-js');
4
+
5
+ // src/lib/phone.ts
6
+ function validatePhone(value) {
7
+ if (!value) {
8
+ return { isValid: false };
9
+ }
10
+ if (libphonenumberJs.isValidPhoneNumber(value)) {
11
+ return { isValid: true };
12
+ }
13
+ return { isValid: false, problem: libphonenumberJs.validatePhoneNumberLength(value) ?? "INVALID" };
14
+ }
15
+
16
+ exports.validatePhone = validatePhone;
17
+ //# sourceMappingURL=phone.cjs.map
18
+ //# sourceMappingURL=phone.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/phone.ts"],"names":["isValidPhoneNumber","validatePhoneNumberLength"],"mappings":";;;;;AAmCO,SAAS,cAAc,KAAA,EAAmC;AAC7D,EAAA,IAAI,CAAC,KAAA,EAAO;AACR,IAAA,OAAO,EAAE,SAAS,KAAA,EAAM;AAAA,EAC5B;AACA,EAAA,IAAIA,mCAAA,CAAmB,KAAK,CAAA,EAAG;AAC3B,IAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,EAC3B;AACA,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,SAASC,0CAAA,CAA0B,KAAK,KAAK,SAAA,EAAU;AACpF","file":"phone.cjs","sourcesContent":["import { isValidPhoneNumber, validatePhoneNumberLength } from 'libphonenumber-js';\n\n/**\n * Why a value is not a valid phone number. Mirrors `libphonenumber-js`'\n * `validatePhoneNumberLength` result, plus `'INVALID'` for a value whose length\n * IS possible for its calling code but which is not a real number (e.g. an\n * 8-digit Colombian value: 8 is a possible fixed-line length, yet `3008...` is\n * not an assignable fixed-line prefix).\n *\n * The design system emits this code, never a message: the copy belongs to the\n * consumer's i18n catalog.\n */\nexport type PhoneFieldProblem =\n | 'TOO_SHORT'\n | 'TOO_LONG'\n | 'INVALID_LENGTH'\n | 'INVALID_COUNTRY'\n | 'NOT_A_NUMBER'\n | 'INVALID';\n\nexport interface PhoneFieldValidity {\n /** True only when the value is a valid, assignable number. */\n isValid: boolean;\n /** Why it is invalid. Absent for a valid value AND for an empty one. */\n problem?: PhoneFieldProblem;\n}\n\n/**\n * Validates an E.164 phone value. Pure and stateless — safe to share between\n * the field, a Zod schema and a server route handler so the rule is written\n * once.\n *\n * An empty value reports `{ isValid: false }` with no `problem`: emptiness is\n * the consumer's `required` rule, not a phone problem.\n */\nexport function validatePhone(value: string): PhoneFieldValidity {\n if (!value) {\n return { isValid: false };\n }\n if (isValidPhoneNumber(value)) {\n return { isValid: true };\n }\n return { isValid: false, problem: validatePhoneNumberLength(value) ?? 'INVALID' };\n}\n"]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Why a value is not a valid phone number. Mirrors `libphonenumber-js`'
3
+ * `validatePhoneNumberLength` result, plus `'INVALID'` for a value whose length
4
+ * IS possible for its calling code but which is not a real number (e.g. an
5
+ * 8-digit Colombian value: 8 is a possible fixed-line length, yet `3008...` is
6
+ * not an assignable fixed-line prefix).
7
+ *
8
+ * The design system emits this code, never a message: the copy belongs to the
9
+ * consumer's i18n catalog.
10
+ */
11
+ type PhoneFieldProblem = 'TOO_SHORT' | 'TOO_LONG' | 'INVALID_LENGTH' | 'INVALID_COUNTRY' | 'NOT_A_NUMBER' | 'INVALID';
12
+ interface PhoneFieldValidity {
13
+ /** True only when the value is a valid, assignable number. */
14
+ isValid: boolean;
15
+ /** Why it is invalid. Absent for a valid value AND for an empty one. */
16
+ problem?: PhoneFieldProblem;
17
+ }
18
+ /**
19
+ * Validates an E.164 phone value. Pure and stateless — safe to share between
20
+ * the field, a Zod schema and a server route handler so the rule is written
21
+ * once.
22
+ *
23
+ * An empty value reports `{ isValid: false }` with no `problem`: emptiness is
24
+ * the consumer's `required` rule, not a phone problem.
25
+ */
26
+ declare function validatePhone(value: string): PhoneFieldValidity;
27
+
28
+ export { type PhoneFieldProblem, type PhoneFieldValidity, validatePhone };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Why a value is not a valid phone number. Mirrors `libphonenumber-js`'
3
+ * `validatePhoneNumberLength` result, plus `'INVALID'` for a value whose length
4
+ * IS possible for its calling code but which is not a real number (e.g. an
5
+ * 8-digit Colombian value: 8 is a possible fixed-line length, yet `3008...` is
6
+ * not an assignable fixed-line prefix).
7
+ *
8
+ * The design system emits this code, never a message: the copy belongs to the
9
+ * consumer's i18n catalog.
10
+ */
11
+ type PhoneFieldProblem = 'TOO_SHORT' | 'TOO_LONG' | 'INVALID_LENGTH' | 'INVALID_COUNTRY' | 'NOT_A_NUMBER' | 'INVALID';
12
+ interface PhoneFieldValidity {
13
+ /** True only when the value is a valid, assignable number. */
14
+ isValid: boolean;
15
+ /** Why it is invalid. Absent for a valid value AND for an empty one. */
16
+ problem?: PhoneFieldProblem;
17
+ }
18
+ /**
19
+ * Validates an E.164 phone value. Pure and stateless — safe to share between
20
+ * the field, a Zod schema and a server route handler so the rule is written
21
+ * once.
22
+ *
23
+ * An empty value reports `{ isValid: false }` with no `problem`: emptiness is
24
+ * the consumer's `required` rule, not a phone problem.
25
+ */
26
+ declare function validatePhone(value: string): PhoneFieldValidity;
27
+
28
+ export { type PhoneFieldProblem, type PhoneFieldValidity, validatePhone };
package/dist/phone.js ADDED
@@ -0,0 +1,16 @@
1
+ import { isValidPhoneNumber, validatePhoneNumberLength } from 'libphonenumber-js';
2
+
3
+ // src/lib/phone.ts
4
+ function validatePhone(value) {
5
+ if (!value) {
6
+ return { isValid: false };
7
+ }
8
+ if (isValidPhoneNumber(value)) {
9
+ return { isValid: true };
10
+ }
11
+ return { isValid: false, problem: validatePhoneNumberLength(value) ?? "INVALID" };
12
+ }
13
+
14
+ export { validatePhone };
15
+ //# sourceMappingURL=phone.js.map
16
+ //# sourceMappingURL=phone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/phone.ts"],"names":[],"mappings":";;;AAmCO,SAAS,cAAc,KAAA,EAAmC;AAC7D,EAAA,IAAI,CAAC,KAAA,EAAO;AACR,IAAA,OAAO,EAAE,SAAS,KAAA,EAAM;AAAA,EAC5B;AACA,EAAA,IAAI,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC3B,IAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,EAC3B;AACA,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,SAAS,yBAAA,CAA0B,KAAK,KAAK,SAAA,EAAU;AACpF","file":"phone.js","sourcesContent":["import { isValidPhoneNumber, validatePhoneNumberLength } from 'libphonenumber-js';\n\n/**\n * Why a value is not a valid phone number. Mirrors `libphonenumber-js`'\n * `validatePhoneNumberLength` result, plus `'INVALID'` for a value whose length\n * IS possible for its calling code but which is not a real number (e.g. an\n * 8-digit Colombian value: 8 is a possible fixed-line length, yet `3008...` is\n * not an assignable fixed-line prefix).\n *\n * The design system emits this code, never a message: the copy belongs to the\n * consumer's i18n catalog.\n */\nexport type PhoneFieldProblem =\n | 'TOO_SHORT'\n | 'TOO_LONG'\n | 'INVALID_LENGTH'\n | 'INVALID_COUNTRY'\n | 'NOT_A_NUMBER'\n | 'INVALID';\n\nexport interface PhoneFieldValidity {\n /** True only when the value is a valid, assignable number. */\n isValid: boolean;\n /** Why it is invalid. Absent for a valid value AND for an empty one. */\n problem?: PhoneFieldProblem;\n}\n\n/**\n * Validates an E.164 phone value. Pure and stateless — safe to share between\n * the field, a Zod schema and a server route handler so the rule is written\n * once.\n *\n * An empty value reports `{ isValid: false }` with no `problem`: emptiness is\n * the consumer's `required` rule, not a phone problem.\n */\nexport function validatePhone(value: string): PhoneFieldValidity {\n if (!value) {\n return { isValid: false };\n }\n if (isValidPhoneNumber(value)) {\n return { isValid: true };\n }\n return { isValid: false, problem: validatePhoneNumberLength(value) ?? 'INVALID' };\n}\n"]}
package/package.json CHANGED
@@ -1,177 +1,230 @@
1
1
  {
2
- "name": "@bizapps/ui",
3
- "publishConfig": {
4
- "access": "public"
5
- },
6
- "version": "1.5.1",
7
- "description": "This package provides reusable UI components to ensure consistency across all CRM frontend applications",
8
- "author": "BizAppsTotal <bizapps@tcce.biz>",
9
- "type": "module",
10
- "files": [
11
- "dist"
12
- ],
13
- "main": "./dist/main.cjs",
14
- "module": "./dist/main.js",
15
- "types": "./dist/main.d.ts",
16
- "exports": {
17
- ".": {
18
- "types": "./dist/main.d.ts",
19
- "import": "./dist/main.js",
20
- "require": "./dist/main.cjs"
21
- },
22
- "./policy": {
23
- "types": "./dist/policy.d.ts",
24
- "import": "./dist/policy.js",
25
- "require": "./dist/policy.cjs"
26
- },
27
- "./styles": "./dist/main.css"
28
- },
29
- "peerDependencies": {
30
- "@hookform/resolvers": "^5.4.0",
31
- "@schedule-x/calendar": "4.6.0",
32
- "@schedule-x/calendar-controls": "4.6.0",
33
- "@schedule-x/event-modal": "4.6.0",
34
- "@schedule-x/events-service": "4.6.0",
35
- "@schedule-x/react": "4.1.0",
36
- "@schedule-x/theme-default": "4.6.0",
37
- "@tanstack/react-table": "^8.21.3",
38
- "embla-carousel-react": "^8.6.0",
39
- "lucide-react": "^1.16.0",
40
- "motion": "^12.23.13",
41
- "next-themes": "^0.4.6",
42
- "radix-ui": "^1.4.3",
43
- "react": "^19.1.1",
44
- "react-day-picker": "^10.0.1",
45
- "react-dom": "^19.1.1",
46
- "react-hook-form": "^7.77.0",
47
- "sonner": "^2.0.7",
48
- "zod": "^4.4.3"
49
- },
50
- "peerDependenciesMeta": {
51
- "@hookform/resolvers": {
52
- "optional": true
53
- },
54
- "@schedule-x/calendar": {
55
- "optional": true
56
- },
57
- "@schedule-x/calendar-controls": {
58
- "optional": true
59
- },
60
- "@schedule-x/event-modal": {
61
- "optional": true
62
- },
63
- "@schedule-x/events-service": {
64
- "optional": true
65
- },
66
- "@schedule-x/react": {
67
- "optional": true
68
- },
69
- "@schedule-x/theme-default": {
70
- "optional": true
71
- },
72
- "@tanstack/react-table": {
73
- "optional": true
74
- },
75
- "embla-carousel-react": {
76
- "optional": true
77
- },
78
- "lucide-react": {
79
- "optional": true
80
- },
81
- "motion": {
82
- "optional": true
83
- },
84
- "next-themes": {
85
- "optional": true
86
- },
87
- "react-day-picker": {
88
- "optional": true
89
- },
90
- "react-hook-form": {
91
- "optional": true
92
- },
93
- "sonner": {
94
- "optional": true
95
- },
96
- "zod": {
97
- "optional": true
2
+ "name": "@bizapps/ui",
3
+ "publishConfig": {
4
+ "access": "public"
5
+ },
6
+ "version": "1.7.0",
7
+ "description": "This package provides reusable UI components to ensure consistency across all CRM frontend applications",
8
+ "author": "BizAppsTotal <bizapps@tcce.biz>",
9
+ "type": "module",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "main": "./dist/main.cjs",
14
+ "module": "./dist/main.js",
15
+ "types": "./dist/main.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/main.d.ts",
19
+ "import": "./dist/main.js",
20
+ "require": "./dist/main.cjs"
21
+ },
22
+ "./policy": {
23
+ "types": "./dist/policy.d.ts",
24
+ "import": "./dist/policy.js",
25
+ "require": "./dist/policy.cjs"
26
+ },
27
+ "./phone": {
28
+ "types": "./dist/phone.d.ts",
29
+ "import": "./dist/phone.js",
30
+ "require": "./dist/phone.cjs"
31
+ },
32
+ "./editor": {
33
+ "types": "./dist/editor.d.ts",
34
+ "import": "./dist/editor.js",
35
+ "require": "./dist/editor.cjs"
36
+ },
37
+ "./styles": "./dist/main.css"
38
+ },
39
+ "scripts": {
40
+ "dev": "vite",
41
+ "build": "tsup && vite build --config vite.lib.config.ts",
42
+ "build:storybook": "storybook build",
43
+ "generate-catalog": "tsx scripts/generate-catalog.ts",
44
+ "generate-permissions": "tsx scripts/generate-permissions.ts",
45
+ "type-check": "tsc -p tsconfig.build.json --noEmit",
46
+ "lint": "eslint .",
47
+ "lint:fix": "eslint . --fix",
48
+ "format": "prettier --write .",
49
+ "preview": "vite preview",
50
+ "storybook": "storybook dev -p 6006 --host 0.0.0.0 --no-open",
51
+ "build-storybook": "storybook build",
52
+ "test": "vitest run",
53
+ "test:watch": "vitest",
54
+ "test:coverage": "vitest run --coverage"
55
+ },
56
+ "peerDependencies": {
57
+ "@hookform/resolvers": "^5.4.0",
58
+ "@schedule-x/calendar": "4.6.0",
59
+ "@schedule-x/calendar-controls": "4.6.0",
60
+ "@schedule-x/event-modal": "4.6.0",
61
+ "@schedule-x/events-service": "4.6.0",
62
+ "@schedule-x/react": "4.1.0",
63
+ "@schedule-x/theme-default": "4.6.0",
64
+ "@tanstack/react-table": "^8.21.3",
65
+ "@tiptap/core": "^3.30.5",
66
+ "@tiptap/extension-highlight": "^3.30.5",
67
+ "@tiptap/extension-image": "^3.30.5",
68
+ "@tiptap/extension-link": "^3.30.5",
69
+ "@tiptap/extension-table": "^3.30.5",
70
+ "@tiptap/pm": "^3.30.5",
71
+ "@tiptap/react": "^3.30.5",
72
+ "@tiptap/starter-kit": "^3.30.5",
73
+ "embla-carousel-react": "^8.6.0",
74
+ "lucide-react": "^1.16.0",
75
+ "motion": "^12.23.13",
76
+ "next-themes": "^0.4.6",
77
+ "radix-ui": "^1.4.3",
78
+ "react": "^19.1.1",
79
+ "react-day-picker": "^10.0.1",
80
+ "react-dom": "^19.1.1",
81
+ "react-hook-form": "^7.77.0",
82
+ "sonner": "^2.0.7",
83
+ "zod": "^4.4.3"
84
+ },
85
+ "peerDependenciesMeta": {
86
+ "@hookform/resolvers": {
87
+ "optional": true
88
+ },
89
+ "@schedule-x/calendar": {
90
+ "optional": true
91
+ },
92
+ "@schedule-x/calendar-controls": {
93
+ "optional": true
94
+ },
95
+ "@schedule-x/event-modal": {
96
+ "optional": true
97
+ },
98
+ "@schedule-x/events-service": {
99
+ "optional": true
100
+ },
101
+ "@schedule-x/react": {
102
+ "optional": true
103
+ },
104
+ "@schedule-x/theme-default": {
105
+ "optional": true
106
+ },
107
+ "@tanstack/react-table": {
108
+ "optional": true
109
+ },
110
+ "@tiptap/core": {
111
+ "optional": true
112
+ },
113
+ "@tiptap/extension-highlight": {
114
+ "optional": true
115
+ },
116
+ "@tiptap/extension-image": {
117
+ "optional": true
118
+ },
119
+ "@tiptap/extension-link": {
120
+ "optional": true
121
+ },
122
+ "@tiptap/extension-table": {
123
+ "optional": true
124
+ },
125
+ "@tiptap/pm": {
126
+ "optional": true
127
+ },
128
+ "@tiptap/react": {
129
+ "optional": true
130
+ },
131
+ "@tiptap/starter-kit": {
132
+ "optional": true
133
+ },
134
+ "embla-carousel-react": {
135
+ "optional": true
136
+ },
137
+ "lucide-react": {
138
+ "optional": true
139
+ },
140
+ "motion": {
141
+ "optional": true
142
+ },
143
+ "next-themes": {
144
+ "optional": true
145
+ },
146
+ "react-day-picker": {
147
+ "optional": true
148
+ },
149
+ "react-hook-form": {
150
+ "optional": true
151
+ },
152
+ "sonner": {
153
+ "optional": true
154
+ },
155
+ "zod": {
156
+ "optional": true
157
+ }
158
+ },
159
+ "devDependencies": {
160
+ "@eslint/js": "^9.39.4",
161
+ "@faker-js/faker": "^10.4.0",
162
+ "@fontsource-variable/inter": "^5.2.8",
163
+ "@storybook/addon-a11y": "^10.2.17",
164
+ "@storybook/addon-docs": "^10.2.17",
165
+ "@storybook/addon-mcp": "^0.6.0",
166
+ "@storybook/react-vite": "^10.2.17",
167
+ "@tailwindcss/vite": "^4.2.1",
168
+ "@tanstack/react-table": "^8.21.3",
169
+ "@testing-library/jest-dom": "^7.0.0",
170
+ "@testing-library/react": "^16.3.2",
171
+ "@testing-library/user-event": "^14.6.1",
172
+ "@tiptap/core": "3.30.5",
173
+ "@tiptap/extension-highlight": "3.30.5",
174
+ "@tiptap/extension-image": "3.30.5",
175
+ "@tiptap/extension-link": "3.30.5",
176
+ "@tiptap/extension-table": "3.30.5",
177
+ "@tiptap/pm": "3.30.5",
178
+ "@tiptap/react": "3.30.5",
179
+ "@tiptap/starter-kit": "3.30.5",
180
+ "@types/canvas-confetti": "^1.9.0",
181
+ "@types/node": "^24.12.0",
182
+ "@types/react": "^19.2.14",
183
+ "@types/react-dom": "^19.2.3",
184
+ "@vitejs/plugin-react": "^5.1.4",
185
+ "@vitest/coverage-v8": "^4.1.10",
186
+ "axe-core": "^4.12.1",
187
+ "eslint": "^9.39.4",
188
+ "eslint-config-prettier": "^10.1.8",
189
+ "eslint-plugin-react": "^7.37.5",
190
+ "eslint-plugin-react-hooks": "^5.2.0",
191
+ "eslint-plugin-react-refresh": "^0.4.26",
192
+ "eslint-plugin-storybook": "^10.2.17",
193
+ "globals": "^16.5.0",
194
+ "jsdom": "^30.0.1",
195
+ "motion": "^12.40.0",
196
+ "prettier": "^3.8.1",
197
+ "prettier-plugin-tailwindcss": "^0.6.14",
198
+ "react": "^19.2.4",
199
+ "react-dom": "^19.2.4",
200
+ "shadcn": "^4.8.1",
201
+ "sonner": "^2.0.7",
202
+ "storybook": "^10.2.17",
203
+ "tailwindcss": "^4.2.1",
204
+ "ts-morph": "^24.0.0",
205
+ "tsup": "^8.5.1",
206
+ "tsx": "^4.19.4",
207
+ "typescript": "~5.8.3",
208
+ "typescript-eslint": "8.53.0",
209
+ "vite": "^7.3.1",
210
+ "vite-plugin-dts": "^4.5.4",
211
+ "vitest": "^4.1.10",
212
+ "vitest-axe": "^0.1.0",
213
+ "zod": "^4.4.3"
214
+ },
215
+ "packageManager": "pnpm@11.7.0+sha512.19cc852c120c7125760f2443ee6be0ca5b40f9f50598de1a09a1f177503e010e57c23c77646e01e761de59bf874fb22a3398c33ab9691fc13eb946b6f0f4d620",
216
+ "dependencies": {
217
+ "canvas-confetti": "^1.9.4",
218
+ "class-variance-authority": "^0.7.1",
219
+ "clsx": "^2.1.1",
220
+ "cmdk": "^1.1.1",
221
+ "color": "^5.0.3",
222
+ "country-flag-icons": "^1.6.20",
223
+ "date-fns": "^4.4.0",
224
+ "libphonenumber-js": "^1.13.10",
225
+ "react-dropzone": "^15.0.0",
226
+ "tailwind-merge": "^3.6.0",
227
+ "temporal-polyfill": "0.3.2",
228
+ "tw-animate-css": "^1.4.0"
98
229
  }
99
- },
100
- "devDependencies": {
101
- "@eslint/js": "^9.39.4",
102
- "@faker-js/faker": "^10.4.0",
103
- "@fontsource-variable/inter": "^5.2.8",
104
- "@storybook/addon-a11y": "^10.2.17",
105
- "@storybook/addon-docs": "^10.2.17",
106
- "@storybook/addon-mcp": "^0.6.0",
107
- "@storybook/react-vite": "^10.2.17",
108
- "@tailwindcss/vite": "^4.2.1",
109
- "@tanstack/react-table": "^8.21.3",
110
- "@testing-library/jest-dom": "^7.0.0",
111
- "@testing-library/react": "^16.3.2",
112
- "@testing-library/user-event": "^14.6.1",
113
- "@types/node": "^24.12.0",
114
- "@types/react": "^19.2.14",
115
- "@types/react-dom": "^19.2.3",
116
- "@vitejs/plugin-react": "^5.1.4",
117
- "@vitest/coverage-v8": "^4.1.10",
118
- "axe-core": "^4.12.1",
119
- "eslint": "^9.39.4",
120
- "eslint-config-prettier": "^10.1.8",
121
- "eslint-plugin-react": "^7.37.5",
122
- "eslint-plugin-react-hooks": "^5.2.0",
123
- "eslint-plugin-react-refresh": "^0.4.26",
124
- "eslint-plugin-storybook": "^10.2.17",
125
- "globals": "^16.5.0",
126
- "jsdom": "^30.0.1",
127
- "motion": "^12.40.0",
128
- "prettier": "^3.8.1",
129
- "prettier-plugin-tailwindcss": "^0.6.14",
130
- "react": "^19.2.4",
131
- "react-dom": "^19.2.4",
132
- "shadcn": "^4.8.1",
133
- "sonner": "^2.0.7",
134
- "storybook": "^10.2.17",
135
- "tailwindcss": "^4.2.1",
136
- "ts-morph": "^24.0.0",
137
- "tsup": "^8.5.1",
138
- "tsx": "^4.19.4",
139
- "typescript": "~5.8.3",
140
- "typescript-eslint": "8.53.0",
141
- "vite": "^7.3.1",
142
- "vite-plugin-dts": "^4.5.4",
143
- "vitest": "^4.1.10",
144
- "vitest-axe": "^0.1.0",
145
- "zod": "^4.4.3"
146
- },
147
- "dependencies": {
148
- "class-variance-authority": "^0.7.1",
149
- "clsx": "^2.1.1",
150
- "cmdk": "^1.1.1",
151
- "color": "^5.0.3",
152
- "country-flag-icons": "^1.6.20",
153
- "date-fns": "^4.4.0",
154
- "libphonenumber-js": "^1.13.10",
155
- "react-dropzone": "^15.0.0",
156
- "tailwind-merge": "^3.6.0",
157
- "temporal-polyfill": "0.3.2",
158
- "tw-animate-css": "^1.4.0"
159
- },
160
- "scripts": {
161
- "dev": "vite",
162
- "build": "tsup && vite build --config vite.lib.config.ts",
163
- "build:storybook": "storybook build",
164
- "generate-catalog": "tsx scripts/generate-catalog.ts",
165
- "generate-permissions": "tsx scripts/generate-permissions.ts",
166
- "type-check": "tsc -p tsconfig.build.json --noEmit",
167
- "lint": "eslint .",
168
- "lint:fix": "eslint . --fix",
169
- "format": "prettier --write .",
170
- "preview": "vite preview",
171
- "storybook": "storybook dev -p 6006 --host 0.0.0.0 --no-open",
172
- "build-storybook": "storybook build",
173
- "test": "vitest run",
174
- "test:watch": "vitest",
175
- "test:coverage": "vitest run --coverage"
176
- }
177
- }
230
+ }