analytica-frontend-lib 1.0.21 → 1.0.23

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 (69) hide show
  1. package/dist/Alert/Alert.d.mts +13 -0
  2. package/dist/Alert/Alert.d.ts +13 -0
  3. package/dist/Alert/Alert.js +158 -0
  4. package/dist/Alert/Alert.mjs +85 -0
  5. package/dist/Badge/Badge.d.mts +47 -0
  6. package/dist/Badge/Badge.d.ts +47 -0
  7. package/dist/Badge/Badge.js +117 -0
  8. package/dist/Badge/Badge.mjs +92 -0
  9. package/dist/Button/Button.d.mts +46 -0
  10. package/dist/Button/Button.d.ts +46 -0
  11. package/dist/Button/Button.js +84 -0
  12. package/dist/Button/Button.mjs +59 -0
  13. package/dist/CheckBox/CheckBox.d.mts +74 -0
  14. package/dist/CheckBox/CheckBox.d.ts +74 -0
  15. package/dist/CheckBox/CheckBox.js +264 -0
  16. package/dist/CheckBox/CheckBox.mjs +195 -0
  17. package/dist/DropdownMenu/DropdownMenu.d.mts +29 -0
  18. package/dist/DropdownMenu/DropdownMenu.d.ts +29 -0
  19. package/dist/DropdownMenu/DropdownMenu.js +262 -0
  20. package/dist/DropdownMenu/DropdownMenu.mjs +242 -0
  21. package/dist/IconButton/IconButton.d.mts +77 -0
  22. package/dist/IconButton/IconButton.d.ts +77 -0
  23. package/dist/IconButton/IconButton.js +79 -0
  24. package/dist/IconButton/IconButton.mjs +54 -0
  25. package/dist/IconRoundedButton/IconRoundedButton.d.mts +35 -0
  26. package/dist/IconRoundedButton/IconRoundedButton.d.ts +35 -0
  27. package/dist/IconRoundedButton/IconRoundedButton.js +68 -0
  28. package/dist/IconRoundedButton/IconRoundedButton.mjs +43 -0
  29. package/dist/NavButton/NavButton.d.mts +58 -0
  30. package/dist/NavButton/NavButton.d.ts +58 -0
  31. package/dist/NavButton/NavButton.js +76 -0
  32. package/dist/NavButton/NavButton.mjs +51 -0
  33. package/dist/SelectionButton/SelectionButton.d.mts +58 -0
  34. package/dist/SelectionButton/SelectionButton.d.ts +58 -0
  35. package/dist/SelectionButton/SelectionButton.js +81 -0
  36. package/dist/SelectionButton/SelectionButton.mjs +56 -0
  37. package/dist/Table/Table.d.mts +17 -0
  38. package/dist/Table/Table.d.ts +17 -0
  39. package/dist/Table/Table.js +139 -0
  40. package/dist/Table/Table.mjs +107 -0
  41. package/dist/Text/Text.d.mts +59 -0
  42. package/dist/Text/Text.d.ts +59 -0
  43. package/dist/Text/Text.js +77 -0
  44. package/dist/Text/Text.mjs +6 -0
  45. package/dist/TextArea/TextArea.d.mts +69 -0
  46. package/dist/TextArea/TextArea.d.ts +69 -0
  47. package/dist/TextArea/TextArea.js +211 -0
  48. package/dist/TextArea/TextArea.mjs +142 -0
  49. package/dist/Toast/Toast.d.mts +17 -0
  50. package/dist/Toast/Toast.d.ts +17 -0
  51. package/dist/Toast/Toast.js +100 -0
  52. package/dist/Toast/Toast.mjs +7 -0
  53. package/dist/Toast/utils/ToastStore.d.mts +19 -0
  54. package/dist/Toast/utils/ToastStore.d.ts +19 -0
  55. package/dist/Toast/utils/ToastStore.js +44 -0
  56. package/dist/Toast/utils/ToastStore.mjs +6 -0
  57. package/dist/Toast/utils/Toaster.d.mts +11 -0
  58. package/dist/Toast/utils/Toaster.d.ts +11 -0
  59. package/dist/Toast/utils/Toaster.js +145 -0
  60. package/dist/Toast/utils/Toaster.mjs +35 -0
  61. package/dist/chunk-MI5FIRHM.mjs +75 -0
  62. package/dist/chunk-TT3VCQGR.mjs +53 -0
  63. package/dist/chunk-WIOCQOM7.mjs +20 -0
  64. package/dist/index.css +103 -0
  65. package/dist/index.d.mts +68 -2
  66. package/dist/index.d.ts +68 -2
  67. package/dist/index.js +217 -84
  68. package/dist/index.mjs +215 -79
  69. package/package.json +71 -3
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/components/Toast/utils/Toaster.tsx
22
+ var Toaster_exports = {};
23
+ __export(Toaster_exports, {
24
+ Toaster: () => Toaster,
25
+ useToast: () => useToast
26
+ });
27
+ module.exports = __toCommonJS(Toaster_exports);
28
+
29
+ // src/components/Toast/utils/ToastStore.ts
30
+ var import_zustand = require("zustand");
31
+ var useToastStore = (0, import_zustand.create)((set) => ({
32
+ toasts: [],
33
+ addToast: (toast) => {
34
+ const id = crypto.randomUUID();
35
+ set((state) => ({
36
+ toasts: [...state.toasts, { id, ...toast }]
37
+ }));
38
+ },
39
+ removeToast: (id) => {
40
+ set((state) => ({
41
+ toasts: state.toasts.filter((t) => t.id !== id)
42
+ }));
43
+ }
44
+ }));
45
+
46
+ // src/components/Toast/Toast.tsx
47
+ var import_phosphor_react = require("phosphor-react");
48
+ var import_jsx_runtime = require("react/jsx-runtime");
49
+ var VARIANT_ACTION_CLASSES = {
50
+ solid: {
51
+ warning: "bg-warning text-warning-800 border-none focus-visible:outline-none",
52
+ success: "bg-success text-success-800 border-none focus-visible:outline-none",
53
+ info: "bg-info text-info-800 border-none focus-visible:outline-none"
54
+ },
55
+ outlined: {
56
+ warning: "bg-warning text-warning-800 border border-warning-200 focus-visible:outline-none",
57
+ success: "bg-success text-success-800 border border-success-200 focus-visible:outline-none",
58
+ info: "bg-info text-info-800 border border-info-200 focus-visible:outline-none"
59
+ }
60
+ };
61
+ var iconMap = {
62
+ success: import_phosphor_react.CheckCircle,
63
+ info: import_phosphor_react.Info,
64
+ warning: import_phosphor_react.WarningCircle
65
+ };
66
+ var Toast = ({
67
+ variant = "outlined",
68
+ action = "success",
69
+ className = "",
70
+ onClose,
71
+ title,
72
+ description,
73
+ position = "default",
74
+ ...props
75
+ }) => {
76
+ const variantClasses = VARIANT_ACTION_CLASSES[variant][action];
77
+ const positionClasses = {
78
+ "top-left": "fixed top-4 left-4",
79
+ "top-center": "fixed top-4 left-1/2 transform -translate-x-1/2",
80
+ "top-right": "fixed top-4 right-4",
81
+ "bottom-left": "fixed bottom-4 left-4",
82
+ "bottom-center": "fixed bottom-4 left-1/2 transform -translate-x-1/2",
83
+ "bottom-right": "fixed bottom-4 right-4",
84
+ default: ""
85
+ };
86
+ const IconAction = iconMap[action] || iconMap["success"];
87
+ const baseClasses = "max-w-[390px] w-full flex flex-row items-start justify-between shadow-lg rounded-lg border p-4 gap-6 group";
88
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
89
+ "div",
90
+ {
91
+ role: "alert",
92
+ "aria-live": "assertive",
93
+ "aria-atomic": "true",
94
+ className: `${baseClasses} ${positionClasses[position]} ${variantClasses} ${className}`,
95
+ ...props,
96
+ children: [
97
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-row items-start gap-3", children: [
98
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "mt-1", "data-testid": `toast-icon-${action}`, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconAction, {}) }),
99
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col items-start justify-start", children: [
100
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "font-semibold text-md", children: title }),
101
+ description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-md text-text-900", children: description })
102
+ ] })
103
+ ] }),
104
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
105
+ "button",
106
+ {
107
+ onClick: onClose,
108
+ "aria-label": "Dismiss notification",
109
+ className: "text-background-500 cursor-pointer opacity-0 group-hover:opacity-100 transition-opacity",
110
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_phosphor_react.X, {})
111
+ }
112
+ )
113
+ ]
114
+ }
115
+ );
116
+ };
117
+
118
+ // src/components/Toast/utils/Toaster.tsx
119
+ var import_jsx_runtime2 = require("react/jsx-runtime");
120
+ var Toaster = () => {
121
+ const toasts = useToastStore((state) => state.toasts);
122
+ const removeToast = useToastStore((state) => state.removeToast);
123
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: toasts.map((toast) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
124
+ Toast,
125
+ {
126
+ title: toast.title,
127
+ description: toast.description,
128
+ variant: toast.variant,
129
+ action: toast.action,
130
+ position: toast.position,
131
+ onClose: () => removeToast(toast.id)
132
+ },
133
+ toast.id
134
+ )) });
135
+ };
136
+ var useToast = () => {
137
+ const addToast = useToastStore((state) => state.addToast);
138
+ const removeToast = useToastStore((state) => state.removeToast);
139
+ return { addToast, removeToast };
140
+ };
141
+ // Annotate the CommonJS export names for ESM import in node:
142
+ 0 && (module.exports = {
143
+ Toaster,
144
+ useToast
145
+ });
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import {
3
+ Toast
4
+ } from "../../chunk-MI5FIRHM.mjs";
5
+ import {
6
+ useToastStore
7
+ } from "../../chunk-WIOCQOM7.mjs";
8
+
9
+ // src/components/Toast/utils/Toaster.tsx
10
+ import { Fragment, jsx } from "react/jsx-runtime";
11
+ var Toaster = () => {
12
+ const toasts = useToastStore((state) => state.toasts);
13
+ const removeToast = useToastStore((state) => state.removeToast);
14
+ return /* @__PURE__ */ jsx(Fragment, { children: toasts.map((toast) => /* @__PURE__ */ jsx(
15
+ Toast,
16
+ {
17
+ title: toast.title,
18
+ description: toast.description,
19
+ variant: toast.variant,
20
+ action: toast.action,
21
+ position: toast.position,
22
+ onClose: () => removeToast(toast.id)
23
+ },
24
+ toast.id
25
+ )) });
26
+ };
27
+ var useToast = () => {
28
+ const addToast = useToastStore((state) => state.addToast);
29
+ const removeToast = useToastStore((state) => state.removeToast);
30
+ return { addToast, removeToast };
31
+ };
32
+ export {
33
+ Toaster,
34
+ useToast
35
+ };
@@ -0,0 +1,75 @@
1
+ // src/components/Toast/Toast.tsx
2
+ import { CheckCircle, WarningCircle, Info, X } from "phosphor-react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ var VARIANT_ACTION_CLASSES = {
5
+ solid: {
6
+ warning: "bg-warning text-warning-800 border-none focus-visible:outline-none",
7
+ success: "bg-success text-success-800 border-none focus-visible:outline-none",
8
+ info: "bg-info text-info-800 border-none focus-visible:outline-none"
9
+ },
10
+ outlined: {
11
+ warning: "bg-warning text-warning-800 border border-warning-200 focus-visible:outline-none",
12
+ success: "bg-success text-success-800 border border-success-200 focus-visible:outline-none",
13
+ info: "bg-info text-info-800 border border-info-200 focus-visible:outline-none"
14
+ }
15
+ };
16
+ var iconMap = {
17
+ success: CheckCircle,
18
+ info: Info,
19
+ warning: WarningCircle
20
+ };
21
+ var Toast = ({
22
+ variant = "outlined",
23
+ action = "success",
24
+ className = "",
25
+ onClose,
26
+ title,
27
+ description,
28
+ position = "default",
29
+ ...props
30
+ }) => {
31
+ const variantClasses = VARIANT_ACTION_CLASSES[variant][action];
32
+ const positionClasses = {
33
+ "top-left": "fixed top-4 left-4",
34
+ "top-center": "fixed top-4 left-1/2 transform -translate-x-1/2",
35
+ "top-right": "fixed top-4 right-4",
36
+ "bottom-left": "fixed bottom-4 left-4",
37
+ "bottom-center": "fixed bottom-4 left-1/2 transform -translate-x-1/2",
38
+ "bottom-right": "fixed bottom-4 right-4",
39
+ default: ""
40
+ };
41
+ const IconAction = iconMap[action] || iconMap["success"];
42
+ const baseClasses = "max-w-[390px] w-full flex flex-row items-start justify-between shadow-lg rounded-lg border p-4 gap-6 group";
43
+ return /* @__PURE__ */ jsxs(
44
+ "div",
45
+ {
46
+ role: "alert",
47
+ "aria-live": "assertive",
48
+ "aria-atomic": "true",
49
+ className: `${baseClasses} ${positionClasses[position]} ${variantClasses} ${className}`,
50
+ ...props,
51
+ children: [
52
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-start gap-3", children: [
53
+ /* @__PURE__ */ jsx("span", { className: "mt-1", "data-testid": `toast-icon-${action}`, children: /* @__PURE__ */ jsx(IconAction, {}) }),
54
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start justify-start", children: [
55
+ /* @__PURE__ */ jsx("p", { className: "font-semibold text-md", children: title }),
56
+ description && /* @__PURE__ */ jsx("p", { className: "text-md text-text-900", children: description })
57
+ ] })
58
+ ] }),
59
+ /* @__PURE__ */ jsx(
60
+ "button",
61
+ {
62
+ onClick: onClose,
63
+ "aria-label": "Dismiss notification",
64
+ className: "text-background-500 cursor-pointer opacity-0 group-hover:opacity-100 transition-opacity",
65
+ children: /* @__PURE__ */ jsx(X, {})
66
+ }
67
+ )
68
+ ]
69
+ }
70
+ );
71
+ };
72
+
73
+ export {
74
+ Toast
75
+ };
@@ -0,0 +1,53 @@
1
+ // src/components/Text/Text.tsx
2
+ import { jsx } from "react/jsx-runtime";
3
+ var Text = ({
4
+ children,
5
+ size = "md",
6
+ weight = "normal",
7
+ color = "text-text-950",
8
+ as,
9
+ className = "",
10
+ ...props
11
+ }) => {
12
+ let sizeClasses = "";
13
+ let weightClasses = "";
14
+ const sizeClassMap = {
15
+ "2xs": "text-2xs",
16
+ xs: "text-xs",
17
+ sm: "text-sm",
18
+ md: "text-md",
19
+ lg: "text-lg",
20
+ xl: "text-xl",
21
+ "2xl": "text-2xl",
22
+ "3xl": "text-3xl",
23
+ "4xl": "text-4xl",
24
+ "5xl": "text-5xl",
25
+ "6xl": "text-6xl"
26
+ };
27
+ sizeClasses = sizeClassMap[size] ?? sizeClassMap.md;
28
+ const weightClassMap = {
29
+ hairline: "font-hairline",
30
+ light: "font-light",
31
+ normal: "font-normal",
32
+ medium: "font-medium",
33
+ semibold: "font-semibold",
34
+ bold: "font-bold",
35
+ extrabold: "font-extrabold",
36
+ black: "font-black"
37
+ };
38
+ weightClasses = weightClassMap[weight] ?? weightClassMap.normal;
39
+ const baseClasses = "font-primary";
40
+ const Component = as ?? "p";
41
+ return /* @__PURE__ */ jsx(
42
+ Component,
43
+ {
44
+ className: `${baseClasses} ${sizeClasses} ${weightClasses} ${color} ${className}`,
45
+ ...props,
46
+ children
47
+ }
48
+ );
49
+ };
50
+
51
+ export {
52
+ Text
53
+ };
@@ -0,0 +1,20 @@
1
+ // src/components/Toast/utils/ToastStore.ts
2
+ import { create } from "zustand";
3
+ var useToastStore = create((set) => ({
4
+ toasts: [],
5
+ addToast: (toast) => {
6
+ const id = crypto.randomUUID();
7
+ set((state) => ({
8
+ toasts: [...state.toasts, { id, ...toast }]
9
+ }));
10
+ },
11
+ removeToast: (id) => {
12
+ set((state) => ({
13
+ toasts: state.toasts.filter((t) => t.id !== id)
14
+ }));
15
+ }
16
+ }));
17
+
18
+ export {
19
+ useToastStore
20
+ };
package/dist/index.css CHANGED
@@ -22,8 +22,12 @@
22
22
  "Liberation Mono",
