@treeal/ds 0.1.2 → 0.1.3

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.
Files changed (66) hide show
  1. package/dist/assets/style.css +1 -1
  2. package/dist/components/Input/Input.d.ts +13 -2
  3. package/dist/components/Input/Input.d.ts.map +1 -1
  4. package/dist/index.cjs10.js +1 -1
  5. package/dist/index.cjs11.js +1 -1
  6. package/dist/index.cjs12.js +1 -1
  7. package/dist/index.cjs13.js +1 -1
  8. package/dist/index.cjs14.js +1 -1
  9. package/dist/index.cjs15.js +1 -1
  10. package/dist/index.cjs16.js +1 -1
  11. package/dist/index.cjs17.js +1 -1
  12. package/dist/index.cjs18.js +1 -1
  13. package/dist/index.cjs19.js +1 -1
  14. package/dist/index.cjs20.js +1 -1
  15. package/dist/index.cjs21.js +1 -1
  16. package/dist/index.cjs22.js +1 -1
  17. package/dist/index.cjs23.js +1 -1
  18. package/dist/index.cjs24.js +1 -1
  19. package/dist/index.cjs25.js +1 -1
  20. package/dist/index.cjs26.js +1 -1
  21. package/dist/index.cjs27.js +1 -1
  22. package/dist/index.cjs28.js +1 -1
  23. package/dist/index.cjs5.js +1 -1
  24. package/dist/index.cjs6.js +1 -1
  25. package/dist/index.cjs7.js +1 -1
  26. package/dist/index.cjs8.js +1 -1
  27. package/dist/index.cjs9.js +1 -1
  28. package/dist/index.cjs9.js.map +1 -1
  29. package/dist/index.esm10.js +1 -1
  30. package/dist/index.esm11.js +1 -1
  31. package/dist/index.esm12.js +1 -1
  32. package/dist/index.esm13.js +1 -1
  33. package/dist/index.esm14.js +1 -1
  34. package/dist/index.esm15.js +1 -1
  35. package/dist/index.esm16.js +1 -1
  36. package/dist/index.esm17.js +22 -38
  37. package/dist/index.esm17.js.map +1 -1
  38. package/dist/index.esm18.js +102 -22
  39. package/dist/index.esm18.js.map +1 -1
  40. package/dist/index.esm19.js +60 -102
  41. package/dist/index.esm19.js.map +1 -1
  42. package/dist/index.esm20.js +60 -22
  43. package/dist/index.esm20.js.map +1 -1
  44. package/dist/index.esm21.js +22 -20
  45. package/dist/index.esm21.js.map +1 -1
  46. package/dist/index.esm22.js +12 -60
  47. package/dist/index.esm22.js.map +1 -1
  48. package/dist/index.esm23.js +20 -60
  49. package/dist/index.esm23.js.map +1 -1
  50. package/dist/index.esm24.js +48 -22
  51. package/dist/index.esm24.js.map +1 -1
  52. package/dist/index.esm25.js +22 -48
  53. package/dist/index.esm25.js.map +1 -1
  54. package/dist/index.esm26.js +20 -28
  55. package/dist/index.esm26.js.map +1 -1
  56. package/dist/index.esm27.js +30 -16
  57. package/dist/index.esm27.js.map +1 -1
  58. package/dist/index.esm28.js +38 -12
  59. package/dist/index.esm28.js.map +1 -1
  60. package/dist/index.esm5.js +1 -1
  61. package/dist/index.esm6.js +1 -1
  62. package/dist/index.esm7.js +1 -1
  63. package/dist/index.esm8.js +1 -1
  64. package/dist/index.esm9.js +104 -44
  65. package/dist/index.esm9.js.map +1 -1
  66. package/package.json +1 -1
