@tunjiadeyemi/ui 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +25 -3
- package/dist/index.d.ts +25 -3
- package/dist/index.js +117 -4
- package/dist/index.mjs +114 -4
- package/dist/styles.css +115 -0
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -24,7 +24,7 @@ interface TextInputProps {
|
|
|
24
24
|
minLength?: number;
|
|
25
25
|
maxLength?: number;
|
|
26
26
|
errorMessage?: string;
|
|
27
|
-
|
|
27
|
+
borderColor?: string;
|
|
28
28
|
textColor?: string;
|
|
29
29
|
borderRadius?: string;
|
|
30
30
|
height?: string;
|
|
@@ -33,7 +33,7 @@ interface TextInputProps {
|
|
|
33
33
|
eyeClosedIcon?: React.ReactNode;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
declare const Input: ({ onChange, onOtpClick, validate, type, value, minLength, maxLength, className, placeholder, errorMessage, width, height,
|
|
36
|
+
declare const Input: ({ onChange, onOtpClick, validate, type, value, minLength, maxLength, className, placeholder, errorMessage, width, height, borderColor, textColor, borderRadius, backgroundColor, eyeIcon, eyeClosedIcon }: TextInputProps) => react_jsx_runtime.JSX.Element;
|
|
37
37
|
|
|
38
38
|
interface SkeletonProps {
|
|
39
39
|
className?: string;
|
|
@@ -45,4 +45,26 @@ interface SkeletonProps {
|
|
|
45
45
|
|
|
46
46
|
declare const Skeleton: ({ className, variant, width, height, animation, }: SkeletonProps) => react_jsx_runtime.JSX.Element;
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
declare const ScrollToTop: () => null;
|
|
49
|
+
|
|
50
|
+
interface AccordionItem {
|
|
51
|
+
question: string;
|
|
52
|
+
answer: React.ReactNode;
|
|
53
|
+
icon?: React.ReactNode;
|
|
54
|
+
}
|
|
55
|
+
interface AccordionProps {
|
|
56
|
+
icon?: React.ReactNode;
|
|
57
|
+
items: AccordionItem[];
|
|
58
|
+
className?: string;
|
|
59
|
+
containerClassName?: string;
|
|
60
|
+
onIconClick?: (idx: number, item: AccordionItem) => void;
|
|
61
|
+
}
|
|
62
|
+
declare const Accordion: ({ icon, items, containerClassName, className, onIconClick }: AccordionProps) => react_jsx_runtime.JSX.Element;
|
|
63
|
+
|
|
64
|
+
declare const Rating: ({ rating, total, icon }: {
|
|
65
|
+
rating: number;
|
|
66
|
+
total: number;
|
|
67
|
+
icon?: string;
|
|
68
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
69
|
+
|
|
70
|
+
export { Accordion, Input, Modal, Rating, ScrollToTop, Skeleton };
|
package/dist/index.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ interface TextInputProps {
|
|
|
24
24
|
minLength?: number;
|
|
25
25
|
maxLength?: number;
|
|
26
26
|
errorMessage?: string;
|
|
27
|
-
|
|
27
|
+
borderColor?: string;
|
|
28
28
|
textColor?: string;
|
|
29
29
|
borderRadius?: string;
|
|
30
30
|
height?: string;
|
|
@@ -33,7 +33,7 @@ interface TextInputProps {
|
|
|
33
33
|
eyeClosedIcon?: React.ReactNode;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
declare const Input: ({ onChange, onOtpClick, validate, type, value, minLength, maxLength, className, placeholder, errorMessage, width, height,
|
|
36
|
+
declare const Input: ({ onChange, onOtpClick, validate, type, value, minLength, maxLength, className, placeholder, errorMessage, width, height, borderColor, textColor, borderRadius, backgroundColor, eyeIcon, eyeClosedIcon }: TextInputProps) => react_jsx_runtime.JSX.Element;
|
|
37
37
|
|
|
38
38
|
interface SkeletonProps {
|
|
39
39
|
className?: string;
|
|
@@ -45,4 +45,26 @@ interface SkeletonProps {
|
|
|
45
45
|
|
|
46
46
|
declare const Skeleton: ({ className, variant, width, height, animation, }: SkeletonProps) => react_jsx_runtime.JSX.Element;
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
declare const ScrollToTop: () => null;
|
|
49
|
+
|
|
50
|
+
interface AccordionItem {
|
|
51
|
+
question: string;
|
|
52
|
+
answer: React.ReactNode;
|
|
53
|
+
icon?: React.ReactNode;
|
|
54
|
+
}
|
|
55
|
+
interface AccordionProps {
|
|
56
|
+
icon?: React.ReactNode;
|
|
57
|
+
items: AccordionItem[];
|
|
58
|
+
className?: string;
|
|
59
|
+
containerClassName?: string;
|
|
60
|
+
onIconClick?: (idx: number, item: AccordionItem) => void;
|
|
61
|
+
}
|
|
62
|
+
declare const Accordion: ({ icon, items, containerClassName, className, onIconClick }: AccordionProps) => react_jsx_runtime.JSX.Element;
|
|
63
|
+
|
|
64
|
+
declare const Rating: ({ rating, total, icon }: {
|
|
65
|
+
rating: number;
|
|
66
|
+
total: number;
|
|
67
|
+
icon?: string;
|
|
68
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
69
|
+
|
|
70
|
+
export { Accordion, Input, Modal, Rating, ScrollToTop, Skeleton };
|
package/dist/index.js
CHANGED
|
@@ -20,8 +20,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
+
Accordion: () => Accordion_default,
|
|
23
24
|
Input: () => Input_default,
|
|
24
25
|
Modal: () => Modal_default,
|
|
26
|
+
Rating: () => Rating_default,
|
|
27
|
+
ScrollToTop: () => ScrollToTop_default,
|
|
25
28
|
Skeleton: () => Skeleton_default
|
|
26
29
|
});
|
|
27
30
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -135,7 +138,7 @@ var Input = ({
|
|
|
135
138
|
errorMessage,
|
|
136
139
|
width = "100%",
|
|
137
140
|
height = "40px",
|
|
138
|
-
|
|
141
|
+
borderColor = "#6B2CE9",
|
|
139
142
|
textColor = "white",
|
|
140
143
|
borderRadius = "10px",
|
|
141
144
|
backgroundColor = "#1F1F23",
|
|
@@ -217,7 +220,7 @@ var Input = ({
|
|
|
217
220
|
width: "100%"
|
|
218
221
|
},
|
|
219
222
|
className: `border ${error ? "border-red-500" : "border-transparent"} placeholder:text-sm text-sm px-4 pr-12 placeholder:opacity-30 focus:outline-none transition ${className}`,
|
|
220
|
-
onFocus: (e) => !error && (e.target.style.borderColor =
|
|
223
|
+
onFocus: (e) => !error && (e.target.style.borderColor = borderColor),
|
|
221
224
|
onBlur: (e) => e.target.style.borderColor = error ? "#ef4444" : "transparent"
|
|
222
225
|
}
|
|
223
226
|
),
|
|
@@ -252,7 +255,7 @@ var Input = ({
|
|
|
252
255
|
width: "100%"
|
|
253
256
|
},
|
|
254
257
|
className: `border ${error ? "border-red-500" : "border-transparent"} placeholder:text-sm text-sm px-4 pr-28 placeholder:opacity-30 focus:outline-none transition ${className}`,
|
|
255
|
-
onFocus: (e) => !error && (e.target.style.borderColor =
|
|
258
|
+
onFocus: (e) => !error && (e.target.style.borderColor = borderColor),
|
|
256
259
|
onBlur: (e) => e.target.style.borderColor = error ? "#ef4444" : "transparent"
|
|
257
260
|
}
|
|
258
261
|
),
|
|
@@ -286,7 +289,7 @@ var Input = ({
|
|
|
286
289
|
width: "100%"
|
|
287
290
|
},
|
|
288
291
|
className: `border ${error ? "border-red-500" : "border-transparent"} placeholder:text-sm text-sm px-4 placeholder:opacity-30 focus:outline-none transition ${className}`,
|
|
289
|
-
onFocus: (e) => !error && (e.target.style.borderColor =
|
|
292
|
+
onFocus: (e) => !error && (e.target.style.borderColor = borderColor),
|
|
290
293
|
onBlur: (e) => e.target.style.borderColor = error ? "#ef4444" : "transparent"
|
|
291
294
|
}
|
|
292
295
|
),
|
|
@@ -340,9 +343,119 @@ var Skeleton = ({
|
|
|
340
343
|
);
|
|
341
344
|
};
|
|
342
345
|
var Skeleton_default = Skeleton;
|
|
346
|
+
|
|
347
|
+
// src/components/ScrollToTop/ScrollToTop.tsx
|
|
348
|
+
var import_react2 = require("react");
|
|
349
|
+
var ScrollToTop = () => {
|
|
350
|
+
(0, import_react2.useEffect)(() => {
|
|
351
|
+
window.scrollTo(0, 0);
|
|
352
|
+
const handleNavigation = () => {
|
|
353
|
+
window.scrollTo(0, 0);
|
|
354
|
+
};
|
|
355
|
+
window.addEventListener("popstate", handleNavigation);
|
|
356
|
+
const originalPushState = history.pushState;
|
|
357
|
+
const originalReplaceState = history.replaceState;
|
|
358
|
+
history.pushState = function(...args) {
|
|
359
|
+
originalPushState.apply(this, args);
|
|
360
|
+
handleNavigation();
|
|
361
|
+
};
|
|
362
|
+
history.replaceState = function(...args) {
|
|
363
|
+
originalReplaceState.apply(this, args);
|
|
364
|
+
handleNavigation();
|
|
365
|
+
};
|
|
366
|
+
return () => {
|
|
367
|
+
window.removeEventListener("popstate", handleNavigation);
|
|
368
|
+
history.pushState = originalPushState;
|
|
369
|
+
history.replaceState = originalReplaceState;
|
|
370
|
+
};
|
|
371
|
+
}, []);
|
|
372
|
+
return null;
|
|
373
|
+
};
|
|
374
|
+
var ScrollToTop_default = ScrollToTop;
|
|
375
|
+
|
|
376
|
+
// src/components/Accordion/Accordion.tsx
|
|
377
|
+
var import_react3 = require("react");
|
|
378
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
379
|
+
var Accordion = ({ icon, items, containerClassName, className, onIconClick }) => {
|
|
380
|
+
const [openIndexes, setOpenIndexes] = (0, import_react3.useState)([]);
|
|
381
|
+
const toggleIndex = (idx) => {
|
|
382
|
+
setOpenIndexes((prev) => prev.includes(idx) ? prev.filter((i) => i !== idx) : [...prev, idx]);
|
|
383
|
+
};
|
|
384
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: `space-y-2 ${containerClassName || ""}`, children: items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: `${className || ""}`, children: [
|
|
385
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
386
|
+
"button",
|
|
387
|
+
{
|
|
388
|
+
className: "w-full flex justify-between items-center cursor-pointer py-3 text-left font-medium focus:outline-none",
|
|
389
|
+
onClick: () => toggleIndex(idx),
|
|
390
|
+
children: [
|
|
391
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: item.question }),
|
|
392
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
393
|
+
"span",
|
|
394
|
+
{
|
|
395
|
+
onClick: (e) => {
|
|
396
|
+
e.stopPropagation();
|
|
397
|
+
onIconClick && onIconClick(idx, item);
|
|
398
|
+
},
|
|
399
|
+
className: "ml-2 flex items-center",
|
|
400
|
+
style: {
|
|
401
|
+
cursor: onIconClick ? "pointer" : "default",
|
|
402
|
+
transform: openIndexes.includes(idx) ? "rotate(180deg)" : "rotate(0deg)",
|
|
403
|
+
transition: "transform 0.2s"
|
|
404
|
+
},
|
|
405
|
+
children: icon
|
|
406
|
+
}
|
|
407
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: openIndexes.includes(idx) ? "\u2212" : "+" })
|
|
408
|
+
]
|
|
409
|
+
}
|
|
410
|
+
),
|
|
411
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
412
|
+
"div",
|
|
413
|
+
{
|
|
414
|
+
className: `grid transition-all duration-300 ease-in-out ${openIndexes.includes(idx) ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"}`,
|
|
415
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "pb-3", children: item.answer }) })
|
|
416
|
+
}
|
|
417
|
+
)
|
|
418
|
+
] }, idx)) });
|
|
419
|
+
};
|
|
420
|
+
var Accordion_default = Accordion;
|
|
421
|
+
|
|
422
|
+
// src/components/Rating/Rating.tsx
|
|
423
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
424
|
+
var Rating = ({ rating, total, icon }) => {
|
|
425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex items-center gap-1", children: Array.from({ length: total }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { children: icon ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
426
|
+
"img",
|
|
427
|
+
{
|
|
428
|
+
src: icon,
|
|
429
|
+
alt: "rating icon",
|
|
430
|
+
className: `w-4 h-4 ${i < rating ? "" : "opacity-30"}`
|
|
431
|
+
}
|
|
432
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
433
|
+
"svg",
|
|
434
|
+
{
|
|
435
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
436
|
+
fill: i < rating ? "currentColor" : "none",
|
|
437
|
+
viewBox: "0 0 24 24",
|
|
438
|
+
stroke: "currentColor",
|
|
439
|
+
className: `w-4 h-4 ${i < rating ? "text-yellow-400" : "text-gray-300"}`,
|
|
440
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
441
|
+
"path",
|
|
442
|
+
{
|
|
443
|
+
strokeLinecap: "round",
|
|
444
|
+
strokeLinejoin: "round",
|
|
445
|
+
strokeWidth: 2,
|
|
446
|
+
d: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l2.036 6.29a1 1 0 00.95.69h6.6c.969 0 1.371 1.24.588 1.81l-5.347 3.89a1 1 0 00-.364 1.118l2.036 6.29c.3.921-.755 1.688-1.54 1.118l-5.347-3.89a1 1 0 00-1.176 0l-5.347 3.89c-.784.57-1.838-.197-1.54-1.118l2.036-6.29a1 1 0 00-.364-1.118l-5.347-3.89c-.783-.57-.38-1.81.588-1.81h6.6a1 1 0 00.95-.69l2.036-6.29z"
|
|
447
|
+
}
|
|
448
|
+
)
|
|
449
|
+
}
|
|
450
|
+
) }, i)) });
|
|
451
|
+
};
|
|
452
|
+
var Rating_default = Rating;
|
|
343
453
|
// Annotate the CommonJS export names for ESM import in node:
|
|
344
454
|
0 && (module.exports = {
|
|
455
|
+
Accordion,
|
|
345
456
|
Input,
|
|
346
457
|
Modal,
|
|
458
|
+
Rating,
|
|
459
|
+
ScrollToTop,
|
|
347
460
|
Skeleton
|
|
348
461
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -107,7 +107,7 @@ var Input = ({
|
|
|
107
107
|
errorMessage,
|
|
108
108
|
width = "100%",
|
|
109
109
|
height = "40px",
|
|
110
|
-
|
|
110
|
+
borderColor = "#6B2CE9",
|
|
111
111
|
textColor = "white",
|
|
112
112
|
borderRadius = "10px",
|
|
113
113
|
backgroundColor = "#1F1F23",
|
|
@@ -189,7 +189,7 @@ var Input = ({
|
|
|
189
189
|
width: "100%"
|
|
190
190
|
},
|
|
191
191
|
className: `border ${error ? "border-red-500" : "border-transparent"} placeholder:text-sm text-sm px-4 pr-12 placeholder:opacity-30 focus:outline-none transition ${className}`,
|
|
192
|
-
onFocus: (e) => !error && (e.target.style.borderColor =
|
|
192
|
+
onFocus: (e) => !error && (e.target.style.borderColor = borderColor),
|
|
193
193
|
onBlur: (e) => e.target.style.borderColor = error ? "#ef4444" : "transparent"
|
|
194
194
|
}
|
|
195
195
|
),
|
|
@@ -224,7 +224,7 @@ var Input = ({
|
|
|
224
224
|
width: "100%"
|
|
225
225
|
},
|
|
226
226
|
className: `border ${error ? "border-red-500" : "border-transparent"} placeholder:text-sm text-sm px-4 pr-28 placeholder:opacity-30 focus:outline-none transition ${className}`,
|
|
227
|
-
onFocus: (e) => !error && (e.target.style.borderColor =
|
|
227
|
+
onFocus: (e) => !error && (e.target.style.borderColor = borderColor),
|
|
228
228
|
onBlur: (e) => e.target.style.borderColor = error ? "#ef4444" : "transparent"
|
|
229
229
|
}
|
|
230
230
|
),
|
|
@@ -258,7 +258,7 @@ var Input = ({
|
|
|
258
258
|
width: "100%"
|
|
259
259
|
},
|
|
260
260
|
className: `border ${error ? "border-red-500" : "border-transparent"} placeholder:text-sm text-sm px-4 placeholder:opacity-30 focus:outline-none transition ${className}`,
|
|
261
|
-
onFocus: (e) => !error && (e.target.style.borderColor =
|
|
261
|
+
onFocus: (e) => !error && (e.target.style.borderColor = borderColor),
|
|
262
262
|
onBlur: (e) => e.target.style.borderColor = error ? "#ef4444" : "transparent"
|
|
263
263
|
}
|
|
264
264
|
),
|
|
@@ -312,8 +312,118 @@ var Skeleton = ({
|
|
|
312
312
|
);
|
|
313
313
|
};
|
|
314
314
|
var Skeleton_default = Skeleton;
|
|
315
|
+
|
|
316
|
+
// src/components/ScrollToTop/ScrollToTop.tsx
|
|
317
|
+
import { useEffect as useEffect2 } from "react";
|
|
318
|
+
var ScrollToTop = () => {
|
|
319
|
+
useEffect2(() => {
|
|
320
|
+
window.scrollTo(0, 0);
|
|
321
|
+
const handleNavigation = () => {
|
|
322
|
+
window.scrollTo(0, 0);
|
|
323
|
+
};
|
|
324
|
+
window.addEventListener("popstate", handleNavigation);
|
|
325
|
+
const originalPushState = history.pushState;
|
|
326
|
+
const originalReplaceState = history.replaceState;
|
|
327
|
+
history.pushState = function(...args) {
|
|
328
|
+
originalPushState.apply(this, args);
|
|
329
|
+
handleNavigation();
|
|
330
|
+
};
|
|
331
|
+
history.replaceState = function(...args) {
|
|
332
|
+
originalReplaceState.apply(this, args);
|
|
333
|
+
handleNavigation();
|
|
334
|
+
};
|
|
335
|
+
return () => {
|
|
336
|
+
window.removeEventListener("popstate", handleNavigation);
|
|
337
|
+
history.pushState = originalPushState;
|
|
338
|
+
history.replaceState = originalReplaceState;
|
|
339
|
+
};
|
|
340
|
+
}, []);
|
|
341
|
+
return null;
|
|
342
|
+
};
|
|
343
|
+
var ScrollToTop_default = ScrollToTop;
|
|
344
|
+
|
|
345
|
+
// src/components/Accordion/Accordion.tsx
|
|
346
|
+
import { useState as useState2 } from "react";
|
|
347
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
348
|
+
var Accordion = ({ icon, items, containerClassName, className, onIconClick }) => {
|
|
349
|
+
const [openIndexes, setOpenIndexes] = useState2([]);
|
|
350
|
+
const toggleIndex = (idx) => {
|
|
351
|
+
setOpenIndexes((prev) => prev.includes(idx) ? prev.filter((i) => i !== idx) : [...prev, idx]);
|
|
352
|
+
};
|
|
353
|
+
return /* @__PURE__ */ jsx4("div", { className: `space-y-2 ${containerClassName || ""}`, children: items.map((item, idx) => /* @__PURE__ */ jsxs3("div", { className: `${className || ""}`, children: [
|
|
354
|
+
/* @__PURE__ */ jsxs3(
|
|
355
|
+
"button",
|
|
356
|
+
{
|
|
357
|
+
className: "w-full flex justify-between items-center cursor-pointer py-3 text-left font-medium focus:outline-none",
|
|
358
|
+
onClick: () => toggleIndex(idx),
|
|
359
|
+
children: [
|
|
360
|
+
/* @__PURE__ */ jsx4("span", { children: item.question }),
|
|
361
|
+
icon ? /* @__PURE__ */ jsx4(
|
|
362
|
+
"span",
|
|
363
|
+
{
|
|
364
|
+
onClick: (e) => {
|
|
365
|
+
e.stopPropagation();
|
|
366
|
+
onIconClick && onIconClick(idx, item);
|
|
367
|
+
},
|
|
368
|
+
className: "ml-2 flex items-center",
|
|
369
|
+
style: {
|
|
370
|
+
cursor: onIconClick ? "pointer" : "default",
|
|
371
|
+
transform: openIndexes.includes(idx) ? "rotate(180deg)" : "rotate(0deg)",
|
|
372
|
+
transition: "transform 0.2s"
|
|
373
|
+
},
|
|
374
|
+
children: icon
|
|
375
|
+
}
|
|
376
|
+
) : /* @__PURE__ */ jsx4("span", { children: openIndexes.includes(idx) ? "\u2212" : "+" })
|
|
377
|
+
]
|
|
378
|
+
}
|
|
379
|
+
),
|
|
380
|
+
/* @__PURE__ */ jsx4(
|
|
381
|
+
"div",
|
|
382
|
+
{
|
|
383
|
+
className: `grid transition-all duration-300 ease-in-out ${openIndexes.includes(idx) ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"}`,
|
|
384
|
+
children: /* @__PURE__ */ jsx4("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx4("div", { className: "pb-3", children: item.answer }) })
|
|
385
|
+
}
|
|
386
|
+
)
|
|
387
|
+
] }, idx)) });
|
|
388
|
+
};
|
|
389
|
+
var Accordion_default = Accordion;
|
|
390
|
+
|
|
391
|
+
// src/components/Rating/Rating.tsx
|
|
392
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
393
|
+
var Rating = ({ rating, total, icon }) => {
|
|
394
|
+
return /* @__PURE__ */ jsx5("div", { className: "flex items-center gap-1", children: Array.from({ length: total }).map((_, i) => /* @__PURE__ */ jsx5("div", { children: icon ? /* @__PURE__ */ jsx5(
|
|
395
|
+
"img",
|
|
396
|
+
{
|
|
397
|
+
src: icon,
|
|
398
|
+
alt: "rating icon",
|
|
399
|
+
className: `w-4 h-4 ${i < rating ? "" : "opacity-30"}`
|
|
400
|
+
}
|
|
401
|
+
) : /* @__PURE__ */ jsx5(
|
|
402
|
+
"svg",
|
|
403
|
+
{
|
|
404
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
405
|
+
fill: i < rating ? "currentColor" : "none",
|
|
406
|
+
viewBox: "0 0 24 24",
|
|
407
|
+
stroke: "currentColor",
|
|
408
|
+
className: `w-4 h-4 ${i < rating ? "text-yellow-400" : "text-gray-300"}`,
|
|
409
|
+
children: /* @__PURE__ */ jsx5(
|
|
410
|
+
"path",
|
|
411
|
+
{
|
|
412
|
+
strokeLinecap: "round",
|
|
413
|
+
strokeLinejoin: "round",
|
|
414
|
+
strokeWidth: 2,
|
|
415
|
+
d: "M11.049 2.927c.3-.921 1.603-.921 1.902 0l2.036 6.29a1 1 0 00.95.69h6.6c.969 0 1.371 1.24.588 1.81l-5.347 3.89a1 1 0 00-.364 1.118l2.036 6.29c.3.921-.755 1.688-1.54 1.118l-5.347-3.89a1 1 0 00-1.176 0l-5.347 3.89c-.784.57-1.838-.197-1.54-1.118l2.036-6.29a1 1 0 00-.364-1.118l-5.347-3.89c-.783-.57-.38-1.81.588-1.81h6.6a1 1 0 00.95-.69l2.036-6.29z"
|
|
416
|
+
}
|
|
417
|
+
)
|
|
418
|
+
}
|
|
419
|
+
) }, i)) });
|
|
420
|
+
};
|
|
421
|
+
var Rating_default = Rating;
|
|
315
422
|
export {
|
|
423
|
+
Accordion_default as Accordion,
|
|
316
424
|
Input_default as Input,
|
|
317
425
|
Modal_default as Modal,
|
|
426
|
+
Rating_default as Rating,
|
|
427
|
+
ScrollToTop_default as ScrollToTop,
|
|
318
428
|
Skeleton_default as Skeleton
|
|
319
429
|
};
|
package/dist/styles.css
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
9
9
|
"Liberation Mono", "Courier New", monospace;
|
|
10
10
|
--color-red-500: oklch(0.637 0.237 25.331);
|
|
11
|
+
--color-yellow-400: oklch(0.852 0.199 91.936);
|
|
12
|
+
--color-gray-300: oklch(0.872 0.01 258.338);
|
|
11
13
|
--color-gray-400: oklch(0.707 0.022 261.325);
|
|
12
14
|
--color-black: #000;
|
|
13
15
|
--color-white: #fff;
|
|
@@ -22,6 +24,7 @@
|
|
|
22
24
|
--font-weight-medium: 500;
|
|
23
25
|
--font-weight-bold: 700;
|
|
24
26
|
--radius-lg: 0.5rem;
|
|
27
|
+
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
25
28
|
--animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
26
29
|
--default-transition-duration: 150ms;
|
|
27
30
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -222,12 +225,21 @@
|
|
|
222
225
|
.mb-4 {
|
|
223
226
|
margin-bottom: calc(var(--spacing) * 4);
|
|
224
227
|
}
|
|
228
|
+
.ml-2 {
|
|
229
|
+
margin-left: calc(var(--spacing) * 2);
|
|
230
|
+
}
|
|
225
231
|
.flex {
|
|
226
232
|
display: flex;
|
|
227
233
|
}
|
|
234
|
+
.grid {
|
|
235
|
+
display: grid;
|
|
236
|
+
}
|
|
228
237
|
.h-4 {
|
|
229
238
|
height: calc(var(--spacing) * 4);
|
|
230
239
|
}
|
|
240
|
+
.w-4 {
|
|
241
|
+
width: calc(var(--spacing) * 4);
|
|
242
|
+
}
|
|
231
243
|
.w-fit {
|
|
232
244
|
width: -moz-fit-content;
|
|
233
245
|
width: fit-content;
|
|
@@ -242,24 +254,49 @@
|
|
|
242
254
|
--tw-translate-y: calc(calc(1/2 * 100%) * -1);
|
|
243
255
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
244
256
|
}
|
|
257
|
+
.transform {
|
|
258
|
+
transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
|
|
259
|
+
}
|
|
245
260
|
.animate-pulse {
|
|
246
261
|
animation: var(--animate-pulse);
|
|
247
262
|
}
|
|
248
263
|
.cursor-pointer {
|
|
249
264
|
cursor: pointer;
|
|
250
265
|
}
|
|
266
|
+
.grid-rows-\[0fr\] {
|
|
267
|
+
grid-template-rows: 0fr;
|
|
268
|
+
}
|
|
269
|
+
.grid-rows-\[1fr\] {
|
|
270
|
+
grid-template-rows: 1fr;
|
|
271
|
+
}
|
|
251
272
|
.items-center {
|
|
252
273
|
align-items: center;
|
|
253
274
|
}
|
|
275
|
+
.justify-between {
|
|
276
|
+
justify-content: space-between;
|
|
277
|
+
}
|
|
254
278
|
.justify-center {
|
|
255
279
|
justify-content: center;
|
|
256
280
|
}
|
|
257
281
|
.justify-end {
|
|
258
282
|
justify-content: flex-end;
|
|
259
283
|
}
|
|
284
|
+
.gap-1 {
|
|
285
|
+
gap: calc(var(--spacing) * 1);
|
|
286
|
+
}
|
|
260
287
|
.gap-4 {
|
|
261
288
|
gap: calc(var(--spacing) * 4);
|
|
262
289
|
}
|
|
290
|
+
.space-y-2 {
|
|
291
|
+
:where(& > :not(:last-child)) {
|
|
292
|
+
--tw-space-y-reverse: 0;
|
|
293
|
+
margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
|
|
294
|
+
margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
.overflow-hidden {
|
|
298
|
+
overflow: hidden;
|
|
299
|
+
}
|
|
263
300
|
.rounded-\[4px\] {
|
|
264
301
|
border-radius: 4px;
|
|
265
302
|
}
|
|
@@ -326,6 +363,9 @@
|
|
|
326
363
|
.px-4 {
|
|
327
364
|
padding-inline: calc(var(--spacing) * 4);
|
|
328
365
|
}
|
|
366
|
+
.py-3 {
|
|
367
|
+
padding-block: calc(var(--spacing) * 3);
|
|
368
|
+
}
|
|
329
369
|
.pt-2 {
|
|
330
370
|
padding-top: calc(var(--spacing) * 2);
|
|
331
371
|
}
|
|
@@ -335,6 +375,12 @@
|
|
|
335
375
|
.pr-28 {
|
|
336
376
|
padding-right: calc(var(--spacing) * 28);
|
|
337
377
|
}
|
|
378
|
+
.pb-3 {
|
|
379
|
+
padding-bottom: calc(var(--spacing) * 3);
|
|
380
|
+
}
|
|
381
|
+
.text-left {
|
|
382
|
+
text-align: left;
|
|
383
|
+
}
|
|
338
384
|
.text-2xl {
|
|
339
385
|
font-size: var(--text-2xl);
|
|
340
386
|
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
|
@@ -358,22 +404,50 @@
|
|
|
358
404
|
.text-\[\#A77BFF\] {
|
|
359
405
|
color: #A77BFF;
|
|
360
406
|
}
|
|
407
|
+
.text-gray-300 {
|
|
408
|
+
color: var(--color-gray-300);
|
|
409
|
+
}
|
|
361
410
|
.text-gray-400 {
|
|
362
411
|
color: var(--color-gray-400);
|
|
363
412
|
}
|
|
364
413
|
.text-red-500 {
|
|
365
414
|
color: var(--color-red-500);
|
|
366
415
|
}
|
|
416
|
+
.text-yellow-400 {
|
|
417
|
+
color: var(--color-yellow-400);
|
|
418
|
+
}
|
|
419
|
+
.opacity-0 {
|
|
420
|
+
opacity: 0%;
|
|
421
|
+
}
|
|
422
|
+
.opacity-30 {
|
|
423
|
+
opacity: 30%;
|
|
424
|
+
}
|
|
425
|
+
.opacity-100 {
|
|
426
|
+
opacity: 100%;
|
|
427
|
+
}
|
|
367
428
|
.transition {
|
|
368
429
|
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
|
|
369
430
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
370
431
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
371
432
|
}
|
|
433
|
+
.transition-all {
|
|
434
|
+
transition-property: all;
|
|
435
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
436
|
+
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
437
|
+
}
|
|
372
438
|
.transition-colors {
|
|
373
439
|
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
|
|
374
440
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
375
441
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
376
442
|
}
|
|
443
|
+
.duration-300 {
|
|
444
|
+
--tw-duration: 300ms;
|
|
445
|
+
transition-duration: 300ms;
|
|
446
|
+
}
|
|
447
|
+
.ease-in-out {
|
|
448
|
+
--tw-ease: var(--ease-in-out);
|
|
449
|
+
transition-timing-function: var(--ease-in-out);
|
|
450
|
+
}
|
|
377
451
|
.placeholder\:text-sm {
|
|
378
452
|
&::-moz-placeholder {
|
|
379
453
|
font-size: var(--text-sm);
|
|
@@ -426,6 +500,31 @@
|
|
|
426
500
|
inherits: false;
|
|
427
501
|
initial-value: 0;
|
|
428
502
|
}
|
|
503
|
+
@property --tw-rotate-x {
|
|
504
|
+
syntax: "*";
|
|
505
|
+
inherits: false;
|
|
506
|
+
}
|
|
507
|
+
@property --tw-rotate-y {
|
|
508
|
+
syntax: "*";
|
|
509
|
+
inherits: false;
|
|
510
|
+
}
|
|
511
|
+
@property --tw-rotate-z {
|
|
512
|
+
syntax: "*";
|
|
513
|
+
inherits: false;
|
|
514
|
+
}
|
|
515
|
+
@property --tw-skew-x {
|
|
516
|
+
syntax: "*";
|
|
517
|
+
inherits: false;
|
|
518
|
+
}
|
|
519
|
+
@property --tw-skew-y {
|
|
520
|
+
syntax: "*";
|
|
521
|
+
inherits: false;
|
|
522
|
+
}
|
|
523
|
+
@property --tw-space-y-reverse {
|
|
524
|
+
syntax: "*";
|
|
525
|
+
inherits: false;
|
|
526
|
+
initial-value: 0;
|
|
527
|
+
}
|
|
429
528
|
@property --tw-border-style {
|
|
430
529
|
syntax: "*";
|
|
431
530
|
inherits: false;
|
|
@@ -477,6 +576,14 @@
|
|
|
477
576
|
syntax: "*";
|
|
478
577
|
inherits: false;
|
|
479
578
|
}
|
|
579
|
+
@property --tw-duration {
|
|
580
|
+
syntax: "*";
|
|
581
|
+
inherits: false;
|
|
582
|
+
}
|
|
583
|
+
@property --tw-ease {
|
|
584
|
+
syntax: "*";
|
|
585
|
+
inherits: false;
|
|
586
|
+
}
|
|
480
587
|
@keyframes pulse {
|
|
481
588
|
50% {
|
|
482
589
|
opacity: 0.5;
|
|
@@ -488,6 +595,12 @@
|
|
|
488
595
|
--tw-translate-x: 0;
|
|
489
596
|
--tw-translate-y: 0;
|
|
490
597
|
--tw-translate-z: 0;
|
|
598
|
+
--tw-rotate-x: initial;
|
|
599
|
+
--tw-rotate-y: initial;
|
|
600
|
+
--tw-rotate-z: initial;
|
|
601
|
+
--tw-skew-x: initial;
|
|
602
|
+
--tw-skew-y: initial;
|
|
603
|
+
--tw-space-y-reverse: 0;
|
|
491
604
|
--tw-border-style: solid;
|
|
492
605
|
--tw-gradient-position: initial;
|
|
493
606
|
--tw-gradient-from: #0000;
|
|
@@ -499,6 +612,8 @@
|
|
|
499
612
|
--tw-gradient-via-position: 50%;
|
|
500
613
|
--tw-gradient-to-position: 100%;
|
|
501
614
|
--tw-font-weight: initial;
|
|
615
|
+
--tw-duration: initial;
|
|
616
|
+
--tw-ease: initial;
|
|
502
617
|
}
|
|
503
618
|
}
|
|
504
619
|
}
|