bibot 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/.babelrc +7 -0
  2. package/.vscode/settings.json +5 -0
  3. package/dist/bibot.js +175 -0
  4. package/dist/bibot.js.map +1 -0
  5. package/dist/component/bibot.d.ts +5 -0
  6. package/dist/component/bibot.js +170 -0
  7. package/dist/component/bibot.js.map +1 -0
  8. package/dist/config/appStateEnums.js +10 -5
  9. package/dist/config/endpointEnums.js +27 -22
  10. package/dist/config/index.js +38 -5
  11. package/dist/config/statusCode.js +49 -44
  12. package/dist/context/AppContext.js +73 -56
  13. package/dist/context/index.js +16 -3
  14. package/dist/hooks/index.d.ts +1 -0
  15. package/dist/hooks/index.js +38 -4
  16. package/dist/hooks/index.js.map +1 -1
  17. package/dist/hooks/mobileView.js +33 -18
  18. package/dist/hooks/useBiBotChatBot.d.ts +29 -0
  19. package/dist/hooks/useBiBotChatBot.js +206 -0
  20. package/dist/hooks/useBiBotChatBot.js.map +1 -0
  21. package/dist/hooks/usePluginFactory.js +60 -77
  22. package/dist/index.css +36 -0
  23. package/dist/index.d.ts +1 -2
  24. package/dist/index.js +9 -6
  25. package/dist/index.js.map +1 -1
  26. package/dist/reducers/appReducer.js +24 -22
  27. package/dist/reducers/index.js +16 -3
  28. package/dist/services/index.js +16 -3
  29. package/dist/services/plugin-api.js +179 -182
  30. package/dist/styles/RegisterPageStyle.css +63 -0
  31. package/dist/styles/adminPortal.css +26 -0
  32. package/dist/styles/appConfig.css +90 -0
  33. package/dist/styles/buttonStyle.css +27 -0
  34. package/dist/styles/chatStyle.css +140 -0
  35. package/dist/styles/index.css +82 -0
  36. package/dist/styles/predefinedStyle.css +35 -0
  37. package/dist/styles/themeStyle.css +42 -0
  38. package/dist/styles/training.css +86 -0
  39. package/dist/types/coreInterfaces.d.ts +1 -10
  40. package/dist/types/coreInterfaces.js +5 -2
  41. package/dist/types/index.js +16 -3
  42. package/dist/utils/index.js +27 -3
  43. package/dist/utils/sessionManager.js +16 -12
  44. package/dist/utils/trimWhitespace.js +15 -11
  45. package/package.json +50 -54
  46. package/src/component/bibot.tsx +103 -0
  47. package/src/config/appStateEnums.ts +3 -0
  48. package/src/config/endpointEnums.ts +28 -0
  49. package/src/config/index.ts +5 -0
  50. package/src/config/statusCode.ts +49 -0
  51. package/src/context/AppContext.tsx +66 -0
  52. package/src/context/index.ts +3 -0
  53. package/src/hooks/index.ts +5 -0
  54. package/src/hooks/mobileView.tsx +17 -0
  55. package/src/hooks/useBiBotChatBot.tsx +107 -0
  56. package/src/hooks/usePluginFactory.tsx +38 -0
  57. package/src/index.css +36 -0
  58. package/src/index.tsx +3 -0
  59. package/src/reducers/appReducer.ts +16 -0
  60. package/src/reducers/index.ts +4 -0
  61. package/src/services/index.ts +2 -0
  62. package/src/services/plugin-api.tsx +120 -0
  63. package/src/styles/RegisterPageStyle.css +63 -0
  64. package/src/styles/adminPortal.css +26 -0
  65. package/src/styles/appConfig.css +90 -0
  66. package/src/styles/buttonStyle.css +27 -0
  67. package/src/styles/chatStyle.css +140 -0
  68. package/src/styles/index.css +82 -0
  69. package/src/styles/predefinedStyle.css +35 -0
  70. package/src/styles/themeStyle.css +42 -0
  71. package/src/styles/training.css +86 -0
  72. package/src/types/coreInterfaces.ts +69 -0
  73. package/src/types/index.ts +4 -0
  74. package/src/utils/index.ts +2 -0
  75. package/src/utils/sessionManager.tsx +15 -0
  76. package/src/utils/trimWhitespace.ts +11 -0
  77. package/tsconfig.json +25 -0
  78. package/webpack.config.js +19 -0
  79. package/dist/components/bibot.js +0 -171
  80. package/dist/components/bibot.js.map +0 -1
  81. /package/dist/{components/bibot.d.ts → bibot.d.ts} +0 -0
