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

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 (350) 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.tsx +1 -0
@@ -0,0 +1,121 @@
1
+ .ts-button {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ border: none;
6
+ font-size: 14px;
7
+ font-weight: 600;
8
+ line-height: 16px;
9
+ cursor: pointer;
10
+ transition: all ease 0.3s;
11
+ }
12
+ .ts-button > div {
13
+ margin-right: 8px;
14
+ }
15
+ .ts-button > div:last-child {
16
+ margin-right: 0px;
17
+ }
18
+ button:disabled {
19
+ cursor: not-allowed;
20
+ }
21
+ /* ####### */
22
+ /* BLOCK */
23
+ .ts-button--block {
24
+ width: 100%;
25
+ }
26
+ /* ####### */
27
+ /* SIZES */
28
+ .ts-button--md {
29
+ height: 32px;
30
+ padding: 0 14px;
31
+ }
32
+ .ts-button--md.ts-button--icon-only {
33
+ width: 32px;
34
+ padding: 0;
35
+ }
36
+ .ts-button--lg {
37
+ height: 40px;
38
+ padding: 0 16px;
39
+ }
40
+ .ts-button--lg.ts-button--icon-only {
41
+ width: 40px;
42
+ padding: 0;
43
+ }
44
+ /* ########## */
45
+ /* VARIANTS */
46
+ .ts-button--primary:not(:disabled) {
47
+ background: #3643ba;
48
+ color: #ffffff;
49
+ }
50
+ .ts-button--primary:not(:disabled):hover {
51
+ background: #2e3998;
52
+ }
53
+ .ts-button--primary:not(:disabled):active {
54
+ background: #272f76;
55
+ }
56
+ .ts-button--primary:disabled {
57
+ background: #3643ba61;
58
+ color: #ffffff;
59
+ }
60
+ .ts-button--secondary:not(:disabled) {
61
+ background: #ebecf7;
62
+ color: #3643ba;
63
+ }
64
+ .ts-button--secondary:not(:disabled):hover {
65
+ background: #e3e3f4;
66
+ }
67
+ .ts-button--secondary:not(:disabled):active {
68
+ background: #d7daf1;
69
+ }
70
+ .ts-button--secondary:disabled {
71
+ background: #3643ba0d;
72
+ color: #3643ba80;
73
+ }
74
+ .ts-button--success:not(:disabled) {
75
+ background: #02be8a;
76
+ color: #ffffff;
77
+ }
78
+ .ts-button--success:not(:disabled):hover {
79
+ background: #029e73;
80
+ }
81
+ .ts-button--success:not(:disabled):active {
82
+ background: #017f5c;
83
+ }
84
+ .ts-button--success:disabled {
85
+ background: #02be8a61;
86
+ color: #ffffff;
87
+ }
88
+ .ts-button--ghost:not(:disabled) {
89
+ background: #ffffff;
90
+ color: #3643ba;
91
+ }
92
+ .ts-button--ghost:not(:disabled):hover {
93
+ background: #ebecf7;
94
+ }
95
+ .ts-button--ghost:not(:disabled):active {
96
+ background: #e3e3f4;
97
+ }
98
+ .ts-button--ghost:disabled {
99
+ background: #ffffff61;
100
+ color: #1d1d1b61;
101
+ }
102
+ .ts-button--shadow {
103
+ box-shadow: 0px 12px 12px 0px #00537d1a;
104
+ background: #ffffff;
105
+ color: #4e5d6b;
106
+ }
107
+ /* ######### */
108
+ /* ROUNDED */
109
+ .ts-button--rounded {
110
+ border-radius: 9999px;
111
+ }
112
+
113
+ /* ######### */
114
+ /* GLOBALS */
115
+ * {
116
+ font-size: 14px;
117
+ outline: none;
118
+ box-sizing: border-box;
119
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans',
120
+ 'Helvetica Neue', sans-serif;
121
+ }
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ import { PropsWithChildren } from 'react';
3
+ import { TsButtonProps } from './TsButton.types';
4
+ import './TsButton.css';
5
+ export declare const TsButton: ({ children, icon, iconDirection, size, variant, block, rounded, ...props }: PropsWithChildren<TsButtonProps>) => React.JSX.Element;
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { TsIcon } from '../TsIcon/TsIcon';
3
+ import './TsButton.css';
4
+ export const TsButton = ({ children, icon, iconDirection = 'left', size = 'md', variant = 'primary', block, rounded, ...props }) => {
5
+ // #########
6
+ // Rendering
7
+ return (React.createElement("button", { className: `
8
+ ts-button ts-button--${size} ts-button--${variant}
9
+ ${block ? 'ts-button--block' : ''}
10
+ ${rounded ? 'ts-button--rounded' : ''}
11
+ ${icon && !children ? 'ts-button--icon-only' : ''}
12
+ `, ...props },
13
+ icon && iconDirection === 'left' && React.createElement(TsIcon, { name: icon, size: "16" }),
14
+ children && React.createElement("div", null, children),
15
+ icon && iconDirection === 'right' && React.createElement(TsIcon, { name: icon, size: "16" })));
16
+ };
17
+ //# sourceMappingURL=TsButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsButton.js","sourceRoot":"","sources":["../../../src/components/TsButton/TsButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,QAAQ,EACR,IAAI,EACJ,aAAa,GAAG,MAAM,EACtB,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,SAAS,EACnB,KAAK,EACL,OAAO,EACP,GAAG,KAAK,EACyB,EAAE,EAAE;IACrC,YAAY;IACZ,YAAY;IACZ,OAAO,CACL,gCACE,SAAS,EAAE;+BACc,IAAI,eAAe,OAAO;UAC/C,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;UAC/B,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;OAClD,KACG,KAAK;QAER,IAAI,IAAI,aAAa,KAAK,MAAM,IAAI,oBAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,IAAI,GAAG;QACpE,QAAQ,IAAI,iCAAM,QAAQ,CAAO;QACjC,IAAI,IAAI,aAAa,KAAK,OAAO,IAAI,oBAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,IAAI,GAAG,CAC/D,CACV,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ export type TsButtonProps = {
3
+ icon?: string;
4
+ iconDirection?: 'left' | 'right';
5
+ size?: 'md' | 'lg';
6
+ variant?: 'primary' | 'secondary' | 'success' | 'ghost' | 'shadow';
7
+ block?: boolean;
8
+ rounded?: boolean;
9
+ } & ButtonHTMLAttributes<HTMLButtonElement>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TsButton.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsButton.types.js","sourceRoot":"","sources":["../../../src/components/TsButton/TsButton.types.ts"],"names":[],"mappings":""}
@@ -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,17 @@
1
+ import * as React from 'react';
2
+ import { TsIcon } from '../TsIcon/TsIcon';
3
+ import './TsCheckbox.css';
4
+ export const TsCheckbox = ({ caption, label, checked, disabled, onChange }) => {
5
+ // ########
6
+ // Handlers
7
+ const handleChange = () => !disabled && onChange(!checked);
8
+ // #########
9
+ // Rendering
10
+ return (React.createElement("div", { className: `ts-checkbox ${disabled ? 'ts-checkbox--disabled' : ''}`, onClick: handleChange },
11
+ React.createElement("div", { className: `ts-checkbox-box ${checked ? 'ts-checkbox-box--checked' : ''}` },
12
+ React.createElement(TsIcon, { name: checked ? 'check-square-filled' : 'square', size: "24" })),
13
+ React.createElement("div", { className: `ts-checkbox-container ${caption ? 'ts-checkbox-container--with-caption' : ''}` },
14
+ React.createElement("div", { className: "ts-checkbox-label" }, label),
15
+ caption && React.createElement("div", { className: "ts-checkbox-caption" }, caption))));
16
+ };
17
+ //# sourceMappingURL=TsCheckbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsCheckbox.js","sourceRoot":"","sources":["../../../src/components/TsCheckbox/TsCheckbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,kBAAkB,CAAC;AAE1B,MAAM,CAAC,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,MAAM,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"}
@@ -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,2 @@
1
+ export {};
2
+ //# 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,100 @@
1
+ import * as React from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { TsIcon } from '../../TsIcon/TsIcon';
4
+ import { TsInput } from '../../TsInput/TsInput/TsInput';
5
+ import { useClickOutside } from '../../../hooks/use-click-outside';
6
+ import { TsLoader } from '../../TsLoader/TsLoader';
7
+ import './TsDropdown.css';
8
+ export const TsDropdown = ({ containerRef, error, label, options, placeholder, reloadOptionsOn = [], searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }) => {
9
+ const [showDropdownMenu, setShowDropdownMenu] = useState(false);
10
+ const [searchValue, setSearchValue] = useState('');
11
+ const [items, setItems] = useState(options ?? []);
12
+ const [loading, setLoading] = useState(false);
13
+ const [isFetchError, setIsFetchError] = useState(false);
14
+ const dropdownRef = useClickOutside(() => setShowDropdownMenu(false));
15
+ const dropdownMenuRef = useRef(null);
16
+ // ########
17
+ // Fetchers
18
+ const fetchOptions = () => {
19
+ if (!options && loadOptions) {
20
+ setLoading(true);
21
+ setIsFetchError(false);
22
+ loadOptions(searchValue)
23
+ .then(setItems)
24
+ .catch(() => setIsFetchError(true))
25
+ .finally(() => setLoading(false));
26
+ }
27
+ };
28
+ // ########
29
+ // Handlers
30
+ const handleSelectItem = (item) => {
31
+ setShowDropdownMenu(false);
32
+ onChange(item);
33
+ };
34
+ const handleShowDropdownMenu = () => !disabled && setShowDropdownMenu(true);
35
+ // ########
36
+ // Watchers
37
+ useEffect(() => {
38
+ if (!disabled)
39
+ fetchOptions();
40
+ }, [...reloadOptionsOn, disabled]);
41
+ useEffect(() => {
42
+ if (searchable && options) {
43
+ setItems(options.filter(option => getOptionLabel(option).toLowerCase().includes(searchValue.toLowerCase())));
44
+ }
45
+ if (searchable && !options && loadOptions) {
46
+ setLoading(true);
47
+ setIsFetchError(false);
48
+ const timeOutId = setTimeout(fetchOptions, 500);
49
+ return () => clearTimeout(timeOutId);
50
+ }
51
+ return () => { };
52
+ }, [searchValue]);
53
+ useEffect(() => {
54
+ if (searchable && !showDropdownMenu)
55
+ setSearchValue('');
56
+ if (showDropdownMenu && containerRef?.current && dropdownMenuRef.current) {
57
+ const dropdownMenuRect = dropdownMenuRef.current.getBoundingClientRect();
58
+ const containerRect = containerRef.current.getBoundingClientRect();
59
+ if (dropdownMenuRect.bottom > containerRect.bottom) {
60
+ dropdownMenuRef.current.style.bottom = '40px';
61
+ dropdownMenuRef.current.style.top = 'auto';
62
+ }
63
+ else {
64
+ dropdownMenuRef.current.style.top = '60px';
65
+ dropdownMenuRef.current.style.bottom = 'auto';
66
+ }
67
+ }
68
+ }, [showDropdownMenu]);
69
+ // #########
70
+ // Rendering
71
+ return (React.createElement("div", { className: "ts-dropdown-container", ref: dropdownRef },
72
+ React.createElement("div", { className: "ts-dropdown-input-container" },
73
+ label && React.createElement("div", { className: "ts-dropdown-label" }, label),
74
+ React.createElement("div", { className: `
75
+ ts-dropdown-input
76
+ ${disabled ? 'ts-dropdown-input--disabled' : ''}
77
+ ${error && error !== '' ? 'ts-dropdown-container--error' : ''}
78
+ `, onClick: handleShowDropdownMenu },
79
+ !value && placeholder && React.createElement("div", { className: "ts-dropdown-input--placeholder" }, placeholder),
80
+ value && React.createElement("div", { className: "ts-dropdown-input--value" }, getOptionLabel(value)),
81
+ React.createElement("div", { className: "ts-dropdown-input--chevron" },
82
+ React.createElement(TsIcon, { name: showDropdownMenu ? 'chevron-up' : 'chevron-down' })))),
83
+ error && error !== '' && (React.createElement("div", { className: "ts-dropdown-error" },
84
+ React.createElement("div", { className: "ts-dropdown-error--icon" },
85
+ React.createElement(TsIcon, { name: "alert-circle", size: "16" })),
86
+ React.createElement("div", { className: "ts-dropdown-error--label" }, error))),
87
+ !disabled && showDropdownMenu && (React.createElement("div", { className: "ts-dropdown-menu-container", ref: dropdownMenuRef },
88
+ searchable && (React.createElement("div", { className: "ts-dropdown-search" },
89
+ React.createElement(TsInput, { icon: "search", placeholder: searchPlaceholder, value: searchValue, autoFocus: true, onChange: setSearchValue }))),
90
+ React.createElement("div", { className: "ts-dropdown-menu" },
91
+ loading && (React.createElement("div", { className: "ts-dropdown-menu-loader" },
92
+ React.createElement(TsLoader, { size: "sm" }))),
93
+ !loading && isFetchError && (React.createElement("div", { className: "ts-dropdown-menu-error-text" }, "An error occured, try again later.")),
94
+ !loading && !isFetchError && items.length === 0 && (React.createElement("div", { className: "ts-dropdown-menu-error-text" }, "No options found.")),
95
+ !loading &&
96
+ !isFetchError &&
97
+ items.length > 0 &&
98
+ items.map(item => (React.createElement("div", { key: getOptionValue(item), className: "ts-dropdown-menu-item", onClick: () => handleSelectItem(item) }, getOptionLabel(item)))))))));
99
+ };
100
+ //# 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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"}