23
23
  "Courier New",
24
24
  monospace;
25
+ --color-red-700: oklch(50.5% 0.213 27.518);
26
+ --color-gray-800: oklch(27.8% 0.033 256.848);
25
27
  --color-white: #fff;
26
28
  --spacing: 0.25rem;
29
+ --container-md: 28rem;
30
+ --container-4xl: 56rem;
27
31
  --text-xs: 0.75rem;
28
32
  --text-xs--line-height: calc(1 / 0.75);
29
33
  --text-sm: 0.875rem;
@@ -433,6 +437,9 @@
433
437
  .mb-0\.5 {
434
438
  margin-bottom: calc(var(--spacing) * 0.5);
435
439
  }
440
+ .mb-1\.5 {
441
+ margin-bottom: calc(var(--spacing) * 1.5);
442
+ }
436
443
  .mb-2 {
437
444
  margin-bottom: calc(var(--spacing) * 2);
438
445
  }
@@ -451,6 +458,9 @@
451
458
  .ml-2 {
452
459
  margin-left: calc(var(--spacing) * 2);
453
460
  }
461
+ .box-border {
462
+ box-sizing: border-box;
463
+ }
454
464
  .block {
455
465
  display: block;
456
466
  }
@@ -496,6 +506,9 @@
496
506
  .h-10 {
497
507
  height: calc(var(--spacing) * 10);
498
508
  }