@@ -0,0 +1,26 @@
1
+ .useremail{
2
+ width: 70px;
3
+ white-space: nowrap;
4
+ overflow: hidden;
5
+ text-overflow: ellipsis;
6
+ margin-top: 0;
7
+ }
8
+
9
+ /* Media query for screens smaller than 600px */
10
+ @media screen and (max-width: 600px) {
11
+ .hideOnMobile{
12
+ display: none !important;
13
+ }
14
+ }
15
+
16
+ /* Media query for screens between 600px and 900px */
17
+ /* @media screen and (min-width: 600px) and (max-width: 900px) {
18
+ .hideProfile{
19
+ display: none;
20
+ }
21
+ } */
22
+
23
+ /* Media query for screens larger than 1200px */
24
+ @media screen and (min-width: 1200px) {
25
+
26
+ }
@@ -0,0 +1,90 @@
1
+ .mainContent{
2
+ display: flex;
3
+ width: 100%;
4
+ justify-content: space-around;
5
+ flex-wrap: wrap;
6
+ }
7
+ .firstSection{
8
+ text-align: start;
9
+ }
10
+ .secondSection{
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ }
15
+ .previewSection{
16
+ height: 100%;
17
+ }
18
+ input[type="file"] {
19
+ display: none;
20
+ }
21
+ .inputfileButton{
22
+ display: inline-block;
23
+ align-items: center;
24
+ /* background-color: #73767a; */
25
+ border: none;
26
+ border-radius: 5px;
27
+ cursor: pointer;
28
+ }
29
+
30
+
31
+ /* Media query for screens smaller than 600px */
32
+ @media screen and (max-width: 600px) {
33
+ .mainContent{
34
+ display: flex;
35
+ width: 100%;
36
+ flex-direction: column;
37
+ justify-content: space-around;
38
+ align-items: center;
39
+ }
40
+ .button{
41
+ width: 100% !important;
42
+ }
43
+ .previewSection{
44
+ width: 100%;
45
+ margin-top: 30px;
46
+ }
47
+ .firstSection{
48
+ width: 100%;
49
+ text-align: start;
50
+ margin-bottom: 50px;
51
+ }
52
+ .secondSection{
53
+ width: 100%;
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ text-align: start;
58
+ }
59
+ }
60
+
61
+ /* Media query for screens between 600px and 900px */
62
+ @media screen and (min-width: 600px) and (max-width: 900px) {
63
+ .mainContent{
64
+ display: flex;
65
+ width: 100%;
66
+ flex-direction: column;
67
+ justify-content: space-around;
68
+ align-items: center;
69
+ }
70
+ .previewSection{
71
+ width: 100%;
72
+ }
73
+ .firstSection{
74
+ width: 100%;
75
+ text-align: start;
76
+ margin-bottom: 50px;
77
+ }
78
+ .secondSection{
79
+ width: 100%;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ text-align: start;
84
+ }
85
+ }
86
+
87
+ /* Media query for screens larger than 1200px */
88
+ @media screen and (min-width: 1200px) {
89
+
90
+ }
@@ -0,0 +1,27 @@
1
+ .button,
2
+ .ant-btn.button {
3
+ font-family: Arial, sans-serif;
4
+ font-size: 14px;
5
+ display: flex;
6
+ justify-content: center;
7
+ align-items: center;
8
+ border-radius: 10px;
9
+ border: 2px solid #d67632;
10
+ outline: none;
11
+ cursor: pointer;
12
+ transition: background-color 0.3s, color 0.3s;
13
+ background-color: #5f2d78;
14
+ color: white;
15
+ }
16
+
17
+ .ant-popover-buttons {
18
+ display: flex;
19
+ justify-content: flex-end;
20
+ background-color: #5f2d78;
21
+ color: white
22
+ }
23
+
24
+ .ant-popover-button {
25
+ margin: 8px;
26
+ }
27
+
@@ -0,0 +1,140 @@
1
+ .chat-bubble {
2
+ position: fixed;
3
+ bottom: 20px;
4
+ right: 20px;
5
+ z-index: 9999;
6
+ }
7
+
8
+ .chat-toggle {
9
+ color: #fff;
10
+ border-radius: 50%;
11
+ height: 60px;
12
+ width: 60px;
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ }
17
+
18
+ .chat-window {
19
+ position: absolute;
20
+ bottom: 50px;
21
+ right: 25px;
22
+ width: 350px;
23
+ height: 500px;
24
+ background-color: white;
25
+ border: 1px solid #ddd;
26
+ border-radius: 10px;
27
+ /* padding: 10px; */
28
+ box-shadow: 0 2px 10px rgba(0,0,0,0.2);
29
+ display: flex;
30
+ flex-direction: column;
31
+ justify-content: space-between;
32
+ }
33
+
34
+ /* Existing styles... */
35
+ .chat-header{
36
+ height: 50px;
37
+ border-top-left-radius: 8px;
38
+ border-top-right-radius: 8px;
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: flex-start;
42
+ padding-inline: 15px;
43
+ padding-block: 30px;
44
+ }
45
+ .message-list {
46
+ height: calc(100% - 100px);
47
+ overflow-y: auto;
48
+ padding: 10px;
49
+ display: flex;
50
+ flex-grow: 1;
51
+ flex-direction: column;
52
+ }
53
+
54
+ .message {
55
+ margin-bottom: 10px;
56
+ padding: 5px 10px;
57
+ border-radius: 8px;
58
+ max-width: 70%;
59
+ }
60
+
61
+ .message.user {
62
+ background-color: #b8b8b8c6;
63
+ align-self: flex-end;
64
+ }
65
+
66
+ .message.bot {
67
+ background-color: #f0f0f0;
68
+ align-self: flex-start;
69
+ }
70
+ textarea:focus, input:focus{
71
+ outline: none;
72
+ }
73
+
74
+ /* Chat loader*/
75
+ .loader {
76
+ width: 12px;
77
+ aspect-ratio: 1;
78
+ border-radius: 50%;
79
+ animation: l5 1s infinite linear alternate;
80
+ }
81
+ @keyframes l5 {
82
+ 0% {box-shadow: 20px 0 #000, -20px 0 #0002;background: #000 }
83
+ 33% {box-shadow: 20px 0 #000, -20px 0 #0002;background: #0002}
84
+ 66% {box-shadow: 20px 0 #0002,-20px 0 #000; background: #0002}
85
+ 100%{box-shadow: 20px 0 #0002,-20px 0 #000; background: #000 }
86
+ }
87
+
88
+
89
+ .input-area {
90
+ display: flex;
91
+ align-items: center;
92
+ border-top: 1px solid #ddd;
93
+ padding: 10px;
94
+ border-bottom-left-radius: 8px;
95
+ border-bottom-right-radius: 8px;
96
+ }
97
+
98
+ .input-area input {
99
+ flex-grow: 1;
100
+ border: none;
101
+ background-color: transparent;
102
+ /* border: 1px solid #ccc; */
103
+ /* border-radius: 15px; */
104
+ padding: 5px 10px;
105
+ margin-right: 10px;
106
+ }
107
+
108
+ .input-area button {
109
+ background-color: #007bff;
110
+ color: white;
111
+ border: none;
112
+ border-radius: 15px;
113
+ padding: 5px 10px;
114
+ cursor: pointer;
115
+ }
116
+
117
+ /* Existing styles... */
118
+
119
+ .loading-bubbles {
120
+ display: flex;
121
+ justify-content: center;
122
+ align-items: center;
123
+ }
124
+
125
+ .bubble {
126
+ width: 8px;
127
+ height: 8px;
128
+ border-radius: 50%;
129
+ margin: 0 3px;
130
+ animation: bounce 0.6s infinite alternate;
131
+ }
132
+
133
+ @keyframes bounce {
134
+ from {
135
+ transform: translateY(0);
136
+ }
137
+ to {
138
+ transform: translateY(-15px);
139
+ }
140
+ }
@@ -0,0 +1,82 @@
1
+ @import 'themeStyle.css';
2
+ @import 'buttonStyle.css';
3
+ @import 'chatStyle.css';
4
+ @import 'predefinedStyle.css';
5
+ body {
6
+ font-family: 'Roboto', sans-serif;
7
+ margin: 0;
8
+ }
9
+
10
+ code {
11
+ font-family: 'Roboto', sans-serif;
12
+ }
13
+
14
+ .cardsBody, .container, .header, .display-message, .position, .embed-report, .controls, .footer, .button, .login-container, .admin-layout, .client-layout, .admin-header, .client-header, .content-layout, .title, .menu, .site-layout-background, .not-implemented, .admin-footer, .client-footer, .report-container {
15
+ box-sizing: border-box;
16
+ }
17
+
18
+ .cardsBody {
19
+ margin: 0;
20
+ padding: 10px;
21
+ min-height: 100vh;
22
+ display: flex;
23
+ flex-direction: column;
24
+ }
25
+
26
+ .content-layout {
27
+ padding: 24px;
28
+ margin: 0;
29
+ min-height: 280px;
30
+ /* background: green; */
31
+ }
32
+
33
+ .site-layout-background {
34
+ padding: 24px;
35
+ /* background-color: red; */
36
+ }
37
+
38
+ .admin-footer, .client-footer {
39
+ text-align: center;
40
+ background: #fff;
41
+ padding: 10px 50px;
42
+ }
43
+
44
+ .not-implemented {
45
+ min-height: 89.1vh;
46
+ color: red;
47
+ background-size: fit;
48
+ background-position: center;
49
+ background-repeat: no-repeat;
50
+ background-image: var(--bg-logo);
51
+ }
52
+
53
+ .ant-spin-dot-item {
54
+ background-color: #d67632 !important;
55
+ color: #d67632 !important;
56
+ }
57
+
58
+ .admin-layout, .client-layout {
59
+ flex: 1;
60
+ overflow-y: auto;
61
+ }
62
+
63
+ .descriptions-custom .ant-descriptions-item-label {
64
+ width: 20%;
65
+ }
66
+
67
+ .descriptions-custom .ant-descriptions-item-content {
68
+ width: 70%;
69
+ }
70
+
71
+ h1 {
72
+ color: #165a72;
73
+ margin: 50px auto;
74
+ font-size: 40px;
75
+ }
76
+ .soc-menu {
77
+ margin-bottom: 40px;
78
+ margin-top: 20px;
79
+ }
80
+ h2 {
81
+ color: #165a72;
82
+ }
@@ -0,0 +1,35 @@
1
+ .predefined-questions {
2
+ margin-top: 10px;
3
+ padding: 10px;
4
+ background-color: #f7f7f7; /* light gray background */
5
+ border-top: 1px solid #e0e0e0; /* separator from the messages */
6
+ }
7
+
8
+ .predefined-question {
9
+ padding: 8px 12px;
10
+ margin-bottom: 5px; /* space between questions */
11
+ background-color: #ffffff; /* white background for the questions */
12
+ border: 1px solid #dedede; /* light gray border */
13
+ border-radius: 15px; /* rounded corners */
14
+ cursor: pointer;
15
+ transition: background-color 0.3s ease; /* smooth background color change on hover */
16
+ }
17
+
18
+ .predefined-question:hover {
19
+ background-color: #e8f0fe; /* slightly blue background on hover */
20
+ }
21
+
22
+ /* You may want to add additional styles for text size, color, and alignment */
23
+ .predefined-question {
24
+ font-size: 0.9rem; /* moderate text size */
25
+ color: #333333; /* dark gray text color */
26
+ text-align: left;
27
+ }
28
+
29
+ /* Ensuring the list doesn't cover the entire chat window and has a scroll if there are many items */
30
+ .predefined-questions {
31
+ /* max-height: 150px; */
32
+ height: 100%;
33
+ overflow-y: auto; /* enables scroll */
34
+ }
35
+
@@ -0,0 +1,42 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ .light {
6
+ /* Light mode colors */
7
+ --bg-color: #f0f0f0;
8
+ --text-color: #333;
9
+ --bg-light: #fff;
10
+ --text-light: #333;
11
+ --hover-bg-light: #000;
12
+ --hover-text-light: #fff;
13
+ --expanded-bg-light: #f5f5f5;
14
+ --sidebar-text-light: #333;
15
+ --sidebar-hover-bg-light: #000;
16
+ --sidebar-hover-text-light: #fff;
17
+ --sidebar-expanded-bg-light: #f5f5f5;
18
+ --border-color: blue;
19
+ --highlight-color: #ffcc00;
20
+ --bg-logo: url('/src/assets/logo/preauditai-high-resolution-logo-transparent.png')
21
+ }
22
+
23
+ .dark {
24
+ /* Dark mode colors */
25
+ --bg-color: #333;
26
+ --text-color: #f0f0f0;
27
+ --bg-dark: #333;
28
+ --text-dark: #fff;
29
+ --hover-bg-dark: #555;
30
+ --hover-text-dark: #fff;
31
+ --expanded-bg-dark: #444;
32
+ --sidebar-bg-dark: #333;
33
+ --sidebar-text-dark: #fff;
34
+ --sidebar-hover-bg-dark: #555;
35
+ --sidebar-hover-text-dark: #fff;
36
+ --sidebar-expanded-bg-dark: #444;
37
+ --border-color: blue;
38
+ --highlight-color: #007bff;
39
+ --bg-logo: url('/src/assets/logo/preauditai-high-resolution-logo-black-transparent.png')
40
+ }
41
+
42
+
@@ -0,0 +1,86 @@
1
+ .mainContainer{
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: flex-start;
5
+ }
6
+ .contentContainer{
7
+ width: 100%;
8
+ display: flex;
9
+ justify-content: space-between;
10
+ text-align: start;
11
+ flex-wrap: wrap;
12
+ }
13
+ .fileUploadSection{
14
+ width: 50%;
15
+ }
16
+ .fileInfoSection{
17
+ display: flex;
18
+ width: 40%;
19
+ }
20
+ .fileUploaderContainer{
21
+ border: 3px dotted #929292;
22
+ border-radius: 10px;
23
+ padding: 30px;
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ flex-direction: column;
28
+ width: 100%;
29
+ cursor: pointer;
30
+ }
31
+ .fileUploader{
32
+ width: 100%;
33
+ text-align: start;
34
+ }
35
+
36
+
37
+ /* Media query for screens smaller than 600px */
38
+ @media screen and (max-width: 600px) {
39
+ .fileUploaderContainer{
40
+ background-color: #f2f2f2;
41
+ padding: 30px;
42
+ display: flex;
43
+ align-items: center;
44
+ width: 100%;
45
+ }
46
+ .btn{
47
+ width: 100% !important;
48
+ margin-top: 30px;
49
+ }
50
+ .fileUploadSection{
51
+ width: 100%;
52
+ margin-bottom: 30px;
53
+ }
54
+ .fileInfoSection{
55
+ display: flex;
56
+ width: 100%;
57
+ }
58
+ }
59
+
60
+ /* Media query for screens between 600px and 900px */
61
+ @media screen and (min-width: 600px) and (max-width: 900px) {
62
+ .fileUploaderContainer{
63
+ background-color: #f2f2f2;
64
+ padding: 30px;
65
+ display: flex;
66
+ align-items: center;
67
+ width: 100%;
68
+ }
69
+ .btn{
70
+ width: 100% !important;
71
+ margin-top: 30px;
72
+ }
73
+ .fileUploadSection{
74
+ width: 100%;
75
+ margin-bottom: 30px;
76
+ }
77
+ .fileInfoSection{
78
+ display: flex;
79
+ width: 100%;
80
+ }
81
+ }
82
+
83
+ /* Media query for screens larger than 1200px */
84
+ @media screen and (min-width: 1200px) {
85
+
86
+ }
@@ -0,0 +1,69 @@
1
+ import { type MenuTheme } from 'antd/es/menu'
2
+ import type { appStateEnums } from 'config'
3
+
4
+ interface AppStates {
5
+ hideImportantMessages?: boolean
6
+ collapsed?: boolean
7
+ chatIsOpen: boolean
8
+ sessionId: string
9
+ }
10
+
11
+ interface AppContextProps {
12
+ state: AppStates
13
+ dispatch: React.Dispatch<any>
14
+ }
15
+
16
+
17
+ interface AppAction {
18
+ type: appStateEnums
19
+ theme: MenuTheme
20
+ hideImportantMessages: boolean
21
+ collapsed: boolean
22
+ chatIsOpen: boolean
23
+ }
24
+
25
+ type NotificationType = 'info' | 'warning' | 'success' | 'error'
26
+ interface NOTIFICATION_DT {
27
+ id: number
28
+ message: string
29
+ timestamp: number
30
+ type: NotificationType
31
+ }
32
+
33
+ interface Plan {
34
+ name: string
35
+ price: string
36
+ accounts: number | string
37
+ complianceFrameworks: number | string
38
+ features: string[]
39
+ }
40
+
41
+ interface SUBSCRIPTION {
42
+ tier: 'free' | 'basic' | 'advanced' | 'premium' | null
43
+ status: 'active' | 'inactive' | null
44
+ created: number | null
45
+ next_billing_date?: number | null
46
+ }
47
+
48
+ interface AppconfigType {
49
+ appTitle: string;
50
+ file_name: string | undefined;
51
+ windowColor: string;
52
+ }
53
+ interface docInfoType {
54
+ name: string;
55
+ size: number;
56
+ type: string;
57
+ }
58
+
59
+ export type {
60
+ AppStates,
61
+ AppAction,
62
+ AppContextProps,
63
+ NOTIFICATION_DT,
64
+ NotificationType,
65
+ Plan,
66
+ SUBSCRIPTION,
67
+ AppconfigType,
68
+ docInfoType,
69
+ }
@@ -0,0 +1,4 @@
1
+ // created from 'create-ts-index'
2
+
3
+ export * from './coreInterfaces'
4
+
@@ -0,0 +1,2 @@
1
+ export * from './trimWhitespace'
2
+ export * from './sessionManager'
@@ -0,0 +1,15 @@
1
+ import { v4 as uuidv4 } from 'uuid'
2
+
3
+ const SESSION_KEY: string = 'bibotUserSessionId'
4
+
5
+ const getSessionId = (): string => {
6
+ const sessionId = localStorage.getItem(SESSION_KEY)
7
+ if (sessionId === null) {
8
+ const newSessionId = uuidv4()
9
+ localStorage.setItem(SESSION_KEY, newSessionId)
10
+ return newSessionId
11
+ }
12
+ return sessionId
13
+ }
14
+
15
+ export { getSessionId }
@@ -0,0 +1,11 @@
1
+ const trimWhitespace = (e: any) => {
2
+ // Check if the event has a target (it's an input event)
3
+ if (e?.target) {
4
+ // If it's a string, trim the whitespace; otherwise, return the value as is
5
+ return typeof e.target.value === 'string' ? e.target.value.trim() : e.target.value
6
+ }
7
+ // If it's not an input event, return the value as is
8
+ return e
9
+ }
10
+
11
+ export { trimWhitespace }
package/tsconfig.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "outDir": "./dist",
4
+ "module": "esnext",
5
+ "target": "es5",
6
+ "lib": ["dom", "dom.iterable", "esnext"],
7
+ "jsx": "react-jsx",
8
+ "moduleResolution": "node",
9
+ "declaration": true,
10
+ "sourceMap": true,
11
+ "skipLibCheck": true,
12
+ "esModuleInterop": true,
13
+ "forceConsistentCasingInFileNames": true,
14
+ "strict": true,
15
+ "noImplicitAny": true,
16
+ "noImplicitThis": true,
17
+ "strictNullChecks": true,
18
+ "baseUrl": "src",
19
+ "paths": {
20
+ "@/*": ["./src/*"]
21
+ }
22
+ },
23
+ "include": ["src/**/*", "tailwind.config.ts", "uuid.d.ts"],
24
+ "exclude": ["node_modules", "dist", "example"]
25
+ }
@@ -0,0 +1,19 @@
1
+ module: {
2
+ rules: [
3
+ {
4
+ test: /\.(ts|tsx)$/,
5
+ exclude: /node_modules/,
6
+ use: {
7
+ loader: 'babel-loader',
8
+ options: {
9
+ presets: [
10
+ '@babel/preset-env',
11
+ '@babel/preset-react',
12
+ '@babel/preset-typescript'
13
+ ]
14
+ }
15
+ }
16
+ }
17
+ ]
18
+ }
19
+