@bikdotai/bik-component-library 0.0.718-beta.11 → 0.0.718-beta.12

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.
Files changed (141) hide show
  1. package/dist/cjs/assets/icons/Ai_event_generating.svg.js +1 -0
  2. package/dist/cjs/components/SearchFilter/components/DatePickerButton.js +1 -1
  3. package/dist/cjs/components/SearchFilter/components/DateRangeOnlyButton.js +1 -1
  4. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsDropdown.d.ts +1 -3
  5. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsDropdown.js +1 -1
  6. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.d.ts +1 -1
  7. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +1 -1
  8. package/dist/cjs/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
  9. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
  10. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.d.ts +4 -1
  11. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.d.ts +1 -0
  12. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.js +1 -1
  13. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.d.ts +26 -0
  14. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.js +1 -1
  15. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapVertical.js +1 -1
  16. package/dist/cjs/components/bik-chatbot/components/AIChat.d.ts +5 -0
  17. package/dist/cjs/components/bik-chatbot/components/AIChat.js +1 -0
  18. package/dist/cjs/components/bik-chatbot/components/BIKChatbot.d.ts +36 -0
  19. package/dist/cjs/components/bik-chatbot/components/BIKChatbot.js +1 -0
  20. package/dist/cjs/components/bik-chatbot/components/ChatLoadingState.d.ts +7 -0
  21. package/dist/cjs/components/bik-chatbot/components/ChatLoadingState.js +177 -0
  22. package/dist/cjs/components/bik-chatbot/components/ChatWindow.d.ts +12 -0
  23. package/dist/cjs/components/bik-chatbot/components/ChatWindow.js +252 -0
  24. package/dist/cjs/components/bik-chatbot/components/ThinkingIndicator.d.ts +3 -0
  25. package/dist/cjs/components/bik-chatbot/components/ThinkingIndicator.js +188 -0
  26. package/dist/cjs/components/bik-chatbot/contexts/AIContext.d.ts +4 -0
  27. package/dist/cjs/components/bik-chatbot/contexts/AIContext.js +1 -0
  28. package/dist/cjs/components/bik-chatbot/index.d.ts +137 -0
  29. package/dist/cjs/components/bik-chatbot/services/aiService.d.ts +30 -0
  30. package/dist/cjs/components/bik-chatbot/services/aiService.js +1 -0
  31. package/dist/cjs/components/bik-chatbot/services/callToChatbot.d.ts +6 -0
  32. package/dist/cjs/components/bik-chatbot/services/callToChatbot.js +1 -0
  33. package/dist/cjs/components/bik-chatbot/services/db.d.ts +6 -0
  34. package/dist/cjs/components/bik-chatbot/services/db.js +1 -0
  35. package/dist/cjs/components/bik-chatbot/services/useAIChat.d.ts +7 -0
  36. package/dist/cjs/components/bik-chatbot/services/useAIChat.js +1 -0
  37. package/dist/cjs/components/bik-chatbot/types/ai.d.ts +158 -0
  38. package/dist/cjs/components/bik-chatbot/types/ai.js +1 -0
  39. package/dist/cjs/components/bik-chatbot/types/chat.d.ts +34 -0
  40. package/dist/cjs/components/bik-chatbot/types/chat.js +1 -0
  41. package/dist/cjs/components/bik-chatbot/types/components.d.ts +130 -0
  42. package/dist/cjs/components/bik-chatbot/types/index.d.ts +6 -0
  43. package/dist/cjs/components/bik-chatbot/utils/guardrails.d.ts +6 -0
  44. package/dist/cjs/components/bik-chatbot/utils/guardrails.js +1 -0
  45. package/dist/cjs/components/bik-chatbot/utils/markdown.d.ts +1 -0
  46. package/dist/cjs/components/bik-chatbot/utils/markdown.js +1 -0
  47. package/dist/cjs/components/bik-chatbot-examples/AnalyticsAdvisor.d.ts +8 -0
  48. package/dist/cjs/components/bik-chatbot-examples/ContentIdeasDemo.d.ts +12 -0
  49. package/dist/cjs/components/bik-chatbot-examples/SilentModeDemo.d.ts +17 -0
  50. package/dist/cjs/components/bik-chatbot-examples/SimpleChatbotDemo.d.ts +17 -0
  51. package/dist/cjs/components/bik-chatbot-examples/SimpleJsonChatDemo.d.ts +16 -0
  52. package/dist/cjs/components/bik-chatbot-examples/services/MockRequestExecutor.d.ts +17 -0
  53. package/dist/cjs/components/bik-chatbot-examples/types.ts/examples.d.ts +61 -0
  54. package/dist/cjs/components/bik-layout/MockMenus.d.ts +1 -0
  55. package/dist/cjs/components/custom-date-time/DateSelector/DateSelector.js +1 -1
  56. package/dist/cjs/components/datePicker/DatePicker.d.ts +0 -2
  57. package/dist/cjs/components/datePicker/DatePicker.js +1 -1
  58. package/dist/cjs/components/datePicker/DatePicker.styled.d.ts +0 -12
  59. package/dist/cjs/components/datePicker/DatePicker.styled.js +1 -1
  60. package/dist/cjs/components/datePicker/index.d.ts +0 -1
  61. package/dist/cjs/components/dropdown/ChipDropdown.d.ts +1 -0
  62. package/dist/cjs/components/dropdown/ChipDropdown.js +4 -3
  63. package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -0
  64. package/dist/cjs/components/floating-action-button/FloatingActionButton.styles.js +1 -1
  65. package/dist/cjs/components/tabs/Tabs.js +1 -1
  66. package/dist/cjs/components/tabs/Tabs.model.d.ts +2 -0
  67. package/dist/cjs/index.d.ts +1 -0
  68. package/dist/cjs/index.js +1 -1
  69. package/dist/esm/assets/icons/Ai_event_generating.svg.js +1 -0
  70. package/dist/esm/components/SearchFilter/components/DatePickerButton.js +1 -1
  71. package/dist/esm/components/SearchFilter/components/DateRangeOnlyButton.js +1 -1
  72. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsDropdown.d.ts +1 -3
  73. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsDropdown.js +1 -1
  74. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.d.ts +1 -1
  75. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +1 -1
  76. package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
  77. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
  78. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.d.ts +4 -1
  79. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.d.ts +1 -0
  80. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.js +1 -1
  81. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.d.ts +26 -0
  82. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.js +1 -1
  83. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapVertical.js +1 -1
  84. package/dist/esm/components/bik-chatbot/components/AIChat.d.ts +5 -0
  85. package/dist/esm/components/bik-chatbot/components/AIChat.js +1 -0
  86. package/dist/esm/components/bik-chatbot/components/BIKChatbot.d.ts +36 -0
  87. package/dist/esm/components/bik-chatbot/components/BIKChatbot.js +1 -0
  88. package/dist/esm/components/bik-chatbot/components/ChatLoadingState.d.ts +7 -0
  89. package/dist/esm/components/bik-chatbot/components/ChatLoadingState.js +177 -0
  90. package/dist/esm/components/bik-chatbot/components/ChatWindow.d.ts +12 -0
  91. package/dist/esm/components/bik-chatbot/components/ChatWindow.js +252 -0
  92. package/dist/esm/components/bik-chatbot/components/ThinkingIndicator.d.ts +3 -0
  93. package/dist/esm/components/bik-chatbot/components/ThinkingIndicator.js +188 -0
  94. package/dist/esm/components/bik-chatbot/contexts/AIContext.d.ts +4 -0
  95. package/dist/esm/components/bik-chatbot/contexts/AIContext.js +1 -0
  96. package/dist/esm/components/bik-chatbot/index.d.ts +137 -0
  97. package/dist/esm/components/bik-chatbot/services/aiService.d.ts +30 -0
  98. package/dist/esm/components/bik-chatbot/services/aiService.js +1 -0
  99. package/dist/esm/components/bik-chatbot/services/callToChatbot.d.ts +6 -0
  100. package/dist/esm/components/bik-chatbot/services/callToChatbot.js +1 -0
  101. package/dist/esm/components/bik-chatbot/services/db.d.ts +6 -0
  102. package/dist/esm/components/bik-chatbot/services/db.js +1 -0
  103. package/dist/esm/components/bik-chatbot/services/useAIChat.d.ts +7 -0
  104. package/dist/esm/components/bik-chatbot/services/useAIChat.js +1 -0
  105. package/dist/esm/components/bik-chatbot/types/ai.d.ts +158 -0
  106. package/dist/esm/components/bik-chatbot/types/ai.js +1 -0
  107. package/dist/esm/components/bik-chatbot/types/chat.d.ts +34 -0
  108. package/dist/esm/components/bik-chatbot/types/chat.js +1 -0
  109. package/dist/esm/components/bik-chatbot/types/components.d.ts +130 -0
  110. package/dist/esm/components/bik-chatbot/types/index.d.ts +6 -0
  111. package/dist/esm/components/bik-chatbot/utils/guardrails.d.ts +6 -0
  112. package/dist/esm/components/bik-chatbot/utils/guardrails.js +1 -0
  113. package/dist/esm/components/bik-chatbot/utils/markdown.d.ts +1 -0
  114. package/dist/esm/components/bik-chatbot/utils/markdown.js +1 -0
  115. package/dist/esm/components/bik-chatbot-examples/AnalyticsAdvisor.d.ts +8 -0
  116. package/dist/esm/components/bik-chatbot-examples/ContentIdeasDemo.d.ts +12 -0
  117. package/dist/esm/components/bik-chatbot-examples/SilentModeDemo.d.ts +17 -0
  118. package/dist/esm/components/bik-chatbot-examples/SimpleChatbotDemo.d.ts +17 -0
  119. package/dist/esm/components/bik-chatbot-examples/SimpleJsonChatDemo.d.ts +16 -0
  120. package/dist/esm/components/bik-chatbot-examples/services/MockRequestExecutor.d.ts +17 -0
  121. package/dist/esm/components/bik-chatbot-examples/types.ts/examples.d.ts +61 -0
  122. package/dist/esm/components/bik-layout/MockMenus.d.ts +1 -0
  123. package/dist/esm/components/custom-date-time/DateSelector/DateSelector.js +1 -1
  124. package/dist/esm/components/datePicker/DatePicker.d.ts +0 -2
  125. package/dist/esm/components/datePicker/DatePicker.js +1 -1
  126. package/dist/esm/components/datePicker/DatePicker.styled.d.ts +0 -12
  127. package/dist/esm/components/datePicker/DatePicker.styled.js +1 -1
  128. package/dist/esm/components/datePicker/index.d.ts +0 -1
  129. package/dist/esm/components/dropdown/ChipDropdown.d.ts +1 -0
  130. package/dist/esm/components/dropdown/ChipDropdown.js +6 -5
  131. package/dist/esm/components/dropdown/Dropdown.d.ts +1 -0
  132. package/dist/esm/components/floating-action-button/FloatingActionButton.styles.js +17 -17
  133. package/dist/esm/components/tabs/Tabs.js +1 -1
  134. package/dist/esm/components/tabs/Tabs.model.d.ts +2 -0
  135. package/dist/esm/index.d.ts +1 -0
  136. package/dist/esm/index.js +1 -1
  137. package/package.json +2 -1
  138. package/dist/cjs/components/datePicker/TimePicker.d.ts +0 -9
  139. package/dist/cjs/components/datePicker/TimePicker.js +0 -1
  140. package/dist/esm/components/datePicker/TimePicker.d.ts +0 -9
  141. package/dist/esm/components/datePicker/TimePicker.js +0 -1
