pala-ui-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -0
- package/dist/index.cjs +928 -0
- package/dist/index.d.cts +122 -0
- package/dist/index.d.ts +122 -0
- package/dist/index.js +869 -0
- package/package.json +52 -0
- package/src/styles.css +57 -0
- package/src/tokens.css +25 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,928 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var lucideReact = require('lucide-react');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var tailwindMerge = require('tailwind-merge');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var react = require('react');
|
|
8
|
+
|
|
9
|
+
// src/components/Button.tsx
|
|
10
|
+
function cn(...inputs) {
|
|
11
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
12
|
+
}
|
|
13
|
+
var base = "font-heading font-bold transition-all active:scale-[0.98] rounded-[9999px_12px_9999px_12px]";
|
|
14
|
+
var sm = "h-8 px-3 text-[13px]";
|
|
15
|
+
var md = "px-4 py-3 text-[15px]";
|
|
16
|
+
var lg = "h-14 px-5 text-[17px]";
|
|
17
|
+
function btn(v, s = md, userCls) {
|
|
18
|
+
return cn(base, s, v, userCls);
|
|
19
|
+
}
|
|
20
|
+
function ButtonPrimary({ className, ...props }) {
|
|
21
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-primary text-[#1A1A1A] hover:bg-primary-soft", md, className), ...props, children: "Apply now" });
|
|
22
|
+
}
|
|
23
|
+
function ButtonSecondary({ className, ...props }) {
|
|
24
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("border border-border bg-card text-foreground-primary hover:bg-surface-bg", md, className), ...props, children: "Cancel" });
|
|
25
|
+
}
|
|
26
|
+
function ButtonAccent({ className, ...props }) {
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-accent text-[#1A1A1A] hover:bg-warning-soft", md, className), ...props, children: "Highlight" });
|
|
28
|
+
}
|
|
29
|
+
function ButtonSuccess({ className, ...props }) {
|
|
30
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-success text-white hover:brightness-95", md, className), ...props, children: "Complete" });
|
|
31
|
+
}
|
|
32
|
+
function ButtonDestructive({ className, ...props }) {
|
|
33
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-error text-white hover:brightness-95", md, className), ...props, children: "Delete" });
|
|
34
|
+
}
|
|
35
|
+
function ButtonWarning({ className, ...props }) {
|
|
36
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-warning text-[#1A1A1A] hover:brightness-95", md, className), ...props, children: "Archive" });
|
|
37
|
+
}
|
|
38
|
+
function ButtonOutline({ className, ...props }) {
|
|
39
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("border-2 border-primary text-primary hover:bg-primary/10", md, className), ...props, children: "Outline" });
|
|
40
|
+
}
|
|
41
|
+
function ButtonGhost({ className, ...props }) {
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-transparent text-foreground-primary hover:bg-primary/5", md, className), ...props, children: "Ghost" });
|
|
43
|
+
}
|
|
44
|
+
function ButtonLink({ className, ...props }) {
|
|
45
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
46
|
+
"button",
|
|
47
|
+
{
|
|
48
|
+
className: cn(
|
|
49
|
+
"font-heading text-[15px] font-bold text-primary transition-colors hover:text-primary-soft active:scale-[0.98]",
|
|
50
|
+
className
|
|
51
|
+
),
|
|
52
|
+
...props,
|
|
53
|
+
children: "Text link"
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
function ButtonWithIconLeft({ className, ...props }) {
|
|
58
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("button", { className: btn("flex items-center gap-2 bg-primary text-[#1A1A1A] hover:bg-primary-soft", md, className), ...props, children: [
|
|
59
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { size: 16 }),
|
|
60
|
+
"Search"
|
|
61
|
+
] });
|
|
62
|
+
}
|
|
63
|
+
function ButtonWithIconRight({ className, ...props }) {
|
|
64
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("button", { className: btn("flex items-center gap-2 bg-primary text-[#1A1A1A] hover:bg-primary-soft", md, className), ...props, children: [
|
|
65
|
+
"Upload",
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { size: 16 })
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
function ButtonBlock({ className, ...props }) {
|
|
70
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("w-full bg-primary text-[#1A1A1A] hover:bg-primary-soft", md, className), ...props, children: "Full Width" });
|
|
71
|
+
}
|
|
72
|
+
function ButtonSplit({ className, ...props }) {
|
|
73
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex overflow-hidden rounded-[9999px_12px_9999px_12px]", children: [
|
|
74
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
75
|
+
"button",
|
|
76
|
+
{
|
|
77
|
+
className: cn(
|
|
78
|
+
"flex items-center gap-2 bg-primary px-4 py-3 text-[15px] font-bold font-heading text-[#1A1A1A] transition-all hover:bg-primary-soft active:scale-[0.98]",
|
|
79
|
+
className
|
|
80
|
+
),
|
|
81
|
+
...props,
|
|
82
|
+
children: "Publish"
|
|
83
|
+
}
|
|
84
|
+
),
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "bg-primary px-3 text-[#1A1A1A] transition-all hover:bg-primary-soft active:scale-[0.98]", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: 16 }) })
|
|
86
|
+
] });
|
|
87
|
+
}
|
|
88
|
+
function ButtonIcon({ className, ...props }) {
|
|
89
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
90
|
+
"button",
|
|
91
|
+
{
|
|
92
|
+
className: cn(
|
|
93
|
+
"flex h-11 w-11 items-center justify-center rounded-[12px_0_12px_0] border border-border bg-card text-foreground-primary transition-all hover:bg-primary-soft active:scale-[0.95]",
|
|
94
|
+
className
|
|
95
|
+
),
|
|
96
|
+
...props,
|
|
97
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { size: 20 })
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
function ButtonLoading({ className, ...props }) {
|
|
102
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
103
|
+
"button",
|
|
104
|
+
{
|
|
105
|
+
disabled: true,
|
|
106
|
+
className: cn(
|
|
107
|
+
"flex cursor-not-allowed items-center gap-2 rounded-[9999px_12px_9999px_12px] bg-primary/60 px-4 py-3 font-heading text-[15px] font-bold text-[#1A1A1A]",
|
|
108
|
+
className
|
|
109
|
+
),
|
|
110
|
+
...props,
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.LoaderCircle, { size: 16, className: "animate-spin-slow" }),
|
|
113
|
+
"Loading"
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
function ButtonDisabledPrimary({ className, ...props }) {
|
|
119
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { disabled: true, className: btn("cursor-not-allowed bg-primary/60 text-[#1A1A1A]", md, className), ...props, children: "Disabled" });
|
|
120
|
+
}
|
|
121
|
+
function ButtonSmall({ className, ...props }) {
|
|
122
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-primary text-[#1A1A1A] hover:bg-primary-soft", sm, className), ...props, children: "Small" });
|
|
123
|
+
}
|
|
124
|
+
function ButtonLarge({ className, ...props }) {
|
|
125
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className: btn("bg-primary text-[#1A1A1A] hover:bg-primary-soft", lg, className), ...props, children: "Large" });
|
|
126
|
+
}
|
|
127
|
+
function ButtonGroup({ options, value, onChange }) {
|
|
128
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex overflow-hidden rounded-[12px_0_12px_0] border border-border", children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
129
|
+
"button",
|
|
130
|
+
{
|
|
131
|
+
onClick: () => onChange(opt),
|
|
132
|
+
className: cn(
|
|
133
|
+
"px-4 py-2 font-heading text-[13px] font-bold transition-all",
|
|
134
|
+
opt === value ? "bg-primary text-[#1A1A1A]" : "bg-card text-foreground-primary hover:bg-surface-bg"
|
|
135
|
+
),
|
|
136
|
+
children: opt
|
|
137
|
+
},
|
|
138
|
+
opt
|
|
139
|
+
)) });
|
|
140
|
+
}
|
|
141
|
+
var disabledVariants = [
|
|
142
|
+
{ label: "Primary", cls: "bg-primary/60 text-[#1A1A1A]" },
|
|
143
|
+
{ label: "Secondary", cls: "border border-border/60 bg-card/60 text-foreground-primary/60" },
|
|
144
|
+
{ label: "Accent", cls: "bg-accent/60 text-[#1A1A1A]/60" },
|
|
145
|
+
{ label: "Success", cls: "bg-success/60 text-white/60" },
|
|
146
|
+
{ label: "Destructive", cls: "bg-error/60 text-white/60" },
|
|
147
|
+
{ label: "Warning", cls: "bg-warning/60 text-[#1A1A1A]/60" },
|
|
148
|
+
{ label: "Outline", cls: "border-2 border-primary/40 text-primary/60" },
|
|
149
|
+
{ label: "Ghost", cls: "text-foreground-primary/50" }
|
|
150
|
+
];
|
|
151
|
+
function ProgressBar({ value = 65 }) {
|
|
152
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-2 w-full rounded-full bg-surface-bg", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-2 rounded-full bg-primary transition-all duration-500", style: { width: `${value}%` } }) });
|
|
153
|
+
}
|
|
154
|
+
function Divider() {
|
|
155
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-px w-full bg-border" });
|
|
156
|
+
}
|
|
157
|
+
function Avatar({ size = "md", initials = "TM" }) {
|
|
158
|
+
const sizes = { sm: "h-8 w-8 text-[11px]", md: "h-11 w-11 text-[15px]", lg: "h-14 w-14 text-[18px]" };
|
|
159
|
+
const colors = [
|
|
160
|
+
"bg-primary-soft text-foreground-primary",
|
|
161
|
+
"bg-accent-secondary text-foreground-primary",
|
|
162
|
+
"bg-success-soft text-success"
|
|
163
|
+
];
|
|
164
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
165
|
+
"div",
|
|
166
|
+
{
|
|
167
|
+
className: cn(
|
|
168
|
+
"flex items-center justify-center rounded-full font-heading font-bold",
|
|
169
|
+
sizes[size],
|
|
170
|
+
colors[initials.charCodeAt(0) % colors.length]
|
|
171
|
+
),
|
|
172
|
+
children: initials
|
|
173
|
+
}
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
function Accordion() {
|
|
177
|
+
const [open, setOpen] = react.useState(true);
|
|
178
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full overflow-hidden rounded-[12px_0_12px_0] border border-border bg-background", children: [
|
|
179
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-3.5 py-3", children: [
|
|
180
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-body text-[14px] font-semibold text-foreground-primary", children: "Job Requirements" }),
|
|
181
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { onClick: () => setOpen(!open), className: "text-foreground-secondary", children: open ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: 16 }) })
|
|
182
|
+
] }),
|
|
183
|
+
open && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "animate-slide-down border-t border-border bg-info-soft px-3.5 py-3", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-foreground-primary", children: "Must have reliable transportation and be available weekends." }) }),
|
|
184
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-border px-3.5 py-3", children: [
|
|
185
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-body text-[14px] font-semibold text-foreground-primary", children: "Benefits" }),
|
|
186
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: 16, className: "text-foreground-secondary" })
|
|
187
|
+
] })
|
|
188
|
+
] });
|
|
189
|
+
}
|
|
190
|
+
function StatCard({ label = "Applicants", value = "24" }) {
|
|
191
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-[160px] flex-col rounded-[12px_0_12px_0] border border-border bg-white p-4", children: [
|
|
192
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground-secondary", children: label }),
|
|
193
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1 font-heading text-2xl font-bold text-foreground-primary", children: value })
|
|
194
|
+
] });
|
|
195
|
+
}
|
|
196
|
+
function JobCard() {
|
|
197
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full rounded-[12px_0_12px_0] border border-border bg-white p-4", children: [
|
|
198
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between", children: [
|
|
199
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
200
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-heading text-[16px] font-semibold text-foreground-primary", children: "Morning Barista" }),
|
|
201
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-foreground-secondary", children: "Downtown Cafe" })
|
|
202
|
+
] }),
|
|
203
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-[9999px_10px_9999px_10px] bg-accent px-2.5 py-1.5 text-[13px] font-bold text-[#1A1A1A]", children: "$17/hr" })
|
|
204
|
+
] }),
|
|
205
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-[14px] text-foreground-secondary", children: "Friendly local cafe looking for quick-footed morning support..." }),
|
|
206
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 flex gap-3 text-xs text-foreground-secondary", children: [
|
|
207
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
208
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPin, { size: 12 }),
|
|
209
|
+
" Downtown"
|
|
210
|
+
] }),
|
|
211
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
212
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { size: 12 }),
|
|
213
|
+
" Full-time"
|
|
214
|
+
] })
|
|
215
|
+
] })
|
|
216
|
+
] });
|
|
217
|
+
}
|
|
218
|
+
function CandidateCard() {
|
|
219
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full rounded-[12px_0_12px_0] border border-border bg-white p-4", children: [
|
|
220
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
221
|
+
/* @__PURE__ */ jsxRuntime.jsx(Avatar, { size: "md", initials: "SM" }),
|
|
222
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
223
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-heading text-[15px] font-semibold text-foreground-primary", children: "Sarah M." }),
|
|
224
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[12px] text-foreground-secondary", children: "Barista \u2022 2 yrs exp" })
|
|
225
|
+
] })
|
|
226
|
+
] }),
|
|
227
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-[14px] text-foreground-secondary", children: "Available weekdays after 14:00. Strong references." }),
|
|
228
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 flex gap-2", children: [
|
|
229
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-success-soft px-2.5 py-1 text-[11px] font-semibold text-success", children: "Available" }),
|
|
230
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-surface-bg px-2.5 py-1 text-[11px] font-medium text-foreground-secondary", children: "Busy" })
|
|
231
|
+
] })
|
|
232
|
+
] });
|
|
233
|
+
}
|
|
234
|
+
function Alert({ type = "info", message }) {
|
|
235
|
+
const styles = {
|
|
236
|
+
info: "border-info bg-info-soft text-foreground-primary",
|
|
237
|
+
success: "border-success bg-success-soft text-success",
|
|
238
|
+
error: "border-error bg-error-soft text-error",
|
|
239
|
+
warning: "border-warning bg-warning-soft text-warning"
|
|
240
|
+
};
|
|
241
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("rounded-[12px_0_12px_0] border px-4 py-3 text-sm font-semibold", styles[type]), children: message });
|
|
242
|
+
}
|
|
243
|
+
function ToastSuccess() {
|
|
244
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-[12px_0_12px_0] bg-success px-4 py-3 text-sm font-semibold text-white flex items-center gap-2", children: [
|
|
245
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { size: 16 }),
|
|
246
|
+
"Application submitted!"
|
|
247
|
+
] });
|
|
248
|
+
}
|
|
249
|
+
function SnackbarDefault() {
|
|
250
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex animate-slide-up items-center justify-between rounded-[12px_0_12px_0] bg-[#000] px-3.5 py-3 text-sm text-white", children: [
|
|
251
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Application sent successfully" }),
|
|
252
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "text-foreground-secondary", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { size: 16 }) })
|
|
253
|
+
] });
|
|
254
|
+
}
|
|
255
|
+
function SnackbarAction() {
|
|
256
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex animate-slide-up items-center justify-between rounded-[12px_0_12px_0] bg-[#000] px-3.5 py-3", children: [
|
|
257
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-white", children: "Job posted! It's live now." }),
|
|
258
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "font-heading text-sm font-bold text-accent", children: "View" })
|
|
259
|
+
] });
|
|
260
|
+
}
|
|
261
|
+
function ModalDialog({ type = "confirm", onClose }) {
|
|
262
|
+
if (type === "confirm") {
|
|
263
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
|
|
264
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-error-soft", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlert, { size: 24, className: "text-error" }) }),
|
|
265
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
266
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-heading text-xl font-bold text-foreground-primary", children: "Remove applicant?" }),
|
|
267
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-sm text-foreground-secondary", children: "This will permanently remove Sarah's application and all associated files." })
|
|
268
|
+
] }),
|
|
269
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full gap-3", children: [
|
|
270
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
271
|
+
"button",
|
|
272
|
+
{
|
|
273
|
+
onClick: onClose,
|
|
274
|
+
className: "flex-1 rounded-[9999px_12px_9999px_12px] border border-border bg-background px-4 py-3 font-heading text-[15px] font-bold text-foreground-primary",
|
|
275
|
+
children: "Cancel"
|
|
276
|
+
}
|
|
277
|
+
),
|
|
278
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "flex-1 rounded-[9999px_12px_9999px_12px] bg-error px-4 py-3 font-heading text-[15px] font-bold text-white", children: "Remove" })
|
|
279
|
+
] })
|
|
280
|
+
] });
|
|
281
|
+
}
|
|
282
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
|
|
283
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-success-soft", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { size: 24, className: "text-success" }) }),
|
|
284
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
285
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-heading text-xl font-bold text-foreground-primary", children: "Job Posted!" }),
|
|
286
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-sm text-foreground-secondary", children: "Your job listing is now live and visible to candidates." })
|
|
287
|
+
] }),
|
|
288
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "w-full rounded-[9999px_12px_9999px_12px] bg-primary px-4 py-3 font-heading text-[15px] font-bold text-[#1A1A1A]", children: "View Listing" })
|
|
289
|
+
] });
|
|
290
|
+
}
|
|
291
|
+
function LoaderSpinner() {
|
|
292
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LoaderCircle, { size: 28, className: "animate-spin-slow text-primary" });
|
|
293
|
+
}
|
|
294
|
+
function LoaderDots() {
|
|
295
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1.5", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
296
|
+
"div",
|
|
297
|
+
{
|
|
298
|
+
className: "h-2 w-2 animate-bounce rounded-full bg-primary",
|
|
299
|
+
style: { animationDelay: `${i * 0.15}s` }
|
|
300
|
+
},
|
|
301
|
+
i
|
|
302
|
+
)) });
|
|
303
|
+
}
|
|
304
|
+
function SkeletonBlock() {
|
|
305
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-full max-w-[200px] rounded-full bg-surface-bg", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-3/5 animate-pulse-soft rounded-full bg-primary-soft" }) });
|
|
306
|
+
}
|
|
307
|
+
function InputField({ className, ...props }) {
|
|
308
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("w-full", className), children: [
|
|
309
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1.5 block font-body text-[13px] font-semibold text-foreground-primary", children: "Full name" }),
|
|
310
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between rounded-[12px_0_12px_0] border border-primary-soft bg-info-soft px-3 py-2.5", children: [
|
|
311
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
312
|
+
"input",
|
|
313
|
+
{
|
|
314
|
+
className: "w-full bg-transparent text-sm text-foreground-primary outline-none placeholder:text-foreground-secondary/60",
|
|
315
|
+
placeholder: "Enter your name",
|
|
316
|
+
...props
|
|
317
|
+
}
|
|
318
|
+
),
|
|
319
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { size: 16, className: "text-foreground-secondary" })
|
|
320
|
+
] })
|
|
321
|
+
] });
|
|
322
|
+
}
|
|
323
|
+
function TextareaField({ className, ...props }) {
|
|
324
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("w-full", className), children: [
|
|
325
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1.5 block font-body text-[13px] font-semibold text-foreground-primary", children: "Message" }),
|
|
326
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
327
|
+
"textarea",
|
|
328
|
+
{
|
|
329
|
+
className: "w-full rounded-[12px_0_12px_0] border border-border bg-background px-3 py-2.5 text-sm text-foreground-primary outline-none placeholder:text-foreground-secondary/60",
|
|
330
|
+
rows: 3,
|
|
331
|
+
placeholder: "Write your message...",
|
|
332
|
+
...props
|
|
333
|
+
}
|
|
334
|
+
)
|
|
335
|
+
] });
|
|
336
|
+
}
|
|
337
|
+
function ToggleSwitch() {
|
|
338
|
+
const [on, setOn] = react.useState(false);
|
|
339
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
340
|
+
"button",
|
|
341
|
+
{
|
|
342
|
+
onClick: () => setOn(!on),
|
|
343
|
+
className: cn(
|
|
344
|
+
"relative h-7 w-[52px] rounded-full p-1 transition-colors",
|
|
345
|
+
on ? "bg-primary" : "bg-border"
|
|
346
|
+
),
|
|
347
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
348
|
+
"div",
|
|
349
|
+
{
|
|
350
|
+
className: cn(
|
|
351
|
+
"h-[22px] w-[22px] rounded-full bg-white transition-transform",
|
|
352
|
+
on && "translate-x-6"
|
|
353
|
+
)
|
|
354
|
+
}
|
|
355
|
+
)
|
|
356
|
+
}
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
function RadioGroup() {
|
|
360
|
+
const [selected, setSelected] = react.useState("option1");
|
|
361
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: [
|
|
362
|
+
{ value: "option1", label: "Full Time" },
|
|
363
|
+
{ value: "option2", label: "Part Time" }
|
|
364
|
+
].map((opt) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
365
|
+
"button",
|
|
366
|
+
{
|
|
367
|
+
onClick: () => setSelected(opt.value),
|
|
368
|
+
className: "flex items-center gap-2 text-sm text-foreground-primary",
|
|
369
|
+
children: [
|
|
370
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
371
|
+
"div",
|
|
372
|
+
{
|
|
373
|
+
className: cn(
|
|
374
|
+
"flex h-[22px] w-[22px] items-center justify-center rounded-full border-2 transition-colors",
|
|
375
|
+
selected === opt.value ? "border-primary bg-primary" : "border-border"
|
|
376
|
+
),
|
|
377
|
+
children: selected === opt.value && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[10px] w-[10px] rounded-full bg-white" })
|
|
378
|
+
}
|
|
379
|
+
),
|
|
380
|
+
opt.label
|
|
381
|
+
]
|
|
382
|
+
},
|
|
383
|
+
opt.value
|
|
384
|
+
)) });
|
|
385
|
+
}
|
|
386
|
+
function CheckboxInput() {
|
|
387
|
+
const [checked, setChecked] = react.useState(true);
|
|
388
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
389
|
+
"button",
|
|
390
|
+
{
|
|
391
|
+
onClick: () => setChecked(!checked),
|
|
392
|
+
className: "flex items-center gap-2 text-sm text-foreground-primary",
|
|
393
|
+
children: [
|
|
394
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
395
|
+
"div",
|
|
396
|
+
{
|
|
397
|
+
className: cn(
|
|
398
|
+
"flex h-[22px] w-[22px] items-center justify-center rounded-[6px_0_6px_0] transition-colors",
|
|
399
|
+
checked ? "bg-primary" : "border border-border"
|
|
400
|
+
),
|
|
401
|
+
children: checked && /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "3", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 6L9 17l-5-5" }) })
|
|
402
|
+
}
|
|
403
|
+
),
|
|
404
|
+
"I agree to terms"
|
|
405
|
+
]
|
|
406
|
+
}
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
function DropdownTrigger() {
|
|
410
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-40 items-center justify-between rounded-[12px_0_12px_0] border border-border bg-background px-3.5 py-2.5", children: [
|
|
411
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground-secondary", children: "Select category" }),
|
|
412
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: 16, className: "text-foreground-secondary" })
|
|
413
|
+
] });
|
|
414
|
+
}
|
|
415
|
+
function DropdownMenu() {
|
|
416
|
+
const options = ["Hospitality", "Construction", "Retail"];
|
|
417
|
+
const [selected, setSelected] = react.useState("Hospitality");
|
|
418
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-40 overflow-hidden rounded-[12px_0_12px_0] border border-border bg-background", children: [
|
|
419
|
+
options.map((opt, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
420
|
+
"button",
|
|
421
|
+
{
|
|
422
|
+
onClick: () => setSelected(opt),
|
|
423
|
+
className: cn(
|
|
424
|
+
"w-full px-3.5 py-2.5 text-left text-sm transition-colors",
|
|
425
|
+
selected === opt ? "bg-info-soft font-medium text-foreground-primary" : "text-foreground-primary hover:bg-primary/5"
|
|
426
|
+
),
|
|
427
|
+
children: opt
|
|
428
|
+
},
|
|
429
|
+
opt
|
|
430
|
+
)),
|
|
431
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsx("button", { className: "w-full px-3.5 py-2.5 text-left text-sm font-semibold text-primary hover:bg-primary/5", children: "+ Add new" }) })
|
|
432
|
+
] });
|
|
433
|
+
}
|
|
434
|
+
function FileUpload() {
|
|
435
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-[140px] flex-col items-center justify-center gap-2 rounded-[12px_0_12px_0] border border-dashed border-primary-soft bg-info-soft px-4 py-6", children: [
|
|
436
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { size: 24, className: "text-accent" }),
|
|
437
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] font-semibold text-foreground-primary", children: "Upload CV" }),
|
|
438
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-foreground-secondary", children: "PDF, DOC up to 5MB" })
|
|
439
|
+
] });
|
|
440
|
+
}
|
|
441
|
+
function DatePickerTrigger() {
|
|
442
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-44 items-center justify-between rounded-[12px_0_12px_0] border border-border bg-background px-3.5 py-2.5", children: [
|
|
443
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
444
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { size: 16, className: "text-foreground-secondary" }),
|
|
445
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground-secondary", children: "Select date" })
|
|
446
|
+
] }),
|
|
447
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: 16, className: "text-foreground-secondary" })
|
|
448
|
+
] });
|
|
449
|
+
}
|
|
450
|
+
function NavItem() {
|
|
451
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 rounded-[12px_0_12px_0] border border-border bg-background px-3.5 py-3", children: [
|
|
452
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Briefcase, { size: 18, className: "text-foreground-primary" }),
|
|
453
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-body text-[14px] font-medium text-foreground-primary", children: "Jobs Near You" })
|
|
454
|
+
] });
|
|
455
|
+
}
|
|
456
|
+
function NavItemActive() {
|
|
457
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 rounded-[12px_0_12px_0] border border-primary bg-primary px-3.5 py-3", children: [
|
|
458
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Briefcase, { size: 18, className: "text-foreground-primary" }),
|
|
459
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-body text-[14px] font-semibold text-foreground-primary", children: "Active Jobs" })
|
|
460
|
+
] });
|
|
461
|
+
}
|
|
462
|
+
function TabBar() {
|
|
463
|
+
const tabs = ["All Jobs", "Saved", "Applied"];
|
|
464
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full rounded-[12px_0_12px_0] border border-border bg-background p-1", children: tabs.map((tab, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
465
|
+
"button",
|
|
466
|
+
{
|
|
467
|
+
className: cn(
|
|
468
|
+
"flex-1 rounded-[10px_0_10px_0] px-3 py-2 text-center text-[13px] transition-colors",
|
|
469
|
+
i === 0 ? "bg-primary font-semibold text-[#1A1A1A]" : "font-medium text-foreground-secondary hover:text-foreground-primary"
|
|
470
|
+
),
|
|
471
|
+
children: tab
|
|
472
|
+
},
|
|
473
|
+
tab
|
|
474
|
+
)) });
|
|
475
|
+
}
|
|
476
|
+
function Breadcrumbs() {
|
|
477
|
+
const crumbs = [
|
|
478
|
+
{ label: "Home", active: false },
|
|
479
|
+
{ label: "Jobs", active: false },
|
|
480
|
+
{ label: "Barista", active: true }
|
|
481
|
+
];
|
|
482
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: crumbs.map((crumb, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
483
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
484
|
+
"span",
|
|
485
|
+
{
|
|
486
|
+
className: cn(
|
|
487
|
+
"text-[13px] transition-colors",
|
|
488
|
+
crumb.active ? "font-semibold text-foreground-primary" : "text-foreground-secondary hover:text-foreground-primary"
|
|
489
|
+
),
|
|
490
|
+
children: crumb.label
|
|
491
|
+
}
|
|
492
|
+
),
|
|
493
|
+
i < crumbs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { size: 14, className: "text-foreground-secondary" })
|
|
494
|
+
] }, crumb.label)) });
|
|
495
|
+
}
|
|
496
|
+
function Pagination() {
|
|
497
|
+
const pages = [
|
|
498
|
+
{ label: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { size: 16 }), active: false, disabled: true },
|
|
499
|
+
{ label: "1", active: true },
|
|
500
|
+
{ label: "2", active: false },
|
|
501
|
+
{ label: "3", active: false },
|
|
502
|
+
{ label: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { size: 16 }), active: false }
|
|
503
|
+
];
|
|
504
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center gap-1.5", children: pages.map((page, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
505
|
+
"div",
|
|
506
|
+
{
|
|
507
|
+
className: cn(
|
|
508
|
+
"flex h-9 w-9 items-center justify-center rounded-[10px_0_10px_0] text-sm transition-colors",
|
|
509
|
+
page.active ? "bg-primary font-semibold text-[#1A1A1A]" : page.disabled ? "text-foreground-secondary" : "text-foreground-secondary hover:bg-primary/10 hover:text-foreground-primary cursor-pointer"
|
|
510
|
+
),
|
|
511
|
+
children: page.label
|
|
512
|
+
},
|
|
513
|
+
i
|
|
514
|
+
)) });
|
|
515
|
+
}
|
|
516
|
+
function SidebarNav() {
|
|
517
|
+
const items = [
|
|
518
|
+
{ label: "Dashboard", icon: lucideReact.LayoutDashboard, active: true },
|
|
519
|
+
{ label: "Jobs", icon: lucideReact.Briefcase, active: false },
|
|
520
|
+
{ label: "Candidates", icon: lucideReact.Users, active: false },
|
|
521
|
+
{ label: "Settings", icon: lucideReact.Settings, active: false }
|
|
522
|
+
];
|
|
523
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-48 rounded-[12px_0_12px_0] border border-border bg-background p-2", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
524
|
+
"div",
|
|
525
|
+
{
|
|
526
|
+
className: cn(
|
|
527
|
+
"flex items-center gap-3 rounded-[8px_0_8px_0] px-3 py-2.5 transition-colors",
|
|
528
|
+
item.active ? "bg-primary-soft" : "hover:bg-primary/5"
|
|
529
|
+
),
|
|
530
|
+
children: [
|
|
531
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
532
|
+
item.icon,
|
|
533
|
+
{
|
|
534
|
+
size: 18,
|
|
535
|
+
className: cn(
|
|
536
|
+
item.active ? "text-foreground-primary" : "text-foreground-secondary"
|
|
537
|
+
)
|
|
538
|
+
}
|
|
539
|
+
),
|
|
540
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
541
|
+
"span",
|
|
542
|
+
{
|
|
543
|
+
className: cn(
|
|
544
|
+
"text-[14px]",
|
|
545
|
+
item.active ? "font-semibold text-foreground-primary" : "font-medium text-foreground-secondary"
|
|
546
|
+
),
|
|
547
|
+
children: item.label
|
|
548
|
+
}
|
|
549
|
+
)
|
|
550
|
+
]
|
|
551
|
+
},
|
|
552
|
+
item.label
|
|
553
|
+
)) });
|
|
554
|
+
}
|
|
555
|
+
function SkillsChips() {
|
|
556
|
+
const chips = [
|
|
557
|
+
{ label: "Hospitality", variant: "default" },
|
|
558
|
+
{ label: "Construction", variant: "active" },
|
|
559
|
+
{ label: "Retail", variant: "outline" }
|
|
560
|
+
];
|
|
561
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-2", children: chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
562
|
+
"div",
|
|
563
|
+
{
|
|
564
|
+
className: cn(
|
|
565
|
+
"flex items-center gap-1.5 rounded-full px-2.5 py-1.5 text-xs font-medium transition-colors",
|
|
566
|
+
chip.variant === "default" && "bg-info-soft text-info",
|
|
567
|
+
chip.variant === "active" && "bg-primary text-[#1A1A1A]",
|
|
568
|
+
chip.variant === "outline" && "border border-border text-foreground-secondary"
|
|
569
|
+
),
|
|
570
|
+
children: [
|
|
571
|
+
chip.variant === "outline" && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { size: 12 }),
|
|
572
|
+
chip.label
|
|
573
|
+
]
|
|
574
|
+
},
|
|
575
|
+
chip.label
|
|
576
|
+
)) });
|
|
577
|
+
}
|
|
578
|
+
function Rating({ value = 4, max = 5 }) {
|
|
579
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
580
|
+
Array.from({ length: max }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
581
|
+
lucideReact.Star,
|
|
582
|
+
{
|
|
583
|
+
size: 18,
|
|
584
|
+
className: cn(
|
|
585
|
+
"transition-colors",
|
|
586
|
+
i < value ? "fill-accent text-accent" : "text-surface-bg"
|
|
587
|
+
)
|
|
588
|
+
},
|
|
589
|
+
i
|
|
590
|
+
)),
|
|
591
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1 text-[13px] font-semibold text-foreground-primary", children: [
|
|
592
|
+
value,
|
|
593
|
+
".0"
|
|
594
|
+
] })
|
|
595
|
+
] });
|
|
596
|
+
}
|
|
597
|
+
function AppTracker() {
|
|
598
|
+
const steps = [
|
|
599
|
+
{ label: "Application Submitted", detail: "2 days ago", status: "complete" },
|
|
600
|
+
{ label: "Phone Screening", detail: "Scheduled for Jun 20", status: "current" },
|
|
601
|
+
{ label: "Interview", detail: void 0, status: "pending" },
|
|
602
|
+
{ label: "Offer", detail: void 0, status: "pending" }
|
|
603
|
+
];
|
|
604
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full overflow-hidden rounded-[12px_0_12px_0] border border-border bg-background", children: steps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
605
|
+
"div",
|
|
606
|
+
{
|
|
607
|
+
className: cn(
|
|
608
|
+
"flex items-center gap-3 px-3.5 py-3",
|
|
609
|
+
i > 0 && "border-t border-border"
|
|
610
|
+
),
|
|
611
|
+
children: [
|
|
612
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
613
|
+
"div",
|
|
614
|
+
{
|
|
615
|
+
className: cn(
|
|
616
|
+
"flex h-6 w-6 items-center justify-center rounded-full text-xs font-bold transition-colors",
|
|
617
|
+
step.status === "complete" && "bg-success",
|
|
618
|
+
step.status === "current" && "bg-primary",
|
|
619
|
+
step.status === "pending" && "bg-surface-bg text-foreground-secondary"
|
|
620
|
+
),
|
|
621
|
+
children: step.status === "complete" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { size: 14, className: "text-white" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(step.status === "current" ? "text-white" : "text-foreground-secondary"), children: i + 1 })
|
|
622
|
+
}
|
|
623
|
+
),
|
|
624
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
625
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
626
|
+
"div",
|
|
627
|
+
{
|
|
628
|
+
className: cn(
|
|
629
|
+
"text-sm",
|
|
630
|
+
step.status === "complete" && "font-semibold text-success",
|
|
631
|
+
step.status === "current" && "font-semibold text-foreground-primary",
|
|
632
|
+
step.status === "pending" && "text-foreground-secondary"
|
|
633
|
+
),
|
|
634
|
+
children: step.label
|
|
635
|
+
}
|
|
636
|
+
),
|
|
637
|
+
step.detail && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-foreground-secondary", children: step.detail })
|
|
638
|
+
] })
|
|
639
|
+
]
|
|
640
|
+
},
|
|
641
|
+
step.label
|
|
642
|
+
)) });
|
|
643
|
+
}
|
|
644
|
+
function InterviewCard() {
|
|
645
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full rounded-[12px_0_12px_0] border border-border bg-white p-4", children: [
|
|
646
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
647
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
648
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-success-soft font-heading text-[14px] font-bold text-success", children: "SM" }),
|
|
649
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-body text-[15px] font-semibold text-foreground-primary", children: "Sarah M." })
|
|
650
|
+
] }),
|
|
651
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-success-soft px-2 py-1 text-[11px] font-semibold text-success", children: "Confirmed" })
|
|
652
|
+
] }),
|
|
653
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 space-y-1.5", children: [
|
|
654
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs text-foreground-secondary", children: [
|
|
655
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { size: 14 }),
|
|
656
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Thu, Jun 20 \u2014 2:00 PM" })
|
|
657
|
+
] }),
|
|
658
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs text-foreground-secondary", children: [
|
|
659
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPin, { size: 14 }),
|
|
660
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Downtown Cafe, Main St" })
|
|
661
|
+
] })
|
|
662
|
+
] })
|
|
663
|
+
] });
|
|
664
|
+
}
|
|
665
|
+
function EmptyState() {
|
|
666
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-3 rounded-[12px_0_12px_0] border border-border bg-white px-6 py-10", children: [
|
|
667
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-14 w-14 items-center justify-center rounded-full bg-info-soft", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { size: 24, className: "text-info" }) }),
|
|
668
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-heading text-base font-semibold text-foreground-primary", children: "No applicants yet" }),
|
|
669
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-sm text-foreground-secondary", children: "Your job listing is live. Candidates will appear here once they apply." }),
|
|
670
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "mt-1 rounded-[9999px_12px_9999px_12px] bg-primary px-4 py-2.5 font-heading text-[13px] font-bold text-[#1A1A1A] transition-all hover:bg-primary-soft", children: "Share Job" })
|
|
671
|
+
] });
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
// src/themes.ts
|
|
675
|
+
var defaultPaletteId = "ocean";
|
|
676
|
+
var palettes = [
|
|
677
|
+
{
|
|
678
|
+
id: "ocean",
|
|
679
|
+
name: "Ocean",
|
|
680
|
+
description: "Soft blues, warm accents \u2014 the original PalaUI",
|
|
681
|
+
swatch: "#7DB4DB",
|
|
682
|
+
tokens: {
|
|
683
|
+
primary: "#7DB4DB",
|
|
684
|
+
"primary-soft": "#B6D8E2",
|
|
685
|
+
accent: "#F8AE1B",
|
|
686
|
+
success: "#6FBFA3",
|
|
687
|
+
"success-soft": "#E3F3ED",
|
|
688
|
+
error: "#E26D5C",
|
|
689
|
+
"error-soft": "#FBE6E3",
|
|
690
|
+
info: "#5FA8D3",
|
|
691
|
+
"info-soft": "#E8F2F8",
|
|
692
|
+
warning: "#F8AE1B",
|
|
693
|
+
"warning-soft": "#FEE5A5"
|
|
694
|
+
}
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
id: "sunset",
|
|
698
|
+
name: "Sunset",
|
|
699
|
+
description: "Warm coral and sand tones",
|
|
700
|
+
swatch: "#E07A5F",
|
|
701
|
+
tokens: {
|
|
702
|
+
primary: "#E07A5F",
|
|
703
|
+
"primary-soft": "#F0C0B0",
|
|
704
|
+
accent: "#F4A261",
|
|
705
|
+
success: "#81B29A",
|
|
706
|
+
"success-soft": "#DCEAE3",
|
|
707
|
+
error: "#C75B4A",
|
|
708
|
+
"error-soft": "#F0D0C8",
|
|
709
|
+
info: "#E07A5F",
|
|
710
|
+
"info-soft": "#F4D8CE",
|
|
711
|
+
warning: "#F4A261",
|
|
712
|
+
"warning-soft": "#FDE2C4"
|
|
713
|
+
}
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
id: "forest",
|
|
717
|
+
name: "Forest",
|
|
718
|
+
description: "Earthy greens and warm neutrals",
|
|
719
|
+
swatch: "#6FBFA3",
|
|
720
|
+
tokens: {
|
|
721
|
+
primary: "#6FBFA3",
|
|
722
|
+
"primary-soft": "#B8DCCE",
|
|
723
|
+
accent: "#D4A373",
|
|
724
|
+
success: "#5DAE8B",
|
|
725
|
+
"success-soft": "#D6EDE3",
|
|
726
|
+
error: "#C75B39",
|
|
727
|
+
"error-soft": "#EDCBB9",
|
|
728
|
+
info: "#7DB4DB",
|
|
729
|
+
"info-soft": "#D3E9F2",
|
|
730
|
+
warning: "#D4A373",
|
|
731
|
+
"warning-soft": "#EBE0CE"
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
id: "lavender",
|
|
736
|
+
name: "Lavender",
|
|
737
|
+
description: "Gentle purples with golden accent",
|
|
738
|
+
swatch: "#9B8ED8",
|
|
739
|
+
tokens: {
|
|
740
|
+
primary: "#9B8ED8",
|
|
741
|
+
"primary-soft": "#C9C2E8",
|
|
742
|
+
accent: "#F2C75F",
|
|
743
|
+
success: "#7DB4DB",
|
|
744
|
+
"success-soft": "#D9EAF4",
|
|
745
|
+
error: "#D65B7A",
|
|
746
|
+
"error-soft": "#F0C8D3",
|
|
747
|
+
info: "#9B8ED8",
|
|
748
|
+
"info-soft": "#DDD8F0",
|
|
749
|
+
warning: "#F2C75F",
|
|
750
|
+
"warning-soft": "#F9ECC5"
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
id: "coral",
|
|
755
|
+
name: "Coral",
|
|
756
|
+
description: "Pink-rose tones with soft warmth",
|
|
757
|
+
swatch: "#E88B8B",
|
|
758
|
+
tokens: {
|
|
759
|
+
primary: "#E88B8B",
|
|
760
|
+
"primary-soft": "#F2C4C4",
|
|
761
|
+
accent: "#F4C260",
|
|
762
|
+
success: "#7DB4DB",
|
|
763
|
+
"success-soft": "#D9EAF4",
|
|
764
|
+
error: "#C75B5B",
|
|
765
|
+
"error-soft": "#F0C0C0",
|
|
766
|
+
info: "#E88B8B",
|
|
767
|
+
"info-soft": "#F5D8D8",
|
|
768
|
+
warning: "#F4C260",
|
|
769
|
+
"warning-soft": "#F9ECC5"
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
id: "slate",
|
|
774
|
+
name: "Slate",
|
|
775
|
+
description: "Cool gray-blues with warm accent",
|
|
776
|
+
swatch: "#7B8B9B",
|
|
777
|
+
tokens: {
|
|
778
|
+
primary: "#7B8B9B",
|
|
779
|
+
"primary-soft": "#B8C4CF",
|
|
780
|
+
accent: "#F4A261",
|
|
781
|
+
success: "#6FBFA3",
|
|
782
|
+
"success-soft": "#E0EDE7",
|
|
783
|
+
error: "#C75B5B",
|
|
784
|
+
"error-soft": "#EDC0C0",
|
|
785
|
+
info: "#7B8B9B",
|
|
786
|
+
"info-soft": "#CDD4DB",
|
|
787
|
+
warning: "#F4A261",
|
|
788
|
+
"warning-soft": "#FDE2C4"
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
{
|
|
792
|
+
id: "midnight",
|
|
793
|
+
name: "Midnight",
|
|
794
|
+
description: "Dark navy with soft blue accents",
|
|
795
|
+
swatch: "#1A1A2E",
|
|
796
|
+
tokens: {
|
|
797
|
+
primary: "#7DB4DB",
|
|
798
|
+
"primary-soft": "#5A8DB8",
|
|
799
|
+
accent: "#F8AE1B",
|
|
800
|
+
background: "#1A1A2E",
|
|
801
|
+
"surface-bg": "#16213E",
|
|
802
|
+
card: "#1E2A45",
|
|
803
|
+
border: "#2A2A4A",
|
|
804
|
+
"foreground-primary": "#E8E8F0",
|
|
805
|
+
"foreground-secondary": "#9A9AB0",
|
|
806
|
+
"foreground-inverse": "#1A1A2E",
|
|
807
|
+
success: "#6FBFA3",
|
|
808
|
+
"success-soft": "#1E3A35",
|
|
809
|
+
error: "#E26D5C",
|
|
810
|
+
"error-soft": "#3E1E1A",
|
|
811
|
+
info: "#5FA8D3",
|
|
812
|
+
"info-soft": "#1A2E3E",
|
|
813
|
+
warning: "#F8AE1B",
|
|
814
|
+
"warning-soft": "#3E351A"
|
|
815
|
+
}
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
id: "obsidian",
|
|
819
|
+
name: "Obsidian",
|
|
820
|
+
description: "Deep charcoal with warm coral glow",
|
|
821
|
+
swatch: "#1C1C1E",
|
|
822
|
+
tokens: {
|
|
823
|
+
primary: "#E07A5F",
|
|
824
|
+
"primary-soft": "#C06050",
|
|
825
|
+
accent: "#F4A261",
|
|
826
|
+
background: "#1C1C1E",
|
|
827
|
+
"surface-bg": "#2C2C2E",
|
|
828
|
+
card: "#2C2C2E",
|
|
829
|
+
border: "#3A3A3C",
|
|
830
|
+
"foreground-primary": "#F2F2F7",
|
|
831
|
+
"foreground-secondary": "#98989D",
|
|
832
|
+
"foreground-inverse": "#1C1C1E",
|
|
833
|
+
success: "#81B29A",
|
|
834
|
+
"success-soft": "#1E2E26",
|
|
835
|
+
error: "#C75B4A",
|
|
836
|
+
"error-soft": "#3E1E18",
|
|
837
|
+
info: "#E07A5F",
|
|
838
|
+
"info-soft": "#3E241E",
|
|
839
|
+
warning: "#F4A261",
|
|
840
|
+
"warning-soft": "#3E2E1A"
|
|
841
|
+
}
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
id: "void",
|
|
845
|
+
name: "Void",
|
|
846
|
+
description: "Deep purple-black with golden accents",
|
|
847
|
+
swatch: "#0F0F1A",
|
|
848
|
+
tokens: {
|
|
849
|
+
primary: "#9B8ED8",
|
|
850
|
+
"primary-soft": "#7B6EB8",
|
|
851
|
+
accent: "#F2C75F",
|
|
852
|
+
background: "#0F0F1A",
|
|
853
|
+
"surface-bg": "#1A1A2E",
|
|
854
|
+
card: "#1A1A2E",
|
|
855
|
+
border: "#2A2A44",
|
|
856
|
+
"foreground-primary": "#E8E0F0",
|
|
857
|
+
"foreground-secondary": "#9080A0",
|
|
858
|
+
"foreground-inverse": "#0F0F1A",
|
|
859
|
+
success: "#7DB4DB",
|
|
860
|
+
"success-soft": "#1A2E3E",
|
|
861
|
+
error: "#D65B7A",
|
|
862
|
+
"error-soft": "#3E1A2E",
|
|
863
|
+
info: "#9B8ED8",
|
|
864
|
+
"info-soft": "#2A1E3E",
|
|
865
|
+
warning: "#F2C75F",
|
|
866
|
+
"warning-soft": "#3E351A"
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
];
|
|
870
|
+
|
|
871
|
+
exports.Accordion = Accordion;
|
|
872
|
+
exports.Alert = Alert;
|
|
873
|
+
exports.AppTracker = AppTracker;
|
|
874
|
+
exports.Avatar = Avatar;
|
|
875
|
+
exports.Breadcrumbs = Breadcrumbs;
|
|
876
|
+
exports.ButtonAccent = ButtonAccent;
|
|
877
|
+
exports.ButtonBlock = ButtonBlock;
|
|
878
|
+
exports.ButtonDestructive = ButtonDestructive;
|
|
879
|
+
exports.ButtonDisabledPrimary = ButtonDisabledPrimary;
|
|
880
|
+
exports.ButtonGhost = ButtonGhost;
|
|
881
|
+
exports.ButtonGroup = ButtonGroup;
|
|
882
|
+
exports.ButtonIcon = ButtonIcon;
|
|
883
|
+
exports.ButtonLarge = ButtonLarge;
|
|
884
|
+
exports.ButtonLink = ButtonLink;
|
|
885
|
+
exports.ButtonLoading = ButtonLoading;
|
|
886
|
+
exports.ButtonOutline = ButtonOutline;
|
|
887
|
+
exports.ButtonPrimary = ButtonPrimary;
|
|
888
|
+
exports.ButtonSecondary = ButtonSecondary;
|
|
889
|
+
exports.ButtonSmall = ButtonSmall;
|
|
890
|
+
exports.ButtonSplit = ButtonSplit;
|
|
891
|
+
exports.ButtonSuccess = ButtonSuccess;
|
|
892
|
+
exports.ButtonWarning = ButtonWarning;
|
|
893
|
+
exports.ButtonWithIconLeft = ButtonWithIconLeft;
|
|
894
|
+
exports.ButtonWithIconRight = ButtonWithIconRight;
|
|
895
|
+
exports.CandidateCard = CandidateCard;
|
|
896
|
+
exports.CheckboxInput = CheckboxInput;
|
|
897
|
+
exports.DatePickerTrigger = DatePickerTrigger;
|
|
898
|
+
exports.Divider = Divider;
|
|
899
|
+
exports.DropdownMenu = DropdownMenu;
|
|
900
|
+
exports.DropdownTrigger = DropdownTrigger;
|
|
901
|
+
exports.EmptyState = EmptyState;
|
|
902
|
+
exports.FileUpload = FileUpload;
|
|
903
|
+
exports.InputField = InputField;
|
|
904
|
+
exports.InterviewCard = InterviewCard;
|
|
905
|
+
exports.JobCard = JobCard;
|
|
906
|
+
exports.LoaderDots = LoaderDots;
|
|
907
|
+
exports.LoaderSpinner = LoaderSpinner;
|
|
908
|
+
exports.ModalDialog = ModalDialog;
|
|
909
|
+
exports.NavItem = NavItem;
|
|
910
|
+
exports.NavItemActive = NavItemActive;
|
|
911
|
+
exports.Pagination = Pagination;
|
|
912
|
+
exports.ProgressBar = ProgressBar;
|
|
913
|
+
exports.RadioGroup = RadioGroup;
|
|
914
|
+
exports.Rating = Rating;
|
|
915
|
+
exports.SidebarNav = SidebarNav;
|
|
916
|
+
exports.SkeletonBlock = SkeletonBlock;
|
|
917
|
+
exports.SkillsChips = SkillsChips;
|
|
918
|
+
exports.SnackbarAction = SnackbarAction;
|
|
919
|
+
exports.SnackbarDefault = SnackbarDefault;
|
|
920
|
+
exports.StatCard = StatCard;
|
|
921
|
+
exports.TabBar = TabBar;
|
|
922
|
+
exports.TextareaField = TextareaField;
|
|
923
|
+
exports.ToastSuccess = ToastSuccess;
|
|
924
|
+
exports.ToggleSwitch = ToggleSwitch;
|
|
925
|
+
exports.cn = cn;
|
|
926
|
+
exports.defaultPaletteId = defaultPaletteId;
|
|
927
|
+
exports.disabledVariants = disabledVariants;
|
|
928
|
+
exports.palettes = palettes;
|