@lawnguru/ui 3.0.0 → 3.0.2
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/README.md +31 -29
- package/dist/chunk-2R5NZUY2.js +2 -2
- package/dist/chunk-2R5NZUY2.js.map +7 -7
- package/dist/chunk-322C3AJR.js +2 -2
- package/dist/chunk-322C3AJR.js.map +7 -7
- package/dist/chunk-5AXWISGI.js +2 -2
- package/dist/chunk-5AXWISGI.js.map +7 -7
- package/dist/chunk-62LTWWXS.js +2 -2
- package/dist/chunk-62LTWWXS.js.map +7 -7
- package/dist/chunk-63IVPQSD.js +2 -2
- package/dist/chunk-63IVPQSD.js.map +7 -7
- package/dist/chunk-7H74R7P4.js +2 -2
- package/dist/chunk-7H74R7P4.js.map +7 -7
- package/dist/chunk-A4EVMSOO.js +2 -2
- package/dist/chunk-A4EVMSOO.js.map +7 -7
- package/dist/chunk-BF3VTYEM.js +2 -2
- package/dist/chunk-BF3VTYEM.js.map +7 -7
- package/dist/chunk-FUXRPZVU.js +2 -2
- package/dist/chunk-FUXRPZVU.js.map +7 -7
- package/dist/chunk-JVQR7SBQ.js +2 -2
- package/dist/chunk-JVQR7SBQ.js.map +7 -7
- package/dist/chunk-KGEITSDG.js +2 -2
- package/dist/chunk-KGEITSDG.js.map +7 -7
- package/dist/chunk-KR5A3H22.js +2 -2
- package/dist/chunk-KR5A3H22.js.map +7 -7
- package/dist/chunk-LUG5DIYB.js +2 -2
- package/dist/chunk-LUG5DIYB.js.map +7 -7
- package/dist/chunk-PRAYE34P.js +2 -2
- package/dist/chunk-PRAYE34P.js.map +7 -7
- package/dist/chunk-Q3PG3WWG.js +2 -2
- package/dist/chunk-Q3PG3WWG.js.map +7 -7
- package/dist/chunk-S2I5LIDP.js +2 -2
- package/dist/chunk-S2I5LIDP.js.map +7 -7
- package/dist/chunk-T73JL4BL.js +2 -2
- package/dist/chunk-T73JL4BL.js.map +7 -7
- package/dist/chunk-ZJVH3SNI.js +2 -2
- package/dist/chunk-ZJVH3SNI.js.map +7 -7
- package/dist/components/badge/index.js +1 -1
- package/dist/components/button/index.js +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command/index.js +1 -1
- package/dist/components/confirm/index.js +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/dialog-responsive/index.js +1 -1
- package/dist/components/dropdown-menu-responsive/index.js +1 -1
- package/dist/components/input-group/index.js +1 -1
- package/dist/components/photo-lightbox/index.js +1 -1
- package/dist/components/photo-upload/index.js +1 -1
- package/dist/components/questionnaire/index.js +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/toggle/index.js +1 -1
- package/dist/components/toggle-group/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/output.css +1 -1
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/variables.css +92 -92
- package/package.json +133 -133
- package/dist/chunk-2ZNU7SP6.js +0 -2
- package/dist/chunk-2ZNU7SP6.js.map +0 -7
- package/dist/chunk-C6BWVSUV.js +0 -2
- package/dist/chunk-C6BWVSUV.js.map +0 -7
- package/dist/chunk-EPZCTKQC.js +0 -2
- package/dist/chunk-EPZCTKQC.js.map +0 -7
- package/dist/chunk-EWEMD7AS.js +0 -2
- package/dist/chunk-EWEMD7AS.js.map +0 -7
- package/dist/chunk-F4MEBVNH.js +0 -2
- package/dist/chunk-F4MEBVNH.js.map +0 -7
- package/dist/chunk-HE3CSN3R.js +0 -2
- package/dist/chunk-HE3CSN3R.js.map +0 -7
- package/dist/chunk-JAPB4ZVX.js +0 -2
- package/dist/chunk-JAPB4ZVX.js.map +0 -7
- package/dist/chunk-KLHKZS2N.js +0 -2
- package/dist/chunk-KLHKZS2N.js.map +0 -7
- package/dist/chunk-LS37UWHK.js +0 -2
- package/dist/chunk-LS37UWHK.js.map +0 -7
- package/dist/chunk-N4JYYENQ.js +0 -2
- package/dist/chunk-N4JYYENQ.js.map +0 -7
- package/dist/chunk-NAS2AFA3.js +0 -2
- package/dist/chunk-NAS2AFA3.js.map +0 -7
- package/dist/chunk-OSONBAJY.js +0 -2
- package/dist/chunk-OSONBAJY.js.map +0 -7
- package/dist/chunk-PLDAFSMG.js +0 -2
- package/dist/chunk-PLDAFSMG.js.map +0 -7
- package/dist/chunk-U26IEDZT.js +0 -2
- package/dist/chunk-U26IEDZT.js.map +0 -7
- package/dist/chunk-UQUO6MUG.js +0 -2
- package/dist/chunk-UQUO6MUG.js.map +0 -7
- package/dist/chunk-V3VA2O5O.js +0 -2
- package/dist/chunk-V3VA2O5O.js.map +0 -7
- package/dist/chunk-YLCKVKJM.js +0 -2
- package/dist/chunk-YLCKVKJM.js.map +0 -7
- package/dist/chunk-Z2DKDZMC.js +0 -2
- package/dist/chunk-Z2DKDZMC.js.map +0 -7
package/package.json
CHANGED
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@lawnguru/ui",
|
|
3
|
-
"version": "3.0.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"main": "./dist/index.js",
|
|
6
|
-
"module": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"repository": "https://github.com/LawnGuru/ui",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist/index.d.ts",
|
|
12
|
-
"import": "./dist/index.js"
|
|
13
|
-
},
|
|
14
|
-
"./tailwind.preset": {
|
|
15
|
-
"types": "./dist/tailwind.preset.d.ts",
|
|
16
|
-
"import": "./dist/tailwind.preset.js"
|
|
17
|
-
},
|
|
18
|
-
"./styles": "./dist/output.css",
|
|
19
|
-
"./styles/base": "./dist/index.css"
|
|
20
|
-
},
|
|
21
|
-
"files": [
|
|
22
|
-
"dist"
|
|
23
|
-
],
|
|
24
|
-
"publishConfig": {
|
|
25
|
-
"access": "public"
|
|
26
|
-
},
|
|
27
|
-
"engines": {
|
|
28
|
-
"node": ">=22.21.1"
|
|
29
|
-
},
|
|
30
|
-
"scripts": {
|
|
31
|
-
"dev": "run-p dev:*",
|
|
32
|
-
"dev:storybook": "pnpm storybook",
|
|
33
|
-
"typecheck": "tsc --noEmit",
|
|
34
|
-
"build": "run-p build:*",
|
|
35
|
-
"build:types": "run-p build:types:*",
|
|
36
|
-
"build:types:main": "dts-bundle-generator -o ./dist/index.d.ts ./src/index.ts",
|
|
37
|
-
"build:types:preset": "dts-bundle-generator -o ./dist/tailwind.preset.d.ts ./src/tailwind.preset.ts",
|
|
38
|
-
"build:js": "node build.mjs",
|
|
39
|
-
"build:css": "tailwindcss -i ./src/styles/index.css -o ./dist/output.css",
|
|
40
|
-
"lint": "run-p lint:*",
|
|
41
|
-
"lint:eslint": "eslint .",
|
|
42
|
-
"lint:prettier": "prettier --check './src/**/*.ts{,x}'",
|
|
43
|
-
"lint:tsc": "pnpm typecheck",
|
|
44
|
-
"format": "run-s -c format:*",
|
|
45
|
-
"format:eslint": "eslint --fix .",
|
|
46
|
-
"format:prettier": "prettier --write './src/**/*.ts{,x}'",
|
|
47
|
-
"test": "run-p test:*",
|
|
48
|
-
"test:ci": "vitest run",
|
|
49
|
-
"storybook": "storybook dev -p 6006",
|
|
50
|
-
"build-storybook": "storybook build",
|
|
51
|
-
"prepare": "simple-git-hooks"
|
|
52
|
-
},
|
|
53
|
-
"dependencies": {
|
|
54
|
-
"@base-ui/react": "^1.6.0",
|
|
55
|
-
"@hookform/resolvers": "^5.4.0",
|
|
56
|
-
"@shadcn/react": "^0.3.1",
|
|
57
|
-
"class-variance-authority": "^0.7.1",
|
|
58
|
-
"clsx": "^2.1.1",
|
|
59
|
-
"cmdk": "^1.1.1",
|
|
60
|
-
"date-fns": "^4.4.0",
|
|
61
|
-
"embla-carousel-react": "^8.6.0",
|
|
62
|
-
"input-otp": "^1.4.2",
|
|
63
|
-
"lucide-react": "^1.24.0",
|
|
64
|
-
"radix-ui": "^1.6.2",
|
|
65
|
-
"react-day-picker": "^9.14.0",
|
|
66
|
-
"react-hook-form": "^7.81.0",
|
|
67
|
-
"react-resizable-panels": "^4.12.1",
|
|
68
|
-
"tailwind-merge": "^3.6.0",
|
|
69
|
-
"tailwindcss-animate": "^1.0.7",
|
|
70
|
-
"tw-animate-css": "^1.4.0",
|
|
71
|
-
"zod": "^4.3.6"
|
|
72
|
-
},
|
|
73
|
-
"devDependencies": {
|
|
74
|
-
"@eslint/eslintrc": "^3.3.6",
|
|
75
|
-
"@eslint/js": "^9.39.2",
|
|
76
|
-
"@storybook/addon-docs": "^10.5.0",
|
|
77
|
-
"@storybook/addon-links": "^10.5.0",
|
|
78
|
-
"@storybook/addon-onboarding": "^10.5.0",
|
|
79
|
-
"@storybook/addon-vitest": "^10.5.0",
|
|
80
|
-
"@storybook/react-vite": "^10.5.0",
|
|
81
|
-
"@types/cheerio": "^1.0.0",
|
|
82
|
-
"@types/react": "^19.2.17",
|
|
83
|
-
"@types/react-dom": "^19.2.3",
|
|
84
|
-
"@typescript-eslint/parser": "^8.63.0",
|
|
85
|
-
"@vitest/browser-playwright": "^4.1.10",
|
|
86
|
-
"@vitest/coverage-v8": "^4.1.10",
|
|
87
|
-
"autoprefixer": "^10.5.2",
|
|
88
|
-
"dts-bundle-generator": "^9.5.1",
|
|
89
|
-
"esbuild": "^0.28.1",
|
|
90
|
-
"eslint": "^9.39.2",
|
|
91
|
-
"eslint-config-smarthr": "^10.0.0",
|
|
92
|
-
"eslint-plugin-import": "^2.29.1",
|
|
93
|
-
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
94
|
-
"eslint-plugin-react": "^7.37.5",
|
|
95
|
-
"eslint-plugin-react-hooks": "^7.1.1",
|
|
96
|
-
"eslint-plugin-storybook": "^10.5.0",
|
|
97
|
-
"glob": "^13.0.6",
|
|
98
|
-
"globals": "^17.7.0",
|
|
99
|
-
"lint-staged": "^16.3.2",
|
|
100
|
-
"npm-run-all": "^4.1.5",
|
|
101
|
-
"playwright": "^1.61.1",
|
|
102
|
-
"prettier": "^3.9.5",
|
|
103
|
-
"prettier-plugin-tailwindcss": "^0.8.0",
|
|
104
|
-
"react": "^19.2.7",
|
|
105
|
-
"react-dom": "^19.2.7",
|
|
106
|
-
"simple-git-hooks": "^2.13.1",
|
|
107
|
-
"storybook": "^10.5.0",
|
|
108
|
-
"tailwindcss": "3.4.18",
|
|
109
|
-
"typescript": "~5.9.3",
|
|
110
|
-
"typescript-eslint": "^8.63.0",
|
|
111
|
-
"vitest": "^4.1.10"
|
|
112
|
-
},
|
|
113
|
-
"peerDependencies": {
|
|
114
|
-
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
|
|
115
|
-
"react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
|
|
116
|
-
"tailwindcss": "3.4.18"
|
|
117
|
-
},
|
|
118
|
-
"lint-staged": {
|
|
119
|
-
"src/**/*.{ts,tsx}": [
|
|
120
|
-
"eslint --fix",
|
|
121
|
-
"prettier --write"
|
|
122
|
-
]
|
|
123
|
-
},
|
|
124
|
-
"simple-git-hooks": {
|
|
125
|
-
"pre-commit": "pnpm exec lint-staged"
|
|
126
|
-
},
|
|
127
|
-
"pnpm": {
|
|
128
|
-
"onlyBuiltDependencies": [
|
|
129
|
-
"esbuild"
|
|
130
|
-
]
|
|
131
|
-
},
|
|
132
|
-
"packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319"
|
|
133
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@lawnguru/ui",
|
|
3
|
+
"version": "3.0.2",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"repository": "https://github.com/LawnGuru/ui",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./tailwind.preset": {
|
|
15
|
+
"types": "./dist/tailwind.preset.d.ts",
|
|
16
|
+
"import": "./dist/tailwind.preset.js"
|
|
17
|
+
},
|
|
18
|
+
"./styles": "./dist/output.css",
|
|
19
|
+
"./styles/base": "./dist/index.css"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=22.21.1"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"dev": "run-p dev:*",
|
|
32
|
+
"dev:storybook": "pnpm storybook",
|
|
33
|
+
"typecheck": "tsc --noEmit",
|
|
34
|
+
"build": "run-p build:*",
|
|
35
|
+
"build:types": "run-p build:types:*",
|
|
36
|
+
"build:types:main": "dts-bundle-generator -o ./dist/index.d.ts ./src/index.ts",
|
|
37
|
+
"build:types:preset": "dts-bundle-generator -o ./dist/tailwind.preset.d.ts ./src/tailwind.preset.ts",
|
|
38
|
+
"build:js": "node build.mjs",
|
|
39
|
+
"build:css": "tailwindcss -i ./src/styles/index.css -o ./dist/output.css",
|
|
40
|
+
"lint": "run-p lint:*",
|
|
41
|
+
"lint:eslint": "eslint .",
|
|
42
|
+
"lint:prettier": "prettier --check './src/**/*.ts{,x}'",
|
|
43
|
+
"lint:tsc": "pnpm typecheck",
|
|
44
|
+
"format": "run-s -c format:*",
|
|
45
|
+
"format:eslint": "eslint --fix .",
|
|
46
|
+
"format:prettier": "prettier --write './src/**/*.ts{,x}'",
|
|
47
|
+
"test": "run-p test:*",
|
|
48
|
+
"test:ci": "vitest run",
|
|
49
|
+
"storybook": "storybook dev -p 6006",
|
|
50
|
+
"build-storybook": "storybook build",
|
|
51
|
+
"prepare": "simple-git-hooks"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@base-ui/react": "^1.6.0",
|
|
55
|
+
"@hookform/resolvers": "^5.4.0",
|
|
56
|
+
"@shadcn/react": "^0.3.1",
|
|
57
|
+
"class-variance-authority": "^0.7.1",
|
|
58
|
+
"clsx": "^2.1.1",
|
|
59
|
+
"cmdk": "^1.1.1",
|
|
60
|
+
"date-fns": "^4.4.0",
|
|
61
|
+
"embla-carousel-react": "^8.6.0",
|
|
62
|
+
"input-otp": "^1.4.2",
|
|
63
|
+
"lucide-react": "^1.24.0",
|
|
64
|
+
"radix-ui": "^1.6.2",
|
|
65
|
+
"react-day-picker": "^9.14.0",
|
|
66
|
+
"react-hook-form": "^7.81.0",
|
|
67
|
+
"react-resizable-panels": "^4.12.1",
|
|
68
|
+
"tailwind-merge": "^3.6.0",
|
|
69
|
+
"tailwindcss-animate": "^1.0.7",
|
|
70
|
+
"tw-animate-css": "^1.4.0",
|
|
71
|
+
"zod": "^4.3.6"
|
|
72
|
+
},
|
|
73
|
+
"devDependencies": {
|
|
74
|
+
"@eslint/eslintrc": "^3.3.6",
|
|
75
|
+
"@eslint/js": "^9.39.2",
|
|
76
|
+
"@storybook/addon-docs": "^10.5.0",
|
|
77
|
+
"@storybook/addon-links": "^10.5.0",
|
|
78
|
+
"@storybook/addon-onboarding": "^10.5.0",
|
|
79
|
+
"@storybook/addon-vitest": "^10.5.0",
|
|
80
|
+
"@storybook/react-vite": "^10.5.0",
|
|
81
|
+
"@types/cheerio": "^1.0.0",
|
|
82
|
+
"@types/react": "^19.2.17",
|
|
83
|
+
"@types/react-dom": "^19.2.3",
|
|
84
|
+
"@typescript-eslint/parser": "^8.63.0",
|
|
85
|
+
"@vitest/browser-playwright": "^4.1.10",
|
|
86
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
87
|
+
"autoprefixer": "^10.5.2",
|
|
88
|
+
"dts-bundle-generator": "^9.5.1",
|
|
89
|
+
"esbuild": "^0.28.1",
|
|
90
|
+
"eslint": "^9.39.2",
|
|
91
|
+
"eslint-config-smarthr": "^10.0.0",
|
|
92
|
+
"eslint-plugin-import": "^2.29.1",
|
|
93
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
94
|
+
"eslint-plugin-react": "^7.37.5",
|
|
95
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
96
|
+
"eslint-plugin-storybook": "^10.5.0",
|
|
97
|
+
"glob": "^13.0.6",
|
|
98
|
+
"globals": "^17.7.0",
|
|
99
|
+
"lint-staged": "^16.3.2",
|
|
100
|
+
"npm-run-all": "^4.1.5",
|
|
101
|
+
"playwright": "^1.61.1",
|
|
102
|
+
"prettier": "^3.9.5",
|
|
103
|
+
"prettier-plugin-tailwindcss": "^0.8.0",
|
|
104
|
+
"react": "^19.2.7",
|
|
105
|
+
"react-dom": "^19.2.7",
|
|
106
|
+
"simple-git-hooks": "^2.13.1",
|
|
107
|
+
"storybook": "^10.5.0",
|
|
108
|
+
"tailwindcss": "3.4.18",
|
|
109
|
+
"typescript": "~5.9.3",
|
|
110
|
+
"typescript-eslint": "^8.63.0",
|
|
111
|
+
"vitest": "^4.1.10"
|
|
112
|
+
},
|
|
113
|
+
"peerDependencies": {
|
|
114
|
+
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
|
|
115
|
+
"react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
|
|
116
|
+
"tailwindcss": "3.4.18"
|
|
117
|
+
},
|
|
118
|
+
"lint-staged": {
|
|
119
|
+
"src/**/*.{ts,tsx}": [
|
|
120
|
+
"eslint --fix",
|
|
121
|
+
"prettier --write"
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"simple-git-hooks": {
|
|
125
|
+
"pre-commit": "pnpm exec lint-staged"
|
|
126
|
+
},
|
|
127
|
+
"pnpm": {
|
|
128
|
+
"onlyBuiltDependencies": [
|
|
129
|
+
"esbuild"
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
"packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319"
|
|
133
|
+
}
|
package/dist/chunk-2ZNU7SP6.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as w}from"./chunk-F4MEBVNH.js";import{a as N,b as Q}from"./chunk-JAPB4ZVX.js";import{a as u}from"./chunk-WIFBPNRH.js";import{a,b as f,c as r}from"./chunk-WHECA25N.js";import*as x from"react";import{Questionnaire as c}from"@shadcn/react/questionnaire";import{CheckIcon as S,PencilIcon as z}from"lucide-react";import{jsx as i,jsxs as p}from"react/jsx-runtime";var v="[&[hidden]]:hidden";function T(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Root,a({"data-slot":"questionnaire",className:u("flex w-full min-w-0 flex-col gap-4",t)},o))}function D(n){var e=n,{className:t}=e,o=r(e,["className"]);return i("div",a({"data-slot":"questionnaire-card",className:u("flex w-full flex-col gap-5 rounded-xl border bg-background px-6 pb-6 pt-5",t)},o))}function V(n){var e=n,{className:t}=e,o=r(e,["className"]);return i("h2",a({"data-slot":"questionnaire-header",className:u("text-2xl font-bold leading-8 tracking-[-0.01em] text-foreground",t)},o))}function $(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Progress,a({"data-slot":"questionnaire-progress",className:u("min-h-4 w-fit text-xs font-medium tabular-nums text-foreground/[0.74]",t)},o))}function A(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Item,a({"data-slot":"questionnaire-item",className:u("flex min-w-0 flex-col gap-4 border-0 p-0 outline-none",v,t)},o))}function H(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Title,a({"data-slot":"questionnaire-title",className:u("text-pretty p-0 text-base font-medium leading-[22px] text-foreground [&:not(:has(~[data-slot=questionnaire-description]))]:mb-4",t)},o))}function F(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Description,a({"data-slot":"questionnaire-description",className:u("text-pretty text-sm tracking-[0.005em] text-muted-foreground",t)},o))}function M(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Choices,a({"data-slot":"questionnaire-choices",className:u("group/questionnaire-choices grid min-w-0 gap-2",t)},o))}function _(s){var l=s,{children:t,className:o,badge:n}=l,e=r(l,["children","className","badge"]);return p(c.Choice,f(a({"data-slot":"questionnaire-choice",className:u("group/questionnaire-choice relative flex cursor-pointer select-none items-start gap-2.5 rounded-md border border-input bg-background px-[13px] py-[11px] text-start text-sm outline-none transition-colors hover:bg-muted/50","has-[>input:focus-visible]:ring-2 has-[>input:focus-visible]:ring-ring/50","data-[checked]:border-surface-color-brand data-[checked]:bg-surface-color-brand-bland","data-[invalid]:border-destructive","data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50",o)},e),{children:[i(c.ChoiceInput,{"data-slot":"questionnaire-choice-input",className:"absolute inset-0 z-10 size-full cursor-pointer opacity-0"}),p("span",{"aria-hidden":"true","data-slot":"questionnaire-choice-indicator",className:"pointer-events-none relative mt-[3px] flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input bg-background group-data-[type=radio]/questionnaire-choice:rounded-full group-data-[checked]/questionnaire-choice:border-surface-color-brand group-data-[checked]/questionnaire-choice:bg-surface-color-brand group-data-[checked]/questionnaire-choice:text-inverted-primary",children:[i("span",{"data-slot":"questionnaire-choice-indicator-dot",className:"hidden size-1.5 rounded-full bg-inverted-primary group-data-[checked]/questionnaire-choice:block group-data-[type=checkbox]/questionnaire-choice:hidden"}),i(S,{"data-slot":"questionnaire-choice-indicator-check",className:"hidden size-3 stroke-[3] group-data-[checked]/questionnaire-choice:block group-data-[type=radio]/questionnaire-choice:hidden"})]}),i(c.ChoiceLabel,{"data-slot":"questionnaire-choice-label",className:"flex min-w-0 flex-1 flex-col gap-0.5 leading-[1.375] text-foreground",children:t}),n&&i("span",{"data-slot":"questionnaire-choice-badge",className:"pointer-events-none flex shrink-0 self-center",children:n})]}))}function G(n){var e=n,{className:t}=e,o=r(e,["className"]);return i("span",a({"data-slot":"questionnaire-choice-description",className:u("text-muted-foreground",t)},o))}function J(s){var l=s,{className:t,label:o,image:n}=l,e=r(l,["className","label","image"]);return p(c.Choice,f(a({"data-slot":"questionnaire-choice-tile",className:u("group/questionnaire-choice relative flex cursor-pointer select-none flex-col gap-1.5 rounded-md border border-input bg-background px-1.5 pb-2 pt-1.5 outline-none transition-colors hover:bg-muted/50","has-[>input:focus-visible]:ring-2 has-[>input:focus-visible]:ring-ring/50","data-[checked]:border-2 data-[checked]:border-surface-color-brand data-[checked]:bg-surface-color-brand-bland data-[checked]:px-[5px] data-[checked]:pb-[7px] data-[checked]:pt-[5px]","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t)},e),{children:[i(c.ChoiceInput,{"data-slot":"questionnaire-choice-input",className:"absolute inset-0 z-10 size-full cursor-pointer opacity-0"}),i("img",{src:n,alt:"",className:"pointer-events-none h-[52px] w-full rounded-[6px] object-cover"}),i(c.ChoiceLabel,{"data-slot":"questionnaire-choice-label",className:"text-[11px] text-foreground/[0.74] group-data-[checked]/questionnaire-choice:font-semibold group-data-[checked]/questionnaire-choice:text-content-brand",children:o})]}))}function K(n){var e=n,{className:t}=e,o=r(e,["className"]);let s=x.useRef(null),[l,d]=x.useState(!1);return x.useEffect(()=>{var h;let m=(h=s.current)==null?void 0:h.previousElementSibling;if(!m)return;let y=()=>d(m.hasAttribute("data-checked"));y();let R=new MutationObserver(y);return R.observe(m,{attributeFilter:["data-checked"]}),()=>R.disconnect()},[]),i("fieldset",a({ref:s,"data-slot":"questionnaire-choice-details",disabled:!l,className:u("m-0 hidden min-w-0 border-0 p-0 [[data-checked]+&]:block",t)},o))}function U(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Input,a({"data-slot":"questionnaire-input",className:u("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-destructive md:text-sm",t)},o))}function W(n){var e=n,{value:t}=e,o=r(e,["value"]);return i(c.Input,a({"data-slot":"questionnaire-value",hidden:!0,readOnly:!0,tabIndex:-1,"aria-hidden":!0,value:t!=null?t:""},o))}function X(n){var e=n,{className:t}=e,o=r(e,["className"]);return i(c.Error,a({"data-slot":"questionnaire-error",className:u("text-sm text-destructive",v,t)},o))}function Y(n){var e=n,{className:t}=e,o=r(e,["className"]);return i("div",a({"data-slot":"questionnaire-actions",className:u("grid min-h-8 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2",t)},o))}var C="h-8 rounded-md px-2.5 text-sm";function Z(l){var d=l,{children:t,className:o,size:n,variant:e="outline"}=d,s=r(d,["children","className","size","variant"]);return i(c.Previous,f(a({"data-slot":"questionnaire-previous",className:u(N({size:n,variant:e}),C,"col-start-1 row-start-1 justify-self-start",v,o)},s),{children:t!=null?t:"Previous"}))}function ee(l){var d=l,{children:t,className:o,size:n,variant:e="outline"}=d,s=r(d,["children","className","size","variant"]);return i(c.Skip,f(a({"data-slot":"questionnaire-skip",className:u(N({size:n,variant:e}),C,"col-start-2 row-start-1 justify-self-end",v,o)},s),{children:t!=null?t:"Skip"}))}function te(l){var d=l,{children:t,className:o,size:n,variant:e="default"}=d,s=r(d,["children","className","size","variant"]);return i(c.Next,f(a({"data-slot":"questionnaire-next",className:u(N({size:n,variant:e}),C,"col-start-3 row-start-1 justify-self-end",v,o)},s),{children:t!=null?t:"Next"}))}function oe(l){var d=l,{children:t,className:o,size:n,variant:e="default"}=d,s=r(d,["children","className","size","variant"]);return i(c.Submit,f(a({"data-slot":"questionnaire-submit",className:u(N({size:n,variant:e}),C,"col-start-3 row-start-1 justify-self-end",v,o)},s),{children:t!=null?t:"Submit"}))}function ie(d){var m=d,{className:t,title:o,summary:n,onEdit:e,editLabel:s="Edit"}=m,l=r(m,["className","title","summary","onEdit","editLabel"]);return p("div",f(a({"data-slot":"questionnaire-completed-step",className:u("flex w-full items-start gap-3 rounded-xl border bg-background px-5 py-4",t)},l),{children:[i("span",{className:"flex size-6 shrink-0 items-center justify-center rounded-full bg-foreground/80 text-background",children:i(S,{className:"size-3.5 stroke-[3]","aria-hidden":"true"})}),p("div",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[i("p",{className:"text-sm font-medium text-foreground",children:o}),n&&i("p",{className:"text-[13px] leading-[19px] text-muted-foreground",children:n})]}),e&&p(Q,{type:"button",variant:"ghost",size:"sm",onClick:e,className:"text-[13px] font-semibold text-foreground/[0.74]",children:[i(z,{}),s]})]}))}function B(e){var s=e,{className:t,children:o}=s,n=r(s,["className","children"]);return p(Q,f(a({type:"button",variant:"outline",size:"sm",className:u("h-8 shrink-0 gap-1.5 rounded-md border-foreground/15 px-3 text-[13px] font-semibold tracking-[0.005em]",t)},n),{children:[i(z,{}),o!=null?o:"Edit"]}))}function ne(d){var m=d,{className:t,title:o="Review your request",description:n="Check your details before sending your request to local pros.",action:e,children:s}=m,l=r(m,["className","title","description","action","children"]);return p("div",f(a({"data-slot":"questionnaire-review",className:u("flex w-full flex-col gap-5 rounded-xl border border-foreground/15 bg-background px-6 pb-6 pt-5",t)},l),{children:[p("div",{className:"flex flex-col gap-1",children:[i("h2",{className:"text-base font-medium text-foreground",children:o}),n&&i("p",{className:"text-sm text-muted-foreground",children:n})]}),i("div",{className:"flex flex-col divide-y divide-foreground/10 rounded-lg border border-foreground/15 bg-muted p-4 *:py-3.5 first:*:pt-0 last:*:pb-0",children:s}),e]}))}function ae(R){var h=R,{className:t,heading:o,title:n,items:e=[],photos:s=[],visiblePhotos:l=2,onEdit:d,showPhotosLabel:m=b=>`Show all photos (${b})`}=h,y=r(h,["className","heading","title","items","photos","visiblePhotos","onEdit","showPhotosLabel"]);let[b,k]=x.useState(null);return p("section",f(a({"data-slot":"questionnaire-review-section",className:u("flex flex-col gap-3.5",t)},y),{children:[s.length>0&&p("div",{className:"flex flex-col items-start gap-2.5",children:[i("div",{className:"flex gap-2",children:s.slice(0,l).map((g,P)=>{var q;return i("button",{type:"button",onClick:()=>k(P),"aria-label":`Open photo ${P+1}`,className:"h-[84px] w-[120px] overflow-hidden rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring/50",children:i("img",{src:g.src,alt:(q=g.alt)!=null?q:"",className:"size-full object-cover"})},`${g.src}-${P}`)})}),i(Q,{type:"button",variant:"outline",size:"sm",onClick:()=>k(0),className:"h-7 rounded-sm border-foreground/15 px-2.5 text-xs font-semibold tracking-[0.01em]",children:m(s.length)}),i(w,{photos:s,open:b!==null,onOpenChange:g=>!g&&k(null),initialIndex:b!=null?b:0},b!=null?b:"closed")]}),o&&i("h3",{className:"text-base font-medium leading-[22px] text-foreground",children:o}),p("div",{className:"flex items-start gap-1",children:[p("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[n&&i("p",{className:"text-sm font-medium text-foreground",children:n}),e.length>0&&i("ul",{className:"flex flex-col gap-1 text-[13px] leading-[19px] text-muted-foreground",children:e.map((g,P)=>p("li",{children:["\u2022 ",g]},P))})]}),d&&i(B,{onClick:d})]})]}))}export{T as a,D as b,V as c,$ as d,A as e,H as f,F as g,M as h,_ as i,G as j,J as k,K as l,U as m,W as n,X as o,Y as p,Z as q,ee as r,te as s,oe as t,ie as u,B as v,ne as w,ae as x};
|
|
2
|
-
//# sourceMappingURL=chunk-2ZNU7SP6.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/components/questionnaire/index.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Questionnaire as QuestionnairePrimitive } from \"@shadcn/react/questionnaire\";\r\nimport { CheckIcon, PencilIcon } from \"lucide-react\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\nimport { Button, buttonVariants, type ButtonProps } from \"@/components/button\";\r\nimport {\r\n PhotoLightbox,\r\n type PhotoLightboxPhoto,\r\n} from \"@/components/photo-lightbox\";\r\n\r\ntype NavigationButtonProps = Pick<ButtonProps, \"size\" | \"variant\">;\r\n\r\n// The primitive toggles visibility with the `hidden` attribute, which Tailwind 3 display utilities would override.\r\nconst respectHidden = \"[&[hidden]]:hidden\";\r\n\r\nfunction Questionnaire({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Root>) {\r\n return (\r\n <QuestionnairePrimitive.Root\r\n data-slot=\"questionnaire\"\r\n className={cn(\"flex w-full min-w-0 flex-col gap-4\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireCard({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"questionnaire-card\"\r\n className={cn(\r\n \"flex w-full flex-col gap-5 rounded-xl border bg-background px-6 pb-6 pt-5\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireHeader({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"h2\">) {\r\n return (\r\n <h2\r\n data-slot=\"questionnaire-header\"\r\n className={cn(\r\n \"text-2xl font-bold leading-8 tracking-[-0.01em] text-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireProgress({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Progress>) {\r\n return (\r\n <QuestionnairePrimitive.Progress\r\n data-slot=\"questionnaire-progress\"\r\n className={cn(\r\n \"min-h-4 w-fit text-xs font-medium tabular-nums text-foreground/[0.74]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireItem({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Item>) {\r\n return (\r\n <QuestionnairePrimitive.Item\r\n data-slot=\"questionnaire-item\"\r\n className={cn(\r\n \"flex min-w-0 flex-col gap-4 border-0 p-0 outline-none\",\r\n respectHidden,\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireTitle({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Title>) {\r\n return (\r\n <QuestionnairePrimitive.Title\r\n data-slot=\"questionnaire-title\"\r\n className={cn(\r\n \"text-pretty p-0 text-base font-medium leading-[22px] text-foreground [&:not(:has(~[data-slot=questionnaire-description]))]:mb-4\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireDescription({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Description>) {\r\n return (\r\n <QuestionnairePrimitive.Description\r\n data-slot=\"questionnaire-description\"\r\n className={cn(\r\n \"text-pretty text-sm tracking-[0.005em] text-muted-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireChoices({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Choices>) {\r\n return (\r\n <QuestionnairePrimitive.Choices\r\n data-slot=\"questionnaire-choices\"\r\n className={cn(\r\n \"group/questionnaire-choices grid min-w-0 gap-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport type QuestionnaireChoiceProps = React.ComponentProps<\r\n typeof QuestionnairePrimitive.Choice\r\n> & {\r\n /** Content pinned to the right edge, such as a \"Recommended\" badge */\r\n badge?: React.ReactNode;\r\n};\r\n\r\nfunction QuestionnaireChoice({\r\n children,\r\n className,\r\n badge,\r\n ...props\r\n}: QuestionnaireChoiceProps) {\r\n return (\r\n <QuestionnairePrimitive.Choice\r\n data-slot=\"questionnaire-choice\"\r\n className={cn(\r\n \"group/questionnaire-choice relative flex cursor-pointer select-none items-start gap-2.5 rounded-md border border-input bg-background px-[13px] py-[11px] text-start text-sm outline-none transition-colors hover:bg-muted/50\",\r\n \"has-[>input:focus-visible]:ring-2 has-[>input:focus-visible]:ring-ring/50\",\r\n \"data-[checked]:border-surface-color-brand data-[checked]:bg-surface-color-brand-bland\",\r\n \"data-[invalid]:border-destructive\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <QuestionnairePrimitive.ChoiceInput\r\n data-slot=\"questionnaire-choice-input\"\r\n className=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0\"\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n data-slot=\"questionnaire-choice-indicator\"\r\n className=\"pointer-events-none relative mt-[3px] flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input bg-background group-data-[type=radio]/questionnaire-choice:rounded-full group-data-[checked]/questionnaire-choice:border-surface-color-brand group-data-[checked]/questionnaire-choice:bg-surface-color-brand group-data-[checked]/questionnaire-choice:text-inverted-primary\"\r\n >\r\n <span\r\n data-slot=\"questionnaire-choice-indicator-dot\"\r\n className=\"hidden size-1.5 rounded-full bg-inverted-primary group-data-[checked]/questionnaire-choice:block group-data-[type=checkbox]/questionnaire-choice:hidden\"\r\n />\r\n <CheckIcon\r\n data-slot=\"questionnaire-choice-indicator-check\"\r\n className=\"hidden size-3 stroke-[3] group-data-[checked]/questionnaire-choice:block group-data-[type=radio]/questionnaire-choice:hidden\"\r\n />\r\n </span>\r\n <QuestionnairePrimitive.ChoiceLabel\r\n data-slot=\"questionnaire-choice-label\"\r\n className=\"flex min-w-0 flex-1 flex-col gap-0.5 leading-[1.375] text-foreground\"\r\n >\r\n {children}\r\n </QuestionnairePrimitive.ChoiceLabel>\r\n {badge && (\r\n <span\r\n data-slot=\"questionnaire-choice-badge\"\r\n className=\"pointer-events-none flex shrink-0 self-center\"\r\n >\r\n {badge}\r\n </span>\r\n )}\r\n </QuestionnairePrimitive.Choice>\r\n );\r\n}\r\n\r\nfunction QuestionnaireChoiceDescription({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) {\r\n return (\r\n <span\r\n data-slot=\"questionnaire-choice-description\"\r\n className={cn(\"text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport type QuestionnaireChoiceTileProps = Omit<\r\n React.ComponentProps<typeof QuestionnairePrimitive.Choice>,\r\n \"children\"\r\n> & {\r\n label: string;\r\n image: string;\r\n};\r\n\r\n/**\r\n * Image swatch choice, laid out in a grid via `QuestionnaireChoices className=\"grid-cols-2\"`.\r\n * @param props.label - text under the image\r\n * @param props.image - image URL\r\n */\r\nfunction QuestionnaireChoiceTile({\r\n className,\r\n label,\r\n image,\r\n ...props\r\n}: QuestionnaireChoiceTileProps) {\r\n return (\r\n <QuestionnairePrimitive.Choice\r\n data-slot=\"questionnaire-choice-tile\"\r\n className={cn(\r\n \"group/questionnaire-choice relative flex cursor-pointer select-none flex-col gap-1.5 rounded-md border border-input bg-background px-1.5 pb-2 pt-1.5 outline-none transition-colors hover:bg-muted/50\",\r\n \"has-[>input:focus-visible]:ring-2 has-[>input:focus-visible]:ring-ring/50\",\r\n \"data-[checked]:border-2 data-[checked]:border-surface-color-brand data-[checked]:bg-surface-color-brand-bland data-[checked]:px-[5px] data-[checked]:pb-[7px] data-[checked]:pt-[5px]\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <QuestionnairePrimitive.ChoiceInput\r\n data-slot=\"questionnaire-choice-input\"\r\n className=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0\"\r\n />\r\n <img\r\n src={image}\r\n alt=\"\"\r\n className=\"pointer-events-none h-[52px] w-full rounded-[6px] object-cover\"\r\n />\r\n <QuestionnairePrimitive.ChoiceLabel\r\n data-slot=\"questionnaire-choice-label\"\r\n className=\"text-[11px] text-foreground/[0.74] group-data-[checked]/questionnaire-choice:font-semibold group-data-[checked]/questionnaire-choice:text-content-brand\"\r\n >\r\n {label}\r\n </QuestionnairePrimitive.ChoiceLabel>\r\n </QuestionnairePrimitive.Choice>\r\n );\r\n}\r\n\r\n/** Content revealed, and submitted, only while the choice rendered right before it is checked. */\r\nfunction QuestionnaireChoiceDetails({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"fieldset\">) {\r\n const ref = React.useRef<HTMLFieldSetElement>(null);\r\n const [active, setActive] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const choice = ref.current?.previousElementSibling;\r\n if (!choice) return;\r\n const sync = () => setActive(choice.hasAttribute(\"data-checked\"));\r\n sync();\r\n const observer = new MutationObserver(sync);\r\n observer.observe(choice, { attributeFilter: [\"data-checked\"] });\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n return (\r\n <fieldset\r\n ref={ref}\r\n data-slot=\"questionnaire-choice-details\"\r\n disabled={!active}\r\n className={cn(\r\n \"m-0 hidden min-w-0 border-0 p-0 [[data-checked]+&]:block\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireInput({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Input>) {\r\n return (\r\n <QuestionnairePrimitive.Input\r\n data-slot=\"questionnaire-input\"\r\n className={cn(\r\n \"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-destructive md:text-sm\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport type QuestionnaireValueProps = Omit<\r\n React.ComponentProps<typeof QuestionnairePrimitive.Input>,\r\n \"value\" | \"defaultValue\" | \"type\"\r\n> & {\r\n value: string | number | undefined;\r\n};\r\n\r\n/**\r\n * Hidden answer for an item driven by a custom control (e.g. PhotoUpload), so Next treats it as answered.\r\n * @param props.value - the answer; empty means unanswered\r\n */\r\nfunction QuestionnaireValue({ value, ...props }: QuestionnaireValueProps) {\r\n return (\r\n <QuestionnairePrimitive.Input\r\n data-slot=\"questionnaire-value\"\r\n hidden\r\n readOnly\r\n tabIndex={-1}\r\n aria-hidden\r\n value={value ?? \"\"}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireError({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Error>) {\r\n return (\r\n <QuestionnairePrimitive.Error\r\n data-slot=\"questionnaire-error\"\r\n className={cn(\"text-sm text-destructive\", respectHidden, className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction QuestionnaireActions({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"questionnaire-actions\"\r\n className={cn(\r\n \"grid min-h-8 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nconst navigationButtonClassName = \"h-8 rounded-md px-2.5 text-sm\";\r\n\r\nfunction QuestionnairePrevious({\r\n children,\r\n className,\r\n size,\r\n variant = \"outline\",\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Previous> &\r\n NavigationButtonProps) {\r\n return (\r\n <QuestionnairePrimitive.Previous\r\n data-slot=\"questionnaire-previous\"\r\n className={cn(\r\n buttonVariants({ size, variant }),\r\n navigationButtonClassName,\r\n \"col-start-1 row-start-1 justify-self-start\",\r\n respectHidden,\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children ?? \"Previous\"}\r\n </QuestionnairePrimitive.Previous>\r\n );\r\n}\r\n\r\nfunction QuestionnaireSkip({\r\n children,\r\n className,\r\n size,\r\n variant = \"outline\",\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Skip> &\r\n NavigationButtonProps) {\r\n return (\r\n <QuestionnairePrimitive.Skip\r\n data-slot=\"questionnaire-skip\"\r\n className={cn(\r\n buttonVariants({ size, variant }),\r\n navigationButtonClassName,\r\n \"col-start-2 row-start-1 justify-self-end\",\r\n respectHidden,\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children ?? \"Skip\"}\r\n </QuestionnairePrimitive.Skip>\r\n );\r\n}\r\n\r\nfunction QuestionnaireNext({\r\n children,\r\n className,\r\n size,\r\n variant = \"default\",\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Next> &\r\n NavigationButtonProps) {\r\n return (\r\n <QuestionnairePrimitive.Next\r\n data-slot=\"questionnaire-next\"\r\n className={cn(\r\n buttonVariants({ size, variant }),\r\n navigationButtonClassName,\r\n \"col-start-3 row-start-1 justify-self-end\",\r\n respectHidden,\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children ?? \"Next\"}\r\n </QuestionnairePrimitive.Next>\r\n );\r\n}\r\n\r\nfunction QuestionnaireSubmit({\r\n children,\r\n className,\r\n size,\r\n variant = \"default\",\r\n ...props\r\n}: React.ComponentProps<typeof QuestionnairePrimitive.Submit> &\r\n NavigationButtonProps) {\r\n return (\r\n <QuestionnairePrimitive.Submit\r\n data-slot=\"questionnaire-submit\"\r\n className={cn(\r\n buttonVariants({ size, variant }),\r\n navigationButtonClassName,\r\n \"col-start-3 row-start-1 justify-self-end\",\r\n respectHidden,\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children ?? \"Submit\"}\r\n </QuestionnairePrimitive.Submit>\r\n );\r\n}\r\n\r\nexport type QuestionnaireCompletedStepProps = Omit<\r\n React.ComponentProps<\"div\">,\r\n \"title\"\r\n> & {\r\n title: React.ReactNode;\r\n summary?: React.ReactNode;\r\n onEdit?: () => void;\r\n editLabel?: string;\r\n};\r\n\r\n/**\r\n * Collapsed summary of a finished service, shown above the active questionnaire.\r\n * @param props.title - service name\r\n * @param props.summary - one-line recap of the answers\r\n * @param props.onEdit - renders an Edit button when provided\r\n */\r\nfunction QuestionnaireCompletedStep({\r\n className,\r\n title,\r\n summary,\r\n onEdit,\r\n editLabel = \"Edit\",\r\n ...props\r\n}: QuestionnaireCompletedStepProps) {\r\n return (\r\n <div\r\n data-slot=\"questionnaire-completed-step\"\r\n className={cn(\r\n \"flex w-full items-start gap-3 rounded-xl border bg-background px-5 py-4\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"flex size-6 shrink-0 items-center justify-center rounded-full bg-foreground/80 text-background\">\r\n <CheckIcon className=\"size-3.5 stroke-[3]\" aria-hidden=\"true\" />\r\n </span>\r\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\r\n <p className=\"text-sm font-medium text-foreground\">{title}</p>\r\n {summary && (\r\n <p className=\"text-[13px] leading-[19px] text-muted-foreground\">\r\n {summary}\r\n </p>\r\n )}\r\n </div>\r\n {onEdit && (\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={onEdit}\r\n className=\"text-[13px] font-semibold text-foreground/[0.74]\"\r\n >\r\n <PencilIcon />\r\n {editLabel}\r\n </Button>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction QuestionnaireEditButton({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof Button>) {\r\n return (\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className={cn(\r\n \"h-8 shrink-0 gap-1.5 rounded-md border-foreground/15 px-3 text-[13px] font-semibold tracking-[0.005em]\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <PencilIcon />\r\n {children ?? \"Edit\"}\r\n </Button>\r\n );\r\n}\r\n\r\nexport type QuestionnaireReviewProps = Omit<\r\n React.ComponentProps<\"div\">,\r\n \"title\"\r\n> & {\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n /** Rendered below the summary panel, typically the submit button */\r\n action?: React.ReactNode;\r\n};\r\n\r\n/**\r\n * Summary card listing every answered service before the request is sent.\r\n * @param props.action - footer content, usually the full-width submit button\r\n */\r\nfunction QuestionnaireReview({\r\n className,\r\n title = \"Review your request\",\r\n description = \"Check your details before sending your request to local pros.\",\r\n action,\r\n children,\r\n ...props\r\n}: QuestionnaireReviewProps) {\r\n return (\r\n <div\r\n data-slot=\"questionnaire-review\"\r\n className={cn(\r\n \"flex w-full flex-col gap-5 rounded-xl border border-foreground/15 bg-background px-6 pb-6 pt-5\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div className=\"flex flex-col gap-1\">\r\n <h2 className=\"text-base font-medium text-foreground\">{title}</h2>\r\n {description && (\r\n <p className=\"text-sm text-muted-foreground\">{description}</p>\r\n )}\r\n </div>\r\n <div className=\"flex flex-col divide-y divide-foreground/10 rounded-lg border border-foreground/15 bg-muted p-4 *:py-3.5 first:*:pt-0 last:*:pb-0\">\r\n {children}\r\n </div>\r\n {action}\r\n </div>\r\n );\r\n}\r\n\r\nexport type QuestionnaireReviewSectionProps = Omit<\r\n React.ComponentProps<\"section\">,\r\n \"title\"\r\n> & {\r\n heading?: React.ReactNode;\r\n title?: React.ReactNode;\r\n items?: React.ReactNode[];\r\n photos?: PhotoLightboxPhoto[];\r\n /** Number of photo thumbnails shown before \"Show all photos\" */\r\n visiblePhotos?: number;\r\n onEdit?: () => void;\r\n showPhotosLabel?: (count: number) => string;\r\n};\r\n\r\n/**\r\n * One service (or the additional details) inside `QuestionnaireReview`.\r\n * @param props.heading - larger label above the section, e.g. \"Additional details\"\r\n * @param props.title - service name\r\n * @param props.items - answers, rendered as bullets\r\n * @param props.photos - thumbnails, browsable in a lightbox\r\n * @param props.onEdit - renders an Edit button when provided\r\n */\r\nfunction QuestionnaireReviewSection({\r\n className,\r\n heading,\r\n title,\r\n items = [],\r\n photos = [],\r\n visiblePhotos = 2,\r\n onEdit,\r\n showPhotosLabel = (count) => `Show all photos (${count})`,\r\n ...props\r\n}: QuestionnaireReviewSectionProps) {\r\n const [lightboxIndex, setLightboxIndex] = React.useState<number | null>(null);\r\n\r\n return (\r\n <section\r\n data-slot=\"questionnaire-review-section\"\r\n className={cn(\"flex flex-col gap-3.5\", className)}\r\n {...props}\r\n >\r\n {photos.length > 0 && (\r\n <div className=\"flex flex-col items-start gap-2.5\">\r\n <div className=\"flex gap-2\">\r\n {photos.slice(0, visiblePhotos).map((photo, index) => (\r\n <button\r\n key={`${photo.src}-${index}`}\r\n type=\"button\"\r\n onClick={() => setLightboxIndex(index)}\r\n aria-label={`Open photo ${index + 1}`}\r\n className=\"h-[84px] w-[120px] overflow-hidden rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring/50\"\r\n >\r\n <img\r\n src={photo.src}\r\n alt={photo.alt ?? \"\"}\r\n className=\"size-full object-cover\"\r\n />\r\n </button>\r\n ))}\r\n </div>\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => setLightboxIndex(0)}\r\n className=\"h-7 rounded-sm border-foreground/15 px-2.5 text-xs font-semibold tracking-[0.01em]\"\r\n >\r\n {showPhotosLabel(photos.length)}\r\n </Button>\r\n <PhotoLightbox\r\n key={lightboxIndex ?? \"closed\"}\r\n photos={photos}\r\n open={lightboxIndex !== null}\r\n onOpenChange={(open) => !open && setLightboxIndex(null)}\r\n initialIndex={lightboxIndex ?? 0}\r\n />\r\n </div>\r\n )}\r\n {heading && (\r\n <h3 className=\"text-base font-medium leading-[22px] text-foreground\">\r\n {heading}\r\n </h3>\r\n )}\r\n <div className=\"flex items-start gap-1\">\r\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\r\n {title && (\r\n <p className=\"text-sm font-medium text-foreground\">{title}</p>\r\n )}\r\n {items.length > 0 && (\r\n <ul className=\"flex flex-col gap-1 text-[13px] leading-[19px] text-muted-foreground\">\r\n {items.map((item, index) => (\r\n <li key={index}>\u2022 {item}</li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n {onEdit && <QuestionnaireEditButton onClick={onEdit} />}\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport {\r\n Questionnaire,\r\n QuestionnaireActions,\r\n QuestionnaireCard,\r\n QuestionnaireChoice,\r\n QuestionnaireChoiceDescription,\r\n QuestionnaireChoiceDetails,\r\n QuestionnaireChoiceTile,\r\n QuestionnaireChoices,\r\n QuestionnaireCompletedStep,\r\n QuestionnaireDescription,\r\n QuestionnaireEditButton,\r\n QuestionnaireError,\r\n QuestionnaireHeader,\r\n QuestionnaireInput,\r\n QuestionnaireItem,\r\n QuestionnaireNext,\r\n QuestionnairePrevious,\r\n QuestionnaireProgress,\r\n QuestionnaireReview,\r\n QuestionnaireReviewSection,\r\n QuestionnaireSkip,\r\n QuestionnaireSubmit,\r\n QuestionnaireTitle,\r\n QuestionnaireValue,\r\n};\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "QuestionnairePrimitive", "CheckIcon", "PencilIcon", "jsx", "jsxs", "respectHidden", "Questionnaire", "_a", "_b", "className", "props", "__objRest", "QuestionnairePrimitive", "__spreadValues", "cn", "QuestionnaireCard", "QuestionnaireHeader", "QuestionnaireProgress", "QuestionnaireItem", "QuestionnaireTitle", "QuestionnaireDescription", "QuestionnaireChoices", "QuestionnaireChoice", "children", "badge", "__spreadProps", "CheckIcon", "QuestionnaireChoiceDescription", "QuestionnaireChoiceTile", "label", "image", "QuestionnaireChoiceDetails", "ref", "active", "setActive", "choice", "sync", "observer", "QuestionnaireInput", "QuestionnaireValue", "value", "QuestionnaireError", "QuestionnaireActions", "navigationButtonClassName", "QuestionnairePrevious", "size", "variant", "buttonVariants", "QuestionnaireSkip", "QuestionnaireNext", "QuestionnaireSubmit", "QuestionnaireCompletedStep", "title", "summary", "onEdit", "editLabel", "Button", "PencilIcon", "QuestionnaireEditButton", "QuestionnaireReview", "description", "action", "QuestionnaireReviewSection", "heading", "items", "photos", "visiblePhotos", "showPhotosLabel", "count", "lightboxIndex", "setLightboxIndex", "photo", "index", "PhotoLightbox", "open", "item"]
|
|
7
|
-
}
|
package/dist/chunk-C6BWVSUV.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as C,b as T,i as y,j as h,m as x,n as g}from"./chunk-VIGX5NKJ.js";import{a as l,b as f,d as D,g as M}from"./chunk-7EVFMYIH.js";import{a as v}from"./chunk-46MFR2CI.js";import{a as R}from"./chunk-WIFBPNRH.js";import{a,b as w,c as i}from"./chunk-WHECA25N.js";import*as p from"react";import{Fragment as S,jsx as n}from"react/jsx-runtime";var m=p.createContext({isTouch:!1}),d=()=>p.useContext(m),b=({children:e,open:o,onOpenChange:s})=>{let t=v(),r=p.useMemo(()=>({isTouch:t}),[t]);return t?n(m.Provider,{value:r,children:n(l,{open:o,onOpenChange:s,children:e})}):n(m.Provider,{value:r,children:n(C,{open:o,onOpenChange:s,children:e})})};b.displayName="DropdownMenuResponsive";var P=p.forwardRef((t,s)=>{var r=t,{className:e}=r,o=i(r,["className"]);let{isTouch:u}=d();return n(u?f:T,a({ref:s,className:e},o))});P.displayName="DropdownMenuResponsiveTrigger";var L=p.forwardRef((r,t)=>{var u=r,{className:e,children:o}=u,s=i(u,["className","children"]);let{isTouch:c}=d();return c?n(M,{ref:t,className:e,children:n("div",{className:"pb-safe flex flex-col",children:o})}):n(y,w(a({ref:t,className:e},s),{children:o}))});L.displayName="DropdownMenuResponsiveContent";var E=p.forwardRef((u,r)=>{var c=u,{className:e,children:o,onClick:s}=c,t=i(c,["className","children","onClick"]);let{isTouch:N}=d();return N?n(D,{asChild:!0,children:n("button",{className:R("flex w-full items-center gap-2 px-4 py-3 text-sm transition-colors hover:bg-accent focus:outline-none",e),onClick:s,children:o})}):n(h,w(a({ref:r,className:e,onClick:s},t),{children:o}))});E.displayName="DropdownMenuResponsiveItem";var H=s=>{var t=s,{className:e}=t,o=i(t,["className"]);let{isTouch:r}=d();return r?n("div",a({className:R("px-4 py-2 text-xs font-semibold text-muted-foreground",e)},o)):n(x,a({className:e},o))};H.displayName="DropdownMenuResponsiveLabel";var I=s=>{var t=s,{className:e}=t,o=i(t,["className"]);let{isTouch:r}=d();return r?n("hr",{className:R("my-1 border-muted",e)}):n(g,a({className:e},o))};I.displayName="DropdownMenuResponsiveSeparator";var W=p.forwardRef((t,s)=>{var r=t,{children:e}=r,o=i(r,["children"]);let{isTouch:u}=d();return u?n(D,w(a({ref:s},o),{children:e})):n(S,{children:e})});W.displayName="DropdownMenuResponsiveClose";export{d as a,b,P as c,L as d,E as e,H as f,I as g,W as h};
|
|
2
|
-
//# sourceMappingURL=chunk-C6BWVSUV.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/components/dropdown-menu-responsive/index.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuTrigger,\r\n} from \"@/components/dropdown-menu\";\r\nimport {\r\n Drawer,\r\n DrawerClose,\r\n DrawerContent,\r\n DrawerTrigger,\r\n} from \"@/components/drawer\";\r\nimport { useIsTouchDevice } from \"@/hooks/use-is-touch-device\";\r\nimport { cn } from \"@/lib/utils\";\r\n\r\ntype DropdownMenuResponsiveContextType = {\r\n isTouch: boolean;\r\n};\r\n\r\nconst DropdownMenuResponsiveContext =\r\n React.createContext<DropdownMenuResponsiveContextType>({\r\n isTouch: false,\r\n });\r\n\r\nconst useDropdownMenuResponsive = () =>\r\n React.useContext(DropdownMenuResponsiveContext);\r\n\r\ntype DropdownMenuResponsiveProps = {\r\n children: React.ReactNode;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n};\r\n\r\nconst DropdownMenuResponsive = ({\r\n children,\r\n open,\r\n onOpenChange,\r\n}: DropdownMenuResponsiveProps) => {\r\n const isTouch = useIsTouchDevice();\r\n\r\n const contextValue = React.useMemo(() => ({ isTouch }), [isTouch]);\r\n\r\n if (isTouch) {\r\n return (\r\n <DropdownMenuResponsiveContext.Provider value={contextValue}>\r\n <Drawer open={open} onOpenChange={onOpenChange}>\r\n {children}\r\n </Drawer>\r\n </DropdownMenuResponsiveContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuResponsiveContext.Provider value={contextValue}>\r\n <DropdownMenu open={open} onOpenChange={onOpenChange}>\r\n {children}\r\n </DropdownMenu>\r\n </DropdownMenuResponsiveContext.Provider>\r\n );\r\n};\r\nDropdownMenuResponsive.displayName = \"DropdownMenuResponsive\";\r\n\r\nconst DropdownMenuResponsiveTrigger = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuTrigger>\r\n>(({ className, ...props }, ref) => {\r\n const { isTouch } = useDropdownMenuResponsive();\r\n const Comp = isTouch ? DrawerTrigger : DropdownMenuTrigger;\r\n\r\n return <Comp ref={ref} className={className} {...props} />;\r\n});\r\nDropdownMenuResponsiveTrigger.displayName = \"DropdownMenuResponsiveTrigger\";\r\n\r\nconst DropdownMenuResponsiveContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuContent>\r\n>(({ className, children, ...props }, ref) => {\r\n const { isTouch } = useDropdownMenuResponsive();\r\n\r\n if (isTouch) {\r\n return (\r\n <DrawerContent ref={ref} className={className}>\r\n <div className=\"pb-safe flex flex-col\">{children}</div>\r\n </DrawerContent>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuContent ref={ref} className={className} {...props}>\r\n {children}\r\n </DropdownMenuContent>\r\n );\r\n});\r\nDropdownMenuResponsiveContent.displayName = \"DropdownMenuResponsiveContent\";\r\n\r\nconst DropdownMenuResponsiveItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuItem>\r\n>(({ className, children, onClick, ...props }, ref) => {\r\n const { isTouch } = useDropdownMenuResponsive();\r\n\r\n if (isTouch) {\r\n return (\r\n <DrawerClose asChild>\r\n <button\r\n className={cn(\r\n \"flex w-full items-center gap-2 px-4 py-3 text-sm transition-colors hover:bg-accent focus:outline-none\",\r\n className,\r\n )}\r\n onClick={\r\n onClick as unknown as React.MouseEventHandler<HTMLButtonElement>\r\n }\r\n >\r\n {children}\r\n </button>\r\n </DrawerClose>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuItem\r\n ref={ref}\r\n className={className}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n {children}\r\n </DropdownMenuItem>\r\n );\r\n});\r\nDropdownMenuResponsiveItem.displayName = \"DropdownMenuResponsiveItem\";\r\n\r\nconst DropdownMenuResponsiveLabel = ({\r\n className,\r\n ...props\r\n}: React.ComponentPropsWithoutRef<typeof DropdownMenuLabel>) => {\r\n const { isTouch } = useDropdownMenuResponsive();\r\n\r\n if (isTouch) {\r\n return (\r\n <div\r\n className={cn(\r\n \"px-4 py-2 text-xs font-semibold text-muted-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n return <DropdownMenuLabel className={className} {...props} />;\r\n};\r\nDropdownMenuResponsiveLabel.displayName = \"DropdownMenuResponsiveLabel\";\r\n\r\nconst DropdownMenuResponsiveSeparator = ({\r\n className,\r\n ...props\r\n}: React.ComponentPropsWithoutRef<typeof DropdownMenuSeparator>) => {\r\n const { isTouch } = useDropdownMenuResponsive();\r\n\r\n if (isTouch) {\r\n return <hr className={cn(\"my-1 border-muted\", className)} />;\r\n }\r\n\r\n return <DropdownMenuSeparator className={className} {...props} />;\r\n};\r\nDropdownMenuResponsiveSeparator.displayName = \"DropdownMenuResponsiveSeparator\";\r\n\r\nconst DropdownMenuResponsiveClose = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentPropsWithoutRef<typeof DrawerClose>\r\n>(({ children, ...props }, ref) => {\r\n const { isTouch } = useDropdownMenuResponsive();\r\n\r\n if (isTouch) {\r\n return (\r\n <DrawerClose ref={ref} {...props}>\r\n {children}\r\n </DrawerClose>\r\n );\r\n }\r\n\r\n return <>{children}</>;\r\n});\r\nDropdownMenuResponsiveClose.displayName = \"DropdownMenuResponsiveClose\";\r\n\r\nexport {\r\n DropdownMenuResponsive,\r\n DropdownMenuResponsiveTrigger,\r\n DropdownMenuResponsiveContent,\r\n DropdownMenuResponsiveItem,\r\n DropdownMenuResponsiveLabel,\r\n DropdownMenuResponsiveSeparator,\r\n DropdownMenuResponsiveClose,\r\n useDropdownMenuResponsive,\r\n};\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "Fragment", "jsx", "DropdownMenuResponsiveContext", "useDropdownMenuResponsive", "DropdownMenuResponsive", "children", "open", "onOpenChange", "isTouch", "useIsTouchDevice", "contextValue", "Drawer", "DropdownMenu", "DropdownMenuResponsiveTrigger", "_a", "ref", "_b", "className", "props", "__objRest", "DrawerTrigger", "DropdownMenuTrigger", "__spreadValues", "DropdownMenuResponsiveContent", "DrawerContent", "DropdownMenuContent", "__spreadProps", "DropdownMenuResponsiveItem", "onClick", "DrawerClose", "cn", "DropdownMenuItem", "DropdownMenuResponsiveLabel", "DropdownMenuLabel", "DropdownMenuResponsiveSeparator", "DropdownMenuSeparator", "DropdownMenuResponsiveClose"]
|
|
7
|
-
}
|
package/dist/chunk-EPZCTKQC.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as N,c as h,d as y,e as w,f as P,h as p}from"./chunk-NAS2AFA3.js";import{a as R,b as k,d as S}from"./chunk-BY3UM6EV.js";import{b as C}from"./chunk-JAPB4ZVX.js";import{a as s}from"./chunk-WIFBPNRH.js";import*as a from"react";import{CheckIcon as H,ChevronsUpDownIcon as J}from"lucide-react";import{jsx as o,jsxs as t}from"react/jsx-runtime";function Y({items:u,placeholder:I="Select item...",emptyMessage:_="No item found.",searchable:B=!1,searchPlaceholder:E="Search...",value:v,onValueChange:r,onInputChange:n,className:G,popoverClassName:L,trigger:T,onAddOption:l,addNewOption:f}){var g;let[x,m]=a.useState(!1),[j,D]=a.useState(""),[F,b]=a.useState(""),i=v!==void 0,c=i?v:j,M=a.useCallback(e=>{i?r==null||r(e):D(e)},[i,r]),U=a.useCallback(e=>{b(e),n==null||n(e)},[n]),q=a.useCallback(()=>{l&&(l(""),b(""),m(!1))},[l]),z=!!(l&&f);return t(R,{open:x,onOpenChange:m,children:[o(k,{asChild:!0,children:T||t(C,{variant:"outline",role:"combobox","aria-expanded":x,className:s("w-[300px] justify-between",G),children:[c?(g=u.find(e=>e.value===c))==null?void 0:g.label:I,o(J,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o(S,{className:s("w-[300px] p-0",L),children:t(N,{children:[B?o(h,{placeholder:E,onValueChange:U,value:F}):o("button",{autoFocus:!0,"aria-hidden":"true",className:"sr-only"}),t(y,{children:[o(w,{children:_}),t(P,{children:[u.map(e=>{let d=c===e.value;return t(p,{value:e.value,onSelect:A=>{M(d?"":A),m(!1)},className:s("group flex items-center gap-3 p-3",{"[&_*]:!text-primary":d}),children:[o(H,{className:s("mt-0.5 h-4 w-4 shrink-0",d?"opacity-100":"opacity-0")}),t("div",{className:s("flex min-w-0 flex-1 flex-col gap-2"),children:[o("div",{className:"text-sm leading-none",children:e.label}),o("div",{className:"text-sm leading-none text-muted-foreground",children:e.description})]})]},e.value)}),z&&t(p,{value:"__add_new_option",onSelect:()=>{q()},className:"flex items-center gap-3 p-3 text-primary",children:[o("div",{className:"mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded border border-current text-xs font-bold",children:"+"}),o("div",{className:"flex min-w-0 flex-1 flex-col gap-2",children:o("div",{className:"text-sm font-medium leading-none",children:f})})]})]})]})]})})]})}export{Y as a};
|
|
2
|
-
//# sourceMappingURL=chunk-EPZCTKQC.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/components/combobox/index.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\";\n\nimport * as React from \"react\";\nimport { CheckIcon, ChevronsUpDownIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/popover\";\n\ntype ComboboxItem = {\n value: string;\n label: string;\n description: string;\n};\n\nexport type { ComboboxItem };\n\nexport type ComboboxProps = {\n items: ComboboxItem[];\n placeholder?: string;\n emptyMessage?: string;\n searchable?: boolean;\n searchPlaceholder?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n onInputChange?: (value: string) => void;\n className?: string;\n popoverClassName?: string;\n trigger?: React.ReactNode;\n onAddOption?: (value: string) => void;\n addNewOption?: string;\n};\n\nexport function Combobox({\n items,\n placeholder = \"Select item...\",\n emptyMessage = \"No item found.\",\n searchable = false,\n searchPlaceholder = \"Search...\",\n value: controlledValue,\n onValueChange,\n onInputChange,\n className,\n popoverClassName,\n trigger,\n onAddOption,\n addNewOption,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(\"\");\n const [searchValue, setSearchValue] = React.useState(\"\");\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const handleValueChange = React.useCallback(\n (newValue: string) => {\n if (isControlled) {\n onValueChange?.(newValue);\n } else {\n setInternalValue(newValue);\n }\n },\n [isControlled, onValueChange],\n );\n\n const handleSearchChange = React.useCallback(\n (newSearchValue: string) => {\n setSearchValue(newSearchValue);\n onInputChange?.(newSearchValue);\n },\n [onInputChange],\n );\n\n const handleAddNew = React.useCallback(() => {\n if (onAddOption) {\n onAddOption(\"\");\n setSearchValue(\"\");\n setOpen(false);\n }\n }, [onAddOption]);\n\n const showAddNew = Boolean(onAddOption && !!addNewOption);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {trigger || (\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-[300px] justify-between\", className)}\n >\n {value\n ? items.find((item) => item.value === value)?.label\n : placeholder}\n <ChevronsUpDownIcon className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n )}\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-[300px] p-0\", popoverClassName)}>\n <Command>\n {searchable ? (\n <CommandInput\n placeholder={searchPlaceholder}\n onValueChange={handleSearchChange}\n value={searchValue}\n />\n ) : (\n <button autoFocus aria-hidden=\"true\" className=\"sr-only\" />\n )}\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {items.map((item) => {\n const selected = value === item.value;\n\n return (\n <CommandItem\n key={item.value}\n value={item.value}\n onSelect={(currentValue) => {\n handleValueChange(selected ? \"\" : currentValue);\n setOpen(false);\n }}\n className={cn(\"group flex items-center gap-3 p-3\", {\n \"[&_*]:!text-primary\": selected,\n })}\n >\n <CheckIcon\n className={cn(\n \"mt-0.5 h-4 w-4 shrink-0\",\n selected ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n <div className={cn(\"flex min-w-0 flex-1 flex-col gap-2\")}>\n <div className=\"text-sm leading-none\">{item.label}</div>\n <div className=\"text-sm leading-none text-muted-foreground\">\n {item.description}\n </div>\n </div>\n </CommandItem>\n );\n })}\n {showAddNew && (\n <CommandItem\n value={`__add_new_option`}\n onSelect={() => {\n // Prevent default value change behavior\n handleAddNew();\n }}\n className=\"flex items-center gap-3 p-3 text-primary\"\n >\n <div className=\"mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded border border-current text-xs font-bold\">\n +\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <div className=\"text-sm font-medium leading-none\">\n {addNewOption}\n </div>\n </div>\n </CommandItem>\n )}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "CheckIcon", "ChevronsUpDownIcon", "jsx", "jsxs", "Combobox", "items", "placeholder", "emptyMessage", "searchable", "searchPlaceholder", "controlledValue", "onValueChange", "onInputChange", "className", "popoverClassName", "trigger", "onAddOption", "addNewOption", "_a", "open", "setOpen", "internalValue", "setInternalValue", "searchValue", "setSearchValue", "isControlled", "value", "handleValueChange", "newValue", "handleSearchChange", "newSearchValue", "handleAddNew", "showAddNew", "Popover", "PopoverTrigger", "Button", "cn", "item", "ChevronsUpDownIcon", "PopoverContent", "Command", "CommandInput", "CommandList", "CommandEmpty", "CommandGroup", "selected", "CommandItem", "currentValue", "CheckIcon"]
|
|
7
|
-
}
|
package/dist/chunk-EWEMD7AS.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as g}from"./chunk-6MI7ACXZ.js";import{b as c}from"./chunk-JAPB4ZVX.js";import{a as m}from"./chunk-NMUGPQJR.js";import{a as s}from"./chunk-WIFBPNRH.js";import{a as o,c as e}from"./chunk-WHECA25N.js";import{cva as f}from"class-variance-authority";import{jsx as i}from"react/jsx-runtime";function w(r){var t=r,{className:n}=t,a=e(t,["className"]);return i("div",o({"data-slot":"input-group",role:"group",className:s("group/input-group shadow-xs relative flex w-full items-center rounded-md border border-input outline-none transition-[color,box-shadow] dark:bg-input/30","h-9 min-w-0 has-[>textarea]:h-auto","has-[>[data-align=inline-start]]:[&>input]:pl-2","has-[>[data-align=inline-end]]:[&>input]:pr-2","has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3","has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3","has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50","has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",n)},a))}var b=f("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]","inline-end":"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]","block-start":"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3","block-end":"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"}},defaultVariants:{align:"inline-start"}});function G(t){var u=t,{className:n,align:a="inline-start"}=u,r=e(u,["className","align"]);return i("div",o({role:"group","data-slot":"input-group-addon","data-align":a,className:s(b({align:a}),n),onClick:l=>{var p,d;l.target.closest("button")||(d=(p=l.currentTarget.parentElement)==null?void 0:p.querySelector("input"))==null||d.focus()}},r))}var h=f("flex items-center gap-2 text-sm shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",sm:"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5","icon-xs":"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}});function I(l){var p=l,{className:n,type:a="button",variant:r="ghost",size:t}=p,u=e(p,["className","type","variant","size"]);return i(c,o({type:a,variant:r,className:s(h({size:t}),n)},u))}function P(r){var t=r,{className:n}=t,a=e(t,["className"]);return i("span",o({className:s("flex items-center gap-2 text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",n)},a))}function C(r){var t=r,{className:n}=t,a=e(t,["className"]);return i(g,o({"data-slot":"input-group-control",className:s("h-full flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 dark:bg-transparent",n)},a))}function R(r){var t=r,{className:n}=t,a=e(t,["className"]);return i(m,o({"data-slot":"input-group-control",className:s("flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",n)},a))}export{w as a,G as b,I as c,P as d,C as e,R as f};
|
|
2
|
-
//# sourceMappingURL=chunk-EWEMD7AS.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/components/input-group/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/button\";\nimport { Input } from \"@/components/input\";\nimport { Textarea } from \"@/components/text-area\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group shadow-xs relative flex w-full items-center rounded-md border border-input outline-none transition-[color,box-shadow] dark:bg-input/30\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n },\n);\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size,\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> & {\n size?: \"xs\" | \"sm\" | \"icon-xs\" | \"icon-sm\";\n}) {\n return (\n <Button\n type={type}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"h-full flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],
|
|
5
|
-
"mappings": "+MACA,OAAS,OAAAA,MAA8B,2BASnC,cAAAC,MAAA,oBAFJ,SAASC,EAAWC,EAAsD,CAAtD,IAAAC,EAAAD,EAAE,WAAAE,CARtB,EAQoBD,EAAgBE,EAAAC,EAAhBH,EAAgB,CAAd,cACpB,OACEH,EAAC,MAAAO,EAAA,CACC,YAAU,cACV,KAAK,QACL,UAAWC,EACT,2JACA,qCAGA,kDACA,gDACA,iIACA,2HAGA,kMAGA,iLAEAJ,CACF,GACIC,EACN,CAEJ,CAEA,IAAMI,EAA0BC,EAC9B,0PACA,CACE,SAAU,CACR,MAAO,CACL,eACE,wEACF,aACE,uEACF,cACE,oGACF,YACE,kGACJ,CACF,EACA,gBAAiB,CACf,MAAO,cACT,CACF,CACF,EAEA,SAASC,EAAgBT,EAIsD,CAJtD,IAAAC,EAAAD,EACvB,WAAAE,EACA,MAAAQ,EAAQ,cA3DV,EAyDyBT,EAGpBE,EAAAC,EAHoBH,EAGpB,CAFH,YACA,UAGA,OACEH,EAAC,MAAAO,EAAA,CACC,KAAK,QACL,YAAU,oBACV,aAAYK,EACZ,UAAWJ,EAAGC,EAAwB,CAAE,MAAAG,CAAM,CAAC,EAAGR,CAAS,EAC3D,QAAUS,GAAM,CApEtB,IAAAX,EAAAC,EAqEaU,EAAE,OAAuB,QAAQ,QAAQ,IAG9CV,GAAAD,EAAAW,EAAE,cAAc,gBAAhB,YAAAX,EAA+B,cAAc,WAA7C,MAAAC,EAAuD,OACzD,GACIE,EACN,CAEJ,CAEA,IAAMS,EAA2BJ,EAC/B,8CACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,0GACJ,GAAI,kDACJ,UACE,8DACF,UAAW,2BACb,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CACF,EAEA,SAASK,EAAiBb,EAQvB,CARuB,IAAAC,EAAAD,EACxB,WAAAE,EACA,KAAAY,EAAO,SACP,QAAAC,EAAU,QACV,KAAAC,CArGF,EAiG0Bf,EAKrBE,EAAAC,EALqBH,EAKrB,CAJH,YACA,OACA,UACA,SAKA,OACEH,EAACmB,EAAAZ,EAAA,CACC,KAAMS,EACN,QAASC,EACT,UAAWT,EAAGM,EAAyB,CAAE,KAAAI,CAAK,CAAC,EAAGd,CAAS,GACvDC,EACN,CAEJ,CAEA,SAASe,EAAelB,EAAuD,CAAvD,IAAAC,EAAAD,EAAE,WAAAE,CApH1B,EAoHwBD,EAAgBE,EAAAC,EAAhBH,EAAgB,CAAd,cACxB,OACEH,EAAC,OAAAO,EAAA,CACC,UAAWC,EACT,yHACAJ,CACF,GACIC,EACN,CAEJ,CAEA,SAASgB,EAAgBnB,EAGS,CAHT,IAAAC,EAAAD,EACvB,WAAAE,CAjIF,EAgIyBD,EAEpBE,EAAAC,EAFoBH,EAEpB,CADH,cAGA,OACEH,EAACsB,EAAAf,EAAA,CACC,YAAU,sBACV,UAAWC,EACT,sIACAJ,CACF,GACIC,EACN,CAEJ,CAEA,SAASkB,EAAmBrB,EAGS,CAHT,IAAAC,EAAAD,EAC1B,WAAAE,CAjJF,EAgJ4BD,EAEvBE,EAAAC,EAFuBH,EAEvB,CADH,cAGA,OACEH,EAACwB,EAAAjB,EAAA,CACC,YAAU,sBACV,UAAWC,EACT,oHACAJ,CACF,GACIC,EACN,CAEJ",
|
|
6
|
-
"names": ["cva", "jsx", "InputGroup", "_a", "_b", "className", "props", "__objRest", "__spreadValues", "cn", "inputGroupAddonVariants", "cva", "InputGroupAddon", "align", "e", "inputGroupButtonVariants", "InputGroupButton", "type", "variant", "size", "Button", "InputGroupText", "InputGroupInput", "Input", "InputGroupTextarea", "Textarea"]
|
|
7
|
-
}
|
package/dist/chunk-F4MEBVNH.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as h,b as y,c as N,e as C,f as P}from"./chunk-PLDAFSMG.js";import{a as k}from"./chunk-46MFR2CI.js";import{a as n}from"./chunk-WIFBPNRH.js";import*as r from"react";import{Dialog as l}from"radix-ui";import{XIcon as R}from"lucide-react";import{jsx as e,jsxs as o}from"react/jsx-runtime";var f="rounded-full border-0 bg-primary-dark text-inverted-primary shadow-[0_1px_3px_rgba(0,0,0,0.3)] hover:bg-primary-dark/80 hover:text-inverted-primary disabled:opacity-40";function $(t,m){let u=r.useCallback(a=>t?(t.on("reInit",a),t.on("select",a),()=>{t.off("reInit",a),t.off("select",a)}):()=>{},[t]);return r.useSyncExternalStore(u,()=>{var a;return(a=t==null?void 0:t.selectedScrollSnap())!=null?a:m},()=>m)}function S({photos:t,open:m,onOpenChange:u,initialIndex:a=0,title:v="Photos",trigger:p}){let w=k(),[c,z]=r.useState(),g=r.useRef(null),d=$(c,a),x=`${d+1} of ${t.length}`;return o(l.Root,{open:m,onOpenChange:u,children:[p&&e(l.Trigger,{asChild:!0,children:p}),o(l.Portal,{children:[e(l.Overlay,{className:"fixed inset-0 z-50 bg-black/[0.92] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 max-sm:bg-black/95"}),o(l.Content,{"data-slot":"photo-lightbox","aria-describedby":void 0,onOpenAutoFocus:()=>{g.current=document.activeElement},onCloseAutoFocus:i=>{var s;p||(i.preventDefault(),(s=g.current)==null||s.focus())},className:"fixed inset-0 z-50 outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",children:[e(l.Title,{className:"sr-only",children:v}),o(h,{setApi:z,opts:{startIndex:a},className:"flex h-full flex-col items-center gap-6 p-6 sm:gap-0 sm:px-6 sm:pb-8 sm:pt-6",children:[o("div",{className:"relative flex h-10 w-full shrink-0 items-center justify-center",children:[o(l.Close,{className:n(f,"absolute flex items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-inverted-primary/60","left-0 size-8 sm:left-auto sm:right-0 sm:size-10"),children:[e(R,{className:"size-4 sm:size-5"}),e("span",{className:"sr-only",children:"Close"})]}),e("p",{className:"text-sm font-medium text-inverted-primary/60 sm:hidden",children:x}),e("p",{className:"hidden text-[11px] tracking-[0.015em] text-inverted-primary sm:block",children:w?"Swipe to navigate":"Use arrow keys to navigate \xB7 ESC to close"})]}),o("div",{className:"relative flex min-h-0 w-full flex-1 items-center justify-center sm:px-20 sm:py-8",children:[e("div",{className:"w-full",children:e(y,{className:"ml-0",children:t.map((i,s)=>{var b;return e(N,{className:"flex items-center justify-center pl-0",children:e("img",{src:i.src,alt:(b=i.alt)!=null?b:`${v} ${s+1}`,className:"max-h-[calc(100dvh-16rem)] max-w-full rounded-md object-contain shadow-[0_6px_24px_rgba(0,0,0,0.35)] sm:max-h-[calc(100dvh-14rem)] sm:max-w-[min(900px,100%)] sm:rounded-lg"})},`${i.src}-${s}`)})})}),e(C,{placement:"inline",className:n(f,"absolute left-1.5 top-1/2 size-10 -translate-y-1/2 sm:left-0 sm:size-12")}),e(P,{placement:"inline",className:n(f,"absolute right-1.5 top-1/2 size-10 -translate-y-1/2 sm:right-0 sm:size-12")})]}),t.length>1&&o("div",{className:"flex shrink-0 flex-col items-center gap-6 sm:gap-2.5",children:[e("div",{className:"flex max-w-full gap-1.5 overflow-x-auto sm:gap-2",children:t.map((i,s)=>e("button",{type:"button",onClick:()=>c==null?void 0:c.scrollTo(s),"aria-label":`Show photo ${s+1}`,"aria-current":s===d,className:n("h-9 w-12 shrink-0 overflow-hidden rounded-[5px] opacity-40 outline-none transition-opacity hover:opacity-70 focus-visible:ring-2 focus-visible:ring-inverted-primary/60 sm:h-12 sm:w-16 sm:rounded-[6px] sm:opacity-45",s===d&&"border-2 border-inverted-primary opacity-100 sm:opacity-100"),children:e("img",{src:i.src,alt:"",className:"size-full object-cover"})},`${i.src}-${s}`))}),e("div",{className:"flex gap-2.5 sm:gap-1.5","aria-hidden":"true",children:t.map((i,s)=>e("span",{className:n("size-1.5 rounded-full bg-inverted-primary/40 sm:size-2",s===d&&"bg-inverted-primary")},`${i.src}-${s}`))}),e("p",{className:"hidden text-[13px] font-medium tracking-[0.005em] text-inverted-primary/50 sm:block",children:x}),e("p",{className:"text-[11px] tracking-[0.015em] text-inverted-primary/60 sm:hidden",children:"Swipe to navigate"})]})]})]})]})]})}export{S as a};
|
|
2
|
-
//# sourceMappingURL=chunk-F4MEBVNH.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/components/photo-lightbox/index.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\r\nimport { XIcon } from \"lucide-react\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\nimport {\r\n Carousel,\r\n CarouselContent,\r\n CarouselItem,\r\n CarouselNext,\r\n CarouselPrevious,\r\n type CarouselApi,\r\n} from \"@/components/carousel\";\r\nimport { useIsTouchDevice } from \"@/hooks/use-is-touch-device\";\r\n\r\nexport type PhotoLightboxPhoto = {\r\n src: string;\r\n alt?: string;\r\n};\r\n\r\nexport type PhotoLightboxProps = {\r\n photos: PhotoLightboxPhoto[];\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n initialIndex?: number;\r\n title?: string;\r\n trigger?: React.ReactNode;\r\n};\r\n\r\nconst iconButtonClassName =\r\n \"rounded-full border-0 bg-primary-dark text-inverted-primary shadow-[0_1px_3px_rgba(0,0,0,0.3)] hover:bg-primary-dark/80 hover:text-inverted-primary disabled:opacity-40\";\r\n\r\nfunction useSelectedIndex(api: CarouselApi, fallback: number) {\r\n const subscribe = React.useCallback(\r\n (onStoreChange: () => void) => {\r\n if (!api) return () => undefined;\r\n api.on(\"reInit\", onStoreChange);\r\n api.on(\"select\", onStoreChange);\r\n return () => {\r\n api.off(\"reInit\", onStoreChange);\r\n api.off(\"select\", onStoreChange);\r\n };\r\n },\r\n [api],\r\n );\r\n\r\n return React.useSyncExternalStore(\r\n subscribe,\r\n () => api?.selectedScrollSnap() ?? fallback,\r\n () => fallback,\r\n );\r\n}\r\n\r\n/**\r\n * Full-screen photo viewer with arrows, thumbnails and dots; swipe-first on touch devices.\r\n * @param props.photos - photos to browse\r\n * @param props.initialIndex - photo shown when the viewer opens\r\n * @param props.trigger - optional element that opens the viewer\r\n */\r\nfunction PhotoLightbox({\r\n photos,\r\n open,\r\n onOpenChange,\r\n initialIndex = 0,\r\n title = \"Photos\",\r\n trigger,\r\n}: PhotoLightboxProps) {\r\n const isTouch = useIsTouchDevice();\r\n const [api, setApi] = React.useState<CarouselApi>();\r\n const openerRef = React.useRef<HTMLElement | null>(null);\r\n const selected = useSelectedIndex(api, initialIndex);\r\n const counter = `${selected + 1} of ${photos.length}`;\r\n\r\n return (\r\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\r\n {trigger && (\r\n <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>\r\n )}\r\n <DialogPrimitive.Portal>\r\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-black/[0.92] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 max-sm:bg-black/95\" />\r\n <DialogPrimitive.Content\r\n data-slot=\"photo-lightbox\"\r\n aria-describedby={undefined}\r\n onOpenAutoFocus={() => {\r\n openerRef.current = document.activeElement as HTMLElement | null;\r\n }}\r\n onCloseAutoFocus={(event) => {\r\n // Radix only restores focus to its own Trigger\r\n if (trigger) return;\r\n event.preventDefault();\r\n openerRef.current?.focus();\r\n }}\r\n className=\"fixed inset-0 z-50 outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\r\n >\r\n <DialogPrimitive.Title className=\"sr-only\">\r\n {title}\r\n </DialogPrimitive.Title>\r\n <Carousel\r\n setApi={setApi}\r\n opts={{ startIndex: initialIndex }}\r\n className=\"flex h-full flex-col items-center gap-6 p-6 sm:gap-0 sm:px-6 sm:pb-8 sm:pt-6\"\r\n >\r\n <div className=\"relative flex h-10 w-full shrink-0 items-center justify-center\">\r\n <DialogPrimitive.Close\r\n className={cn(\r\n iconButtonClassName,\r\n \"absolute flex items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-inverted-primary/60\",\r\n \"left-0 size-8 sm:left-auto sm:right-0 sm:size-10\",\r\n )}\r\n >\r\n <XIcon className=\"size-4 sm:size-5\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n <p className=\"text-sm font-medium text-inverted-primary/60 sm:hidden\">\r\n {counter}\r\n </p>\r\n <p className=\"hidden text-[11px] tracking-[0.015em] text-inverted-primary sm:block\">\r\n {isTouch\r\n ? \"Swipe to navigate\"\r\n : \"Use arrow keys to navigate \u00B7 ESC to close\"}\r\n </p>\r\n </div>\r\n\r\n <div className=\"relative flex min-h-0 w-full flex-1 items-center justify-center sm:px-20 sm:py-8\">\r\n <div className=\"w-full\">\r\n <CarouselContent className=\"ml-0\">\r\n {photos.map((photo, index) => (\r\n <CarouselItem\r\n key={`${photo.src}-${index}`}\r\n className=\"flex items-center justify-center pl-0\"\r\n >\r\n <img\r\n src={photo.src}\r\n alt={photo.alt ?? `${title} ${index + 1}`}\r\n className=\"max-h-[calc(100dvh-16rem)] max-w-full rounded-md object-contain shadow-[0_6px_24px_rgba(0,0,0,0.35)] sm:max-h-[calc(100dvh-14rem)] sm:max-w-[min(900px,100%)] sm:rounded-lg\"\r\n />\r\n </CarouselItem>\r\n ))}\r\n </CarouselContent>\r\n </div>\r\n <CarouselPrevious\r\n placement=\"inline\"\r\n className={cn(\r\n iconButtonClassName,\r\n \"absolute left-1.5 top-1/2 size-10 -translate-y-1/2 sm:left-0 sm:size-12\",\r\n )}\r\n />\r\n <CarouselNext\r\n placement=\"inline\"\r\n className={cn(\r\n iconButtonClassName,\r\n \"absolute right-1.5 top-1/2 size-10 -translate-y-1/2 sm:right-0 sm:size-12\",\r\n )}\r\n />\r\n </div>\r\n\r\n {photos.length > 1 && (\r\n <div className=\"flex shrink-0 flex-col items-center gap-6 sm:gap-2.5\">\r\n <div className=\"flex max-w-full gap-1.5 overflow-x-auto sm:gap-2\">\r\n {photos.map((photo, index) => (\r\n <button\r\n key={`${photo.src}-${index}`}\r\n type=\"button\"\r\n onClick={() => api?.scrollTo(index)}\r\n aria-label={`Show photo ${index + 1}`}\r\n aria-current={index === selected}\r\n className={cn(\r\n \"h-9 w-12 shrink-0 overflow-hidden rounded-[5px] opacity-40 outline-none transition-opacity hover:opacity-70 focus-visible:ring-2 focus-visible:ring-inverted-primary/60 sm:h-12 sm:w-16 sm:rounded-[6px] sm:opacity-45\",\r\n index === selected &&\r\n \"border-2 border-inverted-primary opacity-100 sm:opacity-100\",\r\n )}\r\n >\r\n <img\r\n src={photo.src}\r\n alt=\"\"\r\n className=\"size-full object-cover\"\r\n />\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"flex gap-2.5 sm:gap-1.5\" aria-hidden=\"true\">\r\n {photos.map((photo, index) => (\r\n <span\r\n key={`${photo.src}-${index}`}\r\n className={cn(\r\n \"size-1.5 rounded-full bg-inverted-primary/40 sm:size-2\",\r\n index === selected && \"bg-inverted-primary\",\r\n )}\r\n />\r\n ))}\r\n </div>\r\n <p className=\"hidden text-[13px] font-medium tracking-[0.005em] text-inverted-primary/50 sm:block\">\r\n {counter}\r\n </p>\r\n <p className=\"text-[11px] tracking-[0.015em] text-inverted-primary/60 sm:hidden\">\r\n Swipe to navigate\r\n </p>\r\n </div>\r\n )}\r\n </Carousel>\r\n </DialogPrimitive.Content>\r\n </DialogPrimitive.Portal>\r\n </DialogPrimitive.Root>\r\n );\r\n}\r\n\r\nexport { PhotoLightbox };\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "DialogPrimitive", "XIcon", "jsx", "jsxs", "iconButtonClassName", "useSelectedIndex", "api", "fallback", "subscribe", "onStoreChange", "_a", "PhotoLightbox", "photos", "open", "onOpenChange", "initialIndex", "title", "trigger", "isTouch", "useIsTouchDevice", "setApi", "openerRef", "selected", "counter", "DialogPrimitive", "event", "Carousel", "cn", "XIcon", "CarouselContent", "photo", "index", "CarouselItem", "CarouselPrevious", "CarouselNext"]
|
|
7
|
-
}
|
package/dist/chunk-HE3CSN3R.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as d}from"./chunk-WIFBPNRH.js";import{a as n,b as p,c as r}from"./chunk-WHECA25N.js";import*as m from"react";import{Dialog as e}from"radix-ui";import{XIcon as D}from"lucide-react";import{jsx as l,jsxs as c}from"react/jsx-runtime";var h=e.Root,T=e.Trigger,u=e.Portal,w=e.Close,g=m.forwardRef((o,i)=>{var s=o,{className:t}=s,a=r(s,["className"]);return l(e.Overlay,n({ref:i,className:d("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t)},a))});g.displayName=e.Overlay.displayName;var y=m.forwardRef((s,o)=>{var f=s,{className:t,children:a}=f,i=r(f,["className","children"]);return c(u,{children:[l(g,{}),c(e.Content,p(n({ref:o,className:d("fixed left-[50%] top-[50%] z-50 grid max-h-[85dvh] w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t)},i),{children:[a,c(e.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[l(D,{className:"h-4 w-4"}),l("span",{className:"sr-only",children:"Close"})]})]}))]})});y.displayName=e.Content.displayName;var R=i=>{var o=i,{className:t}=o,a=r(o,["className"]);return l("div",n({className:d("flex flex-col space-y-1.5 text-center sm:text-left",t)},a))};R.displayName="DialogHeader";var v=i=>{var o=i,{className:t}=o,a=r(o,["className"]);return l("div",n({className:d("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t)},a))};v.displayName="DialogFooter";var x=m.forwardRef((o,i)=>{var s=o,{className:t}=s,a=r(s,["className"]);return l(e.Title,n({ref:i,className:d("text-left text-lg font-semibold leading-none tracking-tight",t)},a))});x.displayName=e.Title.displayName;var N=m.forwardRef((o,i)=>{var s=o,{className:t}=s,a=r(s,["className"]);return l(e.Description,n({ref:i,className:d("text-left text-sm text-muted-foreground",t)},a))});N.displayName=e.Description.displayName;export{h as a,T as b,u as c,w as d,g as e,y as f,R as g,v as h,x as i,N as j};
|
|
2
|
-
//# sourceMappingURL=chunk-HE3CSN3R.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/components/dialog/index.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\r\nimport { cn } from \"@/lib/utils\";\r\nimport { XIcon } from \"lucide-react\";\r\n\r\nconst Dialog = DialogPrimitive.Root;\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger;\r\n\r\nconst DialogPortal = DialogPrimitive.Portal;\r\n\r\nconst DialogClose = DialogPrimitive.Close;\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid max-h-[85dvh] w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\r\n <XIcon className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n));\r\nDialogContent.displayName = DialogPrimitive.Content.displayName;\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nDialogHeader.displayName = \"DialogHeader\";\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nDialogFooter.displayName = \"DialogFooter\";\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-left text-lg font-semibold leading-none tracking-tight\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-left text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n));\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogTrigger,\r\n DialogClose,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n};\r\n"],
|
|
5
|
-
"mappings": "8FAEA,UAAYA,MAAW,QACvB,OAAS,UAAUC,MAAuB,WAE1C,OAAS,SAAAC,MAAa,eAcpB,cAAAC,EA0BI,QAAAC,MA1BJ,oBAZF,IAAMC,EAASC,EAAgB,KAEzBC,EAAgBD,EAAgB,QAEhCE,EAAeF,EAAgB,OAE/BG,EAAcH,EAAgB,MAE9BI,EAAsB,aAG1B,CAACC,EAAyBC,IAAK,CAA9B,IAAAC,EAAAF,EAAE,WAAAG,CAlBL,EAkBGD,EAAgBE,EAAAC,EAAhBH,EAAgB,CAAd,cACH,OAAAV,EAACG,EAAgB,QAAhBW,EAAA,CACC,IAAKL,EACL,UAAWM,EACT,yJACAJ,CACF,GACIC,EACN,EACD,EACDL,EAAc,YAAcJ,EAAgB,QAAQ,YAEpD,IAAMa,EAAsB,aAG1B,CAACR,EAAmCC,IAAK,CAAxC,IAAAC,EAAAF,EAAE,WAAAG,EAAW,SAAAM,CAjChB,EAiCGP,EAA0BE,EAAAC,EAA1BH,EAA0B,CAAxB,YAAW,aACd,OAAAT,EAACI,EAAA,CACC,UAAAL,EAACO,EAAA,EAAc,EACfN,EAACE,EAAgB,QAAhBe,EAAAJ,EAAA,CACC,IAAKL,EACL,UAAWM,EACT,4gBACAJ,CACF,GACIC,GANL,CAQE,UAAAK,EACDhB,EAACE,EAAgB,MAAhB,CAAsB,UAAU,gRAC/B,UAAAH,EAACmB,EAAA,CAAM,UAAU,UAAU,EAC3BnB,EAAC,QAAK,UAAU,UAAU,iBAAK,GACjC,IACF,GACF,EACD,EACDgB,EAAc,YAAcb,EAAgB,QAAQ,YAEpD,IAAMiB,EAAgBZ,GAGmB,CAHnB,IAAAE,EAAAF,EACpB,WAAAG,CAvDF,EAsDsBD,EAEjBE,EAAAC,EAFiBH,EAEjB,CADH,cAGA,OAAAV,EAAC,MAAAc,EAAA,CACC,UAAWC,EACT,qDACAJ,CACF,GACIC,EACN,GAEFQ,EAAa,YAAc,eAE3B,IAAMC,EAAgBb,GAGmB,CAHnB,IAAAE,EAAAF,EACpB,WAAAG,CArEF,EAoEsBD,EAEjBE,EAAAC,EAFiBH,EAEjB,CADH,cAGA,OAAAV,EAAC,MAAAc,EAAA,CACC,UAAWC,EACT,gEACAJ,CACF,GACIC,EACN,GAEFS,EAAa,YAAc,eAE3B,IAAMC,EAAoB,aAGxB,CAACd,EAAyBC,IAAK,CAA9B,IAAAC,EAAAF,EAAE,WAAAG,CArFL,EAqFGD,EAAgBE,EAAAC,EAAhBH,EAAgB,CAAd,cACH,OAAAV,EAACG,EAAgB,MAAhBW,EAAA,CACC,IAAKL,EACL,UAAWM,EACT,8DACAJ,CACF,GACIC,EACN,EACD,EACDU,EAAY,YAAcnB,EAAgB,MAAM,YAEhD,IAAMoB,EAA0B,aAG9B,CAACf,EAAyBC,IAAK,CAA9B,IAAAC,EAAAF,EAAE,WAAAG,CApGL,EAoGGD,EAAgBE,EAAAC,EAAhBH,EAAgB,CAAd,cACH,OAAAV,EAACG,EAAgB,YAAhBW,EAAA,CACC,IAAKL,EACL,UAAWM,EAAG,0CAA2CJ,CAAS,GAC9DC,EACN,EACD,EACDW,EAAkB,YAAcpB,EAAgB,YAAY",
|
|
6
|
-
"names": ["React", "DialogPrimitive", "XIcon", "jsx", "jsxs", "Dialog", "DialogPrimitive", "DialogTrigger", "DialogPortal", "DialogClose", "DialogOverlay", "_a", "ref", "_b", "className", "props", "__objRest", "__spreadValues", "cn", "DialogContent", "children", "__spreadProps", "XIcon", "DialogHeader", "DialogFooter", "DialogTitle", "DialogDescription"]
|
|
7
|
-
}
|