@paolojulian.dev/design-system 4.2.1 → 4.3.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/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +49 -2
- package/dist/index.es.js +226 -126
- package/dist/index.es.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,116 +1,116 @@
|
|
|
1
1
|
import { jsx as r, jsxs as k } from "react/jsx-runtime";
|
|
2
|
-
import { cn as
|
|
3
|
-
import { forwardRef as
|
|
4
|
-
const
|
|
2
|
+
import { cn as c } from "./utils.es.js";
|
|
3
|
+
import { forwardRef as j, useId as C, useState as L } from "react";
|
|
4
|
+
const G = ({
|
|
5
5
|
children: t,
|
|
6
|
-
gap:
|
|
6
|
+
gap: n = void 0,
|
|
7
7
|
alignItems: e = void 0,
|
|
8
|
-
justifyContent:
|
|
9
|
-
className:
|
|
8
|
+
justifyContent: a = void 0,
|
|
9
|
+
className: s = ""
|
|
10
10
|
}) => /* @__PURE__ */ r(
|
|
11
11
|
"div",
|
|
12
12
|
{
|
|
13
|
-
className:
|
|
13
|
+
className: c("flex flex-row", s),
|
|
14
14
|
style: {
|
|
15
|
-
gap:
|
|
15
|
+
gap: n,
|
|
16
16
|
alignItems: e,
|
|
17
|
-
justifyContent:
|
|
17
|
+
justifyContent: a
|
|
18
18
|
},
|
|
19
19
|
children: t
|
|
20
20
|
}
|
|
21
21
|
), T = ({
|
|
22
22
|
children: t,
|
|
23
|
-
gap:
|
|
23
|
+
gap: n = void 0,
|
|
24
24
|
alignItems: e = void 0,
|
|
25
|
-
justifyContent:
|
|
26
|
-
className:
|
|
25
|
+
justifyContent: a = void 0,
|
|
26
|
+
className: s = ""
|
|
27
27
|
}) => /* @__PURE__ */ r(
|
|
28
28
|
"div",
|
|
29
29
|
{
|
|
30
|
-
className:
|
|
30
|
+
className: c("flex flex-col", s),
|
|
31
31
|
style: {
|
|
32
|
-
gap:
|
|
32
|
+
gap: n,
|
|
33
33
|
alignItems: e,
|
|
34
|
-
justifyContent:
|
|
34
|
+
justifyContent: a
|
|
35
35
|
},
|
|
36
36
|
children: t
|
|
37
37
|
}
|
|
38
38
|
);
|
|
39
|
-
function
|
|
40
|
-
var
|
|
41
|
-
if (typeof t == "string" || typeof t == "number")
|
|
42
|
-
else if (typeof t == "object") if (Array.isArray(t)) for (
|
|
43
|
-
else for (
|
|
44
|
-
return
|
|
39
|
+
function V(t) {
|
|
40
|
+
var n, e, a = "";
|
|
41
|
+
if (typeof t == "string" || typeof t == "number") a += t;
|
|
42
|
+
else if (typeof t == "object") if (Array.isArray(t)) for (n = 0; n < t.length; n++) t[n] && (e = V(t[n])) && (a && (a += " "), a += e);
|
|
43
|
+
else for (n in t) t[n] && (a && (a += " "), a += n);
|
|
44
|
+
return a;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
47
|
-
for (var t,
|
|
48
|
-
return
|
|
46
|
+
function $() {
|
|
47
|
+
for (var t, n, e = 0, a = ""; e < arguments.length; ) (t = arguments[e++]) && (n = V(t)) && (a && (a += " "), a += n);
|
|
48
|
+
return a;
|
|
49
49
|
}
|
|
50
|
-
const
|
|
51
|
-
var
|
|
52
|
-
if ((
|
|
53
|
-
const { variants:
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
const
|
|
57
|
-
return o
|
|
58
|
-
}),
|
|
59
|
-
let [
|
|
60
|
-
return
|
|
61
|
-
}, {}),
|
|
62
|
-
let { class:
|
|
63
|
-
return Object.entries(
|
|
64
|
-
let [
|
|
65
|
-
return Array.isArray(
|
|
66
|
-
...
|
|
67
|
-
...
|
|
68
|
-
}[
|
|
69
|
-
...
|
|
70
|
-
...
|
|
71
|
-
}[
|
|
50
|
+
const I = (t) => typeof t == "boolean" ? "".concat(t) : t === 0 ? "0" : t, P = $, O = (t, n) => (e) => {
|
|
51
|
+
var a;
|
|
52
|
+
if ((n == null ? void 0 : n.variants) == null) return P(t, e == null ? void 0 : e.class, e == null ? void 0 : e.className);
|
|
53
|
+
const { variants: s, defaultVariants: i } = n, l = Object.keys(s).map((o) => {
|
|
54
|
+
const u = e == null ? void 0 : e[o], x = i == null ? void 0 : i[o];
|
|
55
|
+
if (u === null) return null;
|
|
56
|
+
const d = I(u) || I(x);
|
|
57
|
+
return s[o][d];
|
|
58
|
+
}), f = e && Object.entries(e).reduce((o, u) => {
|
|
59
|
+
let [x, d] = u;
|
|
60
|
+
return d === void 0 || (o[x] = d), o;
|
|
61
|
+
}, {}), b = n == null || (a = n.compoundVariants) === null || a === void 0 ? void 0 : a.reduce((o, u) => {
|
|
62
|
+
let { class: x, className: d, ...v } = u;
|
|
63
|
+
return Object.entries(v).every((h) => {
|
|
64
|
+
let [p, m] = h;
|
|
65
|
+
return Array.isArray(m) ? m.includes({
|
|
66
|
+
...i,
|
|
67
|
+
...f
|
|
68
|
+
}[p]) : {
|
|
69
|
+
...i,
|
|
70
|
+
...f
|
|
71
|
+
}[p] === m;
|
|
72
72
|
}) ? [
|
|
73
|
-
...
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
] :
|
|
73
|
+
...o,
|
|
74
|
+
x,
|
|
75
|
+
d
|
|
76
|
+
] : o;
|
|
77
77
|
}, []);
|
|
78
|
-
return P(t, l,
|
|
79
|
-
},
|
|
78
|
+
return P(t, l, b, e == null ? void 0 : e.class, e == null ? void 0 : e.className);
|
|
79
|
+
}, R = {
|
|
80
80
|
serif: "font-serif",
|
|
81
81
|
body: "text-base",
|
|
82
82
|
"body-wide": "text-sm tracking-[0.40em] font-medium",
|
|
83
83
|
heading: "text-[1.5rem] md:text-4xl tracking-[-0.04em] font-medium",
|
|
84
84
|
"heading-lg": "text-[2.5rem] md:text-[4rem] tracking-[-0.04em] font-medium leading-[2.75rem] md:leading-[4.5rem]",
|
|
85
85
|
"heading-xl": "text-[4rem] md:text-[7rem] tracking-[-0.04em] leading-[3.5rem] md:leading-[5.5rem] font-medium"
|
|
86
|
-
},
|
|
86
|
+
}, W = O("font-sans", {
|
|
87
87
|
variants: {
|
|
88
|
-
variant:
|
|
88
|
+
variant: R
|
|
89
89
|
},
|
|
90
90
|
defaultVariants: {
|
|
91
91
|
variant: "body"
|
|
92
92
|
}
|
|
93
93
|
});
|
|
94
|
-
function
|
|
94
|
+
function F({
|
|
95
95
|
as: t = "p",
|
|
96
|
-
children:
|
|
96
|
+
children: n,
|
|
97
97
|
className: e = "",
|
|
98
|
-
variant:
|
|
99
|
-
...
|
|
98
|
+
variant: a,
|
|
99
|
+
...s
|
|
100
100
|
}) {
|
|
101
101
|
return /* @__PURE__ */ r(
|
|
102
102
|
t,
|
|
103
103
|
{
|
|
104
|
-
className:
|
|
105
|
-
...
|
|
106
|
-
children:
|
|
104
|
+
className: c(W({ variant: a, className: e })),
|
|
105
|
+
...s,
|
|
106
|
+
children: n
|
|
107
107
|
}
|
|
108
108
|
);
|
|
109
109
|
}
|
|
110
|
-
function
|
|
111
|
-
return /* @__PURE__ */ r(T, { className: "pt-2 border-t border-white text-white", children: /* @__PURE__ */ r(
|
|
110
|
+
function J({ title: t }) {
|
|
111
|
+
return /* @__PURE__ */ r(T, { className: "pt-2 border-t border-white text-white", children: /* @__PURE__ */ r(F, { className: "uppercase", variant: "body-wide", children: t }) });
|
|
112
112
|
}
|
|
113
|
-
function
|
|
113
|
+
function H() {
|
|
114
114
|
return /* @__PURE__ */ k(
|
|
115
115
|
"svg",
|
|
116
116
|
{
|
|
@@ -132,7 +132,7 @@ function $() {
|
|
|
132
132
|
}
|
|
133
133
|
);
|
|
134
134
|
}
|
|
135
|
-
function
|
|
135
|
+
function z() {
|
|
136
136
|
return /* @__PURE__ */ k(
|
|
137
137
|
"svg",
|
|
138
138
|
{
|
|
@@ -156,62 +156,63 @@ function F() {
|
|
|
156
156
|
}
|
|
157
157
|
);
|
|
158
158
|
}
|
|
159
|
-
const K =
|
|
159
|
+
const K = j(
|
|
160
160
|
({
|
|
161
161
|
className: t,
|
|
162
|
-
inputClassName:
|
|
162
|
+
inputClassName: n,
|
|
163
163
|
type: e,
|
|
164
|
-
label:
|
|
165
|
-
helperText:
|
|
166
|
-
id:
|
|
164
|
+
label: a,
|
|
165
|
+
helperText: s,
|
|
166
|
+
id: i,
|
|
167
167
|
isError: l = !1,
|
|
168
|
-
errorMessage:
|
|
169
|
-
rightAdornment:
|
|
170
|
-
disabled:
|
|
171
|
-
readOnly:
|
|
172
|
-
style:
|
|
173
|
-
...
|
|
174
|
-
},
|
|
175
|
-
const
|
|
176
|
-
l &&
|
|
177
|
-
!l &&
|
|
168
|
+
errorMessage: f,
|
|
169
|
+
rightAdornment: b,
|
|
170
|
+
disabled: o,
|
|
171
|
+
readOnly: u,
|
|
172
|
+
style: x,
|
|
173
|
+
...d
|
|
174
|
+
}, v) => {
|
|
175
|
+
const h = C(), p = i ?? h, m = `${p}-error`, g = `${p}-helper`, y = e === "password", N = !!b && !y, [w, A] = L(!1), B = y ? w ? "text" : "password" : e ?? "text", S = [
|
|
176
|
+
l && f ? m : null,
|
|
177
|
+
!l && s ? g : null
|
|
178
178
|
].filter(Boolean).join(" ") || void 0;
|
|
179
|
-
return /* @__PURE__ */ k("div", { className:
|
|
179
|
+
return /* @__PURE__ */ k("div", { className: c("p-text-input relative w-full", t), style: x, children: [
|
|
180
180
|
/* @__PURE__ */ r(
|
|
181
181
|
"input",
|
|
182
182
|
{
|
|
183
|
-
...
|
|
184
|
-
id:
|
|
185
|
-
ref:
|
|
186
|
-
type:
|
|
187
|
-
disabled:
|
|
188
|
-
readOnly:
|
|
183
|
+
...d,
|
|
184
|
+
id: p,
|
|
185
|
+
ref: v,
|
|
186
|
+
type: B,
|
|
187
|
+
disabled: o,
|
|
188
|
+
readOnly: u,
|
|
189
189
|
placeholder: " ",
|
|
190
190
|
"aria-invalid": l || void 0,
|
|
191
|
-
"aria-describedby":
|
|
192
|
-
"aria-required":
|
|
193
|
-
"aria-disabled":
|
|
194
|
-
"aria-readonly":
|
|
195
|
-
autoComplete:
|
|
196
|
-
className:
|
|
191
|
+
"aria-describedby": S,
|
|
192
|
+
"aria-required": d.required,
|
|
193
|
+
"aria-disabled": o,
|
|
194
|
+
"aria-readonly": u,
|
|
195
|
+
autoComplete: d.autoComplete ?? (y ? "current-password" : void 0),
|
|
196
|
+
className: c(
|
|
197
197
|
// Layout — tall enough for the floating label + value
|
|
198
198
|
"peer h-16 w-full rounded px-4 pt-6 pb-2",
|
|
199
|
-
(
|
|
199
|
+
(y || N) && "pr-12",
|
|
200
200
|
// Visuals
|
|
201
|
-
"bg-
|
|
201
|
+
"bg-(--p-input-bg) text-(--p-input-text)",
|
|
202
202
|
"font-sans text-sm outline-none",
|
|
203
|
-
"border border-
|
|
203
|
+
"border border-(--p-input-border) focus:border-(--p-input-border-focus)",
|
|
204
204
|
// Focus
|
|
205
|
-
"focus:
|
|
205
|
+
"focus:bg-(--p-input-bg-focus)",
|
|
206
|
+
"focus:ring-2 focus:ring-(--p-input-ring)",
|
|
206
207
|
// Motion
|
|
207
208
|
"transition-all duration-150 ease-in",
|
|
208
209
|
// States
|
|
209
210
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
210
|
-
"read-only:cursor-default read-only:bg-
|
|
211
|
+
"read-only:cursor-default read-only:bg-(--p-input-bg-readonly)",
|
|
211
212
|
l && "ring-2 ring-red-500",
|
|
212
213
|
// Date — hide native picker chrome so rightAdornment can replace it
|
|
213
|
-
|
|
214
|
-
|
|
214
|
+
N && e === "date" && "[&::-webkit-calendar-picker-indicator]:absolute [&::-webkit-calendar-picker-indicator]:right-0 [&::-webkit-calendar-picker-indicator]:h-full [&::-webkit-calendar-picker-indicator]:w-full [&::-webkit-calendar-picker-indicator]:cursor-pointer [&::-webkit-calendar-picker-indicator]:opacity-0",
|
|
215
|
+
n
|
|
215
216
|
)
|
|
216
217
|
}
|
|
217
218
|
),
|
|
@@ -219,74 +220,173 @@ const K = B(
|
|
|
219
220
|
"span",
|
|
220
221
|
{
|
|
221
222
|
"aria-hidden": "true",
|
|
222
|
-
className:
|
|
223
|
+
className: c(
|
|
223
224
|
"pointer-events-none absolute top-2 left-4",
|
|
224
225
|
"font-sans text-xs",
|
|
225
226
|
"origin-left transition-all duration-150 ease-in",
|
|
226
227
|
// Hidden by default
|
|
227
228
|
"scale-0 opacity-0",
|
|
228
|
-
l ? "text-red-500" : "text-
|
|
229
|
+
l ? "text-red-500" : "text-(--p-input-label) peer-focus:text-(--p-input-label-focus)",
|
|
229
230
|
// Reveal when focused or filled
|
|
230
231
|
"peer-focus:scale-100 peer-focus:opacity-100",
|
|
231
232
|
"peer-not-placeholder-shown:scale-100 peer-not-placeholder-shown:opacity-100"
|
|
232
233
|
),
|
|
233
|
-
children:
|
|
234
|
+
children: a
|
|
234
235
|
}
|
|
235
236
|
),
|
|
236
237
|
/* @__PURE__ */ r(
|
|
237
238
|
"label",
|
|
238
239
|
{
|
|
239
|
-
htmlFor:
|
|
240
|
-
className:
|
|
240
|
+
htmlFor: p,
|
|
241
|
+
className: c(
|
|
241
242
|
"pointer-events-none absolute top-1/2 left-4 -translate-y-1/2",
|
|
242
|
-
"font-sans text-sm text-
|
|
243
|
+
"font-sans text-sm text-(--p-input-text)",
|
|
243
244
|
"origin-left transition-all duration-150 ease-in",
|
|
244
245
|
// Collapse when focused or filled
|
|
245
246
|
"peer-focus:scale-0 peer-focus:opacity-0",
|
|
246
247
|
"peer-not-placeholder-shown:scale-0 peer-not-placeholder-shown:opacity-0",
|
|
247
|
-
|
|
248
|
+
o && "opacity-50"
|
|
248
249
|
),
|
|
249
|
-
children:
|
|
250
|
+
children: a
|
|
250
251
|
}
|
|
251
252
|
),
|
|
252
|
-
|
|
253
|
+
y && /* @__PURE__ */ r(
|
|
253
254
|
"button",
|
|
254
255
|
{
|
|
255
256
|
type: "button",
|
|
256
|
-
onClick: () =>
|
|
257
|
-
disabled:
|
|
258
|
-
className:
|
|
257
|
+
onClick: () => A((q) => !q),
|
|
258
|
+
disabled: o,
|
|
259
|
+
className: c(
|
|
259
260
|
"absolute top-1/2 right-4 -translate-y-1/2",
|
|
260
|
-
"text-
|
|
261
|
+
"text-(--p-input-label) hover:text-(--p-input-text)",
|
|
261
262
|
"transition-colors duration-150",
|
|
262
|
-
"focus-visible:outline-2 focus-visible:outline-offset-2
|
|
263
|
+
"focus-visible:outline-2 focus-visible:outline-offset-2",
|
|
264
|
+
"focus-visible:outline-(--p-input-ring)",
|
|
263
265
|
"disabled:pointer-events-none disabled:opacity-50"
|
|
264
266
|
),
|
|
265
|
-
"aria-label":
|
|
266
|
-
"aria-pressed":
|
|
267
|
-
"aria-controls":
|
|
268
|
-
children:
|
|
267
|
+
"aria-label": w ? "Hide password" : "Show password",
|
|
268
|
+
"aria-pressed": w,
|
|
269
|
+
"aria-controls": p,
|
|
270
|
+
children: w ? /* @__PURE__ */ r(H, {}) : /* @__PURE__ */ r(z, {})
|
|
269
271
|
}
|
|
270
272
|
),
|
|
271
|
-
|
|
273
|
+
N && /* @__PURE__ */ r(
|
|
272
274
|
"span",
|
|
273
275
|
{
|
|
274
276
|
"aria-hidden": "true",
|
|
275
|
-
className: "pointer-events-none absolute top-1/2 right-4 -translate-y-1/2 text-
|
|
276
|
-
children:
|
|
277
|
+
className: "pointer-events-none absolute top-1/2 right-4 -translate-y-1/2 text-(--p-input-label)",
|
|
278
|
+
children: b
|
|
277
279
|
}
|
|
278
280
|
),
|
|
279
|
-
l &&
|
|
280
|
-
!l &&
|
|
281
|
+
l && f && /* @__PURE__ */ r("p", { id: m, role: "alert", className: "mt-1 px-4 font-sans text-xs text-red-500", children: f }),
|
|
282
|
+
!l && s && /* @__PURE__ */ r("p", { id: g, className: "mt-1 px-4 font-sans text-xs text-(--p-input-text-helper)", children: s })
|
|
281
283
|
] });
|
|
282
284
|
}
|
|
283
285
|
);
|
|
284
286
|
K.displayName = "PTextInput";
|
|
287
|
+
const M = j(
|
|
288
|
+
({
|
|
289
|
+
className: t,
|
|
290
|
+
textareaClassName: n,
|
|
291
|
+
label: e,
|
|
292
|
+
helperText: a,
|
|
293
|
+
id: s,
|
|
294
|
+
isError: i = !1,
|
|
295
|
+
errorMessage: l,
|
|
296
|
+
disabled: f,
|
|
297
|
+
readOnly: b,
|
|
298
|
+
rows: o = 4,
|
|
299
|
+
style: u,
|
|
300
|
+
...x
|
|
301
|
+
}, d) => {
|
|
302
|
+
const v = C(), h = s ?? v, p = `${h}-error`, m = `${h}-helper`, g = [
|
|
303
|
+
i && l ? p : null,
|
|
304
|
+
!i && a ? m : null
|
|
305
|
+
].filter(Boolean).join(" ") || void 0;
|
|
306
|
+
return /* @__PURE__ */ k("div", { className: c("p-text-area relative w-full", t), style: u, children: [
|
|
307
|
+
/* @__PURE__ */ r(
|
|
308
|
+
"textarea",
|
|
309
|
+
{
|
|
310
|
+
...x,
|
|
311
|
+
id: h,
|
|
312
|
+
ref: d,
|
|
313
|
+
rows: o,
|
|
314
|
+
disabled: f,
|
|
315
|
+
readOnly: b,
|
|
316
|
+
placeholder: " ",
|
|
317
|
+
"aria-invalid": i || void 0,
|
|
318
|
+
"aria-describedby": g,
|
|
319
|
+
"aria-required": x.required,
|
|
320
|
+
"aria-disabled": f,
|
|
321
|
+
"aria-readonly": b,
|
|
322
|
+
className: c(
|
|
323
|
+
// Layout
|
|
324
|
+
"peer w-full rounded px-4 pt-8 pb-3",
|
|
325
|
+
// Visuals
|
|
326
|
+
"bg-(--p-textarea-bg) text-(--p-textarea-text)",
|
|
327
|
+
"font-sans text-sm outline-none",
|
|
328
|
+
"border border-(--p-textarea-border) focus:border-(--p-textarea-border-focus)",
|
|
329
|
+
// Focus
|
|
330
|
+
"focus:bg-(--p-textarea-bg-focus)",
|
|
331
|
+
"focus:ring-2 focus:ring-(--p-textarea-ring)",
|
|
332
|
+
// Resize
|
|
333
|
+
"resize-y",
|
|
334
|
+
// Motion
|
|
335
|
+
"transition-all duration-150 ease-in",
|
|
336
|
+
// States
|
|
337
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
338
|
+
"read-only:cursor-default read-only:bg-(--p-textarea-bg-readonly)",
|
|
339
|
+
i && "ring-2 ring-red-500",
|
|
340
|
+
n
|
|
341
|
+
)
|
|
342
|
+
}
|
|
343
|
+
),
|
|
344
|
+
/* @__PURE__ */ r(
|
|
345
|
+
"span",
|
|
346
|
+
{
|
|
347
|
+
"aria-hidden": "true",
|
|
348
|
+
className: c(
|
|
349
|
+
"pointer-events-none absolute top-2 left-4",
|
|
350
|
+
"font-sans text-xs",
|
|
351
|
+
"origin-left transition-all duration-150 ease-in",
|
|
352
|
+
// Hidden by default
|
|
353
|
+
"scale-0 opacity-0",
|
|
354
|
+
i ? "text-red-500" : "text-(--p-textarea-label) peer-focus:text-(--p-textarea-label-focus)",
|
|
355
|
+
// Reveal when focused or filled
|
|
356
|
+
"peer-focus:scale-100 peer-focus:opacity-100",
|
|
357
|
+
"peer-not-placeholder-shown:scale-100 peer-not-placeholder-shown:opacity-100"
|
|
358
|
+
),
|
|
359
|
+
children: e
|
|
360
|
+
}
|
|
361
|
+
),
|
|
362
|
+
/* @__PURE__ */ r(
|
|
363
|
+
"label",
|
|
364
|
+
{
|
|
365
|
+
htmlFor: h,
|
|
366
|
+
className: c(
|
|
367
|
+
"pointer-events-none absolute top-4 left-4",
|
|
368
|
+
"font-sans text-sm text-(--p-textarea-text)",
|
|
369
|
+
"origin-left transition-all duration-150 ease-in",
|
|
370
|
+
// Collapse when focused or filled
|
|
371
|
+
"peer-focus:scale-0 peer-focus:opacity-0",
|
|
372
|
+
"peer-not-placeholder-shown:scale-0 peer-not-placeholder-shown:opacity-0",
|
|
373
|
+
f && "opacity-50"
|
|
374
|
+
),
|
|
375
|
+
children: e
|
|
376
|
+
}
|
|
377
|
+
),
|
|
378
|
+
i && l && /* @__PURE__ */ r("p", { id: p, role: "alert", className: "mt-1 px-4 font-sans text-xs text-red-500", children: l }),
|
|
379
|
+
!i && a && /* @__PURE__ */ r("p", { id: m, className: "mt-1 px-4 font-sans text-xs text-(--p-textarea-text-helper)", children: a })
|
|
380
|
+
] });
|
|
381
|
+
}
|
|
382
|
+
);
|
|
383
|
+
M.displayName = "PTextArea";
|
|
285
384
|
export {
|
|
286
|
-
|
|
385
|
+
J as PSectionHeader,
|
|
386
|
+
M as PTextArea,
|
|
287
387
|
K as PTextInput,
|
|
288
|
-
|
|
289
|
-
|
|
388
|
+
F as PTypography,
|
|
389
|
+
G as Row,
|
|
290
390
|
T as Stack
|
|
291
391
|
};
|
|
292
392
|
//# sourceMappingURL=index.es.js.map
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/components/PContainers/Row/Row.tsx","../src/components/PContainers/Stack/Stack.tsx","../node_modules/class-variance-authority/node_modules/clsx/dist/clsx.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/components/PTypography/PTypography.constants.ts","../src/components/PTypography/PTypography.tsx","../src/components/PSectionHeader/PSectionHeader.tsx","../src/components/PTextInput/PTextInput.tsx"],"sourcesContent":["import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type RowProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Row: FC<RowProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-row', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Row;\n","import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type StackProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Stack: FC<StackProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-col', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Stack;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n};\n\n\n//# sourceMappingURL=index.mjs.map","import { cva } from 'class-variance-authority';\n\ntype FontVariants =\n | 'serif'\n | 'body'\n | 'body-wide'\n | 'heading'\n | 'heading-lg'\n | 'heading-xl';\n\nconst fontVariantsMap = {\n serif: 'font-serif',\n body: 'text-base',\n 'body-wide': 'text-sm tracking-[0.40em] font-medium',\n heading: 'text-[1.5rem] md:text-4xl tracking-[-0.04em] font-medium',\n 'heading-lg':\n 'text-[2.5rem] md:text-[4rem] tracking-[-0.04em] font-medium leading-[2.75rem] md:leading-[4.5rem]',\n 'heading-xl':\n 'text-[4rem] md:text-[7rem] tracking-[-0.04em] leading-[3.5rem] md:leading-[5.5rem] font-medium',\n} satisfies Record<FontVariants, string>;\n\nexport const PTypographyVariants = cva('font-sans', {\n variants: {\n variant: fontVariantsMap,\n },\n defaultVariants: {\n variant: 'body',\n },\n});\n","import { VariantProps } from 'class-variance-authority';\nimport { HTMLAttributes } from 'react';\nimport '../../index.css';\nimport cn from '../../utils/cn';\nimport { PTypographyVariants } from './PTypography.constants';\n\nexport interface PTypographyProps\n extends VariantProps<typeof PTypographyVariants>,\n HTMLAttributes<HTMLElement> {\n as?: React.ElementType;\n children: React.ReactNode;\n}\n\nexport default function PTypography({\n as: Element = 'p',\n children,\n className = '',\n variant,\n ...props\n}: PTypographyProps) {\n return (\n <Element\n className={cn(PTypographyVariants({ variant, className }))}\n {...props}\n >\n {children}\n </Element>\n );\n}\n","import { Stack } from '../PContainers';\nimport { PTypography } from '../PTypography';\n\ninterface Props {\n title: string;\n}\n\nexport default function PSectionHeader({ title }: Props) {\n return (\n <Stack className='pt-2 border-t border-white text-white'>\n <PTypography className='uppercase' variant='body-wide'>\n {title}\n </PTypography>\n </Stack>\n );\n}\n","import { forwardRef, type InputHTMLAttributes, type ReactNode, useId, useState } from 'react';\nimport '../../index.css';\nimport cn from '../../utils/cn';\n\nexport type PTextInputRef = HTMLInputElement;\n\nexport type PTextInputProps = {\n /** Applied to the root wrapper element. */\n className?: string;\n /** Applied to the inner `<input>` element for layout / spacing overrides. */\n inputClassName?: string;\n /** Visible label — doubles as the floating label and the placeholder. */\n label: string;\n /** Shown below the field when there is no error. */\n helperText?: string;\n isError?: boolean;\n /** Shown below the field when `isError` is true. Announced immediately via `role=\"alert\"`. */\n errorMessage?: string;\n /** Decorative element placed on the trailing edge. Ignored when `type=\"password\"`. */\n rightAdornment?: ReactNode;\n} & Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'className' | 'placeholder' | 'aria-label' | 'aria-describedby'\n>;\n\n// ─── Inline SVG icons ────────────────────────────────────────────────────────\n\nfunction EyeIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nfunction EyeOffIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" />\n <path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" />\n <path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" />\n <line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" />\n </svg>\n );\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PTextInput = forwardRef<PTextInputRef, PTextInputProps>(\n (\n {\n className,\n inputClassName,\n type,\n label,\n helperText,\n id,\n isError = false,\n errorMessage,\n rightAdornment,\n disabled,\n readOnly,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const errorId = `${inputId}-error`;\n const helperId = `${inputId}-helper`;\n\n const isPassword = type === 'password';\n const hasRightAdornment = Boolean(rightAdornment) && !isPassword;\n const [showPassword, setShowPassword] = useState(false);\n\n const inputType = isPassword ? (showPassword ? 'text' : 'password') : (type ?? 'text');\n\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <div className={cn('relative w-full', className)} style={style}>\n <input\n {...props}\n id={inputId}\n ref={ref}\n type={inputType}\n disabled={disabled}\n readOnly={readOnly}\n // Empty string required for the CSS peer-not-placeholder-shown trick.\n placeholder=\" \"\n // Accessibility\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={props.required}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n autoComplete={props.autoComplete ?? (isPassword ? 'current-password' : undefined)}\n className={cn(\n // Layout — tall enough for the floating label + value\n 'peer h-16 w-full rounded px-4 pt-6 pb-2',\n (isPassword || hasRightAdornment) && 'pr-12',\n // Visuals\n 'bg-white text-black',\n 'font-sans text-sm outline-none',\n 'border border-black focus:border-black',\n // Focus\n 'focus:ring-2 focus:ring-primary',\n // Motion\n 'transition-all duration-150 ease-in',\n // States\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'read-only:cursor-default read-only:bg-gray-lighter',\n isError && 'ring-2 ring-red-500',\n // Date — hide native picker chrome so rightAdornment can replace it\n hasRightAdornment &&\n type === 'date' &&\n '[&::-webkit-calendar-picker-indicator]:absolute [&::-webkit-calendar-picker-indicator]:right-0 [&::-webkit-calendar-picker-indicator]:h-full [&::-webkit-calendar-picker-indicator]:w-full [&::-webkit-calendar-picker-indicator]:cursor-pointer [&::-webkit-calendar-picker-indicator]:opacity-0',\n inputClassName,\n )}\n />\n\n {/*\n * Floating label — shown above the value when focused or filled.\n * aria-hidden: the <label> below already provides the accessible name.\n */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute top-2 left-4',\n 'font-sans text-xs',\n 'origin-left transition-all duration-150 ease-in',\n // Hidden by default\n 'scale-0 opacity-0',\n isError\n ? 'text-red-500'\n : 'text-gray-darker peer-focus:text-primary',\n // Reveal when focused or filled\n 'peer-focus:scale-100 peer-focus:opacity-100',\n 'peer-not-placeholder-shown:scale-100 peer-not-placeholder-shown:opacity-100',\n )}\n >\n {label}\n </span>\n\n {/*\n * Placeholder label — centered in the field when empty and unfocused.\n * pointer-events-none lets clicks fall through to the input beneath;\n * htmlFor still wires up the accessible name correctly.\n */}\n <label\n htmlFor={inputId}\n className={cn(\n 'pointer-events-none absolute top-1/2 left-4 -translate-y-1/2',\n 'font-sans text-sm text-black',\n 'origin-left transition-all duration-150 ease-in',\n // Collapse when focused or filled\n 'peer-focus:scale-0 peer-focus:opacity-0',\n 'peer-not-placeholder-shown:scale-0 peer-not-placeholder-shown:opacity-0',\n disabled && 'opacity-50',\n )}\n >\n {label}\n </label>\n\n {/* Password toggle */}\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={disabled}\n className={cn(\n 'absolute top-1/2 right-4 -translate-y-1/2',\n 'text-gray-darker hover:text-black',\n 'transition-colors duration-150',\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary',\n 'disabled:pointer-events-none disabled:opacity-50',\n )}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n aria-controls={inputId}\n >\n {showPassword ? <EyeIcon /> : <EyeOffIcon />}\n </button>\n )}\n\n {/* Right adornment — decorative, hidden from assistive tech */}\n {hasRightAdornment && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute top-1/2 right-4 -translate-y-1/2 text-gray-darker\"\n >\n {rightAdornment}\n </span>\n )}\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p id={errorId} role=\"alert\" className=\"mt-1 px-4 font-sans text-xs text-red-500\">\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p id={helperId} className=\"mt-1 px-4 font-sans text-xs text-gray-darker\">\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextInput.displayName = 'PTextInput';\n"],"names":["Row","children","gap","alignItems","justifyContent","className","jsx","cn","Stack","r","e","t","f","clsx","falsyToString","value","cx","cva","base","config","props","ref","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","param1","cvClass","cvClassName","compoundVariantOptions","fontVariantsMap","PTypographyVariants","PTypography","Element","PSectionHeader","title","EyeIcon","jsxs","EyeOffIcon","PTextInput","forwardRef","inputClassName","type","label","helperText","id","isError","errorMessage","rightAdornment","disabled","readOnly","style","generatedId","useId","inputId","errorId","helperId","isPassword","hasRightAdornment","showPassword","setShowPassword","useState","inputType","describedBy","v"],"mappings":";;;AAWA,MAAMA,IAAoB,CAAC;AAAA,EACzB,UAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,YAAAC,IAAa;AAAA,EACb,gBAAAC,IAAiB;AAAA,EACjB,WAAAC,IAAY;AACd,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC,EAAG,iBAAiBF,CAAS;AAAA,IACxC,OAAO;AAAA,MACL,KAAAH;AAAA,MACA,YAAAC;AAAA,MACA,gBAAAC;AAAA,IACF;AAAA,IAEC,UAAAH;AAAA,EAAA;AAAA,GChBDO,IAAwB,CAAC;AAAA,EAC7B,UAAAP;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,YAAAC,IAAa;AAAA,EACb,gBAAAC,IAAiB;AAAA,EACjB,WAAAC,IAAY;AACd,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC,EAAG,iBAAiBF,CAAS;AAAA,IACxC,OAAO;AAAA,MACL,KAAAH;AAAA,MACA,YAAAC;AAAA,MACA,gBAAAC;AAAA,IACF;AAAA,IAEC,UAAAH;AAAA,EAAA;AAAA;AC3BP,SAASQ,EAAEC,GAAE;AAAC,MAAIC,GAAEC,GAAE,IAAE;AAAG,MAAa,OAAOF,KAAjB,YAA8B,OAAOA,KAAjB,SAAmB,MAAGA;AAAA,WAAoB,OAAOA,KAAjB,SAAmB,KAAG,MAAM,QAAQA,CAAC,EAAE,MAAIC,IAAE,GAAEA,IAAED,EAAE,QAAOC,IAAI,CAAAD,EAAEC,CAAC,MAAIC,IAAEH,EAAEC,EAAEC,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAGC;AAAA,MAAQ,MAAID,KAAKD,EAAE,CAAAA,EAAEC,CAAC,MAAI,MAAI,KAAG,MAAK,KAAGA;AAAG,SAAO;AAAC;AAAQ,SAASE,IAAM;AAAC,WAAQH,GAAEC,GAAEC,IAAE,GAAE,IAAE,IAAGA,IAAE,UAAU,SAAQ,EAACF,IAAE,UAAUE,GAAG,OAAKD,IAAEF,EAAEC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAGC;AAAG,SAAO;AAAC;ACCjW,MAAMG,IAAgB,CAACC,MAAQ,OAAOA,KAAU,YAAY,GAAG,OAAOA,CAAK,IAAIA,MAAU,IAAI,MAAMA,GACtFC,IAAKH,GACLI,IAAM,CAACC,GAAMC,MACf,CAACC,MAAQ;AACZ,MAAIC;AACJ,OAAKF,KAAW,OAA4B,SAASA,EAAO,aAAa,KAAM,QAAOH,EAAGE,GAAME,KAAU,OAA2B,SAASA,EAAM,OAAOA,KAAU,OAA2B,SAASA,EAAM,SAAS;AACvN,QAAM,EAAE,UAAAE,GAAW,iBAAAC,EAAkB,IAAGJ,GAClCK,IAAuB,OAAO,KAAKF,CAAQ,EAAE,IAAI,CAACG,MAAU;AAC9D,UAAMC,IAAcN,KAAU,OAA2B,SAASA,EAAMK,CAAO,GACzEE,IAAqBJ,KAAoB,OAAqC,SAASA,EAAgBE,CAAO;AACpH,QAAIC,MAAgB,KAAM,QAAO;AACjC,UAAME,IAAad,EAAcY,CAAW,KAAKZ,EAAca,CAAkB;AACjF,WAAOL,EAASG,CAAO,EAAEG,CAAU;AAAA,EAC/C,CAAS,GACKC,IAAwBT,KAAS,OAAO,QAAQA,CAAK,EAAE,OAAO,CAACU,GAAKC,MAAQ;AAC9E,QAAI,CAACC,GAAKjB,CAAK,IAAIgB;AACnB,WAAIhB,MAAU,WAGde,EAAIE,CAAG,IAAIjB,IACJe;AAAA,EACV,GAAE,CAAE,CAAA,GACCG,IAA+Bd,KAAW,SAAsCE,IAAMF,EAAO,sBAAsB,QAAQE,MAAQ,SAA7D,SAA+EA,EAAI,OAAO,CAACS,GAAKI,MAAS;AACjL,QAAI,EAAE,OAAOC,GAAU,WAAWC,GAAc,GAAGC,EAAwB,IAAGH;AAC9E,WAAO,OAAO,QAAQG,CAAsB,EAAE,MAAM,CAACN,MAAQ;AACzD,UAAI,CAACC,GAAKjB,CAAK,IAAIgB;AACnB,aAAO,MAAM,QAAQhB,CAAK,IAAIA,EAAM,SAAS;AAAA,QACzC,GAAGQ;AAAA,QACH,GAAGM;AAAA,MACvB,EAAkBG,CAAG,CAAC,IAAK;AAAA,QACP,GAAGT;AAAA,QACH,GAAGM;AAAA,MACvB,EAAmBG,CAAG,MAAMjB;AAAA,IAC5B,CAAa,IAAI;AAAA,MACD,GAAGe;AAAA,MACHK;AAAA,MACAC;AAAA,IACH,IAAGN;AAAA,EACP,GAAE,CAAE,CAAA;AACL,SAAOd,EAAGE,GAAMM,GAAsBS,GAA8Bb,KAAU,OAA2B,SAASA,EAAM,OAAOA,KAAU,OAA2B,SAASA,EAAM,SAAS;AACpM,GC/BMkB,IAAkB;AAAA,EACtB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AAAA,EACT,cACE;AAAA,EACF,cACE;AACJ,GAEaC,IAAsBtB,EAAI,aAAa;AAAA,EAClD,UAAU;AAAA,IACR,SAASqB;AAAA,EACX;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC;ACfD,SAAwBE,EAAY;AAAA,EAClC,IAAIC,IAAU;AAAA,EACd,UAAAxC;AAAA,EACA,WAAAI,IAAY;AAAA,EACZ,SAAAoB;AAAA,EACA,GAAGL;AACL,GAAqB;AAEjB,SAAA,gBAAAd;AAAA,IAACmC;AAAA,IAAA;AAAA,MACC,WAAWlC,EAAGgC,EAAoB,EAAE,SAAAd,GAAS,WAAApB,EAAW,CAAA,CAAC;AAAA,MACxD,GAAGe;AAAA,MAEH,UAAAnB;AAAA,IAAA;AAAA,EAAA;AAGP;ACrBwB,SAAAyC,EAAe,EAAE,OAAAC,KAAgB;AAErD,SAAA,gBAAArC,EAACE,GAAM,EAAA,WAAU,yCACf,UAAA,gBAAAF,EAACkC,GAAY,EAAA,WAAU,aAAY,SAAQ,aACxC,UAAAG,EAAA,CACH,EACF,CAAA;AAEJ;ACYA,SAASC,IAAU;AAEf,SAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MACZ,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC,gBAAAvC,EAAA,QAAA,EAAK,GAAE,+CAA+C,CAAA;AAAA,0BACtD,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGpC;AAEA,SAASwC,IAAa;AAElB,SAAA,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MACZ,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC,gBAAAvC,EAAA,QAAA,EAAK,GAAE,iCAAiC,CAAA;AAAA,QACzC,gBAAAA,EAAC,QAAK,EAAA,GAAE,+EAA+E,CAAA;AAAA,QACvF,gBAAAA,EAAC,QAAK,EAAA,GAAE,yEAAyE,CAAA;AAAA,QACjF,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAK,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1C;AAIO,MAAMyC,IAAaC;AAAA,EACxB,CACE;AAAA,IACE,WAAA3C;AAAA,IACA,gBAAA4C;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,IAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,cAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGvC;AAAA,KAELC,MACG;AACH,UAAMuC,IAAcC,KACdC,IAAUT,KAAMO,GAChBG,IAAU,GAAGD,CAAO,UACpBE,IAAW,GAAGF,CAAO,WAErBG,IAAaf,MAAS,YACtBgB,IAAoB,EAAQV,KAAmB,CAACS,GAChD,CAACE,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAEhDC,IAAYL,IAAcE,IAAe,SAAS,aAAejB,KAAQ,QAEzEqB,IAAc;AAAA,MAClBjB,KAAWC,IAAeQ,IAAU;AAAA,MACpC,CAACT,KAAWF,IAAaY,IAAW;AAAA,IAAA,EAEnC,OAAO,OAAO,EACd,KAAK,GAAG,KAAK;AAEhB,6BACG,OAAI,EAAA,WAAWzD,EAAG,mBAAmBF,CAAS,GAAG,OAAAsD,GAChD,UAAA;AAAA,MAAA,gBAAArD;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAGc;AAAA,UACJ,IAAI0C;AAAA,UACJ,KAAAzC;AAAA,UACA,MAAMiD;AAAA,UACN,UAAAb;AAAA,UACA,UAAAC;AAAA,UAEA,aAAY;AAAA,UAEZ,gBAAcJ,KAAW;AAAA,UACzB,oBAAkBiB;AAAA,UAClB,iBAAenD,EAAM;AAAA,UACrB,iBAAeqC;AAAA,UACf,iBAAeC;AAAA,UACf,cAActC,EAAM,iBAAiB6C,IAAa,qBAAqB;AAAA,UACvE,WAAW1D;AAAA;AAAA,YAET;AAAA,aACC0D,KAAcC,MAAsB;AAAA;AAAA,YAErC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,YAEA;AAAA;AAAA,YAEA;AAAA;AAAA,YAEA;AAAA,YACA;AAAA,YACAZ,KAAW;AAAA;AAAA,YAEXY,KACEhB,MAAS,UACT;AAAA,YACFD;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,MAMA,gBAAA3C;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAY;AAAA,UACZ,WAAWC;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA;AAAA,YAEA;AAAA,YACA+C,IACI,iBACA;AAAA;AAAA,YAEJ;AAAA,YACA;AAAA,UACF;AAAA,UAEC,UAAAH;AAAA,QAAA;AAAA,MACH;AAAA,MAOA,gBAAA7C;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASwD;AAAA,UACT,WAAWvD;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA;AAAA,YAEA;AAAA,YACA;AAAA,YACAkD,KAAY;AAAA,UACd;AAAA,UAEC,UAAAN;AAAA,QAAA;AAAA,MACH;AAAA,MAGCc,KACC,gBAAA3D;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM8D,EAAgB,CAACI,MAAM,CAACA,CAAC;AAAA,UACxC,UAAAf;AAAA,UACA,WAAWlD;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,cAAY4D,IAAe,kBAAkB;AAAA,UAC7C,gBAAcA;AAAA,UACd,iBAAeL;AAAA,UAEd,UAAeK,IAAA,gBAAA7D,EAACsC,GAAQ,CAAA,CAAA,sBAAME,GAAW,EAAA;AAAA,QAAA;AAAA,MAC5C;AAAA,MAIDoB,KACC,gBAAA5D;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAY;AAAA,UACZ,WAAU;AAAA,UAET,UAAAkD;AAAA,QAAA;AAAA,MACH;AAAA,MAIDF,KAAWC,KACV,gBAAAjD,EAAC,KAAE,EAAA,IAAIyD,GAAS,MAAK,SAAQ,WAAU,4CACpC,UACHR,EAAA,CAAA;AAAA,MAID,CAACD,KAAWF,KACX,gBAAA9C,EAAC,OAAE,IAAI0D,GAAU,WAAU,gDACxB,UACHZ,EAAA,CAAA;AAAA,IAEJ,EAAA,CAAA;AAAA,EAEJ;AACF;AAEAL,EAAW,cAAc;","x_google_ignoreList":[2,3]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/components/PContainers/Row/Row.tsx","../src/components/PContainers/Stack/Stack.tsx","../node_modules/class-variance-authority/node_modules/clsx/dist/clsx.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/components/PTypography/PTypography.constants.ts","../src/components/PTypography/PTypography.tsx","../src/components/PSectionHeader/PSectionHeader.tsx","../src/components/PTextInput/PTextInput.tsx","../src/components/PTextArea/PTextArea.tsx"],"sourcesContent":["import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type RowProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Row: FC<RowProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-row', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Row;\n","import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type StackProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Stack: FC<StackProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-col', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Stack;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n};\n\n\n//# sourceMappingURL=index.mjs.map","import { cva } from 'class-variance-authority';\n\ntype FontVariants =\n | 'serif'\n | 'body'\n | 'body-wide'\n | 'heading'\n | 'heading-lg'\n | 'heading-xl';\n\nconst fontVariantsMap = {\n serif: 'font-serif',\n body: 'text-base',\n 'body-wide': 'text-sm tracking-[0.40em] font-medium',\n heading: 'text-[1.5rem] md:text-4xl tracking-[-0.04em] font-medium',\n 'heading-lg':\n 'text-[2.5rem] md:text-[4rem] tracking-[-0.04em] font-medium leading-[2.75rem] md:leading-[4.5rem]',\n 'heading-xl':\n 'text-[4rem] md:text-[7rem] tracking-[-0.04em] leading-[3.5rem] md:leading-[5.5rem] font-medium',\n} satisfies Record<FontVariants, string>;\n\nexport const PTypographyVariants = cva('font-sans', {\n variants: {\n variant: fontVariantsMap,\n },\n defaultVariants: {\n variant: 'body',\n },\n});\n","import { VariantProps } from 'class-variance-authority';\nimport { HTMLAttributes } from 'react';\nimport '../../index.css';\nimport cn from '../../utils/cn';\nimport { PTypographyVariants } from './PTypography.constants';\n\nexport interface PTypographyProps\n extends VariantProps<typeof PTypographyVariants>,\n HTMLAttributes<HTMLElement> {\n as?: React.ElementType;\n children: React.ReactNode;\n}\n\nexport default function PTypography({\n as: Element = 'p',\n children,\n className = '',\n variant,\n ...props\n}: PTypographyProps) {\n return (\n <Element\n className={cn(PTypographyVariants({ variant, className }))}\n {...props}\n >\n {children}\n </Element>\n );\n}\n","import { Stack } from '../PContainers';\nimport { PTypography } from '../PTypography';\n\ninterface Props {\n title: string;\n}\n\nexport default function PSectionHeader({ title }: Props) {\n return (\n <Stack className='pt-2 border-t border-white text-white'>\n <PTypography className='uppercase' variant='body-wide'>\n {title}\n </PTypography>\n </Stack>\n );\n}\n","import { forwardRef, type InputHTMLAttributes, type ReactNode, useId, useState } from 'react';\nimport './PTextInput.css';\nimport cn from '../../utils/cn';\n\nexport type PTextInputRef = HTMLInputElement;\n\nexport type PTextInputProps = {\n /**\n * Applied to the root wrapper element.\n * Override design tokens via CSS custom properties, e.g.:\n * `[--p-input-ring:blue] [--p-input-bg:#f5f5f5]`\n */\n className?: string;\n /** Applied to the inner `<input>` element for layout / spacing overrides. */\n inputClassName?: string;\n /** Visible label — doubles as the floating label and the placeholder. */\n label: string;\n /** Shown below the field when there is no error. */\n helperText?: string;\n isError?: boolean;\n /** Shown below the field when `isError` is true. Announced immediately via `role=\"alert\"`. */\n errorMessage?: string;\n /** Decorative element placed on the trailing edge. Ignored when `type=\"password\"`. */\n rightAdornment?: ReactNode;\n} & Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'className' | 'placeholder' | 'aria-label' | 'aria-describedby'\n>;\n\n// ─── Inline SVG icons ────────────────────────────────────────────────────────\n\nfunction EyeIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nfunction EyeOffIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" />\n <path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" />\n <path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" />\n <line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" />\n </svg>\n );\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PTextInput = forwardRef<PTextInputRef, PTextInputProps>(\n (\n {\n className,\n inputClassName,\n type,\n label,\n helperText,\n id,\n isError = false,\n errorMessage,\n rightAdornment,\n disabled,\n readOnly,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const errorId = `${inputId}-error`;\n const helperId = `${inputId}-helper`;\n\n const isPassword = type === 'password';\n const hasRightAdornment = Boolean(rightAdornment) && !isPassword;\n const [showPassword, setShowPassword] = useState(false);\n\n const inputType = isPassword ? (showPassword ? 'text' : 'password') : (type ?? 'text');\n\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <div className={cn('p-text-input relative w-full', className)} style={style}>\n <input\n {...props}\n id={inputId}\n ref={ref}\n type={inputType}\n disabled={disabled}\n readOnly={readOnly}\n // Empty string required for the CSS peer-not-placeholder-shown trick.\n placeholder=\" \"\n // Accessibility\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={props.required}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n autoComplete={props.autoComplete ?? (isPassword ? 'current-password' : undefined)}\n className={cn(\n // Layout — tall enough for the floating label + value\n 'peer h-16 w-full rounded px-4 pt-6 pb-2',\n (isPassword || hasRightAdornment) && 'pr-12',\n // Visuals\n 'bg-(--p-input-bg) text-(--p-input-text)',\n 'font-sans text-sm outline-none',\n 'border border-(--p-input-border) focus:border-(--p-input-border-focus)',\n // Focus\n 'focus:bg-(--p-input-bg-focus)',\n 'focus:ring-2 focus:ring-(--p-input-ring)',\n // Motion\n 'transition-all duration-150 ease-in',\n // States\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'read-only:cursor-default read-only:bg-(--p-input-bg-readonly)',\n isError && 'ring-2 ring-red-500',\n // Date — hide native picker chrome so rightAdornment can replace it\n hasRightAdornment &&\n type === 'date' &&\n '[&::-webkit-calendar-picker-indicator]:absolute [&::-webkit-calendar-picker-indicator]:right-0 [&::-webkit-calendar-picker-indicator]:h-full [&::-webkit-calendar-picker-indicator]:w-full [&::-webkit-calendar-picker-indicator]:cursor-pointer [&::-webkit-calendar-picker-indicator]:opacity-0',\n inputClassName,\n )}\n />\n\n {/*\n * Floating label — shown above the value when focused or filled.\n * aria-hidden: the <label> below already provides the accessible name.\n */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute top-2 left-4',\n 'font-sans text-xs',\n 'origin-left transition-all duration-150 ease-in',\n // Hidden by default\n 'scale-0 opacity-0',\n isError\n ? 'text-red-500'\n : 'text-(--p-input-label) peer-focus:text-(--p-input-label-focus)',\n // Reveal when focused or filled\n 'peer-focus:scale-100 peer-focus:opacity-100',\n 'peer-not-placeholder-shown:scale-100 peer-not-placeholder-shown:opacity-100',\n )}\n >\n {label}\n </span>\n\n {/*\n * Placeholder label — centered in the field when empty and unfocused.\n * pointer-events-none lets clicks fall through to the input beneath;\n * htmlFor still wires up the accessible name correctly.\n */}\n <label\n htmlFor={inputId}\n className={cn(\n 'pointer-events-none absolute top-1/2 left-4 -translate-y-1/2',\n 'font-sans text-sm text-(--p-input-text)',\n 'origin-left transition-all duration-150 ease-in',\n // Collapse when focused or filled\n 'peer-focus:scale-0 peer-focus:opacity-0',\n 'peer-not-placeholder-shown:scale-0 peer-not-placeholder-shown:opacity-0',\n disabled && 'opacity-50',\n )}\n >\n {label}\n </label>\n\n {/* Password toggle */}\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={disabled}\n className={cn(\n 'absolute top-1/2 right-4 -translate-y-1/2',\n 'text-(--p-input-label) hover:text-(--p-input-text)',\n 'transition-colors duration-150',\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\n 'focus-visible:outline-(--p-input-ring)',\n 'disabled:pointer-events-none disabled:opacity-50',\n )}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n aria-controls={inputId}\n >\n {showPassword ? <EyeIcon /> : <EyeOffIcon />}\n </button>\n )}\n\n {/* Right adornment — decorative, hidden from assistive tech */}\n {hasRightAdornment && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute top-1/2 right-4 -translate-y-1/2 text-(--p-input-label)\"\n >\n {rightAdornment}\n </span>\n )}\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p id={errorId} role=\"alert\" className=\"mt-1 px-4 font-sans text-xs text-red-500\">\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p id={helperId} className=\"mt-1 px-4 font-sans text-xs text-(--p-input-text-helper)\">\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextInput.displayName = 'PTextInput';\n","import { forwardRef, type TextareaHTMLAttributes, useId } from 'react';\nimport './PTextArea.css';\nimport cn from '../../utils/cn';\n\nexport type PTextAreaRef = HTMLTextAreaElement;\n\nexport type PTextAreaProps = {\n /**\n * Applied to the root wrapper element.\n * Override design tokens via CSS custom properties, e.g.:\n * `[--p-textarea-ring:blue] [--p-textarea-bg:#f5f5f5]`\n */\n className?: string;\n /** Applied to the inner `<textarea>` element for layout / spacing overrides. */\n textareaClassName?: string;\n /** Visible label — doubles as the floating label and the placeholder. */\n label: string;\n /** Shown below the field when there is no error. */\n helperText?: string;\n isError?: boolean;\n /** Shown below the field when `isError` is true. Announced immediately via `role=\"alert\"`. */\n errorMessage?: string;\n} & Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'className' | 'placeholder' | 'aria-label' | 'aria-describedby'\n>;\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PTextArea = forwardRef<PTextAreaRef, PTextAreaProps>(\n (\n {\n className,\n textareaClassName,\n label,\n helperText,\n id,\n isError = false,\n errorMessage,\n disabled,\n readOnly,\n rows = 4,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const textareaId = id ?? generatedId;\n const errorId = `${textareaId}-error`;\n const helperId = `${textareaId}-helper`;\n\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <div className={cn('p-text-area relative w-full', className)} style={style}>\n <textarea\n {...props}\n id={textareaId}\n ref={ref}\n rows={rows}\n disabled={disabled}\n readOnly={readOnly}\n // Empty string required for the CSS peer-not-placeholder-shown trick.\n placeholder=\" \"\n // Accessibility\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={props.required}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n className={cn(\n // Layout\n 'peer w-full rounded px-4 pt-8 pb-3',\n // Visuals\n 'bg-(--p-textarea-bg) text-(--p-textarea-text)',\n 'font-sans text-sm outline-none',\n 'border border-(--p-textarea-border) focus:border-(--p-textarea-border-focus)',\n // Focus\n 'focus:bg-(--p-textarea-bg-focus)',\n 'focus:ring-2 focus:ring-(--p-textarea-ring)',\n // Resize\n 'resize-y',\n // Motion\n 'transition-all duration-150 ease-in',\n // States\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'read-only:cursor-default read-only:bg-(--p-textarea-bg-readonly)',\n isError && 'ring-2 ring-red-500',\n textareaClassName,\n )}\n />\n\n {/*\n * Floating label — shown above the value when focused or filled.\n * aria-hidden: the <label> below already provides the accessible name.\n */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute top-2 left-4',\n 'font-sans text-xs',\n 'origin-left transition-all duration-150 ease-in',\n // Hidden by default\n 'scale-0 opacity-0',\n isError\n ? 'text-red-500'\n : 'text-(--p-textarea-label) peer-focus:text-(--p-textarea-label-focus)',\n // Reveal when focused or filled\n 'peer-focus:scale-100 peer-focus:opacity-100',\n 'peer-not-placeholder-shown:scale-100 peer-not-placeholder-shown:opacity-100',\n )}\n >\n {label}\n </span>\n\n {/*\n * Placeholder label — sits near the top of the field when empty and unfocused.\n * pointer-events-none lets clicks fall through to the textarea beneath;\n * htmlFor still wires up the accessible name correctly.\n */}\n <label\n htmlFor={textareaId}\n className={cn(\n 'pointer-events-none absolute top-4 left-4',\n 'font-sans text-sm text-(--p-textarea-text)',\n 'origin-left transition-all duration-150 ease-in',\n // Collapse when focused or filled\n 'peer-focus:scale-0 peer-focus:opacity-0',\n 'peer-not-placeholder-shown:scale-0 peer-not-placeholder-shown:opacity-0',\n disabled && 'opacity-50',\n )}\n >\n {label}\n </label>\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p id={errorId} role=\"alert\" className=\"mt-1 px-4 font-sans text-xs text-red-500\">\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p id={helperId} className=\"mt-1 px-4 font-sans text-xs text-(--p-textarea-text-helper)\">\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextArea.displayName = 'PTextArea';\n"],"names":["Row","children","gap","alignItems","justifyContent","className","jsx","cn","Stack","r","e","t","f","n","clsx","falsyToString","value","cx","cva","base","config","props","ref","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","param1","cvClass","cvClassName","compoundVariantOptions","fontVariantsMap","PTypographyVariants","PTypography","Element","PSectionHeader","title","EyeIcon","jsxs","EyeOffIcon","PTextInput","forwardRef","inputClassName","type","label","helperText","id","isError","errorMessage","rightAdornment","disabled","readOnly","style","generatedId","useId","inputId","errorId","helperId","isPassword","hasRightAdornment","showPassword","setShowPassword","useState","inputType","describedBy","v","PTextArea","textareaClassName","rows","textareaId"],"mappings":"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","x_google_ignoreList":[2,3]}
|