@@ -1,69 +1,129 @@
1
- import { jsxs as n, jsx as a } from "react/jsx-runtime";
2
- import { useId as D } from "react";
3
- import e from "./index.esm26.js";
4
- function E({
5
- state: i = "Default",
6
- label: o,
7
- placeholder: p,
1
+ import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
+ import { useId as N, useState as E } from "react";
3
+ import e from "./index.esm27.js";
4
+ function A() {
5
+ return /* @__PURE__ */ t("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
6
+ /* @__PURE__ */ r("path", { d: "M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }),
7
+ /* @__PURE__ */ r("polyline", { points: "22,6 12,13 2,6", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" })
8
+ ] });
9
+ }
10
+ function v() {
11
+ return /* @__PURE__ */ t("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
12
+ /* @__PURE__ */ r("circle", { cx: "11", cy: "11", r: "7", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" }),
13
+ /* @__PURE__ */ r("path", { d: "M16.5 16.5L21 21", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" })
14
+ ] });
15
+ }
16
+ function D() {
17
+ return /* @__PURE__ */ t("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
18
+ /* @__PURE__ */ r("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }),
19
+ /* @__PURE__ */ r("path", { d: "M16 2v4M8 2v4M3 10h18", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" })
20
+ ] });
21
+ }
22
+ function y() {
23
+ return /* @__PURE__ */ t("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
24
+ /* @__PURE__ */ r("rect", { x: "5", y: "11", width: "14", height: "11", rx: "2", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }),
25
+ /* @__PURE__ */ r("path", { d: "M8 11V7a4 4 0 0 1 8 0v4", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" })
26
+ ] });
27
+ }
28
+ function S() {
29
+ return /* @__PURE__ */ t("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
30
+ /* @__PURE__ */ r("path", { d: "M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }),
31
+ /* @__PURE__ */ r("circle", { cx: "12", cy: "12", r: "3", stroke: "currentColor", strokeWidth: "1.75" })
32
+ ] });
33
+ }
34
+ function z() {
35
+ return /* @__PURE__ */ t("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
36
+ /* @__PURE__ */ r("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }),
37
+ /* @__PURE__ */ r("path", { d: "M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }),
38
+ /* @__PURE__ */ r("path", { d: "M1 1l22 22", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" })
39
+ ] });
40
+ }
41
+ function R({
42
+ state: n = "Default",
43
+ inputType: o = "text",
44
+ label: l,
45
+ placeholder: f,
8
46
  message: s,
9
- iconLabel: c,
10
- iconLeft: m,
11
- iconRight: t,
12
- value: h,
13
- onChange: b,
14
- id: u,
15
- className: f,
16
- ...v
47
+ iconLabel: h,
48
+ iconLeft: w,
49
+ iconRight: p,
50
+ value: m,
51
+ onChange: L,
52
+ onSearch: g,
53
+ id: x,
54
+ className: b,
55
+ ...C
17
56
  }) {
18
- const N = D(), r = u ?? N, l = i === "Disabled", d = i === "Error", j = [
57
+ const j = N(), i = x ?? j, [d, I] = E(!1), a = n === "Disabled", c = n === "Error", B = o === "password" ? d ? "text" : "password" : o === "search" ? "text" : o, u = w ?? (o === "email" ? /* @__PURE__ */ r(A, {}) : o === "password" ? /* @__PURE__ */ r(y, {}) : o === "search" ? /* @__PURE__ */ r(v, {}) : void 0), k = p ?? (o === "password" ? /* @__PURE__ */ r(
58
+ "button",
59
+ {
60
+ type: "button",
61
+ className: e.toggleBtn,
62
+ onClick: () => I((M) => !M),
63
+ "aria-label": d ? "Ocultar senha" : "Mostrar senha",
64
+ tabIndex: -1,
65
+ children: d ? /* @__PURE__ */ r(S, {}) : /* @__PURE__ */ r(z, {})
66
+ }
67
+ ) : o === "date" ? /* @__PURE__ */ r(D, {}) : o === "search" ? /* @__PURE__ */ r(
68
+ "button",
69
+ {
70
+ type: "button",
71
+ className: e.searchBtn,
72
+ onClick: g,
73
+ "aria-label": "Buscar",
74
+ tabIndex: -1,
75
+ children: /* @__PURE__ */ r(v, {})
76
+ }
77
+ ) : void 0), W = [
19
78
  e.field,
20
- i === "Hover" ? e.hover : "",
21
- i === "Active" ? e.active : "",
22
- l ? e.disabled : "",
23
- d ? e.error : "",
24
- f
79
+ n === "Hover" ? e.hover : "",
80
+ n === "Active" ? e.active : "",
81
+ a ? e.disabled : "",
82
+ c ? e.error : "",
83
+ b
25
84
  ].filter(Boolean).join(" ");
26
- return /* @__PURE__ */ n("div", { className: e.wrapper, children: [
27
- o && /* @__PURE__ */ n("div", { className: e.labelRow, children: [
28
- /* @__PURE__ */ a(
85
+ return /* @__PURE__ */ t("div", { className: e.wrapper, children: [
86
+ l && /* @__PURE__ */ t("div", { className: e.labelRow, children: [
87
+ /* @__PURE__ */ r(
29
88
  "label",
30
89
  {
31
- htmlFor: r,
32
- className: [e.label, l ? e.labelDisabled : ""].filter(Boolean).join(" "),
33
- children: o
90
+ htmlFor: i,
91
+ className: [e.label, a ? e.labelDisabled : ""].filter(Boolean).join(" "),
92
+ children: l
34
93
  }
35
94
  ),
36
- c && /* @__PURE__ */ a("span", { className: e.labelIcon, "aria-hidden": "true", children: c })
95
+ h && /* @__PURE__ */ r("span", { className: e.labelIcon, "aria-hidden": "true", children: h })
37
96
  ] }),
38
- /* @__PURE__ */ n("div", { className: j, children: [
39
- m && /* @__PURE__ */ a("span", { className: e.icon, "aria-hidden": "true", children: m }),
40
- /* @__PURE__ */ a(
97
+ /* @__PURE__ */ t("div", { className: W, children: [
98
+ u && /* @__PURE__ */ r("span", { className: e.icon, "aria-hidden": "true", children: u }),
99
+ /* @__PURE__ */ r(
41
100
  "input",
42
101
  {
43
- id: r,
102
+ id: i,
103
+ type: B,
44
104
  className: e.input,
45
- placeholder: p,
46
- disabled: l,
47
- value: h,
48
- onChange: b,
49
- "aria-invalid": d,
50
- "aria-describedby": s ? `${r}-message` : void 0,
51
- ...v
105
+ placeholder: f,
106
+ disabled: a,
107
+ value: m,
108
+ onChange: L,
109
+ "aria-invalid": c,
110
+ "aria-describedby": s ? `${i}-message` : void 0,
111
+ ...C
52
112
  }
53
113
  ),
54
- t && /* @__PURE__ */ a("span", { className: e.icon, "aria-hidden": "true", children: t })
114
+ k && /* @__PURE__ */ r("span", { className: [e.icon, o === "search" || o === "password" ? e.iconAction : ""].filter(Boolean).join(" "), children: k })
55
115
  ] }),
56
- s && /* @__PURE__ */ a(
116
+ s && /* @__PURE__ */ r(
57
117
  "p",
58
118
  {
59
- id: `${r}-message`,
60
- className: [e.message, d ? e.messageError : ""].filter(Boolean).join(" "),
119
+ id: `${i}-message`,
120
+ className: [e.message, c ? e.messageError : ""].filter(Boolean).join(" "),
61
121
  children: s
62
122
  }
63
123
  )
64
124
  ] });
65
125
  }
66
126
  export {
67
- E as Input
127
+ R as Input
68
128
  };
69
129
  //# sourceMappingURL=index.esm9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm9.js","sources":["../components/Input/Input.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport styles from './Input.module.css';\n\nexport type InputState = 'Default' | 'Hover' | 'Active' | 'Disabled' | 'Error';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n /** Visual/interaction state. Defaults to 'Default'. */\n state?: InputState;\n /** Label text rendered above the field. */\n label?: string;\n placeholder?: string;\n /** Helper or error message rendered below the field. */\n message?: string;\n /** Info icon rendered beside the label. */\n iconLabel?: React.ReactNode;\n /** Icon rendered inside the field, left side (24×24 slot). */\n iconLeft?: React.ReactNode;\n /** Icon rendered inside the field, right side (24×24 slot). */\n iconRight?: React.ReactNode;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport function Input({\n state = 'Default',\n label,\n placeholder,\n message,\n iconLabel,\n iconLeft,\n iconRight,\n value,\n onChange,\n id: idProp,\n className,\n ...props\n}: InputProps) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n\n const isDisabled = state === 'Disabled';\n const isError = state === 'Error';\n\n const fieldClass = [\n styles.field,\n state === 'Hover' ? styles.hover : '',\n state === 'Active' ? styles.active : '',\n isDisabled ? styles.disabled : '',\n isError ? styles.error : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <div className={styles.labelRow}>\n <label\n htmlFor={id}\n className={[styles.label, isDisabled ? styles.labelDisabled : '']\n .filter(Boolean)\n .join(' ')}\n >\n {label}\n </label>\n {iconLabel && (\n <span className={styles.labelIcon} aria-hidden=\"true\">\n {iconLabel}\n </span>\n )}\n </div>\n )}\n\n <div className={fieldClass}>\n {iconLeft && (\n <span className={styles.icon} aria-hidden=\"true\">\n {iconLeft}\n </span>\n )}\n <input\n id={id}\n className={styles.input}\n placeholder={placeholder}\n disabled={isDisabled}\n value={value}\n onChange={onChange}\n aria-invalid={isError}\n aria-describedby={message ? `${id}-message` : undefined}\n {...props}\n />\n {iconRight && (\n <span className={styles.icon} aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n </div>\n\n {message && (\n <p\n id={`${id}-message`}\n className={[styles.message, isError ? styles.messageError : '']\n .filter(Boolean)\n .join(' ')}\n >\n {message}\n </p>\n )}\n </div>\n );\n}\n"],"names":["Input","state","label","placeholder","message","iconLabel","iconLeft","iconRight","value","onChange","idProp","className","props","generatedId","useId","id","isDisabled","isError","fieldClass","styles","jsxs","jsx"],"mappings":";;;AAwBO,SAASA,EAAM;AAAA,EACpB,OAAAC,IAAQ;AAAA,EACR,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,IAAIC;AAAA,EACJ,WAAAC;AAAA,EACA,GAAGC;AACL,GAAe;AACb,QAAMC,IAAcC,EAAA,GACdC,IAAKL,KAAUG,GAEfG,IAAaf,MAAU,YACvBgB,IAAUhB,MAAU,SAEpBiB,IAAa;AAAA,IACjBC,EAAO;AAAA,IACPlB,MAAU,UAAUkB,EAAO,QAAQ;AAAA,IACnClB,MAAU,WAAWkB,EAAO,SAAS;AAAA,IACrCH,IAAaG,EAAO,WAAW;AAAA,IAC/BF,IAAUE,EAAO,QAAQ;AAAA,IACzBR;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAS,EAAC,OAAA,EAAI,WAAWD,EAAO,SACpB,UAAA;AAAA,IAAAjB,KACC,gBAAAkB,EAAC,OAAA,EAAI,WAAWD,EAAO,UACrB,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASN;AAAA,UACT,WAAW,CAACI,EAAO,OAAOH,IAAaG,EAAO,gBAAgB,EAAE,EAC7D,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,UAEV,UAAAjB;AAAA,QAAA;AAAA,MAAA;AAAA,MAEFG,uBACE,QAAA,EAAK,WAAWc,EAAO,WAAW,eAAY,QAC5C,UAAAd,EAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IAGF,gBAAAe,EAAC,OAAA,EAAI,WAAWF,GACb,UAAA;AAAA,MAAAZ,uBACE,QAAA,EAAK,WAAWa,EAAO,MAAM,eAAY,QACvC,UAAAb,EAAA,CACH;AAAA,MAEF,gBAAAe;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAAN;AAAA,UACA,WAAWI,EAAO;AAAA,UAClB,aAAAhB;AAAA,UACA,UAAUa;AAAA,UACV,OAAAR;AAAA,UACA,UAAAC;AAAA,UACA,gBAAcQ;AAAA,UACd,oBAAkBb,IAAU,GAAGW,CAAE,aAAa;AAAA,UAC7C,GAAGH;AAAA,QAAA;AAAA,MAAA;AAAA,MAELL,uBACE,QAAA,EAAK,WAAWY,EAAO,MAAM,eAAY,QACvC,UAAAZ,EAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IAECH,KACC,gBAAAiB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI,GAAGN,CAAE;AAAA,QACT,WAAW,CAACI,EAAO,SAASF,IAAUE,EAAO,eAAe,EAAE,EAC3D,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QAEV,UAAAf;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"index.esm9.js","sources":["../components/Input/Input.tsx"],"sourcesContent":["import React, { useId, useState } from 'react';\nimport styles from './Input.module.css';\n\nexport type InputState = 'Default' | 'Hover' | 'Active' | 'Disabled' | 'Error';\nexport type InputType = 'text' | 'email' | 'password' | 'search' | 'date';\n\n// ─── Built-in SVG icons ───────────────────────────────────────────────────────\n\nfunction IconEmail() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <polyline points=\"22,6 12,13 2,6\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n );\n}\n\nfunction IconSearch() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\"/>\n <path d=\"M16.5 16.5L21 21\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\"/>\n </svg>\n );\n}\n\nfunction IconCalendar() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M16 2v4M8 2v4M3 10h18\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n );\n}\n\nfunction IconLock() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"5\" y=\"11\" width=\"14\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M8 11V7a4 4 0 0 1 8 0v4\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n );\n}\n\nfunction IconEye() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.75\"/>\n </svg>\n );\n}\n\nfunction IconEyeOff() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M1 1l22 22\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\"/>\n </svg>\n );\n}\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type'> {\n /** Visual/interaction state. Defaults to 'Default'. */\n state?: InputState;\n /**\n * Semantic input type. Sets the correct HTML type and auto-adds icons.\n * - email → envelope icon left\n * - password → lock icon left + show/hide toggle right\n * - search → search icon left + green search button right\n * - date → calendar icon right\n */\n inputType?: InputType;\n /** Label text rendered above the field. */\n label?: string;\n placeholder?: string;\n /** Helper or error message rendered below the field. */\n message?: string;\n /** Info icon rendered beside the label. */\n iconLabel?: React.ReactNode;\n /** Icon rendered inside the field, left side (24×24 slot). */\n iconLeft?: React.ReactNode;\n /** Icon rendered inside the field, right side (24×24 slot). */\n iconRight?: React.ReactNode;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n /** Called when search button is clicked (only for inputType=\"search\") */\n onSearch?: () => void;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function Input({\n state = 'Default',\n inputType = 'text',\n label,\n placeholder,\n message,\n iconLabel,\n iconLeft,\n iconRight,\n value,\n onChange,\n onSearch,\n id: idProp,\n className,\n ...props\n}: InputProps) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const [showPassword, setShowPassword] = useState(false);\n\n const isDisabled = state === 'Disabled';\n const isError = state === 'Error';\n\n // ── Resolve HTML type ──────────────────────────────────────────────────────\n const htmlType = inputType === 'password'\n ? (showPassword ? 'text' : 'password')\n : inputType === 'search'\n ? 'text'\n : inputType;\n\n // ── Resolve built-in icons ─────────────────────────────────────────────────\n const resolvedIconLeft: React.ReactNode =\n iconLeft ??\n (inputType === 'email' ? <IconEmail /> :\n inputType === 'password' ? <IconLock /> :\n inputType === 'search' ? <IconSearch /> :\n undefined);\n\n const resolvedIconRight: React.ReactNode =\n iconRight ??\n (inputType === 'password'\n ? (\n <button\n type=\"button\"\n className={styles.toggleBtn}\n onClick={() => setShowPassword((v) => !v)}\n aria-label={showPassword ? 'Ocultar senha' : 'Mostrar senha'}\n tabIndex={-1}\n >\n {showPassword ? <IconEye /> : <IconEyeOff />}\n </button>\n )\n : inputType === 'date'\n ? <IconCalendar />\n : inputType === 'search'\n ? (\n <button\n type=\"button\"\n className={styles.searchBtn}\n onClick={onSearch}\n aria-label=\"Buscar\"\n tabIndex={-1}\n >\n <IconSearch />\n </button>\n )\n : undefined);\n\n const fieldClass = [\n styles.field,\n state === 'Hover' ? styles.hover : '',\n state === 'Active' ? styles.active : '',\n isDisabled ? styles.disabled : '',\n isError ? styles.error : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <div className={styles.labelRow}>\n <label\n htmlFor={id}\n className={[styles.label, isDisabled ? styles.labelDisabled : '']\n .filter(Boolean)\n .join(' ')}\n >\n {label}\n </label>\n {iconLabel && (\n <span className={styles.labelIcon} aria-hidden=\"true\">\n {iconLabel}\n </span>\n )}\n </div>\n )}\n\n <div className={fieldClass}>\n {resolvedIconLeft && (\n <span className={styles.icon} aria-hidden=\"true\">\n {resolvedIconLeft}\n </span>\n )}\n <input\n id={id}\n type={htmlType}\n className={styles.input}\n placeholder={placeholder}\n disabled={isDisabled}\n value={value}\n onChange={onChange}\n aria-invalid={isError}\n aria-describedby={message ? `${id}-message` : undefined}\n {...props}\n />\n {resolvedIconRight && (\n <span className={[styles.icon, inputType === 'search' || inputType === 'password' ? styles.iconAction : ''].filter(Boolean).join(' ')}>\n {resolvedIconRight}\n </span>\n )}\n </div>\n\n {message && (\n <p\n id={`${id}-message`}\n className={[styles.message, isError ? styles.messageError : '']\n .filter(Boolean)\n .join(' ')}\n >\n {message}\n </p>\n )}\n </div>\n );\n}\n"],"names":["IconEmail","jsxs","jsx","IconSearch","IconCalendar","IconLock","IconEye","IconEyeOff","Input","state","inputType","label","placeholder","message","iconLabel","iconLeft","iconRight","value","onChange","onSearch","idProp","className","props","generatedId","useId","id","showPassword","setShowPassword","useState","isDisabled","isError","htmlType","resolvedIconLeft","resolvedIconRight","styles","v","fieldClass"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeal/ds",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Treeal Design System — React component library with CSS Modules",
5
5
  "license": "MIT",
6
6