@dktunited-techoff/techoff-suite-ui 1.8.1 → 1.8.3

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 (351) hide show
  1. package/esm/assets/fonts/Montserrat-Medium.ttf +0 -0
  2. package/esm/assets/fonts/Roboto-Light.ttf +0 -0
  3. package/esm/components/TsButton/TsButton.css +121 -0
  4. package/esm/components/TsButton/TsButton.d.ts +5 -0
  5. package/esm/components/TsButton/TsButton.js +17 -0
  6. package/esm/components/TsButton/TsButton.js.map +1 -0
  7. package/esm/components/TsButton/TsButton.types.d.ts +9 -0
  8. package/esm/components/TsButton/TsButton.types.js +2 -0
  9. package/esm/components/TsButton/TsButton.types.js.map +1 -0
  10. package/esm/components/TsButton/__stories__/TsButton.stories.mdx +84 -0
  11. package/esm/components/TsCheckbox/TsCheckbox.css +64 -0
  12. package/esm/components/TsCheckbox/TsCheckbox.d.ts +4 -0
  13. package/esm/components/TsCheckbox/TsCheckbox.js +17 -0
  14. package/esm/components/TsCheckbox/TsCheckbox.js.map +1 -0
  15. package/esm/components/TsCheckbox/TsCheckbox.types.d.ts +7 -0
  16. package/esm/components/TsCheckbox/TsCheckbox.types.js +2 -0
  17. package/esm/components/TsCheckbox/TsCheckbox.types.js.map +1 -0
  18. package/esm/components/TsCheckbox/__stories__/TsCheckbox.stories.mdx +56 -0
  19. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.css +114 -0
  20. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.d.ts +4 -0
  21. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.js +100 -0
  22. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.js.map +1 -0
  23. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.tsx +165 -0
  24. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.types.d.ts +17 -0
  25. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.types.js +2 -0
  26. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.types.js.map +1 -0
  27. package/esm/components/TsDropdowns/TsDropdown/TsDropdown.types.ts +18 -0
  28. package/esm/components/TsDropdowns/TsDropdown/__stories__/TsDropdown.stories.mdx +85 -0
  29. package/esm/components/TsDropdowns/TsDropdown/__stories__/fruits.d.ts +4 -0
  30. package/esm/components/TsDropdowns/TsDropdown/__stories__/fruits.js +48 -0
  31. package/esm/components/TsDropdowns/TsDropdown/__stories__/fruits.js.map +1 -0
  32. package/esm/components/TsDropdowns/TsDropdown/__stories__/fruits.ts +47 -0
  33. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.css +83 -0
  34. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.d.ts +4 -0
  35. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.js +62 -0
  36. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.js.map +1 -0
  37. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.tsx +105 -0
  38. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.d.ts +8 -0
  39. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.js +2 -0
  40. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.js.map +1 -0
  41. package/esm/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.ts +8 -0
  42. package/esm/components/TsDropdowns/TsDropdownFilter/__stories__/TsDropdown.stories.mdx +69 -0
  43. package/esm/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.d.ts +4 -0
  44. package/esm/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.js +48 -0
  45. package/esm/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.js.map +1 -0
  46. package/esm/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.ts +47 -0
  47. package/esm/components/TsIcon/TsIcon.css +26 -0
  48. package/esm/components/TsIcon/TsIcon.d.ts +4 -0
  49. package/esm/components/TsIcon/TsIcon.js +12 -0
  50. package/esm/components/TsIcon/TsIcon.js.map +1 -0
  51. package/esm/components/TsIcon/TsIcon.types.d.ts +4 -0
  52. package/esm/components/TsIcon/TsIcon.types.js +2 -0
  53. package/esm/components/TsIcon/TsIcon.types.js.map +1 -0
  54. package/esm/components/TsIcon/__stories__/TsIcon.stories.mdx +89 -0
  55. package/esm/components/TsIcon/icons/add-circle.svg +1 -0
  56. package/esm/components/TsIcon/icons/add.svg +1 -0
  57. package/esm/components/TsIcon/icons/alert-circle-filled.svg +1 -0
  58. package/esm/components/TsIcon/icons/alert-circle.svg +1 -0
  59. package/esm/components/TsIcon/icons/alert-triangle-filled.svg +1 -0
  60. package/esm/components/TsIcon/icons/alert-triangle.svg +1 -0
  61. package/esm/components/TsIcon/icons/arrow-diagonal-collapse.svg +1 -0
  62. package/esm/components/TsIcon/icons/arrow-diagonal-expand.svg +1 -0
  63. package/esm/components/TsIcon/icons/arrow-down.svg +1 -0
  64. package/esm/components/TsIcon/icons/arrow-go-back.svg +1 -0
  65. package/esm/components/TsIcon/icons/arrow-left-right.svg +1 -0
  66. package/esm/components/TsIcon/icons/arrow-left.svg +1 -0
  67. package/esm/components/TsIcon/icons/arrow-right.svg +1 -0
  68. package/esm/components/TsIcon/icons/arrow-up-down.svg +1 -0
  69. package/esm/components/TsIcon/icons/arrow-up.svg +1 -0
  70. package/esm/components/TsIcon/icons/award.svg +1 -0
  71. package/esm/components/TsIcon/icons/check-circle-filled.svg +1 -0
  72. package/esm/components/TsIcon/icons/check-circle-timer.svg +7 -0
  73. package/esm/components/TsIcon/icons/check-circle.svg +1 -0
  74. package/esm/components/TsIcon/icons/check-square-filled.svg +1 -0
  75. package/esm/components/TsIcon/icons/check-square.svg +1 -0
  76. package/esm/components/TsIcon/icons/check.svg +1 -0
  77. package/esm/components/TsIcon/icons/chevron-down.svg +1 -0
  78. package/esm/components/TsIcon/icons/chevron-left.svg +1 -0
  79. package/esm/components/TsIcon/icons/chevron-right.svg +1 -0
  80. package/esm/components/TsIcon/icons/chevron-up.svg +1 -0
  81. package/esm/components/TsIcon/icons/circle.svg +1 -0
  82. package/esm/components/TsIcon/icons/close-circle.svg +1 -0
  83. package/esm/components/TsIcon/icons/close.svg +1 -0
  84. package/esm/components/TsIcon/icons/currency-euro.svg +1 -0
  85. package/esm/components/TsIcon/icons/download.svg +1 -0
  86. package/esm/components/TsIcon/icons/edit.svg +1 -0
  87. package/esm/components/TsIcon/icons/external-link.svg +1 -0
  88. package/esm/components/TsIcon/icons/filter-off.svg +1 -0
  89. package/esm/components/TsIcon/icons/filter.svg +1 -0
  90. package/esm/components/TsIcon/icons/flashlight-off.svg +1 -0
  91. package/esm/components/TsIcon/icons/flashlight.svg +1 -0
  92. package/esm/components/TsIcon/icons/header-bikestudio.svg +32 -0
  93. package/esm/components/TsIcon/icons/header-nsc-helmet.svg +32 -0
  94. package/esm/components/TsIcon/icons/header-opticost.svg +32 -0
  95. package/esm/components/TsIcon/icons/header-repairability.svg +32 -0
  96. package/esm/components/TsIcon/icons/header-techoff-suite.svg +32 -0
  97. package/esm/components/TsIcon/icons/heart-filled.svg +1 -0
  98. package/esm/components/TsIcon/icons/heart.svg +1 -0
  99. package/esm/components/TsIcon/icons/history.svg +1 -0
  100. package/esm/components/TsIcon/icons/home.svg +1 -0
  101. package/esm/components/TsIcon/icons/index.d.ts +3 -0
  102. package/esm/components/TsIcon/icons/index.js +62 -0
  103. package/esm/components/TsIcon/icons/index.js.map +1 -0
  104. package/esm/components/TsIcon/icons/index.ts +61 -0
  105. package/esm/components/TsIcon/icons/link.svg +1 -0
  106. package/esm/components/TsIcon/icons/list-settings.svg +1 -0
  107. package/esm/components/TsIcon/icons/lock.svg +1 -0
  108. package/esm/components/TsIcon/icons/loop-right.svg +1 -0
  109. package/esm/components/TsIcon/icons/percent.svg +1 -0
  110. package/esm/components/TsIcon/icons/question-circle.svg +1 -0
  111. package/esm/components/TsIcon/icons/save.svg +1 -0
  112. package/esm/components/TsIcon/icons/search.svg +1 -0
  113. package/esm/components/TsIcon/icons/seedling-circle.svg +12 -0
  114. package/esm/components/TsIcon/icons/square.svg +1 -0
  115. package/esm/components/TsIcon/icons/timer.svg +1 -0
  116. package/esm/components/TsIcon/icons/tools.svg +1 -0
  117. package/esm/components/TsIcon/icons/user.svg +1 -0
  118. package/esm/components/TsInput/TsInput/TsInput.css +92 -0
  119. package/esm/components/TsInput/TsInput/TsInput.d.ts +4 -0
  120. package/esm/components/TsInput/TsInput/TsInput.js +21 -0
  121. package/esm/components/TsInput/TsInput/TsInput.js.map +1 -0
  122. package/esm/components/TsInput/TsInput/TsInput.tsx +34 -0
  123. package/esm/components/TsInput/TsInput/TsInput.types.d.ts +8 -0
  124. package/esm/components/TsInput/TsInput/TsInput.types.js +2 -0
  125. package/esm/components/TsInput/TsInput/TsInput.types.js.map +1 -0
  126. package/esm/components/TsInput/TsInput/TsInput.types.tsx +9 -0
  127. package/esm/components/TsInput/TsInput/__stories__/TsInput.stories.mdx +77 -0
  128. package/esm/components/TsLoader/TsLoader.css +42 -0
  129. package/esm/components/TsLoader/TsLoader.d.ts +4 -0
  130. package/esm/components/TsLoader/TsLoader.js +6 -0
  131. package/esm/components/TsLoader/TsLoader.js.map +1 -0
  132. package/esm/components/TsLoader/TsLoader.types.d.ts +3 -0
  133. package/esm/components/TsLoader/TsLoader.types.js +2 -0
  134. package/esm/components/TsLoader/TsLoader.types.js.map +1 -0
  135. package/esm/components/TsLoader/__stories__/TsLoader.stories.mdx +30 -0
  136. package/esm/components/TsTabs/TsTabs.css +69 -0
  137. package/esm/components/TsTabs/TsTabs.d.ts +4 -0
  138. package/esm/components/TsTabs/TsTabs.js +30 -0
  139. package/esm/components/TsTabs/TsTabs.js.map +1 -0
  140. package/esm/components/TsTabs/TsTabs.types.d.ts +14 -0
  141. package/esm/components/TsTabs/TsTabs.types.js +2 -0
  142. package/esm/components/TsTabs/TsTabs.types.js.map +1 -0
  143. package/esm/components/TsTabs/__stories__/TsTabs.stories.mdx +50 -0
  144. package/esm/hooks/use-click-outside.d.ts +2 -0
  145. package/esm/hooks/use-click-outside.js +14 -0
  146. package/esm/hooks/use-click-outside.js.map +1 -0
  147. package/esm/index.d.ts +11 -0
  148. package/esm/index.js +12 -0
  149. package/esm/index.js.map +1 -0
  150. package/esm/layouts/TsHeader/TsHeader.css +186 -0
  151. package/esm/layouts/TsHeader/TsHeader.d.ts +4 -0
  152. package/esm/layouts/TsHeader/TsHeader.js +13 -0
  153. package/esm/layouts/TsHeader/TsHeader.js.map +1 -0
  154. package/esm/layouts/TsHeader/TsHeader.types.d.ts +23 -0
  155. package/esm/layouts/TsHeader/TsHeader.types.js +2 -0
  156. package/esm/layouts/TsHeader/TsHeader.types.js.map +1 -0
  157. package/esm/layouts/TsHeader/TsHeaderProfile.d.ts +5 -0
  158. package/esm/layouts/TsHeader/TsHeaderProfile.js +38 -0
  159. package/esm/layouts/TsHeader/TsHeaderProfile.js.map +1 -0
  160. package/esm/layouts/TsHeader/TsHeaderSearch.d.ts +3 -0
  161. package/esm/layouts/TsHeader/TsHeaderSearch.js +58 -0
  162. package/esm/layouts/TsHeader/TsHeaderSearch.js.map +1 -0
  163. package/esm/layouts/TsHeader/__stories__/TsHeader.stories.mdx +71 -0
  164. package/esm/layouts/TsNavigation/TsNavigation.css +72 -0
  165. package/esm/layouts/TsNavigation/TsNavigation.d.ts +7 -0
  166. package/esm/layouts/TsNavigation/TsNavigation.js +29 -0
  167. package/esm/layouts/TsNavigation/TsNavigation.js.map +1 -0
  168. package/esm/layouts/TsNavigation/TsNavigation.types.d.ts +10 -0
  169. package/esm/layouts/TsNavigation/TsNavigation.types.js +2 -0
  170. package/esm/layouts/TsNavigation/TsNavigation.types.js.map +1 -0
  171. package/esm/layouts/TsNavigation/__stories__/TsNavigation.stories.mdx +51 -0
  172. package/esm/utils/string.utils.d.ts +1 -0
  173. package/esm/utils/string.utils.js +2 -0
  174. package/esm/utils/string.utils.js.map +1 -0
  175. package/lib/assets/fonts/Montserrat-Medium.ttf +0 -0
  176. package/lib/assets/fonts/Roboto-Light.ttf +0 -0
  177. package/lib/components/TsButton/TsButton.css +121 -0
  178. package/lib/components/TsButton/TsButton.d.ts +5 -0
  179. package/lib/components/TsButton/TsButton.js +21 -0
  180. package/lib/components/TsButton/TsButton.js.map +1 -0
  181. package/lib/components/TsButton/TsButton.types.d.ts +9 -0
  182. package/lib/components/TsButton/TsButton.types.js +3 -0
  183. package/lib/components/TsButton/TsButton.types.js.map +1 -0
  184. package/lib/components/TsButton/__stories__/TsButton.stories.mdx +84 -0
  185. package/lib/components/TsCheckbox/TsCheckbox.css +64 -0
  186. package/lib/components/TsCheckbox/TsCheckbox.d.ts +4 -0
  187. package/lib/components/TsCheckbox/TsCheckbox.js +21 -0
  188. package/lib/components/TsCheckbox/TsCheckbox.js.map +1 -0
  189. package/lib/components/TsCheckbox/TsCheckbox.types.d.ts +7 -0
  190. package/lib/components/TsCheckbox/TsCheckbox.types.js +3 -0
  191. package/lib/components/TsCheckbox/TsCheckbox.types.js.map +1 -0
  192. package/lib/components/TsCheckbox/__stories__/TsCheckbox.stories.mdx +56 -0
  193. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.css +114 -0
  194. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.d.ts +4 -0
  195. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.js +104 -0
  196. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.js.map +1 -0
  197. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.tsx +165 -0
  198. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.types.d.ts +17 -0
  199. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.types.js +3 -0
  200. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.types.js.map +1 -0
  201. package/lib/components/TsDropdowns/TsDropdown/TsDropdown.types.ts +18 -0
  202. package/lib/components/TsDropdowns/TsDropdown/__stories__/TsDropdown.stories.mdx +85 -0
  203. package/lib/components/TsDropdowns/TsDropdown/__stories__/fruits.d.ts +4 -0
  204. package/lib/components/TsDropdowns/TsDropdown/__stories__/fruits.js +51 -0
  205. package/lib/components/TsDropdowns/TsDropdown/__stories__/fruits.js.map +1 -0
  206. package/lib/components/TsDropdowns/TsDropdown/__stories__/fruits.ts +47 -0
  207. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.css +83 -0
  208. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.d.ts +4 -0
  209. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.js +66 -0
  210. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.js.map +1 -0
  211. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.tsx +105 -0
  212. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.d.ts +8 -0
  213. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.js +3 -0
  214. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.js.map +1 -0
  215. package/lib/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.ts +8 -0
  216. package/lib/components/TsDropdowns/TsDropdownFilter/__stories__/TsDropdown.stories.mdx +69 -0
  217. package/lib/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.d.ts +4 -0
  218. package/lib/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.js +51 -0
  219. package/lib/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.js.map +1 -0
  220. package/lib/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.ts +47 -0
  221. package/lib/components/TsIcon/TsIcon.css +26 -0
  222. package/lib/components/TsIcon/TsIcon.d.ts +4 -0
  223. package/lib/components/TsIcon/TsIcon.js +16 -0
  224. package/lib/components/TsIcon/TsIcon.js.map +1 -0
  225. package/lib/components/TsIcon/TsIcon.types.d.ts +4 -0
  226. package/lib/components/TsIcon/TsIcon.types.js +3 -0
  227. package/lib/components/TsIcon/TsIcon.types.js.map +1 -0
  228. package/lib/components/TsIcon/__stories__/TsIcon.stories.mdx +89 -0
  229. package/lib/components/TsIcon/icons/add-circle.svg +1 -0
  230. package/lib/components/TsIcon/icons/add.svg +1 -0
  231. package/lib/components/TsIcon/icons/alert-circle-filled.svg +1 -0
  232. package/lib/components/TsIcon/icons/alert-circle.svg +1 -0
  233. package/lib/components/TsIcon/icons/alert-triangle-filled.svg +1 -0
  234. package/lib/components/TsIcon/icons/alert-triangle.svg +1 -0
  235. package/lib/components/TsIcon/icons/arrow-diagonal-collapse.svg +1 -0
  236. package/lib/components/TsIcon/icons/arrow-diagonal-expand.svg +1 -0
  237. package/lib/components/TsIcon/icons/arrow-down.svg +1 -0
  238. package/lib/components/TsIcon/icons/arrow-go-back.svg +1 -0
  239. package/lib/components/TsIcon/icons/arrow-left-right.svg +1 -0
  240. package/lib/components/TsIcon/icons/arrow-left.svg +1 -0
  241. package/lib/components/TsIcon/icons/arrow-right.svg +1 -0
  242. package/lib/components/TsIcon/icons/arrow-up-down.svg +1 -0
  243. package/lib/components/TsIcon/icons/arrow-up.svg +1 -0
  244. package/lib/components/TsIcon/icons/award.svg +1 -0
  245. package/lib/components/TsIcon/icons/check-circle-filled.svg +1 -0
  246. package/lib/components/TsIcon/icons/check-circle-timer.svg +7 -0
  247. package/lib/components/TsIcon/icons/check-circle.svg +1 -0
  248. package/lib/components/TsIcon/icons/check-square-filled.svg +1 -0
  249. package/lib/components/TsIcon/icons/check-square.svg +1 -0
  250. package/lib/components/TsIcon/icons/check.svg +1 -0
  251. package/lib/components/TsIcon/icons/chevron-down.svg +1 -0
  252. package/lib/components/TsIcon/icons/chevron-left.svg +1 -0
  253. package/lib/components/TsIcon/icons/chevron-right.svg +1 -0
  254. package/lib/components/TsIcon/icons/chevron-up.svg +1 -0
  255. package/lib/components/TsIcon/icons/circle.svg +1 -0
  256. package/lib/components/TsIcon/icons/close-circle.svg +1 -0
  257. package/lib/components/TsIcon/icons/close.svg +1 -0
  258. package/lib/components/TsIcon/icons/currency-euro.svg +1 -0
  259. package/lib/components/TsIcon/icons/download.svg +1 -0
  260. package/lib/components/TsIcon/icons/edit.svg +1 -0
  261. package/lib/components/TsIcon/icons/external-link.svg +1 -0
  262. package/lib/components/TsIcon/icons/filter-off.svg +1 -0
  263. package/lib/components/TsIcon/icons/filter.svg +1 -0
  264. package/lib/components/TsIcon/icons/flashlight-off.svg +1 -0
  265. package/lib/components/TsIcon/icons/flashlight.svg +1 -0
  266. package/lib/components/TsIcon/icons/header-bikestudio.svg +32 -0
  267. package/lib/components/TsIcon/icons/header-nsc-helmet.svg +32 -0
  268. package/lib/components/TsIcon/icons/header-opticost.svg +32 -0
  269. package/lib/components/TsIcon/icons/header-repairability.svg +32 -0
  270. package/lib/components/TsIcon/icons/header-techoff-suite.svg +32 -0
  271. package/lib/components/TsIcon/icons/heart-filled.svg +1 -0
  272. package/lib/components/TsIcon/icons/heart.svg +1 -0
  273. package/lib/components/TsIcon/icons/history.svg +1 -0
  274. package/lib/components/TsIcon/icons/home.svg +1 -0
  275. package/lib/components/TsIcon/icons/index.d.ts +3 -0
  276. package/lib/components/TsIcon/icons/index.js +65 -0
  277. package/lib/components/TsIcon/icons/index.js.map +1 -0
  278. package/lib/components/TsIcon/icons/index.ts +61 -0
  279. package/lib/components/TsIcon/icons/link.svg +1 -0
  280. package/lib/components/TsIcon/icons/list-settings.svg +1 -0
  281. package/lib/components/TsIcon/icons/lock.svg +1 -0
  282. package/lib/components/TsIcon/icons/loop-right.svg +1 -0
  283. package/lib/components/TsIcon/icons/percent.svg +1 -0
  284. package/lib/components/TsIcon/icons/question-circle.svg +1 -0
  285. package/lib/components/TsIcon/icons/save.svg +1 -0
  286. package/lib/components/TsIcon/icons/search.svg +1 -0
  287. package/lib/components/TsIcon/icons/seedling-circle.svg +12 -0
  288. package/lib/components/TsIcon/icons/square.svg +1 -0
  289. package/lib/components/TsIcon/icons/timer.svg +1 -0
  290. package/lib/components/TsIcon/icons/tools.svg +1 -0
  291. package/lib/components/TsIcon/icons/user.svg +1 -0
  292. package/lib/components/TsInput/TsInput/TsInput.css +92 -0
  293. package/lib/components/TsInput/TsInput/TsInput.d.ts +4 -0
  294. package/lib/components/TsInput/TsInput/TsInput.js +25 -0
  295. package/lib/components/TsInput/TsInput/TsInput.js.map +1 -0
  296. package/lib/components/TsInput/TsInput/TsInput.tsx +34 -0
  297. package/lib/components/TsInput/TsInput/TsInput.types.d.ts +8 -0
  298. package/lib/components/TsInput/TsInput/TsInput.types.js +3 -0
  299. package/lib/components/TsInput/TsInput/TsInput.types.js.map +1 -0
  300. package/lib/components/TsInput/TsInput/TsInput.types.tsx +9 -0
  301. package/lib/components/TsInput/TsInput/__stories__/TsInput.stories.mdx +77 -0
  302. package/lib/components/TsLoader/TsLoader.css +42 -0
  303. package/lib/components/TsLoader/TsLoader.d.ts +4 -0
  304. package/lib/components/TsLoader/TsLoader.js +10 -0
  305. package/lib/components/TsLoader/TsLoader.js.map +1 -0
  306. package/lib/components/TsLoader/TsLoader.types.d.ts +3 -0
  307. package/lib/components/TsLoader/TsLoader.types.js +3 -0
  308. package/lib/components/TsLoader/TsLoader.types.js.map +1 -0
  309. package/lib/components/TsLoader/__stories__/TsLoader.stories.mdx +30 -0
  310. package/lib/components/TsTabs/TsTabs.css +69 -0
  311. package/lib/components/TsTabs/TsTabs.d.ts +4 -0
  312. package/lib/components/TsTabs/TsTabs.js +34 -0
  313. package/lib/components/TsTabs/TsTabs.js.map +1 -0
  314. package/lib/components/TsTabs/TsTabs.types.d.ts +14 -0
  315. package/lib/components/TsTabs/TsTabs.types.js +3 -0
  316. package/lib/components/TsTabs/TsTabs.types.js.map +1 -0
  317. package/lib/components/TsTabs/__stories__/TsTabs.stories.mdx +50 -0
  318. package/lib/hooks/use-click-outside.d.ts +2 -0
  319. package/lib/hooks/use-click-outside.js +18 -0
  320. package/lib/hooks/use-click-outside.js.map +1 -0
  321. package/lib/index.d.ts +11 -0
  322. package/lib/index.js +28 -0
  323. package/lib/index.js.map +1 -0
  324. package/lib/layouts/TsHeader/TsHeader.css +186 -0
  325. package/lib/layouts/TsHeader/TsHeader.d.ts +4 -0
  326. package/lib/layouts/TsHeader/TsHeader.js +17 -0
  327. package/lib/layouts/TsHeader/TsHeader.js.map +1 -0
  328. package/lib/layouts/TsHeader/TsHeader.types.d.ts +23 -0
  329. package/lib/layouts/TsHeader/TsHeader.types.js +3 -0
  330. package/lib/layouts/TsHeader/TsHeader.types.js.map +1 -0
  331. package/lib/layouts/TsHeader/TsHeaderProfile.d.ts +5 -0
  332. package/lib/layouts/TsHeader/TsHeaderProfile.js +43 -0
  333. package/lib/layouts/TsHeader/TsHeaderProfile.js.map +1 -0
  334. package/lib/layouts/TsHeader/TsHeaderSearch.d.ts +3 -0
  335. package/lib/layouts/TsHeader/TsHeaderSearch.js +62 -0
  336. package/lib/layouts/TsHeader/TsHeaderSearch.js.map +1 -0
  337. package/lib/layouts/TsHeader/__stories__/TsHeader.stories.mdx +71 -0
  338. package/lib/layouts/TsNavigation/TsNavigation.css +72 -0
  339. package/lib/layouts/TsNavigation/TsNavigation.d.ts +7 -0
  340. package/lib/layouts/TsNavigation/TsNavigation.js +35 -0
  341. package/lib/layouts/TsNavigation/TsNavigation.js.map +1 -0
  342. package/lib/layouts/TsNavigation/TsNavigation.types.d.ts +10 -0
  343. package/lib/layouts/TsNavigation/TsNavigation.types.js +3 -0
  344. package/lib/layouts/TsNavigation/TsNavigation.types.js.map +1 -0
  345. package/lib/layouts/TsNavigation/__stories__/TsNavigation.stories.mdx +51 -0
  346. package/lib/utils/string.utils.d.ts +1 -0
  347. package/lib/utils/string.utils.js +6 -0
  348. package/lib/utils/string.utils.js.map +1 -0
  349. package/package.json +1 -1
  350. package/src/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.css +12 -12
  351. package/src/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.tsx +11 -10
