@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.mjs CHANGED
@@ -1102,41 +1102,270 @@ var DateTimePicker = forwardRef6(
1102
1102
  );
1103
1103
  DateTimePicker.displayName = "DateTimePicker";
1104
1104
 
1105
- // src/utils/theme-script.ts
1106
- var themeScript = `
1107
- (function() {
1108
- try {
1109
- // Get stored preferences
1110
- const storedTheme = localStorage.getItem('lite-ui-theme') || 'default';
1111
- const storedColorMode = localStorage.getItem('lite-ui-color-mode');
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
- // Determine color mode (system, light, or dark)
1114
- let colorMode = storedColorMode;
1115
- if (!colorMode || colorMode === 'system') {
1116
- colorMode = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
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
- // Set attributes before render
1120
- document.documentElement.setAttribute('data-theme', storedTheme);
1121
- document.documentElement.setAttribute('data-color-mode', colorMode);
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
- // Add dark class for Tailwind
1124
- if (colorMode === 'dark') {
1125
- document.documentElement.classList.add('dark');
1126
- } else {
1127
- document.documentElement.classList.remove('dark');
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
- } catch (e) {
1130
- console.error('Failed to initialize theme:', e);
1131
- }
1132
- })();
1133
- `;
1134
- function getThemeScript() {
1135
- return themeScript;
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/icons/Icon.tsx
1139
- import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
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__ */ jsx23(
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" })
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__ */ jsx23("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" })
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__ */ jsxs17(Fragment3, { children: [
1184
- /* @__PURE__ */ jsx23("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" }),
1185
- /* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
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__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" })
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__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" })
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__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
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__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
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__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" })
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__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" })
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsxs17(Fragment3, { children: [
1243
- /* @__PURE__ */ jsx23("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" }),
1244
- /* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z" })
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__ */ jsx23("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" })
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__ */ jsx23("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" })
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__ */ jsx23("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" }),
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__ */ jsx23("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" }),
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__ */ jsx23("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" }),
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__ */ jsx23("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" }),
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__ */ jsx23("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" }),
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__ */ jsx23("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" }),
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__ */ jsx23("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" }),
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__ */ jsx23("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" }),
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