whatsapp-ui-react 0.0.1
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/LICENSE +201 -0
- package/README.md +133 -0
- package/dist/components/Chat/Chat.d.ts +48 -0
- package/dist/components/Chat/Chat.d.ts.map +1 -0
- package/dist/components/Chat/ChatReplyContext.d.ts +22 -0
- package/dist/components/Chat/ChatReplyContext.d.ts.map +1 -0
- package/dist/components/Chat/DayDivider.d.ts +11 -0
- package/dist/components/Chat/DayDivider.d.ts.map +1 -0
- package/dist/components/Chat/Header.d.ts +16 -0
- package/dist/components/Chat/Header.d.ts.map +1 -0
- package/dist/components/Chat/Inputfield.d.ts +31 -0
- package/dist/components/Chat/Inputfield.d.ts.map +1 -0
- package/dist/components/Chat/InputfieldActions.d.ts +26 -0
- package/dist/components/Chat/InputfieldActions.d.ts.map +1 -0
- package/dist/components/Chat/MessageList.d.ts +11 -0
- package/dist/components/Chat/MessageList.d.ts.map +1 -0
- package/dist/components/Chat/index.d.ts +11 -0
- package/dist/components/Chat/index.d.ts.map +1 -0
- package/dist/components/Chat/index.parts.d.ts +13 -0
- package/dist/components/Chat/index.parts.d.ts.map +1 -0
- package/dist/components/Message/Audio/Audio.d.ts +13 -0
- package/dist/components/Message/Audio/Audio.d.ts.map +1 -0
- package/dist/components/Message/Audio/index.d.ts +3 -0
- package/dist/components/Message/Audio/index.d.ts.map +1 -0
- package/dist/components/Message/Contact/Contact.d.ts +9 -0
- package/dist/components/Message/Contact/Contact.d.ts.map +1 -0
- package/dist/components/Message/Contact/index.d.ts +3 -0
- package/dist/components/Message/Contact/index.d.ts.map +1 -0
- package/dist/components/Message/Emoji/Emoji.d.ts +16 -0
- package/dist/components/Message/Emoji/Emoji.d.ts.map +1 -0
- package/dist/components/Message/Emoji/index.d.ts +3 -0
- package/dist/components/Message/Emoji/index.d.ts.map +1 -0
- package/dist/components/Message/Event/Event.d.ts +9 -0
- package/dist/components/Message/Event/Event.d.ts.map +1 -0
- package/dist/components/Message/Event/index.d.ts +3 -0
- package/dist/components/Message/Event/index.d.ts.map +1 -0
- package/dist/components/Message/File/File.d.ts +9 -0
- package/dist/components/Message/File/File.d.ts.map +1 -0
- package/dist/components/Message/File/index.d.ts +3 -0
- package/dist/components/Message/File/index.d.ts.map +1 -0
- package/dist/components/Message/Gif/Gif.d.ts +9 -0
- package/dist/components/Message/Gif/Gif.d.ts.map +1 -0
- package/dist/components/Message/Gif/index.d.ts +3 -0
- package/dist/components/Message/Gif/index.d.ts.map +1 -0
- package/dist/components/Message/Image/Image.d.ts +15 -0
- package/dist/components/Message/Image/Image.d.ts.map +1 -0
- package/dist/components/Message/Image/index.d.ts +3 -0
- package/dist/components/Message/Image/index.d.ts.map +1 -0
- package/dist/components/Message/Location/Location.d.ts +9 -0
- package/dist/components/Message/Location/Location.d.ts.map +1 -0
- package/dist/components/Message/Location/index.d.ts +3 -0
- package/dist/components/Message/Location/index.d.ts.map +1 -0
- package/dist/components/Message/Message.d.ts +34 -0
- package/dist/components/Message/Message.d.ts.map +1 -0
- package/dist/components/Message/MessageContext.d.ts +32 -0
- package/dist/components/Message/MessageContext.d.ts.map +1 -0
- package/dist/components/Message/Poll/Poll.d.ts +9 -0
- package/dist/components/Message/Poll/Poll.d.ts.map +1 -0
- package/dist/components/Message/Poll/index.d.ts +3 -0
- package/dist/components/Message/Poll/index.d.ts.map +1 -0
- package/dist/components/Message/StatusIcon.d.ts +12 -0
- package/dist/components/Message/StatusIcon.d.ts.map +1 -0
- package/dist/components/Message/Sticker/Sticker.d.ts +13 -0
- package/dist/components/Message/Sticker/Sticker.d.ts.map +1 -0
- package/dist/components/Message/Sticker/index.d.ts +3 -0
- package/dist/components/Message/Sticker/index.d.ts.map +1 -0
- package/dist/components/Message/Text/Text.d.ts +11 -0
- package/dist/components/Message/Text/Text.d.ts.map +1 -0
- package/dist/components/Message/Text/index.d.ts +3 -0
- package/dist/components/Message/Text/index.d.ts.map +1 -0
- package/dist/components/Message/Video/Video.d.ts +9 -0
- package/dist/components/Message/Video/Video.d.ts.map +1 -0
- package/dist/components/Message/Video/index.d.ts +3 -0
- package/dist/components/Message/Video/index.d.ts.map +1 -0
- package/dist/components/Message/Voice/Voice.d.ts +13 -0
- package/dist/components/Message/Voice/Voice.d.ts.map +1 -0
- package/dist/components/Message/Voice/Waveform.d.ts +18 -0
- package/dist/components/Message/Voice/Waveform.d.ts.map +1 -0
- package/dist/components/Message/Voice/index.d.ts +3 -0
- package/dist/components/Message/Voice/index.d.ts.map +1 -0
- package/dist/components/Message/index.d.ts +31 -0
- package/dist/components/Message/index.d.ts.map +1 -0
- package/dist/components/Message/index.parts.d.ts +33 -0
- package/dist/components/Message/index.parts.d.ts.map +1 -0
- package/dist/components/Reply/Reply.d.ts +14 -0
- package/dist/components/Reply/Reply.d.ts.map +1 -0
- package/dist/components/Reply/index.d.ts +3 -0
- package/dist/components/Reply/index.d.ts.map +1 -0
- package/dist/hooks/useAudioPlayer.d.ts +26 -0
- package/dist/hooks/useAudioPlayer.d.ts.map +1 -0
- package/dist/hooks/useMessages.d.ts +13 -0
- package/dist/hooks/useMessages.d.ts.map +1 -0
- package/dist/hooks/useReply.d.ts +22 -0
- package/dist/hooks/useReply.d.ts.map +1 -0
- package/dist/icons/AttachIcon.d.ts +7 -0
- package/dist/icons/AttachIcon.d.ts.map +1 -0
- package/dist/icons/AudioFileIcon.d.ts +8 -0
- package/dist/icons/AudioFileIcon.d.ts.map +1 -0
- package/dist/icons/AvatarPlaceholderIcon.d.ts +7 -0
- package/dist/icons/AvatarPlaceholderIcon.d.ts.map +1 -0
- package/dist/icons/BubbleTailIcon.d.ts +4 -0
- package/dist/icons/BubbleTailIcon.d.ts.map +1 -0
- package/dist/icons/MicFillIcon.d.ts +7 -0
- package/dist/icons/MicFillIcon.d.ts.map +1 -0
- package/dist/icons/MicOutlineIcon.d.ts +7 -0
- package/dist/icons/MicOutlineIcon.d.ts.map +1 -0
- package/dist/icons/PauseIcon.d.ts +7 -0
- package/dist/icons/PauseIcon.d.ts.map +1 -0
- package/dist/icons/PlayIcon.d.ts +7 -0
- package/dist/icons/PlayIcon.d.ts.map +1 -0
- package/dist/icons/SendIcon.d.ts +7 -0
- package/dist/icons/SendIcon.d.ts.map +1 -0
- package/dist/icons/StatusDoubleCheckIcon.d.ts +7 -0
- package/dist/icons/StatusDoubleCheckIcon.d.ts.map +1 -0
- package/dist/icons/StatusSendingIcon.d.ts +7 -0
- package/dist/icons/StatusSendingIcon.d.ts.map +1 -0
- package/dist/icons/StatusSentIcon.d.ts +7 -0
- package/dist/icons/StatusSentIcon.d.ts.map +1 -0
- package/dist/icons/StickerIcon.d.ts +7 -0
- package/dist/icons/StickerIcon.d.ts.map +1 -0
- package/dist/icons/index.d.ts +14 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/index.cjs +4316 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4315 -0
- package/dist/index.js.map +1 -0
- package/dist/tailwind.css +49 -0
- package/dist/utils/audio.d.ts +14 -0
- package/dist/utils/audio.d.ts.map +1 -0
- package/dist/utils/cn.d.ts +4 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/color.d.ts +3 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/date.d.ts +5 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/extractText.d.ts +7 -0
- package/dist/utils/extractText.d.ts.map +1 -0
- package/dist/utils/groupMessages.d.ts +24 -0
- package/dist/utils/groupMessages.d.ts.map +1 -0
- package/dist/utils/message.d.ts +5 -0
- package/dist/utils/message.d.ts.map +1 -0
- package/dist/utils/string.d.ts +3 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/time.d.ts +8 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/package.json +96 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
@theme {
|
|
2
|
+
/* ── Background colors ── */
|
|
3
|
+
--color-wa-bg: #161717;
|
|
4
|
+
--color-wa-header: #161717;
|
|
5
|
+
--color-wa-bubble-out: #144d37;
|
|
6
|
+
--color-wa-bubble-in: #202c33;
|
|
7
|
+
--color-wa-input: #242626;
|
|
8
|
+
--color-wa-avatar: #2a3942;
|
|
9
|
+
--color-wa-divider: #182229;
|
|
10
|
+
|
|
11
|
+
/* ── Text colors ── */
|
|
12
|
+
--color-wa-text-primary: #e9edef;
|
|
13
|
+
--color-wa-text-secondary: #8696a0;
|
|
14
|
+
--color-wa-text-body: #d1d7db;
|
|
15
|
+
--color-wa-icon: #aebac1;
|
|
16
|
+
|
|
17
|
+
/* ── Accent colors ── */
|
|
18
|
+
--color-wa-teal: #00a884;
|
|
19
|
+
--color-wa-teal-hover: #06cf9c;
|
|
20
|
+
--color-wa-send: #21c063;
|
|
21
|
+
--color-wa-read: #53bdeb;
|
|
22
|
+
--color-wa-waveform-out: #53bdeb;
|
|
23
|
+
--color-wa-waveform-in: #8696a0;
|
|
24
|
+
--color-wa-waveform-out-faint: rgba(83, 189, 235, 0.4);
|
|
25
|
+
--color-wa-waveform-in-faint: rgba(134, 150, 160, 0.4);
|
|
26
|
+
|
|
27
|
+
/* ── Border radii ── */
|
|
28
|
+
--radius-wa-bubble: 0.525rem;
|
|
29
|
+
--radius-wa-divider: 0.325rem;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* ── Custom scrollbar ── */
|
|
33
|
+
.scrollbar-wa {
|
|
34
|
+
scrollbar-width: thin;
|
|
35
|
+
scrollbar-color: rgba(255, 255, 255, 0.1) transparent;
|
|
36
|
+
}
|
|
37
|
+
.scrollbar-wa::-webkit-scrollbar {
|
|
38
|
+
width: 4px;
|
|
39
|
+
}
|
|
40
|
+
.scrollbar-wa::-webkit-scrollbar-track {
|
|
41
|
+
background: transparent;
|
|
42
|
+
}
|
|
43
|
+
.scrollbar-wa::-webkit-scrollbar-thumb {
|
|
44
|
+
background: rgba(255, 255, 255, 0.18);
|
|
45
|
+
border-radius: 9999px;
|
|
46
|
+
}
|
|
47
|
+
.scrollbar-wa::-webkit-scrollbar-thumb:hover {
|
|
48
|
+
background: rgba(255, 255, 255, 0.3);
|
|
49
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Number of bars in the waveform visualisation. */
|
|
2
|
+
export declare const BAR_COUNT = 44;
|
|
3
|
+
/**
|
|
4
|
+
* Analyse an audio file at `url` using the Web Audio API and return an array
|
|
5
|
+
* of `BAR_COUNT` amplitude values, each normalised to the range 0–10.
|
|
6
|
+
*
|
|
7
|
+
* Returns an array of zeros when no url is provided or on any error.
|
|
8
|
+
*/
|
|
9
|
+
export declare function analyzeAudio(url: string, count?: number): Promise<number[]>;
|
|
10
|
+
/** Formats a duration in seconds as `M:SS`. */
|
|
11
|
+
export declare function fmtTime(seconds: number): string;
|
|
12
|
+
/** Draws a rounded rectangle path on a 2-D canvas context. */
|
|
13
|
+
export declare function roundRect(ctx: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, r: number): void;
|
|
14
|
+
//# sourceMappingURL=audio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/utils/audio.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgC5F;AAED,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CACvB,GAAG,EAAE,wBAAwB,EAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,IAAI,CAaN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/utils/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAA;AAG5C,6EAA6E;AAC7E,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/utils/color.ts"],"names":[],"mappings":"AAeA,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Coerces a `Date` or ISO string to a `Date`, returning `null` on failure. */
|
|
2
|
+
export declare function toDate(value?: Date | string): Date | null;
|
|
3
|
+
/** Returns `true` when `a` and `b` fall on the same calendar day. */
|
|
4
|
+
export declare function isSameCalendarDay(a: Date, b: Date): boolean;
|
|
5
|
+
//# sourceMappingURL=date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wBAAgB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAKzD;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAM3D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Recursively extracts all text from a React node tree.
|
|
4
|
+
* Detects the `content` prop used by the <Text> component.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractTextFromNode(node: React.ReactNode): string;
|
|
7
|
+
//# sourceMappingURL=extractText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractText.d.ts","sourceRoot":"","sources":["../../src/utils/extractText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAYjE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/** A single message entry managed by {@link Chat}. */
|
|
3
|
+
export interface GroupedMessage {
|
|
4
|
+
/** Unique React key — auto-generated by `<Chat>` when omitted. */
|
|
5
|
+
id?: React.Key;
|
|
6
|
+
/** Identifies the sender; `'me'` denotes the local user. */
|
|
7
|
+
senderId: string;
|
|
8
|
+
/** The rendered message node, typically a `<Message>` component tree. */
|
|
9
|
+
node: React.ReactNode;
|
|
10
|
+
/** Creation timestamp; used to group messages by calendar day and compute day-divider labels. */
|
|
11
|
+
timestamp?: Date | string;
|
|
12
|
+
}
|
|
13
|
+
/** A run of consecutive messages from the same sender on the same calendar day. */
|
|
14
|
+
export interface MessageDayGroup {
|
|
15
|
+
/** Sender id shared by all messages in this group. */
|
|
16
|
+
senderId: string;
|
|
17
|
+
/** The calendar day for this group, or `null` when no timestamp was provided. */
|
|
18
|
+
dayDate: Date | null;
|
|
19
|
+
/** Ordered list of messages belonging to this group. */
|
|
20
|
+
messages: GroupedMessage[];
|
|
21
|
+
}
|
|
22
|
+
/** Groups a flat message list into per-sender, per-day segments. */
|
|
23
|
+
export declare function groupMessagesByDay(messages: GroupedMessage[]): MessageDayGroup[];
|
|
24
|
+
//# sourceMappingURL=groupMessages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupMessages.d.ts","sourceRoot":"","sources":["../../src/utils/groupMessages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAA;IACd,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,iGAAiG;IACjG,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAC1B;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAA;IAChB,iFAAiF;IACjF,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;IACpB,wDAAwD;IACxD,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,eAAe,EAAE,CAiBhF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/utils/message.ts"],"names":[],"mappings":"AAEA,yDAAyD;AACzD,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,IAAI,MAAM,CAGhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Returns `time` as-is, or the current local time formatted as `HH:MM`. */
|
|
2
|
+
export declare function getDisplayTime(time?: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Returns a human-readable date label for a day-divider:
|
|
5
|
+
* `'Today'`, `'Yesterday'`, weekday name, or `D.M.YY`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getDisplayDate(date?: string): string;
|
|
8
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBpD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "whatsapp-ui-react",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "React component library with a WhatsApp Web-inspired UI.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react",
|
|
7
|
+
"whatsapp",
|
|
8
|
+
"chat",
|
|
9
|
+
"ui",
|
|
10
|
+
"component",
|
|
11
|
+
"tailwindcss"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/2hoch1/whatsapp-ui-react#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/2hoch1/whatsapp-ui-react/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/2hoch1/whatsapp-ui-react.git"
|
|
20
|
+
},
|
|
21
|
+
"license": "Apache-2.0",
|
|
22
|
+
"type": "module",
|
|
23
|
+
"sideEffects": false,
|
|
24
|
+
"main": "./dist/index.cjs",
|
|
25
|
+
"module": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"import": "./dist/index.js",
|
|
31
|
+
"require": "./dist/index.cjs"
|
|
32
|
+
},
|
|
33
|
+
"./styles": "./dist/tailwind.css"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist"
|
|
37
|
+
],
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"dev": "vite --config vite.dev.config.ts",
|
|
43
|
+
"build": "tsc --noEmit && vite build",
|
|
44
|
+
"postbuild": "node --input-type=module --eval \"import{copyFileSync}from'fs';copyFileSync('./src/tailwind.css','./dist/tailwind.css');\"",
|
|
45
|
+
"build:preview": "vite build --config vite.dev.config.ts",
|
|
46
|
+
"typecheck": "tsc --noEmit",
|
|
47
|
+
"lint": "eslint src",
|
|
48
|
+
"lint:fix": "eslint src --fix",
|
|
49
|
+
"format": "prettier --write \"src/**/*.{ts,tsx}\" \"*.{json,md,yml,yaml}\"",
|
|
50
|
+
"format:check": "prettier --check \"src/**/*.{ts,tsx}\" \"*.{json,md,yml,yaml}\"",
|
|
51
|
+
"test": "vitest run",
|
|
52
|
+
"test:watch": "vitest",
|
|
53
|
+
"test:coverage": "vitest run --coverage",
|
|
54
|
+
"prepare": "husky"
|
|
55
|
+
},
|
|
56
|
+
"peerDependencies": {
|
|
57
|
+
"react": ">=18.0.0",
|
|
58
|
+
"react-dom": ">=18.0.0"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@commitlint/cli": "^19.0.0",
|
|
62
|
+
"@commitlint/config-conventional": "^19.0.0",
|
|
63
|
+
"@eslint/js": "^9.0.0",
|
|
64
|
+
"@tailwindcss/vite": "^4.2.1",
|
|
65
|
+
"@testing-library/jest-dom": "^6.0.0",
|
|
66
|
+
"@testing-library/react": "^16.0.0",
|
|
67
|
+
"@types/react": "^18.0.0",
|
|
68
|
+
"@types/react-dom": "^18.0.0",
|
|
69
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
70
|
+
"@typescript-eslint/parser": "^8.0.0",
|
|
71
|
+
"@vitejs/plugin-react": "^4.0.0",
|
|
72
|
+
"@vitest/coverage-v8": "^3.0.0",
|
|
73
|
+
"eslint": "^9.0.0",
|
|
74
|
+
"eslint-config-prettier": "^9.0.0",
|
|
75
|
+
"eslint-plugin-prettier": "^5.0.0",
|
|
76
|
+
"eslint-plugin-react": "^7.0.0",
|
|
77
|
+
"eslint-plugin-react-hooks": "^5.0.0",
|
|
78
|
+
"husky": "^9.0.0",
|
|
79
|
+
"jsdom": "^26.0.0",
|
|
80
|
+
"lint-staged": "^15.0.0",
|
|
81
|
+
"prettier": "^3.0.0",
|
|
82
|
+
"react": "^18.0.0",
|
|
83
|
+
"react-dom": "^18.0.0",
|
|
84
|
+
"tailwindcss": "^4.2.1",
|
|
85
|
+
"tsx": "^4.0.0",
|
|
86
|
+
"typescript": "^5.0.0",
|
|
87
|
+
"typescript-eslint": "^8.0.0",
|
|
88
|
+
"vite": "^6.0.0",
|
|
89
|
+
"vite-plugin-dts": "^4.0.0",
|
|
90
|
+
"vitest": "^3.0.0"
|
|
91
|
+
},
|
|
92
|
+
"dependencies": {
|
|
93
|
+
"clsx": "^2.1.1",
|
|
94
|
+
"tailwind-merge": "^3.5.0"
|
|
95
|
+
}
|
|
96
|
+
}
|