@bikdotai/bik-widgets 1.0.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.
Files changed (206) hide show
  1. package/.eslintrc +22 -0
  2. package/.eslintrc.js +19 -0
  3. package/.github/workflows/main.yml +293 -0
  4. package/.prettierignore +13 -0
  5. package/.prettierrc +10 -0
  6. package/README.md +128 -0
  7. package/cypress/apiHelper/endpoints.ts +21 -0
  8. package/cypress/apiHelper/executor.ts +42 -0
  9. package/cypress/e2e/bottomDrawer.cy.ts +49 -0
  10. package/cypress/e2e/directReward.cy.ts +67 -0
  11. package/cypress/e2e/scratchTheCard.cy.ts +68 -0
  12. package/cypress/e2e/stw.cy.ts +82 -0
  13. package/cypress/e2e/waRedirection.cy.ts +46 -0
  14. package/cypress/fixtures/payloads.ts +330 -0
  15. package/cypress/support/commands.ts +37 -0
  16. package/cypress/support/e2e.ts +20 -0
  17. package/cypress.staging.config.ts +23 -0
  18. package/jsconfig.json +6 -0
  19. package/localtest.sh +10 -0
  20. package/log-server.js +86 -0
  21. package/package.json +79 -0
  22. package/postcss.config.js +8 -0
  23. package/src/Globals.d.ts +2 -0
  24. package/src/assets/lottie/santa.json +11722 -0
  25. package/src/assets/svg/CalendarClockIcon.tsx +30 -0
  26. package/src/assets/svg/CalendarIcon.tsx +24 -0
  27. package/src/assets/svg/CheckIcon.tsx +17 -0
  28. package/src/assets/svg/ChevronIcon.tsx +21 -0
  29. package/src/assets/svg/Close.tsx +39 -0
  30. package/src/assets/svg/Confetti.tsx +140 -0
  31. package/src/assets/svg/Copy.tsx +26 -0
  32. package/src/assets/svg/DropdownCheckIcon.tsx +35 -0
  33. package/src/assets/svg/ErrorIcon.tsx +27 -0
  34. package/src/assets/svg/RadioIcon.tsx +25 -0
  35. package/src/assets/svg/UncheckedCheckboxIcon.tsx +28 -0
  36. package/src/assets/svg/UncheckedRadioIcon.tsx +26 -0
  37. package/src/assets/svg/info.tsx +30 -0
  38. package/src/assets/svg/qrcode.svg +14 -0
  39. package/src/bootstrap.tsx +8 -0
  40. package/src/components/CtaCard/index.tsx +37 -0
  41. package/src/components/CtaCard/preview.module.css +32 -0
  42. package/src/components/CtaCard/style.module.css +32 -0
  43. package/src/components/EmailInput/emailInputBox.tsx +95 -0
  44. package/src/components/Fab/index.tsx +224 -0
  45. package/src/components/Fab/preview.module.css +28 -0
  46. package/src/components/Fab/style.module.css +37 -0
  47. package/src/components/Icons/Call.tsx +26 -0
  48. package/src/components/Icons/Cross.tsx +24 -0
  49. package/src/components/Icons/Gmail.tsx +61 -0
  50. package/src/components/Icons/Instagram.tsx +60 -0
  51. package/src/components/Icons/LiveChat.tsx +43 -0
  52. package/src/components/Icons/Messenger.tsx +57 -0
  53. package/src/components/Icons/Send.tsx +22 -0
  54. package/src/components/Icons/Whatsapp.tsx +24 -0
  55. package/src/components/Shimmer/index.tsx +12 -0
  56. package/src/components/Shimmer/style.module.css +37 -0
  57. package/src/components/SmsInput/smsInputBox.tsx +135 -0
  58. package/src/components/UserDetailsV2/userDetailsV2.desktop.module.css +52 -0
  59. package/src/components/UserDetailsV2/userDetailsV2.mobile.module.css +52 -0
  60. package/src/components/UserDetailsV2/userDetailsV2.module.css +81 -0
  61. package/src/components/UserDetailsV2/userDetailsV2.tsx +527 -0
  62. package/src/components/WhatsappInput/Spinner.tsx +26 -0
  63. package/src/components/WhatsappInput/whatsappInput.module.css +106 -0
  64. package/src/components/WhatsappInput/whatsappInputBox.tsx +155 -0
  65. package/src/components/WhatsappInput/whatsappInputPreviewDesktop.module.css +71 -0
  66. package/src/components/WhatsappInput/whatsappInputPreviewMobile.module.css +65 -0
  67. package/src/components/checkbox/checkbox.module.css +19 -0
  68. package/src/components/checkbox/checkbox.tsx +88 -0
  69. package/src/components/countryCodePicker/countriesDropdown.module.css +77 -0
  70. package/src/components/countryCodePicker/countriesDropdown.tsx +81 -0
  71. package/src/components/couponDetails/coupon.module.css +208 -0
  72. package/src/components/couponDetails/coupon.tsx +210 -0
  73. package/src/components/couponDetails/couponPreviewDesktop.module.css +158 -0
  74. package/src/components/couponDetails/couponPreviewMobile.module.css +164 -0
  75. package/src/components/index.ts +3 -0
  76. package/src/components/inputComponents/Checkbox.module.css +197 -0
  77. package/src/components/inputComponents/Checkbox.tsx +85 -0
  78. package/src/components/inputComponents/DatePicker.module.css +565 -0
  79. package/src/components/inputComponents/DatePicker.tsx +278 -0
  80. package/src/components/inputComponents/Dropdown.module.css +796 -0
  81. package/src/components/inputComponents/Dropdown.tsx +630 -0
  82. package/src/components/inputComponents/InputBox.module.css +401 -0
  83. package/src/components/inputComponents/InputBox.tsx +209 -0
  84. package/src/components/selectedCountry/selectedCountry.module.css +76 -0
  85. package/src/components/selectedCountry/selectedCountry.tsx +76 -0
  86. package/src/components/selectedCountry/selectedCountryPreviewDesktop.module.css +56 -0
  87. package/src/components/selectedCountry/selectedCountryPreviewMobile.module.css +57 -0
  88. package/src/components/userDetailsForm/RenderCustomFields.tsx +333 -0
  89. package/src/components/userDetailsForm/userDetailsForm.tsx +675 -0
  90. package/src/hooks/index.ts +4 -0
  91. package/src/hooks/useExitIntent.ts +452 -0
  92. package/src/hooks/useIsMobile.tsx +21 -0
  93. package/src/hooks/useMessageEvent.ts +8 -0
  94. package/src/hooks/useTriggeredIntentDetails.ts +43 -0
  95. package/src/hooks/useUrlListerner.ts +30 -0
  96. package/src/hooks/useWebSocketLogger.ts +59 -0
  97. package/src/hooks/useWindowEvent.ts +8 -0
  98. package/src/icons/copyIcon.tsx +26 -0
  99. package/src/icons/crossIconDesktop.tsx +20 -0
  100. package/src/icons/crossIconMobile.tsx +20 -0
  101. package/src/index.html +30 -0
  102. package/src/index.ts +32 -0
  103. package/src/index.tsx +1 -0
  104. package/src/repo/widgetRepo.ts +21 -0
  105. package/src/types/customFields.ts +73 -0
  106. package/src/utilities/cookie.ts +70 -0
  107. package/src/utilities/customFieldTypeMapping.ts +67 -0
  108. package/src/utilities/customFieldValidation.ts +201 -0
  109. package/src/utilities/encryption.ts +21 -0
  110. package/src/utilities/exitIntentUtils.ts +31 -0
  111. package/src/utilities/global.css +11 -0
  112. package/src/utilities/languageUtilities.ts +235 -0
  113. package/src/utilities/localRunner.js +26 -0
  114. package/src/utilities/localRunner.ts +27 -0
  115. package/src/utilities/localStorage.ts +40 -0
  116. package/src/utilities/script.tsx +15 -0
  117. package/src/utilities/stringUtils.ts +5 -0
  118. package/src/utilities/styleUtils.ts +134 -0
  119. package/src/utilities/variables.ts +11 -0
  120. package/src/utilities/widgetUtils.js +342 -0
  121. package/src/utilities/widgetUtils.ts +313 -0
  122. package/src/widgets/BottomDrawer/config.ts +41 -0
  123. package/src/widgets/BottomDrawer/index.tsx +116 -0
  124. package/src/widgets/BottomDrawer/modal.tsx +286 -0
  125. package/src/widgets/BottomDrawer/preview.module.css +122 -0
  126. package/src/widgets/BottomDrawer/previewMobile.module.css +124 -0
  127. package/src/widgets/BottomDrawer/style.module.css +279 -0
  128. package/src/widgets/CaptivateBanner/captivateBanner.tsx +200 -0
  129. package/src/widgets/CaptivateBanner/config.ts +72 -0
  130. package/src/widgets/CaptivateBanner/index.tsx +204 -0
  131. package/src/widgets/CaptivateBanner/previewDesktop.module.css +51 -0
  132. package/src/widgets/CaptivateBanner/previewMobile.module.css +51 -0
  133. package/src/widgets/CaptivateBanner/style.module.css +77 -0
  134. package/src/widgets/CaptivateBanner/utils.ts +104 -0
  135. package/src/widgets/CentrallyAlignedPopup/config.ts +42 -0
  136. package/src/widgets/CentrallyAlignedPopup/index.tsx +109 -0
  137. package/src/widgets/CentrallyAlignedPopup/modal.tsx +269 -0
  138. package/src/widgets/CentrallyAlignedPopup/preview.module.css +153 -0
  139. package/src/widgets/CentrallyAlignedPopup/previewMobile.module.css +153 -0
  140. package/src/widgets/CentrallyAlignedPopup/style.module.css +283 -0
  141. package/src/widgets/DirectReward/components/couponDetails.tsx +265 -0
  142. package/src/widgets/DirectReward/components/userDetails.tsx +117 -0
  143. package/src/widgets/DirectReward/config.ts +186 -0
  144. package/src/widgets/DirectReward/directReward.tsx +350 -0
  145. package/src/widgets/DirectReward/index.tsx +579 -0
  146. package/src/widgets/DirectReward/previewStyles/thankYouPreviewDesktop.module.css +276 -0
  147. package/src/widgets/DirectReward/previewStyles/thankYouPreviewMobile.module.css +303 -0
  148. package/src/widgets/DirectReward/previewStyles/userDetailsPreviewDesktop.module.css +511 -0
  149. package/src/widgets/DirectReward/previewStyles/userDetailsPreviewMobile.module.css +462 -0
  150. package/src/widgets/DirectReward/style.module.css +836 -0
  151. package/src/widgets/ExitIntentHook.tsx +28 -0
  152. package/src/widgets/STW/api.ts +70 -0
  153. package/src/widgets/STW/components/svgFactory.tsx +44 -0
  154. package/src/widgets/STW/config.ts +193 -0
  155. package/src/widgets/STW/context.ts +7 -0
  156. package/src/widgets/STW/couponDetails.tsx +121 -0
  157. package/src/widgets/STW/index.tsx +733 -0
  158. package/src/widgets/STW/previewStyles/thankyouPreviewDesktop.module.css +215 -0
  159. package/src/widgets/STW/previewStyles/thankyouPreviewMobile.module.css +205 -0
  160. package/src/widgets/STW/previewStyles/userInputsPreviewDesktop.module.css +732 -0
  161. package/src/widgets/STW/previewStyles/userInputsPreviewMobile.module.css +661 -0
  162. package/src/widgets/STW/previewStyles/wheelPreviewDesktop.module.css +498 -0
  163. package/src/widgets/STW/previewStyles/wheelPreviewMobile.module.css +497 -0
  164. package/src/widgets/STW/stw1.tsx +119 -0
  165. package/src/widgets/STW/stw2Components/wheelDesign.tsx +183 -0
  166. package/src/widgets/STW/stw2Pages/couponDetails.tsx +72 -0
  167. package/src/widgets/STW/stw2Pages/stw2.tsx +212 -0
  168. package/src/widgets/STW/stw2Pages/style.module.css +1226 -0
  169. package/src/widgets/STW/stw2Pages/userDetails.tsx +86 -0
  170. package/src/widgets/STW/stw2Pages/wheel.tsx +117 -0
  171. package/src/widgets/STW/stw2PreviewStyles/thankyouPreviewDesktop.module.css +835 -0
  172. package/src/widgets/STW/stw2PreviewStyles/thankyouPreviewMobile.module.css +787 -0
  173. package/src/widgets/STW/stw2PreviewStyles/userInputsPreviewDesktop.module.css +867 -0
  174. package/src/widgets/STW/stw2PreviewStyles/userInputsPreviewMobile.module.css +798 -0
  175. package/src/widgets/STW/stw2PreviewStyles/wheelPreviewDesktop.module.css +572 -0
  176. package/src/widgets/STW/stw2PreviewStyles/wheelPreviewMobile.module.css +559 -0
  177. package/src/widgets/STW/style.module.css +901 -0
  178. package/src/widgets/STW/userDetails.tsx +150 -0
  179. package/src/widgets/STW/utility.ts +664 -0
  180. package/src/widgets/STW/wheel.tsx +304 -0
  181. package/src/widgets/ScratchCard/ScratchOff/scratchOff.tsx +157 -0
  182. package/src/widgets/ScratchCard/config.ts +152 -0
  183. package/src/widgets/ScratchCard/globalStyle.module.css +931 -0
  184. package/src/widgets/ScratchCard/index.tsx +546 -0
  185. package/src/widgets/ScratchCard/modal.tsx +225 -0
  186. package/src/widgets/ScratchCard/preview.module.css +250 -0
  187. package/src/widgets/ScratchCard/previewMobile.module.css +247 -0
  188. package/src/widgets/ScratchCard/previewStyles/userDetailsPreviewDesktop.module.css +537 -0
  189. package/src/widgets/ScratchCard/previewStyles/userDetailsPreviewMobile.module.css +463 -0
  190. package/src/widgets/ScratchCard/style.module.css +220 -0
  191. package/src/widgets/ShopifyForm/config.ts +168 -0
  192. package/src/widgets/ShopifyForm/index.tsx +214 -0
  193. package/src/widgets/ShopifyForm/previewDesktop.module.css +117 -0
  194. package/src/widgets/ShopifyForm/previewMobile.module.css +131 -0
  195. package/src/widgets/ShopifyForm/shopifyForm.tsx +445 -0
  196. package/src/widgets/ShopifyForm/style.module.css +161 -0
  197. package/src/widgets/SingleButtonRedirection/config.ts +47 -0
  198. package/src/widgets/SingleButtonRedirection/index.tsx +121 -0
  199. package/src/widgets/WebStories/config.ts +105 -0
  200. package/src/widgets/WebStories/index.css +3 -0
  201. package/src/widgets/WebStories/index.tsx +282 -0
  202. package/src/widgets/WebStories/style.module.css +26 -0
  203. package/src/widgets/index.tsx +3 -0
  204. package/src/widgets/utility.ts +31 -0
  205. package/tsconfig.json +12 -0
  206. package/webpack.config.js +239 -0
