@marcoschwartz/lite-ui 0.4.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +167 -1
- package/dist/index.d.ts +167 -1
- package/dist/index.js +781 -66
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +759 -65
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
package/dist/index.mjs
CHANGED
|
@@ -1102,41 +1102,270 @@ var DateTimePicker = forwardRef6(
|
|
|
1102
1102
|
);
|
|
1103
1103
|
DateTimePicker.displayName = "DateTimePicker";
|
|
1104
1104
|
|
|
1105
|
-
// src/
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1105
|
+
// src/components/Radio.tsx
|
|
1106
|
+
import React14 from "react";
|
|
1107
|
+
import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1108
|
+
var Radio = ({
|
|
1109
|
+
name,
|
|
1110
|
+
options,
|
|
1111
|
+
value: controlledValue,
|
|
1112
|
+
defaultValue,
|
|
1113
|
+
onChange,
|
|
1114
|
+
disabled = false,
|
|
1115
|
+
orientation = "vertical",
|
|
1116
|
+
className = ""
|
|
1117
|
+
}) => {
|
|
1118
|
+
const [internalValue, setInternalValue] = React14.useState(defaultValue || "");
|
|
1119
|
+
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1120
|
+
const handleChange = (optionValue) => {
|
|
1121
|
+
if (disabled) return;
|
|
1122
|
+
setInternalValue(optionValue);
|
|
1123
|
+
onChange?.(optionValue);
|
|
1124
|
+
};
|
|
1125
|
+
const containerClass = orientation === "horizontal" ? "flex flex-wrap gap-4" : "flex flex-col gap-2";
|
|
1126
|
+
return /* @__PURE__ */ jsx23("div", { className: `${containerClass} ${className}`, role: "radiogroup", children: options.map((option) => {
|
|
1127
|
+
const isDisabled = disabled || option.disabled;
|
|
1128
|
+
const isChecked = value === option.value;
|
|
1129
|
+
const id = `${name}-${option.value}`;
|
|
1130
|
+
return /* @__PURE__ */ jsxs17(
|
|
1131
|
+
"label",
|
|
1132
|
+
{
|
|
1133
|
+
htmlFor: id,
|
|
1134
|
+
className: `flex items-center gap-2 cursor-pointer ${isDisabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
1135
|
+
children: [
|
|
1136
|
+
/* @__PURE__ */ jsx23(
|
|
1137
|
+
"input",
|
|
1138
|
+
{
|
|
1139
|
+
type: "radio",
|
|
1140
|
+
id,
|
|
1141
|
+
name,
|
|
1142
|
+
value: option.value,
|
|
1143
|
+
checked: isChecked,
|
|
1144
|
+
onChange: () => handleChange(option.value),
|
|
1145
|
+
disabled: isDisabled,
|
|
1146
|
+
className: "w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600 cursor-pointer disabled:cursor-not-allowed"
|
|
1147
|
+
}
|
|
1148
|
+
),
|
|
1149
|
+
/* @__PURE__ */ jsx23("span", { className: "text-sm font-medium text-gray-900 dark:text-gray-300", children: option.label })
|
|
1150
|
+
]
|
|
1151
|
+
},
|
|
1152
|
+
option.value
|
|
1153
|
+
);
|
|
1154
|
+
}) });
|
|
1155
|
+
};
|
|
1112
1156
|
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1157
|
+
// src/components/ProgressBar.tsx
|
|
1158
|
+
import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1159
|
+
var ProgressBar = ({
|
|
1160
|
+
value,
|
|
1161
|
+
max = 100,
|
|
1162
|
+
size = "md",
|
|
1163
|
+
variant = "default",
|
|
1164
|
+
showLabel = false,
|
|
1165
|
+
label,
|
|
1166
|
+
className = ""
|
|
1167
|
+
}) => {
|
|
1168
|
+
const percentage = Math.min(Math.max(value / max * 100, 0), 100);
|
|
1169
|
+
const sizeClasses6 = {
|
|
1170
|
+
sm: "h-1",
|
|
1171
|
+
md: "h-2",
|
|
1172
|
+
lg: "h-3"
|
|
1173
|
+
};
|
|
1174
|
+
const variantClasses = {
|
|
1175
|
+
default: "bg-blue-600 dark:bg-blue-500",
|
|
1176
|
+
success: "bg-green-600 dark:bg-green-500",
|
|
1177
|
+
warning: "bg-yellow-500 dark:bg-yellow-400",
|
|
1178
|
+
danger: "bg-red-600 dark:bg-red-500"
|
|
1179
|
+
};
|
|
1180
|
+
return /* @__PURE__ */ jsxs18("div", { className: `w-full ${className}`, children: [
|
|
1181
|
+
(showLabel || label) && /* @__PURE__ */ jsxs18("div", { className: "flex justify-between items-center mb-1", children: [
|
|
1182
|
+
label && /* @__PURE__ */ jsx24("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1183
|
+
showLabel && /* @__PURE__ */ jsxs18("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
1184
|
+
Math.round(percentage),
|
|
1185
|
+
"%"
|
|
1186
|
+
] })
|
|
1187
|
+
] }),
|
|
1188
|
+
/* @__PURE__ */ jsx24(
|
|
1189
|
+
"div",
|
|
1190
|
+
{
|
|
1191
|
+
className: `w-full bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden ${sizeClasses6[size]}`,
|
|
1192
|
+
role: "progressbar",
|
|
1193
|
+
"aria-valuenow": value,
|
|
1194
|
+
"aria-valuemin": 0,
|
|
1195
|
+
"aria-valuemax": max,
|
|
1196
|
+
children: /* @__PURE__ */ jsx24(
|
|
1197
|
+
"div",
|
|
1198
|
+
{
|
|
1199
|
+
className: `${sizeClasses6[size]} ${variantClasses[variant]} rounded-full transition-all duration-300 ease-out`,
|
|
1200
|
+
style: { width: `${percentage}%` }
|
|
1201
|
+
}
|
|
1202
|
+
)
|
|
1203
|
+
}
|
|
1204
|
+
)
|
|
1205
|
+
] });
|
|
1206
|
+
};
|
|
1118
1207
|
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1208
|
+
// src/components/Slider.tsx
|
|
1209
|
+
import React15 from "react";
|
|
1210
|
+
import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1211
|
+
var Slider = ({
|
|
1212
|
+
value: controlledValue,
|
|
1213
|
+
defaultValue = 50,
|
|
1214
|
+
min = 0,
|
|
1215
|
+
max = 100,
|
|
1216
|
+
step = 1,
|
|
1217
|
+
onChange,
|
|
1218
|
+
disabled = false,
|
|
1219
|
+
showValue = false,
|
|
1220
|
+
label,
|
|
1221
|
+
className = ""
|
|
1222
|
+
}) => {
|
|
1223
|
+
const [internalValue, setInternalValue] = React15.useState(defaultValue);
|
|
1224
|
+
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
1225
|
+
const handleChange = (e) => {
|
|
1226
|
+
const newValue = Number(e.target.value);
|
|
1227
|
+
setInternalValue(newValue);
|
|
1228
|
+
onChange?.(newValue);
|
|
1229
|
+
};
|
|
1230
|
+
const percentage = (value - min) / (max - min) * 100;
|
|
1231
|
+
return /* @__PURE__ */ jsxs19("div", { className: `w-full ${className}`, children: [
|
|
1232
|
+
(label || showValue) && /* @__PURE__ */ jsxs19("div", { className: "flex justify-between items-center mb-2", children: [
|
|
1233
|
+
label && /* @__PURE__ */ jsx25("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: label }),
|
|
1234
|
+
showValue && /* @__PURE__ */ jsx25("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: value })
|
|
1235
|
+
] }),
|
|
1236
|
+
/* @__PURE__ */ jsxs19("div", { className: "relative", children: [
|
|
1237
|
+
/* @__PURE__ */ jsx25("div", { className: "absolute inset-0 h-2 bg-gray-200 dark:bg-gray-700 rounded-full top-1/2 -translate-y-1/2" }),
|
|
1238
|
+
/* @__PURE__ */ jsx25(
|
|
1239
|
+
"div",
|
|
1240
|
+
{
|
|
1241
|
+
className: "absolute h-2 bg-blue-600 dark:bg-blue-500 rounded-full top-1/2 -translate-y-1/2 pointer-events-none",
|
|
1242
|
+
style: { width: `${percentage}%` }
|
|
1243
|
+
}
|
|
1244
|
+
),
|
|
1245
|
+
/* @__PURE__ */ jsx25(
|
|
1246
|
+
"input",
|
|
1247
|
+
{
|
|
1248
|
+
type: "range",
|
|
1249
|
+
min,
|
|
1250
|
+
max,
|
|
1251
|
+
step,
|
|
1252
|
+
value,
|
|
1253
|
+
onChange: handleChange,
|
|
1254
|
+
disabled,
|
|
1255
|
+
className: "relative w-full h-2 bg-transparent appearance-none cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\n [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4\n [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-blue-600 [&::-webkit-slider-thumb]:cursor-pointer\n [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-md\n [&::-webkit-slider-thumb]:hover:bg-blue-700 [&::-webkit-slider-thumb]:active:scale-110 [&::-webkit-slider-thumb]:transition-all\n [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full\n [&::-moz-range-thumb]:bg-blue-600 [&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-2\n [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-md [&::-moz-range-thumb]:hover:bg-blue-700\n [&::-moz-range-thumb]:active:scale-110 [&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:border-none",
|
|
1256
|
+
"aria-label": label,
|
|
1257
|
+
"aria-valuemin": min,
|
|
1258
|
+
"aria-valuemax": max,
|
|
1259
|
+
"aria-valuenow": value
|
|
1260
|
+
}
|
|
1261
|
+
)
|
|
1262
|
+
] })
|
|
1263
|
+
] });
|
|
1264
|
+
};
|
|
1122
1265
|
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1266
|
+
// src/components/Avatar.tsx
|
|
1267
|
+
import React16 from "react";
|
|
1268
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
1269
|
+
var Avatar = ({
|
|
1270
|
+
src,
|
|
1271
|
+
alt,
|
|
1272
|
+
name,
|
|
1273
|
+
size = "md",
|
|
1274
|
+
shape = "circle",
|
|
1275
|
+
className = "",
|
|
1276
|
+
fallbackColor = "bg-blue-600"
|
|
1277
|
+
}) => {
|
|
1278
|
+
const [imageError, setImageError] = React16.useState(false);
|
|
1279
|
+
const sizeClasses6 = {
|
|
1280
|
+
xs: "w-6 h-6 text-xs",
|
|
1281
|
+
sm: "w-8 h-8 text-sm",
|
|
1282
|
+
md: "w-10 h-10 text-base",
|
|
1283
|
+
lg: "w-12 h-12 text-lg",
|
|
1284
|
+
xl: "w-16 h-16 text-2xl"
|
|
1285
|
+
};
|
|
1286
|
+
const shapeClass = shape === "circle" ? "rounded-full" : "rounded-md";
|
|
1287
|
+
const getInitials = (name2) => {
|
|
1288
|
+
const parts = name2.trim().split(" ");
|
|
1289
|
+
if (parts.length >= 2) {
|
|
1290
|
+
return `${parts[0][0]}${parts[parts.length - 1][0]}`.toUpperCase();
|
|
1128
1291
|
}
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
}
|
|
1292
|
+
return name2.slice(0, 2).toUpperCase();
|
|
1293
|
+
};
|
|
1294
|
+
const showImage = src && !imageError;
|
|
1295
|
+
const showInitials = !showImage && name;
|
|
1296
|
+
return /* @__PURE__ */ jsx26(
|
|
1297
|
+
"div",
|
|
1298
|
+
{
|
|
1299
|
+
className: `${sizeClasses6[size]} ${shapeClass} flex items-center justify-center overflow-hidden ${showImage ? "bg-gray-200 dark:bg-gray-700" : `${fallbackColor} text-white`} ${className}`,
|
|
1300
|
+
children: showImage ? /* @__PURE__ */ jsx26(
|
|
1301
|
+
"img",
|
|
1302
|
+
{
|
|
1303
|
+
src,
|
|
1304
|
+
alt: alt || name || "Avatar",
|
|
1305
|
+
className: "w-full h-full object-cover",
|
|
1306
|
+
onError: () => setImageError(true)
|
|
1307
|
+
}
|
|
1308
|
+
) : showInitials ? /* @__PURE__ */ jsx26("span", { className: "font-semibold select-none", children: getInitials(name) }) : /* @__PURE__ */ jsx26(
|
|
1309
|
+
"svg",
|
|
1310
|
+
{
|
|
1311
|
+
className: "w-full h-full text-gray-400 dark:text-gray-600",
|
|
1312
|
+
fill: "currentColor",
|
|
1313
|
+
viewBox: "0 0 24 24",
|
|
1314
|
+
children: /* @__PURE__ */ jsx26("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })
|
|
1315
|
+
}
|
|
1316
|
+
)
|
|
1317
|
+
}
|
|
1318
|
+
);
|
|
1319
|
+
};
|
|
1320
|
+
|
|
1321
|
+
// src/components/Textarea.tsx
|
|
1322
|
+
import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1323
|
+
var Textarea = ({
|
|
1324
|
+
label,
|
|
1325
|
+
error,
|
|
1326
|
+
helperText,
|
|
1327
|
+
size = "md",
|
|
1328
|
+
resize = "vertical",
|
|
1329
|
+
className = "",
|
|
1330
|
+
disabled,
|
|
1331
|
+
...props
|
|
1332
|
+
}) => {
|
|
1333
|
+
const sizeClasses6 = {
|
|
1334
|
+
sm: "px-3 py-1.5 text-sm min-h-[80px]",
|
|
1335
|
+
md: "px-4 py-2 text-base min-h-[100px]",
|
|
1336
|
+
lg: "px-4 py-3 text-lg min-h-[120px]"
|
|
1337
|
+
};
|
|
1338
|
+
const resizeClasses = {
|
|
1339
|
+
none: "resize-none",
|
|
1340
|
+
vertical: "resize-y",
|
|
1341
|
+
horizontal: "resize-x",
|
|
1342
|
+
both: "resize"
|
|
1343
|
+
};
|
|
1344
|
+
const baseClasses = `w-full rounded-lg border transition-colors duration-150 focus:outline-none focus:ring-2
|
|
1345
|
+
${error ? "border-red-500 focus:ring-red-500 focus:border-red-500 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:focus:ring-blue-400"}
|
|
1346
|
+
bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100
|
|
1347
|
+
placeholder:text-gray-500 dark:placeholder:text-gray-400
|
|
1348
|
+
disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-50 dark:disabled:bg-gray-900`;
|
|
1349
|
+
return /* @__PURE__ */ jsxs20("div", { className: `w-full ${className}`, children: [
|
|
1350
|
+
label && /* @__PURE__ */ jsx27("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: label }),
|
|
1351
|
+
/* @__PURE__ */ jsx27(
|
|
1352
|
+
"textarea",
|
|
1353
|
+
{
|
|
1354
|
+
className: `${baseClasses} ${sizeClasses6[size]} ${resizeClasses[resize]}`,
|
|
1355
|
+
disabled,
|
|
1356
|
+
...props
|
|
1357
|
+
}
|
|
1358
|
+
),
|
|
1359
|
+
error && /* @__PURE__ */ jsx27("p", { className: "mt-1 text-sm text-red-600 dark:text-red-400", children: error }),
|
|
1360
|
+
helperText && !error && /* @__PURE__ */ jsx27("p", { className: "mt-1 text-sm text-gray-500 dark:text-gray-400", children: helperText })
|
|
1361
|
+
] });
|
|
1362
|
+
};
|
|
1137
1363
|
|
|
1138
|
-
// src/
|
|
1139
|
-
import {
|
|
1364
|
+
// src/components/Toast.tsx
|
|
1365
|
+
import { createContext as createContext3, useContext as useContext3, useState as useState6, useCallback } from "react";
|
|
1366
|
+
|
|
1367
|
+
// src/icons/icon-utils.tsx
|
|
1368
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1140
1369
|
var sizeClasses5 = {
|
|
1141
1370
|
xs: "w-3 h-3",
|
|
1142
1371
|
sm: "w-4 h-4",
|
|
@@ -1147,7 +1376,7 @@ var sizeClasses5 = {
|
|
|
1147
1376
|
var createIcon = (displayName, path, filled = false) => {
|
|
1148
1377
|
const Icon = ({ size = "md", className = "", color = "currentColor" }) => {
|
|
1149
1378
|
const sizeClass = sizeClasses5[size];
|
|
1150
|
-
return /* @__PURE__ */
|
|
1379
|
+
return /* @__PURE__ */ jsx28(
|
|
1151
1380
|
"svg",
|
|
1152
1381
|
{
|
|
1153
1382
|
className: `${sizeClass} ${className}`,
|
|
@@ -1162,140 +1391,595 @@ var createIcon = (displayName, path, filled = false) => {
|
|
|
1162
1391
|
Icon.displayName = displayName;
|
|
1163
1392
|
return Icon;
|
|
1164
1393
|
};
|
|
1394
|
+
|
|
1395
|
+
// src/icons/HomeIcon.tsx
|
|
1396
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1165
1397
|
var HomeIcon = createIcon(
|
|
1166
1398
|
"HomeIcon",
|
|
1167
|
-
/* @__PURE__ */
|
|
1399
|
+
/* @__PURE__ */ jsx29("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" })
|
|
1168
1400
|
);
|
|
1401
|
+
|
|
1402
|
+
// src/icons/UserIcon.tsx
|
|
1403
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1169
1404
|
var UserIcon = createIcon(
|
|
1170
1405
|
"UserIcon",
|
|
1171
|
-
/* @__PURE__ */
|
|
1406
|
+
/* @__PURE__ */ jsx30("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" })
|
|
1172
1407
|
);
|
|
1408
|
+
|
|
1409
|
+
// src/icons/SearchIcon.tsx
|
|
1410
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1173
1411
|
var SearchIcon = createIcon(
|
|
1174
1412
|
"SearchIcon",
|
|
1175
|
-
/* @__PURE__ */
|
|
1413
|
+
/* @__PURE__ */ jsx31("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" })
|
|
1176
1414
|
);
|
|
1415
|
+
|
|
1416
|
+
// src/icons/BellIcon.tsx
|
|
1417
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
1177
1418
|
var BellIcon = createIcon(
|
|
1178
1419
|
"BellIcon",
|
|
1179
|
-
/* @__PURE__ */
|
|
1420
|
+
/* @__PURE__ */ jsx32("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" })
|
|
1180
1421
|
);
|
|
1422
|
+
|
|
1423
|
+
// src/icons/SettingsIcon.tsx
|
|
1424
|
+
import { Fragment as Fragment3, jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1181
1425
|
var SettingsIcon = createIcon(
|
|
1182
1426
|
"SettingsIcon",
|
|
1183
|
-
/* @__PURE__ */
|
|
1184
|
-
/* @__PURE__ */
|
|
1185
|
-
/* @__PURE__ */
|
|
1427
|
+
/* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
1428
|
+
/* @__PURE__ */ jsx33("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }),
|
|
1429
|
+
/* @__PURE__ */ jsx33("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1186
1430
|
] })
|
|
1187
1431
|
);
|
|
1432
|
+
|
|
1433
|
+
// src/icons/MenuIcon.tsx
|
|
1434
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
1188
1435
|
var MenuIcon = createIcon(
|
|
1189
1436
|
"MenuIcon",
|
|
1190
|
-
/* @__PURE__ */
|
|
1437
|
+
/* @__PURE__ */ jsx34("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" })
|
|
1191
1438
|
);
|
|
1439
|
+
|
|
1440
|
+
// src/icons/CloseIcon.tsx
|
|
1441
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
1192
1442
|
var CloseIcon = createIcon(
|
|
1193
1443
|
"CloseIcon",
|
|
1194
|
-
/* @__PURE__ */
|
|
1444
|
+
/* @__PURE__ */ jsx35("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
|
|
1195
1445
|
);
|
|
1446
|
+
|
|
1447
|
+
// src/icons/ChevronDownIcon.tsx
|
|
1448
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
1196
1449
|
var ChevronDownIcon = createIcon(
|
|
1197
1450
|
"ChevronDownIcon",
|
|
1198
|
-
/* @__PURE__ */
|
|
1451
|
+
/* @__PURE__ */ jsx36("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
1199
1452
|
);
|
|
1453
|
+
|
|
1454
|
+
// src/icons/ChevronRightIcon.tsx
|
|
1455
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
1200
1456
|
var ChevronRightIcon = createIcon(
|
|
1201
1457
|
"ChevronRightIcon",
|
|
1202
|
-
/* @__PURE__ */
|
|
1458
|
+
/* @__PURE__ */ jsx37("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
1203
1459
|
);
|
|
1460
|
+
|
|
1461
|
+
// src/icons/CheckIcon.tsx
|
|
1462
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
1204
1463
|
var CheckIcon = createIcon(
|
|
1205
1464
|
"CheckIcon",
|
|
1206
|
-
/* @__PURE__ */
|
|
1465
|
+
/* @__PURE__ */ jsx38("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
|
|
1207
1466
|
);
|
|
1467
|
+
|
|
1468
|
+
// src/icons/PlusIcon.tsx
|
|
1469
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
1208
1470
|
var PlusIcon = createIcon(
|
|
1209
1471
|
"PlusIcon",
|
|
1210
|
-
/* @__PURE__ */
|
|
1472
|
+
/* @__PURE__ */ jsx39("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
|
|
1211
1473
|
);
|
|
1474
|
+
|
|
1475
|
+
// src/icons/TrashIcon.tsx
|
|
1476
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
1212
1477
|
var TrashIcon = createIcon(
|
|
1213
1478
|
"TrashIcon",
|
|
1214
|
-
/* @__PURE__ */
|
|
1479
|
+
/* @__PURE__ */ jsx40("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })
|
|
1215
1480
|
);
|
|
1481
|
+
|
|
1482
|
+
// src/icons/EditIcon.tsx
|
|
1483
|
+
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
1216
1484
|
var EditIcon = createIcon(
|
|
1217
1485
|
"EditIcon",
|
|
1218
|
-
/* @__PURE__ */
|
|
1486
|
+
/* @__PURE__ */ jsx41("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" })
|
|
1219
1487
|
);
|
|
1488
|
+
|
|
1489
|
+
// src/icons/MailIcon.tsx
|
|
1490
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
1220
1491
|
var MailIcon = createIcon(
|
|
1221
1492
|
"MailIcon",
|
|
1222
|
-
/* @__PURE__ */
|
|
1493
|
+
/* @__PURE__ */ jsx42("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" })
|
|
1223
1494
|
);
|
|
1495
|
+
|
|
1496
|
+
// src/icons/StarIcon.tsx
|
|
1497
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
1224
1498
|
var StarIcon = createIcon(
|
|
1225
1499
|
"StarIcon",
|
|
1226
|
-
/* @__PURE__ */
|
|
1500
|
+
/* @__PURE__ */ jsx43("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z" })
|
|
1227
1501
|
);
|
|
1502
|
+
|
|
1503
|
+
// src/icons/HeartIcon.tsx
|
|
1504
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
1228
1505
|
var HeartIcon = createIcon(
|
|
1229
1506
|
"HeartIcon",
|
|
1230
|
-
/* @__PURE__ */
|
|
1507
|
+
/* @__PURE__ */ jsx44("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" })
|
|
1231
1508
|
);
|
|
1509
|
+
|
|
1510
|
+
// src/icons/DownloadIcon.tsx
|
|
1511
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
1232
1512
|
var DownloadIcon = createIcon(
|
|
1233
1513
|
"DownloadIcon",
|
|
1234
|
-
/* @__PURE__ */
|
|
1514
|
+
/* @__PURE__ */ jsx45("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" })
|
|
1235
1515
|
);
|
|
1516
|
+
|
|
1517
|
+
// src/icons/UploadIcon.tsx
|
|
1518
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
1236
1519
|
var UploadIcon = createIcon(
|
|
1237
1520
|
"UploadIcon",
|
|
1238
|
-
/* @__PURE__ */
|
|
1521
|
+
/* @__PURE__ */ jsx46("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" })
|
|
1239
1522
|
);
|
|
1523
|
+
|
|
1524
|
+
// src/icons/CameraIcon.tsx
|
|
1525
|
+
import { Fragment as Fragment4, jsx as jsx47, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1240
1526
|
var CameraIcon = createIcon(
|
|
1241
1527
|
"CameraIcon",
|
|
1242
|
-
/* @__PURE__ */
|
|
1243
|
-
/* @__PURE__ */
|
|
1244
|
-
/* @__PURE__ */
|
|
1528
|
+
/* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
1529
|
+
/* @__PURE__ */ jsx47("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" }),
|
|
1530
|
+
/* @__PURE__ */ jsx47("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
|
|
1245
1531
|
] })
|
|
1246
1532
|
);
|
|
1533
|
+
|
|
1534
|
+
// src/icons/LockIcon.tsx
|
|
1535
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
1247
1536
|
var LockIcon = createIcon(
|
|
1248
1537
|
"LockIcon",
|
|
1249
|
-
/* @__PURE__ */
|
|
1538
|
+
/* @__PURE__ */ jsx48("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" })
|
|
1250
1539
|
);
|
|
1540
|
+
|
|
1541
|
+
// src/icons/CalendarIcon.tsx
|
|
1542
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
1251
1543
|
var CalendarIcon = createIcon(
|
|
1252
1544
|
"CalendarIcon",
|
|
1253
|
-
/* @__PURE__ */
|
|
1545
|
+
/* @__PURE__ */ jsx49("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })
|
|
1254
1546
|
);
|
|
1547
|
+
|
|
1548
|
+
// src/icons/GoogleIcon.tsx
|
|
1549
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
1255
1550
|
var GoogleIcon = createIcon(
|
|
1256
1551
|
"GoogleIcon",
|
|
1257
|
-
/* @__PURE__ */
|
|
1552
|
+
/* @__PURE__ */ jsx50("path", { d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" }),
|
|
1258
1553
|
true
|
|
1259
1554
|
);
|
|
1555
|
+
|
|
1556
|
+
// src/icons/GitHubIcon.tsx
|
|
1557
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
1260
1558
|
var GitHubIcon = createIcon(
|
|
1261
1559
|
"GitHubIcon",
|
|
1262
|
-
/* @__PURE__ */
|
|
1560
|
+
/* @__PURE__ */ jsx51("path", { d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" }),
|
|
1263
1561
|
true
|
|
1264
1562
|
);
|
|
1563
|
+
|
|
1564
|
+
// src/icons/TwitterIcon.tsx
|
|
1565
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
1265
1566
|
var TwitterIcon = createIcon(
|
|
1266
1567
|
"TwitterIcon",
|
|
1267
|
-
/* @__PURE__ */
|
|
1568
|
+
/* @__PURE__ */ jsx52("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }),
|
|
1268
1569
|
true
|
|
1269
1570
|
);
|
|
1571
|
+
|
|
1572
|
+
// src/icons/FacebookIcon.tsx
|
|
1573
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
1270
1574
|
var FacebookIcon = createIcon(
|
|
1271
1575
|
"FacebookIcon",
|
|
1272
|
-
/* @__PURE__ */
|
|
1576
|
+
/* @__PURE__ */ jsx53("path", { d: "M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z" }),
|
|
1273
1577
|
true
|
|
1274
1578
|
);
|
|
1579
|
+
|
|
1580
|
+
// src/icons/AppleIcon.tsx
|
|
1581
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
1275
1582
|
var AppleIcon = createIcon(
|
|
1276
1583
|
"AppleIcon",
|
|
1277
|
-
/* @__PURE__ */
|
|
1584
|
+
/* @__PURE__ */ jsx54("path", { d: "M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }),
|
|
1278
1585
|
true
|
|
1279
1586
|
);
|
|
1587
|
+
|
|
1588
|
+
// src/icons/LinkedInIcon.tsx
|
|
1589
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
1280
1590
|
var LinkedInIcon = createIcon(
|
|
1281
1591
|
"LinkedInIcon",
|
|
1282
|
-
/* @__PURE__ */
|
|
1592
|
+
/* @__PURE__ */ jsx55("path", { d: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" }),
|
|
1283
1593
|
true
|
|
1284
1594
|
);
|
|
1595
|
+
|
|
1596
|
+
// src/icons/YouTubeIcon.tsx
|
|
1597
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
1285
1598
|
var YouTubeIcon = createIcon(
|
|
1286
1599
|
"YouTubeIcon",
|
|
1287
|
-
/* @__PURE__ */
|
|
1600
|
+
/* @__PURE__ */ jsx56("path", { d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }),
|
|
1288
1601
|
true
|
|
1289
1602
|
);
|
|
1603
|
+
|
|
1604
|
+
// src/icons/SlackIcon.tsx
|
|
1605
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
1290
1606
|
var SlackIcon = createIcon(
|
|
1291
1607
|
"SlackIcon",
|
|
1292
|
-
/* @__PURE__ */
|
|
1608
|
+
/* @__PURE__ */ jsx57("path", { d: "M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z" }),
|
|
1293
1609
|
true
|
|
1294
1610
|
);
|
|
1611
|
+
|
|
1612
|
+
// src/components/Toast.tsx
|
|
1613
|
+
import { jsx as jsx58, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1614
|
+
var ToastContext = createContext3(void 0);
|
|
1615
|
+
var useToast = () => {
|
|
1616
|
+
const context = useContext3(ToastContext);
|
|
1617
|
+
if (!context) {
|
|
1618
|
+
throw new Error("useToast must be used within a ToastProvider");
|
|
1619
|
+
}
|
|
1620
|
+
return context;
|
|
1621
|
+
};
|
|
1622
|
+
var ToastProvider = ({ children, position = "top-right" }) => {
|
|
1623
|
+
const [toasts, setToasts] = useState6([]);
|
|
1624
|
+
const addToast = useCallback((toast2) => {
|
|
1625
|
+
const id = Math.random().toString(36).substring(7);
|
|
1626
|
+
const newToast = { ...toast2, id };
|
|
1627
|
+
setToasts((prev) => [...prev, newToast]);
|
|
1628
|
+
const duration = toast2.duration || 5e3;
|
|
1629
|
+
setTimeout(() => {
|
|
1630
|
+
removeToast(id);
|
|
1631
|
+
}, duration);
|
|
1632
|
+
}, []);
|
|
1633
|
+
const removeToast = useCallback((id) => {
|
|
1634
|
+
setToasts((prev) => prev.filter((toast2) => toast2.id !== id));
|
|
1635
|
+
}, []);
|
|
1636
|
+
const positionClasses2 = {
|
|
1637
|
+
"top-right": "top-4 right-4",
|
|
1638
|
+
"top-left": "top-4 left-4",
|
|
1639
|
+
"bottom-right": "bottom-4 right-4",
|
|
1640
|
+
"bottom-left": "bottom-4 left-4",
|
|
1641
|
+
"top-center": "top-4 left-1/2 -translate-x-1/2",
|
|
1642
|
+
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
|
|
1643
|
+
};
|
|
1644
|
+
return /* @__PURE__ */ jsxs23(ToastContext.Provider, { value: { toasts, addToast, removeToast }, children: [
|
|
1645
|
+
children,
|
|
1646
|
+
/* @__PURE__ */ jsx58("div", { className: `fixed ${positionClasses2[position]} z-50 flex flex-col gap-2 max-w-md`, children: toasts.map((toast2) => /* @__PURE__ */ jsx58(ToastItem, { toast: toast2, onClose: () => removeToast(toast2.id) }, toast2.id)) })
|
|
1647
|
+
] });
|
|
1648
|
+
};
|
|
1649
|
+
var ToastItem = ({ toast: toast2, onClose }) => {
|
|
1650
|
+
const typeStyles = {
|
|
1651
|
+
success: "bg-green-50 dark:bg-green-900/30 border-green-500 text-green-800 dark:text-green-200",
|
|
1652
|
+
error: "bg-red-50 dark:bg-red-900/30 border-red-500 text-red-800 dark:text-red-200",
|
|
1653
|
+
warning: "bg-yellow-50 dark:bg-yellow-900/30 border-yellow-500 text-yellow-800 dark:text-yellow-200",
|
|
1654
|
+
info: "bg-blue-50 dark:bg-blue-900/30 border-blue-500 text-blue-800 dark:text-blue-200"
|
|
1655
|
+
};
|
|
1656
|
+
const typeIcons = {
|
|
1657
|
+
success: /* @__PURE__ */ jsx58(CheckIcon, { size: "sm", className: "text-green-600 dark:text-green-400" }),
|
|
1658
|
+
error: /* @__PURE__ */ jsx58(CloseIcon, { size: "sm", className: "text-red-600 dark:text-red-400" }),
|
|
1659
|
+
warning: /* @__PURE__ */ jsx58("svg", { className: "w-4 h-4 text-yellow-600 dark:text-yellow-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx58("path", { fillRule: "evenodd", d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z", clipRule: "evenodd" }) }),
|
|
1660
|
+
info: /* @__PURE__ */ jsx58("svg", { className: "w-4 h-4 text-blue-600 dark:text-blue-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx58("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }) })
|
|
1661
|
+
};
|
|
1662
|
+
const type = toast2.type || "info";
|
|
1663
|
+
return /* @__PURE__ */ jsxs23(
|
|
1664
|
+
"div",
|
|
1665
|
+
{
|
|
1666
|
+
className: `flex items-start gap-3 p-4 rounded-lg border-l-4 shadow-lg backdrop-blur-sm ${typeStyles[type]} animate-slide-in`,
|
|
1667
|
+
role: "alert",
|
|
1668
|
+
children: [
|
|
1669
|
+
/* @__PURE__ */ jsx58("div", { className: "flex-shrink-0 mt-0.5", children: typeIcons[type] }),
|
|
1670
|
+
/* @__PURE__ */ jsx58("p", { className: "flex-1 text-sm font-medium", children: toast2.message }),
|
|
1671
|
+
/* @__PURE__ */ jsx58(
|
|
1672
|
+
"button",
|
|
1673
|
+
{
|
|
1674
|
+
onClick: onClose,
|
|
1675
|
+
className: "flex-shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors",
|
|
1676
|
+
"aria-label": "Close",
|
|
1677
|
+
children: /* @__PURE__ */ jsx58(CloseIcon, { size: "sm" })
|
|
1678
|
+
}
|
|
1679
|
+
)
|
|
1680
|
+
]
|
|
1681
|
+
}
|
|
1682
|
+
);
|
|
1683
|
+
};
|
|
1684
|
+
var toast = {
|
|
1685
|
+
success: (message, duration) => ({
|
|
1686
|
+
message,
|
|
1687
|
+
type: "success",
|
|
1688
|
+
duration
|
|
1689
|
+
}),
|
|
1690
|
+
error: (message, duration) => ({
|
|
1691
|
+
message,
|
|
1692
|
+
type: "error",
|
|
1693
|
+
duration
|
|
1694
|
+
}),
|
|
1695
|
+
warning: (message, duration) => ({
|
|
1696
|
+
message,
|
|
1697
|
+
type: "warning",
|
|
1698
|
+
duration
|
|
1699
|
+
}),
|
|
1700
|
+
info: (message, duration) => ({
|
|
1701
|
+
message,
|
|
1702
|
+
type: "info",
|
|
1703
|
+
duration
|
|
1704
|
+
})
|
|
1705
|
+
};
|
|
1706
|
+
|
|
1707
|
+
// src/components/Stepper.tsx
|
|
1708
|
+
import React18 from "react";
|
|
1709
|
+
import { jsx as jsx59, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1710
|
+
var Stepper = ({
|
|
1711
|
+
steps,
|
|
1712
|
+
currentStep,
|
|
1713
|
+
orientation = "horizontal",
|
|
1714
|
+
className = ""
|
|
1715
|
+
}) => {
|
|
1716
|
+
const isHorizontal = orientation === "horizontal";
|
|
1717
|
+
return /* @__PURE__ */ jsx59("div", { className: `${isHorizontal ? "flex items-center" : "flex flex-col"} ${className}`, children: steps.map((step, index) => {
|
|
1718
|
+
const stepNumber = index + 1;
|
|
1719
|
+
const isActive = stepNumber === currentStep;
|
|
1720
|
+
const isCompleted = stepNumber < currentStep;
|
|
1721
|
+
const isLast = index === steps.length - 1;
|
|
1722
|
+
return /* @__PURE__ */ jsxs24(React18.Fragment, { children: [
|
|
1723
|
+
/* @__PURE__ */ jsxs24("div", { className: `flex ${isHorizontal ? "flex-col items-center" : "flex-row items-start"} ${isHorizontal ? "" : "flex-1"}`, children: [
|
|
1724
|
+
/* @__PURE__ */ jsx59("div", { className: "flex items-center", children: /* @__PURE__ */ jsx59(
|
|
1725
|
+
"div",
|
|
1726
|
+
{
|
|
1727
|
+
className: `flex items-center justify-center w-10 h-10 rounded-full border-2 transition-all ${isCompleted ? "bg-blue-600 border-blue-600 dark:bg-blue-500 dark:border-blue-500" : isActive ? "border-blue-600 bg-white dark:border-blue-500 dark:bg-gray-800" : "border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800"}`,
|
|
1728
|
+
children: isCompleted ? /* @__PURE__ */ jsx59(CheckIcon, { size: "sm", className: "text-white" }) : /* @__PURE__ */ jsx59(
|
|
1729
|
+
"span",
|
|
1730
|
+
{
|
|
1731
|
+
className: `text-sm font-semibold ${isActive ? "text-blue-600 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`,
|
|
1732
|
+
children: stepNumber
|
|
1733
|
+
}
|
|
1734
|
+
)
|
|
1735
|
+
}
|
|
1736
|
+
) }),
|
|
1737
|
+
/* @__PURE__ */ jsxs24("div", { className: `${isHorizontal ? "mt-2 text-center" : "ml-4 pb-8"} ${isLast && !isHorizontal ? "pb-0" : ""}`, children: [
|
|
1738
|
+
/* @__PURE__ */ jsx59(
|
|
1739
|
+
"p",
|
|
1740
|
+
{
|
|
1741
|
+
className: `text-sm font-medium ${isActive || isCompleted ? "text-gray-900 dark:text-gray-100" : "text-gray-500 dark:text-gray-400"}`,
|
|
1742
|
+
children: step.label
|
|
1743
|
+
}
|
|
1744
|
+
),
|
|
1745
|
+
step.description && /* @__PURE__ */ jsx59("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: step.description })
|
|
1746
|
+
] })
|
|
1747
|
+
] }),
|
|
1748
|
+
!isLast && /* @__PURE__ */ jsx59(
|
|
1749
|
+
"div",
|
|
1750
|
+
{
|
|
1751
|
+
className: `${isHorizontal ? "flex-1 h-0.5 mx-4" : "w-0.5 h-full ml-5 -mt-8"} ${isCompleted || isActive && stepNumber < currentStep ? "bg-blue-600 dark:bg-blue-500" : "bg-gray-300 dark:bg-gray-600"}`
|
|
1752
|
+
}
|
|
1753
|
+
)
|
|
1754
|
+
] }, index);
|
|
1755
|
+
}) });
|
|
1756
|
+
};
|
|
1757
|
+
|
|
1758
|
+
// src/components/Divider.tsx
|
|
1759
|
+
import { jsx as jsx60, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1760
|
+
var Divider = ({
|
|
1761
|
+
orientation = "horizontal",
|
|
1762
|
+
variant = "solid",
|
|
1763
|
+
className = "",
|
|
1764
|
+
label,
|
|
1765
|
+
labelPosition = "center"
|
|
1766
|
+
}) => {
|
|
1767
|
+
const variantClasses = {
|
|
1768
|
+
solid: "border-solid",
|
|
1769
|
+
dashed: "border-dashed",
|
|
1770
|
+
dotted: "border-dotted"
|
|
1771
|
+
};
|
|
1772
|
+
if (label && orientation === "horizontal") {
|
|
1773
|
+
const alignmentClasses = {
|
|
1774
|
+
left: "justify-start",
|
|
1775
|
+
center: "justify-center",
|
|
1776
|
+
right: "justify-end"
|
|
1777
|
+
};
|
|
1778
|
+
return /* @__PURE__ */ jsxs25("div", { className: `flex items-center ${alignmentClasses[labelPosition]} ${className}`, role: "separator", children: [
|
|
1779
|
+
labelPosition !== "left" && /* @__PURE__ */ jsx60("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` }),
|
|
1780
|
+
/* @__PURE__ */ jsx60("span", { className: "px-4 text-sm text-gray-500 dark:text-gray-400", children: label }),
|
|
1781
|
+
labelPosition !== "right" && /* @__PURE__ */ jsx60("div", { className: `flex-1 border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600` })
|
|
1782
|
+
] });
|
|
1783
|
+
}
|
|
1784
|
+
if (orientation === "vertical") {
|
|
1785
|
+
return /* @__PURE__ */ jsx60(
|
|
1786
|
+
"div",
|
|
1787
|
+
{
|
|
1788
|
+
className: `inline-block h-full border-l ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
1789
|
+
role: "separator",
|
|
1790
|
+
"aria-orientation": "vertical"
|
|
1791
|
+
}
|
|
1792
|
+
);
|
|
1793
|
+
}
|
|
1794
|
+
return /* @__PURE__ */ jsx60(
|
|
1795
|
+
"hr",
|
|
1796
|
+
{
|
|
1797
|
+
className: `border-t ${variantClasses[variant]} border-gray-300 dark:border-gray-600 ${className}`,
|
|
1798
|
+
role: "separator"
|
|
1799
|
+
}
|
|
1800
|
+
);
|
|
1801
|
+
};
|
|
1802
|
+
|
|
1803
|
+
// src/components/FileUpload.tsx
|
|
1804
|
+
import { useRef as useRef3, useState as useState7 } from "react";
|
|
1805
|
+
import { jsx as jsx61, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1806
|
+
var FileUpload = ({
|
|
1807
|
+
accept,
|
|
1808
|
+
multiple = false,
|
|
1809
|
+
maxSize,
|
|
1810
|
+
maxFiles = 10,
|
|
1811
|
+
disabled = false,
|
|
1812
|
+
onChange,
|
|
1813
|
+
onError,
|
|
1814
|
+
className = "",
|
|
1815
|
+
label,
|
|
1816
|
+
helperText
|
|
1817
|
+
}) => {
|
|
1818
|
+
const [files, setFiles] = useState7([]);
|
|
1819
|
+
const [isDragging, setIsDragging] = useState7(false);
|
|
1820
|
+
const fileInputRef = useRef3(null);
|
|
1821
|
+
const formatFileSize = (bytes) => {
|
|
1822
|
+
if (bytes === 0) return "0 Bytes";
|
|
1823
|
+
const k = 1024;
|
|
1824
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
1825
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
1826
|
+
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + " " + sizes[i];
|
|
1827
|
+
};
|
|
1828
|
+
const validateFiles = (fileList) => {
|
|
1829
|
+
const validFiles = [];
|
|
1830
|
+
const filesArray = Array.from(fileList);
|
|
1831
|
+
if (filesArray.length + files.length > maxFiles) {
|
|
1832
|
+
onError?.(`Maximum ${maxFiles} files allowed`);
|
|
1833
|
+
return validFiles;
|
|
1834
|
+
}
|
|
1835
|
+
for (const file of filesArray) {
|
|
1836
|
+
if (maxSize && file.size > maxSize) {
|
|
1837
|
+
onError?.(`File ${file.name} exceeds maximum size of ${formatFileSize(maxSize)}`);
|
|
1838
|
+
continue;
|
|
1839
|
+
}
|
|
1840
|
+
validFiles.push(file);
|
|
1841
|
+
}
|
|
1842
|
+
return validFiles;
|
|
1843
|
+
};
|
|
1844
|
+
const handleFiles = (fileList) => {
|
|
1845
|
+
if (!fileList || disabled) return;
|
|
1846
|
+
const validFiles = validateFiles(fileList);
|
|
1847
|
+
if (validFiles.length > 0) {
|
|
1848
|
+
const newFiles = multiple ? [...files, ...validFiles] : validFiles;
|
|
1849
|
+
setFiles(newFiles);
|
|
1850
|
+
onChange?.(newFiles);
|
|
1851
|
+
}
|
|
1852
|
+
};
|
|
1853
|
+
const handleDrop = (e) => {
|
|
1854
|
+
e.preventDefault();
|
|
1855
|
+
setIsDragging(false);
|
|
1856
|
+
handleFiles(e.dataTransfer.files);
|
|
1857
|
+
};
|
|
1858
|
+
const handleDragOver = (e) => {
|
|
1859
|
+
e.preventDefault();
|
|
1860
|
+
if (!disabled) {
|
|
1861
|
+
setIsDragging(true);
|
|
1862
|
+
}
|
|
1863
|
+
};
|
|
1864
|
+
const handleDragLeave = (e) => {
|
|
1865
|
+
e.preventDefault();
|
|
1866
|
+
setIsDragging(false);
|
|
1867
|
+
};
|
|
1868
|
+
const handleClick = () => {
|
|
1869
|
+
if (!disabled) {
|
|
1870
|
+
fileInputRef.current?.click();
|
|
1871
|
+
}
|
|
1872
|
+
};
|
|
1873
|
+
const handleRemoveFile = (index) => {
|
|
1874
|
+
const newFiles = files.filter((_, i) => i !== index);
|
|
1875
|
+
setFiles(newFiles);
|
|
1876
|
+
onChange?.(newFiles);
|
|
1877
|
+
};
|
|
1878
|
+
return /* @__PURE__ */ jsxs26("div", { className: `w-full ${className}`, children: [
|
|
1879
|
+
label && /* @__PURE__ */ jsx61("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2", children: label }),
|
|
1880
|
+
/* @__PURE__ */ jsxs26(
|
|
1881
|
+
"div",
|
|
1882
|
+
{
|
|
1883
|
+
onDrop: handleDrop,
|
|
1884
|
+
onDragOver: handleDragOver,
|
|
1885
|
+
onDragLeave: handleDragLeave,
|
|
1886
|
+
onClick: handleClick,
|
|
1887
|
+
className: `relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all ${isDragging ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"} ${disabled ? "opacity-50 cursor-not-allowed" : ""}`,
|
|
1888
|
+
children: [
|
|
1889
|
+
/* @__PURE__ */ jsx61(
|
|
1890
|
+
"input",
|
|
1891
|
+
{
|
|
1892
|
+
ref: fileInputRef,
|
|
1893
|
+
type: "file",
|
|
1894
|
+
accept,
|
|
1895
|
+
multiple,
|
|
1896
|
+
onChange: (e) => handleFiles(e.target.files),
|
|
1897
|
+
disabled,
|
|
1898
|
+
className: "hidden"
|
|
1899
|
+
}
|
|
1900
|
+
),
|
|
1901
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex flex-col items-center gap-2", children: [
|
|
1902
|
+
/* @__PURE__ */ jsx61("div", { className: "w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center", children: /* @__PURE__ */ jsx61(UploadIcon, { size: "lg", className: "text-gray-400 dark:text-gray-500" }) }),
|
|
1903
|
+
/* @__PURE__ */ jsxs26("div", { children: [
|
|
1904
|
+
/* @__PURE__ */ jsxs26("p", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: [
|
|
1905
|
+
/* @__PURE__ */ jsx61("span", { className: "text-blue-600 dark:text-blue-400", children: "Click to upload" }),
|
|
1906
|
+
" or drag and drop"
|
|
1907
|
+
] }),
|
|
1908
|
+
/* @__PURE__ */ jsxs26("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: [
|
|
1909
|
+
accept ? `Accepted: ${accept}` : "Any file type",
|
|
1910
|
+
maxSize && ` \u2022 Max size: ${formatFileSize(maxSize)}`
|
|
1911
|
+
] })
|
|
1912
|
+
] })
|
|
1913
|
+
] })
|
|
1914
|
+
]
|
|
1915
|
+
}
|
|
1916
|
+
),
|
|
1917
|
+
helperText && /* @__PURE__ */ jsx61("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: helperText }),
|
|
1918
|
+
files.length > 0 && /* @__PURE__ */ jsx61("div", { className: "mt-4 space-y-2", children: files.map((file, index) => /* @__PURE__ */ jsxs26(
|
|
1919
|
+
"div",
|
|
1920
|
+
{
|
|
1921
|
+
className: "flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700",
|
|
1922
|
+
children: [
|
|
1923
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex-1 min-w-0", children: [
|
|
1924
|
+
/* @__PURE__ */ jsx61("p", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 truncate", children: file.name }),
|
|
1925
|
+
/* @__PURE__ */ jsx61("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: formatFileSize(file.size) })
|
|
1926
|
+
] }),
|
|
1927
|
+
/* @__PURE__ */ jsx61(
|
|
1928
|
+
"button",
|
|
1929
|
+
{
|
|
1930
|
+
onClick: (e) => {
|
|
1931
|
+
e.stopPropagation();
|
|
1932
|
+
handleRemoveFile(index);
|
|
1933
|
+
},
|
|
1934
|
+
className: "ml-4 text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors",
|
|
1935
|
+
"aria-label": "Remove file",
|
|
1936
|
+
children: /* @__PURE__ */ jsx61(CloseIcon, { size: "sm" })
|
|
1937
|
+
}
|
|
1938
|
+
)
|
|
1939
|
+
]
|
|
1940
|
+
},
|
|
1941
|
+
index
|
|
1942
|
+
)) })
|
|
1943
|
+
] });
|
|
1944
|
+
};
|
|
1945
|
+
|
|
1946
|
+
// src/utils/theme-script.ts
|
|
1947
|
+
var themeScript = `
|
|
1948
|
+
(function() {
|
|
1949
|
+
try {
|
|
1950
|
+
// Get stored preferences
|
|
1951
|
+
const storedTheme = localStorage.getItem('lite-ui-theme') || 'default';
|
|
1952
|
+
const storedColorMode = localStorage.getItem('lite-ui-color-mode');
|
|
1953
|
+
|
|
1954
|
+
// Determine color mode (system, light, or dark)
|
|
1955
|
+
let colorMode = storedColorMode;
|
|
1956
|
+
if (!colorMode || colorMode === 'system') {
|
|
1957
|
+
colorMode = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
1958
|
+
}
|
|
1959
|
+
|
|
1960
|
+
// Set attributes before render
|
|
1961
|
+
document.documentElement.setAttribute('data-theme', storedTheme);
|
|
1962
|
+
document.documentElement.setAttribute('data-color-mode', colorMode);
|
|
1963
|
+
|
|
1964
|
+
// Add dark class for Tailwind
|
|
1965
|
+
if (colorMode === 'dark') {
|
|
1966
|
+
document.documentElement.classList.add('dark');
|
|
1967
|
+
} else {
|
|
1968
|
+
document.documentElement.classList.remove('dark');
|
|
1969
|
+
}
|
|
1970
|
+
} catch (e) {
|
|
1971
|
+
console.error('Failed to initialize theme:', e);
|
|
1972
|
+
}
|
|
1973
|
+
})();
|
|
1974
|
+
`;
|
|
1975
|
+
function getThemeScript() {
|
|
1976
|
+
return themeScript;
|
|
1977
|
+
}
|
|
1295
1978
|
export {
|
|
1296
1979
|
ActionMenu,
|
|
1297
1980
|
Alert,
|
|
1298
1981
|
AppleIcon,
|
|
1982
|
+
Avatar,
|
|
1299
1983
|
Badge,
|
|
1300
1984
|
BellIcon,
|
|
1301
1985
|
Button,
|
|
@@ -1309,10 +1993,12 @@ export {
|
|
|
1309
1993
|
CloseIcon,
|
|
1310
1994
|
DatePicker,
|
|
1311
1995
|
DateTimePicker,
|
|
1996
|
+
Divider,
|
|
1312
1997
|
DownloadIcon,
|
|
1313
1998
|
Drawer,
|
|
1314
1999
|
EditIcon,
|
|
1315
2000
|
FacebookIcon,
|
|
2001
|
+
FileUpload,
|
|
1316
2002
|
GitHubIcon,
|
|
1317
2003
|
GoogleIcon,
|
|
1318
2004
|
HeartIcon,
|
|
@@ -1325,19 +2011,25 @@ export {
|
|
|
1325
2011
|
Navbar,
|
|
1326
2012
|
Pagination,
|
|
1327
2013
|
PlusIcon,
|
|
2014
|
+
ProgressBar,
|
|
2015
|
+
Radio,
|
|
1328
2016
|
SearchIcon,
|
|
1329
2017
|
Select,
|
|
1330
2018
|
SettingsIcon,
|
|
1331
2019
|
Sidebar,
|
|
1332
2020
|
SidebarProvider,
|
|
1333
2021
|
SlackIcon,
|
|
2022
|
+
Slider,
|
|
1334
2023
|
Spinner,
|
|
1335
2024
|
StarIcon,
|
|
2025
|
+
Stepper,
|
|
1336
2026
|
Table,
|
|
1337
2027
|
Tabs,
|
|
1338
2028
|
TextInput,
|
|
2029
|
+
Textarea,
|
|
1339
2030
|
ThemeProvider,
|
|
1340
2031
|
TimePicker,
|
|
2032
|
+
ToastProvider,
|
|
1341
2033
|
Toggle,
|
|
1342
2034
|
TrashIcon,
|
|
1343
2035
|
TwitterIcon,
|
|
@@ -1347,7 +2039,9 @@ export {
|
|
|
1347
2039
|
getThemeScript,
|
|
1348
2040
|
themeScript,
|
|
1349
2041
|
themes,
|
|
2042
|
+
toast,
|
|
1350
2043
|
useSidebar,
|
|
1351
|
-
useTheme
|
|
2044
|
+
useTheme,
|
|
2045
|
+
useToast
|
|
1352
2046
|
};
|
|
1353
2047
|
//# sourceMappingURL=index.mjs.map
|