509
+ .h-24 {
510
+ height: calc(var(--spacing) * 24);
511
+ }
499
512
  .h-\[21px\] {
500
513
  height: 21px;
501
514
  }
@@ -523,15 +536,24 @@
523
536
  .w-10 {
524
537
  width: calc(var(--spacing) * 10);
525
538
  }
539
+ .w-72 {
540
+ width: calc(var(--spacing) * 72);
541
+ }
526
542
  .w-\[384px\] {
527
543
  width: 384px;
528
544
  }
529
545
  .w-full {
530
546
  width: 100%;
531
547
  }
548
+ .max-w-4xl {
549
+ max-width: var(--container-4xl);
550
+ }
532
551
  .max-w-\[390px\] {
533
552
  max-width: 390px;
534
553
  }
554
+ .max-w-md {
555
+ max-width: var(--container-md);
556
+ }
535
557
  .min-w-\[210px\] {
536
558
  min-width: 210px;
537
559
  }
@@ -551,6 +573,9 @@
551
573
  .cursor-pointer {
552
574
  cursor: pointer;
553
575
  }
576
+ .resize-none {
577
+ resize: none;
578
+ }
554
579
  .grid-cols-2 {
555
580
  grid-template-columns: repeat(2, minmax(0, 1fr));
556
581
  }
