@treeal/ds 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/dist/assets/style.css +1 -0
- package/dist/components/Alert/Alert.d.ts +19 -0
- package/dist/components/Alert/Alert.d.ts.map +1 -0
- package/dist/components/Alert/index.d.ts +3 -0
- package/dist/components/Alert/index.d.ts.map +1 -0
- package/dist/components/BaseCheckRadio/BaseCheckRadio.d.ts +14 -0
- package/dist/components/BaseCheckRadio/BaseCheckRadio.d.ts.map +1 -0
- package/dist/components/BaseCheckRadio/index.d.ts +3 -0
- package/dist/components/BaseCheckRadio/index.d.ts.map +1 -0
- package/dist/components/Button/Button.d.ts +21 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Header/Header.d.ts +28 -0
- package/dist/components/Header/Header.d.ts.map +1 -0
- package/dist/components/Header/index.d.ts +3 -0
- package/dist/components/Header/index.d.ts.map +1 -0
- package/dist/components/Input/Input.d.ts +21 -0
- package/dist/components/Input/Input.d.ts.map +1 -0
- package/dist/components/Input/index.d.ts +3 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Modal/Modal.d.ts +17 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Nav/Nav.d.ts +48 -0
- package/dist/components/Nav/Nav.d.ts.map +1 -0
- package/dist/components/Nav/index.d.ts +3 -0
- package/dist/components/Nav/index.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +14 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Steps/Steps.d.ts +14 -0
- package/dist/components/Steps/Steps.d.ts.map +1 -0
- package/dist/components/Steps/index.d.ts +3 -0
- package/dist/components/Steps/index.d.ts.map +1 -0
- package/dist/components/Upload/Upload.d.ts +33 -0
- package/dist/components/Upload/Upload.d.ts.map +1 -0
- package/dist/components/Upload/index.d.ts +3 -0
- package/dist/components/Upload/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +25 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.cjs10.js +2 -0
- package/dist/index.cjs10.js.map +1 -0
- package/dist/index.cjs11.js +2 -0
- package/dist/index.cjs11.js.map +1 -0
- package/dist/index.cjs12.js +2 -0
- package/dist/index.cjs12.js.map +1 -0
- package/dist/index.cjs13.js +2 -0
- package/dist/index.cjs13.js.map +1 -0
- package/dist/index.cjs14.js +2 -0
- package/dist/index.cjs14.js.map +1 -0
- package/dist/index.cjs15.js +2 -0
- package/dist/index.cjs15.js.map +1 -0
- package/dist/index.cjs16.js +2 -0
- package/dist/index.cjs16.js.map +1 -0
- package/dist/index.cjs17.js +2 -0
- package/dist/index.cjs17.js.map +1 -0
- package/dist/index.cjs18.js +2 -0
- package/dist/index.cjs18.js.map +1 -0
- package/dist/index.cjs19.js +2 -0
- package/dist/index.cjs19.js.map +1 -0
- package/dist/index.cjs2.js +2 -0
- package/dist/index.cjs2.js.map +1 -0
- package/dist/index.cjs20.js +2 -0
- package/dist/index.cjs20.js.map +1 -0
- package/dist/index.cjs21.js +2 -0
- package/dist/index.cjs21.js.map +1 -0
- package/dist/index.cjs22.js +2 -0
- package/dist/index.cjs22.js.map +1 -0
- package/dist/index.cjs23.js +2 -0
- package/dist/index.cjs23.js.map +1 -0
- package/dist/index.cjs3.js +2 -0
- package/dist/index.cjs3.js.map +1 -0
- package/dist/index.cjs4.js +2 -0
- package/dist/index.cjs4.js.map +1 -0
- package/dist/index.cjs5.js +2 -0
- package/dist/index.cjs5.js.map +1 -0
- package/dist/index.cjs6.js +2 -0
- package/dist/index.cjs6.js.map +1 -0
- package/dist/index.cjs7.js +2 -0
- package/dist/index.cjs7.js.map +1 -0
- package/dist/index.cjs8.js +2 -0
- package/dist/index.cjs8.js.map +1 -0
- package/dist/index.cjs9.js +2 -0
- package/dist/index.cjs9.js.map +1 -0
- package/dist/index.esm.js +27 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.esm10.js +238 -0
- package/dist/index.esm10.js.map +1 -0
- package/dist/index.esm11.js +177 -0
- package/dist/index.esm11.js.map +1 -0
- package/dist/index.esm12.js +93 -0
- package/dist/index.esm12.js.map +1 -0
- package/dist/index.esm13.js +222 -0
- package/dist/index.esm13.js.map +1 -0
- package/dist/index.esm14.js +26 -0
- package/dist/index.esm14.js.map +1 -0
- package/dist/index.esm15.js +34 -0
- package/dist/index.esm15.js.map +1 -0
- package/dist/index.esm16.js +64 -0
- package/dist/index.esm16.js.map +1 -0
- package/dist/index.esm17.js +64 -0
- package/dist/index.esm17.js.map +1 -0
- package/dist/index.esm18.js +42 -0
- package/dist/index.esm18.js.map +1 -0
- package/dist/index.esm19.js +26 -0
- package/dist/index.esm19.js.map +1 -0
- package/dist/index.esm2.js +98 -0
- package/dist/index.esm2.js.map +1 -0
- package/dist/index.esm20.js +24 -0
- package/dist/index.esm20.js.map +1 -0
- package/dist/index.esm21.js +52 -0
- package/dist/index.esm21.js.map +1 -0
- package/dist/index.esm22.js +26 -0
- package/dist/index.esm22.js.map +1 -0
- package/dist/index.esm23.js +106 -0
- package/dist/index.esm23.js.map +1 -0
- package/dist/index.esm3.js +62 -0
- package/dist/index.esm3.js.map +1 -0
- package/dist/index.esm4.js +115 -0
- package/dist/index.esm4.js.map +1 -0
- package/dist/index.esm5.js +69 -0
- package/dist/index.esm5.js.map +1 -0
- package/dist/index.esm6.js +37 -0
- package/dist/index.esm6.js.map +1 -0
- package/dist/index.esm7.js +182 -0
- package/dist/index.esm7.js.map +1 -0
- package/dist/index.esm8.js +69 -0
- package/dist/index.esm8.js.map +1 -0
- package/dist/index.esm9.js +78 -0
- package/dist/index.esm9.js.map +1 -0
- package/dist/tokens/colors.d.ts +122 -0
- package/dist/tokens/colors.d.ts.map +1 -0
- package/dist/tokens/index.d.ts +5 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/typography.d.ts +66 -0
- package/dist/tokens/typography.d.ts.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { jsxs as i, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import e from "./index.esm17.js";
|
|
3
|
+
function b() {
|
|
4
|
+
return /* @__PURE__ */ i("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
|
|
5
|
+
/* @__PURE__ */ n("path", { d: "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" }),
|
|
6
|
+
/* @__PURE__ */ n("path", { d: "M13.73 21a2 2 0 0 1-3.46 0" })
|
|
7
|
+
] });
|
|
8
|
+
}
|
|
9
|
+
function x() {
|
|
10
|
+
return /* @__PURE__ */ i("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", "aria-hidden": "true", children: [
|
|
11
|
+
/* @__PURE__ */ n("line", { x1: "4", y1: "6", x2: "20", y2: "6" }),
|
|
12
|
+
/* @__PURE__ */ n("line", { x1: "4", y1: "12", x2: "20", y2: "12" }),
|
|
13
|
+
/* @__PURE__ */ n("line", { x1: "4", y1: "18", x2: "20", y2: "18" })
|
|
14
|
+
] });
|
|
15
|
+
}
|
|
16
|
+
function C() {
|
|
17
|
+
return /* @__PURE__ */ n("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M4 6l4 4 4-4" }) });
|
|
18
|
+
}
|
|
19
|
+
function k({
|
|
20
|
+
workspaceName: a = "Workspace",
|
|
21
|
+
workspaceAccount: l = "Conta Atual",
|
|
22
|
+
fullWidth: t = !1
|
|
23
|
+
}) {
|
|
24
|
+
return /* @__PURE__ */ i(
|
|
25
|
+
"button",
|
|
26
|
+
{
|
|
27
|
+
type: "button",
|
|
28
|
+
className: [e.workspace, t ? e.workspaceFull : ""].filter(Boolean).join(" "),
|
|
29
|
+
"aria-label": `Trocar workspace: ${a}`,
|
|
30
|
+
children: [
|
|
31
|
+
/* @__PURE__ */ i("div", { className: e.workspaceLeft, children: [
|
|
32
|
+
/* @__PURE__ */ n("span", { className: e.statusDot, "aria-hidden": "true" }),
|
|
33
|
+
/* @__PURE__ */ i("div", { className: e.workspaceCol, children: [
|
|
34
|
+
/* @__PURE__ */ n("p", { className: e.workspaceAccount, children: l }),
|
|
35
|
+
/* @__PURE__ */ n("p", { className: e.workspaceName, children: a })
|
|
36
|
+
] })
|
|
37
|
+
] }),
|
|
38
|
+
/* @__PURE__ */ n("span", { className: e.workspaceArrow, children: /* @__PURE__ */ n(C, {}) })
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
function f({
|
|
44
|
+
userName: a,
|
|
45
|
+
userRole: l,
|
|
46
|
+
userAvatar: t
|
|
47
|
+
}) {
|
|
48
|
+
const o = a ? a.split(" ").slice(0, 2).map((s) => s[0]).join("").toUpperCase() : "?";
|
|
49
|
+
return /* @__PURE__ */ i("div", { className: e.navUser, children: [
|
|
50
|
+
/* @__PURE__ */ n("div", { className: e.avatar, children: t ? /* @__PURE__ */ n(
|
|
51
|
+
"img",
|
|
52
|
+
{
|
|
53
|
+
src: t,
|
|
54
|
+
alt: a ?? "Avatar",
|
|
55
|
+
className: e.avatarImg
|
|
56
|
+
}
|
|
57
|
+
) : /* @__PURE__ */ n("span", { className: e.avatarInitials, children: o }) }),
|
|
58
|
+
(a || l) && /* @__PURE__ */ i("div", { className: e.userText, children: [
|
|
59
|
+
a && /* @__PURE__ */ n("p", { className: e.userName, children: a }),
|
|
60
|
+
l && /* @__PURE__ */ n("p", { className: e.userRole, children: l })
|
|
61
|
+
] })
|
|
62
|
+
] });
|
|
63
|
+
}
|
|
64
|
+
function y({
|
|
65
|
+
variant: a = "Default",
|
|
66
|
+
pageTitle: l = "Portal de Gestão",
|
|
67
|
+
workspaceName: t,
|
|
68
|
+
workspaceAccount: o,
|
|
69
|
+
userName: s,
|
|
70
|
+
userRole: h,
|
|
71
|
+
userAvatar: p,
|
|
72
|
+
onMenuToggle: v,
|
|
73
|
+
onNotifications: u,
|
|
74
|
+
primaryAction: r,
|
|
75
|
+
className: N
|
|
76
|
+
}) {
|
|
77
|
+
const c = a === "Default", m = a === "Mobile", d = a === "MobileOpen", w = [
|
|
78
|
+
e.header,
|
|
79
|
+
c ? e.variantDefault : "",
|
|
80
|
+
m ? e.variantMobile : "",
|
|
81
|
+
d ? e.variantMobileOpen : "",
|
|
82
|
+
N
|
|
83
|
+
].filter(Boolean).join(" ");
|
|
84
|
+
return /* @__PURE__ */ i("header", { className: w, children: [
|
|
85
|
+
!d && /* @__PURE__ */ n(
|
|
86
|
+
"h1",
|
|
87
|
+
{
|
|
88
|
+
className: [
|
|
89
|
+
e.pageTitle,
|
|
90
|
+
c ? e.pageTitleDesktop : e.pageTitleMobile
|
|
91
|
+
].join(" "),
|
|
92
|
+
children: l
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
c && /* @__PURE__ */ i("div", { className: e.actions, children: [
|
|
96
|
+
/* @__PURE__ */ n(
|
|
97
|
+
k,
|
|
98
|
+
{
|
|
99
|
+
workspaceName: t,
|
|
100
|
+
workspaceAccount: o
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
/* @__PURE__ */ n(
|
|
104
|
+
"button",
|
|
105
|
+
{
|
|
106
|
+
type: "button",
|
|
107
|
+
className: e.bellBtn,
|
|
108
|
+
onClick: u,
|
|
109
|
+
"aria-label": "Notificações",
|
|
110
|
+
children: /* @__PURE__ */ n(b, {})
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
/* @__PURE__ */ n(
|
|
114
|
+
f,
|
|
115
|
+
{
|
|
116
|
+
userName: s,
|
|
117
|
+
userRole: h,
|
|
118
|
+
userAvatar: p
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
] }),
|
|
122
|
+
m && /* @__PURE__ */ i("div", { className: e.actions, children: [
|
|
123
|
+
/* @__PURE__ */ n(
|
|
124
|
+
"button",
|
|
125
|
+
{
|
|
126
|
+
type: "button",
|
|
127
|
+
className: e.bellBtn,
|
|
128
|
+
onClick: u,
|
|
129
|
+
"aria-label": "Notificações",
|
|
130
|
+
children: /* @__PURE__ */ n(b, {})
|
|
131
|
+
}
|
|
132
|
+
),
|
|
133
|
+
/* @__PURE__ */ i(
|
|
134
|
+
"button",
|
|
135
|
+
{
|
|
136
|
+
type: "button",
|
|
137
|
+
className: e.menuBtn,
|
|
138
|
+
onClick: v,
|
|
139
|
+
"aria-label": "Abrir menu",
|
|
140
|
+
"aria-expanded": !1,
|
|
141
|
+
children: [
|
|
142
|
+
/* @__PURE__ */ n("span", { className: e.menuIcon, children: /* @__PURE__ */ n(x, {}) }),
|
|
143
|
+
"Menu"
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
] }),
|
|
148
|
+
d && /* @__PURE__ */ i("div", { className: [e.actions, e.actionsMobileOpen].join(" "), children: [
|
|
149
|
+
r && /* @__PURE__ */ n(
|
|
150
|
+
"button",
|
|
151
|
+
{
|
|
152
|
+
type: "button",
|
|
153
|
+
className: e.ctaBtn,
|
|
154
|
+
onClick: r.onClick,
|
|
155
|
+
children: r.label
|
|
156
|
+
}
|
|
157
|
+
),
|
|
158
|
+
/* @__PURE__ */ i("div", { className: e.mainActions, children: [
|
|
159
|
+
/* @__PURE__ */ n(
|
|
160
|
+
k,
|
|
161
|
+
{
|
|
162
|
+
workspaceName: t,
|
|
163
|
+
workspaceAccount: o,
|
|
164
|
+
fullWidth: !0
|
|
165
|
+
}
|
|
166
|
+
),
|
|
167
|
+
/* @__PURE__ */ n(
|
|
168
|
+
f,
|
|
169
|
+
{
|
|
170
|
+
userName: s,
|
|
171
|
+
userRole: h,
|
|
172
|
+
userAvatar: p
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
] })
|
|
176
|
+
] })
|
|
177
|
+
] });
|
|
178
|
+
}
|
|
179
|
+
export {
|
|
180
|
+
y as Header
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=index.esm7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm7.js","sources":["../components/Header/Header.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Header.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type HeaderVariant = 'Default' | 'Mobile' | 'MobileOpen';\n\nexport interface HeaderProps {\n variant?: HeaderVariant;\n /** Page / section title shown on the left */\n pageTitle?: string;\n /** Workspace display name (e.g. \"Best Buy Eletronics\") */\n workspaceName?: string;\n /** Workspace account label (defaults to \"Conta Atual\") */\n workspaceAccount?: string;\n /** Logged-in user display name */\n userName?: string;\n /** Logged-in user role / subtitle */\n userRole?: string;\n /** Avatar image URL — falls back to initials */\n userAvatar?: string;\n /** Called when the Mobile hamburger \"Menu\" button is clicked */\n onMenuToggle?: () => void;\n /** Called when the bell notification button is clicked */\n onNotifications?: () => void;\n /** Primary CTA in MobileOpen expanded panel */\n primaryAction?: { label: string; onClick: () => void };\n className?: string;\n}\n\n// ─── Inline SVG icons ─────────────────────────────────────────────────────────\n\nfunction IconBell() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n );\n}\n\nfunction IconMenu() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" aria-hidden=\"true\">\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\" />\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\" />\n </svg>\n );\n}\n\nfunction IconChevronDown() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n );\n}\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\nfunction WorkspaceSwitcher({\n workspaceName = 'Workspace',\n workspaceAccount = 'Conta Atual',\n fullWidth = false,\n}: {\n workspaceName?: string;\n workspaceAccount?: string;\n fullWidth?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n className={[styles.workspace, fullWidth ? styles.workspaceFull : ''].filter(Boolean).join(' ')}\n aria-label={`Trocar workspace: ${workspaceName}`}\n >\n <div className={styles.workspaceLeft}>\n <span className={styles.statusDot} aria-hidden=\"true\" />\n <div className={styles.workspaceCol}>\n <p className={styles.workspaceAccount}>{workspaceAccount}</p>\n <p className={styles.workspaceName}>{workspaceName}</p>\n </div>\n </div>\n <span className={styles.workspaceArrow}>\n <IconChevronDown />\n </span>\n </button>\n );\n}\n\nfunction UserInfo({\n userName,\n userRole,\n userAvatar,\n}: {\n userName?: string;\n userRole?: string;\n userAvatar?: string;\n}) {\n const initials = userName\n ? userName\n .split(' ')\n .slice(0, 2)\n .map((w) => w[0])\n .join('')\n .toUpperCase()\n : '?';\n\n return (\n <div className={styles.navUser}>\n <div className={styles.avatar}>\n {userAvatar ? (\n <img\n src={userAvatar}\n alt={userName ?? 'Avatar'}\n className={styles.avatarImg}\n />\n ) : (\n <span className={styles.avatarInitials}>{initials}</span>\n )}\n </div>\n {(userName || userRole) && (\n <div className={styles.userText}>\n {userName && <p className={styles.userName}>{userName}</p>}\n {userRole && <p className={styles.userRole}>{userRole}</p>}\n </div>\n )}\n </div>\n );\n}\n\n// ─── Header ───────────────────────────────────────────────────────────────────\n\nexport function Header({\n variant = 'Default',\n pageTitle = 'Portal de Gestão',\n workspaceName,\n workspaceAccount,\n userName,\n userRole,\n userAvatar,\n onMenuToggle,\n onNotifications,\n primaryAction,\n className,\n}: HeaderProps) {\n const isDefault = variant === 'Default';\n const isMobile = variant === 'Mobile';\n const isMobileOpen = variant === 'MobileOpen';\n\n const rootClass = [\n styles.header,\n isDefault ? styles.variantDefault : '',\n isMobile ? styles.variantMobile : '',\n isMobileOpen ? styles.variantMobileOpen : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <header className={rootClass}>\n {/* Page title — Default + Mobile only */}\n {!isMobileOpen && (\n <h1\n className={[\n styles.pageTitle,\n isDefault ? styles.pageTitleDesktop : styles.pageTitleMobile,\n ].join(' ')}\n >\n {pageTitle}\n </h1>\n )}\n\n {/* ── Default actions ─────────────────────────────────────────────── */}\n {isDefault && (\n <div className={styles.actions}>\n <WorkspaceSwitcher\n workspaceName={workspaceName}\n workspaceAccount={workspaceAccount}\n />\n <button\n type=\"button\"\n className={styles.bellBtn}\n onClick={onNotifications}\n aria-label=\"Notificações\"\n >\n <IconBell />\n </button>\n <UserInfo\n userName={userName}\n userRole={userRole}\n userAvatar={userAvatar}\n />\n </div>\n )}\n\n {/* ── Mobile actions ──────────────────────────────────────────────── */}\n {isMobile && (\n <div className={styles.actions}>\n <button\n type=\"button\"\n className={styles.bellBtn}\n onClick={onNotifications}\n aria-label=\"Notificações\"\n >\n <IconBell />\n </button>\n <button\n type=\"button\"\n className={styles.menuBtn}\n onClick={onMenuToggle}\n aria-label=\"Abrir menu\"\n aria-expanded={false}\n >\n <span className={styles.menuIcon}>\n <IconMenu />\n </span>\n Menu\n </button>\n </div>\n )}\n\n {/* ── MobileOpen expanded panel ────────────────────────────────────── */}\n {isMobileOpen && (\n <div className={[styles.actions, styles.actionsMobileOpen].join(' ')}>\n {/* CTA */}\n {primaryAction && (\n <button\n type=\"button\"\n className={styles.ctaBtn}\n onClick={primaryAction.onClick}\n >\n {primaryAction.label}\n </button>\n )}\n\n {/* Workspace + User */}\n <div className={styles.mainActions}>\n <WorkspaceSwitcher\n workspaceName={workspaceName}\n workspaceAccount={workspaceAccount}\n fullWidth\n />\n <UserInfo\n userName={userName}\n userRole={userRole}\n userAvatar={userAvatar}\n />\n </div>\n </div>\n )}\n </header>\n );\n}\n"],"names":["IconBell","jsx","IconMenu","IconChevronDown","WorkspaceSwitcher","workspaceName","workspaceAccount","fullWidth","jsxs","styles","UserInfo","userName","userRole","userAvatar","initials","w","Header","variant","pageTitle","onMenuToggle","onNotifications","primaryAction","className","isDefault","isMobile","isMobileOpen","rootClass"],"mappings":";;AAgCA,SAASA,IAAW;AAClB,2BACG,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,QAAO,eAAc,SAAQ,gBAAe,SAAQ,eAAY,QAC5J,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,8CAAA,CAA8C;AAAA,IACtD,gBAAAA,EAAC,QAAA,EAAK,GAAE,6BAAA,CAA6B;AAAA,EAAA,GACvC;AAEJ;AAEA,SAASC,IAAW;AAClB,2BACG,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,eAAY,QAClI,UAAA;AAAA,IAAA,gBAAAD,EAAC,QAAA,EAAK,IAAG,KAAI,IAAG,KAAK,IAAG,MAAK,IAAG,IAAA,CAAI;AAAA,IACpC,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,IACrC,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,EAAA,GACvC;AAEJ;AAEA,SAASE,IAAkB;AACzB,SACE,gBAAAF,EAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ,gBAAe,SAAQ,eAAY,QAC3J,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,eAAA,CAAe,EAAA,CACzB;AAEJ;AAIA,SAASG,EAAkB;AAAA,EACzB,eAAAC,IAAgB;AAAA,EAChB,kBAAAC,IAAmB;AAAA,EACnB,WAAAC,IAAY;AACd,GAIG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,CAACC,EAAO,WAAWF,IAAYE,EAAO,gBAAgB,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC7F,cAAY,qBAAqBJ,CAAa;AAAA,MAE9C,UAAA;AAAA,QAAA,gBAAAG,EAAC,OAAA,EAAI,WAAWC,EAAO,eACrB,UAAA;AAAA,UAAA,gBAAAR,EAAC,QAAA,EAAK,WAAWQ,EAAO,WAAW,eAAY,QAAO;AAAA,UACtD,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAO,cACrB,UAAA;AAAA,YAAA,gBAAAR,EAAC,KAAA,EAAE,WAAWQ,EAAO,kBAAmB,UAAAH,GAAiB;AAAA,YACzD,gBAAAL,EAAC,KAAA,EAAE,WAAWQ,EAAO,eAAgB,UAAAJ,EAAA,CAAc;AAAA,UAAA,EAAA,CACrD;AAAA,QAAA,GACF;AAAA,0BACC,QAAA,EAAK,WAAWI,EAAO,gBACtB,UAAA,gBAAAR,EAACE,KAAgB,EAAA,CACnB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASO,EAAS;AAAA,EAChB,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AACF,GAIG;AACD,QAAMC,IAAWH,IACbA,EACG,MAAM,GAAG,EACT,MAAM,GAAG,CAAC,EACV,IAAI,CAACI,MAAMA,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EACP,YAAA,IACH;AAEJ,SACE,gBAAAP,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA;AAAA,IAAA,gBAAAR,EAAC,OAAA,EAAI,WAAWQ,EAAO,QACpB,UAAAI,IACC,gBAAAZ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKY;AAAA,QACL,KAAKF,KAAY;AAAA,QACjB,WAAWF,EAAO;AAAA,MAAA;AAAA,IAAA,IAGpB,gBAAAR,EAAC,QAAA,EAAK,WAAWQ,EAAO,gBAAiB,aAAS,GAEtD;AAAA,KACEE,KAAYC,MACZ,gBAAAJ,EAAC,OAAA,EAAI,WAAWC,EAAO,UACpB,UAAA;AAAA,MAAAE,KAAY,gBAAAV,EAAC,KAAA,EAAE,WAAWQ,EAAO,UAAW,UAAAE,GAAS;AAAA,MACrDC,KAAa,gBAAAX,EAAC,KAAA,EAAE,WAAWQ,EAAO,UAAW,UAAAG,EAAA,CAAS;AAAA,IAAA,EAAA,CACzD;AAAA,EAAA,GAEJ;AAEJ;AAIO,SAASI,EAAO;AAAA,EACrB,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,eAAAb;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAK;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAM;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC;AACF,GAAgB;AACd,QAAMC,IAAeN,MAAY,WAC3BO,IAAeP,MAAY,UAC3BQ,IAAeR,MAAY,cAE3BS,IAAY;AAAA,IAChBjB,EAAO;AAAA,IACPc,IAAed,EAAO,iBAAoB;AAAA,IAC1Ce,IAAef,EAAO,gBAAoB;AAAA,IAC1CgB,IAAehB,EAAO,oBAAoB;AAAA,IAC1Ca;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAd,EAAC,UAAA,EAAO,WAAWkB,GAEhB,UAAA;AAAA,IAAA,CAACD,KACA,gBAAAxB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACTQ,EAAO;AAAA,UACPc,IAAYd,EAAO,mBAAmBA,EAAO;AAAA,QAAA,EAC7C,KAAK,GAAG;AAAA,QAET,UAAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAKJK,KACC,gBAAAf,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA;AAAA,MAAA,gBAAAR;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,eAAAC;AAAA,UACA,kBAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAL;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWQ,EAAO;AAAA,UAClB,SAASW;AAAA,UACT,cAAW;AAAA,UAEX,4BAACpB,GAAA,CAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZ,gBAAAC;AAAA,QAACS;AAAA,QAAA;AAAA,UACC,UAAAC;AAAA,UACA,UAAAC;AAAA,UACA,YAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,GACF;AAAA,IAIDW,KACC,gBAAAhB,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA;AAAA,MAAA,gBAAAR;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWQ,EAAO;AAAA,UAClB,SAASW;AAAA,UACT,cAAW;AAAA,UAEX,4BAACpB,GAAA,CAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZ,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWC,EAAO;AAAA,UAClB,SAASU;AAAA,UACT,cAAW;AAAA,UACX,iBAAe;AAAA,UAEf,UAAA;AAAA,YAAA,gBAAAlB,EAAC,UAAK,WAAWQ,EAAO,UACtB,UAAA,gBAAAR,EAACC,KAAS,GACZ;AAAA,YAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAET,GACF;AAAA,IAIDuB,KACC,gBAAAjB,EAAC,OAAA,EAAI,WAAW,CAACC,EAAO,SAASA,EAAO,iBAAiB,EAAE,KAAK,GAAG,GAEhE,UAAA;AAAA,MAAAY,KACC,gBAAApB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWQ,EAAO;AAAA,UAClB,SAASY,EAAc;AAAA,UAEtB,UAAAA,EAAc;AAAA,QAAA;AAAA,MAAA;AAAA,MAKnB,gBAAAb,EAAC,OAAA,EAAI,WAAWC,EAAO,aACrB,UAAA;AAAA,QAAA,gBAAAR;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,eAAAC;AAAA,YACA,kBAAAC;AAAA,YACA,WAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAEX,gBAAAL;AAAA,UAACS;AAAA,UAAA;AAAA,YACC,UAAAC;AAAA,YACA,UAAAC;AAAA,YACA,YAAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MACF,EAAA,CACF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsxs as n, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { useId as D } from "react";
|
|
3
|
+
import e from "./index.esm15.js";
|
|
4
|
+
function E({
|
|
5
|
+
state: i = "Default",
|
|
6
|
+
label: o,
|
|
7
|
+
placeholder: p,
|
|
8
|
+
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
|
|
17
|
+
}) {
|
|
18
|
+
const N = D(), r = u ?? N, l = i === "Disabled", d = i === "Error", j = [
|
|
19
|
+
e.field,
|
|
20
|
+
i === "Hover" ? e.hover : "",
|
|
21
|
+
i === "Active" ? e.active : "",
|
|
22
|
+
l ? e.disabled : "",
|
|
23
|
+
d ? e.error : "",
|
|
24
|
+
f
|
|
25
|
+
].filter(Boolean).join(" ");
|
|
26
|
+
return /* @__PURE__ */ n("div", { className: e.wrapper, children: [
|
|
27
|
+
o && /* @__PURE__ */ n("div", { className: e.labelRow, children: [
|
|
28
|
+
/* @__PURE__ */ a(
|
|
29
|
+
"label",
|
|
30
|
+
{
|
|
31
|
+
htmlFor: r,
|
|
32
|
+
className: [e.label, l ? e.labelDisabled : ""].filter(Boolean).join(" "),
|
|
33
|
+
children: o
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
c && /* @__PURE__ */ a("span", { className: e.labelIcon, "aria-hidden": "true", children: c })
|
|
37
|
+
] }),
|
|
38
|
+
/* @__PURE__ */ n("div", { className: j, children: [
|
|
39
|
+
m && /* @__PURE__ */ a("span", { className: e.icon, "aria-hidden": "true", children: m }),
|
|
40
|
+
/* @__PURE__ */ a(
|
|
41
|
+
"input",
|
|
42
|
+
{
|
|
43
|
+
id: r,
|
|
44
|
+
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
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
t && /* @__PURE__ */ a("span", { className: e.icon, "aria-hidden": "true", children: t })
|
|
55
|
+
] }),
|
|
56
|
+
s && /* @__PURE__ */ a(
|
|
57
|
+
"p",
|
|
58
|
+
{
|
|
59
|
+
id: `${r}-message`,
|
|
60
|
+
className: [e.message, d ? e.messageError : ""].filter(Boolean).join(" "),
|
|
61
|
+
children: s
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
] });
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
E as Input
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=index.esm8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm8.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;"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx as l, jsxs as r } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback as u, useEffect as v } from "react";
|
|
3
|
+
import e from "./index.esm22.js";
|
|
4
|
+
function k({
|
|
5
|
+
isOpen: d,
|
|
6
|
+
title: m,
|
|
7
|
+
description: n,
|
|
8
|
+
children: c,
|
|
9
|
+
onClose: s,
|
|
10
|
+
primaryAction: o,
|
|
11
|
+
secondaryAction: t
|
|
12
|
+
}) {
|
|
13
|
+
const i = u(
|
|
14
|
+
(a) => {
|
|
15
|
+
a.key === "Escape" && s();
|
|
16
|
+
},
|
|
17
|
+
[s]
|
|
18
|
+
);
|
|
19
|
+
if (v(() => {
|
|
20
|
+
if (!d) return;
|
|
21
|
+
document.addEventListener("keydown", i);
|
|
22
|
+
const a = document.body.style.overflow;
|
|
23
|
+
return document.body.style.overflow = "hidden", () => {
|
|
24
|
+
document.removeEventListener("keydown", i), document.body.style.overflow = a;
|
|
25
|
+
};
|
|
26
|
+
}, [d, i]), !d) return null;
|
|
27
|
+
const b = o || t;
|
|
28
|
+
return /* @__PURE__ */ l(
|
|
29
|
+
"div",
|
|
30
|
+
{
|
|
31
|
+
className: e.overlay,
|
|
32
|
+
onClick: s,
|
|
33
|
+
role: "presentation",
|
|
34
|
+
children: /* @__PURE__ */ r(
|
|
35
|
+
"div",
|
|
36
|
+
{
|
|
37
|
+
className: e.modal,
|
|
38
|
+
role: "dialog",
|
|
39
|
+
"aria-modal": "true",
|
|
40
|
+
"aria-labelledby": "modal-title",
|
|
41
|
+
"aria-describedby": n ? "modal-desc" : void 0,
|
|
42
|
+
onClick: (a) => a.stopPropagation(),
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ r("div", { className: e.heading, children: [
|
|
45
|
+
/* @__PURE__ */ l("p", { id: "modal-title", className: e.title, children: m }),
|
|
46
|
+
n && /* @__PURE__ */ l("p", { id: "modal-desc", className: e.description, children: n })
|
|
47
|
+
] }),
|
|
48
|
+
c && /* @__PURE__ */ l("div", { className: e.body, children: c }),
|
|
49
|
+
b && /* @__PURE__ */ l("div", { className: e.actions, children: /* @__PURE__ */ r("div", { className: e.btns, children: [
|
|
50
|
+
t && /* @__PURE__ */ l(
|
|
51
|
+
"button",
|
|
52
|
+
{
|
|
53
|
+
type: "button",
|
|
54
|
+
className: e.btnSecondary,
|
|
55
|
+
onClick: t.onClick,
|
|
56
|
+
children: t.label
|
|
57
|
+
}
|
|
58
|
+
),
|
|
59
|
+
o && /* @__PURE__ */ l(
|
|
60
|
+
"button",
|
|
61
|
+
{
|
|
62
|
+
type: "button",
|
|
63
|
+
className: e.btnPrimary,
|
|
64
|
+
onClick: o.onClick,
|
|
65
|
+
children: o.label
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
] }) })
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
k as Modal
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=index.esm9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm9.js","sources":["../components/Modal/Modal.tsx"],"sourcesContent":["import React, { useEffect, useCallback } from 'react';\nimport styles from './Modal.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ModalAction {\n label: string;\n onClick: () => void;\n}\n\nexport interface ModalProps {\n isOpen: boolean;\n title: string;\n description?: string;\n /** Customizable modal body content (e.g. radio/checkbox option list) */\n children?: React.ReactNode;\n onClose: () => void;\n primaryAction?: ModalAction;\n secondaryAction?: ModalAction;\n}\n\n// ─── Modal ────────────────────────────────────────────────────────────────────\n\nexport function Modal({\n isOpen,\n title,\n description,\n children,\n onClose,\n primaryAction,\n secondaryAction,\n}: ModalProps) {\n // Close on Escape key\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n },\n [onClose],\n );\n\n useEffect(() => {\n if (!isOpen) return;\n document.addEventListener('keydown', handleKeyDown);\n // Prevent body scroll while modal is open\n const prev = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.body.style.overflow = prev;\n };\n }, [isOpen, handleKeyDown]);\n\n if (!isOpen) return null;\n\n const hasActions = primaryAction || secondaryAction;\n\n return (\n <div\n className={styles.overlay}\n onClick={onClose}\n role=\"presentation\"\n >\n <div\n className={styles.modal}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-title\"\n aria-describedby={description ? 'modal-desc' : undefined}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Heading */}\n <div className={styles.heading}>\n <p id=\"modal-title\" className={styles.title}>\n {title}\n </p>\n {description && (\n <p id=\"modal-desc\" className={styles.description}>\n {description}\n </p>\n )}\n </div>\n\n {/* Body */}\n {children && (\n <div className={styles.body}>\n {children}\n </div>\n )}\n\n {/* Actions */}\n {hasActions && (\n <div className={styles.actions}>\n <div className={styles.btns}>\n {secondaryAction && (\n <button\n type=\"button\"\n className={styles.btnSecondary}\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </button>\n )}\n {primaryAction && (\n <button\n type=\"button\"\n className={styles.btnPrimary}\n onClick={primaryAction.onClick}\n >\n {primaryAction.label}\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"names":["Modal","isOpen","title","description","children","onClose","primaryAction","secondaryAction","handleKeyDown","useCallback","e","useEffect","prev","hasActions","jsx","styles","jsxs"],"mappings":";;;AAuBO,SAASA,EAAM;AAAA,EACpB,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AACF,GAAe;AAEb,QAAMC,IAAgBC;AAAA,IACpB,CAACC,MAAqB;AACpB,MAAIA,EAAE,QAAQ,YAAUL,EAAA;AAAA,IAC1B;AAAA,IACA,CAACA,CAAO;AAAA,EAAA;AAeV,MAZAM,EAAU,MAAM;AACd,QAAI,CAACV,EAAQ;AACb,aAAS,iBAAiB,WAAWO,CAAa;AAElD,UAAMI,IAAO,SAAS,KAAK,MAAM;AACjC,oBAAS,KAAK,MAAM,WAAW,UACxB,MAAM;AACX,eAAS,oBAAoB,WAAWJ,CAAa,GACrD,SAAS,KAAK,MAAM,WAAWI;AAAA,IACjC;AAAA,EACF,GAAG,CAACX,GAAQO,CAAa,CAAC,GAEtB,CAACP,EAAQ,QAAO;AAEpB,QAAMY,IAAaP,KAAiBC;AAEpC,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAO;AAAA,MAClB,SAASV;AAAA,MACT,MAAK;AAAA,MAEL,UAAA,gBAAAW;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWD,EAAO;AAAA,UAClB,MAAK;AAAA,UACL,cAAW;AAAA,UACX,mBAAgB;AAAA,UAChB,oBAAkBZ,IAAc,eAAe;AAAA,UAC/C,SAAS,CAACO,MAAMA,EAAE,gBAAA;AAAA,UAGlB,UAAA;AAAA,YAAA,gBAAAM,EAAC,OAAA,EAAI,WAAWD,EAAO,SACrB,UAAA;AAAA,cAAA,gBAAAD,EAAC,OAAE,IAAG,eAAc,WAAWC,EAAO,OACnC,UAAAb,GACH;AAAA,cACCC,uBACE,KAAA,EAAE,IAAG,cAAa,WAAWY,EAAO,aAClC,UAAAZ,EAAA,CACH;AAAA,YAAA,GAEJ;AAAA,YAGCC,KACC,gBAAAU,EAAC,OAAA,EAAI,WAAWC,EAAO,MACpB,UAAAX,GACH;AAAA,YAIDS,KACC,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAO,MACpB,UAAA;AAAA,cAAAR,KACC,gBAAAO;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAWC,EAAO;AAAA,kBAClB,SAASR,EAAgB;AAAA,kBAExB,UAAAA,EAAgB;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGpBD,KACC,gBAAAQ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAWC,EAAO;AAAA,kBAClB,SAAST,EAAc;AAAA,kBAEtB,UAAAA,EAAc;AAAA,gBAAA;AAAA,cAAA;AAAA,YACjB,EAAA,CAEJ,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color tokens — extracted directly from Figma (VekfomfsZU4q2iaY1j4VXP)
|
|
3
|
+
* Nodes: BtnsBase (3107:5509), TextField (3105:3885), BaseCheckRadio (3106:4752),
|
|
4
|
+
* FileUpload (3210:3538), Pagination (3203:662), NavPrimary (3554:548),
|
|
5
|
+
* Modal (5139:1464), AlertSticky (3114:1706)
|
|
6
|
+
*/
|
|
7
|
+
export declare const colors: {
|
|
8
|
+
readonly brand: {
|
|
9
|
+
readonly primary: {
|
|
10
|
+
/** #203224 — Secondary button bg; Fill button text; Check/Radio checked bg */
|
|
11
|
+
readonly base: "#203224";
|
|
12
|
+
};
|
|
13
|
+
readonly secondary: {
|
|
14
|
+
/** #0F6C13 — Outline button border & text */
|
|
15
|
+
readonly base: "#0F6C13";
|
|
16
|
+
};
|
|
17
|
+
readonly tertiary: {
|
|
18
|
+
/** #E7DA10 — Fill button background */
|
|
19
|
+
readonly base: "#E7DA10";
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
readonly default: {
|
|
23
|
+
/** #FFFFFF — Secondary button text; input background */
|
|
24
|
+
readonly white: "#FFFFFF";
|
|
25
|
+
/** #524E69 — Disabled text; input active/error text */
|
|
26
|
+
readonly textDark: "#524E69";
|
|
27
|
+
/** #9490AC — Placeholder; input hover/active border; Grayscale/600 */
|
|
28
|
+
readonly textMedium: "#9490AC";
|
|
29
|
+
/** #EFEEF2 — Disabled background; input focus ring; Grayscale/100 */
|
|
30
|
+
readonly disabled: "#EFEEF2";
|
|
31
|
+
/** #DCE5DE — Default input border; Check/Radio border */
|
|
32
|
+
readonly border: "#DCE5DE";
|
|
33
|
+
/** #E0DEED — Grayscale/200 · Default step background */
|
|
34
|
+
readonly stepDefault: "#E0DEED";
|
|
35
|
+
/** #F5F5F5 — Default Colors/White Cloud · Nav sidebar background */
|
|
36
|
+
readonly whiteCloud: "#F5F5F5";
|
|
37
|
+
/** #E0DEED — Grayscale/200 · Modal slot border */
|
|
38
|
+
readonly modalBorder: "#E0DEED";
|
|
39
|
+
/** #757094 — Default Colors/Text medium · Modal slot text, option labels */
|
|
40
|
+
readonly modalTextMedium: "#757094";
|
|
41
|
+
};
|
|
42
|
+
readonly message: {
|
|
43
|
+
readonly info: {
|
|
44
|
+
/** #2472BA — Text button text */
|
|
45
|
+
readonly base: "#2472BA";
|
|
46
|
+
};
|
|
47
|
+
readonly danger: {
|
|
48
|
+
/** #FF3A29 — Error input border & message */
|
|
49
|
+
readonly base: "#FF3A29";
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
/** Gray scale — FileUpload / Gray/x00 tokens */
|
|
53
|
+
readonly gray: {
|
|
54
|
+
/** #101828 — Gray/900 · file name, body text */
|
|
55
|
+
readonly 900: "#101828";
|
|
56
|
+
/** #475467 — Gray/600 · action icon color */
|
|
57
|
+
readonly 600: "#475467";
|
|
58
|
+
/** #667085 — Gray/500 · file size, muted text */
|
|
59
|
+
readonly 500: "#667085";
|
|
60
|
+
/** #D0D5DD — Gray/300 · upload drop-zone default border */
|
|
61
|
+
readonly 300: "#D0D5DD";
|
|
62
|
+
/** #EAECF0 — Gray/200 · file item border, progress track */
|
|
63
|
+
readonly 200: "#EAECF0";
|
|
64
|
+
};
|
|
65
|
+
/** Pagination tokens — Pagination (3203:662) */
|
|
66
|
+
readonly pagination: {
|
|
67
|
+
/** #0F6C13 — active item bg (= brand.secondary.base) */
|
|
68
|
+
readonly active: "#0F6C13";
|
|
69
|
+
/** #CED4DA — Gray/Gray 4 · inactive item border, control border */
|
|
70
|
+
readonly border: "#CED4DA";
|
|
71
|
+
/** #101113 — Dark/Dark 9 · page number text */
|
|
72
|
+
readonly text: "#101113";
|
|
73
|
+
};
|
|
74
|
+
/** Alert tokens — AlertSticky (3114:1706) */
|
|
75
|
+
readonly alert: {
|
|
76
|
+
readonly default: {
|
|
77
|
+
readonly bg: "#F9F8FC";
|
|
78
|
+
readonly border: "#DCE5DE";
|
|
79
|
+
readonly title: "#524E69";
|
|
80
|
+
};
|
|
81
|
+
readonly info: {
|
|
82
|
+
readonly bg: "#F4F9FF";
|
|
83
|
+
readonly border: "#C9E2FE";
|
|
84
|
+
readonly title: "#2472BA";
|
|
85
|
+
};
|
|
86
|
+
readonly success: {
|
|
87
|
+
readonly bg: "#F5FBF7";
|
|
88
|
+
readonly border: "#CAE7D5";
|
|
89
|
+
readonly title: "#2C7D56";
|
|
90
|
+
};
|
|
91
|
+
readonly warning: {
|
|
92
|
+
readonly bg: "#FFF9E9";
|
|
93
|
+
readonly border: "#FFDB90";
|
|
94
|
+
readonly title: "#A36A00";
|
|
95
|
+
};
|
|
96
|
+
readonly error: {
|
|
97
|
+
readonly bg: "#FFF8F6";
|
|
98
|
+
readonly border: "#FFCABF";
|
|
99
|
+
readonly title: "#DE0000";
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
/** Shadow tokens */
|
|
103
|
+
readonly shadow: {
|
|
104
|
+
/** 0px 1px 12px 0px rgba(25,27,35,0.15) — BS-Popper */
|
|
105
|
+
readonly popper: "0px 1px 12px 0px rgba(25,27,35,0.15)";
|
|
106
|
+
};
|
|
107
|
+
/** Blue primary scale — FileUpload / Primary/x00 tokens */
|
|
108
|
+
readonly primary: {
|
|
109
|
+
/** #154FEF — Primary/600 · "browse" link color */
|
|
110
|
+
readonly 600: "#154FEF";
|
|
111
|
+
/** #2970FF — Primary/500 · active drop-zone border, progress fill */
|
|
112
|
+
readonly 500: "#2970FF";
|
|
113
|
+
/** #5280FF — Primary/400 */
|
|
114
|
+
readonly 400: "#5280FF";
|
|
115
|
+
/** #B2C9FF — Primary/200 · file badge background */
|
|
116
|
+
readonly 200: "#B2C9FF";
|
|
117
|
+
/** #DBE8FF — Primary/100 · file badge ring, active drop-zone bg */
|
|
118
|
+
readonly 100: "#DBE8FF";
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
export type Colors = typeof colors;
|
|
122
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../tokens/colors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,MAAM;;;YAGb,8EAA8E;;;;YAI9E,6CAA6C;;;;YAI7C,uCAAuC;;;;;QAKzC,wDAAwD;;QAExD,uDAAuD;;QAEvD,sEAAsE;;QAEtE,qEAAqE;;QAErE,yDAAyD;;QAEzD,wDAAwD;;QAExD,oEAAoE;;QAEpE,kDAAkD;;QAElD,4EAA4E;;;;;YAK1E,iCAAiC;;;;YAIjC,6CAA6C;;;;IAIjD,gDAAgD;;QAE9C,gDAAgD;;QAEhD,6CAA6C;;QAE7C,iDAAiD;;QAEjD,2DAA2D;;QAE3D,4DAA4D;;;IAG9D,gDAAgD;;QAE9C,wDAAwD;;QAExD,mEAAmE;;QAEnE,+CAA+C;;;IAGjD,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ7C,oBAAoB;;QAElB,uDAAuD;;;IAGzD,2DAA2D;;QAEzD,kDAAkD;;QAElD,qEAAqE;;QAErE,4BAA4B;;QAE5B,oDAAoD;;QAEpD,mEAAmE;;;CAG7D,CAAC;AAEX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../tokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typography tokens — extracted directly from Figma (VekfomfsZU4q2iaY1j4VXP)
|
|
3
|
+
* Tokens: Body Texts/Button, Body Texts/Label, Body Texts/Text, Body Texts/Text Small,
|
|
4
|
+
* Paragraph/SM/Regular, Paragraph/XS/Regular (FileUpload 3210:3538),
|
|
5
|
+
* Text/xs, Text/md, Text/lg (Pagination 3203:662)
|
|
6
|
+
*/
|
|
7
|
+
export declare const typography: {
|
|
8
|
+
readonly fontFamily: {
|
|
9
|
+
/** Clash Grotesk Variable — buttons, inputs, labels */
|
|
10
|
+
readonly base: "'Clash Grotesk Variable', sans-serif";
|
|
11
|
+
/** Inter — FileUpload text (Paragraph/SM and Paragraph/XS) */
|
|
12
|
+
readonly inter: "'Inter', sans-serif";
|
|
13
|
+
/** Roboto — Pagination numbers and controls */
|
|
14
|
+
readonly roboto: "'Roboto', sans-serif";
|
|
15
|
+
/** Clash Display Variable — Steps step number (Headings/H4 · 21px) */
|
|
16
|
+
readonly clashDisplay: "'Clash Display Variable', sans-serif";
|
|
17
|
+
/** @deprecated use fontFamily.base */
|
|
18
|
+
readonly button: "'Clash Grotesk Variable', sans-serif";
|
|
19
|
+
};
|
|
20
|
+
readonly fontWeight: {
|
|
21
|
+
readonly regular: 400;
|
|
22
|
+
readonly semibold: 600;
|
|
23
|
+
};
|
|
24
|
+
readonly fontSize: {
|
|
25
|
+
/** 16px — Body Texts/Button & Body Texts/Text */
|
|
26
|
+
readonly md: "1rem";
|
|
27
|
+
/** 14px — Body Texts/Label & Body Texts/Text Small */
|
|
28
|
+
readonly sm: "0.875rem";
|
|
29
|
+
/** 12px — Paragraph/SM/Regular (Inter · FileUpload) */
|
|
30
|
+
readonly bodySm: "0.75rem";
|
|
31
|
+
/** 10px — Paragraph/XS/Regular (Inter · FileUpload) */
|
|
32
|
+
readonly bodyXs: "0.625rem";
|
|
33
|
+
/** 12px — Text/xs (Roboto · Pagination xs) */
|
|
34
|
+
readonly paginationXs: "0.75rem";
|
|
35
|
+
/** 16px — Text/md (Roboto · Pagination md) */
|
|
36
|
+
readonly paginationMd: "1rem";
|
|
37
|
+
/** 18px — Text/lg (Roboto · Pagination lg) */
|
|
38
|
+
readonly paginationLg: "1.125rem";
|
|
39
|
+
/** @deprecated use fontSize.md */
|
|
40
|
+
readonly button: "1rem";
|
|
41
|
+
};
|
|
42
|
+
readonly lineHeight: {
|
|
43
|
+
/** 1.5 — Body Texts/Button */
|
|
44
|
+
readonly button: 1.5;
|
|
45
|
+
/** 1.43 — Body Texts/Label (Semibold 14px) */
|
|
46
|
+
readonly label: 1.43;
|
|
47
|
+
/** 1.30 — Body Texts/Text & Body Texts/Text Small */
|
|
48
|
+
readonly text: 1.3;
|
|
49
|
+
/** 1.60 — Paragraph/SM/Regular & Paragraph/XS/Regular (Inter · FileUpload) */
|
|
50
|
+
readonly body: 1.6;
|
|
51
|
+
/** 14px — Text/xs (Roboto · Pagination xs) */
|
|
52
|
+
readonly paginationXs: "14px";
|
|
53
|
+
/** 18px — Text/md (Roboto · Pagination md) */
|
|
54
|
+
readonly paginationMd: "18px";
|
|
55
|
+
/** 20px — Text/lg (Roboto · Pagination lg) */
|
|
56
|
+
readonly paginationLg: "20px";
|
|
57
|
+
};
|
|
58
|
+
readonly letterSpacing: {
|
|
59
|
+
/** 0 — all tokens */
|
|
60
|
+
readonly none: 0;
|
|
61
|
+
/** @deprecated use letterSpacing.none */
|
|
62
|
+
readonly button: 0;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
export type Typography = typeof typography;
|
|
66
|
+
//# sourceMappingURL=typography.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../tokens/typography.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,UAAU;;QAEnB,uDAAuD;;QAEvD,8DAA8D;;QAE9D,+CAA+C;;QAE/C,sEAAsE;;QAEtE,sCAAsC;;;;;;;;QAQtC,iDAAiD;;QAEjD,sDAAsD;;QAEtD,uDAAuD;;QAEvD,uDAAuD;;QAEvD,8CAA8C;;QAE9C,8CAA8C;;QAE9C,8CAA8C;;QAE9C,kCAAkC;;;;QAIlC,8BAA8B;;QAE9B,8CAA8C;;QAE9C,qDAAqD;;QAErD,8EAA8E;;QAE9E,8CAA8C;;QAE9C,8CAA8C;;QAE9C,8CAA8C;;;;QAI9C,qBAAqB;;QAErB,yCAAyC;;;CAGnC,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@treeal/ds",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Treeal Design System — React component library with CSS Modules",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
|
|
7
|
+
"main": "dist/index.cjs.js",
|
|
8
|
+
"module": "dist/index.esm.js",
|
|
9
|
+
"types": "dist/components/index.d.ts",
|
|
10
|
+
"style": "dist/assets/style.css",
|
|
11
|
+
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.esm.js",
|
|
15
|
+
"require": "./dist/index.cjs.js",
|
|
16
|
+
"types": "./dist/components/index.d.ts"
|
|
17
|
+
},
|
|
18
|
+
"./style.css": "./dist/assets/style.css"
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
"files": ["dist"],
|
|
22
|
+
|
|
23
|
+
"sideEffects": ["dist/assets/style.css"],
|
|
24
|
+
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "vite build && tsc -p tsconfig.build.json",
|
|
27
|
+
"build:js": "vite build",
|
|
28
|
+
"build:types": "tsc -p tsconfig.build.json",
|
|
29
|
+
"prepublishOnly": "npm run build",
|
|
30
|
+
"storybook": "storybook dev -p 6006",
|
|
31
|
+
"build-storybook":"storybook build"
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"react": ">=18",
|
|
36
|
+
"react-dom": ">=18"
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@storybook/addon-a11y": "^8.0.0",
|
|
41
|
+
"@storybook/addon-essentials": "^8.0.0",
|
|
42
|
+
"@storybook/blocks": "^8.0.0",
|
|
43
|
+
"@storybook/react": "^8.0.0",
|
|
44
|
+
"@storybook/react-vite": "^8.0.0",
|
|
45
|
+
"@storybook/theming": "^8.0.0",
|
|
46
|
+
"@types/react": "^18.0.0",
|
|
47
|
+
"@types/react-dom": "^18.0.0",
|
|
48
|
+
"@vitejs/plugin-react": "^4.0.0",
|
|
49
|
+
"react": "^18.0.0",
|
|
50
|
+
"react-dom": "^18.0.0",
|
|
51
|
+
"storybook": "^8.0.0",
|
|
52
|
+
"typescript": "^5.0.0",
|
|
53
|
+
"vite": "^5.0.0"
|
|
54
|
+
}
|
|
55
|
+
}
|