summaryrefslogtreecommitdiff
path: root/lib/avl/components/project-field-utils.ts
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-09-15 18:59:41 +0900
committerjoonhoekim <26rote@gmail.com>2025-09-15 18:59:41 +0900
commitd5f26d34c4ac6f3eaac16fbc6069de2c2341a6ff (patch)
treead4ecb476a6fd3b754e741e795bd7a3adbbe03ea /lib/avl/components/project-field-utils.ts
parent25b916d040a512cd5248dff319d727ae144d0652 (diff)
parent2b490956c9752c1b756780a3461bc1c37b6fe0a7 (diff)
[Merge] AVL 및 Vendor-Pool 기능 1차 구현
Diffstat (limited to 'lib/avl/components/project-field-utils.ts')
-rw-r--r--lib/avl/components/project-field-utils.ts45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/avl/components/project-field-utils.ts b/lib/avl/components/project-field-utils.ts
new file mode 100644
index 00000000..d3d84295
--- /dev/null
+++ b/lib/avl/components/project-field-utils.ts
@@ -0,0 +1,45 @@
+// 프로젝트 검색 상태 타입
+export type ProjectSearchStatus = 'idle' | 'searching' | 'success-projects' | 'success-bidding' | 'error'
+
+// 프로젝트 상태에 따른 스타일링 유틸리티 함수들
+export const getLabelStatusClassName = (status: ProjectSearchStatus): string => {
+ switch (status) {
+ case 'error':
+ return 'text-red-600'
+ case 'success-projects':
+ case 'success-bidding':
+ return 'text-green-600'
+ case 'searching':
+ return 'text-blue-600'
+ default:
+ return 'text-muted-foreground'
+ }
+}
+
+export const getDisplayElementStatusClassName = (status: ProjectSearchStatus): string => {
+ switch (status) {
+ case 'error':
+ return 'border-red-300'
+ case 'success-projects':
+ case 'success-bidding':
+ return 'border-green-300'
+ case 'searching':
+ return 'border-blue-300'
+ default:
+ return 'border-input'
+ }
+}
+
+export const getInputStatusClassName = (status: ProjectSearchStatus): string => {
+ switch (status) {
+ case 'error':
+ return 'border-red-300 focus:border-red-500 focus:ring-red-500/20'
+ case 'success-projects':
+ case 'success-bidding':
+ return 'border-green-300 focus:border-green-500 focus:ring-green-500/20'
+ case 'searching':
+ return 'border-blue-300 focus:border-blue-500 focus:ring-blue-500/20'
+ default:
+ return ''
+ }
+}