@@ -611,6 +636,9 @@
611
636
  .rounded {
612
637
  border-radius: 0.25rem;
613
638
  }
639
+ .rounded-\[4px\] {
640
+ border-radius: 4px;
641
+ }
614
642
  .rounded-full {
615
643
  border-radius: calc(infinity * 1px);
616
644
  }
@@ -657,6 +685,10 @@
657
685
  --tw-border-style: none;
658
686
  border-style: none;
659
687
  }
688
+ .border-solid {
689
+ --tw-border-style: solid;
690
+ border-style: solid;
691
+ }
660
692
  .border-background-200 {
661
693
  border-color: var(--color-background-200);
662
694
  }
@@ -711,6 +743,9 @@
711
743
  .border-primary-950 {
712
744
  border-color: var(--color-primary-950);
713
745
  }
746
+ .border-red-700 {
747
+ border-color: var(--color-red-700);
748
+ }
714
749
  .border-success-200 {
715
750
  border-color: var(--color-success-200);
716
751
  }
@@ -792,6 +827,9 @@
792
827
  .bg-warning {
793
828
  background-color: var(--color-warning);
794
829
  }
830
+ .bg-white {
831
+ background-color: var(--color-white);
832
+ }
795
833
  .p-1 {
796
834
  padding: calc(var(--spacing) * 1);
797
835
  }
