Skip to content

Commit 5ef0548

Browse files
committed
Enhance: Premium UI design for Create Work Item modal
Transformed the modal with modern, professional styling following best practices from Asana, ClickUp, and Apple: **Visual Enhancements:** - Increased spacing and breathing room (px-6 py-6 with space-y-5) - Rounded corners upgraded to xl for softer, modern look - Semi-transparent backgrounds with backdrop blur for depth - Smooth 300ms transitions on all interactive elements **Input Fields:** - Enhanced focus states with glowing shadows (green-500/20) - Hover states for better feedback (border-gray-500/70) - Increased padding (py-3.5) for better touch targets - Cleaner placeholders (short and direct) - Disabled textarea resize for consistent layout **Buttons:** - Larger padding (px-6 py-3) for premium feel - Active scale animations (active:scale-95) - Enhanced shadows on hover (shadow-xl) - Border accents for depth (border-2) - Improved disabled states **Professional Polish:** - Consistent border-2 styling throughout - Backdrop blur effects for glassmorphism - Cursor pointer on interactive elements - Smooth hover animations on all inputs - Better visual hierarchy with refined shadows Result: Clean, modern, eye-catching interface with excellent UX
1 parent c36a4ae commit 5ef0548

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

packages/web/src/components/CreateWorkItemModal.tsx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ export function CreateWorkItemModal({ isOpen, onClose, parentWorkItemId, positio
375375
</div>
376376

377377
<div className="max-h-[70vh] overflow-y-auto scrollbar-thin scrollbar-thumb-gray-600 scrollbar-track-gray-800 hover:scrollbar-thumb-gray-500">
378-
<form onSubmit={handleSubmit} className="px-3 py-2 space-y-2 relative">
378+
<form onSubmit={handleSubmit} className="px-6 py-6 space-y-5 relative">
379379
{parentWorkItemId && (
380380
<div className="space-y-2 mb-2">
381381
<div className="bg-gradient-to-br from-gray-800/30 to-gray-700/20 border border-gray-600/30 rounded-lg p-2 shadow-lg backdrop-blur-sm">
@@ -434,12 +434,12 @@ export function CreateWorkItemModal({ isOpen, onClose, parentWorkItemId, positio
434434
required
435435
value={formData.title}
436436
onChange={(e) => setFormData(prev => ({ ...prev, title: e.target.value }))}
437-
className={`w-full border-2 bg-gray-800 text-white rounded-lg px-4 py-3 focus:outline-none transition-all duration-200 placeholder-gray-400 text-sm ${
437+
className={`w-full border-2 bg-gray-800/50 text-white rounded-xl px-4 py-3.5 focus:outline-none transition-all duration-300 placeholder-gray-500 text-sm backdrop-blur-sm ${
438438
isDuplicateName
439-
? 'border-red-500 focus:border-red-400'
440-
: 'border-gray-600 focus:!border-green-400'
439+
? 'border-red-500/50 focus:border-red-400 focus:shadow-lg focus:shadow-red-500/20 focus:bg-gray-800'
440+
: 'border-gray-600/50 focus:!border-green-400 focus:shadow-lg focus:shadow-green-500/20 focus:bg-gray-800 hover:border-gray-500/70'
441441
}`}
442-
placeholder="Enter a descriptive title for your work item"
442+
placeholder="Work item title"
443443
/>
444444
{isDuplicateName && formData.title.trim() && (
445445
<div className="mt-1 flex items-center space-x-2 text-red-400 text-xs">
@@ -458,11 +458,11 @@ export function CreateWorkItemModal({ isOpen, onClose, parentWorkItemId, positio
458458
</label>
459459
<textarea
460460
id="description"
461-
rows={2}
461+
rows={3}
462462
value={formData.description}
463463
onChange={(e) => setFormData(prev => ({ ...prev, description: e.target.value }))}
464-
className="w-full border-2 border-gray-600 bg-gray-800 text-white rounded-lg placeholder-gray-400 px-4 py-3 focus:outline-none focus:!border-green-400 transition-all duration-200 text-sm"
465-
placeholder="Describe the work item"
464+
className="w-full border-2 border-gray-600/50 bg-gray-800/50 text-white rounded-xl placeholder-gray-500 px-4 py-3.5 focus:outline-none focus:!border-green-400 focus:shadow-lg focus:shadow-green-500/20 focus:bg-gray-800 hover:border-gray-500/70 transition-all duration-300 text-sm resize-none backdrop-blur-sm"
465+
placeholder="Add a description"
466466
/>
467467
</div>
468468

@@ -507,7 +507,7 @@ export function CreateWorkItemModal({ isOpen, onClose, parentWorkItemId, positio
507507
<button
508508
type="button"
509509
onClick={() => setIsStatusOpen(!isStatusOpen)}
510-
className="w-full flex items-center justify-between px-4 py-3 bg-gray-800 border-2 border-gray-600 rounded-lg text-white transition-all duration-200 focus:!border-green-400 focus:outline-none text-sm"
510+
className="w-full flex items-center justify-between px-4 py-3.5 bg-gray-800/50 border-2 border-gray-600/50 rounded-xl text-white transition-all duration-300 focus:!border-green-400 focus:shadow-lg focus:shadow-green-500/20 focus:outline-none hover:border-gray-500/70 hover:bg-gray-800 text-sm backdrop-blur-sm"
511511
>
512512
<div className="flex items-center space-x-2">
513513
{(() => {
@@ -584,7 +584,7 @@ export function CreateWorkItemModal({ isOpen, onClose, parentWorkItemId, positio
584584
id="contributorId"
585585
value={formData.assignedTo}
586586
onChange={(e) => setFormData(prev => ({ ...prev, assignedTo: e.target.value }))}
587-
className="w-full bg-gray-800 border-2 border-gray-600 rounded-lg px-4 py-3 text-sm text-white focus:outline-none focus:!border-green-400 transition-all duration-200 placeholder-gray-400"
587+
className="w-full bg-gray-800/50 border-2 border-gray-600/50 rounded-xl px-4 py-3.5 text-sm text-white focus:outline-none focus:!border-green-400 focus:shadow-lg focus:shadow-green-500/20 hover:border-gray-500/70 hover:bg-gray-800 transition-all duration-300 backdrop-blur-sm cursor-pointer"
588588
>
589589
<option value="">No contributor</option>
590590
<option value="user-1">John Doe</option>
@@ -607,7 +607,7 @@ export function CreateWorkItemModal({ isOpen, onClose, parentWorkItemId, positio
607607
id="dueDate"
608608
value={formData.dueDate}
609609
onChange={(e) => setFormData(prev => ({ ...prev, dueDate: e.target.value }))}
610-
className="w-full bg-gray-800 border-2 border-gray-600 rounded-lg px-4 py-3 text-sm text-white focus:outline-none focus:!border-green-400 transition-all duration-200 placeholder-gray-400"
610+
className="w-full bg-gray-800/50 border-2 border-gray-600/50 rounded-xl px-4 py-3.5 text-sm text-white focus:outline-none focus:!border-green-400 focus:shadow-lg focus:shadow-green-500/20 hover:border-gray-500/70 hover:bg-gray-800 transition-all duration-300 backdrop-blur-sm cursor-pointer"
611611
/>
612612
</div>
613613
</div>
@@ -750,21 +750,21 @@ export function CreateWorkItemModal({ isOpen, onClose, parentWorkItemId, positio
750750

751751
</div>
752752

753-
<div className="flex justify-end space-x-2 pt-2 border-t border-gray-700/30">
753+
<div className="flex justify-end space-x-3 pt-4 border-t border-gray-700/30">
754754
<button
755755
type="button"
756756
onClick={onClose}
757-
className="px-4 py-2 text-xs text-gray-300 bg-gray-700/50 rounded-lg hover:bg-red-600 hover:text-white transition-all duration-200 font-medium hover:scale-105 border border-gray-600/30 hover:border-red-600"
757+
className="px-6 py-3 text-sm text-gray-300 bg-gray-700/50 rounded-xl hover:bg-red-600 hover:text-white transition-all duration-300 font-semibold hover:scale-105 border-2 border-gray-600/30 hover:border-red-600 hover:shadow-lg hover:shadow-red-500/20 active:scale-95"
758758
>
759759
Cancel
760760
</button>
761761
<button
762762
type="submit"
763763
disabled={creatingWorkItem || !isFormValid}
764-
className={`px-4 py-2 text-xs rounded-lg transition-all duration-200 font-semibold flex items-center space-x-1.5 hover:scale-105 shadow-lg ${
764+
className={`px-6 py-3 text-sm rounded-xl transition-all duration-300 font-semibold flex items-center space-x-2 shadow-lg ${
765765
!isFormValid || creatingWorkItem
766-
? 'bg-gray-600/50 text-gray-400 cursor-not-allowed opacity-60'
767-
: 'bg-gradient-to-r from-green-600 via-emerald-600 to-teal-600 text-white hover:from-green-500 hover:via-emerald-500 hover:to-teal-500 shadow-green-500/25 hover:shadow-xl hover:shadow-green-500/40'
766+
? 'bg-gray-600/50 text-gray-400 cursor-not-allowed opacity-60 border-2 border-gray-600/30'
767+
: 'bg-gradient-to-r from-green-600 via-emerald-600 to-teal-600 text-white hover:from-green-500 hover:via-emerald-500 hover:to-teal-500 shadow-green-500/25 hover:shadow-xl hover:shadow-green-500/40 hover:scale-105 active:scale-95 border-2 border-green-500/30'
768768
}`}
769769
>
770770
{creatingWorkItem ? (

0 commit comments

Comments
 (0)