@iniguezmarc/design-system 0.0.3 → 0.0.5

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.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import se, { useState as C, useEffect as B } from "react";
2
- var S = { exports: {} }, y = {};
1
+ import se, { forwardRef as ne, useState as I, useEffect as Q } from "react";
2
+ var W = { exports: {} }, A = {};
3
3
  /**
4
4
  * @license React
5
5
  * react-jsx-runtime.production.js
@@ -9,29 +9,29 @@ var S = { exports: {} }, y = {};
9
9
  * This source code is licensed under the MIT license found in the
10
10
  * LICENSE file in the root directory of this source tree.
11
11
  */
12
- var z;
13
- function ne() {
14
- if (z) return y;
15
- z = 1;
16
- var o = Symbol.for("react.transitional.element"), d = Symbol.for("react.fragment");
17
- function i(s, a, t) {
12
+ var X;
13
+ function oe() {
14
+ if (X) return A;
15
+ X = 1;
16
+ var o = Symbol.for("react.transitional.element"), c = Symbol.for("react.fragment");
17
+ function i(n, a, t) {
18
18
  var u = null;
19
19
  if (t !== void 0 && (u = "" + t), a.key !== void 0 && (u = "" + a.key), "key" in a) {
20
20
  t = {};
21
- for (var c in a)
22
- c !== "key" && (t[c] = a[c]);
21
+ for (var s in a)
22
+ s !== "key" && (t[s] = a[s]);
23
23
  } else t = a;
24
24
  return a = t.ref, {
25
25
  $$typeof: o,
26
- type: s,
26
+ type: n,
27
27
  key: u,
28
28
  ref: a !== void 0 ? a : null,
29
29
  props: t
30
30
  };
31
31
  }
32
- return y.Fragment = d, y.jsx = i, y.jsxs = i, y;
32
+ return A.Fragment = c, A.jsx = i, A.jsxs = i, A;
33
33
  }
34
- var N = {};
34
+ var O = {};
35
35
  /**
36
36
  * @license React
37
37
  * react-jsx-runtime.development.js
@@ -41,406 +41,495 @@ var N = {};
41
41
  * This source code is licensed under the MIT license found in the
42
42
  * LICENSE file in the root directory of this source tree.
43
43
  */
44
- var F;
45
- function oe() {
46
- return F || (F = 1, process.env.NODE_ENV !== "production" && function() {
47
- function o(e) {
48
- if (e == null) return null;
49
- if (typeof e == "function")
50
- return e.$$typeof === re ? null : e.displayName || e.name || null;
51
- if (typeof e == "string") return e;
52
- switch (e) {
53
- case k:
44
+ var J;
45
+ function le() {
46
+ return J || (J = 1, process.env.NODE_ENV !== "production" && function() {
47
+ function o(r) {
48
+ if (r == null) return null;
49
+ if (typeof r == "function")
50
+ return r.$$typeof === re ? null : r.displayName || r.name || null;
51
+ if (typeof r == "string") return r;
52
+ switch (r) {
53
+ case w:
54
54
  return "Fragment";
55
- case G:
55
+ case N:
56
56
  return "Profiler";
57
- case U:
57
+ case $:
58
58
  return "StrictMode";
59
- case Z:
59
+ case R:
60
60
  return "Suspense";
61
- case Q:
61
+ case P:
62
62
  return "SuspenseList";
63
63
  case ee:
64
64
  return "Activity";
65
65
  }
66
- if (typeof e == "object")
67
- switch (typeof e.tag == "number" && console.error(
66
+ if (typeof r == "object")
67
+ switch (typeof r.tag == "number" && console.error(
68
68
  "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
69
- ), e.$$typeof) {
70
- case E:
69
+ ), r.$$typeof) {
70
+ case y:
71
71
  return "Portal";
72
- case q:
73
- return e.displayName || "Context";
74
- case X:
75
- return (e._context.displayName || "Context") + ".Consumer";
76
- case J:
77
- var n = e.render;
78
- return e = e.displayName, e || (e = n.displayName || n.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
79
- case K:
80
- return n = e.displayName || null, n !== null ? n : o(e.type) || "Memo";
72
+ case _:
73
+ return r.displayName || "Context";
74
+ case E:
75
+ return (r._context.displayName || "Context") + ".Consumer";
81
76
  case T:
82
- n = e._payload, e = e._init;
77
+ var l = r.render;
78
+ return r = r.displayName, r || (r = l.displayName || l.name || "", r = r !== "" ? "ForwardRef(" + r + ")" : "ForwardRef"), r;
79
+ case C:
80
+ return l = r.displayName || null, l !== null ? l : o(r.type) || "Memo";
81
+ case D:
82
+ l = r._payload, r = r._init;
83
83
  try {
84
- return o(e(n));
84
+ return o(r(l));
85
85
  } catch {
86
86
  }
87
87
  }
88
88
  return null;
89
89
  }
90
- function d(e) {
91
- return "" + e;
90
+ function c(r) {
91
+ return "" + r;
92
92
  }
93
- function i(e) {
93
+ function i(r) {
94
94
  try {
95
- d(e);
96
- var n = !1;
95
+ c(r);
96
+ var l = !1;
97
97
  } catch {
98
- n = !0;
98
+ l = !0;
99
99
  }
100
- if (n) {
101
- n = console;
102
- var x = n.error, m = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
103
- return x.call(
104
- n,
100
+ if (l) {
101
+ l = console;
102
+ var g = l.error, b = typeof Symbol == "function" && Symbol.toStringTag && r[Symbol.toStringTag] || r.constructor.name || "Object";
103
+ return g.call(
104
+ l,
105
105
  "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
106
- m
107
- ), d(e);
106
+ b
107
+ ), c(r);
108
108
  }
109
109
  }
110
- function s(e) {
111
- if (e === k) return "<>";
112
- if (typeof e == "object" && e !== null && e.$$typeof === T)
110
+ function n(r) {
111
+ if (r === w) return "<>";
112
+ if (typeof r == "object" && r !== null && r.$$typeof === D)
113
113
  return "<...>";
114
114
  try {
115
- var n = o(e);
116
- return n ? "<" + n + ">" : "<...>";
115
+ var l = o(r);
116
+ return l ? "<" + l + ">" : "<...>";
117
117
  } catch {
118
118
  return "<...>";
119
119
  }
120
120
  }
121
121
  function a() {
122
- var e = R.A;
123
- return e === null ? null : e.getOwner();
122
+ var r = L.A;
123
+ return r === null ? null : r.getOwner();
124
124
  }
125
125
  function t() {
126
126
  return Error("react-stack-top-frame");
127
127
  }
128
- function u(e) {
129
- if (L.call(e, "key")) {
130
- var n = Object.getOwnPropertyDescriptor(e, "key").get;
131
- if (n && n.isReactWarning) return !1;
128
+ function u(r) {
129
+ if (F.call(r, "key")) {
130
+ var l = Object.getOwnPropertyDescriptor(r, "key").get;
131
+ if (l && l.isReactWarning) return !1;
132
132
  }
133
- return e.key !== void 0;
133
+ return r.key !== void 0;
134
134
  }
135
- function c(e, n) {
136
- function x() {
137
- M || (M = !0, console.error(
135
+ function s(r, l) {
136
+ function g() {
137
+ V || (V = !0, console.error(
138
138
  "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
139
- n
139
+ l
140
140
  ));
141
141
  }
142
- x.isReactWarning = !0, Object.defineProperty(e, "key", {
143
- get: x,
142
+ g.isReactWarning = !0, Object.defineProperty(r, "key", {
143
+ get: g,
144
144
  configurable: !0
145
145
  });
146
146
  }
147
- function p() {
148
- var e = o(this.type);
149
- return D[e] || (D[e] = !0, console.error(
147
+ function x() {
148
+ var r = o(this.type);
149
+ return H[r] || (H[r] = !0, console.error(
150
150
  "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
151
- )), e = this.props.ref, e !== void 0 ? e : null;
151
+ )), r = this.props.ref, r !== void 0 ? r : null;
152
152
  }
153
- function f(e, n, x, m, _, O) {
154
- var g = x.ref;
155
- return e = {
156
- $$typeof: h,
157
- type: e,
158
- key: n,
159
- props: x,
160
- _owner: m
161
- }, (g !== void 0 ? g : null) !== null ? Object.defineProperty(e, "ref", {
153
+ function f(r, l, g, b, S, Y) {
154
+ var h = g.ref;
155
+ return r = {
156
+ $$typeof: j,
157
+ type: r,
158
+ key: l,
159
+ props: g,
160
+ _owner: b
161
+ }, (h !== void 0 ? h : null) !== null ? Object.defineProperty(r, "ref", {
162
162
  enumerable: !1,
163
- get: p
164
- }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
163
+ get: x
164
+ }) : Object.defineProperty(r, "ref", { enumerable: !1, value: null }), r._store = {}, Object.defineProperty(r._store, "validated", {
165
165
  configurable: !1,
166
166
  enumerable: !1,
167
167
  writable: !0,
168
168
  value: 0
169
- }), Object.defineProperty(e, "_debugInfo", {
169
+ }), Object.defineProperty(r, "_debugInfo", {
170
170
  configurable: !1,
171
171
  enumerable: !1,
172
172
  writable: !0,
173
173
  value: null
174
- }), Object.defineProperty(e, "_debugStack", {
174
+ }), Object.defineProperty(r, "_debugStack", {
175
175
  configurable: !1,
176
176
  enumerable: !1,
177
177
  writable: !0,
178
- value: _
179
- }), Object.defineProperty(e, "_debugTask", {
178
+ value: S
179
+ }), Object.defineProperty(r, "_debugTask", {
180
180
  configurable: !1,
181
181
  enumerable: !1,
182
182
  writable: !0,
183
- value: O
184
- }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
183
+ value: Y
184
+ }), Object.freeze && (Object.freeze(r.props), Object.freeze(r)), r;
185
185
  }
186
- function l(e, n, x, m, _, O) {
187
- var g = n.children;
188
- if (g !== void 0)
189
- if (m)
190
- if (te(g)) {
191
- for (m = 0; m < g.length; m++)
192
- b(g[m]);
193
- Object.freeze && Object.freeze(g);
186
+ function d(r, l, g, b, S, Y) {
187
+ var h = l.children;
188
+ if (h !== void 0)
189
+ if (b)
190
+ if (te(h)) {
191
+ for (b = 0; b < h.length; b++)
192
+ m(h[b]);
193
+ Object.freeze && Object.freeze(h);
194
194
  } else
195
195
  console.error(
196
196
  "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
197
197
  );
198
- else b(g);
199
- if (L.call(n, "key")) {
200
- g = o(e);
201
- var j = Object.keys(n).filter(function(ae) {
198
+ else m(h);
199
+ if (F.call(l, "key")) {
200
+ h = o(r);
201
+ var k = Object.keys(l).filter(function(ae) {
202
202
  return ae !== "key";
203
203
  });
204
- m = 0 < j.length ? "{key: someKey, " + j.join(": ..., ") + ": ...}" : "{key: someKey}", W[g + m] || (j = 0 < j.length ? "{" + j.join(": ..., ") + ": ...}" : "{}", console.error(
204
+ b = 0 < k.length ? "{key: someKey, " + k.join(": ..., ") + ": ...}" : "{key: someKey}", q[h + b] || (k = 0 < k.length ? "{" + k.join(": ..., ") + ": ...}" : "{}", console.error(
205
205
  `A props object containing a "key" prop is being spread into JSX:
206
206
  let props = %s;
207
207
  <%s {...props} />
208
208
  React keys must be passed directly to JSX without using spread:
209
209
  let props = %s;
210
210
  <%s key={someKey} {...props} />`,
211
- m,
212
- g,
213
- j,
214
- g
215
- ), W[g + m] = !0);
211
+ b,
212
+ h,
213
+ k,
214
+ h
215
+ ), q[h + b] = !0);
216
216
  }
217
- if (g = null, x !== void 0 && (i(x), g = "" + x), u(n) && (i(n.key), g = "" + n.key), "key" in n) {
218
- x = {};
219
- for (var P in n)
220
- P !== "key" && (x[P] = n[P]);
221
- } else x = n;
222
- return g && c(
223
- x,
224
- typeof e == "function" ? e.displayName || e.name || "Unknown" : e
217
+ if (h = null, g !== void 0 && (i(g), h = "" + g), u(l) && (i(l.key), h = "" + l.key), "key" in l) {
218
+ g = {};
219
+ for (var z in l)
220
+ z !== "key" && (g[z] = l[z]);
221
+ } else g = l;
222
+ return h && s(
223
+ g,
224
+ typeof r == "function" ? r.displayName || r.name || "Unknown" : r
225
225
  ), f(
226
- e,
226
+ r,
227
+ h,
227
228
  g,
228
- x,
229
229
  a(),
230
- _,
231
- O
230
+ S,
231
+ Y
232
232
  );
233
233
  }
234
- function b(e) {
235
- v(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === T && (e._payload.status === "fulfilled" ? v(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
234
+ function m(r) {
235
+ p(r) ? r._store && (r._store.validated = 1) : typeof r == "object" && r !== null && r.$$typeof === D && (r._payload.status === "fulfilled" ? p(r._payload.value) && r._payload.value._store && (r._payload.value._store.validated = 1) : r._store && (r._store.validated = 1));
236
236
  }
237
- function v(e) {
238
- return typeof e == "object" && e !== null && e.$$typeof === h;
237
+ function p(r) {
238
+ return typeof r == "object" && r !== null && r.$$typeof === j;
239
239
  }
240
- var w = se, h = Symbol.for("react.transitional.element"), E = Symbol.for("react.portal"), k = Symbol.for("react.fragment"), U = Symbol.for("react.strict_mode"), G = Symbol.for("react.profiler"), X = Symbol.for("react.consumer"), q = Symbol.for("react.context"), J = Symbol.for("react.forward_ref"), Z = Symbol.for("react.suspense"), Q = Symbol.for("react.suspense_list"), K = Symbol.for("react.memo"), T = Symbol.for("react.lazy"), ee = Symbol.for("react.activity"), re = Symbol.for("react.client.reference"), R = w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, L = Object.prototype.hasOwnProperty, te = Array.isArray, A = console.createTask ? console.createTask : function() {
240
+ var v = se, j = Symbol.for("react.transitional.element"), y = Symbol.for("react.portal"), w = Symbol.for("react.fragment"), $ = Symbol.for("react.strict_mode"), N = Symbol.for("react.profiler"), E = Symbol.for("react.consumer"), _ = Symbol.for("react.context"), T = Symbol.for("react.forward_ref"), R = Symbol.for("react.suspense"), P = Symbol.for("react.suspense_list"), C = Symbol.for("react.memo"), D = Symbol.for("react.lazy"), ee = Symbol.for("react.activity"), re = Symbol.for("react.client.reference"), L = v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, F = Object.prototype.hasOwnProperty, te = Array.isArray, B = console.createTask ? console.createTask : function() {
241
241
  return null;
242
242
  };
243
- w = {
244
- react_stack_bottom_frame: function(e) {
245
- return e();
243
+ v = {
244
+ react_stack_bottom_frame: function(r) {
245
+ return r();
246
246
  }
247
247
  };
248
- var M, D = {}, Y = w.react_stack_bottom_frame.bind(
249
- w,
248
+ var V, H = {}, G = v.react_stack_bottom_frame.bind(
249
+ v,
250
250
  t
251
- )(), I = A(s(t)), W = {};
252
- N.Fragment = k, N.jsx = function(e, n, x) {
253
- var m = 1e4 > R.recentlyCreatedOwnerStacks++;
254
- return l(
255
- e,
256
- n,
257
- x,
251
+ )(), U = B(n(t)), q = {};
252
+ O.Fragment = w, O.jsx = function(r, l, g) {
253
+ var b = 1e4 > L.recentlyCreatedOwnerStacks++;
254
+ return d(
255
+ r,
256
+ l,
257
+ g,
258
258
  !1,
259
- m ? Error("react-stack-top-frame") : Y,
260
- m ? A(s(e)) : I
259
+ b ? Error("react-stack-top-frame") : G,
260
+ b ? B(n(r)) : U
261
261
  );
262
- }, N.jsxs = function(e, n, x) {
263
- var m = 1e4 > R.recentlyCreatedOwnerStacks++;
264
- return l(
265
- e,
266
- n,
267
- x,
262
+ }, O.jsxs = function(r, l, g) {
263
+ var b = 1e4 > L.recentlyCreatedOwnerStacks++;
264
+ return d(
265
+ r,
266
+ l,
267
+ g,
268
268
  !0,
269
- m ? Error("react-stack-top-frame") : Y,
270
- m ? A(s(e)) : I
269
+ b ? Error("react-stack-top-frame") : G,
270
+ b ? B(n(r)) : U
271
271
  );
272
272
  };
273
- }()), N;
273
+ }()), O;
274
274
  }
275
- process.env.NODE_ENV === "production" ? S.exports = ne() : S.exports = oe();
276
- var r = S.exports;
277
- const le = ({
275
+ process.env.NODE_ENV === "production" ? W.exports = oe() : W.exports = le();
276
+ var e = W.exports;
277
+ const ie = ({
278
278
  src: o,
279
- alt: d = "Avatar",
279
+ alt: c = "Avatar",
280
280
  size: i = "md",
281
- imageFit: s = "cover",
281
+ imageFit: n = "cover",
282
282
  customStyles: a = {},
283
- className: t = ""
283
+ className: t = "",
284
+ borderColor: u = "border-gray-200",
285
+ darkBorderColor: s = "dark:border-gray-700",
286
+ backgroundColor: x = "bg-gray-100",
287
+ darkBackgroundColor: f = "dark:bg-gray-800",
288
+ loading: d = "lazy"
284
289
  }) => {
285
- const u = {
290
+ const m = {
286
291
  sm: "h-8 w-8",
287
292
  md: "h-12 w-12",
288
293
  lg: "h-16 w-16",
289
294
  xl: "h-32 w-32"
290
- }, c = s === "contain" ? "object-contain" : "object-cover";
291
- return /* @__PURE__ */ r.jsx("div", { className: `
292
- ds-avatar relative rounded-full overflow-hidden bg-gray-100 dark:bg-gray-800 border border-gray-200 dark:border-gray-700 flex-shrink-0
293
- ${u[i]}
294
- ${a.container || ""}
295
- ${t}
296
- `, children: /* @__PURE__ */ r.jsx(
295
+ }, p = n === "contain" ? "object-contain" : "object-cover", v = `border ${u} ${s}`, j = `${x} ${f}`;
296
+ return /* @__PURE__ */ e.jsx("div", { className: `
297
+ ds-avatar relative rounded-full overflow-hidden flex-shrink-0
298
+ ${m[i]}
299
+ ${j}
300
+ ${v}
301
+ ${a.container || ""}
302
+ ${t}
303
+ `, children: /* @__PURE__ */ e.jsx(
297
304
  "img",
298
305
  {
299
306
  src: o,
300
- alt: d,
307
+ alt: c,
308
+ loading: d,
309
+ decoding: "async",
301
310
  className: `
302
- w-full h-full
303
- ${c}
304
- ${a.image || ""}
305
- `
311
+ w-full h-full
312
+ ${p}
313
+ ${a.image || ""}
314
+ `
306
315
  }
307
316
  ) });
308
- }, H = ({
317
+ }, K = ({
309
318
  label: o,
310
- variant: d = "primary",
319
+ variant: c = "primary",
311
320
  customStyles: i = {},
312
- className: s = ""
321
+ className: n = "",
322
+ endIcon: a,
323
+ // Default Colors
324
+ primaryColor: t = "bg-blue-100 text-blue-800",
325
+ darkPrimaryColor: u = "dark:bg-blue-900/50 dark:text-blue-200",
326
+ secondaryColor: s = "bg-gray-100 text-gray-800",
327
+ darkSecondaryColor: x = "dark:bg-gray-700 dark:text-gray-300",
328
+ outlineColor: f = "border border-gray-300 text-gray-600 bg-transparent",
329
+ darkOutlineColor: d = "dark:border-gray-600 dark:text-gray-400",
330
+ successColor: m = "bg-green-100 text-green-800",
331
+ darkSuccessColor: p = "dark:bg-green-900/50 dark:text-green-200"
313
332
  }) => {
314
- const a = "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium transition-colors", t = {
315
- primary: "bg-blue-100 text-blue-800 dark:bg-blue-900/50 dark:text-blue-200",
316
- secondary: "bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300",
317
- outline: "border border-gray-300 text-gray-600 dark:border-gray-600 dark:text-gray-400 bg-transparent",
318
- success: "bg-green-100 text-green-800 dark:bg-green-900/50 dark:text-green-200"
333
+ const v = "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium transition-colors gap-1", j = {
334
+ primary: `${t} ${u}`,
335
+ secondary: `${s} ${x}`,
336
+ outline: `${f} ${d}`,
337
+ success: `${m} ${p}`
319
338
  };
320
- return /* @__PURE__ */ r.jsx("span", { className: `
321
- ds-badge
322
- ${a}
323
- ${t[d]}
324
- ${i.container || ""}
325
- ${s}
326
- `, children: o });
327
- }, $ = ({
339
+ return /* @__PURE__ */ e.jsxs("span", { className: `
340
+ ds-badge
341
+ ${v}
342
+ ${j[c]}
343
+ ${i.container || ""}
344
+ ${n}
345
+ `, children: [
346
+ /* @__PURE__ */ e.jsx("span", { className: i.label || "", children: o }),
347
+ a && /* @__PURE__ */ e.jsx("span", { className: "flex items-center", children: a })
348
+ ] });
349
+ }, M = ({
328
350
  label: o,
329
- variant: d = "primary",
351
+ variant: c = "primary",
330
352
  size: i = "medium",
331
- onClick: s,
353
+ onClick: n,
332
354
  className: a = "",
333
- href: t,
334
- target: u
355
+ customStyles: t = {},
356
+ href: u,
357
+ target: s,
358
+ // Default Colors
359
+ primaryColor: x = "bg-blue-600",
360
+ primaryHoverColor: f = "hover:bg-blue-700",
361
+ darkPrimaryColor: d = "dark:bg-blue-600",
362
+ darkPrimaryHoverColor: m = "dark:hover:bg-blue-500",
363
+ secondaryColor: p = "bg-gray-100",
364
+ secondaryHoverColor: v = "hover:bg-gray-200",
365
+ darkSecondaryColor: j = "dark:bg-gray-800",
366
+ darkSecondaryHoverColor: y = "dark:hover:bg-gray-700",
367
+ outlineColor: w = "text-blue-600 border-blue-600",
368
+ outlineHoverColor: $ = "hover:bg-blue-50",
369
+ darkOutlineColor: N = "dark:text-blue-400 dark:border-blue-400",
370
+ darkOutlineHoverColor: E = "dark:hover:bg-blue-950"
335
371
  }) => {
336
- const c = "inline-flex justify-center items-center font-bold rounded-lg cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 no-underline", p = {
337
- primary: "bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500 border-2 border-transparent",
338
- secondary: "bg-gray-100 text-gray-800 hover:bg-gray-200 focus:ring-gray-500 border-2 border-transparent",
339
- danger: "bg-red-500 text-white hover:bg-red-600 focus:ring-red-500 border-2 border-transparent",
340
- outline: "bg-transparent text-blue-600 border-2 border-blue-600 hover:bg-blue-50 focus:ring-blue-500"
341
- }, f = {
372
+ const _ = "relative group inline-flex justify-center items-center font-bold rounded-lg cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 no-underline", T = {
373
+ primary: `${x} text-white ${f} focus:ring-blue-500 border-2 border-transparent ${d} ${m}`,
374
+ secondary: `${p} text-gray-800 ${v} focus:ring-gray-500 border-2 border-transparent ${j} dark:text-gray-100 ${y}`,
375
+ outline: `bg-transparent ${w} border-2 ${$} focus:ring-blue-500 ${N} ${E}`
376
+ }, R = {
342
377
  small: "px-3 py-1.5 text-sm",
343
378
  medium: "px-5 py-2.5 text-base",
344
379
  large: "px-8 py-3.5 text-lg"
345
- }, l = `${c} ${p[d]} ${f[i]} ${a}`;
346
- return t ? /* @__PURE__ */ r.jsx(
380
+ }, P = `${_} ${T[c]} ${R[i]} ${t.container || ""} ${a}`, C = /* @__PURE__ */ e.jsx("span", { className: `relative z-10 flex items-center justify-center gap-2 ${t.label || ""}`, children: o });
381
+ return u ? /* @__PURE__ */ e.jsx(
347
382
  "a",
348
383
  {
349
- href: t,
350
- className: l,
351
- target: u,
352
- rel: u === "_blank" ? "noopener noreferrer" : void 0,
353
- onClick: s,
354
- children: o
384
+ href: u,
385
+ className: P,
386
+ target: s,
387
+ rel: s === "_blank" ? "noopener noreferrer" : void 0,
388
+ onClick: n,
389
+ children: C
355
390
  }
356
- ) : /* @__PURE__ */ r.jsx(
391
+ ) : /* @__PURE__ */ e.jsx(
357
392
  "button",
358
393
  {
359
394
  type: "button",
360
- className: l,
361
- onClick: s,
362
- children: o
395
+ className: P,
396
+ onClick: n,
397
+ children: C
363
398
  }
364
399
  );
365
- }, de = ({ label: o, error: d, className: i, ...s }) => /* @__PURE__ */ r.jsxs("div", { className: "w-full", children: [
366
- o && /* @__PURE__ */ r.jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: o }),
367
- /* @__PURE__ */ r.jsx(
368
- "input",
400
+ }, ce = ne(({
401
+ label: o,
402
+ error: c,
403
+ className: i,
404
+ customStyles: n = {},
405
+ startIcon: a,
406
+ endIcon: t,
407
+ // Default Colors
408
+ labelColor: u = "text-gray-700",
409
+ darkLabelColor: s = "dark:text-gray-200",
410
+ inputBgColor: x = "bg-white",
411
+ darkInputBgColor: f = "dark:bg-gray-800",
412
+ inputBorderColor: d = "border-gray-300",
413
+ darkInputBorderColor: m = "dark:border-gray-600",
414
+ inputTextColor: p = "text-gray-900",
415
+ darkInputTextColor: v = "dark:text-white",
416
+ focusRingColor: j = "focus:ring-blue-500",
417
+ errorBorderColor: y = "border-red-500",
418
+ darkErrorBorderColor: w = "dark:border-red-500",
419
+ errorTextColor: $ = "text-red-500",
420
+ darkErrorTextColor: N = "dark:text-red-400",
421
+ ...E
422
+ }, _) => {
423
+ const T = `
424
+ w-full py-2 border rounded-lg shadow-sm focus:outline-none focus:ring-2 transition-all
425
+ ${a ? "pl-10" : "px-3"}
426
+ ${t ? "pr-10" : "px-3"}
427
+ ${x} ${f}
428
+ ${p} ${v}
429
+ ${j}
430
+ `, R = c ? `${y} focus:ring-red-500 ${w}` : `${d} ${m}`;
431
+ return /* @__PURE__ */ e.jsxs("div", { className: `w-full ${n.container || ""} ${i}`, children: [
432
+ o && /* @__PURE__ */ e.jsx("label", { className: `block text-sm font-medium ${u} ${s} mb-1 ${n.label || ""}`, children: o }),
433
+ /* @__PURE__ */ e.jsxs("div", { className: "relative", children: [
434
+ a && /* @__PURE__ */ e.jsx("div", { className: `absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none ${n.iconContainer || ""}`, children: a }),
435
+ /* @__PURE__ */ e.jsx(
436
+ "input",
437
+ {
438
+ ref: _,
439
+ className: `
440
+ ${T}
441
+ ${R}
442
+ ${n.input || ""}
443
+ `,
444
+ ...E
445
+ }
446
+ ),
447
+ t && /* @__PURE__ */ e.jsx("div", { className: `absolute inset-y-0 right-0 pr-3 flex items-center ${n.iconContainer || ""}`, children: t })
448
+ ] }),
449
+ c && /* @__PURE__ */ e.jsx("p", { className: `mt-1 text-xs ${$} ${N} ${n.error || ""}`, children: c })
450
+ ] });
451
+ });
452
+ ce.displayName = "BasicInput";
453
+ const de = ({
454
+ isDark: o,
455
+ onToggle: c,
456
+ iconSun: i,
457
+ iconMoon: n,
458
+ sunImage: a,
459
+ moonImage: t,
460
+ imageFit: u = "contain",
461
+ customStyles: s = {},
462
+ className: x = "",
463
+ title: f
464
+ }) => {
465
+ const d = `w-6 h-6 ${s.icon || ""}`, m = /* @__PURE__ */ e.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: d, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ e.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" }) }), p = /* @__PURE__ */ e.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: d, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ e.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" }) }), v = () => {
466
+ const j = u === "contain" ? "object-contain" : "object-cover";
467
+ return o ? a ? /* @__PURE__ */ e.jsx("img", { src: a, alt: "Light Mode", className: `${d} ${j}` }) : i || m : t ? /* @__PURE__ */ e.jsx("img", { src: t, alt: "Dark Mode", className: `${d} ${j}` }) : n || p;
468
+ };
469
+ return /* @__PURE__ */ e.jsx(
470
+ "button",
369
471
  {
472
+ onClick: c,
473
+ title: f || (o ? "Switch to light mode" : "Switch to dark mode"),
370
474
  className: `
371
- w-full px-3 py-2 border rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all
372
- ${d ? "border-red-500 focus:ring-red-500" : "border-gray-300"}
373
- ${i}
374
- `,
375
- ...s
475
+ p-2 rounded-full transition-all duration-300 ease-in-out
476
+ focus:outline-none focus:ring-2 focus:ring-blue-500 hover:rotate-12 hover:scale-110 overflow-hidden
477
+ ${o ? "bg-gray-700 text-yellow-300 hover:bg-gray-600" : "bg-gray-200 text-gray-600 hover:bg-gray-300"}
478
+ ${s.container || ""}
479
+ ${x}
480
+ `,
481
+ children: v()
376
482
  }
377
- ),
378
- d && /* @__PURE__ */ r.jsx("p", { className: "mt-1 text-xs text-red-500", children: d })
379
- ] }), V = ({
380
- iconSun: o,
381
- iconMoon: d,
382
- sunImage: i,
383
- moonImage: s,
384
- imageFit: a = "contain",
385
- customStyles: t = {},
386
- className: u = ""
483
+ );
484
+ }, Z = ({
485
+ isDark: o,
486
+ onToggle: c,
487
+ ...i
387
488
  }) => {
388
- const [c, p] = C(!1);
389
- B(() => {
390
- const h = () => {
391
- const k = document.documentElement.classList.contains("dark");
392
- p(k);
489
+ const [n, a] = I(!1);
490
+ Q(() => {
491
+ const s = () => {
492
+ const f = document.documentElement.classList.contains("dark");
493
+ a(f);
393
494
  };
394
- h();
395
- const E = new MutationObserver(h);
396
- return E.observe(document.documentElement, { attributes: !0, attributeFilter: ["class"] }), () => E.disconnect();
495
+ s();
496
+ const x = new MutationObserver(s);
497
+ return x.observe(document.documentElement, { attributes: !0, attributeFilter: ["class"] }), () => x.disconnect();
397
498
  }, []);
398
- const f = () => {
399
- const h = document.documentElement;
400
- h.classList.contains("dark") ? (h.classList.remove("dark"), localStorage.setItem("theme", "light")) : (h.classList.add("dark"), localStorage.setItem("theme", "dark"));
401
- }, l = `w-6 h-6 ${t.icon || ""}`, b = /* @__PURE__ */ r.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: l, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" }) }), v = /* @__PURE__ */ r.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: l, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" }) }), w = () => {
402
- const h = a === "contain" ? "object-contain" : "object-cover";
403
- return c ? i ? /* @__PURE__ */ r.jsx("img", { src: i, alt: "Light Mode", className: `${l} ${h}` }) : o || b : s ? /* @__PURE__ */ r.jsx("img", { src: s, alt: "Dark Mode", className: `${l} ${h}` }) : d || v;
404
- };
405
- return /* @__PURE__ */ r.jsx(
406
- "button",
499
+ const t = () => {
500
+ const s = document.documentElement;
501
+ s.classList.contains("dark") ? (s.classList.remove("dark"), localStorage.setItem("theme", "light")) : (s.classList.add("dark"), localStorage.setItem("theme", "dark")), c && c();
502
+ }, u = o !== void 0 ? o : n;
503
+ return /* @__PURE__ */ e.jsx(
504
+ de,
407
505
  {
408
- onClick: f,
409
- title: c ? "Switch to light mode" : "Switch to dark mode",
410
- className: `
411
- p-2 rounded-full transition-all duration-300 ease-in-out
412
- focus:outline-none focus:ring-2 focus:ring-blue-500 hover:rotate-12 hover:scale-110 overflow-hidden
413
-
414
- ${c ? "bg-gray-700 text-yellow-300 hover:bg-gray-600" : "bg-gray-200 text-gray-600 hover:bg-gray-300"}
415
-
416
- ${t.container || ""}
417
- ${u}
418
- `,
419
- children: w()
506
+ ...i,
507
+ isDark: u,
508
+ onToggle: t
420
509
  }
421
510
  );
422
- }, ie = ({
511
+ }, ue = ({
423
512
  title: o,
424
- description: d,
513
+ description: c,
425
514
  image: i,
426
- tags: s = [],
515
+ tags: n = [],
427
516
  orientation: a = "vertical",
428
517
  actionLabel: t = "View Project",
429
518
  projectUrl: u,
430
- linkTarget: c = "_self",
431
- onViewProject: p,
519
+ linkTarget: s = "_self",
520
+ onViewProject: x,
432
521
  customStyles: f = {},
433
- className: l = ""
522
+ className: d = ""
434
523
  }) => {
435
- const b = a === "horizontal";
436
- return /* @__PURE__ */ r.jsxs("div", { className: `
524
+ const m = a === "horizontal";
525
+ return /* @__PURE__ */ e.jsxs("div", { className: `
437
526
  /* 1. IDENTIFIER CLASS */
438
527
  ds-card
439
528
 
440
529
  /* 2. BASE STRUCTURE */
441
530
  group w-full rounded-xl overflow-hidden border transition-all duration-300
442
531
  /* Switch layout based on orientation prop */
443
- ${b ? "flex flex-col md:flex-row" : "flex flex-col"}
532
+ ${m ? "flex flex-col md:flex-row" : "flex flex-col"}
444
533
 
445
534
  /* 3. LIGHT MODE (Default) */
446
535
  /* White background, gray border, black shadow on hover */
@@ -465,104 +554,106 @@ const le = ({
465
554
 
466
555
  /* 5. EXTERNAL INJECTIONS */
467
556
  ${f.container || ""}
468
- ${l}
557
+ ${d}
469
558
  `, children: [
470
- /* @__PURE__ */ r.jsxs("div", { className: `
559
+ /* @__PURE__ */ e.jsxs("div", { className: `
471
560
  ds-card-image overflow-hidden relative
472
- ${b ? "w-full h-48 md:w-2/5 md:h-auto" : "w-full h-48"}
561
+ ${m ? "w-full h-48 md:w-2/5 md:h-auto" : "w-full h-48"}
473
562
  ${f.imageWrapper || ""}
474
563
  `, children: [
475
- /* @__PURE__ */ r.jsx(
564
+ /* @__PURE__ */ e.jsx(
476
565
  "img",
477
566
  {
478
567
  src: i,
479
568
  alt: o,
569
+ loading: "lazy",
570
+ decoding: "async",
480
571
  className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-105"
481
572
  }
482
573
  ),
483
- /* @__PURE__ */ r.jsx("div", { className: "absolute inset-0 bg-transparent dark:bg-black/20 transition-colors pointer-events-none" })
574
+ /* @__PURE__ */ e.jsx("div", { className: "absolute inset-0 bg-transparent dark:bg-black/20 transition-colors pointer-events-none" })
484
575
  ] }),
485
- /* @__PURE__ */ r.jsxs("div", { className: `ds-card-content p-6 flex flex-col justify-between flex-1 ${f.content || ""}`, children: [
486
- /* @__PURE__ */ r.jsxs("div", { children: [
487
- /* @__PURE__ */ r.jsx("h3", { className: `
576
+ /* @__PURE__ */ e.jsxs("div", { className: `ds-card-content p-6 flex flex-col justify-between flex-1 ${f.content || ""}`, children: [
577
+ /* @__PURE__ */ e.jsxs("div", { children: [
578
+ /* @__PURE__ */ e.jsx("h3", { className: `
488
579
  ds-card-title text-2xl font-bold mb-3 transition-colors text-gray-900 dark:text-white
489
580
  ${f.title || ""}
490
581
  `, children: o }),
491
- /* @__PURE__ */ r.jsx("p", { className: `
582
+ /* @__PURE__ */ e.jsx("p", { className: `
492
583
  ds-card-description mb-4 line-clamp-3 leading-relaxed transition-colors text-gray-600 dark:text-gray-300
493
584
  ${f.description || ""}
494
- `, children: d }),
495
- /* @__PURE__ */ r.jsx("div", { className: `ds-card-tags flex flex-wrap gap-2 mb-6 ${f.tagsContainer || ""}`, children: s.map((v) => /* @__PURE__ */ r.jsx(H, { label: v, variant: "secondary" }, v)) })
585
+ `, children: c }),
586
+ /* @__PURE__ */ e.jsx("div", { className: `ds-card-tags flex flex-wrap gap-2 mb-6 ${f.tagsContainer || ""}`, children: n.map((p) => /* @__PURE__ */ e.jsx(K, { label: p, variant: "secondary" }, p)) })
496
587
  ] }),
497
- /* @__PURE__ */ r.jsx("div", { className: "ds-card-actions flex justify-start mt-auto", children: /* @__PURE__ */ r.jsx(
498
- $,
588
+ /* @__PURE__ */ e.jsx("div", { className: "ds-card-actions flex justify-start mt-auto", children: /* @__PURE__ */ e.jsx(
589
+ M,
499
590
  {
500
591
  label: t,
501
- onClick: p,
592
+ onClick: x,
502
593
  href: u,
503
- target: c,
594
+ target: s,
504
595
  size: "medium",
505
596
  variant: "primary"
506
597
  }
507
598
  ) })
508
599
  ] })
509
600
  ] });
510
- }, ue = ({
601
+ }, me = ({
511
602
  title: o = "Featured Content",
512
- items: d,
603
+ items: c,
513
604
  layout: i = "grid",
514
- itemButtonLabel: s = "View Details",
605
+ itemButtonLabel: n = "View Details",
515
606
  onItemClick: a,
516
607
  customStyles: t = {}
517
608
  }) => {
518
609
  const u = i === "grid" ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8" : "flex flex-col gap-12 max-w-4xl mx-auto";
519
- return /* @__PURE__ */ r.jsx("section", { className: `
610
+ return /* @__PURE__ */ e.jsx("section", { className: `
520
611
  py-16 px-4 transition-colors duration-300
521
612
  bg-gray-50 dark:bg-gray-900
522
613
  ${t.container || ""}
523
- `, children: /* @__PURE__ */ r.jsxs("div", { className: "max-w-7xl mx-auto", children: [
524
- o && /* @__PURE__ */ r.jsxs("div", { className: "mb-12 text-start", children: [
525
- /* @__PURE__ */ r.jsx("h2", { className: `
614
+ `, children: /* @__PURE__ */ e.jsxs("div", { className: "max-w-7xl mx-auto", children: [
615
+ o && /* @__PURE__ */ e.jsxs("div", { className: "mb-12 text-start", children: [
616
+ /* @__PURE__ */ e.jsx("h2", { className: `
526
617
  text-4xl font-extrabold mb-4 tracking-tight transition-colors
527
618
  text-gray-900 dark:text-white
528
619
  ${t.title || ""}
529
620
  `, children: o }),
530
- /* @__PURE__ */ r.jsx("div", { className: "h-1.5 w-24 bg-blue-600 mx-auto rounded-full" })
621
+ /* @__PURE__ */ e.jsx("div", { className: "h-1.5 w-24 bg-blue-600 mx-auto rounded-full" })
531
622
  ] }),
532
- /* @__PURE__ */ r.jsx("div", { className: u, children: d.map((c) => /* @__PURE__ */ r.jsx(
533
- ie,
623
+ /* @__PURE__ */ e.jsx("div", { className: u, children: c.map((s) => /* @__PURE__ */ e.jsx(
624
+ ue,
534
625
  {
535
- title: c.title,
536
- description: c.description,
537
- image: c.image,
538
- tags: c.tags,
539
- projectUrl: c.url,
626
+ title: s.title,
627
+ description: s.description,
628
+ image: s.image,
629
+ tags: s.tags,
630
+ projectUrl: s.url,
540
631
  orientation: i === "list" ? "horizontal" : "vertical",
541
- actionLabel: s,
542
- onViewProject: () => a == null ? void 0 : a(c.id)
632
+ actionLabel: n,
633
+ onViewProject: () => a == null ? void 0 : a(s.id)
543
634
  },
544
- c.id
635
+ s.id
545
636
  )) })
546
637
  ] }) });
547
- }, xe = ({
638
+ }, ge = ({
548
639
  copyrightOwner: o,
549
- copyrightText: d = `© ${(/* @__PURE__ */ new Date()).getFullYear()} All rights reserved.`,
640
+ copyrightText: c = `© ${(/* @__PURE__ */ new Date()).getFullYear()} All rights reserved.`,
550
641
  socialLinks: i,
551
- secondaryLinks: s = [],
642
+ secondaryLinks: n = [],
552
643
  customStyles: a = {}
553
- }) => /* @__PURE__ */ r.jsx("footer", { className: `
644
+ }) => /* @__PURE__ */ e.jsx("footer", { className: `
554
645
  py-12 border-t transition-colors duration-300
555
646
  /* Light: Very dark background (almost black) */
556
647
  bg-gray-900 text-white border-gray-800
557
648
  /* Dark: Pure black or very dark gray background */
558
649
  dark:bg-black dark:border-gray-800
559
650
  ${a.container || ""}
560
- `, children: /* @__PURE__ */ r.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ r.jsxs("div", { className: "flex flex-col md:flex-row justify-between items-center gap-6", children: [
561
- /* @__PURE__ */ r.jsxs("div", { className: `text-center md:text-left ${a.text || ""}`, children: [
562
- /* @__PURE__ */ r.jsx("p", { className: "text-lg font-bold text-white", children: o }),
563
- /* @__PURE__ */ r.jsx("p", { className: "text-gray-400 text-sm mt-1", children: d })
651
+ `, children: /* @__PURE__ */ e.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col md:flex-row justify-between items-center gap-6", children: [
652
+ /* @__PURE__ */ e.jsxs("div", { className: `text-center md:text-left ${a.text || ""}`, children: [
653
+ /* @__PURE__ */ e.jsx("p", { className: "text-lg font-bold text-white", children: o }),
654
+ /* @__PURE__ */ e.jsx("p", { className: "text-gray-400 text-sm mt-1", children: c })
564
655
  ] }),
565
- s.length > 0 && /* @__PURE__ */ r.jsx("div", { className: "flex gap-6 flex-wrap justify-center", children: s.map((t) => /* @__PURE__ */ r.jsx(
656
+ n.length > 0 && /* @__PURE__ */ e.jsx("div", { className: "flex gap-6 flex-wrap justify-center", children: n.map((t) => /* @__PURE__ */ e.jsx(
566
657
  "a",
567
658
  {
568
659
  href: t.href,
@@ -571,7 +662,7 @@ const le = ({
571
662
  },
572
663
  t.label
573
664
  )) }),
574
- /* @__PURE__ */ r.jsx("div", { className: "flex space-x-6", children: i.map((t) => /* @__PURE__ */ r.jsx(
665
+ /* @__PURE__ */ e.jsx("div", { className: "flex space-x-6", children: i.map((t) => /* @__PURE__ */ e.jsx(
575
666
  "a",
576
667
  {
577
668
  href: t.url,
@@ -582,35 +673,35 @@ const le = ({
582
673
  },
583
674
  t.platform
584
675
  )) })
585
- ] }) }) }), fe = ({
676
+ ] }) }) }), be = ({
586
677
  greeting: o = "Hello",
587
- title: d,
678
+ title: c,
588
679
  subtitle: i,
589
- imageUrl: s,
680
+ imageUrl: n,
590
681
  actions: a = [],
591
682
  customStyles: t = {}
592
683
  }) => {
593
- const u = s ? "flex flex-col lg:flex-row items-center gap-12 lg:gap-16" : "flex flex-col items-center text-center max-w-4xl mx-auto", c = s ? "flex-1 text-center lg:text-left" : "w-full", p = s ? "justify-center lg:justify-start" : "justify-center";
594
- return /* @__PURE__ */ r.jsx("section", { className: `
684
+ const u = n ? "flex flex-col lg:flex-row items-center gap-12 lg:gap-16" : "flex flex-col items-center text-center max-w-4xl mx-auto", s = n ? "flex-1 text-center lg:text-left" : "w-full", x = n ? "justify-center lg:justify-start" : "justify-center";
685
+ return /* @__PURE__ */ e.jsx("section", { className: `
595
686
  relative pt-32 pb-16 lg:pt-40 lg:pb-24 overflow-hidden transition-colors duration-300
596
687
  bg-white dark:bg-gray-900
597
688
  ${t.container || ""}
598
- `, children: /* @__PURE__ */ r.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ r.jsxs("div", { className: u, children: [
599
- /* @__PURE__ */ r.jsxs("div", { className: `${c} ${t.content || ""}`, children: [
600
- o && /* @__PURE__ */ r.jsx("p", { className: "text-blue-600 dark:text-blue-400 font-semibold tracking-wide uppercase text-sm mb-4", children: o }),
601
- /* @__PURE__ */ r.jsx("h1", { className: `
689
+ `, children: /* @__PURE__ */ e.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ e.jsxs("div", { className: u, children: [
690
+ /* @__PURE__ */ e.jsxs("div", { className: `${s} ${t.content || ""}`, children: [
691
+ o && /* @__PURE__ */ e.jsx("p", { className: "text-blue-600 dark:text-blue-400 font-semibold tracking-wide uppercase text-sm mb-4", children: o }),
692
+ /* @__PURE__ */ e.jsx("h1", { className: `
602
693
  text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight mb-6 transition-colors
603
694
  text-gray-900 dark:text-white
604
695
  ${t.title || ""}
605
- `, children: d }),
606
- /* @__PURE__ */ r.jsx("p", { className: `
696
+ `, children: c }),
697
+ /* @__PURE__ */ e.jsx("p", { className: `
607
698
  text-lg sm:text-xl mb-8 leading-relaxed transition-colors
608
699
  text-gray-500 dark:text-gray-400
609
- ${!s && "mx-auto max-w-2xl"}
700
+ ${!n && "mx-auto max-w-2xl"}
610
701
  ${t.subtitle || ""}
611
702
  `, children: i }),
612
- a.length > 0 && /* @__PURE__ */ r.jsx("div", { className: `flex flex-col sm:flex-row gap-4 ${p}`, children: a.map((f, l) => /* @__PURE__ */ r.jsx(
613
- $,
703
+ a.length > 0 && /* @__PURE__ */ e.jsx("div", { className: `flex flex-col sm:flex-row gap-4 ${x}`, children: a.map((f, d) => /* @__PURE__ */ e.jsx(
704
+ M,
614
705
  {
615
706
  label: f.label,
616
707
  variant: f.variant || "primary",
@@ -618,123 +709,146 @@ const le = ({
618
709
  onClick: f.onClick,
619
710
  className: "w-full sm:w-auto"
620
711
  },
621
- l
712
+ d
622
713
  )) })
623
714
  ] }),
624
- s && /* @__PURE__ */ r.jsx("div", { className: `
715
+ n && /* @__PURE__ */ e.jsx("div", { className: `
625
716
  flex-1 w-full max-w-md lg:max-w-full relative
626
717
  ${t.imageWrapper || ""}
627
- `, children: /* @__PURE__ */ r.jsxs("div", { className: "relative rounded-2xl overflow-hidden shadow-2xl dark:shadow-none dark:border dark:border-gray-800 aspect-[4/3] group", children: [
628
- /* @__PURE__ */ r.jsx("div", { className: "absolute inset-0 bg-gray-900/5 dark:bg-black/20 group-hover:bg-transparent transition-colors duration-500" }),
629
- /* @__PURE__ */ r.jsx(
718
+ `, children: /* @__PURE__ */ e.jsxs("div", { className: "relative rounded-2xl overflow-hidden shadow-2xl dark:shadow-none dark:border dark:border-gray-800 aspect-[4/3] group", children: [
719
+ /* @__PURE__ */ e.jsx("div", { className: "absolute inset-0 bg-gray-900/5 dark:bg-black/20 group-hover:bg-transparent transition-colors duration-500" }),
720
+ /* @__PURE__ */ e.jsx(
630
721
  "img",
631
722
  {
632
- src: s,
723
+ src: n,
633
724
  alt: "Hero Visual",
725
+ decoding: "async",
634
726
  className: "w-full h-full object-cover transform transition-transform duration-700 hover:scale-105"
635
727
  }
636
728
  )
637
729
  ] }) })
638
730
  ] }) }) });
639
- }, me = ({
731
+ }, xe = ({
640
732
  logo: o = "Marc.Dev",
641
- isLogoImage: d = !1,
733
+ isLogoImage: c = !1,
642
734
  links: i,
643
- actions: s = [],
644
- customStyles: a = {}
645
- }) => {
646
- const [t, u] = C(!1), [c, p] = C(!1);
647
- B(() => {
648
- const l = () => p(window.scrollY > 20);
649
- return window.addEventListener("scroll", l), () => window.removeEventListener("scroll", l);
650
- }, []);
651
- const f = (l, b) => {
652
- l.preventDefault();
653
- const v = document.querySelector(b);
654
- v && (v.scrollIntoView({ behavior: "smooth" }), u(!1));
655
- };
656
- return /* @__PURE__ */ r.jsxs(
657
- "nav",
658
- {
659
- className: `
735
+ actions: n = [],
736
+ customStyles: a = {},
737
+ isOpen: t = !1,
738
+ isScrolled: u = !1,
739
+ onToggleMenu: s,
740
+ onLinkClick: x,
741
+ onLogoClick: f
742
+ }) => /* @__PURE__ */ e.jsxs(
743
+ "nav",
744
+ {
745
+ className: `
660
746
  fixed top-0 left-0 right-0 z-50 transition-all duration-300
661
747
 
662
- ${c || t ? "bg-white/90 dark:bg-gray-900/90 backdrop-blur-md shadow-sm border-b border-gray-100 dark:border-gray-800" : "bg-transparent"}
748
+ ${u || t ? "bg-white/90 dark:bg-gray-900/90 backdrop-blur-md shadow-sm border-b border-gray-100 dark:border-gray-800" : "bg-transparent"}
663
749
  ${a.container || ""}
664
750
  `,
665
- children: [
666
- /* @__PURE__ */ r.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ r.jsxs("div", { className: "flex justify-between items-center h-20", children: [
667
- /* @__PURE__ */ r.jsx("div", { className: `flex-shrink-0 cursor-pointer flex items-center ${a.logo || ""}`, onClick: () => window.scrollTo({ top: 0, behavior: "smooth" }), children: d ? /* @__PURE__ */ r.jsx("img", { src: o, alt: "Logo", className: "h-8 w-auto" }) : /* @__PURE__ */ r.jsx("span", { className: "text-2xl font-bold text-gray-900 dark:text-white tracking-tighter hover:text-blue-600 dark:hover:text-blue-400 transition-colors", children: o }) }),
668
- /* @__PURE__ */ r.jsxs("div", { className: "hidden md:flex space-x-8 items-center", children: [
669
- i.map((l) => /* @__PURE__ */ r.jsx(
670
- "a",
671
- {
672
- href: l.href,
673
- onClick: (b) => f(b, l.href),
674
- className: `
751
+ children: [
752
+ /* @__PURE__ */ e.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ e.jsxs("div", { className: "flex justify-between items-center h-20", children: [
753
+ /* @__PURE__ */ e.jsx("div", { className: `flex-shrink-0 cursor-pointer flex items-center ${a.logo || ""}`, onClick: f, children: c ? /* @__PURE__ */ e.jsx("img", { src: o, alt: "Logo", className: "h-8 w-auto" }) : /* @__PURE__ */ e.jsx("span", { className: "text-2xl font-bold text-gray-900 dark:text-white tracking-tighter hover:text-blue-600 dark:hover:text-blue-400 transition-colors", children: o }) }),
754
+ /* @__PURE__ */ e.jsxs("div", { className: "hidden md:flex space-x-8 items-center", children: [
755
+ i.map((d) => /* @__PURE__ */ e.jsx(
756
+ "a",
757
+ {
758
+ href: d.href,
759
+ onClick: (m) => x == null ? void 0 : x(m, d.href),
760
+ className: `
675
761
  text-sm font-medium transition-colors
676
762
  hover:text-blue-600 dark:hover:text-blue-400
677
- ${l.active ? "text-blue-600 dark:text-blue-400" : "text-gray-600 dark:text-gray-300"}
763
+ ${d.active ? "text-blue-600 dark:text-blue-400" : "text-gray-600 dark:text-gray-300"}
678
764
  ${a.link || ""}
679
765
  `,
680
- children: l.label
681
- },
682
- l.label
683
- )),
684
- /* @__PURE__ */ r.jsxs("div", { className: "flex items-center gap-4 pl-6 border-l border-gray-200 dark:border-gray-700", children: [
685
- /* @__PURE__ */ r.jsx(V, {}),
686
- s.map((l, b) => /* @__PURE__ */ r.jsx($, { ...l, size: "small" }, b))
687
- ] })
688
- ] }),
689
- /* @__PURE__ */ r.jsxs("div", { className: "flex items-center gap-4 md:hidden", children: [
690
- /* @__PURE__ */ r.jsx(V, {}),
691
- /* @__PURE__ */ r.jsx(
692
- "button",
693
- {
694
- onClick: () => u(!t),
695
- className: "p-2 rounded-md text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors focus:outline-none",
696
- children: /* @__PURE__ */ r.jsx("svg", { className: "h-6 w-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: t ? /* @__PURE__ */ r.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) : /* @__PURE__ */ r.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }) })
697
- }
698
- )
766
+ children: d.label
767
+ },
768
+ d.label
769
+ )),
770
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-4 pl-6 border-l border-gray-200 dark:border-gray-700", children: [
771
+ /* @__PURE__ */ e.jsx(Z, {}),
772
+ n.map((d, m) => /* @__PURE__ */ e.jsx(M, { ...d, size: "small" }, m))
699
773
  ] })
700
- ] }) }),
701
- /* @__PURE__ */ r.jsx(
702
- "div",
703
- {
704
- className: `
774
+ ] }),
775
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-4 md:hidden", children: [
776
+ /* @__PURE__ */ e.jsx(Z, {}),
777
+ /* @__PURE__ */ e.jsx(
778
+ "button",
779
+ {
780
+ onClick: s,
781
+ className: "p-2 rounded-md text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors focus:outline-none",
782
+ children: /* @__PURE__ */ e.jsx("svg", { className: "h-6 w-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: t ? /* @__PURE__ */ e.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) : /* @__PURE__ */ e.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }) })
783
+ }
784
+ )
785
+ ] })
786
+ ] }) }),
787
+ /* @__PURE__ */ e.jsx(
788
+ "div",
789
+ {
790
+ className: `
705
791
  md:hidden absolute top-20 left-0 w-full
706
792
  bg-white dark:bg-gray-900 border-b border-gray-100 dark:border-gray-800
707
793
  shadow-xl transition-all duration-300 ease-in-out origin-top
708
794
  ${t ? "opacity-100 scale-y-100" : "opacity-0 scale-y-0 h-0 overflow-hidden"}
709
795
  ${a.mobileMenu || ""}
710
796
  `,
711
- children: /* @__PURE__ */ r.jsxs("div", { className: "px-6 py-6 space-y-4 flex flex-col items-center", children: [
712
- i.map((l) => /* @__PURE__ */ r.jsx(
713
- "a",
714
- {
715
- href: l.href,
716
- onClick: (b) => f(b, l.href),
717
- className: "block text-lg font-medium text-gray-800 dark:text-gray-200 hover:text-blue-600 dark:hover:text-blue-400 transition-colors",
718
- children: l.label
719
- },
720
- l.label
721
- )),
722
- s.length > 0 && /* @__PURE__ */ r.jsx("div", { className: "pt-4 w-full flex flex-col gap-3", children: s.map((l, b) => /* @__PURE__ */ r.jsx($, { ...l, size: "medium", className: "w-full" }, b)) })
723
- ] })
724
- }
725
- )
726
- ]
797
+ children: /* @__PURE__ */ e.jsxs("div", { className: "px-6 py-6 space-y-4 flex flex-col items-center", children: [
798
+ i.map((d) => /* @__PURE__ */ e.jsx(
799
+ "a",
800
+ {
801
+ href: d.href,
802
+ onClick: (m) => x == null ? void 0 : x(m, d.href),
803
+ className: "block text-lg font-medium text-gray-800 dark:text-gray-200 hover:text-blue-600 dark:hover:text-blue-400 transition-colors",
804
+ children: d.label
805
+ },
806
+ d.label
807
+ )),
808
+ n.length > 0 && /* @__PURE__ */ e.jsx("div", { className: "pt-4 w-full flex flex-col gap-3", children: n.map((d, m) => /* @__PURE__ */ e.jsx(M, { ...d, size: "medium", className: "w-full" }, m)) })
809
+ ] })
810
+ }
811
+ )
812
+ ]
813
+ }
814
+ ), he = (o) => {
815
+ const [c, i] = I(!1), [n, a] = I(!1);
816
+ Q(() => {
817
+ let s = !1;
818
+ const x = () => {
819
+ s || (window.requestAnimationFrame(() => {
820
+ a(window.scrollY > 20), s = !1;
821
+ }), s = !0);
822
+ };
823
+ return window.addEventListener("scroll", x), () => window.removeEventListener("scroll", x);
824
+ }, []);
825
+ const t = (s, x) => {
826
+ s.preventDefault();
827
+ const f = document.querySelector(x);
828
+ f && (f.scrollIntoView({ behavior: "smooth" }), i(!1));
829
+ }, u = () => {
830
+ window.scrollTo({ top: 0, behavior: "smooth" });
831
+ };
832
+ return /* @__PURE__ */ e.jsx(
833
+ xe,
834
+ {
835
+ ...o,
836
+ isOpen: c,
837
+ isScrolled: n,
838
+ onToggleMenu: () => i(!c),
839
+ onLinkClick: t,
840
+ onLogoClick: u
727
841
  }
728
842
  );
729
- }, ge = ({
843
+ }, pe = ({
730
844
  title: o = "About Me",
731
- avatarUrl: d,
845
+ avatarUrl: c,
732
846
  bio: i,
733
- skillsTitle: s = "Tech Stack",
847
+ skillsTitle: n = "Tech Stack",
734
848
  skills: a = [],
735
849
  customStyles: t = {},
736
850
  id: u
737
- }) => /* @__PURE__ */ r.jsx(
851
+ }) => /* @__PURE__ */ e.jsx(
738
852
  "section",
739
853
  {
740
854
  id: u,
@@ -743,24 +857,24 @@ const le = ({
743
857
  bg-white dark:bg-gray-900 border-y border-gray-100 dark:border-gray-800
744
858
  ${t.container || ""}
745
859
  `,
746
- children: /* @__PURE__ */ r.jsxs("div", { className: `max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 ${t.contentWrapper || ""}`, children: [
747
- o && /* @__PURE__ */ r.jsxs("div", { className: "text-center mb-12", children: [
748
- /* @__PURE__ */ r.jsx("h2", { className: `
860
+ children: /* @__PURE__ */ e.jsxs("div", { className: `max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 ${t.contentWrapper || ""}`, children: [
861
+ o && /* @__PURE__ */ e.jsxs("div", { className: "text-center mb-12", children: [
862
+ /* @__PURE__ */ e.jsx("h2", { className: `
749
863
  text-3xl font-bold text-gray-900 dark:text-white transition-colors
750
864
  ${t.title || ""}
751
865
  `, children: o }),
752
- /* @__PURE__ */ r.jsx("div", { className: "mt-2 h-1 w-20 bg-blue-600 mx-auto rounded" })
866
+ /* @__PURE__ */ e.jsx("div", { className: "mt-2 h-1 w-20 bg-blue-600 mx-auto rounded" })
753
867
  ] }),
754
- /* @__PURE__ */ r.jsxs("div", { className: "flex flex-col md:flex-row items-center gap-12", children: [
755
- /* @__PURE__ */ r.jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ r.jsx(le, { src: d, size: "xl" }) }),
756
- /* @__PURE__ */ r.jsxs("div", { className: `text-lg text-gray-600 dark:text-gray-300 leading-relaxed ${t.textWrapper || ""}`, children: [
757
- /* @__PURE__ */ r.jsx("p", { className: `mb-8 whitespace-pre-line ${t.bio || ""}`, children: i }),
758
- a.length > 0 && /* @__PURE__ */ r.jsxs("div", { children: [
759
- s && /* @__PURE__ */ r.jsx("h3", { className: `
868
+ /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col md:flex-row items-center gap-12", children: [
869
+ /* @__PURE__ */ e.jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ e.jsx(ie, { src: c, size: "xl" }) }),
870
+ /* @__PURE__ */ e.jsxs("div", { className: `text-lg text-gray-600 dark:text-gray-300 leading-relaxed ${t.textWrapper || ""}`, children: [
871
+ /* @__PURE__ */ e.jsx("p", { className: `mb-8 whitespace-pre-line ${t.bio || ""}`, children: i }),
872
+ a.length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
873
+ n && /* @__PURE__ */ e.jsx("h3", { className: `
760
874
  text-sm font-bold text-gray-900 dark:text-white uppercase tracking-wide mb-3
761
875
  ${t.skillsTitle || ""}
762
- `, children: s }),
763
- /* @__PURE__ */ r.jsx("div", { className: "flex flex-wrap gap-2", children: a.map((c) => /* @__PURE__ */ r.jsx(H, { label: c, variant: "secondary" }, c)) })
876
+ `, children: n }),
877
+ /* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-2", children: a.map((s) => /* @__PURE__ */ e.jsx(K, { label: s, variant: "secondary" }, s)) })
764
878
  ] })
765
879
  ] })
766
880
  ] })
@@ -768,15 +882,15 @@ const le = ({
768
882
  }
769
883
  );
770
884
  export {
771
- le as Avatar,
772
- H as Badge,
773
- $ as Button,
774
- ue as ContentGrid,
775
- xe as Footer,
776
- fe as Hero,
777
- de as Input,
778
- me as Navbar,
779
- ge as ProfileSection,
780
- ie as ProjectCard,
781
- V as ThemeToggle
885
+ ie as Avatar,
886
+ K as Badge,
887
+ M as Button,
888
+ me as ContentGrid,
889
+ ge as Footer,
890
+ be as Hero,
891
+ ce as Input,
892
+ he as Navbar,
893
+ pe as ProfileSection,
894
+ ue as ProjectCard,
895
+ Z as ThemeToggle
782
896
  };