diff --git a/ui/package-lock.json b/ui/package-lock.json index d42d180..8c0a15c 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -11,12 +11,12 @@ "@tailwindcss/vite": "^4.1.11", "@tanstack/vue-table": "^8.21.3", "@vee-validate/zod": "^4.15.1", - "@vueuse/core": "^13.7.0", + "@vueuse/core": "^13.9.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-vue-next": "^0.539.0", "pinia": "^3.0.3", - "reka-ui": "^2.4.1", + "reka-ui": "^2.5.0", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.11", "tw-animate-css": "^1.3.6", @@ -1982,14 +1982,14 @@ "license": "MIT" }, "node_modules/@vueuse/core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.7.0.tgz", - "integrity": "sha512-myagn09+c6BmS6yHc1gTwwsdZilAovHslMjyykmZH3JNyzI5HoWhv114IIdytXiPipdHJ2gDUx0PB93jRduJYg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.9.0.tgz", + "integrity": "sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==", "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.21", - "@vueuse/metadata": "13.7.0", - "@vueuse/shared": "13.7.0" + "@vueuse/metadata": "13.9.0", + "@vueuse/shared": "13.9.0" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -1999,18 +1999,18 @@ } }, "node_modules/@vueuse/metadata": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.7.0.tgz", - "integrity": "sha512-8okFhS/1ite8EwUdZZfvTYowNTfXmVCOrBFlA31O0HD8HKXhY+WtTRyF0LwbpJfoFPc+s9anNJIXMVrvP7UTZg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.9.0.tgz", + "integrity": "sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/shared": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.7.0.tgz", - "integrity": "sha512-Wi2LpJi4UA9kM0OZ0FCZslACp92HlVNw1KPaDY6RAzvQ+J1s7seOtcOpmkfbD5aBSmMn9NvOakc8ZxMxmDXTIg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.9.0.tgz", + "integrity": "sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -3171,9 +3171,9 @@ } }, "node_modules/reka-ui": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/reka-ui/-/reka-ui-2.4.1.tgz", - "integrity": "sha512-NB7DrCsODN8MH02BWtgiExygfFcuuZ5/PTn6fMgjppmFHqePvNhmSn1LEuF35nel6PFbA4v+gdj0IoGN1yZ+vw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/reka-ui/-/reka-ui-2.5.0.tgz", + "integrity": "sha512-81aMAmJeVCy2k0E6x7n1kypDY6aM1ldLis5+zcdV1/JtoAlSDck5OBsyLRJU9CfgbrQp1ImnRnBSmC4fZ2fkZQ==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.6.13", diff --git a/ui/package.json b/ui/package.json index 4424d70..aaa88ff 100644 --- a/ui/package.json +++ b/ui/package.json @@ -15,12 +15,12 @@ "@tailwindcss/vite": "^4.1.11", "@tanstack/vue-table": "^8.21.3", "@vee-validate/zod": "^4.15.1", - "@vueuse/core": "^13.7.0", + "@vueuse/core": "^13.9.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-vue-next": "^0.539.0", "pinia": "^3.0.3", - "reka-ui": "^2.4.1", + "reka-ui": "^2.5.0", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.11", "tw-animate-css": "^1.3.6", diff --git a/ui/src/api/rank.ts b/ui/src/api/rank.ts new file mode 100644 index 0000000..e69de29 diff --git a/ui/src/components/ui/combobox/Combobox.vue b/ui/src/components/ui/combobox/Combobox.vue new file mode 100644 index 0000000..79673ee --- /dev/null +++ b/ui/src/components/ui/combobox/Combobox.vue @@ -0,0 +1,33 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxAnchor.vue b/ui/src/components/ui/combobox/ComboboxAnchor.vue new file mode 100644 index 0000000..e0bfbe2 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxAnchor.vue @@ -0,0 +1,26 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxEmpty.vue b/ui/src/components/ui/combobox/ComboboxEmpty.vue new file mode 100644 index 0000000..5819972 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxEmpty.vue @@ -0,0 +1,23 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxGroup.vue b/ui/src/components/ui/combobox/ComboboxGroup.vue new file mode 100644 index 0000000..0fb9296 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxGroup.vue @@ -0,0 +1,30 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxInput.vue b/ui/src/components/ui/combobox/ComboboxInput.vue new file mode 100644 index 0000000..6dd3822 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxInput.vue @@ -0,0 +1,47 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxItem.vue b/ui/src/components/ui/combobox/ComboboxItem.vue new file mode 100644 index 0000000..9eb2087 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxItem.vue @@ -0,0 +1,34 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxItemIndicator.vue b/ui/src/components/ui/combobox/ComboboxItemIndicator.vue new file mode 100644 index 0000000..0aaf267 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxItemIndicator.vue @@ -0,0 +1,25 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxList.vue b/ui/src/components/ui/combobox/ComboboxList.vue new file mode 100644 index 0000000..86b5038 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxList.vue @@ -0,0 +1,58 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxSeparator.vue b/ui/src/components/ui/combobox/ComboboxSeparator.vue new file mode 100644 index 0000000..4b8d07e --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxSeparator.vue @@ -0,0 +1,23 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxTrigger.vue b/ui/src/components/ui/combobox/ComboboxTrigger.vue new file mode 100644 index 0000000..3d37377 --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/ui/src/components/ui/combobox/ComboboxViewport.vue b/ui/src/components/ui/combobox/ComboboxViewport.vue new file mode 100644 index 0000000..8dc08ad --- /dev/null +++ b/ui/src/components/ui/combobox/ComboboxViewport.vue @@ -0,0 +1,31 @@ + + + diff --git a/ui/src/components/ui/combobox/index.js b/ui/src/components/ui/combobox/index.js new file mode 100644 index 0000000..5c86c51 --- /dev/null +++ b/ui/src/components/ui/combobox/index.js @@ -0,0 +1,12 @@ +export { default as Combobox } from "./Combobox.vue"; +export { default as ComboboxAnchor } from "./ComboboxAnchor.vue"; +export { default as ComboboxEmpty } from "./ComboboxEmpty.vue"; +export { default as ComboboxGroup } from "./ComboboxGroup.vue"; +export { default as ComboboxInput } from "./ComboboxInput.vue"; +export { default as ComboboxItem } from "./ComboboxItem.vue"; +export { default as ComboboxItemIndicator } from "./ComboboxItemIndicator.vue"; +export { default as ComboboxList } from "./ComboboxList.vue"; +export { default as ComboboxSeparator } from "./ComboboxSeparator.vue"; +export { default as ComboboxViewport } from "./ComboboxViewport.vue"; + +export { ComboboxCancel, ComboboxTrigger } from "reka-ui"; diff --git a/ui/src/pages/Application.vue b/ui/src/pages/Application.vue index 8c2738d..2c1d562 100644 --- a/ui/src/pages/Application.vue +++ b/ui/src/pages/Application.vue @@ -2,8 +2,10 @@ import ApplicationChat from '@/components/application/ApplicationChat.vue'; import ApplicationForm from '@/components/application/ApplicationForm.vue'; import { onMounted, ref } from 'vue'; -import { ApplicationData, loadApplication, postApplication, postChatMessage, Status } from '@/api/application'; +import { ApplicationData, approveApplication, denyApplication, loadApplication, postApplication, postChatMessage, Status } from '@/api/application'; import { useRoute } from 'vue-router'; +import Button from '@/components/ui/button/Button.vue'; +import { CheckIcon, XIcon } from 'lucide-vue-next'; const appData = ref(null); const appID = ref(null); @@ -59,6 +61,14 @@ async function postApp(appData) { // TODO: Handle fail to post } +async function handleApprove(id) { + console.log("hi"); + await approveApplication(id); +} + +async function handleDeny(id) { + await denyApplication(id); +}