@@ -966,6 +1004,9 @@
966
1004
  .text-error-800 {
967
1005
  color: var(--color-error-800);
968
1006
  }
1007
+ .text-gray-800 {
1008
+ color: var(--color-gray-800);
1009
+ }
969
1010
  .text-info-200 {
970
1011
  color: var(--color-info-200);
971
1012
  }
@@ -1100,6 +1141,10 @@
1100
1141
  outline-style: var(--tw-outline-style);
1101
1142
  outline-width: 1px;
1102
1143
  }
1144
+ .blur {
1145
+ --tw-blur: blur(8px);
1146
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1147
+ }
1103
1148
  .transition-all {
1104
1149
  transition-property: all;
1105
1150
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -1145,6 +1190,21 @@
1145
1190
  }
1146
1191
  }
1147
1192
  }
1193
+ .placeholder\:text-text-600 {
1194
+ &::-moz-placeholder {
1195
+ color: var(--color-text-600);
1196
+ }
1197
+ &::placeholder {
1198
+ color: var(--color-text-600);
1199
+ }
1200
+ }
1201
+ .hover\:border-border-400 {
1202
+ &:hover {
1203
+ @media (hover: hover) {
1204
+ border-color: var(--color-border-400);
1205
+ }
1206
+ }
1207
+ }
1148
1208
  .hover\:border-border-500 {
1149
1209
  &:hover {
1150
1210
  @media (hover: hover) {
@@ -1180,6 +1240,13 @@
1180
1240
  }
1181
1241
  }
1182
1242
  }