@@ -0,0 +1,177 @@
1
+ import{j as e}from"../../../node_modules/react/jsx-runtime.js";import{useState as a,useEffect as t}from"react";import i,{keyframes as r}from"styled-components";const n=["Preparing to assist you...","Getting ready to brainstorm..."],s=[{symbol:"✨",text:"Get AI-powered ideas"},{symbol:"💬",text:"Ask me anything"}],o=r`
2
+ from {
3
+ opacity: 0;
4
+ transform: translateY(12px);
5
+ }
6
+ to {
7
+ opacity: 1;
8
+ transform: translateY(0);
9
+ }
10
+ `,d=r`
11
+ 0%, 100% {
12
+ transform: scale(1);
13
+ opacity: 0.3;
14
+ }
15
+ 50% {
16
+ transform: scale(1.4);
17
+ opacity: 1;
18
+ }
19
+ `,p=r`
20
+ from {
21
+ opacity: 0;
22
+ transform: translateX(-18px);
23
+ }
24
+ to {
25
+ opacity: 1;
26
+ transform: translateX(0);
27
+ }
28
+ `,l=i.div`
29
+ flex: 1;
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ padding: 24px;
34
+ min-height: 240px;
35
+ `,c=i.div`
36
+ text-align: center;
37
+ display: flex;
38
+ flex-direction: column;
39
+ align-items: center;
40
+ gap: 24px;
41
+ max-width: 280px;
42
+ width: 100%;
43
+ `,x=i.div`
44
+ width: 76px;
45
+ height: 76px;
46
+ border-radius: 50%;
47
+ background: linear-gradient(
48
+ 135deg,
49
+ rgba(255, 22, 106, 0.28) 0%,
50
+ rgba(123, 104, 238, 0.32) 100%
51
+ );
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ box-shadow: 0 22px 44px rgba(123, 104, 238, 0.22);
56
+ padding: 12px;
57
+ position: relative;
58
+ overflow: hidden;
59
+
60
+ &::after {
61
+ content: '';
62
+ position: absolute;
63
+ inset: 6px;
64
+ border-radius: 50%;
65
+ background: radial-gradient(
66
+ circle at 30% 30%,
67
+ rgba(255, 255, 255, 0.6),
68
+ transparent 70%
69
+ );
70
+ mix-blend-mode: screen;
71
+ }
72
+ `,f=r`
73
+ 0% {
74
+ transform: scale(1);
75
+ filter: drop-shadow(0 6px 18px rgba(236, 72, 153, 0.22));
76
+ }
77
+ 35% {
78
+ transform: scale(1.04);
79
+ filter: drop-shadow(0 10px 24px rgba(236, 72, 153, 0.32));
80
+ }
81
+ 70% {
82
+ transform: scale(0.98);
83
+ filter: drop-shadow(0 4px 12px rgba(148, 163, 184, 0.18));
84
+ }
85
+ 100% {
86
+ transform: scale(1);
87
+ filter: drop-shadow(0 6px 18px rgba(236, 72, 153, 0.22));
88
+ }
89
+ `,g=r`
90
+ 0% {
91
+ transform: translateX(-120%);
92
+ opacity: 0;
93
+ }
94
+ 30% {
95
+ opacity: 0.4;
96
+ }
97
+ 60% {
98
+ transform: translateX(120%);
99
+ opacity: 0;
100
+ }
101
+ 100% {
102
+ transform: translateX(120%);
103
+ opacity: 0;
104
+ }
105
+ `,m=i.div`
106
+ font-size: 14px;
107
+ color: #52586c;
108
+ line-height: 1.5;
109
+ min-height: 21px;
110
+ animation: ${o} 0.4s ease forwards;
111
+ `,b=i.div`
112
+ display: flex;
113
+ justify-content: center;
114
+ gap: 6px;
115
+ `,h=i.span`
116
+ width: 8px;
117
+ height: 8px;
118
+ border-radius: 50%;
119
+ background: linear-gradient(135deg, #f29cc9 0%, #b8a5f6 100%);
120
+ animation: ${d} 1.4s ease-in-out infinite;
121
+ animation-delay: ${e=>e.delay}s;
122
+ `,y=i.div`
123
+ display: flex;
124
+ flex-direction: column;
125
+ gap: 10px;
126
+ margin-top: 8px;
127
+ width: 100%;
128
+ `,u=i.div`
129
+ display: flex;
130
+ align-items: center;
131
+ gap: 12px;
132
+ background: linear-gradient(
133
+ 135deg,
134
+ rgba(255, 255, 255, 0.92) 0%,
135
+ rgba(248, 246, 255, 0.96) 100%
136
+ );
137
+ border-radius: 12px;
138
+ padding: 12px;
139
+ box-shadow: inset 0 0 0 1px rgba(199, 210, 254, 0.3);
140
+ animation: ${p} 0.5s ease forwards;
141
+ animation-delay: ${e=>e.delay}s;
142
+ opacity: 0;
143
+ `,w=i.div`
144
+ width: 36px;
145
+ height: 36px;
146
+ border-radius: 10px;
147
+ background: linear-gradient(140deg, #ffffff 0%, #f7f3ff 100%);
148
+ display: flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ box-shadow: 0 10px 20px rgba(197, 181, 255, 0.24);
152
+ font-size: 18px;
153
+ `,j=i.span`
154
+ font-size: 12px;
155
+ color: #5f6781;
156
+ text-align: left;
157
+ `,v=i.img`
158
+ width: 100%;
159
+ height: 100%;
160
+ object-fit: contain;
161
+ filter: drop-shadow(0 6px 18px rgba(236, 72, 153, 0.22));
162
+ animation: ${f} 2.6s ease-in-out infinite;
163
+ position: relative;
164
+ z-index: 1;
165
+ `,k=i.div`
166
+ position: absolute;
167
+ inset: 12px;
168
+ border-radius: 999px;
169
+ background: linear-gradient(
170
+ 140deg,
171
+ rgba(255, 255, 255, 0.65),
172
+ rgba(255, 255, 255, 0)
173
+ );
174
+ animation: ${g} 2.6s ease-in-out infinite;
175
+ pointer-events: none;
176
+ z-index: 0;
177
+ `,$=i=>{let{className:r,style:o}=i;const[d,p]=a(0);return t((()=>{const e=window.setInterval((()=>{p((e=>(e+1)%n.length))}),2e3);return()=>window.clearInterval(e)}),[]),e.jsx(l,Object.assign({className:r,style:o},{children:e.jsxs(c,{children:[e.jsxs(x,{children:[e.jsx(k,{}),e.jsx(v,{src:"https://firebasestorage.googleapis.com/v0/b/bikayi-chat.appspot.com/o/images-uid%2Fcdf9c32d-6cf6-427f-b5c1-53cd424bfd5d?alt=media&token=740083c2-08ad-4295-a169-77c7d8ddaea9",alt:"AI thinking"})]}),e.jsx(m,{children:n[d]},d),e.jsx(b,{children:[0,1,2].map((a=>e.jsx(h,{delay:.22*a},a)))}),e.jsx(y,{children:s.map(((a,t)=>e.jsxs(u,Object.assign({delay:.4+.2*t},{children:[e.jsx(w,{children:a.symbol}),e.jsx(j,{children:a.text})]}),a.text)))})]})}))};export{$ as default};
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { ChatWindowProps } from '../types';
3
+ export declare const CustomGradientText: import("styled-components").StyledComponent<"span", any, {
4
+ colors?: string | undefined;
5
+ angle?: number | undefined;
6
+ }, never>;
7
+ export type { ChatState } from '../types';
8
+ interface ChatWindowWithHeightProps extends ChatWindowProps {
9
+ chatWindowHeight?: string | number;
10
+ }
11
+ declare const ChatWindow: React.FC<ChatWindowWithHeightProps>;
12
+ export default ChatWindow;
@@ -0,0 +1,252 @@
1
+ import{j as e}from"../../../node_modules/react/jsx-runtime.js";import t from"../../../assets/icons/Ai_event_generating.svg.js";import{useState as i,useRef as r,useEffect as n}from"react";import a from"styled-components";import{BodySecondary as o,BodyCaption as s}from"../../TypographyStyle.js";import{renderMarkdownLite as d}from"../utils/markdown.js";import l from"./ThinkingIndicator.js";const c=a.div`
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ min-width: 0;
6
+ min-height: 0;
7
+ height: 100%;
8
+ max-height: 100%;
9
+ background: white;
10
+ border-left: 1px solid #e5e7eb;
11
+ position: relative;
12
+
13
+ /* State-based styling */
14
+ ${e=>{switch(e.chatState){case"conversation-starter":return"\n background: linear-gradient(180deg, #FFF6F9 0%, #FFFFFF 100%);\n ";case"thinking":return"\n background: linear-gradient(180deg, #F8F9FA 0%, #FFFFFF 100%);\n ";default:return"\n background: white;\n "}}}
15
+ `,x=a.div`
16
+ padding: 16px;
17
+ border-bottom: 1px solid #e5e7eb;
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 8px;
21
+ background: white;
22
+ flex-shrink: 0;
23
+
24
+ .header-text {
25
+ font-size: 14px;
26
+ font-weight: 500;
27
+ color: #374151;
28
+ }
29
+ `,h=a.div`
30
+ flex: 1;
31
+ display: flex;
32
+ flex-direction: column;
33
+ overflow: hidden;
34
+ min-height: 0;
35
+ `,g=a.div`
36
+ flex: 1;
37
+ overflow-y: auto;
38
+ padding: 16px;
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 16px;
42
+ background: #fafafa;
43
+ scroll-behavior: smooth;
44
+ min-height: 0;
45
+
46
+ /* Custom scrollbar */
47
+ &::-webkit-scrollbar {
48
+ width: 6px;
49
+ }
50
+
51
+ &::-webkit-scrollbar-track {
52
+ background: #f1f1f1;
53
+ border-radius: 3px;
54
+ }
55
+
56
+ &::-webkit-scrollbar-thumb {
57
+ background: #c1c1c1;
58
+ border-radius: 3px;
59
+ }
60
+
61
+ &::-webkit-scrollbar-thumb:hover {
62
+ background: #a8a8a8;
63
+ }
64
+ `,p=a.div`
65
+ background: white;
66
+ border-radius: 12px;
67
+ padding: 16px;
68
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
69
+ border: 1px solid #e5e7eb;
70
+ `,b=a.div`
71
+ width: 100%;
72
+ height: 180px;
73
+ background: #f3f4f6;
74
+ border-radius: 8px;
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ position: relative;
79
+ margin-bottom: 12px;
80
+ `,f=a.div`
81
+ width: 48px;
82
+ height: 48px;
83
+ background: rgba(0, 0, 0, 0.7);
84
+ border-radius: 50%;
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ cursor: pointer;
89
+ transition: all 0.2s ease;
90
+
91
+ &:hover {
92
+ background: rgba(0, 0, 0, 0.8);
93
+ transform: scale(1.05);
94
+ }
95
+
96
+ svg {
97
+ width: 16px;
98
+ height: 16px;
99
+ fill: white;
100
+ margin-left: 2px;
101
+ }
102
+ `,u=a.div`
103
+ font-size: 14px;
104
+ color: #374151;
105
+ line-height: 1.5;
106
+ `,m=a.div`
107
+ padding: 12px 16px;
108
+ border-radius: 16px;
109
+ font-size: 14px;
110
+ max-width: 80%;
111
+ white-space: pre-line;
112
+ word-wrap: break-word;
113
+
114
+ ${e=>"user"===e.role?"\n background: linear-gradient(92.69deg, rgba(255, 230, 238, 0.5) 0.37%, rgba(255, 240, 231, 0.5) 100%);\n margin-left: auto;\n border-bottom-right-radius: 4px;\n \n & > div {\n background: linear-gradient(92.69deg, #FF166A 0.37%, #FB5F08 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n display: inline-block;\n }\n ":"system"===e.role?"\n background: #f3f4f6;\n color: #6b7280;\n font-size: 12px;\n font-style: italic;\n text-align: center;\n margin: 0 auto;\n max-width: 90%;\n ":"\n background: white;\n color: #111827;\n border: 1px solid #e5e7eb;\n margin-right: auto;\n border-bottom-left-radius: 4px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n "}
115
+ `,k=a.div`
116
+ padding: 16px;
117
+ flex-shrink: 0;
118
+ `,v=a.div`
119
+ display: flex;
120
+ flex-direction: column;
121
+ gap: 8px;
122
+ align-items: flex-end;
123
+ `,w=a.button`
124
+ border: 1px dotted #febad2;
125
+ background: linear-gradient(
126
+ 92.69deg,
127
+ rgba(255, 230, 238, 0.5) 0.37%,
128
+ rgba(255, 240, 231, 0.5) 100%
129
+ );
130
+ padding: 8px 16px;
131
+ border-radius: 8px;
132
+ font-size: 13px;
133
+ cursor: pointer;
134
+ transition: all 0.2s ease;
135
+ text-align: left;
136
+ max-width: 280px;
137
+ align-self: flex-end;
138
+
139
+ &:hover {
140
+ background: linear-gradient(
141
+ 92.69deg,
142
+ rgba(255, 230, 238, 0.7) 0.37%,
143
+ rgba(255, 240, 231, 0.7) 100%
144
+ );
145
+ border-color: #f472b6;
146
+ }
147
+
148
+ &:active {
149
+ transform: scale(0.98);
150
+ }
151
+ `,j=a.div`
152
+ padding: 16px;
153
+ background: white;
154
+ `,y=a.div`
155
+ display: flex;
156
+ flex-direction: column;
157
+ gap: 8px;
158
+ `,F=a.button`
159
+ background: #fef2f2;
160
+ color: #dc2626;
161
+ padding: 12px 16px;
162
+ border-radius: 8px;
163
+ font-size: 13px;
164
+ border: 1px solid #fecaca;
165
+ cursor: pointer;
166
+ transition: all 0.2s ease;
167
+ text-align: left;
168
+
169
+ &:hover {
170
+ background: #fee2e2;
171
+ border-color: #fca5a5;
172
+ }
173
+
174
+ &:active {
175
+ transform: scale(0.98);
176
+ }
177
+ `,T=a.div`
178
+ padding: 16px;
179
+ flex-shrink: 0;
180
+ `,O=a.div`
181
+ position: relative;
182
+ display: flex;
183
+ width: 100%;
184
+ `,S=a.textarea`
185
+ flex: 1;
186
+ border: 1px solid ${e=>e.hasText?"#3b82f6":"#d1d5db"};
187
+ border-radius: 12px;
188
+ padding: 12px;
189
+ padding-right: 48px;
190
+ font-size: 14px;
191
+ outline: none;
192
+ color: #374151;
193
+ background: white;
194
+ box-shadow: 0px 2px 8px 0px #0000001f;
195
+ transition: all 0.2s ease;
196
+ resize: none;
197
+ min-height: 44px;
198
+ max-height: 120px;
199
+ font-family: inherit;
200
+ width: 100%;
201
+
202
+ &:focus {
203
+ border-color: #3b82f6;
204
+ background: white;
205
+ box-shadow: 0px 2px 8px 0px #0000001f, 0 0 0 3px rgba(59, 130, 246, 0.1);
206
+ }
207
+
208
+ &::placeholder {
209
+ color: #9ca3af;
210
+ }
211
+ `,z=a.button`
212
+ position: absolute;
213
+ bottom: 10px;
214
+ right: 10px;
215
+ width: 36px;
216
+ height: 36px;
217
+ border-radius: 50%;
218
+ background: ${e=>e.hasText?"linear-gradient(135deg, #FF166A 0%, #FB5F08 100%)":"#e5e7eb"};
219
+ border: none;
220
+ display: flex;
221
+ align-items: center;
222
+ justify-content: center;
223
+ cursor: ${e=>e.disabled?"not-allowed":"pointer"};
224
+ transition: all 0.2s ease;
225
+ box-shadow: 0 2px 8px 0px #fa709a1c;
226
+ z-index: 2;
227
+
228
+ &:hover:not(:disabled) {
229
+ background: ${e=>e.hasText&&!e.disabled?"linear-gradient(135deg, #F857A6 0%, #FF5858 100%)":"#e5e7eb"};
230
+ transform: scale(1.05);
231
+ }
232
+
233
+ &:active:not(:disabled) {
234
+ transform: scale(0.95);
235
+ }
236
+
237
+ svg {
238
+ width: 16px;
239
+ height: 16px;
240
+ fill: white;
241
+ font-weight: bold;
242
+ }
243
+ `,C=a.span`
244
+ background: linear-gradient(
245
+ ${e=>e.angle||92.69}deg,
246
+ ${e=>e.colors||"#ff166a 0.37%, #fb5f08 100%"}
247
+ );
248
+ -webkit-background-clip: text;
249
+ -webkit-text-fill-color: transparent;
250
+ background-clip: text;
251
+ display: inline-block;
252
+ `,$=a=>{let{messages:$,onSend:A,header:B="Create with AI",placeholder:I="Discover the right event & launch campaigns for better conversions...",suggestions:M=["Top festivals for marketing","Top events this week?","Top August festivals near you"],iceBreakers:_,videoStarter:D,disabled:H=!1,isThinking:L=!1,onIceBreakerClick:W,chatState:K,chatWindowHeight:E,inputDisabled:N=!1}=a;const[P,V]=i(""),[q,G]=i(!1),[J,Q]=i(!1),R=r(null),U=r(null),X=q||L,Y=H||N,Z=K||(q||L?"thinking":J&&P.trim().length>0?"typing":0===$.length?"conversation-starter":$.length>0?"conversation":"default"),ee=()=>{!P.trim()||Y||X||(A(P),V(""),G(!0),setTimeout((()=>G(!1)),1500))},te=P.trim().length>0,ie=Y||X||!te;n((()=>{var e;null===(e=R.current)||void 0===e||e.scrollIntoView({behavior:"smooth"})}),[$,q,L]);const re=E||"100%";return e.jsxs(c,Object.assign({chatState:Z,style:{height:re}},{children:[e.jsxs(x,{children:[e.jsx(t,{height:24,width:24}),e.jsx("div",Object.assign({className:"header-text"},{children:B}))]}),e.jsxs(h,{children:[e.jsxs(g,{children:["conversation-starter"===Z&&D&&e.jsxs(p,{children:[e.jsx(b,{children:e.jsx(f,Object.assign({onClick:D.onPlay},{children:e.jsx("svg",Object.assign({viewBox:"0 0 24 24",fill:"currentColor"},{children:e.jsx("path",{d:"M8 5v14l11-7z"})}))}))}),e.jsxs(u,{children:[e.jsx(o,Object.assign({style:{fontWeight:500,marginBottom:"4px"}},{children:D.title})),e.jsx(s,{children:D.description})]})]}),$.map((t=>e.jsx(m,Object.assign({role:t.role},{children:"assistant"===t.role?e.jsx("div",{dangerouslySetInnerHTML:{__html:d(t.content)}}):e.jsx("div",Object.assign({style:{whiteSpace:"pre-wrap"}},{children:t.content}))}),t.id))),(q||L)&&e.jsx(l,{}),e.jsx("div",{ref:R})]}),_&&"conversation-starter"===Z&&e.jsx(k,{children:e.jsx(v,{children:_.map((t=>e.jsx(w,Object.assign({onClick:()=>{H||(null==W||W(t),A(t.text))}},{children:e.jsx(C,{children:t.text})}),t.id)))})}),!_&&M.length>0&&"default"===Z&&e.jsx(j,{children:e.jsx(y,{children:M.map((t=>e.jsx(F,Object.assign({onClick:()=>!H&&A(t)},{children:t}),t)))})}),e.jsx(T,{children:e.jsxs(O,{children:[e.jsx(S,{ref:U,value:P,onChange:e=>{if(Y)return;const t=e.target.value;V(t),Q(t.trim().length>0);const i=U.current;i&&(i.style.height="auto",i.style.height=`${Math.min(i.scrollHeight,117)}px`)},placeholder:I,onKeyDown:e=>{Y||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!X&&P.trim()&&ee())},disabled:Y,hasText:te,chatState:Z}),e.jsx(z,Object.assign({onClick:ee,disabled:ie,hasText:te,"aria-label":"Send"},{children:e.jsxs("svg",Object.assign({viewBox:"0 0 24 24",width:"20",height:"20",stroke:"white",strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},{children:[e.jsx("path",{d:"M6 12h12"}),e.jsx("path",{d:"M12 6l6 6-6 6"})]}))}))]})})]})]}))};export{C as CustomGradientText,$ as default};
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ThinkingIndicator: React.FC;
3
+ export default ThinkingIndicator;
@@ -0,0 +1,188 @@
1
+ import{j as e}from"../../../node_modules/react/jsx-runtime.js";import{useState as t,useEffect as a}from"react";import i from"styled-components";const r=i.div`
2
+ background: #ffffff;
3
+ border: 1px solid ${e=>`${e.accent}33`};
4
+ padding: 16px 18px 20px;
5
+ border-radius: 16px;
6
+ border-bottom-left-radius: 6px;
7
+ width: clamp(260px, 70vw, 340px);
8
+ min-height: 140px;
9
+ margin-right: auto;
10
+ font-size: 14px;
11
+ color: #1f2937;
12
+ box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
13
+ display: flex;
14
+ align-items: flex-start;
15
+ gap: 14px;
16
+ position: relative;
17
+ overflow: hidden;
18
+ flex-shrink: 0;
19
+
20
+ &::after {
21
+ content: '';
22
+ position: absolute;
23
+ left: 18px;
24
+ right: 18px;
25
+ bottom: 10px;
26
+ height: 4px;
27
+ border-radius: 999px;
28
+ background: ${e=>e.gradient};
29
+ opacity: 0.35;
30
+ animation: glowPulse 2.4s ease-in-out infinite;
31
+ pointer-events: none;
32
+ }
33
+
34
+ .icon-wrapper {
35
+ position: relative;
36
+ width: 44px;
37
+ height: 44px;
38
+ border-radius: 12px;
39
+ background: ${e=>e.gradient};
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ box-shadow: 0 10px 25px ${e=>`${e.accent}26`};
44
+ animation: iconPulse 2.4s ease-in-out infinite;
45
+ flex-shrink: 0;
46
+ overflow: hidden;
47
+ }
48
+
49
+ .icon-wrapper::after {
50
+ content: '';
51
+ position: absolute;
52
+ inset: 0;
53
+ border-radius: 12px;
54
+ background: radial-gradient(
55
+ circle at top left,
56
+ rgba(255, 255, 255, 0.7),
57
+ transparent 65%
58
+ );
59
+ mix-blend-mode: screen;
60
+ }
61
+
62
+ .icon-letter {
63
+ font-size: 18px;
64
+ font-weight: 700;
65
+ color: #ffffff;
66
+ letter-spacing: 0.02em;
67
+ }
68
+
69
+ .bubble-content {
70
+ display: flex;
71
+ flex-direction: column;
72
+ gap: 12px;
73
+ width: 100%;
74
+ }
75
+
76
+ .status-text {
77
+ font-weight: 500;
78
+ color: #1f2937;
79
+ line-height: 1.45;
80
+ animation: textFade 0.35s ease forwards;
81
+ min-height: 20px;
82
+ }
83
+
84
+ .dots {
85
+ display: flex;
86
+ gap: 6px;
87
+ }
88
+
89
+ .dot {
90
+ width: 6px;
91
+ height: 6px;
92
+ border-radius: 50%;
93
+ background: ${e=>e.accent};
94
+ box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.25);
95
+ animation: dotBounce 1.3s ease-in-out infinite;
96
+ }
97
+
98
+ .shimmer-group {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: 6px;
102
+ }
103
+
104
+ .shimmer-line {
105
+ height: 6px;
106
+ border-radius: 999px;
107
+ background: rgba(148, 163, 184, 0.18);
108
+ position: relative;
109
+ overflow: hidden;
110
+ animation: shimmerAppear 0.4s ease forwards;
111
+ }
112
+
113
+ .shimmer-highlight {
114
+ position: absolute;
115
+ inset: 0;
116
+ background: linear-gradient(
117
+ 90deg,
118
+ rgba(255, 255, 255, 0) 0%,
119
+ rgba(255, 255, 255, 0.75) 50%,
120
+ rgba(255, 255, 255, 0) 100%
121
+ );
122
+ transform: translateX(-100%);
123
+ animation: shimmerMove 1.8s linear infinite;
124
+ }
125
+
126
+ @keyframes iconPulse {
127
+ 0%,
128
+ 100% {
129
+ transform: scale(0.95) rotate(-3deg);
130
+ }
131
+ 50% {
132
+ transform: scale(1.05) rotate(3deg);
133
+ }
134
+ }
135
+
136
+ @keyframes dotBounce {
137
+ 0%,
138
+ 100% {
139
+ transform: translateY(0) scale(1);
140
+ opacity: 0.35;
141
+ }
142
+ 50% {
143
+ transform: translateY(-6px) scale(1.2);
144
+ opacity: 1;
145
+ }
146
+ }
147
+
148
+ @keyframes shimmerMove {
149
+ 0% {
150
+ transform: translateX(-120%);
151
+ }
152
+ 100% {
153
+ transform: translateX(140%);
154
+ }
155
+ }
156
+
157
+ @keyframes shimmerAppear {
158
+ from {
159
+ opacity: 0;
160
+ transform: translateY(2px);
161
+ }
162
+ to {
163
+ opacity: 1;
164
+ transform: translateY(0);
165
+ }
166
+ }
167
+
168
+ @keyframes glowPulse {
169
+ 0%,
170
+ 100% {
171
+ opacity: 0.2;
172
+ }
173
+ 50% {
174
+ opacity: 0.55;
175
+ }
176
+ }
177
+
178
+ @keyframes textFade {
179
+ from {
180
+ opacity: 0;
181
+ transform: translateY(4px);
182
+ }
183
+ to {
184
+ opacity: 1;
185
+ transform: translateY(0);
186
+ }
187
+ }
188
+ `,n=[{label:"A",text:"Analyzing your question...",gradient:"linear-gradient(135deg, #a855f7 0%, #7c3aed 100%)",accent:"#7c3aed"},{label:"C",text:"Crafting the perfect response...",gradient:"linear-gradient(135deg, #f97316 0%, #fb5f08 100%)",accent:"#fb5f08"},{label:"G",text:"Gathering insights...",gradient:"linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)",accent:"#2563eb"}],s=()=>{const[i,s]=t(0);a((()=>{const e=window.setInterval((()=>{s((e=>(e+1)%n.length))}),1800);return()=>window.clearInterval(e)}),[]);const o=n[i];return e.jsxs(r,Object.assign({gradient:o.gradient,accent:o.accent,role:"status","aria-live":"polite"},{children:[e.jsx("div",Object.assign({className:"icon-wrapper"},{children:e.jsx("span",Object.assign({className:"icon-letter"},{children:o.label}))})),e.jsxs("div",Object.assign({className:"bubble-content"},{children:[e.jsx("div",Object.assign({className:"status-text"},{children:o.text})),e.jsx("div",Object.assign({className:"dots"},{children:[0,1,2,3,4].map((t=>e.jsx("span",{className:"dot",style:{animationDelay:.15*t+"s"}},t)))})),e.jsx("div",Object.assign({className:"shimmer-group"},{children:[60,80,45].map(((t,a)=>e.jsx("div",Object.assign({className:"shimmer-line",style:{width:`${t}%`,animationDelay:.25+.12*a+"s"}},{children:e.jsx("span",{className:"shimmer-highlight"})}),t)))}))]}))]}))};export{s as default};
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { AIContextState, AIProviderProps } from '../types';
3
+ export declare const AIProvider: React.FC<AIProviderProps>;
4
+ export declare const useAIContext: () => AIContextState;
@@ -0,0 +1 @@
1
+ import{__awaiter as e}from"../../../_virtual/_tslib.js";import{j as o}from"../../../node_modules/react/jsx-runtime.js";import{useState as s,useRef as t,useEffect as n,useCallback as r,useContext as i,createContext as a}from"react";import{useAIChat as l}from"../services/useAIChat.js";import{DEFAULT_MODEL as d,ALLOWED_MODELS as c}from"../types/ai.js";import{createExecutorApiAdapter as u}from"../services/callToChatbot.js";const m=a(null),p=i=>{let{children:a,systemPrompt:p,systemId:f,functions:v,tools:g,functionHandler:y,onMessageReceived:I,displayInUI:h,maxToolCalls:x,maxTokens:j,requestExecutor:A,baseUrl:C,endpointPath:P,responseFormat:b,conversationId:w="default-session",customModel:q,onSystemReady:E}=i;const[R,M]=s(null),[T,U]=s(!0),[F,k]=s(null),L=t(null);n((()=>p?A&&C?void k(null):(k("Chatbot authentication not configured: RequestExecutor and baseUrl are required"),void U(!1)):(k("systemPrompt is required for generic mode"),void U(!1))),[p,A,C]);const $=r((()=>e(void 0,void 0,void 0,(function*(){try{U(!0),k(null);const e=q||d;if(!c.includes(e))throw new Error(`Unsupported model: ${q||"default"}. Allowed models are: ${c.join(", ")}`);M({id:f||"generic",name:f?`${f} `:"Generic AI Assistant",model:e,systemPrompt:p,functions:v,tools:g})}catch(e){const o=(null==e?void 0:e.message)||"Failed to create AI system";k(o)}finally{U(!1)}}))),[q,p,f,v]);n((()=>{p&&$()}),[$]),n((()=>{R&&E&&R.id!==L.current&&(L.current=R.id,E(R)),R||(L.current=null)}),[R]);const{messages:_,conversation:H,sendMessage:z,isApiCallInProgress:G}=l({system:R||{id:"loading",name:"Loading...",model:d,systemPrompt:"Loading...",functions:[]},conversationId:w,skipInitialization:!R,customFunctions:v,functionHandler:y,responseFormat:b,onMessageReceived:I,displayInUI:h,maxToolCalls:x,maxTokens:j,apiAdapter:A&&C?u(A,C,P||void 0):()=>{throw new Error("Chatbot authentication not configured: RequestExecutor is required")}}),O={isReady:!!R&&!T,isLoading:T,isApiCallInProgress:G,system:R,messages:_,conversation:H,sendMessage:z,error:F};return o.jsx(m.Provider,Object.assign({value:O},{children:a}))},f=()=>{const e=i(m);if(!e)throw new Error("useAIContext must be used within an AIProvider");return e};export{p as AIProvider,f as useAIContext};