@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 @@
1
+ {"version":3,"file":"TsDropdown.types.js","sourceRoot":"","sources":["../../../../src/components/TsDropdowns/TsDropdown/TsDropdown.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { RefObject } from 'react';
2
+
3
+ export type TsDropdownProps<T> = {
4
+ containerRef?: RefObject<HTMLElement>;
5
+ error?: string;
6
+ label?: string;
7
+ options?: T[];
8
+ placeholder?: string;
9
+ reloadOptionsOn?: any[];
10
+ searchPlaceholder?: string;
11
+ value?: T;
12
+ disabled?: boolean;
13
+ searchable?: boolean;
14
+ getOptionLabel: (option: T) => string;
15
+ getOptionValue: (option: T) => string;
16
+ loadOptions?: (search?: string) => Promise<T[]>;
17
+ onChange: (value?: T) => void;
18
+ };
@@ -0,0 +1,85 @@
1
+ import React from 'react';
2
+ import { ArgsTable, Canvas, Meta, Story } from '@storybook/blocks';
3
+ import { TsDropdown } from '../TsDropdown';
4
+ import { fruits } from './fruits';
5
+
6
+ <Meta title="Components/Dropdowns/Dropdown" />
7
+
8
+ export const dropdownArgTypes = {
9
+ error: {
10
+ control: 'text',
11
+ description: 'Error of the dropdown.',
12
+ },
13
+ label: {
14
+ control: 'text',
15
+ description: 'Label of the dropdown.',
16
+ },
17
+ placeholder: {
18
+ control: 'text',
19
+ description: 'Placeholder of the dropdown.',
20
+ },
21
+ searchPlaceholder: {
22
+ control: 'text',
23
+ description: 'Placeholder of the option search (only for searchable dropdowns).',
24
+ },
25
+ searchable: {
26
+ control: 'boolean',
27
+ description: 'Enable search on dropdown items.',
28
+ table: { defaultValue: { summary: 'false' } },
29
+ },
30
+ disabled: {
31
+ control: 'boolean',
32
+ description: 'Enable state of the dropdown.',
33
+ table: { defaultValue: { summary: 'false' } },
34
+ },
35
+ getOptionLabel: {
36
+ control: 'function',
37
+ description: 'The handler called to get the option label',
38
+ },
39
+ getOptionValue: {
40
+ control: 'function',
41
+ description: 'The handler called to get the option value.',
42
+ },
43
+ loadOptions: {
44
+ control: 'function',
45
+ description: 'The handler called to fetch all options in async (not available on playground).',
46
+ },
47
+ onChange: {
48
+ control: 'function',
49
+ description: 'The handler called when clicking on the dropdown option.',
50
+ },
51
+ };
52
+
53
+ # Dropdown
54
+
55
+ Dropdowns show a list of options that can be used to select, filter or sort content.
56
+
57
+ ## Overview
58
+
59
+ <Canvas>
60
+ <Story
61
+ name="Overview"
62
+ args={{
63
+ error: '',
64
+ label: 'Label',
65
+ options: fruits,
66
+ searchPlaceholder: '',
67
+ placeholder: 'Select an item',
68
+ disabled: false,
69
+ searchable: false,
70
+ getOptionLabel: function ol(fruit) {
71
+ return fruit.name;
72
+ },
73
+ getOptionValue: function ov(fruit) {
74
+ return fruit.id;
75
+ },
76
+ }}
77
+ argTypes={dropdownArgTypes}
78
+ >
79
+ {args => <TsDropdown {...args}>{args.children}</TsDropdown>}
80
+ </Story>
81
+ </Canvas>
82
+
83
+ ## Props
84
+
85
+ <ArgsTable story="Overview" of={TsDropdown} />
@@ -0,0 +1,4 @@
1
+ export declare const fruits: {
2
+ name: string;
3
+ id: number;
4
+ }[];
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fruits = void 0;
4
+ exports.fruits = [
5
+ { name: 'Persimmon', id: 52 },
6
+ { name: 'Strawberry', id: 3 },
7
+ { name: 'Banana', id: 1 },
8
+ { name: 'Tomato', id: 5 },
9
+ { name: 'Pear', id: 4 },
10
+ { name: 'Durian', id: 60 },
11
+ { name: 'Blackberry', id: 64 },
12
+ { name: 'Lingonberry', id: 65 },
13
+ { name: 'Kiwi', id: 66 },
14
+ { name: 'Lychee', id: 67 },
15
+ { name: 'Pineapple', id: 10 },
16
+ { name: 'Fig', id: 68 },
17
+ { name: 'Gooseberry', id: 69 },
18
+ { name: 'Passionfruit', id: 70 },
19
+ { name: 'Plum', id: 71 },
20
+ { name: 'Orange', id: 2 },
21
+ { name: 'GreenApple', id: 72 },
22
+ { name: 'Raspberry', id: 23 },
23
+ { name: 'Watermelon', id: 25 },
24
+ { name: 'Lemon', id: 26 },
25
+ { name: 'Mango', id: 27 },
26
+ { name: 'Blueberry', id: 33 },
27
+ { name: 'Apple', id: 6 },
28
+ { name: 'Guava', id: 37 },
29
+ { name: 'Apricot', id: 35 },
30
+ { name: 'Papaya', id: 42 },
31
+ { name: 'Melon', id: 41 },
32
+ { name: 'Tangerine', id: 77 },
33
+ { name: 'Pitahaya', id: 78 },
34
+ { name: 'Lime', id: 44 },
35
+ { name: 'Pomegranate', id: 79 },
36
+ { name: 'Dragonfruit', id: 80 },
37
+ { name: 'Grape', id: 81 },
38
+ { name: 'Morus', id: 82 },
39
+ { name: 'Feijoa', id: 76 },
40
+ { name: 'Avocado', id: 84 },
41
+ { name: 'Kiwifruit', id: 85 },
42
+ { name: 'Cranberry', id: 87 },
43
+ { name: 'Cherry', id: 9 },
44
+ { name: 'Peach', id: 86 },
45
+ { name: 'Jackfruit', id: 94 },
46
+ { name: 'Horned Melon', id: 95 },
47
+ { name: 'Hazelnut', id: 96 },
48
+ { name: 'Pomelo', id: 98 },
49
+ { name: 'Mangosteen', id: 99 },
50
+ ];
51
+ //# sourceMappingURL=fruits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fruits.js","sourceRoot":"","sources":["../../../../../src/components/TsDropdowns/TsDropdown/__stories__/fruits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export const fruits = [
2
+ { name: 'Persimmon', id: 52 },
3
+ { name: 'Strawberry', id: 3 },
4
+ { name: 'Banana', id: 1 },
5
+ { name: 'Tomato', id: 5 },
6
+ { name: 'Pear', id: 4 },
7
+ { name: 'Durian', id: 60 },
8
+ { name: 'Blackberry', id: 64 },
9
+ { name: 'Lingonberry', id: 65 },
10
+ { name: 'Kiwi', id: 66 },
11
+ { name: 'Lychee', id: 67 },
12
+ { name: 'Pineapple', id: 10 },
13
+ { name: 'Fig', id: 68 },
14
+ { name: 'Gooseberry', id: 69 },
15
+ { name: 'Passionfruit', id: 70 },
16
+ { name: 'Plum', id: 71 },
17
+ { name: 'Orange', id: 2 },
18
+ { name: 'GreenApple', id: 72 },
19
+ { name: 'Raspberry', id: 23 },
20
+ { name: 'Watermelon', id: 25 },
21
+ { name: 'Lemon', id: 26 },
22
+ { name: 'Mango', id: 27 },
23
+ { name: 'Blueberry', id: 33 },
24
+ { name: 'Apple', id: 6 },
25
+ { name: 'Guava', id: 37 },
26
+ { name: 'Apricot', id: 35 },
27
+ { name: 'Papaya', id: 42 },
28
+ { name: 'Melon', id: 41 },
29
+ { name: 'Tangerine', id: 77 },
30
+ { name: 'Pitahaya', id: 78 },
31
+ { name: 'Lime', id: 44 },
32
+ { name: 'Pomegranate', id: 79 },
33
+ { name: 'Dragonfruit', id: 80 },
34
+ { name: 'Grape', id: 81 },
35
+ { name: 'Morus', id: 82 },
36
+ { name: 'Feijoa', id: 76 },
37
+ { name: 'Avocado', id: 84 },
38
+ { name: 'Kiwifruit', id: 85 },
39
+ { name: 'Cranberry', id: 87 },
40
+ { name: 'Cherry', id: 9 },
41
+ { name: 'Peach', id: 86 },
42
+ { name: 'Jackfruit', id: 94 },
43
+ { name: 'Horned Melon', id: 95 },
44
+ { name: 'Hazelnut', id: 96 },
45
+ { name: 'Pomelo', id: 98 },
46
+ { name: 'Mangosteen', id: 99 },
47
+ ];
@@ -0,0 +1,83 @@
1
+ .ts-dropdown-filter-container {
2
+ position: relative;
3
+ }
4
+ .ts-dropdown-filter-input {
5
+ display: flex;
6
+ height: 32px;
7
+ padding-left: 16px;
8
+ padding-right: 12px;
9
+ background: #e1e3f5;
10
+ color: #3643ba;
11
+ cursor: pointer;
12
+ }
13
+ .ts-dropdown-filter-input:hover {
14
+ background: #d7daf1;
15
+ }
16
+ .ts-dropdown-filter-label {
17
+ display: flex;
18
+ align-items: center;
19
+ height: 32px;
20
+ margin-right: 2px;
21
+ }
22
+ .ts-dropdown-filter-input--chevron {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ height: 32px;
27
+ }
28
+ .ts-dropdown-filter-menu-container {
29
+ position: absolute;
30
+ top: calc(100% + 8px);
31
+ display: flex;
32
+ flex-direction: column;
33
+ width: 320px;
34
+ max-height: 200px;
35
+ padding: 12px;
36
+ box-shadow: 0px 8px 9px 0px #1010101a;
37
+ background: #ffffff;
38
+ overflow: hidden;
39
+ z-index: 10;
40
+ }
41
+ .ts-dropdown-filter-search {
42
+ padding-bottom: 12px;
43
+ border-bottom: 1px solid #d9dde1;
44
+ }
45
+ .ts-dropdown-filter-menu-loader {
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ padding-top: 12px;
50
+ }
51
+ .ts-dropdown-filter-menu-error-text {
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ padding-top: 12px;
56
+ color: #687787;
57
+ font-style: italic;
58
+ }
59
+ .ts-dropdown-filter-menu {
60
+ padding-top: 12px;
61
+ overflow: auto;
62
+ }
63
+ .ts-dropdown-filter-menu-item {
64
+ display: flex;
65
+ align-items: center;
66
+ height: 32px;
67
+ padding: 0 12px;
68
+ cursor: pointer;
69
+ }
70
+ .ts-dropdown-filter-menu-item:hover {
71
+ background: #e1e3f5;
72
+ color: #3643ba;
73
+ }
74
+
75
+ /* ######### */
76
+ /* GLOBALS */
77
+ * {
78
+ font-size: 14px;
79
+ outline: none;
80
+ box-sizing: border-box;
81
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans',
82
+ 'Helvetica Neue', sans-serif;
83
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import { TsDropdownFilterProps } from './TsDropdownFilter.types';
3
+ import './TsDropdownFilter.css';
4
+ export declare const TsDropdownFilter: <T>({ label, searchPlaceholder, loadOptions, getOptionLabel, getOptionValue, onChange, }: TsDropdownFilterProps<T>) => React.JSX.Element;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TsDropdownFilter = void 0;
4
+ const React = require("react");
5
+ const react_1 = require("react");
6
+ const use_click_outside_1 = require("../../../hooks/use-click-outside");
7
+ const string_utils_1 = require("../../../utils/string.utils");
8
+ const TsIcon_1 = require("../../TsIcon/TsIcon");
9
+ const TsInput_1 = require("../../TsInput/TsInput/TsInput");
10
+ const TsLoader_1 = require("../../TsLoader/TsLoader");
11
+ require("./TsDropdownFilter.css");
12
+ const TsDropdownFilter = ({ label, searchPlaceholder, loadOptions, getOptionLabel, getOptionValue, onChange, }) => {
13
+ const [searchValue, setSearchValue] = (0, react_1.useState)('');
14
+ const [showDropdown, setShowDropdown] = (0, react_1.useState)(false);
15
+ const [items, setItems] = (0, react_1.useState)([]);
16
+ const [loading, setLoading] = (0, react_1.useState)(true);
17
+ const ref = (0, use_click_outside_1.useClickOutside)(() => setShowDropdown(false));
18
+ // ########
19
+ // Fetchers
20
+ const fetchAllItems = () => {
21
+ return loadOptions(searchValue)
22
+ .then(setItems)
23
+ .catch(() => { }); // TODO: Manage fetch ERRORS (Show an error message : 'An error occured, please retry later' or something else)
24
+ };
25
+ // ########
26
+ // Handlers
27
+ const handleSelectItem = (value) => {
28
+ onChange(value);
29
+ setShowDropdown(false);
30
+ };
31
+ // ########
32
+ // Watchers
33
+ (0, react_1.useEffect)(() => {
34
+ if (!showDropdown)
35
+ setSearchValue('');
36
+ }, [showDropdown]);
37
+ (0, react_1.useEffect)(() => {
38
+ setLoading(true);
39
+ if (!searchValue) {
40
+ fetchAllItems().finally(() => setLoading(false));
41
+ }
42
+ else {
43
+ const timeOutId = setTimeout(() => {
44
+ fetchAllItems().finally(() => setLoading(false));
45
+ }, 500);
46
+ return () => clearTimeout(timeOutId);
47
+ }
48
+ return;
49
+ }, [searchValue]);
50
+ // #########
51
+ // Rendering
52
+ return (React.createElement("div", { className: "ts-dropdown-filter-container", ref: ref },
53
+ React.createElement("div", { className: "ts-dropdown-filter-input", onClick: () => setShowDropdown(!showDropdown) },
54
+ React.createElement("div", { className: "ts-dropdown-filter-label" }, label),
55
+ React.createElement("div", { className: "ts-dropdown-filter-input--chevron" },
56
+ React.createElement(TsIcon_1.TsIcon, { name: showDropdown ? 'chevron-up' : 'chevron-down' }))),
57
+ showDropdown && (React.createElement("div", { className: "ts-dropdown-filter-menu-container" },
58
+ React.createElement("div", { className: "ts-dropdown-filter-search" },
59
+ React.createElement(TsInput_1.TsInput, { icon: "search", placeholder: searchPlaceholder, value: searchValue, autoFocus: true, onChange: setSearchValue })),
60
+ loading && (React.createElement("div", { className: "ts-dropdown-filter-menu-loader" },
61
+ React.createElement(TsLoader_1.TsLoader, { size: "sm" }))),
62
+ !loading && items.length === 0 && React.createElement("div", { className: "ts-dropdown-filter-menu-error-text" }, "Nothing found."),
63
+ !loading && items.length > 0 && (React.createElement("div", { className: "ts-dropdown-filter-menu" }, items.map(item => (React.createElement("div", { key: getOptionValue(item), className: "ts-dropdown-filter-menu-item", onClick: () => handleSelectItem(item) }, (0, string_utils_1.capitalize)(getOptionLabel(item)))))))))));
64
+ };
65
+ exports.TsDropdownFilter = TsDropdownFilter;
66
+ //# sourceMappingURL=TsDropdownFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsDropdownFilter.js","sourceRoot":"","sources":["../../../../src/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import * as React from 'react';
2
+ import { useEffect, useState } from 'react';
3
+ import { useClickOutside } from '../../../hooks/use-click-outside';
4
+ import { capitalize } from '../../../utils/string.utils';
5
+ import { TsIcon } from '../../TsIcon/TsIcon';
6
+ import { TsInput } from '../../TsInput/TsInput/TsInput';
7
+ import { TsLoader } from '../../TsLoader/TsLoader';
8
+ import { TsDropdownFilterProps } from './TsDropdownFilter.types';
9
+ import './TsDropdownFilter.css';
10
+
11
+ export const TsDropdownFilter = <T,>({
12
+ label,
13
+ searchPlaceholder,
14
+ loadOptions,
15
+ getOptionLabel,
16
+ getOptionValue,
17
+ onChange,
18
+ }: TsDropdownFilterProps<T>) => {
19
+ const [searchValue, setSearchValue] = useState<string>('');
20
+ const [showDropdown, setShowDropdown] = useState<boolean>(false);
21
+ const [items, setItems] = useState<T[]>([]);
22
+ const [loading, setLoading] = useState<boolean>(true);
23
+ const ref = useClickOutside(() => setShowDropdown(false));
24
+
25
+ // ########
26
+ // Fetchers
27
+ const fetchAllItems = () => {
28
+ return loadOptions(searchValue)
29
+ .then(setItems)
30
+ .catch(() => {}); // TODO: Manage fetch ERRORS (Show an error message : 'An error occured, please retry later' or something else)
31
+ };
32
+
33
+ // ########
34
+ // Handlers
35
+ const handleSelectItem = (value: T) => {
36
+ onChange(value);
37
+ setShowDropdown(false);
38
+ };
39
+
40
+ // ########
41
+ // Watchers
42
+ useEffect(() => {
43
+ if (!showDropdown) setSearchValue('');
44
+ }, [showDropdown]);
45
+ useEffect(() => {
46
+ setLoading(true);
47
+
48
+ if (!searchValue) {
49
+ fetchAllItems().finally(() => setLoading(false));
50
+ } else {
51
+ const timeOutId = setTimeout(() => {
52
+ fetchAllItems().finally(() => setLoading(false));
53
+ }, 500);
54
+ return () => clearTimeout(timeOutId);
55
+ }
56
+ return;
57
+ }, [searchValue]);
58
+
59
+ // #########
60
+ // Rendering
61
+ return (
62
+ <div className="ts-dropdown-filter-container" ref={ref}>
63
+ <div className="ts-dropdown-filter-input" onClick={() => setShowDropdown(!showDropdown)}>
64
+ <div className="ts-dropdown-filter-label">{label}</div>
65
+ <div className="ts-dropdown-filter-input--chevron">
66
+ <TsIcon name={showDropdown ? 'chevron-up' : 'chevron-down'} />
67
+ </div>
68
+ </div>
69
+
70
+ {showDropdown && (
71
+ <div className="ts-dropdown-filter-menu-container">
72
+ <div className="ts-dropdown-filter-search">
73
+ <TsInput
74
+ icon="search"
75
+ placeholder={searchPlaceholder}
76
+ value={searchValue}
77
+ autoFocus
78
+ onChange={setSearchValue}
79
+ />
80
+ </div>
81
+
82
+ {loading && (
83
+ <div className="ts-dropdown-filter-menu-loader">
84
+ <TsLoader size="sm" />
85
+ </div>
86
+ )}
87
+ {!loading && items.length === 0 && <div className="ts-dropdown-filter-menu-error-text">Nothing found.</div>}
88
+ {!loading && items.length > 0 && (
89
+ <div className="ts-dropdown-filter-menu">
90
+ {items.map(item => (
91
+ <div
92
+ key={getOptionValue(item)}
93
+ className="ts-dropdown-filter-menu-item"
94
+ onClick={() => handleSelectItem(item)}
95
+ >
96
+ {capitalize(getOptionLabel(item))}
97
+ </div>
98
+ ))}
99
+ </div>
100
+ )}
101
+ </div>
102
+ )}
103
+ </div>
104
+ );
105
+ };
@@ -0,0 +1,8 @@
1
+ export type TsDropdownFilterProps<T> = {
2
+ label: string;
3
+ searchPlaceholder?: string;
4
+ loadOptions: (query?: string) => Promise<T[]>;
5
+ getOptionLabel: (item: T) => string;
6
+ getOptionValue: (item: T) => string;
7
+ onChange: (item: T) => void;
8
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TsDropdownFilter.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsDropdownFilter.types.js","sourceRoot":"","sources":["../../../../src/components/TsDropdowns/TsDropdownFilter/TsDropdownFilter.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export type TsDropdownFilterProps<T> = {
2
+ label: string;
3
+ searchPlaceholder?: string;
4
+ loadOptions: (query?: string) => Promise<T[]>;
5
+ getOptionLabel: (item: T) => string;
6
+ getOptionValue: (item: T) => string;
7
+ onChange: (item: T) => void;
8
+ };
@@ -0,0 +1,69 @@
1
+ import React from 'react';
2
+ import { ArgsTable, Canvas, Meta, Story } from '@storybook/blocks';
3
+ import { TsDropdownFilter } from '../TsDropdownFilter';
4
+ import { fruits } from './fruits';
5
+
6
+ <Meta title="Components/Dropdowns/Dropdown filter" />
7
+
8
+ export const dropdownArgTypes = {
9
+ label: {
10
+ control: 'text',
11
+ description: 'Label of the dropdown.',
12
+ },
13
+ searchPlaceholder: {
14
+ control: 'text',
15
+ description: 'Placeholder of the option search (only for searchable dropdowns).',
16
+ },
17
+ getOptionLabel: {
18
+ control: 'function',
19
+ description: 'The handler called to get the option label',
20
+ },
21
+ getOptionValue: {
22
+ control: 'function',
23
+ description: 'The handler called to get the option value.',
24
+ },
25
+ loadOptions: {
26
+ control: 'function',
27
+ description: 'The handler called to fetch all options in async (not available on playground).',
28
+ },
29
+ onChange: {
30
+ control: 'function',
31
+ description: 'The handler called when clicking on the dropdown option.',
32
+ },
33
+ };
34
+
35
+ # Dropdown filter
36
+
37
+ Dropdowns specific to filter a search on page contents.
38
+
39
+ ## Overview
40
+
41
+ <Canvas>
42
+ <Story
43
+ name="Overview"
44
+ args={{
45
+ label: 'Label',
46
+ searchPlaceholder: '',
47
+ loadOptions: function ol(search) {
48
+ return Promise.resolve(
49
+ fruits.filter(function om(fruit) {
50
+ return fruit.name.includes(search);
51
+ }),
52
+ );
53
+ },
54
+ getOptionLabel: function ol(fruit) {
55
+ return fruit.name;
56
+ },
57
+ getOptionValue: function ov(fruit) {
58
+ return fruit.id;
59
+ },
60
+ }}
61
+ argTypes={dropdownArgTypes}
62
+ >
63
+ {args => <TsDropdownFilter {...args}>{args.children}</TsDropdownFilter>}
64
+ </Story>
65
+ </Canvas>
66
+
67
+ ## Props
68
+
69
+ <ArgsTable story="Overview" of={TsDropdownFilter} />
@@ -0,0 +1,4 @@
1
+ export declare const fruits: {
2
+ name: string;
3
+ id: number;
4
+ }[];
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fruits = void 0;
4
+ exports.fruits = [
5
+ { name: 'Persimmon', id: 52 },
6
+ { name: 'Strawberry', id: 3 },
7
+ { name: 'Banana', id: 1 },
8
+ { name: 'Tomato', id: 5 },
9
+ { name: 'Pear', id: 4 },
10
+ { name: 'Durian', id: 60 },
11
+ { name: 'Blackberry', id: 64 },
12
+ { name: 'Lingonberry', id: 65 },
13
+ { name: 'Kiwi', id: 66 },
14
+ { name: 'Lychee', id: 67 },
15
+ { name: 'Pineapple', id: 10 },
16
+ { name: 'Fig', id: 68 },
17
+ { name: 'Gooseberry', id: 69 },
18
+ { name: 'Passionfruit', id: 70 },
19
+ { name: 'Plum', id: 71 },
20
+ { name: 'Orange', id: 2 },
21
+ { name: 'GreenApple', id: 72 },
22
+ { name: 'Raspberry', id: 23 },
23
+ { name: 'Watermelon', id: 25 },
24
+ { name: 'Lemon', id: 26 },
25
+ { name: 'Mango', id: 27 },
26
+ { name: 'Blueberry', id: 33 },
27
+ { name: 'Apple', id: 6 },
28
+ { name: 'Guava', id: 37 },
29
+ { name: 'Apricot', id: 35 },
30
+ { name: 'Papaya', id: 42 },
31
+ { name: 'Melon', id: 41 },
32
+ { name: 'Tangerine', id: 77 },
33
+ { name: 'Pitahaya', id: 78 },
34
+ { name: 'Lime', id: 44 },
35
+ { name: 'Pomegranate', id: 79 },
36
+ { name: 'Dragonfruit', id: 80 },
37
+ { name: 'Grape', id: 81 },
38
+ { name: 'Morus', id: 82 },
39
+ { name: 'Feijoa', id: 76 },
40
+ { name: 'Avocado', id: 84 },
41
+ { name: 'Kiwifruit', id: 85 },
42
+ { name: 'Cranberry', id: 87 },
43
+ { name: 'Cherry', id: 9 },
44
+ { name: 'Peach', id: 86 },
45
+ { name: 'Jackfruit', id: 94 },
46
+ { name: 'Horned Melon', id: 95 },
47
+ { name: 'Hazelnut', id: 96 },
48
+ { name: 'Pomelo', id: 98 },
49
+ { name: 'Mangosteen', id: 99 },
50
+ ];
51
+ //# sourceMappingURL=fruits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fruits.js","sourceRoot":"","sources":["../../../../../src/components/TsDropdowns/TsDropdownFilter/__stories__/fruits.ts"],"names":[],"mappings":"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"}