@@ -0,0 +1,796 @@
1
+ .bik-dropdown__container {
2
+ /* Colors */
3
+ --bik-dropdown-border-color: #e0e0e0;
4
+ --bik-dropdown-text-color: #1f2937;
5
+ --bik-dropdown-placeholder-color: #fff;
6
+ --bik-dropdown-background: rgba(255, 255, 255, 0.3);
7
+ --bik-dropdown-focus-color: var(--bik-focus-color, #e0e0e0);
8
+
9
+ --bik-dropdown-secondary-color: #6b7280;
10
+ --bik-dropdown-muted-color: #9ca3af;
11
+ --bik-dropdown-light-border: rgba(224, 224, 224, 0.4);
12
+ --bik-dropdown-selected-bg: rgba(255, 255, 255, 0.4);
13
+
14
+ --bik-dropdown-error-color: #b92321;
15
+ --bik-dropdown-error-highlight: #ef4444;
16
+ --bik-dropdown-option-bg-light: #f9fafb;
17
+ --bik-dropdown-option-bg-hover: #f3f4f6;
18
+ --bik-dropdown-option-border: #e5e7eb;
19
+ --bik-dropdown-input-border: #d1d5db;
20
+ --bik-dropdown-scrollbar-track: #f1f1f1;
21
+
22
+ /* Sizing */
23
+ --bik-dropdown-min-height-desktop: 56px;
24
+ --bik-dropdown-min-height-mobile: 48px;
25
+ --bik-dropdown-min-height-preview: 20px;
26
+ --bik-dropdown-border-radius: 8px;
27
+
28
+ /* Spacing */
29
+ --bik-dropdown-padding-desktop: 6px 18px;
30
+ --bik-dropdown-padding-mobile: 6px 14px 2px;
31
+ --bik-dropdown-padding-preview: 2px;
32
+ --bik-dropdown-label-padding-desktop: 18px;
33
+ --bik-dropdown-label-padding-mobile: 14px;
34
+ --bik-dropdown-label-padding-preview: 2px;
35
+
36
+ /* Typography */
37
+ --bik-dropdown-font-size-base: 14px;
38
+ --bik-dropdown-font-size-label: 11px;
39
+ --bik-dropdown-font-size-small: 12px;
40
+ --bik-dropdown-font-size-tiny: 10px;
41
+ --bik-dropdown-font-size-search: 14px;
42
+ --bik-dropdown-font-weight-normal: 400;
43
+ --bik-dropdown-font-weight-medium: 500;
44
+ --bik-dropdown-font-weight-semibold: 600;
45
+
46
+ /* Effects */
47
+ --bik-dropdown-backdrop-filter: blur(4px);
48
+ --bik-dropdown-transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
49
+ --bik-dropdown-box-shadow-hover: 0 1px 2px rgba(0, 0, 0, 0.03);
50
+ --bik-dropdown-box-shadow-focus: 0 1px 3px
51
+ color-mix(in srgb, var(--bik-dropdown-focus-color) 6%, transparent);
52
+ --bik-dropdown-box-shadow-error: 0 1px 3px rgba(185, 35, 33, 0.06);
53
+ --bik-dropdown-box-shadow-error-hover: 0 1px 4px rgba(185, 35, 33, 0.08);
54
+ }
55
+
56
+ /* BASE CONTAINER */
57
+
58
+ .bik-dropdown__container {
59
+ position: relative;
60
+ margin: 8px 0;
61
+ width: 100%;
62
+ }
63
+
64
+ /* INPUT WRAPPER & STATES */
65
+
66
+ .bik-dropdown__inputWrapper {
67
+ position: relative;
68
+ display: flex;
69
+ align-items: center;
70
+ height: var(--bik-dropdown-min-height-desktop);
71
+ background: var(--bik-dropdown-background);
72
+ border: 1px solid var(--bik-dropdown-border-color);
73
+ border-radius: var(--bik-dropdown-border-radius);
74
+ cursor: pointer;
75
+ overflow: visible;
76
+ transition: var(--bik-dropdown-transition);
77
+ }
78
+
79
+ .bik-dropdown__inputWrapper::before {
80
+ content: '';
81
+ position: absolute;
82
+ inset: 0;
83
+ background: linear-gradient(135deg, transparent, rgba(255, 255, 255, 0.1));
84
+ border-radius: inherit;
85
+ pointer-events: none;
86
+ }
87
+
88
+ .bik-dropdown__inputWrapper:hover {
89
+ box-shadow: var(--bik-dropdown-box-shadow-hover);
90
+ }
91
+
92
+ /* Input wrapper states */
93
+ .bik-dropdown__inputWrapper--focused {
94
+ box-shadow: var(--bik-dropdown-box-shadow-focus);
95
+ }
96
+
97
+ .bik-dropdown__inputWrapper--open {
98
+ border-bottom-left-radius: 0;
99
+ border-bottom-right-radius: 0;
100
+ }
101
+
102
+ .bik-dropdown__inputWrapper--error {
103
+ border-color: var(--bik-dropdown-error-color);
104
+ box-shadow: var(--bik-dropdown-box-shadow-error);
105
+ }
106
+
107
+ .bik-dropdown__inputWrapper--error:hover,
108
+ .bik-dropdown__inputWrapper--error.bik-dropdown__inputWrapper--focused {
109
+ box-shadow: var(--bik-dropdown-box-shadow-error-hover);
110
+ }
111
+
112
+ .bik-dropdown__inputWrapper--disabled {
113
+ background: var(--bik-dropdown-background);
114
+ border-color: var(--bik-dropdown-border-color);
115
+ cursor: not-allowed;
116
+ opacity: 0.6;
117
+ }
118
+
119
+ .bik-dropdown__inputWrapper--disabled:hover {
120
+ box-shadow: none;
121
+ transform: none;
122
+ }
123
+
124
+ /* INPUT ELEMENTS */
125
+
126
+ .bik-dropdown__input {
127
+ flex: 1;
128
+ min-height: 24px;
129
+ padding: var(--bik-dropdown-padding-desktop);
130
+ margin-left: 4px;
131
+ font-size: var(--bik-dropdown-font-size-base);
132
+ font-weight: var(--bik-dropdown-font-weight-normal);
133
+ line-height: 1.5;
134
+ color: var(--bik-dropdown-text-color);
135
+ background: transparent;
136
+ border: none;
137
+ outline: none;
138
+ cursor: pointer;
139
+ display: flex;
140
+ align-items: center;
141
+ flex-wrap: wrap;
142
+ gap: 6px;
143
+ transition: all 0.2s ease;
144
+ }
145
+
146
+ .bik-dropdown__searchContainer {
147
+ display: flex;
148
+ flex-wrap: wrap;
149
+ align-items: center;
150
+ gap: 6px;
151
+ width: 100%;
152
+ }
153
+
154
+ .bik-dropdown__search {
155
+ flex: 1;
156
+ min-width: 120px;
157
+ padding: 0 !important;
158
+ font-size: var(--bik-dropdown-font-size-base) !important;
159
+ color: inherit;
160
+ background: transparent !important;
161
+ border: none;
162
+ outline: none;
163
+ }
164
+
165
+ .bik-dropdown__search::placeholder {
166
+ color: var(--bik-dropdown-placeholder-color);
167
+ opacity: 0.7;
168
+ }
169
+
170
+ .bik-dropdown__inputWrapper:not(.bik-dropdown__inputWrapper--open)
171
+ .bik-dropdown__search::placeholder {
172
+ opacity: 0;
173
+ }
174
+
175
+ .bik-dropdown__placeholder {
176
+ color: var(--bik-dropdown-placeholder-color);
177
+ font-size: var(--bik-dropdown-font-size-base);
178
+ line-height: 1.5;
179
+ opacity: 0;
180
+ transition: opacity 0.2s ease;
181
+ }
182
+
183
+ .bik-dropdown__inputWrapper--hasFloated .bik-dropdown__placeholder {
184
+ opacity: 1;
185
+ }
186
+
187
+ .bik-dropdown__value {
188
+ white-space: nowrap;
189
+ overflow: hidden;
190
+ text-overflow: ellipsis;
191
+ }
192
+
193
+ /* SELECTED ITEM*/
194
+
195
+ .bik-dropdown__selectedItems {
196
+ display: flex;
197
+ flex-wrap: wrap;
198
+ align-items: center;
199
+ gap: 4px;
200
+ flex: 1;
201
+ min-height: 24px;
202
+ margin-top: 16px;
203
+ }
204
+
205
+ .bik-dropdown__inputWrapper:not(.bik-dropdown__inputWrapper--hasValue):not(
206
+ .bik-dropdown__inputWrapper--focused
207
+ ):not(.bik-dropdown__inputWrapper--open):not(
208
+ .bik-dropdown__inputWrapper--hasSelectedItems
209
+ )
210
+ .bik-dropdown__selectedItems {
211
+ margin-top: 0;
212
+ }
213
+
214
+ .bik-dropdown__singleSelectedItem {
215
+ flex: 1;
216
+ color: inherit;
217
+ font-size: var(--bik-dropdown-font-size-base);
218
+ line-height: 1.5;
219
+ overflow: hidden;
220
+ text-overflow: ellipsis;
221
+ white-space: nowrap;
222
+ }
223
+
224
+ .bik-dropdown__selectedItem {
225
+ display: inline-flex;
226
+ align-items: center;
227
+ gap: 4px;
228
+ max-width: 150px;
229
+ padding: 1px 4px;
230
+ background: var(--bik-dropdown-selected-bg);
231
+ backdrop-filter: var(--bik-dropdown-backdrop-filter);
232
+ border: 1px solid rgba(224, 224, 224, 0.6);
233
+ border-radius: 6px;
234
+ font-size: var(--bik-dropdown-font-size-small);
235
+ font-weight: var(--bik-dropdown-font-weight-medium);
236
+ color: var(--bik-dropdown-text-color);
237
+ position: relative;
238
+ overflow: hidden;
239
+ transition: var(--bik-dropdown-transition);
240
+ animation: bik-slideInSelectedItem 0.2s ease-out;
241
+ }
242
+
243
+ .bik-dropdown__selectedItem::before {
244
+ content: '';
245
+ position: absolute;
246
+ inset: 0;
247
+ background: linear-gradient(135deg, transparent, rgba(255, 255, 255, 0.15));
248
+ border-radius: inherit;
249
+ pointer-events: none;
250
+ }
251
+
252
+ .bik-dropdown__selectedItemText {
253
+ flex: 1;
254
+ min-width: 0;
255
+ overflow: hidden;
256
+ text-overflow: ellipsis;
257
+ white-space: nowrap;
258
+ }
259
+
260
+ .bik-dropdown__selectedCount {
261
+ padding: 2px 4px;
262
+ background: var(--bik-dropdown-background);
263
+ backdrop-filter: var(--bik-dropdown-backdrop-filter);
264
+ border: 1px solid var(--bik-dropdown-light-border);
265
+ border-radius: 4px;
266
+ color: var(--bik-dropdown-secondary-color);
267
+ font-size: var(--bik-dropdown-font-size-tiny);
268
+ font-weight: var(--bik-dropdown-font-weight-medium);
269
+ white-space: nowrap;
270
+ transition: var(--bik-dropdown-transition);
271
+ }
272
+
273
+ /*BUTTONS */
274
+
275
+ .bik-dropdown__button {
276
+ position: relative;
277
+ border: none;
278
+ cursor: pointer;
279
+ backdrop-filter: blur(2px);
280
+ transition: var(--bik-dropdown-transition);
281
+ }
282
+
283
+ .bik-dropdown__button:disabled {
284
+ cursor: not-allowed;
285
+ opacity: 0.5;
286
+ }
287
+
288
+ .bik-dropdown__removeButton {
289
+ display: flex;
290
+ align-items: center;
291
+ justify-content: center;
292
+ width: 16px !important;
293
+ height: 16px !important;
294
+ padding: 0 !important;
295
+ margin: 0 !important;
296
+ background: var(--bik-dropdown-background) !important;
297
+ border: none;
298
+ border-radius: 50%;
299
+ color: var(--bik-dropdown-secondary-color);
300
+ font-size: 20px;
301
+ line-height: 1;
302
+ cursor: pointer;
303
+ z-index: 1;
304
+ }
305
+
306
+ .bik-dropdown__removeButton:hover {
307
+ color: var(--bik-dropdown-error-color);
308
+ }
309
+
310
+ .bik-dropdown__clearButton {
311
+ padding: 4px 8px !important;
312
+ margin-left: 6px;
313
+ background: var(--bik-dropdown-background) !important;
314
+ backdrop-filter: var(--bik-dropdown-backdrop-filter);
315
+ border: 1px solid var(--bik-dropdown-light-border) !important;
316
+ border-radius: 4px;
317
+ color: var(--bik-dropdown-secondary-color) !important;
318
+ font-size: var(--bik-dropdown-font-size-tiny) !important;
319
+ font-weight: var(--bik-dropdown-font-weight-medium);
320
+ text-decoration: none;
321
+ cursor: pointer;
322
+ }
323
+
324
+ .bik-dropdown__clearButton:hover {
325
+ border-color: var(--bik-dropdown-error-color);
326
+ color: var(--bik-dropdown-error-color);
327
+ }
328
+
329
+ /* LABELS */
330
+
331
+ .bik-dropdown__label {
332
+ position: absolute;
333
+ left: var(--bik-dropdown-label-padding-desktop);
334
+ top: 50%;
335
+ transform: translateY(-50%);
336
+ max-width: calc(100% - 60px);
337
+ padding: 0 4px;
338
+ background: transparent;
339
+ font-size: 14px;
340
+ font-weight: var(--bik-dropdown-font-weight-normal);
341
+ white-space: nowrap;
342
+ overflow: hidden;
343
+ text-overflow: ellipsis;
344
+ pointer-events: none;
345
+ transition: var(--bik-dropdown-transition);
346
+ z-index: 2;
347
+ }
348
+
349
+ /* Label floating states - consolidated selector */
350
+ .bik-dropdown__inputWrapper--open .bik-dropdown__label,
351
+ .bik-dropdown__inputWrapper--focused .bik-dropdown__label,
352
+ .bik-dropdown__inputWrapper--hasValue .bik-dropdown__label,
353
+ .bik-dropdown__inputWrapper--hasSelectedItems .bik-dropdown__label,
354
+ .bik-dropdown__label--floated,
355
+ .bik-dropdown__label--hasValue,
356
+ .bik-dropdown__label--hasPlaceholder,
357
+ .bik-dropdown__label--hasSelectedItems {
358
+ top: 6px;
359
+ transform: translateY(0);
360
+ font-size: var(--bik-dropdown-font-size-label);
361
+ font-weight: var(--bik-dropdown-font-weight-normal);
362
+ color: var(--bik-dropdown-muted-color);
363
+ background: transparent;
364
+ }
365
+
366
+ .bik-dropdown__input:focus + .bik-dropdown__label,
367
+ .bik-dropdown__inputWrapper--focused .bik-dropdown__label {
368
+ color: #4b5563;
369
+ }
370
+
371
+ /* Label state modifiers */
372
+ .bik-dropdown__label--error {
373
+ color: var(--bik-dropdown-error-highlight) !important;
374
+ }
375
+
376
+ .bik-dropdown__label--disabled {
377
+ color: var(--bik-dropdown-placeholder-color) !important;
378
+ background: transparent;
379
+ }
380
+
381
+ .bik-dropdown__required {
382
+ margin-left: 2px;
383
+ color: var(--bik-dropdown-error-highlight);
384
+ font-weight: var(--bik-dropdown-font-weight-medium);
385
+ }
386
+
387
+ /* ICONS */
388
+
389
+ .bik-dropdown__icon {
390
+ position: absolute;
391
+ right: 16px;
392
+ top: 50%;
393
+ transform: translateY(-50%);
394
+ width: 20px;
395
+ height: 20px;
396
+ display: flex;
397
+ align-items: center;
398
+ justify-content: center;
399
+ color: var(--bik-dropdown-secondary-color);
400
+ pointer-events: none;
401
+ flex-shrink: 0;
402
+ z-index: 2;
403
+ }
404
+
405
+ .bik-dropdown__chevron {
406
+ transition: transform 0.2s ease;
407
+ }
408
+
409
+ .bik-dropdown__chevron--open {
410
+ transform: rotate(180deg);
411
+ }
412
+
413
+ .bik-dropdown__errorIcon {
414
+ display: flex;
415
+ align-items: center;
416
+ justify-content: center;
417
+ width: 12px;
418
+ height: 12px;
419
+ flex-shrink: 0;
420
+ }
421
+
422
+ /* DROPDOWN OPTIONS */
423
+
424
+ .bik-dropdown__options {
425
+ position: absolute;
426
+ top: 100%;
427
+ left: 0;
428
+ right: 0;
429
+ max-height: 200px;
430
+ background: rgba(255, 255, 255);
431
+ backdrop-filter: blur(8px);
432
+ border: 1px solid var(--bik-dropdown-border-color);
433
+ border-top: none;
434
+ border-bottom-left-radius: var(--bik-dropdown-border-radius);
435
+ border-bottom-right-radius: var(--bik-dropdown-border-radius);
436
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
437
+ overflow: hidden;
438
+ display: flex;
439
+ flex-direction: column;
440
+ z-index: 1000;
441
+ }
442
+
443
+ .bik-dropdown__options--top {
444
+ bottom: 100%;
445
+ top: auto;
446
+ border-top: 1px solid var(--bik-dropdown-border-color);
447
+ border-bottom: none;
448
+ border-top-left-radius: var(--bik-dropdown-border-radius);
449
+ border-top-right-radius: var(--bik-dropdown-border-radius);
450
+ border-bottom-left-radius: 0;
451
+ border-bottom-right-radius: 0;
452
+ box-shadow: 0 -4px 6px rgba(0, 0, 0, 0.1);
453
+ }
454
+
455
+ /* Search functionality */
456
+ .bik-dropdown__searchWrapper {
457
+ padding: 12px;
458
+ border-bottom: 1px solid var(--bik-dropdown-option-border);
459
+ background: var(--bik-dropdown-option-bg-light);
460
+ }
461
+
462
+ .bik-dropdown__searchInput {
463
+ width: 100% !important;
464
+ padding: 8px 12px !important;
465
+ border: 1px solid var(--bik-dropdown-input-border) !important;
466
+ border-radius: 4px;
467
+ font-size: var(--bik-dropdown-font-size-search) !important;
468
+ outline: none;
469
+ transition: border-color 0.2s ease;
470
+ }
471
+
472
+ .bik-dropdown__searchInput:focus {
473
+ border-color: #374151;
474
+ }
475
+
476
+ /* Select all functionality */
477
+ .bik-dropdown__selectAllWrapper {
478
+ border-bottom: 1px solid var(--bik-dropdown-option-border);
479
+ background: var(--bik-dropdown-option-bg-light);
480
+ }
481
+
482
+ .bik-dropdown__selectAllOption {
483
+ background: var(--bik-dropdown-option-bg-light);
484
+ font-weight: var(--bik-dropdown-font-weight-medium);
485
+ }
486
+
487
+ .bik-dropdown__selectAllOption:hover {
488
+ background: var(--bik-dropdown-option-bg-hover);
489
+ }
490
+
491
+ .bik-dropdown__optionsList {
492
+ flex: 1;
493
+ overflow-y: auto;
494
+ }
495
+
496
+ /* OPTIONS LIST ITEMS */
497
+
498
+ .bik-dropdown__option {
499
+ display: flex;
500
+ align-items: center;
501
+ gap: 12px;
502
+ padding: 12px 16px;
503
+ font-size: var(--bik-dropdown-font-size-base);
504
+ line-height: 1.5;
505
+ color: var(--bik-dropdown-text-color);
506
+ border-bottom: 1px solid rgba(224, 224, 224, 0.5);
507
+ cursor: pointer;
508
+ transition: all 0.2s ease;
509
+ }
510
+
511
+ .bik-dropdown__option:last-child {
512
+ border-bottom: none;
513
+ }
514
+
515
+ .bik-dropdown__option:hover {
516
+ background: var(--bik-dropdown-option-bg-light);
517
+ color: var(--bik-dropdown-text-color);
518
+ }
519
+
520
+ .bik-dropdown__option--selected {
521
+ background: var(--bik-dropdown-option-bg-hover);
522
+ color: var(--bik-dropdown-text-color);
523
+ }
524
+
525
+ .bik-dropdown__option--selected:hover {
526
+ background: var(--bik-dropdown-option-border);
527
+ }
528
+
529
+ .bik-dropdown__option--disabled {
530
+ color: var(--bik-dropdown-placeholder-color);
531
+ cursor: not-allowed;
532
+ opacity: 0.6;
533
+ }
534
+
535
+ .bik-dropdown__option--disabled:hover {
536
+ background: transparent;
537
+ }
538
+
539
+ .bik-dropdown__checkbox,
540
+ .bik-dropdown__radio {
541
+ display: flex;
542
+ align-items: center;
543
+ justify-content: center;
544
+ width: 16px;
545
+ height: 16px;
546
+ flex-shrink: 0;
547
+ }
548
+
549
+ .bik-dropdown__optionLabel {
550
+ flex: 1;
551
+ min-width: 0;
552
+ word-wrap: break-word;
553
+ }
554
+
555
+ /* ERROR MESSAGES*/
556
+ .bik-dropdown__error {
557
+ display: flex;
558
+ gap: 4px;
559
+ margin: 4px 0 0 6px;
560
+ color: var(--bik-dropdown-error-highlight);
561
+ font-size: var(--bik-dropdown-font-size-tiny);
562
+ font-weight: var(--bik-dropdown-font-weight-normal);
563
+ line-height: 1.4;
564
+ animation: bik-slideInError 0.3s ease;
565
+ z-index: 1;
566
+ }
567
+
568
+ /* ANIMATIONS */
569
+
570
+ @keyframes bik-slideInSelectedItem {
571
+ from {
572
+ opacity: 0;
573
+ transform: translateX(-8px) scale(0.9);
574
+ }
575
+ to {
576
+ opacity: 1;
577
+ transform: translateX(0) scale(1);
578
+ }
579
+ }
580
+
581
+ @keyframes bik-slideInError {
582
+ from {
583
+ opacity: 0;
584
+ transform: translateY(-4px);
585
+ }
586
+ to {
587
+ opacity: 1;
588
+ transform: translateY(0);
589
+ }
590
+ }
591
+
592
+ /* SCROLLBAR STYLING */
593
+
594
+ .bik-dropdown__options::-webkit-scrollbar,
595
+ .bik-dropdown__optionsList::-webkit-scrollbar {
596
+ width: 6px;
597
+ }
598
+
599
+ .bik-dropdown__options::-webkit-scrollbar-track,
600
+ .bik-dropdown__optionsList::-webkit-scrollbar-track {
601
+ background: var(--bik-dropdown-scrollbar-track);
602
+ border-radius: 3px;
603
+ }
604
+
605
+ .bik-dropdown__options::-webkit-scrollbar-thumb,
606
+ .bik-dropdown__optionsList::-webkit-scrollbar-thumb {
607
+ background: #c1c1c1;
608
+ border-radius: 3px;
609
+ }
610
+
611
+ .bik-dropdown__options::-webkit-scrollbar-thumb:hover,
612
+ .bik-dropdown__optionsList::-webkit-scrollbar-thumb:hover {
613
+ background: #a1a1a1;
614
+ }
615
+
616
+ /* ACCESSIBILITY & RESPONSIVE */
617
+
618
+ @media (prefers-reduced-motion: reduce) {
619
+ .bik-dropdown__inputWrapper,
620
+ .bik-dropdown__label,
621
+ .bik-dropdown__input,
622
+ .bik-dropdown__error,
623
+ .bik-dropdown__chevron,
624
+ .bik-dropdown__option {
625
+ transition: none;
626
+ animation: none;
627
+ }
628
+ }
629
+
630
+ @media (prefers-contrast: high) {
631
+ .bik-dropdown__inputWrapper,
632
+ .bik-dropdown__options {
633
+ border-width: 3px;
634
+ }
635
+
636
+ .bik-dropdown__label {
637
+ font-weight: var(--bik-dropdown-font-weight-normal);
638
+ }
639
+ }
640
+
641
+ /* MOBILE RESPONSIVE */
642
+
643
+ @media (max-width: 768px) {
644
+ .bik-dropdown__inputWrapper {
645
+ min-height: var(--bik-dropdown-min-height-mobile);
646
+ }
647
+
648
+ .bik-dropdown__input {
649
+ font-size: var(--bik-dropdown-font-size-small);
650
+ padding: var(--bik-dropdown-padding-mobile);
651
+ }
652
+
653
+ .bik-dropdown__label {
654
+ left: var(--bik-dropdown-label-padding-mobile);
655
+ max-width: calc(100% - 60px);
656
+ }
657
+
658
+ .bik-dropdown__icon {
659
+ right: 12px;
660
+ }
661
+
662
+ .bik-dropdown__option {
663
+ padding: 12px 16px;
664
+ gap: 10px;
665
+ }
666
+
667
+ .bik-dropdown__selectedItem {
668
+ max-width: 120px;
669
+ padding: 1px 6px;
670
+ font-size: var(--bik-dropdown-font-size-tiny);
671
+ border-radius: 5px;
672
+ }
673
+
674
+ .bik-dropdown__removeButton {
675
+ width: 14px !important;
676
+ height: 14px !important;
677
+ font-size: var(--bik-dropdown-font-size-tiny) !important;
678
+ }
679
+
680
+ .bik-dropdown__selectedItems {
681
+ gap: 6px;
682
+ margin-top: 12px;
683
+ }
684
+
685
+ .bik-dropdown__selectedCount {
686
+ padding: 0 6px;
687
+ font-size: var(--bik-dropdown-font-size-tiny);
688
+ }
689
+
690
+ .bik-dropdown__clearButton {
691
+ padding: 1px 6px !important;
692
+ margin-left: 4px;
693
+ font-size: var(--bik-dropdown-font-size-tiny) !important;
694
+ }
695
+
696
+ .bik-dropdown__options,
697
+ .bik-dropdown__options--top {
698
+ max-height: 40vh;
699
+ }
700
+
701
+ .bik-dropdown__options--top {
702
+ box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.1);
703
+ }
704
+ }
705
+
706
+ /* PREVIEW MODE */
707
+
708
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__inputWrapper {
709
+ min-height: var(--bik-dropdown-min-height-preview);
710
+ height: var(--bik-dropdown-min-height-preview);
711
+ box-shadow: none;
712
+ }
713
+
714
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__input {
715
+ padding: var(--bik-dropdown-padding-preview);
716
+ font-size: 8px;
717
+ line-height: 1.2;
718
+ }
719
+
720
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__label {
721
+ left: var(--bik-dropdown-label-padding-preview);
722
+ font-size: 7px;
723
+ line-height: 1.2;
724
+ }
725
+
726
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__label--floated,
727
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__label--hasValue {
728
+ top: 2px;
729
+ font-size: 6px;
730
+ }
731
+
732
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__chevron {
733
+ width: 8px;
734
+ height: 8px;
735
+ }
736
+
737
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__errorIcon {
738
+ width: 8px;
739
+ height: 8px;
740
+ }
741
+
742
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__error {
743
+ font-size: 6px;
744
+ margin: 2px 0 0 2px;
745
+ }
746
+
747
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__selectedItem {
748
+ font-size: 7px;
749
+ padding: 1px 2px;
750
+ }
751
+
752
+ .bik-dropdown__container[data-mode='preview']
753
+ .bik-dropdown__singleSelectedItem {
754
+ font-size: 8px;
755
+ }
756
+
757
+ /* Preview mode mobile overrides */
758
+ @media (max-width: 768px) {
759
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__input {
760
+ font-size: 7px;
761
+ }
762
+
763
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__label {
764
+ font-size: 6px;
765
+ }
766
+
767
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__label--floated,
768
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__label--hasValue {
769
+ top: 1px;
770
+ font-size: 5px;
771
+ }
772
+
773
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__chevron {
774
+ width: 6px;
775
+ height: 6px;
776
+ }
777
+
778
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__errorIcon {
779
+ width: 6px;
780
+ height: 6px;
781
+ }
782
+
783
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__error {
784
+ font-size: 5px;
785
+ margin: 1px 0 0 1px;
786
+ }
787
+
788
+ .bik-dropdown__container[data-mode='preview'] .bik-dropdown__selectedItem {
789
+ font-size: 6px;
790
+ }
791
+
792
+ .bik-dropdown__container[data-mode='preview']
793
+ .bik-dropdown__singleSelectedItem {
794
+ font-size: 7px;
795
+ }
796
+ }