diff --git a/messages/de.json b/messages/de.json index 948c14c..166498c 100644 --- a/messages/de.json +++ b/messages/de.json @@ -28,6 +28,17 @@ "phaseTest": "Test", "phaseProd": "Produktion" }, + "AppFeedback": { + "bug": "Fehler melden", + "feature": "Vorschlag für neue Funktionen", + "general": "Generelles Feedback", + "feedbackTypeLabel": "Feedback-Typ auswählen", + "descriptionLabel": "Beschreibung", + "descriptionPlaceholder": "Bitte beschreiben Sie hier Ihr Feedback.", + "systemInfoLabel": "System-Informationen", + "systemInfoPlaceholder": "Bitte geben Sie die Systeminformationen Ihres Telefons an, einschließlich des Modells, der Betriebssystemversion und der App-Version.", + "submitLabel": "Abschicken" + }, "Footer": { "copyright": "© 2024 eduMFA. Alle Rechte vorbehalten.", "imprint": "Impressum" diff --git a/messages/en.json b/messages/en.json index 2392d29..ae131b2 100644 --- a/messages/en.json +++ b/messages/en.json @@ -28,6 +28,17 @@ "phaseTest": "Test", "phaseProd": "Production" }, + "AppFeedback": { + "bug": "Bug Report", + "feature": "Feature Request", + "general": "General Feedback", + "feedbackTypeLabel": "Select Feedback Type", + "descriptionLabel": "Description", + "descriptionPlaceholder": "Please describe your feedback here.", + "systemInfoLabel": "System Information", + "systemInfoPlaceholder": "Please provide your phones system information including the model, OS version, and app version.", + "submitLabel": "Submit" + }, "Footer": { "copyright": "© 2024 eduMFA. All rights reserved.", "imprint": "Imprint" diff --git a/package-lock.json b/package-lock.json index d94ad34..d792643 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,13 @@ "dependencies": { "@heroui/card": "2.2.10", "@heroui/chip": "2.2.7", + "@heroui/form": "^2.1.9", + "@heroui/input": "^2.4.10", "@heroui/link": "2.2.8", "@heroui/modal": "2.2.8", "@heroui/navbar": "2.2.9", "@heroui/scroll-shadow": "2.3.6", + "@heroui/select": "^2.4.10", "@heroui/system": "2.4.7", "@heroui/theme": "2.4.6", "@heroui/tooltip": "2.2.8", @@ -47,6 +50,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/runtime": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -256,6 +271,32 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/button": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/@heroui/button/-/button-2.2.10.tgz", + "integrity": "sha512-SsW7t1Ay6SKQtUuwy0RXKmHR43RLHUd0ef9efJrcLAhm7HT6vkwAPQxYV2IMbXJMNDSezjbY+rcUFk3VOE0qqg==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.4", + "@heroui/ripple": "2.2.8", + "@heroui/shared-utils": "2.1.3", + "@heroui/spinner": "2.2.7", + "@heroui/use-aria-button": "2.2.5", + "@react-aria/button": "3.11.0", + "@react-aria/focus": "3.19.0", + "@react-aria/interactions": "3.22.5", + "@react-aria/utils": "3.26.0", + "@react-types/button": "3.10.1", + "@react-types/shared": "3.26.0" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.0", + "@heroui/theme": ">=2.4.0", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/card": { "version": "2.2.10", "resolved": "https://registry.npmjs.org/@heroui/card/-/card-2.2.10.tgz", @@ -301,6 +342,23 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/divider": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@heroui/divider/-/divider-2.2.6.tgz", + "integrity": "sha512-C9ShXhGstjkFvaympTrqdUg1k+CZ/e3o5IV+x2RaWw3nvEEdnDLeY/j6Uk6r683Bs/R6valzRNlAPocUpRtM5g==", + "license": "MIT", + "dependencies": { + "@heroui/react-rsc-utils": "2.1.2", + "@heroui/shared-utils": "2.1.3", + "@heroui/system-rsc": "2.3.6", + "@react-types/shared": "3.26.0" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.0", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/dom-animation": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@heroui/dom-animation/-/dom-animation-2.1.2.tgz", @@ -310,6 +368,28 @@ "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1" } }, + "node_modules/@heroui/form": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@heroui/form/-/form-2.1.9.tgz", + "integrity": "sha512-8qqfWXmVeELDN2JJ45+71tgNil8ird7LkF6chkK/+SLw3OTTE1q7dq9ikc6zzQ12x0Sa7IgVDl4bVn4jHoDCyA==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.4", + "@heroui/shared-utils": "2.1.3", + "@heroui/system": "2.4.7", + "@heroui/theme": "2.4.6", + "@react-aria/utils": "3.26.0", + "@react-stately/form": "3.1.0", + "@react-types/form": "3.7.8", + "@react-types/shared": "3.26.0" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.0", + "@heroui/theme": ">=2.4.0", + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/@heroui/framer-utils": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/@heroui/framer-utils/-/framer-utils-2.1.7.tgz", @@ -326,6 +406,33 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/input": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@heroui/input/-/input-2.4.10.tgz", + "integrity": "sha512-cHKgDiNq6ppe71epBqpiaHxH8CbIZ9uPTvzSEgSsYaDhI6vos7fNAUkpLwQyp8yAPOQBHO4RHSYDKYTOhyGsIg==", + "license": "MIT", + "dependencies": { + "@heroui/form": "2.1.9", + "@heroui/react-utils": "2.1.4", + "@heroui/shared-icons": "2.1.2", + "@heroui/shared-utils": "2.1.3", + "@heroui/use-safe-layout-effect": "2.1.2", + "@react-aria/focus": "3.19.0", + "@react-aria/interactions": "3.22.5", + "@react-aria/textfield": "3.15.0", + "@react-aria/utils": "3.26.0", + "@react-stately/utils": "3.10.5", + "@react-types/shared": "3.26.0", + "@react-types/textfield": "3.10.0", + "react-textarea-autosize": "^8.5.3" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.0", + "@heroui/theme": ">=2.4.0", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/link": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/@heroui/link/-/link-2.2.8.tgz", @@ -348,6 +455,33 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/listbox": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@heroui/listbox/-/listbox-2.3.10.tgz", + "integrity": "sha512-UuGQeGwqOj0v5ibLKd0xvoJ8ZfqvjCQFAAvyy1tERbI7ERGnL8upN+dOdRkwn+rnSYs1CmnFsvK8fNlcGalQQQ==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.8", + "@heroui/divider": "2.2.6", + "@heroui/react-utils": "2.1.4", + "@heroui/shared-utils": "2.1.3", + "@heroui/use-is-mobile": "2.2.3", + "@react-aria/focus": "3.19.0", + "@react-aria/interactions": "3.22.5", + "@react-aria/listbox": "3.13.6", + "@react-aria/utils": "3.26.0", + "@react-stately/list": "3.11.1", + "@react-types/menu": "3.9.13", + "@react-types/shared": "3.26.0", + "@tanstack/react-virtual": "3.11.2" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.0", + "@heroui/theme": ">=2.4.0", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/modal": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/@heroui/modal/-/modal-2.2.8.tgz", @@ -406,6 +540,37 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/popover": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@heroui/popover/-/popover-2.3.10.tgz", + "integrity": "sha512-qswvCUxkHGWbXuBQYDl5yCeqyzAgYXTXsPzc95KPVy+QoVFFQaHvvRkgjqK1rfJOZcH6cJpyO45eT3tJi3M/IQ==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.8", + "@heroui/button": "2.2.10", + "@heroui/dom-animation": "2.1.2", + "@heroui/framer-utils": "2.1.7", + "@heroui/react-utils": "2.1.4", + "@heroui/shared-utils": "2.1.3", + "@heroui/use-aria-button": "2.2.5", + "@heroui/use-safe-layout-effect": "2.1.2", + "@react-aria/dialog": "3.5.20", + "@react-aria/focus": "3.19.0", + "@react-aria/interactions": "3.22.5", + "@react-aria/overlays": "3.24.0", + "@react-aria/utils": "3.26.0", + "@react-stately/overlays": "3.6.12", + "@react-types/button": "3.10.1", + "@react-types/overlays": "3.8.11" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.0", + "@heroui/theme": ">=2.4.0", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/react-rsc-utils": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@heroui/react-rsc-utils/-/react-rsc-utils-2.1.2.tgz", @@ -463,6 +628,55 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/select": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@heroui/select/-/select-2.4.10.tgz", + "integrity": "sha512-mMxW44Ztkg6oL9DUv327Rm8loG00kjGoTGvlgDxpxGdBJRqEYvLz+r0xBVyyyQdtr9DGJoOSmDHN7IjQpjGwnA==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.8", + "@heroui/form": "2.1.9", + "@heroui/listbox": "2.3.10", + "@heroui/popover": "2.3.10", + "@heroui/react-utils": "2.1.4", + "@heroui/scroll-shadow": "2.3.6", + "@heroui/shared-icons": "2.1.2", + "@heroui/shared-utils": "2.1.3", + "@heroui/spinner": "2.2.7", + "@heroui/use-aria-button": "2.2.5", + "@heroui/use-aria-multiselect": "2.4.4", + "@heroui/use-safe-layout-effect": "2.1.2", + "@react-aria/focus": "3.19.0", + "@react-aria/form": "3.0.11", + "@react-aria/interactions": "3.22.5", + "@react-aria/utils": "3.26.0", + "@react-aria/visually-hidden": "3.8.18", + "@react-types/shared": "3.26.0", + "@tanstack/react-virtual": "3.11.2" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.0", + "@heroui/theme": ">=2.4.0", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/select/node_modules/@react-aria/visually-hidden": { + "version": "3.8.18", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.18.tgz", + "integrity": "sha512-l/0igp+uub/salP35SsNWq5mGmg3G5F5QMS1gDZ8p28n7CgjvzyiGhJbbca7Oxvaw1HRFzVl9ev+89I7moNnFQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.22.5", + "@react-aria/utils": "^3.26.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@heroui/shared-icons": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@heroui/shared-icons/-/shared-icons-2.1.2.tgz", @@ -478,6 +692,22 @@ "integrity": "sha512-MNpo+jcu6xyicSRyxWgL4rNw4xH0XziUR/bhs01GydlGhfFN8n/Y4vKAWfL5xamehiEJX1N0IKAbFadt3wlGAA==", "license": "MIT" }, + "node_modules/@heroui/spinner": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@heroui/spinner/-/spinner-2.2.7.tgz", + "integrity": "sha512-mMah9randdSFwyEtte6Ov1rkInGJZNBKfsruhDc0bOmMmFH8RNWJLuOyIMsaaKBXZQDwvRNH+3YTezAWAqKnpg==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.4", + "@heroui/shared-utils": "2.1.3", + "@heroui/system-rsc": "2.3.6" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.0", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/system": { "version": "2.4.7", "resolved": "https://registry.npmjs.org/@heroui/system/-/system-2.4.7.tgz", @@ -499,7 +729,7 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, - "node_modules/@heroui/system/node_modules/@heroui/system-rsc": { + "node_modules/@heroui/system-rsc": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/@heroui/system-rsc/-/system-rsc-2.3.6.tgz", "integrity": "sha512-196LAXv9soGQqkaIyfKI0c+mBJh7QqxEzxEY+QEOYad9Q9LmuhUvu3sQleAw3ImGF20veXQ0U9pfCLjfucDEfQ==", @@ -610,6 +840,32 @@ "react-dom": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/use-aria-multiselect": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@heroui/use-aria-multiselect/-/use-aria-multiselect-2.4.4.tgz", + "integrity": "sha512-ZMRX4bbj9jHMdOi9IQWzaAE9vdLfxr8r9Zew87neDymrCFbvKnBcvag8lMNeTBBvZNAggIMzyTAXbOZWxUkwhw==", + "license": "MIT", + "dependencies": { + "@react-aria/i18n": "3.12.4", + "@react-aria/interactions": "3.22.5", + "@react-aria/label": "3.7.13", + "@react-aria/listbox": "3.13.6", + "@react-aria/menu": "3.16.0", + "@react-aria/selection": "3.21.0", + "@react-aria/utils": "3.26.0", + "@react-stately/form": "3.1.0", + "@react-stately/list": "3.11.1", + "@react-stately/menu": "3.9.0", + "@react-types/button": "3.10.1", + "@react-types/overlays": "3.8.11", + "@react-types/select": "3.9.8", + "@react-types/shared": "3.26.0" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/use-callback-ref": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@heroui/use-callback-ref/-/use-callback-ref-2.1.2.tgz", @@ -660,6 +916,18 @@ "react": ">=18 || >=19.0.0-rc.0" } }, + "node_modules/@heroui/use-is-mobile": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@heroui/use-is-mobile/-/use-is-mobile-2.2.3.tgz", + "integrity": "sha512-O0zV+w2FTjJJP7qCBW5A3qkjvjQwMBkesD3ZOvpn71PR6GDDDFpLt0cr2hkaUd6qpb9rmeEUeJoVSch2QFNPrg==", + "license": "MIT", + "dependencies": { + "@react-aria/ssr": "3.9.7" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, "node_modules/@heroui/use-measure": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@heroui/use-measure/-/use-measure-2.1.2.tgz", @@ -1477,6 +1745,22 @@ "node": ">=6" } }, + "node_modules/@react-aria/form": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.11.tgz", + "integrity": "sha512-oXzjTiwVuuWjZ8muU0hp3BrDH5qjVctLOF50mjPvqUbvXQTHhoDxWweyIXPQjGshaqBd2w4pWaE4A2rG2O/apw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.22.5", + "@react-aria/utils": "^3.26.0", + "@react-stately/form": "^3.1.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-aria/i18n": { "version": "3.12.4", "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.4.tgz", @@ -1511,6 +1795,20 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-aria/label": { + "version": "3.7.13", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.13.tgz", + "integrity": "sha512-brSAXZVTey5RG/Ex6mTrV/9IhGSQFU4Al34qmjEDho+Z2qT4oPwf8k7TRXWWqzOU0ugYxekYbsLd2zlN3XvWcg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.26.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-aria/link": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.7.tgz", @@ -1528,6 +1826,53 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-aria/listbox": { + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.13.6.tgz", + "integrity": "sha512-6hEXEXIZVau9lgBZ4VVjFR3JnGU+fJaPmV3HP0UZ2ucUptfG0MZo24cn+ZQJsWiuaCfNFv5b8qribiv+BcO+Kg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.22.5", + "@react-aria/label": "^3.7.13", + "@react-aria/selection": "^3.21.0", + "@react-aria/utils": "^3.26.0", + "@react-stately/collections": "^3.12.0", + "@react-stately/list": "^3.11.1", + "@react-types/listbox": "^3.5.3", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.16.0.tgz", + "integrity": "sha512-TNk+Vd3TbpBPUxEloAdHRTaRxf9JBK7YmkHYiq0Yj5Lc22KS0E2eTyhpPM9xJvEWN2TlC5TEvNfdyui2kYWFFQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.19.0", + "@react-aria/i18n": "^3.12.4", + "@react-aria/interactions": "^3.22.5", + "@react-aria/overlays": "^3.24.0", + "@react-aria/selection": "^3.21.0", + "@react-aria/utils": "^3.26.0", + "@react-stately/collections": "^3.12.0", + "@react-stately/menu": "^3.9.0", + "@react-stately/selection": "^3.18.0", + "@react-stately/tree": "^3.8.6", + "@react-types/button": "^3.10.1", + "@react-types/menu": "^3.9.13", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-aria/overlays": { "version": "3.24.0", "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.24.0.tgz", @@ -1551,6 +1896,25 @@ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-aria/selection": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.21.0.tgz", + "integrity": "sha512-52JJ6hlPcM+gt0VV3DBmz6Kj1YAJr13TfutrKfGWcK36LvNCBm1j0N+TDqbdnlp8Nue6w0+5FIwZq44XPYiBGg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.19.0", + "@react-aria/i18n": "^3.12.4", + "@react-aria/interactions": "^3.22.5", + "@react-aria/utils": "^3.26.0", + "@react-stately/selection": "^3.18.0", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-aria/ssr": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", @@ -1566,6 +1930,26 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-aria/textfield": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.15.0.tgz", + "integrity": "sha512-V5mg7y1OR6WXYHdhhm4FC7QyGc9TideVRDFij1SdOJrIo5IFB7lvwpOS0GmgwkVbtr71PTRMjZnNbrJUFU6VNA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.19.0", + "@react-aria/form": "^3.0.11", + "@react-aria/label": "^3.7.13", + "@react-aria/utils": "^3.26.0", + "@react-stately/form": "^3.1.0", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.26.0", + "@react-types/textfield": "^3.10.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-aria/toolbar": { "version": "3.0.0-beta.11", "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.11.tgz", @@ -1705,6 +2089,50 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-stately/form": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.1.0.tgz", + "integrity": "sha512-E2wxNQ0QaTyDHD0nJFtTSnEH9A3bpJurwxhS4vgcUmESHgjFEMLlC9irUSZKgvOgb42GAq+fHoWBsgKeTp9Big==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/list": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.11.1.tgz", + "integrity": "sha512-UCOpIvqBOjwLtk7zVTYWuKU1m1Oe61Q5lNar/GwHaV1nAiSQ8/yYlhr40NkBEs9X3plEfsV28UIpzOrYnu1tPg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.0", + "@react-stately/selection": "^3.18.0", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.0.tgz", + "integrity": "sha512-++sm0fzZeUs9GvtRbj5RwrP+KL9KPANp9f4SvtI3s+MP+Y/X3X7LNNePeeccGeyikB5fzMsuyvd82bRRW9IhDQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.12", + "@react-types/menu": "^3.9.13", + "@react-types/shared": "^3.26.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-stately/overlays": { "version": "3.6.12", "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.12.tgz", @@ -1719,6 +2147,43 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-stately/selection": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.19.0.tgz", + "integrity": "sha512-AvbUqnWjqVQC48RD39S9BpMKMLl55Zo5l/yx5JQFPl55cFwe9Tpku1KY0wzt3fXXiXWaqjDn/7Gkg1VJYy8esQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.1", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/selection/node_modules/@react-stately/collections": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.12.1.tgz", + "integrity": "sha512-8QmFBL7f+P64dEP4o35pYH61/lP0T/ziSdZAvNMrCqaM+fXcMfUp2yu1E63kADVX7WRDsFJWE3CVMeqirPH6Xg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/selection/node_modules/@react-types/shared": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.27.0.tgz", + "integrity": "sha512-gvznmLhi6JPEf0bsq7SwRYTHAKKq/wcmKqFez9sRdbED+SPMUmK5omfZ6w3EwUFQHbYUa4zPBYedQ7Knv70RMw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-stately/toggle": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.8.0.tgz", @@ -1748,6 +2213,44 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-stately/tree": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.7.tgz", + "integrity": "sha512-hpc3pyuXWeQV5ufQ02AeNQg/MYhnzZ4NOznlY5OOUoPzpLYiI3ZJubiY3Dot4jw5N/LR7CqvDLHmrHaJPmZlHg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.1", + "@react-stately/selection": "^3.19.0", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tree/node_modules/@react-stately/collections": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.12.1.tgz", + "integrity": "sha512-8QmFBL7f+P64dEP4o35pYH61/lP0T/ziSdZAvNMrCqaM+fXcMfUp2yu1E63kADVX7WRDsFJWE3CVMeqirPH6Xg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tree/node_modules/@react-types/shared": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.27.0.tgz", + "integrity": "sha512-gvznmLhi6JPEf0bsq7SwRYTHAKKq/wcmKqFez9sRdbED+SPMUmK5omfZ6w3EwUFQHbYUa4zPBYedQ7Knv70RMw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-stately/utils": { "version": "3.10.5", "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.5.tgz", @@ -1864,6 +2367,18 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-types/form": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.8.tgz", + "integrity": "sha512-0wOS97/X0ijTVuIqik1lHYTZnk13QkvMTKvIEhM7c6YMU3vPiirBwLbT2kJiAdwLiymwcCkrBdDF1NTRG6kPFA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.26.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-types/link": { "version": "3.5.9", "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.9.tgz", @@ -1876,6 +2391,40 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-types/listbox": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.5.4.tgz", + "integrity": "sha512-5otTes0zOwRZwNtqysPD/aW4qFJSxd5znjwoWTLnzDXXOBHXPyR83IJf8ITgvIE5C0y+EFadsWR/BBO3k9Pj7g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.27.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/listbox/node_modules/@react-types/shared": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.27.0.tgz", + "integrity": "sha512-gvznmLhi6JPEf0bsq7SwRYTHAKKq/wcmKqFez9sRdbED+SPMUmK5omfZ6w3EwUFQHbYUa4zPBYedQ7Knv70RMw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/menu": { + "version": "3.9.13", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.13.tgz", + "integrity": "sha512-7SuX6E2tDsqQ+HQdSvIda1ji/+ujmR86dtS9CUu5yWX91P25ufRjZ72EvLRqClWNQsj1Xl4+2zBDLWlceznAjw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.8.11", + "@react-types/shared": "^3.26.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-types/overlays": { "version": "3.8.11", "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.11.tgz", @@ -1888,6 +2437,18 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-types/select": { + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.8.tgz", + "integrity": "sha512-RGsYj2oFjXpLnfcvWMBQnkcDuKkwT43xwYWZGI214/gp/B64tJiIUgTM5wFTRAeGDX23EePkhCQF+9ctnqFd6g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.26.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-types/shared": { "version": "3.26.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.26.0.tgz", @@ -1897,6 +2458,18 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, + "node_modules/@react-types/textfield": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.10.0.tgz", + "integrity": "sha512-ShU3d6kLJGQjPXccVFjM3KOXdj3uyhYROqH9YgSIEVxgA9W6LRflvk/IVBamD9pJYTPbwmVzuP0wQkTDupfZ1w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.26.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@react-types/tooltip": { "version": "3.4.13", "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.13.tgz", @@ -1939,6 +2512,33 @@ "tslib": "^2.8.0" } }, + "node_modules/@tanstack/react-virtual": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.2.tgz", + "integrity": "sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.11.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz", + "integrity": "sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -5680,6 +6280,23 @@ "dev": true, "license": "MIT" }, + "node_modules/react-textarea-autosize": { + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.7.tgz", + "integrity": "sha512-2MqJ3p0Jh69yt9ktFIaZmORHXw4c4bxSIhCeWiFwmJ9EYKgLmuNII3e9c9b2UO+ijl4StnpZdqpxNIhTdHvqtQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -5724,6 +6341,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -6746,6 +7369,20 @@ "punycode": "^2.1.0" } }, + "node_modules/use-composed-ref": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-intl": { "version": "3.26.3", "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.26.3.tgz", @@ -6759,6 +7396,37 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index f9fa1e5..ea5cbb0 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,13 @@ "dependencies": { "@heroui/card": "2.2.10", "@heroui/chip": "2.2.7", + "@heroui/form": "^2.1.9", + "@heroui/input": "^2.4.10", "@heroui/link": "2.2.8", "@heroui/modal": "2.2.8", "@heroui/navbar": "2.2.9", "@heroui/scroll-shadow": "2.3.6", + "@heroui/select": "^2.4.10", "@heroui/system": "2.4.7", "@heroui/theme": "2.4.6", "@heroui/tooltip": "2.2.8", diff --git a/src/app/[locale]/app-feedback/page.tsx b/src/app/[locale]/app-feedback/page.tsx new file mode 100644 index 0000000..972edcf --- /dev/null +++ b/src/app/[locale]/app-feedback/page.tsx @@ -0,0 +1,103 @@ +'use client' + +import {Form} from "@heroui/form"; +import {Select, SelectItem} from "@heroui/select"; +import {Textarea} from "@heroui/input"; +import {FormEvent, useEffect, useState} from "react"; +import {useSearchParams} from "next/navigation"; +import {Button} from "@heroui/button"; +import {NavigationBar} from "@/components/NavigationBar"; +import {SharedSelection} from "@heroui/system"; +import {useTranslations} from "next-intl"; +import {Footer} from "@/components/Footer"; + + +enum FeedbackType { + Bug = "bug", + Feature = "feature", + General = "general", +} + +export default function AppFeedback() { + const t = useTranslations('AppFeedback'); + const searchParams = useSearchParams() + + const [feedbackTypes, setFeedbackTypes] = useState(new Set([])); + const [systemInfo, setSystemInfo] = useState(""); + + useEffect(() => { + if (searchParams.get('systemInfo')) { + setSystemInfo(searchParams.get('systemInfo') as string); + } + }, [searchParams]); + + const onSubmit = (e: FormEvent) => { + e.preventDefault() + if (e.currentTarget == null) return + + const data = Object.fromEntries(new FormData(e.currentTarget)); + + console.log(data); + }; + + return ( +
+ + +
+
+

App Feedback

+
+ {/* Feedback Type */} + + + {/* Description */} +