diff --git a/index.html b/index.html
index 2b36112..f06a12e 100644
--- a/index.html
+++ b/index.html
@@ -2,11 +2,11 @@
-
+
- frontend
+ STA
-
+
diff --git a/package.json b/package.json
index 938c59d..f72b92f 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,12 @@
"fmt:check": "oxfmt --check"
},
"dependencies": {
+ "@primeuix/themes": "^2.0.3",
+ "@tailwindcss/vite": "^4.3.0",
"openapi-fetch": "^0.15.2",
+ "primeicons": "^7.0.0",
+ "primevue": "^4.5.5",
+ "tailwindcss": "^4.3.0",
"vue": "^3.5.34"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dcf557d..d0a36f7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,9 +8,24 @@ importers:
.:
dependencies:
+ '@primeuix/themes':
+ specifier: ^2.0.3
+ version: 2.0.3
+ '@tailwindcss/vite':
+ specifier: ^4.3.0
+ version: 4.3.0(vite@7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0))
openapi-fetch:
specifier: ^0.15.2
version: 0.15.2
+ primeicons:
+ specifier: ^7.0.0
+ version: 7.0.0
+ primevue:
+ specifier: ^4.5.5
+ version: 4.5.5(vue@3.5.34(typescript@5.9.3))
+ tailwindcss:
+ specifier: ^4.3.0
+ version: 4.3.0
vue:
specifier: ^3.5.34
version: 3.5.34(typescript@5.9.3)
@@ -20,7 +35,7 @@ importers:
version: 24.12.4
'@vitejs/plugin-vue':
specifier: ^6.0.6
- version: 6.0.6(vite@7.3.3(@types/node@24.12.4)(less@4.6.4))(vue@3.5.34(typescript@5.9.3))
+ version: 6.0.6(vite@7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0))(vue@3.5.34(typescript@5.9.3))
'@vue/tsconfig':
specifier: ^0.8.1
version: 0.8.1(typescript@5.9.3)(vue@3.5.34(typescript@5.9.3))
@@ -44,7 +59,7 @@ importers:
version: 5.9.3
vite:
specifier: ^7.3.3
- version: 7.3.3(@types/node@24.12.4)(less@4.6.4)
+ version: 7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)
vue-tsc:
specifier: ^3.2.9
version: 3.2.9(typescript@5.9.3)
@@ -228,9 +243,22 @@ packages:
cpu: [x64]
os: [win32]
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
'@oxfmt/binding-android-arm-eabi@0.49.0':
resolution: {integrity: sha512-HbifJ84prIh9+55CTPAU35JdRQrwg47y16cGerCC+iejSKOuHXYo2WDql6l7cQlzrYVtc3f4UWY+dBj2lRmOeA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -475,6 +503,30 @@ packages:
cpu: [x64]
os: [win32]
+ '@primeuix/styled@0.7.4':
+ resolution: {integrity: sha512-QSO/NpOQg8e9BONWRBx9y8VGMCMYz0J/uKfNJEya/RGEu7ARx0oYW0ugI1N3/KB1AAvyGxzKBzGImbwg0KUiOQ==}
+ engines: {node: '>=12.11.0'}
+
+ '@primeuix/styles@2.0.3':
+ resolution: {integrity: sha512-2ykAB6BaHzR/6TwF8ShpJTsZrid6cVIEBVlookSdvOdmlWuevGu5vWOScgIwqWwlZcvkFYAGR/SUV3OHCTBMdw==}
+
+ '@primeuix/themes@2.0.3':
+ resolution: {integrity: sha512-3fS1883mtCWhgUgNf/feiaaDSOND4EBIOu9tZnzJlJ8QtYyL6eFLcA6V3ymCWqLVXQ1+lTVEZv1gl47FIdXReg==}
+
+ '@primeuix/utils@0.6.4':
+ resolution: {integrity: sha512-pZ5f+vj7wSzRhC7KoEQRU5fvYAe+RP9+m39CTscZ3UywCD1Y2o6Fe1rRgklMPSkzUcty2jzkA0zMYkiJBD1hgg==}
+ engines: {node: '>=12.11.0'}
+
+ '@primevue/core@4.5.5':
+ resolution: {integrity: sha512-JpkXhq1ddc70JdsC3CC4dM+UbeeWuCW/8DpS9dNBfrOk824TLSlRlMEGFyVKqRMn5WPQvYLiy3xXfLQeNdSqhQ==}
+ engines: {node: '>=12.11.0'}
+ peerDependencies:
+ vue: ^3.5.0
+
+ '@primevue/icons@4.5.5':
+ resolution: {integrity: sha512-eteOhTdAOXEYE9qW1AOrBBgDxQ2szHJxSkEK1XVdV2TKxGM5FQf03Ovms0VDyZTc16XBIgvwYjXJQS0BPbhPaA==}
+ engines: {node: '>=12.11.0'}
+
'@redocly/ajv@8.11.2':
resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==}
@@ -626,6 +678,100 @@ packages:
cpu: [x64]
os: [win32]
+ '@tailwindcss/node@4.3.0':
+ resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==}
+
+ '@tailwindcss/oxide-android-arm64@4.3.0':
+ resolution: {integrity: sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [android]
+
+ '@tailwindcss/oxide-darwin-arm64@4.3.0':
+ resolution: {integrity: sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-darwin-x64@4.3.0':
+ resolution: {integrity: sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-freebsd-x64@4.3.0':
+ resolution: {integrity: sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0':
+ resolution: {integrity: sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==}
+ engines: {node: '>= 20'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.3.0':
+ resolution: {integrity: sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.3.0':
+ resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.3.0':
+ resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-x64-musl@4.3.0':
+ resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-wasm32-wasi@4.3.0':
+ resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ bundledDependencies:
+ - '@napi-rs/wasm-runtime'
+ - '@emnapi/core'
+ - '@emnapi/runtime'
+ - '@tybys/wasm-util'
+ - '@emnapi/wasi-threads'
+ - tslib
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.3.0':
+ resolution: {integrity: sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.3.0':
+ resolution: {integrity: sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [win32]
+
+ '@tailwindcss/oxide@4.3.0':
+ resolution: {integrity: sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==}
+ engines: {node: '>= 20'}
+
+ '@tailwindcss/vite@4.3.0':
+ resolution: {integrity: sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==}
+ peerDependencies:
+ vite: ^5.2.0 || ^6 || ^7 || ^8
+
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
@@ -733,6 +879,14 @@ packages:
supports-color:
optional: true
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ enhanced-resolve@5.21.3:
+ resolution: {integrity: sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==}
+ engines: {node: '>=10.13.0'}
+
entities@7.0.1:
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
engines: {node: '>=0.12'}
@@ -790,6 +944,10 @@ packages:
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
+ jiti@2.7.0:
+ resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
+ hasBin: true
+
js-levenshtein@1.1.6:
resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==}
engines: {node: '>=0.10.0'}
@@ -822,6 +980,80 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
@@ -916,6 +1148,13 @@ packages:
resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
engines: {node: ^10 || ^12 || >=14}
+ primeicons@7.0.0:
+ resolution: {integrity: sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==}
+
+ primevue@4.5.5:
+ resolution: {integrity: sha512-Kv5REIewCdP806QaoU+4nBXfmpzOGFKkZ9qH4KsL6MjiAQVc4PUzypt8erl4r3Vzh3nr3aWZIxkxYRRsLGiX2A==}
+ engines: {node: '>=12.11.0'}
+
prr@1.0.1:
resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
@@ -951,6 +1190,13 @@ packages:
resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
engines: {node: '>=18'}
+ tailwindcss@4.3.0:
+ resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==}
+
+ tapable@2.3.3:
+ resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
+ engines: {node: '>=6'}
+
tinyglobby@0.2.16:
resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
engines: {node: '>=12.0.0'}
@@ -1137,8 +1383,25 @@ snapshots:
'@esbuild/win32-x64@0.27.7':
optional: true
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
'@jridgewell/sourcemap-codec@1.5.5': {}
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
'@oxfmt/binding-android-arm-eabi@0.49.0':
optional: true
@@ -1253,6 +1516,33 @@ snapshots:
'@oxlint/binding-win32-x64-msvc@1.64.0':
optional: true
+ '@primeuix/styled@0.7.4':
+ dependencies:
+ '@primeuix/utils': 0.6.4
+
+ '@primeuix/styles@2.0.3':
+ dependencies:
+ '@primeuix/styled': 0.7.4
+
+ '@primeuix/themes@2.0.3':
+ dependencies:
+ '@primeuix/styled': 0.7.4
+
+ '@primeuix/utils@0.6.4': {}
+
+ '@primevue/core@4.5.5(vue@3.5.34(typescript@5.9.3))':
+ dependencies:
+ '@primeuix/styled': 0.7.4
+ '@primeuix/utils': 0.6.4
+ vue: 3.5.34(typescript@5.9.3)
+
+ '@primevue/icons@4.5.5(vue@3.5.34(typescript@5.9.3))':
+ dependencies:
+ '@primeuix/utils': 0.6.4
+ '@primevue/core': 4.5.5(vue@3.5.34(typescript@5.9.3))
+ transitivePeerDependencies:
+ - vue
+
'@redocly/ajv@8.11.2':
dependencies:
fast-deep-equal: 3.1.3
@@ -1353,16 +1643,84 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.60.4':
optional: true
+ '@tailwindcss/node@4.3.0':
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ enhanced-resolve: 5.21.3
+ jiti: 2.7.0
+ lightningcss: 1.32.0
+ magic-string: 0.30.21
+ source-map-js: 1.2.1
+ tailwindcss: 4.3.0
+
+ '@tailwindcss/oxide-android-arm64@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-musl@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-wasm32-wasi@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.3.0':
+ optional: true
+
+ '@tailwindcss/oxide@4.3.0':
+ optionalDependencies:
+ '@tailwindcss/oxide-android-arm64': 4.3.0
+ '@tailwindcss/oxide-darwin-arm64': 4.3.0
+ '@tailwindcss/oxide-darwin-x64': 4.3.0
+ '@tailwindcss/oxide-freebsd-x64': 4.3.0
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.0
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.3.0
+ '@tailwindcss/oxide-linux-arm64-musl': 4.3.0
+ '@tailwindcss/oxide-linux-x64-gnu': 4.3.0
+ '@tailwindcss/oxide-linux-x64-musl': 4.3.0
+ '@tailwindcss/oxide-wasm32-wasi': 4.3.0
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0
+ '@tailwindcss/oxide-win32-x64-msvc': 4.3.0
+
+ '@tailwindcss/vite@4.3.0(vite@7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0))':
+ dependencies:
+ '@tailwindcss/node': 4.3.0
+ '@tailwindcss/oxide': 4.3.0
+ tailwindcss: 4.3.0
+ vite: 7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)
+
'@types/estree@1.0.8': {}
'@types/node@24.12.4':
dependencies:
undici-types: 7.16.0
- '@vitejs/plugin-vue@6.0.6(vite@7.3.3(@types/node@24.12.4)(less@4.6.4))(vue@3.5.34(typescript@5.9.3))':
+ '@vitejs/plugin-vue@6.0.6(vite@7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0))(vue@3.5.34(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-rc.13
- vite: 7.3.3(@types/node@24.12.4)(less@4.6.4)
+ vite: 7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)
vue: 3.5.34(typescript@5.9.3)
'@volar/language-core@2.4.28':
@@ -1476,6 +1834,13 @@ snapshots:
optionalDependencies:
supports-color: 10.2.2
+ detect-libc@2.1.2: {}
+
+ enhanced-resolve@5.21.3:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.3
+
entities@7.0.1: {}
errno@0.1.8:
@@ -1523,8 +1888,7 @@ snapshots:
fsevents@2.3.3:
optional: true
- graceful-fs@4.2.11:
- optional: true
+ graceful-fs@4.2.11: {}
https-proxy-agent@7.0.6(supports-color@10.2.2):
dependencies:
@@ -1545,6 +1909,8 @@ snapshots:
is-what@4.1.16: {}
+ jiti@2.7.0: {}
+
js-levenshtein@1.1.6: {}
js-tokens@4.0.0: {}
@@ -1572,6 +1938,55 @@ snapshots:
needle: 3.5.0
source-map: 0.6.1
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -1688,6 +2103,18 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ primeicons@7.0.0: {}
+
+ primevue@4.5.5(vue@3.5.34(typescript@5.9.3)):
+ dependencies:
+ '@primeuix/styled': 0.7.4
+ '@primeuix/styles': 2.0.3
+ '@primeuix/utils': 0.6.4
+ '@primevue/core': 4.5.5(vue@3.5.34(typescript@5.9.3))
+ '@primevue/icons': 4.5.5(vue@3.5.34(typescript@5.9.3))
+ transitivePeerDependencies:
+ - vue
+
prr@1.0.1:
optional: true
@@ -1740,6 +2167,10 @@ snapshots:
supports-color@10.2.2: {}
+ tailwindcss@4.3.0: {}
+
+ tapable@2.3.3: {}
+
tinyglobby@0.2.16:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
@@ -1755,7 +2186,7 @@ snapshots:
uri-js-replace@1.0.1: {}
- vite@7.3.3(@types/node@24.12.4)(less@4.6.4):
+ vite@7.3.3(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0):
dependencies:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.4)
@@ -1766,7 +2197,9 @@ snapshots:
optionalDependencies:
'@types/node': 24.12.4
fsevents: 2.3.3
+ jiti: 2.7.0
less: 4.6.4
+ lightningcss: 1.32.0
vscode-uri@3.1.0: {}
diff --git a/src/main.ts b/src/main.ts
index 3a0e429..b1dd5b7 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,6 +1,17 @@
import { createApp } from 'vue';
+import PrimeVue from 'primevue/config';
+import Lara from '@primeuix/themes/lara';
+import 'primeicons/primeicons.css';
import './style.css';
+import './style.less';
import App from './App.vue';
-createApp(App).mount('#app');
+const app = createApp(App);
+app.use(PrimeVue, {
+ theme: {
+ preset: Lara,
+ },
+ ripple: true,
+});
+app.mount('#app');
diff --git a/src/style.css b/src/style.css
index e69de29..04306d1 100644
--- a/src/style.css
+++ b/src/style.css
@@ -0,0 +1,86 @@
+@import url('https://fonts.googleapis.com/css?family=Plus%20Jakarta%20Sans:700|Noto%20Sans:400');
+
+@import "tailwindcss";
+
+
+@theme {
+ --font-jakarta: Plus Jakarta Sans, sans-serif;
+ --font-heading: Plus Jakarta Sans, sans-serif;
+ --font-noto: Noto Sans, sans-serif;
+ --font-body: Noto Sans, sans-serif;
+ --font-normal: 400;
+ --font-bold: 700;
+ --text-sm: 0.750rem;
+ --text-base: 1rem;
+ --text-xl: 1.333rem;
+ --text-2xl: 1.777rem;
+ --text-3xl: 2.369rem;
+ --text-4xl: 3.158rem;
+ --text-5xl: 4.210rem;
+
+ --color-text: oklch(13.42% 0.025 277.52);
+ --color-text-50: oklch(13.49% 0.027 277.57);
+ --color-text-100: oklch(18.12% 0.047 276.94);
+ --color-text-200: oklch(26.14% 0.086 274.25);
+ --color-text-300: oklch(33.63% 0.119 273.77);
+ --color-text-400: oklch(40.55% 0.152 273.78);
+ --color-text-500: oklch(47.37% 0.181 273.51);
+ --color-text-600: oklch(57.68% 0.143 277.26);
+ --color-text-700: oklch(68.53% 0.103 278.92);
+ --color-text-800: oklch(79.24% 0.067 280.95);
+ --color-text-900: oklch(89.69% 0.031 281.79);
+ --color-text-950: oklch(94.88% 0.016 282.27);
+
+ --color-background: oklch(98.32% 0.005 286.30);
+ --color-background-50: oklch(13.12% 0.030 281.49);
+ --color-background-100: oklch(17.61% 0.050 279.92);
+ --color-background-200: oklch(25.07% 0.093 277.28);
+ --color-background-300: oklch(32.27% 0.129 276.41);
+ --color-background-400: oklch(39.10% 0.162 275.91);
+ --color-background-500: oklch(45.65% 0.193 275.59);
+ --color-background-600: oklch(56.14% 0.154 280.23);
+ --color-background-700: oklch(67.14% 0.113 282.93);
+ --color-background-800: oklch(78.44% 0.072 284.61);
+ --color-background-900: oklch(89.30% 0.034 285.69);
+ --color-background-950: oklch(94.69% 0.017 286.06);
+
+ --color-primary: oklch(47.97% 0.175 276.79);
+ --color-primary-50: oklch(13.64% 0.027 282.25);
+ --color-primary-100: oklch(17.88% 0.046 280.64);
+ --color-primary-200: oklch(25.68% 0.085 277.64);
+ --color-primary-300: oklch(32.98% 0.118 277.13);
+ --color-primary-400: oklch(39.93% 0.151 276.24);
+ --color-primary-500: oklch(46.58% 0.180 276.13);
+ --color-primary-600: oklch(57.13% 0.142 279.97);
+ --color-primary-700: oklch(68.02% 0.103 282.69);
+ --color-primary-800: oklch(78.84% 0.066 283.81);
+ --color-primary-900: oklch(89.54% 0.031 285.75);
+ --color-primary-950: oklch(94.66% 0.016 286.09);
+
+ --color-secondary: oklch(70.78% 0.104 302.18);
+ --color-secondary-50: oklch(14.31% 0.027 303.00);
+ --color-secondary-100: oklch(18.93% 0.046 300.07);
+ --color-secondary-200: oklch(27.46% 0.086 298.89);
+ --color-secondary-300: oklch(35.53% 0.118 298.36);
+ --color-secondary-400: oklch(43.08% 0.151 298.00);
+ --color-secondary-500: oklch(50.51% 0.179 298.28);
+ --color-secondary-600: oklch(60.08% 0.145 300.36);
+ --color-secondary-700: oklch(70.18% 0.106 301.86);
+ --color-secondary-800: oklch(80.18% 0.070 302.91);
+ --color-secondary-900: oklch(90.24% 0.032 303.45);
+ --color-secondary-950: oklch(95.04% 0.017 304.80);
+
+ --color-accent: oklch(66.24% 0.137 313.05);
+ --color-accent-50: oklch(14.75% 0.029 314.19);
+ --color-accent-100: oklch(19.76% 0.049 312.79);
+ --color-accent-200: oklch(29.04% 0.090 311.91);
+ --color-accent-300: oklch(37.77% 0.123 311.83);
+ --color-accent-400: oklch(45.96% 0.157 311.53);
+ --color-accent-500: oklch(53.87% 0.186 311.54);
+ --color-accent-600: oklch(62.58% 0.152 312.52);
+ --color-accent-700: oklch(71.89% 0.112 313.25);
+ --color-accent-800: oklch(81.23% 0.074 313.55);
+ --color-accent-900: oklch(90.72% 0.035 314.09);
+ --color-accent-950: oklch(95.28% 0.018 314.73);
+
+}
diff --git a/src/style.less b/src/style.less
new file mode 100644
index 0000000..e69de29
diff --git a/vite.config.ts b/vite.config.ts
index 57dd535..0ea947d 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -2,10 +2,11 @@ import * as path from 'path';
import vue from '@vitejs/plugin-vue';
import { defineConfig } from 'vite';
+import tailwindcss from '@tailwindcss/vite';
// https://vite.dev/config/
export default defineConfig({
- plugins: [vue()],
+ plugins: [vue(), tailwindcss()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),