@@ -0,0 +1,84 @@
1
+ import React from 'react';
2
+ import { ArgsTable, Canvas, Meta, Story } from '@storybook/blocks';
3
+ import { TsButton } from '../TsButton';
4
+ import { icons } from '../../TsIcon/icons';
5
+
6
+ <Meta title="Components/Button" />
7
+
8
+ export const buttonArgTypes = {
9
+ children: {
10
+ control: 'text',
11
+ description: 'Child of the button.',
12
+ },
13
+ icon: {
14
+ control: 'select',
15
+ options: Object.keys(icons),
16
+ description: 'Icon of the button.',
17
+ },
18
+ iconDirection: {
19
+ control: 'inline-radio',
20
+ options: ['left', 'right'],
21
+ description: 'Define the direction of the icon.',
22
+ table: { defaultValue: { summary: 'left' } },
23
+ },
24
+ size: {
25
+ control: 'inline-radio',
26
+ options: ['md', 'lg'],
27
+ description: 'Define the size of the button.',
28
+ table: { defaultValue: { summary: 'md' } },
29
+ },
30
+ variant: {
31
+ control: 'inline-radio',
32
+ options: ['primary', 'secondary', 'success', 'ghost', 'shadow'],
33
+ description: "Variant of the button defining it's color and outline.",
34
+ table: { defaultValue: { summary: 'primary' } },
35
+ },
36
+ block: {
37
+ control: 'boolean',
38
+ description: 'Define if the button is full width',
39
+ table: { defaultValue: { summary: 'false' } },
40
+ },
41
+ disabled: {
42
+ control: 'boolean',
43
+ description: 'Define if the button is disabled',
44
+ table: { defaultValue: { summary: 'false' } },
45
+ },
46
+ rounded: {
47
+ control: 'boolean',
48
+ description: 'Define if the button has its corner full rounded',
49
+ table: { defaultValue: { summary: 'false' } },
50
+ },
51
+ onClick: {
52
+ control: 'function',
53
+ description: 'The handler called when clicking on the button (not available on playground).',
54
+ },
55
+ };
56
+
57
+ # Button
58
+
59
+ Buttons express what action will occur when the users clicks. Buttons are used to initialize an action, either in the background or foreground of an experience.
60
+
61
+ ## Overview
62
+
63
+ <Canvas>
64
+ <Story
65
+ name="Overview"
66
+ args={{
67
+ children: 'Button',
68
+ iconDirection: 'left',
69
+ size: 'md',
70
+ variant: 'primary',
71
+ block: false,
72
+ disabled: false,
73
+ rounded: false,
74
+ onClick: () => {},
75
+ }}
76
+ argTypes={buttonArgTypes}
77
+ >
78
+ {args => <TsButton {...args}>{args.children}</TsButton>}
79
+ </Story>
80
+ </Canvas>
81
+
82
+ ## Props
83
+
84
+ <ArgsTable story="Overview" of={TsButton} />
@@ -0,0 +1,64 @@
1
+ .ts-checkbox {
2
+ display: flex;
3
+ align-items: center;
4
+ cursor: pointer;
5
+ margin-left: -3px;
6
+ }
7
+ /* ########## */
8
+ /* DISABLED */
9
+ .ts-checkbox--disabled {
10
+ cursor: not-allowed;
11
+ }
12
+ .ts-checkbox--disabled .ts-checkbox-box {
13
+ color: #d7daf1;
14
+ }
15
+ .ts-checkbox--disabled:hover .ts-checkbox-box {
16
+ background: transparent;
17
+ }
18
+ /* ##### */
19
+ /* BOX */
20
+ .ts-checkbox-box {
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ width: 24px;
25
+ min-width: 24px;
26
+ height: 24px;
27
+ min-height: 24px;
28
+ border-radius: 6px;
29
+ color: #949494;
30
+ }
31
+ .ts-checkbox-box--checked,
32
+ .ts-checkbox:hover .ts-checkbox-box:not(.ts-checkbox-box--checked) {
33
+ color: #3643ba;
34
+ }
35
+
36
+ /* ################# */
37
+ /* LABEL / CAPTION */
38
+ .ts-checkbox-container {
39
+ width: 100%;
40
+ padding: 4px 0 4px 8px;
41
+ border-radius: 6px;
42
+ }
43
+ .ts-checkbox-label {
44
+ white-space: nowrap;
45
+ }
46
+ .ts-checkbox-container--with-caption .ts-checkbox-label {
47
+ color: #3643ba;
48
+ font-weight: 700;
49
+ }
50
+ .ts-checkbox-caption {
51
+ color: #404040;
52
+ font-size: 12px;
53
+ font-style: italic;
54
+ }
55
+
56
+ /* ######### */
57
+ /* GLOBALS */
58
+ * {
59
+ font-size: 14px;
60
+ outline: none;
61
+ box-sizing: border-box;
62
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans',
63
+ 'Helvetica Neue', sans-serif;
64
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import { TsCheckboxProps } from './TsCheckbox.types';
3
+ import './TsCheckbox.css';
4
+ export declare const TsCheckbox: ({ caption, label, checked, disabled, onChange }: TsCheckboxProps) => React.JSX.Element;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TsCheckbox = void 0;
4
+ const React = require("react");
5
+ const TsIcon_1 = require("../TsIcon/TsIcon");
6
+ require("./TsCheckbox.css");
7
+ const TsCheckbox = ({ caption, label, checked, disabled, onChange }) => {
8
+ // ########
9
+ // Handlers
10
+ const handleChange = () => !disabled && onChange(!checked);
11
+ // #########
12
+ // Rendering
13
+ return (React.createElement("div", { className: `ts-checkbox ${disabled ? 'ts-checkbox--disabled' : ''}`, onClick: handleChange },
14
+ React.createElement("div", { className: `ts-checkbox-box ${checked ? 'ts-checkbox-box--checked' : ''}` },
15
+ React.createElement(TsIcon_1.TsIcon, { name: checked ? 'check-square-filled' : 'square', size: "24" })),
16
+ React.createElement("div", { className: `ts-checkbox-container ${caption ? 'ts-checkbox-container--with-caption' : ''}` },
17
+ React.createElement("div", { className: "ts-checkbox-label" }, label),
18
+ caption && React.createElement("div", { className: "ts-checkbox-caption" }, caption))));
19
+ };
20
+ exports.TsCheckbox = TsCheckbox;
21
+ //# sourceMappingURL=TsCheckbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsCheckbox.js","sourceRoot":"","sources":["../../../src/components/TsCheckbox/TsCheckbox.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,6CAA0C;AAE1C,4BAA0B;AAEnB,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAmB,EAAE,EAAE;IAC7F,WAAW;IACX,WAAW;IACX,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;IAE3D,YAAY;IACZ,YAAY;IACZ,OAAO,CACL,6BAAK,SAAS,EAAE,eAAe,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY;QAC7F,6BAAK,SAAS,EAAE,mBAAmB,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5E,oBAAC,eAAM,IAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAC,IAAI,GAAG,CAClE;QAEN,6BAAK,SAAS,EAAE,yBAAyB,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7F,6BAAK,SAAS,EAAC,mBAAmB,IAAE,KAAK,CAAO;YAC/C,OAAO,IAAI,6BAAK,SAAS,EAAC,qBAAqB,IAAE,OAAO,CAAO,CAC5D,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB"}
@@ -0,0 +1,7 @@
1
+ export type TsCheckboxProps = {
2
+ caption?: string;
3
+ label: string;
4
+ checked?: boolean;
5
+ disabled?: boolean;
6
+ onChange: (value: boolean) => void;
7
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TsCheckbox.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsCheckbox.types.js","sourceRoot":"","sources":["../../../src/components/TsCheckbox/TsCheckbox.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { ArgsTable, Canvas, Meta, Story } from '@storybook/blocks';
3
+ import { TsCheckbox } from '../TsCheckbox';
4
+
5
+ <Meta title="Components/Checkbox" />
6
+
7
+ export const checkboxArgTypes = {
8
+ caption: {
9
+ control: 'text',
10
+ description: 'Caption of the checkbox.',
11
+ },
12
+ label: {
13
+ control: 'text',
14
+ description: 'Label of the checkbox.',
15
+ },
16
+ checked: {
17
+ control: 'boolean',
18
+ description: 'State of the checkbox.',
19
+ table: { defaultValue: { summary: 'false' } },
20
+ },
21
+ disabled: {
22
+ control: 'boolean',
23
+ description: 'Enable state of the checkbox.',
24
+ table: { defaultValue: { summary: 'false' } },
25
+ },
26
+ onChange: {
27
+ control: 'function',
28
+ description: 'The handler called when clicking on the checkbox.',
29
+ },
30
+ };
31
+
32
+ # Checkbox
33
+
34
+ Checkboxes are applied when users can select all, several, or none of the options from a given list.
35
+
36
+ ## Overview
37
+
38
+ <Canvas>
39
+ <Story
40
+ name="Overview"
41
+ args={{
42
+ label: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
43
+ caption:
44
+ 'Auctor nisl justo, sed posuere est dignissim nec. Integer ultricies, metus ac imperdiet ullamcorper, est justo viverra nisl, in posuere dui urna eget quam.',
45
+ checked: false,
46
+ disabled: false,
47
+ }}
48
+ argTypes={checkboxArgTypes}
49
+ >
50
+ {args => <TsCheckbox {...args}>{args.children}</TsCheckbox>}
51
+ </Story>
52
+ </Canvas>
53
+
54
+ ## Props
55
+
56
+ <ArgsTable story="Overview" of={TsCheckbox} />
@@ -0,0 +1,114 @@
1
+ .ts-dropdown-container {
2
+ position: relative;
3
+ width: 100%;
4
+ }
5
+ .ts-dropdown-input {
6
+ display: flex;
7
+ align-items: center;
8
+ width: 100%;
9
+ height: 32px;
10
+ padding-left: 10px;
11
+ border: 1px solid #949494;
12
+ cursor: pointer;
13
+ }
14
+ .ts-dropdown-input--disabled {
15
+ background: #fafafa;
16
+ cursor: not-allowed;
17
+ }
18
+ .ts-dropdown-input--placeholder {
19
+ flex: 1;
20
+ color: #7a7a7a;
21
+ font-weight: 400;
22
+ overflow: hidden;
23
+ text-overflow: ellipsis;
24
+ white-space: nowrap;
25
+ }
26
+ .ts-dropdown-input--value {
27
+ flex: 1;
28
+ font-weight: 600;
29
+ overflow: hidden;
30
+ text-overflow: ellipsis;
31
+ white-space: nowrap;
32
+ }
33
+ .ts-dropdown-input--chevron {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ width: 32px;
38
+ height: 32px;
39
+ }
40
+ .ts-dropdown-input.ts-dropdown-container--error {
41
+ border: 1px solid #e3262f;
42
+ }
43
+ .ts-dropdown-error {
44
+ display: flex;
45
+ margin-top: 4px;
46
+ color: #e3262f;
47
+ }
48
+ .ts-dropdown-error--icon {
49
+ margin-right: 4px;
50
+ }
51
+ .ts-dropdown-error--label {
52
+ font-size: 12px;
53
+ font-weight: 500;
54
+ }
55
+ /* ####### */
56
+ /* LABEL */
57
+ .ts-dropdown-label {
58
+ padding-bottom: 6px;
59
+ }
60
+ /* ###### */
61
+ /* MENU */
62
+ .ts-dropdown-menu-container {
63
+ position: absolute;
64
+ top: 60px;
65
+ display: flex;
66
+ flex-direction: column;
67
+ width: 100%;
68
+ min-width: 220px;
69
+ max-height: 250px;
70
+ padding: 12px;
71
+ box-shadow: 0px 8px 9px 0px #1010101a;
72
+ background: #ffffff;
73
+ overflow: hidden;
74
+ z-index: 10;
75
+ }
76
+ .ts-dropdown-search {
77
+ padding-bottom: 12px;
78
+ margin-bottom: 12px;
79
+ border-bottom: 1px solid #d9dde1;
80
+ }
81
+ .ts-dropdown-menu {
82
+ overflow: auto;
83
+ }
84
+ .ts-dropdown-menu-loader {
85
+ display: flex;
86
+ justify-content: center;
87
+ }
88
+ .ts-dropdown-menu-error-text {
89
+ display: flex;
90
+ justify-content: center;
91
+ color: #7a7a7a;
92
+ font-style: italic;
93
+ }
94
+ .ts-dropdown-menu-item {
95
+ display: flex;
96
+ align-items: center;
97
+ height: 36px;
98
+ padding: 0 12px;
99
+ cursor: pointer;
100
+ }
101
+ .ts-dropdown-menu-item:hover {
102
+ background: #e1e3f5;
103
+ color: #3643ba;
104
+ }
105
+
106
+ /* ######### */
107
+ /* GLOBALS */
108
+ * {
109
+ font-size: 14px;
110
+ outline: none;
111
+ box-sizing: border-box;
112
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans',
113
+ 'Helvetica Neue', sans-serif;
114
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import { TsDropdownProps } from './TsDropdown.types';
3
+ import './TsDropdown.css';
4
+ export declare const TsDropdown: <T>({ containerRef, error, label, options, placeholder, reloadOptionsOn, searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }: TsDropdownProps<T>) => React.JSX.Element;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TsDropdown = void 0;
4
+ const React = require("react");
5
+ const react_1 = require("react");
6
+ const TsIcon_1 = require("../../TsIcon/TsIcon");
7
+ const TsInput_1 = require("../../TsInput/TsInput/TsInput");
8
+ const use_click_outside_1 = require("../../../hooks/use-click-outside");
9
+ const TsLoader_1 = require("../../TsLoader/TsLoader");
10
+ require("./TsDropdown.css");
11
+ const TsDropdown = ({ containerRef, error, label, options, placeholder, reloadOptionsOn = [], searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }) => {
12
+ const [showDropdownMenu, setShowDropdownMenu] = (0, react_1.useState)(false);
13
+ const [searchValue, setSearchValue] = (0, react_1.useState)('');
14
+ const [items, setItems] = (0, react_1.useState)(options ?? []);
15
+ const [loading, setLoading] = (0, react_1.useState)(false);
16
+ const [isFetchError, setIsFetchError] = (0, react_1.useState)(false);
17
+ const dropdownRef = (0, use_click_outside_1.useClickOutside)(() => setShowDropdownMenu(false));
18
+ const dropdownMenuRef = (0, react_1.useRef)(null);
19
+ // ########
20
+ // Fetchers
21
+ const fetchOptions = () => {
22
+ if (!options && loadOptions) {
23
+ setLoading(true);
24
+ setIsFetchError(false);
25
+ loadOptions(searchValue)
26
+ .then(setItems)
27
+ .catch(() => setIsFetchError(true))
28
+ .finally(() => setLoading(false));
29
+ }
30
+ };
31
+ // ########
32
+ // Handlers
33
+ const handleSelectItem = (item) => {
34
+ setShowDropdownMenu(false);
35
+ onChange(item);
36
+ };
37
+ const handleShowDropdownMenu = () => !disabled && setShowDropdownMenu(true);
38
+ // ########
39
+ // Watchers
40
+ (0, react_1.useEffect)(() => {
41
+ if (!disabled)
42
+ fetchOptions();
43
+ }, [...reloadOptionsOn, disabled]);
44
+ (0, react_1.useEffect)(() => {
45
+ if (searchable && options) {
46
+ setItems(options.filter(option => getOptionLabel(option).toLowerCase().includes(searchValue.toLowerCase())));
47
+ }
48
+ if (searchable && !options && loadOptions) {
49
+ setLoading(true);
50
+ setIsFetchError(false);
51
+ const timeOutId = setTimeout(fetchOptions, 500);
52
+ return () => clearTimeout(timeOutId);
53
+ }
54
+ return () => { };
55
+ }, [searchValue]);
56
+ (0, react_1.useEffect)(() => {
57
+ if (searchable && !showDropdownMenu)
58
+ setSearchValue('');
59
+ if (showDropdownMenu && containerRef?.current && dropdownMenuRef.current) {
60
+ const dropdownMenuRect = dropdownMenuRef.current.getBoundingClientRect();
61
+ const containerRect = containerRef.current.getBoundingClientRect();
62
+ if (dropdownMenuRect.bottom > containerRect.bottom) {
63
+ dropdownMenuRef.current.style.bottom = '40px';
64
+ dropdownMenuRef.current.style.top = 'auto';
65
+ }
66
+ else {
67
+ dropdownMenuRef.current.style.top = '60px';
68
+ dropdownMenuRef.current.style.bottom = 'auto';
69
+ }
70
+ }
71
+ }, [showDropdownMenu]);
72
+ // #########
73
+ // Rendering
74
+ return (React.createElement("div", { className: "ts-dropdown-container", ref: dropdownRef },
75
+ React.createElement("div", { className: "ts-dropdown-input-container" },
76
+ label && React.createElement("div", { className: "ts-dropdown-label" }, label),
77
+ React.createElement("div", { className: `
78
+ ts-dropdown-input
79
+ ${disabled ? 'ts-dropdown-input--disabled' : ''}
80
+ ${error && error !== '' ? 'ts-dropdown-container--error' : ''}
81
+ `, onClick: handleShowDropdownMenu },
82
+ !value && placeholder && React.createElement("div", { className: "ts-dropdown-input--placeholder" }, placeholder),
83
+ value && React.createElement("div", { className: "ts-dropdown-input--value" }, getOptionLabel(value)),
84
+ React.createElement("div", { className: "ts-dropdown-input--chevron" },
85
+ React.createElement(TsIcon_1.TsIcon, { name: showDropdownMenu ? 'chevron-up' : 'chevron-down' })))),
86
+ error && error !== '' && (React.createElement("div", { className: "ts-dropdown-error" },
87
+ React.createElement("div", { className: "ts-dropdown-error--icon" },
88
+ React.createElement(TsIcon_1.TsIcon, { name: "alert-circle", size: "16" })),
89
+ React.createElement("div", { className: "ts-dropdown-error--label" }, error))),
90
+ !disabled && showDropdownMenu && (React.createElement("div", { className: "ts-dropdown-menu-container", ref: dropdownMenuRef },
91
+ searchable && (React.createElement("div", { className: "ts-dropdown-search" },
92
+ React.createElement(TsInput_1.TsInput, { icon: "search", placeholder: searchPlaceholder, value: searchValue, autoFocus: true, onChange: setSearchValue }))),
93
+ React.createElement("div", { className: "ts-dropdown-menu" },
94
+ loading && (React.createElement("div", { className: "ts-dropdown-menu-loader" },
95
+ React.createElement(TsLoader_1.TsLoader, { size: "sm" }))),
96
+ !loading && isFetchError && (React.createElement("div", { className: "ts-dropdown-menu-error-text" }, "An error occured, try again later.")),
97
+ !loading && !isFetchError && items.length === 0 && (React.createElement("div", { className: "ts-dropdown-menu-error-text" }, "No options found.")),
98
+ !loading &&
99
+ !isFetchError &&
100
+ items.length > 0 &&
101
+ items.map(item => (React.createElement("div", { key: getOptionValue(item), className: "ts-dropdown-menu-item", onClick: () => handleSelectItem(item) }, getOptionLabel(item)))))))));
102
+ };
103
+ exports.TsDropdown = TsDropdown;
104
+ //# sourceMappingURL=TsDropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsDropdown.js","sourceRoot":"","sources":["../../../../src/components/TsDropdowns/TsDropdown/TsDropdown.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ import * as React from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { TsDropdownProps } from './TsDropdown.types';
4
+ import { TsIcon } from '../../TsIcon/TsIcon';
5
+ import { TsInput } from '../../TsInput/TsInput/TsInput';
6
+ import { useClickOutside } from '../../../hooks/use-click-outside';
7
+ import { TsLoader } from '../../TsLoader/TsLoader';
8
+ import './TsDropdown.css';
9
+
10
+ export const TsDropdown = <T,>({
11
+ containerRef,
12
+ error,
13
+ label,
14
+ options,
15
+ placeholder,
16
+ reloadOptionsOn = [],
17
+ searchPlaceholder,
18
+ value,
19
+ disabled,
20
+ searchable,
21
+ getOptionLabel,
22
+ getOptionValue,
23
+ loadOptions,
24
+ onChange,
25
+ }: TsDropdownProps<T>) => {
26
+ const [showDropdownMenu, setShowDropdownMenu] = useState<boolean>(false);
27
+ const [searchValue, setSearchValue] = useState<string>('');
28
+ const [items, setItems] = useState<T[]>(options ?? []);
29
+ const [loading, setLoading] = useState<boolean>(false);
30
+ const [isFetchError, setIsFetchError] = useState<boolean>(false);
31
+ const dropdownRef = useClickOutside(() => setShowDropdownMenu(false));
32
+ const dropdownMenuRef = useRef<HTMLDivElement>(null);
33
+
34
+ // ########
35
+ // Fetchers
36
+ const fetchOptions = () => {
37
+ if (!options && loadOptions) {
38
+ setLoading(true);
39
+ setIsFetchError(false);
40
+ loadOptions(searchValue)
41
+ .then(setItems)
42
+ .catch(() => setIsFetchError(true))
43
+ .finally(() => setLoading(false));
44
+ }
45
+ };
46
+
47
+ // ########
48
+ // Handlers
49
+ const handleSelectItem = (item: T) => {
50
+ setShowDropdownMenu(false);
51
+ onChange(item);
52
+ };
53
+ const handleShowDropdownMenu = () => !disabled && setShowDropdownMenu(true);
54
+
55
+ // ########
56
+ // Watchers
57
+ useEffect(() => {
58
+ if (!disabled) fetchOptions();
59
+ }, [...reloadOptionsOn, disabled]);
60
+ useEffect(() => {
61
+ if (searchable && options) {
62
+ setItems(options.filter(option => getOptionLabel(option).toLowerCase().includes(searchValue.toLowerCase())));
63
+ }
64
+
65
+ if (searchable && !options && loadOptions) {
66
+ setLoading(true);
67
+ setIsFetchError(false);
68
+ const timeOutId = setTimeout(fetchOptions, 500);
69
+ return () => clearTimeout(timeOutId);
70
+ }
71
+
72
+ return () => {};
73
+ }, [searchValue]);
74
+ useEffect(() => {
75
+ if (searchable && !showDropdownMenu) setSearchValue('');
76
+
77
+ if (showDropdownMenu && containerRef?.current && dropdownMenuRef.current) {
78
+ const dropdownMenuRect = dropdownMenuRef.current.getBoundingClientRect();
79
+ const containerRect = containerRef.current.getBoundingClientRect();
80
+
81
+ if (dropdownMenuRect.bottom > containerRect.bottom) {
82
+ dropdownMenuRef.current.style.bottom = '40px';
83
+ dropdownMenuRef.current.style.top = 'auto';
84
+ } else {
85
+ dropdownMenuRef.current.style.top = '60px';
86
+ dropdownMenuRef.current.style.bottom = 'auto';
87
+ }
88
+ }
89
+ }, [showDropdownMenu]);
90
+
91
+ // #########
92
+ // Rendering
93
+ return (
94
+ <div className="ts-dropdown-container" ref={dropdownRef}>
95
+ <div className="ts-dropdown-input-container">
96
+ {label && <div className="ts-dropdown-label">{label}</div>}
97
+ <div
98
+ className={`
99
+ ts-dropdown-input
100
+ ${disabled ? 'ts-dropdown-input--disabled' : ''}
101
+ ${error && error !== '' ? 'ts-dropdown-container--error' : ''}
102
+ `}
103
+ onClick={handleShowDropdownMenu}
104
+ >
105
+ {!value && placeholder && <div className="ts-dropdown-input--placeholder">{placeholder}</div>}
106
+ {value && <div className="ts-dropdown-input--value">{getOptionLabel(value)}</div>}
107
+ <div className="ts-dropdown-input--chevron">
108
+ <TsIcon name={showDropdownMenu ? 'chevron-up' : 'chevron-down'} />
109
+ </div>
110
+ </div>
111
+ </div>
112
+
113
+ {error && error !== '' && (
114
+ <div className="ts-dropdown-error">
115
+ <div className="ts-dropdown-error--icon">
116
+ <TsIcon name="alert-circle" size="16" />
117
+ </div>
118
+ <div className="ts-dropdown-error--label">{error}</div>
119
+ </div>
120
+ )}
121
+
122
+ {!disabled && showDropdownMenu && (
123
+ <div className="ts-dropdown-menu-container" ref={dropdownMenuRef}>
124
+ {searchable && (
125
+ <div className="ts-dropdown-search">
126
+ <TsInput
127
+ icon="search"
128
+ placeholder={searchPlaceholder}
129
+ value={searchValue}
130
+ autoFocus
131
+ onChange={setSearchValue}
132
+ />
133
+ </div>
134
+ )}
135
+
136
+ <div className="ts-dropdown-menu">
137
+ {loading && (
138
+ <div className="ts-dropdown-menu-loader">
139
+ <TsLoader size="sm" />
140
+ </div>
141
+ )}
142
+ {!loading && isFetchError && (
143
+ <div className="ts-dropdown-menu-error-text">An error occured, try again later.</div>
144
+ )}
145
+ {!loading && !isFetchError && items.length === 0 && (
146
+ <div className="ts-dropdown-menu-error-text">No options found.</div>
147
+ )}
148
+ {!loading &&
149
+ !isFetchError &&
150
+ items.length > 0 &&
151
+ items.map(item => (
152
+ <div
153
+ key={getOptionValue(item)}
154
+ className="ts-dropdown-menu-item"
155
+ onClick={() => handleSelectItem(item)}
156
+ >
157
+ {getOptionLabel(item)}
158
+ </div>
159
+ ))}
160
+ </div>
161
+ </div>
162
+ )}
163
+ </div>
164
+ );
165
+ };
@@ -0,0 +1,17 @@
1
+ import { RefObject } from 'react';
2
+ export type TsDropdownProps<T> = {
3
+ containerRef?: RefObject<HTMLElement>;
4
+ error?: string;
5
+ label?: string;
6
+ options?: T[];
7
+ placeholder?: string;
8
+ reloadOptionsOn?: any[];
9
+ searchPlaceholder?: string;
10
+ value?: T;
11
+ disabled?: boolean;
12
+ searchable?: boolean;
13
+ getOptionLabel: (option: T) => string;
14
+ getOptionValue: (option: T) => string;
15
+ loadOptions?: (search?: string) => Promise<T[]>;
16
+ onChange: (value?: T) => void;
17
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TsDropdown.types.js.map