1243
+ .hover\:border-red-700 {
1244
+ &:hover {
1245
+ @media (hover: hover) {
1246
+ border-color: var(--color-red-700);
1247
+ }
1248
+ }
1249
+ }
1183
1250
  .hover\:border-success-400 {
1184
1251
  &:hover {
1185
1252
  @media (hover: hover) {
@@ -1291,6 +1358,16 @@
1291
1358
  }
1292
1359
  }
1293
1360
  }
1361
+ .focus\:border-border-500 {
1362
+ &:focus {
1363
+ border-color: var(--color-border-500);
1364
+ }
1365
+ }
1366
+ .focus\:border-red-700 {
1367
+ &:focus {
1368
+ border-color: var(--color-red-700);
1369
+ }
1370
+ }
1294
1371
  .focus\:outline-none {
1295
1372
  &:focus {
1296
1373
  --tw-outline-style: none;
@@ -1909,6 +1986,19 @@
1909
1986
  @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }
1910
1987
  @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1911
1988
  @property --tw-outline-style { syntax: "*"; inherits: false; initial-value: solid; }
1989
+ @property --tw-blur { syntax: "*"; inherits: false; }
1990
+ @property --tw-brightness { syntax: "*"; inherits: false; }
1991
+ @property --tw-contrast { syntax: "*"; inherits: false; }
1992
+ @property --tw-grayscale { syntax: "*"; inherits: false; }
1993
+ @property --tw-hue-rotate { syntax: "*"; inherits: false; }
1994
+ @property --tw-invert { syntax: "*"; inherits: false; }
1995
+ @property --tw-opacity { syntax: "*"; inherits: false; }
1996
+ @property --tw-saturate { syntax: "*"; inherits: false; }
1997
+ @property --tw-sepia { syntax: "*"; inherits: false; }
1998
+ @property --tw-drop-shadow { syntax: "*"; inherits: false; }
1999
+ @property --tw-drop-shadow-color { syntax: "*"; inherits: false; }
2000
+ @property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
2001
+ @property --tw-drop-shadow-size { syntax: "*"; inherits: false; }
1912
2002
  @property --tw-duration { syntax: "*"; inherits: false; }
1913
2003
  @layer properties {
1914
2004
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
@@ -1942,6 +2032,19 @@
1942
2032
  --tw-ring-offset-color: #fff;
1943
2033
  --tw-ring-offset-shadow: 0 0 #0000;
1944
2034
  --tw-outline-style: solid;
2035
+ --tw-blur: initial;
2036
+ --tw-brightness: initial;
2037
+ --tw-contrast: initial;
2038
+ --tw-grayscale: initial;
2039
+ --tw-hue-rotate: initial;
2040
+ --tw-invert: initial;
2041
+ --tw-opacity: initial;
2042
+ --tw-saturate: initial;
2043
+ --tw-sepia: initial;
2044
+ --tw-drop-shadow: initial;
2045
+ --tw-drop-shadow-color: initial;
2046
+ --tw-drop-shadow-alpha: 100%;
2047
+ --tw-drop-shadow-size: initial;
1945
2048
  --tw-duration: initial;
1946
2049
  }
1947
2050
  }
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ReactNode, ButtonHTMLAttributes, ElementType, ComponentPropsWithoutRef, HTMLAttributes, InputHTMLAttributes, TdHTMLAttributes } from 'react';
3
+ import react__default, { ReactNode, ButtonHTMLAttributes, ElementType, ComponentPropsWithoutRef, TextareaHTMLAttributes, HTMLAttributes, InputHTMLAttributes, TdHTMLAttributes } from 'react';
4
4
  import * as zustand from 'zustand';
