feat: workbench

This commit is contained in:
yuguangzhou
2024-06-25 23:57:39 +08:00
parent da9faebb08
commit 7aaa8d073e
3 changed files with 93 additions and 42 deletions
@@ -13,42 +13,60 @@ import { format } from "date-fns";
const BasicInfo = () => {
const [date, setDate] = useState<Date>();
const [isDateOpen, setIsDateOpen] = useState<boolean>(false);
return (
<div className="flex items-center flex-wrap gap-[16px]">
<div className="flex items-center flex-[48%] ">
<Label htmlFor="name" className="w-[80px]">
</Label>
<Input id="name" className="w-[200px]" />
<Input id="name" className="w-[200px] flex-1" />
</div>
<div className="flex items-center flex-[48%]">
<Label htmlFor="phone" className="w-[80px]">
</Label>
<Input id="phone" className="w-[200px]" />
<Input id="phone" className="w-[200px] flex-1" />
</div>
<div className="flex items-center flex-[48%]">
<Label htmlFor="wechat" className="w-[80px]">
</Label>
<Input id="wechat" className="w-[200px]" />
<Input id="wechat" className="w-[200px] flex-1" />
</div>
<div className="flex items-center flex-[48%]">
<Label htmlFor="email" className="w-[80px]">
</Label>
<Input id="email" className="w-[200px] flex-1" />
</div>
<div className="flex items-center flex-[48%]">
<Label htmlFor="wechat" className="w-[80px]">
</Label>
<Popover>
<Popover open={isDateOpen}>
<PopoverTrigger asChild>
<Button variant={"outline"}>
<CalendarIcon className="mr-2 h-4 w-4" />
{date ? format(date, "PPP") : <span>Pick a date</span>}
</Button>
<div className="relative flex-1 w-[200px]">
<CalendarIcon className="left-[10px] top-[12px] absolute h-4 w-4" />
<Input
className="flex-1 pl-[36px] "
value={date ? format(date, "PPP") : "Pick a date"}
onClick={() => setIsDateOpen(true)}
></Input>
</div>
</PopoverTrigger>
<PopoverContent className="w-auto p-0">
<PopoverContent
className="w-auto p-0"
onFocusOutside={() => setIsDateOpen(false)}
onPointerDownOutside={() => setIsDateOpen(false)}
>
<Calendar
mode="single"
selected={date}
onSelect={setDate}
onSelect={(val) => {
setIsDateOpen(false);
setDate(val);
}}
initialFocus
/>
</PopoverContent>
@@ -6,40 +6,73 @@ import Project from "../Project";
import Empolyment from "../Empolyment";
import Education from "../Education";
import Cert from "../Cert";
import { UserRound, PencilRuler, FileJson, Network } from "lucide-react";
const Editor = () => {
const [activeTab, setActiveTab] = useState("basic");
const tabList = [
{
value: "basic",
label: "基本信息",
icon: <UserRound size={16} />
},
{
value: "skills",
label: "专业技能",
icon: <PencilRuler size={16} />
},
{
value: "project",
label: "项目经历",
icon: <FileJson size={16} />
},
{
value: "empolyment",
label: "工作经历",
icon: <Network size={16} />
},
{
value: "education",
label: "教育经历",
icon: <UserRound size={16} />
},
{
value: "cert",
label: "技能证书",
icon: <UserRound size={16} />
}
];
return (
<div className="flex-1 bg-[#fff] p-[12px]">
{/* 简历编辑表单 */}
<div className="text-[24px] mb-[10px]">-xx-x年</div>
<Tabs
value={activeTab}
onValueChange={setActiveTab}
className="w-[400px]"
>
<TabsList>
<TabsTrigger value="basic"></TabsTrigger>
<TabsTrigger value="skills"></TabsTrigger>
<TabsTrigger value="project"></TabsTrigger>
<TabsTrigger value="empolyment"></TabsTrigger>
<TabsTrigger value="education"></TabsTrigger>
<TabsTrigger value="cert"></TabsTrigger>
</TabsList>
</Tabs>
<div className="mt-[12px]">
<div className="text-[20px] mb-[12px]"></div>
<BasicInfo></BasicInfo>
<div className="text-[20px] mb-[12px]"></div>
<Skills></Skills>
<div className="text-[20px] mb-[12px]"></div>
<Project></Project>
<div className="text-[20px] mb-[12px]"></div>
<Empolyment></Empolyment>
<div className="text-[20px] mb-[12px]"></div>
<Education></Education>
<div className="text-[20px]"></div>
<Cert></Cert>
<div className="flex flex-1 p-[12px]">
<div className="w-[72px] shrink-0 mr-[10px] bg-[#ecedee]">
{tabList.map((item, index) => {
return (
<div
key={index}
className="flex flex-col items-center text-[12px] p-[12px] cursor-pointer hover:bg-[#e3e3e5] hover:rounded-[4px]"
>
<div>{item.icon}</div>
<div>{item.label}</div>
</div>
);
})}
</div>
<div className="bg-[#fff] p-[12px] rounded-[6px]">
<div className="text-[24px] mb-[10px]">-xx-x年</div>
<div className="mt-[12px]">
<div className="text-[20px] mb-[12px]"></div>
<BasicInfo></BasicInfo>
<div className="text-[20px] mb-[12px]"></div>
<Skills></Skills>
<div className="text-[20px] mb-[12px]"></div>
<Project></Project>
<div className="text-[20px] mb-[12px]"></div>
<Empolyment></Empolyment>
<div className="text-[20px] mb-[12px]"></div>
<Education></Education>
<div className="text-[20px]"></div>
<Cert></Cert>
</div>
</div>
</div>
);
@@ -1,5 +1,5 @@
.container {
display: flex;
height: 100vh;
background: #fafafa;
background: #ecedee;
}