@paolojulian.dev/design-system 4.2.2 → 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.es.js CHANGED
@@ -1,16 +1,16 @@
1
- import { jsx as i, jsxs as k } from "react/jsx-runtime";
2
- import { cn as u } from "./utils.es.js";
3
- import { forwardRef as B, useId as L, useState as O } from "react";
4
- const D = ({
1
+ import { jsx as r, jsxs as k } from "react/jsx-runtime";
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
6
  gap: n = void 0,
7
7
  alignItems: e = void 0,
8
8
  justifyContent: a = void 0,
9
- className: o = ""
10
- }) => /* @__PURE__ */ i(
9
+ className: s = ""
10
+ }) => /* @__PURE__ */ r(
11
11
  "div",
12
12
  {
13
- className: u("flex flex-row", o),
13
+ className: c("flex flex-row", s),
14
14
  style: {
15
15
  gap: n,
16
16
  alignItems: e,
@@ -23,11 +23,11 @@ const D = ({
23
23
  gap: n = void 0,
24
24
  alignItems: e = void 0,
25
25
  justifyContent: a = void 0,
26
- className: o = ""
27
- }) => /* @__PURE__ */ i(
26
+ className: s = ""
27
+ }) => /* @__PURE__ */ r(
28
28
  "div",
29
29
  {
30
- className: u("flex flex-col", o),
30
+ className: c("flex flex-col", s),
31
31
  style: {
32
32
  gap: n,
33
33
  alignItems: e,
@@ -36,81 +36,81 @@ const D = ({
36
36
  children: t
37
37
  }
38
38
  );
39
- function j(t) {
39
+ function V(t) {
40
40
  var n, e, a = "";
41
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 = j(t[n])) && (a && (a += " "), a += e);
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
43
  else for (n in t) t[n] && (a && (a += " "), a += n);
44
44
  return a;
45
45
  }
46
- function M() {
47
- for (var t, n, e = 0, a = ""; e < arguments.length; ) (t = arguments[e++]) && (n = j(t)) && (a && (a += " "), a += n);
46
+ function $() {
47
+ for (var t, n, e = 0, a = ""; e < arguments.length; ) (t = arguments[e++]) && (n = V(t)) && (a && (a += " "), a += n);
48
48
  return a;
49
49
  }
50
- const C = (t) => typeof t == "boolean" ? "".concat(t) : t === 0 ? "0" : t, P = M, R = (t, n) => (e) => {
50
+ const I = (t) => typeof t == "boolean" ? "".concat(t) : t === 0 ? "0" : t, P = $, O = (t, n) => (e) => {
51
51
  var a;
52
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: o, defaultVariants: p } = n, l = Object.keys(o).map((r) => {
54
- const d = e == null ? void 0 : e[r], f = p == null ? void 0 : p[r];
55
- if (d === null) return null;
56
- const s = C(d) || C(f);
57
- return o[r][s];
58
- }), m = e && Object.entries(e).reduce((r, d) => {
59
- let [f, s] = d;
60
- return s === void 0 || (r[f] = s), r;
61
- }, {}), x = n == null || (a = n.compoundVariants) === null || a === void 0 ? void 0 : a.reduce((r, d) => {
62
- let { class: f, className: s, ...y } = d;
63
- return Object.entries(y).every((w) => {
64
- let [c, h] = w;
65
- return Array.isArray(h) ? h.includes({
66
- ...p,
67
- ...m
68
- }[c]) : {
69
- ...p,
70
- ...m
71
- }[c] === h;
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
- ...r,
74
- f,
75
- s
76
- ] : r;
73
+ ...o,
74
+ x,
75
+ d
76
+ ] : o;
77
77
  }, []);
78
- return P(t, l, x, e == null ? void 0 : e.class, e == null ? void 0 : e.className);
79
- }, W = {
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
- }, q = R("font-sans", {
86
+ }, W = O("font-sans", {
87
87
  variants: {
88
- variant: W
88
+ variant: R
89
89
  },
90
90
  defaultVariants: {
91
91
  variant: "body"
92
92
  }
93
93
  });
94
- function H({
94
+ function F({
95
95
  as: t = "p",
96
96
  children: n,
97
97
  className: e = "",
98
98
  variant: a,
99
- ...o
99
+ ...s
100
100
  }) {
101
- return /* @__PURE__ */ i(
101
+ return /* @__PURE__ */ r(
102
102
  t,
103
103
  {
104
- className: u(q({ variant: a, className: e })),
105
- ...o,
104
+ className: c(W({ variant: a, className: e })),
105
+ ...s,
106
106
  children: n
107
107
  }
108
108
  );
109
109
  }
110
- function G({ title: t }) {
111
- return /* @__PURE__ */ i(T, { className: "pt-2 border-t border-white text-white", children: /* @__PURE__ */ i(H, { className: "uppercase", variant: "body-wide", children: t }) });
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
  {
@@ -126,13 +126,13 @@ function $() {
126
126
  "aria-hidden": "true",
127
127
  focusable: "false",
128
128
  children: [
129
- /* @__PURE__ */ i("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
130
- /* @__PURE__ */ i("circle", { cx: "12", cy: "12", r: "3" })
129
+ /* @__PURE__ */ r("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
130
+ /* @__PURE__ */ r("circle", { cx: "12", cy: "12", r: "3" })
131
131
  ]
132
132
  }
133
133
  );
134
134
  }
135
- function F() {
135
+ function z() {
136
136
  return /* @__PURE__ */ k(
137
137
  "svg",
138
138
  {
@@ -148,55 +148,55 @@ function F() {
148
148
  "aria-hidden": "true",
149
149
  focusable: "false",
150
150
  children: [
151
- /* @__PURE__ */ i("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
152
- /* @__PURE__ */ i("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" }),
153
- /* @__PURE__ */ i("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" }),
154
- /* @__PURE__ */ i("line", { x1: "2", x2: "22", y1: "2", y2: "22" })
151
+ /* @__PURE__ */ r("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
152
+ /* @__PURE__ */ r("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" }),
153
+ /* @__PURE__ */ r("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" }),
154
+ /* @__PURE__ */ r("line", { x1: "2", x2: "22", y1: "2", y2: "22" })
155
155
  ]
156
156
  }
157
157
  );
158
158
  }
159
- const K = B(
159
+ const K = j(
160
160
  ({
161
161
  className: t,
162
162
  inputClassName: n,
163
163
  type: e,
164
164
  label: a,
165
- helperText: o,
166
- id: p,
165
+ helperText: s,
166
+ id: i,
167
167
  isError: l = !1,
168
- errorMessage: m,
169
- rightAdornment: x,
170
- disabled: r,
171
- readOnly: d,
172
- style: f,
173
- ...s
174
- }, y) => {
175
- const w = L(), c = p ?? w, h = `${c}-error`, N = `${c}-helper`, v = e === "password", g = !!x && !v, [b, I] = O(!1), V = v ? b ? "text" : "password" : e ?? "text", A = [
176
- l && m ? h : null,
177
- !l && o ? N : null
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: u("p-text-input relative w-full", t), style: f, children: [
180
- /* @__PURE__ */ i(
179
+ return /* @__PURE__ */ k("div", { className: c("p-text-input relative w-full", t), style: x, children: [
180
+ /* @__PURE__ */ r(
181
181
  "input",
182
182
  {
183
- ...s,
184
- id: c,
185
- ref: y,
186
- type: V,
187
- disabled: r,
188
- readOnly: d,
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": A,
192
- "aria-required": s.required,
193
- "aria-disabled": r,
194
- "aria-readonly": d,
195
- autoComplete: s.autoComplete ?? (v ? "current-password" : void 0),
196
- className: u(
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
- (v || g) && "pr-12",
199
+ (y || N) && "pr-12",
200
200
  // Visuals
201
201
  "bg-(--p-input-bg) text-(--p-input-text)",
202
202
  "font-sans text-sm outline-none",
@@ -211,16 +211,16 @@ const K = B(
211
211
  "read-only:cursor-default read-only:bg-(--p-input-bg-readonly)",
212
212
  l && "ring-2 ring-red-500",
213
213
  // Date — hide native picker chrome so rightAdornment can replace it
214
- g && 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",
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
215
  n
216
216
  )
217
217
  }
218
218
  ),
219
- /* @__PURE__ */ i(
219
+ /* @__PURE__ */ r(
220
220
  "span",
221
221
  {
222
222
  "aria-hidden": "true",
223
- className: u(
223
+ className: c(
224
224
  "pointer-events-none absolute top-2 left-4",
225
225
  "font-sans text-xs",
226
226
  "origin-left transition-all duration-150 ease-in",
@@ -234,29 +234,29 @@ const K = B(
234
234
  children: a
235
235
  }
236
236
  ),
237
- /* @__PURE__ */ i(
237
+ /* @__PURE__ */ r(
238
238
  "label",
239
239
  {
240
- htmlFor: c,
241
- className: u(
240
+ htmlFor: p,
241
+ className: c(
242
242
  "pointer-events-none absolute top-1/2 left-4 -translate-y-1/2",
243
243
  "font-sans text-sm text-(--p-input-text)",
244
244
  "origin-left transition-all duration-150 ease-in",
245
245
  // Collapse when focused or filled
246
246
  "peer-focus:scale-0 peer-focus:opacity-0",
247
247
  "peer-not-placeholder-shown:scale-0 peer-not-placeholder-shown:opacity-0",
248
- r && "opacity-50"
248
+ o && "opacity-50"
249
249
  ),
250
250
  children: a
251
251
  }
252
252
  ),
253
- v && /* @__PURE__ */ i(
253
+ y && /* @__PURE__ */ r(
254
254
  "button",
255
255
  {
256
256
  type: "button",
257
- onClick: () => I((S) => !S),
258
- disabled: r,
259
- className: u(
257
+ onClick: () => A((q) => !q),
258
+ disabled: o,
259
+ className: c(
260
260
  "absolute top-1/2 right-4 -translate-y-1/2",
261
261
  "text-(--p-input-label) hover:text-(--p-input-text)",
262
262
  "transition-colors duration-150",
@@ -264,31 +264,129 @@ const K = B(
264
264
  "focus-visible:outline-(--p-input-ring)",
265
265
  "disabled:pointer-events-none disabled:opacity-50"
266
266
  ),
267
- "aria-label": b ? "Hide password" : "Show password",
268
- "aria-pressed": b,
269
- "aria-controls": c,
270
- children: b ? /* @__PURE__ */ i($, {}) : /* @__PURE__ */ i(F, {})
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, {})
271
271
  }
272
272
  ),
273
- g && /* @__PURE__ */ i(
273
+ N && /* @__PURE__ */ r(
274
274
  "span",
275
275
  {
276
276
  "aria-hidden": "true",
277
277
  className: "pointer-events-none absolute top-1/2 right-4 -translate-y-1/2 text-(--p-input-label)",
278
- children: x
278
+ children: b
279
279
  }
280
280
  ),
281
- l && m && /* @__PURE__ */ i("p", { id: h, role: "alert", className: "mt-1 px-4 font-sans text-xs text-red-500", children: m }),
282
- !l && o && /* @__PURE__ */ i("p", { id: N, className: "mt-1 px-4 font-sans text-xs text-(--p-input-text-helper)", children: o })
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 })
283
283
  ] });
284
284
  }
285
285
  );
286
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";
287
384
  export {
288
- G as PSectionHeader,
385
+ J as PSectionHeader,
386
+ M as PTextArea,
289
387
  K as PTextInput,
290
- H as PTypography,
291
- D as Row,
388
+ F as PTypography,
389
+ G as Row,
292
390
  T as Stack
293
391
  };
294
392
  //# sourceMappingURL=index.es.js.map
@@ -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 './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"],"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"],"mappings":"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","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]}