5
5
 
6
6
  /**
@@ -185,6 +185,72 @@ type TextProps<T extends ElementType = 'p'> = BaseTextProps & {
185
185
  */
186
186
  declare const Text: <T extends ElementType = "p">({ children, size, weight, color, as, className, ...props }: TextProps<T>) => react_jsx_runtime.JSX.Element;
187
187
 
188
+ /**
189
+ * TextArea size variants
190
+ */
191
+ type TextAreaSize = 'small' | 'medium' | 'large' | 'extraLarge';
192
+ /**
193
+ * TextArea visual state
194
+ */
195
+ type TextAreaState = 'default' | 'hovered' | 'focused' | 'invalid' | 'disabled';
196
+ /**
197
+ * TextArea component props interface
198
+ */
199
+ type TextAreaProps = {
200
+ /** Label text to display above the textarea */
201
+ label?: ReactNode;
202
+ /** Size variant of the textarea */
203
+ size?: TextAreaSize;
204
+ /** Visual state of the textarea */
205
+ state?: TextAreaState;
206
+ /** Error message to display */
207
+ errorMessage?: string;
208
+ /** Helper text to display */
209
+ helperMessage?: string;
210
+ /** Additional CSS classes */
211
+ className?: string;
212
+ /** Label CSS classes */
213
+ labelClassName?: string;
214
+ } & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>;
215
+ /**
216
+ * TextArea component for Analytica Ensino platforms
217
+ *
218
+ * A textarea component with essential states, sizes and themes.
219
+ * Uses exact design specifications with 288px width, 96px height, and specific
220
+ * color values. Includes Text component integration for consistent typography.
221
+ *
222
+ * @example
223
+ * ```tsx
224
+ * // Basic textarea
225
+ * <TextArea label="Description" placeholder="Enter description..." />
226
+ *
227
+ * // Small size
228
+ * <TextArea size="small" label="Comment" />
229
+ *
230
+ * // Invalid state
231
+ * <TextArea state="invalid" label="Required field" errorMessage="This field is required" />
232
+ *
233
+ * // Disabled state
234
+ * <TextArea disabled label="Read-only field" />
235
+ * ```
236
+ */
237
+ declare const TextArea: react__default.ForwardRefExoticComponent<{
238
+ /** Label text to display above the textarea */
239
+ label?: ReactNode;
240
+ /** Size variant of the textarea */
241
+ size?: TextAreaSize;
242
+ /** Visual state of the textarea */
243
+ state?: TextAreaState;
244
+ /** Error message to display */
245
+ errorMessage?: string;
246
+ /** Helper text to display */
247
+ helperMessage?: string;
248
+ /** Additional CSS classes */
249
+ className?: string;
250
+ /** Label CSS classes */
251
+ labelClassName?: string;
252
+ } & Omit<react__default.TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> & react__default.RefAttributes<HTMLTextAreaElement>>;
253
+
188
254
  /**
189
255
  * Badge component props interface
190
256
  */
@@ -497,4 +563,4 @@ declare const useToast: () => {
497
563
  removeToast: (id: string) => void;
498
564
  };
499
565
 
500
- export { Badge, Button, CheckBox, type CheckBoxProps, DropdownMenu, DropdownMenuTrigger, IconButton, type IconButtonProps, IconRoundedButton, MenuContent, MenuItem, MenuLabel, MenuSeparator, NavButton, SelectionButton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Text, Toast, type ToastData, Toaster, useToast, useToastStore };
566
+ export { Badge, Button, CheckBox, type CheckBoxProps, DropdownMenu, DropdownMenuTrigger, IconButton, type IconButtonProps, IconRoundedButton, MenuContent, MenuItem, MenuLabel, MenuSeparator, NavButton, SelectionButton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Text, TextArea, type TextAreaProps, Toast, type ToastData, Toaster, useToast, useToastStore };