@udixio/ui-react 0.4.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/.eslintrc.mjs +22 -0
  2. package/.storybook/main.ts +20 -0
  3. package/.storybook/preview.ts +1 -0
  4. package/CHANGELOG.md +63 -0
  5. package/dist/index.cjs +5 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +2811 -0
  8. package/dist/lib/components/Button.d.ts +9 -0
  9. package/dist/lib/components/Button.d.ts.map +1 -0
  10. package/{src → dist}/lib/components/Card.d.ts +5 -0
  11. package/dist/lib/components/Card.d.ts.map +1 -0
  12. package/{src → dist}/lib/components/Carousel.d.ts +6 -0
  13. package/dist/lib/components/Carousel.d.ts.map +1 -0
  14. package/{src → dist}/lib/components/CarouselItem.d.ts +4 -0
  15. package/dist/lib/components/CarouselItem.d.ts.map +1 -0
  16. package/dist/lib/components/Divider.d.ts +9 -0
  17. package/dist/lib/components/Divider.d.ts.map +1 -0
  18. package/dist/lib/components/Fab.d.ts +9 -0
  19. package/dist/lib/components/Fab.d.ts.map +1 -0
  20. package/dist/lib/components/IconButton.d.ts +10 -0
  21. package/dist/lib/components/IconButton.d.ts.map +1 -0
  22. package/{src → dist}/lib/components/NavigationRail.d.ts +5 -0
  23. package/dist/lib/components/NavigationRail.d.ts.map +1 -0
  24. package/{src → dist}/lib/components/NavigationRailItem.d.ts +9 -1
  25. package/dist/lib/components/NavigationRailItem.d.ts.map +1 -0
  26. package/dist/lib/components/ProgressIndicator.d.ts +8 -0
  27. package/dist/lib/components/ProgressIndicator.d.ts.map +1 -0
  28. package/{src → dist}/lib/components/Slider.d.ts +5 -0
  29. package/dist/lib/components/Slider.d.ts.map +1 -0
  30. package/dist/lib/components/Snackbar.d.ts +9 -0
  31. package/dist/lib/components/Snackbar.d.ts.map +1 -0
  32. package/{src → dist}/lib/components/Switch.d.ts +5 -0
  33. package/dist/lib/components/Switch.d.ts.map +1 -0
  34. package/{src → dist}/lib/components/Tab.d.ts +4 -0
  35. package/dist/lib/components/Tab.d.ts.map +1 -0
  36. package/{src → dist}/lib/components/Tabs.d.ts +5 -0
  37. package/dist/lib/components/Tabs.d.ts.map +1 -0
  38. package/{src → dist}/lib/components/TextField.d.ts +5 -0
  39. package/dist/lib/components/TextField.d.ts.map +1 -0
  40. package/{src → dist}/lib/components/ToolTip.d.ts +5 -0
  41. package/dist/lib/components/ToolTip.d.ts.map +1 -0
  42. package/{src → dist}/lib/components/index.d.ts +1 -1
  43. package/dist/lib/components/index.d.ts.map +1 -0
  44. package/dist/lib/effects/SyncedFixedWrapper.d.ts.map +1 -0
  45. package/dist/lib/effects/custom-scroll/custom-scroll.effect.d.ts.map +1 -0
  46. package/dist/lib/effects/custom-scroll/custom-scroll.interface.d.ts.map +1 -0
  47. package/dist/lib/effects/custom-scroll/custom-scroll.style.d.ts.map +1 -0
  48. package/dist/lib/effects/custom-scroll/index.d.ts.map +1 -0
  49. package/dist/lib/effects/index.d.ts.map +1 -0
  50. package/dist/lib/effects/ripple/RippleEffect.d.ts.map +1 -0
  51. package/dist/lib/effects/ripple/index.d.ts.map +1 -0
  52. package/dist/lib/effects/smooth-scroll.effect.d.ts.map +1 -0
  53. package/dist/lib/icon/icon.d.ts.map +1 -0
  54. package/dist/lib/icon/index.d.ts.map +1 -0
  55. package/dist/lib/index.d.ts.map +1 -0
  56. package/{src → dist}/lib/interfaces/button.interface.d.ts +9 -3
  57. package/dist/lib/interfaces/button.interface.d.ts.map +1 -0
  58. package/{src → dist}/lib/interfaces/card.interface.d.ts +2 -0
  59. package/dist/lib/interfaces/card.interface.d.ts.map +1 -0
  60. package/dist/lib/interfaces/carousel-item.interface.d.ts.map +1 -0
  61. package/{src → dist}/lib/interfaces/carousel.interface.d.ts +3 -2
  62. package/dist/lib/interfaces/carousel.interface.d.ts.map +1 -0
  63. package/dist/lib/interfaces/divider.interface.d.ts.map +1 -0
  64. package/{src → dist}/lib/interfaces/fab.interface.d.ts +2 -1
  65. package/dist/lib/interfaces/fab.interface.d.ts.map +1 -0
  66. package/{src → dist}/lib/interfaces/icon-button.interface.d.ts +3 -2
  67. package/dist/lib/interfaces/icon-button.interface.d.ts.map +1 -0
  68. package/dist/lib/interfaces/index.d.ts.map +1 -0
  69. package/{src → dist}/lib/interfaces/navigation-rail-item.interface.d.ts +1 -0
  70. package/dist/lib/interfaces/navigation-rail-item.interface.d.ts.map +1 -0
  71. package/dist/lib/interfaces/navigation-rail.interface.d.ts.map +1 -0
  72. package/dist/lib/interfaces/progress-indicator.interface.d.ts.map +1 -0
  73. package/dist/lib/interfaces/slider.interface.d.ts.map +1 -0
  74. package/{src → dist}/lib/interfaces/snackbar.interface.d.ts +1 -1
  75. package/dist/lib/interfaces/snackbar.interface.d.ts.map +1 -0
  76. package/dist/lib/interfaces/switch.interface.d.ts.map +1 -0
  77. package/dist/lib/interfaces/tab.interface.d.ts.map +1 -0
  78. package/{src → dist}/lib/interfaces/tabs.interface.d.ts +1 -1
  79. package/dist/lib/interfaces/tabs.interface.d.ts.map +1 -0
  80. package/dist/lib/interfaces/text-field.interface.d.ts.map +1 -0
  81. package/dist/lib/interfaces/tooltip.interface.d.ts.map +1 -0
  82. package/{src → dist}/lib/styles/button.style.d.ts +22 -8
  83. package/dist/lib/styles/button.style.d.ts.map +1 -0
  84. package/{src → dist}/lib/styles/card.style.d.ts +2 -0
  85. package/dist/lib/styles/card.style.d.ts.map +1 -0
  86. package/dist/lib/styles/carousel-item.style.d.ts.map +1 -0
  87. package/{src → dist}/lib/styles/carousel.style.d.ts +1 -1
  88. package/dist/lib/styles/carousel.style.d.ts.map +1 -0
  89. package/dist/lib/styles/divider.style.d.ts.map +1 -0
  90. package/{src → dist}/lib/styles/fab.style.d.ts +6 -2
  91. package/dist/lib/styles/fab.style.d.ts.map +1 -0
  92. package/{src → dist}/lib/styles/icon-button.style.d.ts +9 -5
  93. package/dist/lib/styles/icon-button.style.d.ts.map +1 -0
  94. package/dist/lib/styles/index.d.ts.map +1 -0
  95. package/{src → dist}/lib/styles/navigation-rail-item.style.d.ts +2 -0
  96. package/dist/lib/styles/navigation-rail-item.style.d.ts.map +1 -0
  97. package/dist/lib/styles/navigation-rail.style.d.ts.map +1 -0
  98. package/dist/lib/styles/progress-indicator.style.d.ts.map +1 -0
  99. package/dist/lib/styles/slider.style.d.ts.map +1 -0
  100. package/{src → dist}/lib/styles/snackbar.style.d.ts +2 -2
  101. package/dist/lib/styles/snackbar.style.d.ts.map +1 -0
  102. package/dist/lib/styles/switch.style.d.ts.map +1 -0
  103. package/{src → dist}/lib/styles/tab.style.d.ts +1 -1
  104. package/dist/lib/styles/tab.style.d.ts.map +1 -0
  105. package/{src → dist}/lib/styles/tabs.style.d.ts +1 -1
  106. package/dist/lib/styles/tabs.style.d.ts.map +1 -0
  107. package/dist/lib/styles/text-field.style.d.ts.map +1 -0
  108. package/dist/lib/styles/tooltip.style.d.ts.map +1 -0
  109. package/dist/lib/utils/component-helper.d.ts.map +1 -0
  110. package/{src → dist}/lib/utils/component.d.ts +1 -1
  111. package/dist/lib/utils/component.d.ts.map +1 -0
  112. package/dist/lib/utils/index.d.ts.map +1 -0
  113. package/dist/lib/utils/string.d.ts.map +1 -0
  114. package/dist/lib/utils/styles/classnames.d.ts.map +1 -0
  115. package/dist/lib/utils/styles/get-classname.d.ts.map +1 -0
  116. package/dist/lib/utils/styles/index.d.ts.map +1 -0
  117. package/package.json +31 -8
  118. package/postcss.config.mjs +5 -0
  119. package/src/index.css +4 -0
  120. package/src/index.ts +1 -0
  121. package/src/lib/components/Button.tsx +174 -0
  122. package/src/lib/components/Card.tsx +36 -0
  123. package/src/lib/components/Carousel.tsx +196 -0
  124. package/src/lib/components/CarouselItem.tsx +58 -0
  125. package/src/lib/components/Divider.tsx +18 -0
  126. package/src/lib/components/Fab.tsx +122 -0
  127. package/src/lib/components/IconButton.tsx +155 -0
  128. package/src/lib/components/NavigationRail.tsx +177 -0
  129. package/src/lib/components/NavigationRailItem.tsx +211 -0
  130. package/src/lib/components/ProgressIndicator.tsx +154 -0
  131. package/src/lib/components/Slider.tsx +366 -0
  132. package/src/lib/components/Snackbar.tsx +71 -0
  133. package/src/lib/components/Switch.tsx +99 -0
  134. package/src/lib/components/Tab.tsx +114 -0
  135. package/src/lib/components/Tabs.tsx +90 -0
  136. package/src/lib/components/TextField.tsx +274 -0
  137. package/src/lib/components/ToolTip.tsx +232 -0
  138. package/src/lib/components/index.ts +19 -0
  139. package/src/lib/effects/SyncedFixedWrapper.tsx +62 -0
  140. package/src/lib/effects/custom-scroll/custom-scroll.effect.tsx +287 -0
  141. package/src/lib/effects/custom-scroll/custom-scroll.interface.ts +25 -0
  142. package/src/lib/effects/custom-scroll/custom-scroll.style.ts +32 -0
  143. package/src/lib/effects/custom-scroll/index.ts +3 -0
  144. package/src/lib/effects/index.ts +4 -0
  145. package/src/lib/effects/ripple/RippleEffect.tsx +103 -0
  146. package/src/lib/effects/ripple/index.tsx +1 -0
  147. package/src/lib/effects/smooth-scroll.effect.tsx +91 -0
  148. package/src/lib/icon/icon.tsx +47 -0
  149. package/src/lib/icon/index.ts +1 -0
  150. package/src/lib/index.ts +6 -0
  151. package/src/lib/interfaces/button.interface.ts +54 -0
  152. package/src/lib/interfaces/card.interface.ts +11 -0
  153. package/src/lib/interfaces/carousel-item.interface.ts +11 -0
  154. package/src/lib/interfaces/carousel.interface.ts +22 -0
  155. package/src/lib/interfaces/divider.interface.ts +7 -0
  156. package/src/lib/interfaces/fab.interface.ts +20 -0
  157. package/src/lib/interfaces/icon-button.interface.ts +36 -0
  158. package/src/lib/interfaces/index.ts +16 -0
  159. package/src/lib/interfaces/navigation-rail-item.interface.ts +39 -0
  160. package/src/lib/interfaces/navigation-rail.interface.ts +39 -0
  161. package/src/lib/interfaces/progress-indicator.interface.ts +35 -0
  162. package/src/lib/interfaces/slider.interface.ts +27 -0
  163. package/src/lib/interfaces/snackbar.interface.ts +13 -0
  164. package/src/lib/interfaces/switch.interface.ts +14 -0
  165. package/src/lib/interfaces/tab.interface.ts +30 -0
  166. package/src/lib/interfaces/tabs.interface.ts +22 -0
  167. package/src/lib/interfaces/text-field.interface.ts +48 -0
  168. package/src/lib/interfaces/tooltip.interface.ts +35 -0
  169. package/src/lib/styles/button.style.ts +142 -0
  170. package/src/lib/styles/card.style.ts +21 -0
  171. package/src/lib/styles/carousel-item.style.ts +11 -0
  172. package/src/lib/styles/carousel.style.ts +12 -0
  173. package/src/lib/styles/divider.style.ts +17 -0
  174. package/src/lib/styles/fab.style.ts +55 -0
  175. package/src/lib/styles/icon-button.style.ts +167 -0
  176. package/src/lib/styles/index.ts +15 -0
  177. package/src/lib/styles/navigation-rail-item.style.ts +44 -0
  178. package/src/lib/styles/navigation-rail.style.ts +20 -0
  179. package/src/lib/styles/progress-indicator.style.ts +43 -0
  180. package/src/lib/styles/slider.style.ts +27 -0
  181. package/src/lib/styles/snackbar.style.ts +14 -0
  182. package/src/lib/styles/switch.style.ts +51 -0
  183. package/src/lib/styles/tab.style.ts +68 -0
  184. package/src/lib/styles/tabs.style.ts +13 -0
  185. package/src/lib/styles/text-field.style.ts +104 -0
  186. package/src/lib/styles/tooltip.style.ts +37 -0
  187. package/src/lib/utils/component-helper.ts +134 -0
  188. package/src/lib/utils/component.ts +34 -0
  189. package/src/lib/utils/index.ts +7 -0
  190. package/src/lib/utils/string.ts +9 -0
  191. package/src/lib/utils/styles/classnames.ts +49 -0
  192. package/src/lib/utils/styles/get-classname.ts +73 -0
  193. package/src/lib/utils/styles/index.ts +3 -0
  194. package/src/stories/action/button.stories.tsx +86 -0
  195. package/src/stories/action/fab.stories.tsx +54 -0
  196. package/src/stories/action/icon-button.stories.tsx +134 -0
  197. package/src/stories/assets/accessibility.png +0 -0
  198. package/src/stories/assets/accessibility.svg +5 -0
  199. package/src/stories/assets/addon-library.png +0 -0
  200. package/src/stories/assets/assets.png +0 -0
  201. package/src/stories/assets/context.png +0 -0
  202. package/src/stories/assets/discord.svg +15 -0
  203. package/src/stories/assets/docs.png +0 -0
  204. package/src/stories/assets/figma-plugin.png +0 -0
  205. package/src/stories/assets/github.svg +3 -0
  206. package/src/stories/assets/share.png +0 -0
  207. package/src/stories/assets/styling.png +0 -0
  208. package/src/stories/assets/testing.png +0 -0
  209. package/src/stories/assets/theming.png +0 -0
  210. package/src/stories/assets/tutorials.svg +12 -0
  211. package/src/stories/assets/youtube.svg +4 -0
  212. package/src/stories/communication/ProgressIndicator.stories.tsx +57 -0
  213. package/src/stories/communication/SnackBar.stories.tsx +32 -0
  214. package/src/stories/communication/tool-tip.stories.tsx +133 -0
  215. package/src/stories/containment/card.stories.tsx +42 -0
  216. package/src/stories/containment/carousel.stories.tsx +65 -0
  217. package/src/stories/containment/divider.stories.tsx +35 -0
  218. package/src/stories/effect/smooth-scroll.stories.tsx +45 -0
  219. package/src/stories/navigation/navigation-rail/navigation-rail-item.stories.tsx +65 -0
  220. package/src/stories/navigation/navigation-rail/navigation-rail.stories.tsx +122 -0
  221. package/src/stories/navigation/tabs/tab.stories.tsx +57 -0
  222. package/src/stories/navigation/tabs/tabs.stories.tsx +102 -0
  223. package/src/stories/selection/slider.stories.tsx +85 -0
  224. package/src/stories/selection/switch.stories.tsx +46 -0
  225. package/src/stories/text-inputs/text-field.stories.tsx +135 -0
  226. package/src/tests/Button.spec.tsx +67 -0
  227. package/src/udixio.css +120 -0
  228. package/theme.config.ts +7 -0
  229. package/tsconfig.json +22 -0
  230. package/tsconfig.lib.json +51 -0
  231. package/tsconfig.spec.json +37 -0
  232. package/tsconfig.storybook.json +38 -0
  233. package/vite.config.ts +77 -0
  234. package/index.js +0 -5
  235. package/index.mjs +0 -2823
  236. package/src/index.d.ts.map +0 -1
  237. package/src/lib/components/Button.d.ts +0 -7
  238. package/src/lib/components/Button.d.ts.map +0 -1
  239. package/src/lib/components/Card.d.ts.map +0 -1
  240. package/src/lib/components/Carousel.d.ts.map +0 -1
  241. package/src/lib/components/CarouselItem.d.ts.map +0 -1
  242. package/src/lib/components/Divided.d.ts +0 -4
  243. package/src/lib/components/Divided.d.ts.map +0 -1
  244. package/src/lib/components/Fab.d.ts +0 -4
  245. package/src/lib/components/Fab.d.ts.map +0 -1
  246. package/src/lib/components/IconButton.d.ts +0 -5
  247. package/src/lib/components/IconButton.d.ts.map +0 -1
  248. package/src/lib/components/NavigationRail.d.ts.map +0 -1
  249. package/src/lib/components/NavigationRailItem.d.ts.map +0 -1
  250. package/src/lib/components/ProgressIndicator.d.ts +0 -4
  251. package/src/lib/components/ProgressIndicator.d.ts.map +0 -1
  252. package/src/lib/components/Slider.d.ts.map +0 -1
  253. package/src/lib/components/Snackbar.d.ts +0 -4
  254. package/src/lib/components/Snackbar.d.ts.map +0 -1
  255. package/src/lib/components/Switch.d.ts.map +0 -1
  256. package/src/lib/components/Tab.d.ts.map +0 -1
  257. package/src/lib/components/Tabs.d.ts.map +0 -1
  258. package/src/lib/components/TextField.d.ts.map +0 -1
  259. package/src/lib/components/ToolTip.d.ts.map +0 -1
  260. package/src/lib/components/index.d.ts.map +0 -1
  261. package/src/lib/effects/SyncedFixedWrapper.d.ts.map +0 -1
  262. package/src/lib/effects/custom-scroll/custom-scroll.effect.d.ts.map +0 -1
  263. package/src/lib/effects/custom-scroll/custom-scroll.interface.d.ts.map +0 -1
  264. package/src/lib/effects/custom-scroll/custom-scroll.style.d.ts.map +0 -1
  265. package/src/lib/effects/custom-scroll/index.d.ts.map +0 -1
  266. package/src/lib/effects/index.d.ts.map +0 -1
  267. package/src/lib/effects/ripple/RippleEffect.d.ts.map +0 -1
  268. package/src/lib/effects/ripple/index.d.ts.map +0 -1
  269. package/src/lib/effects/smooth-scroll.effect.d.ts.map +0 -1
  270. package/src/lib/icon/icon.d.ts.map +0 -1
  271. package/src/lib/icon/index.d.ts.map +0 -1
  272. package/src/lib/index.d.ts.map +0 -1
  273. package/src/lib/interfaces/button.interface.d.ts.map +0 -1
  274. package/src/lib/interfaces/card.interface.d.ts.map +0 -1
  275. package/src/lib/interfaces/carousel-item.interface.d.ts.map +0 -1
  276. package/src/lib/interfaces/carousel.interface.d.ts.map +0 -1
  277. package/src/lib/interfaces/divider.interface.d.ts.map +0 -1
  278. package/src/lib/interfaces/fab.interface.d.ts.map +0 -1
  279. package/src/lib/interfaces/icon-button.interface.d.ts.map +0 -1
  280. package/src/lib/interfaces/index.d.ts.map +0 -1
  281. package/src/lib/interfaces/navigation-rail-item.interface.d.ts.map +0 -1
  282. package/src/lib/interfaces/navigation-rail.interface.d.ts.map +0 -1
  283. package/src/lib/interfaces/progress-indicator.interface.d.ts.map +0 -1
  284. package/src/lib/interfaces/slider.interface.d.ts.map +0 -1
  285. package/src/lib/interfaces/snackbar.interface.d.ts.map +0 -1
  286. package/src/lib/interfaces/switch.interface.d.ts.map +0 -1
  287. package/src/lib/interfaces/tab.interface.d.ts.map +0 -1
  288. package/src/lib/interfaces/tabs.interface.d.ts.map +0 -1
  289. package/src/lib/interfaces/text-field.interface.d.ts.map +0 -1
  290. package/src/lib/interfaces/tooltip.interface.d.ts.map +0 -1
  291. package/src/lib/styles/button.style.d.ts.map +0 -1
  292. package/src/lib/styles/card.style.d.ts.map +0 -1
  293. package/src/lib/styles/carousel-item.style.d.ts.map +0 -1
  294. package/src/lib/styles/carousel.style.d.ts.map +0 -1
  295. package/src/lib/styles/divider.style.d.ts.map +0 -1
  296. package/src/lib/styles/fab.style.d.ts.map +0 -1
  297. package/src/lib/styles/icon-button.style.d.ts.map +0 -1
  298. package/src/lib/styles/index.d.ts.map +0 -1
  299. package/src/lib/styles/navigation-rail-item.style.d.ts.map +0 -1
  300. package/src/lib/styles/navigation-rail.style.d.ts.map +0 -1
  301. package/src/lib/styles/progress-indicator.style.d.ts.map +0 -1
  302. package/src/lib/styles/slider.style.d.ts.map +0 -1
  303. package/src/lib/styles/snackbar.style.d.ts.map +0 -1
  304. package/src/lib/styles/switch.style.d.ts.map +0 -1
  305. package/src/lib/styles/tab.style.d.ts.map +0 -1
  306. package/src/lib/styles/tabs.style.d.ts.map +0 -1
  307. package/src/lib/styles/text-field.style.d.ts.map +0 -1
  308. package/src/lib/styles/tooltip.style.d.ts.map +0 -1
  309. package/src/lib/utils/component-helper.d.ts.map +0 -1
  310. package/src/lib/utils/component.d.ts.map +0 -1
  311. package/src/lib/utils/index.d.ts.map +0 -1
  312. package/src/lib/utils/string.d.ts.map +0 -1
  313. package/src/lib/utils/styles/classnames.d.ts.map +0 -1
  314. package/src/lib/utils/styles/get-classname.d.ts.map +0 -1
  315. package/src/lib/utils/styles/index.d.ts.map +0 -1
  316. /package/{LICENSE → dist/LICENSE} +0 -0
  317. /package/{src → dist}/index.d.ts +0 -0
  318. /package/{src → dist}/lib/effects/SyncedFixedWrapper.d.ts +0 -0
  319. /package/{src → dist}/lib/effects/custom-scroll/custom-scroll.effect.d.ts +0 -0
  320. /package/{src → dist}/lib/effects/custom-scroll/custom-scroll.interface.d.ts +0 -0
  321. /package/{src → dist}/lib/effects/custom-scroll/custom-scroll.style.d.ts +0 -0
  322. /package/{src → dist}/lib/effects/custom-scroll/index.d.ts +0 -0
  323. /package/{src → dist}/lib/effects/index.d.ts +0 -0
  324. /package/{src → dist}/lib/effects/ripple/RippleEffect.d.ts +0 -0
  325. /package/{src → dist}/lib/effects/ripple/index.d.ts +0 -0
  326. /package/{src → dist}/lib/effects/smooth-scroll.effect.d.ts +0 -0
  327. /package/{src → dist}/lib/icon/icon.d.ts +0 -0
  328. /package/{src → dist}/lib/icon/index.d.ts +0 -0
  329. /package/{src → dist}/lib/index.d.ts +0 -0
  330. /package/{src → dist}/lib/interfaces/carousel-item.interface.d.ts +0 -0
  331. /package/{src → dist}/lib/interfaces/divider.interface.d.ts +0 -0
  332. /package/{src → dist}/lib/interfaces/index.d.ts +0 -0
  333. /package/{src → dist}/lib/interfaces/navigation-rail.interface.d.ts +0 -0
  334. /package/{src → dist}/lib/interfaces/progress-indicator.interface.d.ts +0 -0
  335. /package/{src → dist}/lib/interfaces/slider.interface.d.ts +0 -0
  336. /package/{src → dist}/lib/interfaces/switch.interface.d.ts +0 -0
  337. /package/{src → dist}/lib/interfaces/tab.interface.d.ts +0 -0
  338. /package/{src → dist}/lib/interfaces/text-field.interface.d.ts +0 -0
  339. /package/{src → dist}/lib/interfaces/tooltip.interface.d.ts +0 -0
  340. /package/{src → dist}/lib/styles/carousel-item.style.d.ts +0 -0
  341. /package/{src → dist}/lib/styles/divider.style.d.ts +0 -0
  342. /package/{src → dist}/lib/styles/index.d.ts +0 -0
  343. /package/{src → dist}/lib/styles/navigation-rail.style.d.ts +0 -0
  344. /package/{src → dist}/lib/styles/progress-indicator.style.d.ts +0 -0
  345. /package/{src → dist}/lib/styles/slider.style.d.ts +0 -0
  346. /package/{src → dist}/lib/styles/switch.style.d.ts +0 -0
  347. /package/{src → dist}/lib/styles/text-field.style.d.ts +0 -0
  348. /package/{src → dist}/lib/styles/tooltip.style.d.ts +0 -0
  349. /package/{src → dist}/lib/utils/component-helper.d.ts +0 -0
  350. /package/{src → dist}/lib/utils/index.d.ts +0 -0
  351. /package/{src → dist}/lib/utils/string.d.ts +0 -0
  352. /package/{src → dist}/lib/utils/styles/classnames.d.ts +0 -0
  353. /package/{src → dist}/lib/utils/styles/get-classname.d.ts +0 -0
  354. /package/{src → dist}/lib/utils/styles/index.d.ts +0 -0
@@ -0,0 +1,366 @@
1
+ import { AnimatePresence, motion } from 'motion/react';
2
+ import { SliderInterface } from '../interfaces';
3
+ import { sliderStyle } from '../styles';
4
+ import { classNames, ReactProps } from '../utils';
5
+ import { useEffect, useRef, useState } from 'react';
6
+
7
+ /**
8
+ * Sliders let users make selections from a range of values
9
+ * @status beta
10
+ * @category Input
11
+ */
12
+ export const Slider = ({
13
+ className,
14
+ valueFormatter,
15
+ step = 10,
16
+ name,
17
+ value: defaultValue = 0,
18
+ min = 0,
19
+ max = 100,
20
+ marks = [
21
+ {
22
+ value: 0,
23
+ label: '0',
24
+ },
25
+ {
26
+ value: 100,
27
+ label: '100',
28
+ },
29
+ ],
30
+ ref,
31
+ onChange,
32
+ ...restProps
33
+ }: ReactProps<SliderInterface>) => {
34
+ const getPourcentFromValue = (value: number) => {
35
+ const min = getMin();
36
+ const max = getMax();
37
+
38
+ if (value === Infinity) {
39
+ return 100;
40
+ } else if (value === -Infinity) {
41
+ return 0;
42
+ }
43
+ return ((value - min) / (max - min)) * 100;
44
+ };
45
+
46
+ const getMax = (isInfinity = false) => {
47
+ if (isInfinity) {
48
+ return max;
49
+ }
50
+ return max == Infinity ? marks[marks?.length - 1].value : max;
51
+ };
52
+ const getMin = (isInfinity = false) => {
53
+ if (isInfinity) {
54
+ return min;
55
+ }
56
+ return min == -Infinity ? marks[0].value : min;
57
+ };
58
+
59
+ const getValueFromPourcent = (pourcent: number) => {
60
+ const min = getMin(false);
61
+ const max = getMax(false);
62
+ return ((max - min) * pourcent) / 100 + min;
63
+ };
64
+
65
+ const [isChanging, setIsChanging] = useState(false);
66
+ const defaultRef = useRef<HTMLDivElement>(null);
67
+ const resolvedRef: React.RefObject<any> | React.ForwardedRef<any> =
68
+ ref || defaultRef;
69
+
70
+ const [value, setValue] = useState(defaultValue);
71
+ const [pourcent, setPourcent] = useState(getPourcentFromValue(defaultValue));
72
+ const [mouseDown, setMouseDown] = useState(false);
73
+ const handleMouseDown = (e: any) => {
74
+ setMouseDown(true);
75
+ setIsChanging(true);
76
+ handleChange(e);
77
+ };
78
+
79
+ const handleMouseUp = () => {
80
+ setMouseDown(false);
81
+ setIsChanging(false);
82
+ };
83
+ useEffect(() => {
84
+ if (mouseDown) {
85
+ // Add mouse events
86
+ window.addEventListener('mouseup', handleMouseUp);
87
+ window.addEventListener('mousemove', handleChange);
88
+ // Add touch events
89
+ window.addEventListener('touchend', handleMouseUp);
90
+ window.addEventListener('touchmove', handleChange);
91
+ } else {
92
+ // Remove mouse events
93
+ window.removeEventListener('mouseup', handleMouseUp);
94
+ window.removeEventListener('mousemove', handleChange);
95
+ // Remove touch events
96
+ window.removeEventListener('touchend', handleMouseUp);
97
+ window.removeEventListener('touchmove', handleChange);
98
+ }
99
+
100
+ return () => {
101
+ // Cleanup - remove both mouse, touch and drag events
102
+ window.removeEventListener('mouseup', handleMouseUp);
103
+ window.removeEventListener('mousemove', handleChange);
104
+ window.removeEventListener('touchend', handleMouseUp);
105
+ window.removeEventListener('touchmove', handleChange);
106
+ };
107
+ }, [mouseDown]);
108
+
109
+ const styles = sliderStyle({
110
+ className,
111
+ isChanging,
112
+ marks,
113
+ max,
114
+ min,
115
+ name,
116
+ step,
117
+ value,
118
+ valueFormatter,
119
+ onChange,
120
+ });
121
+ const handleChange = (event: any) => {
122
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
123
+ // @ts-expect-error
124
+ const current = resolvedRef?.current;
125
+ if (current) {
126
+ const refPosition = current.getBoundingClientRect().left;
127
+
128
+ const clientX =
129
+ event.type === 'touchmove' || event.type === 'touchstart'
130
+ ? event.touches[0].clientX
131
+ : event.clientX;
132
+
133
+ const pourcent = ((clientX - refPosition) / current.offsetWidth) * 100;
134
+
135
+ updateSliderValues({ pourcent });
136
+ }
137
+ };
138
+ const updateSliderValues = ({
139
+ pourcent,
140
+ value,
141
+ }: {
142
+ pourcent?: number;
143
+ value?: number;
144
+ }) => {
145
+ if (pourcent) {
146
+ if (pourcent >= 100) {
147
+ setValue(getMax(true));
148
+ setPourcent(100);
149
+ return;
150
+ }
151
+ if (pourcent <= 0) {
152
+ setValue(getMin(true));
153
+ setPourcent(0);
154
+ return;
155
+ }
156
+
157
+ value = getValueFromPourcent(pourcent);
158
+ if (value == getMin()) {
159
+ value = getMin(true);
160
+ }
161
+ if (value == getMax()) {
162
+ value = getMax(true);
163
+ }
164
+ } else if (value != undefined) {
165
+ if (value >= getMax()) {
166
+ setValue(getMax(true));
167
+ setPourcent(100);
168
+ return;
169
+ }
170
+ if (value <= getMin()) {
171
+ setValue(getMin(true));
172
+ setPourcent(0);
173
+ return;
174
+ }
175
+ pourcent = getPourcentFromValue(value);
176
+ } else {
177
+ return;
178
+ }
179
+ if (step != null) {
180
+ value = Math.round((value - getMin()) / step) * step + getMin();
181
+ } else if (marks) {
182
+ value = marks.reduce((prev, curr, currentIndex) => {
183
+ let currDiff =
184
+ curr.value === Infinity
185
+ ? getMax()
186
+ : curr.value === -Infinity
187
+ ? getMin()
188
+ : curr.value;
189
+ let prevDiff =
190
+ prev.value === Infinity
191
+ ? getMax()
192
+ : prev.value === -Infinity
193
+ ? getMin()
194
+ : prev.value;
195
+ currDiff = Math.abs(currDiff - value!);
196
+ prevDiff = Math.abs(prevDiff - value!);
197
+
198
+ return currDiff < prevDiff ? curr : prev;
199
+ }).value;
200
+ }
201
+
202
+ if (value >= getMax()) {
203
+ value = getMax(true);
204
+ }
205
+ if (value <= getMin()) {
206
+ value = getMin(true);
207
+ }
208
+
209
+ pourcent = getPourcentFromValue(value);
210
+
211
+ setValue(value);
212
+ setPourcent(pourcent);
213
+ if (onChange) {
214
+ onChange(value);
215
+ }
216
+ };
217
+ const [sliderWidth, setSliderWidth] = useState(0);
218
+ useEffect(() => {
219
+ const updateSliderWidth = () => {
220
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
221
+ // @ts-expect-error
222
+ if (resolvedRef.current) {
223
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
224
+ // @ts-expect-error
225
+ setSliderWidth(resolvedRef.current.offsetWidth);
226
+ }
227
+ };
228
+
229
+ updateSliderWidth(); // Initial setup
230
+ window.addEventListener('resize', updateSliderWidth);
231
+
232
+ // Clean up
233
+ return () => {
234
+ window.removeEventListener('resize', updateSliderWidth);
235
+ };
236
+ }, []);
237
+
238
+ const handleKeyDown = (e: React.KeyboardEvent) => {
239
+ // Check which key is pressed
240
+ switch (e.key) {
241
+ case 'ArrowRight':
242
+ if (step) {
243
+ updateSliderValues({ value: value + step });
244
+ } else if (marks) {
245
+ // Find the next mark (greater than the current value)
246
+ const nextMark = marks.find((mark) => mark.value > value);
247
+ if (nextMark) {
248
+ // If one exists, update the value to the mark's value
249
+ updateSliderValues({ value: nextMark.value });
250
+ }
251
+ }
252
+ break;
253
+
254
+ case 'ArrowLeft':
255
+ if (step) {
256
+ updateSliderValues({ value: value - step });
257
+ } else if (marks) {
258
+ // Find the previous mark (less than the current value)
259
+ const previousMark = marks
260
+ .slice(0)
261
+ .reverse()
262
+ .find((mark, index, array) => {
263
+ if (value === Infinity) {
264
+ // If value is Infinity, take the second-to-last mark
265
+ return index === 1;
266
+ }
267
+ return mark.value < value;
268
+ });
269
+
270
+ if (previousMark) {
271
+ // If one exists, update the value to the mark's value
272
+ updateSliderValues({ value: previousMark.value });
273
+ }
274
+ }
275
+ break;
276
+ default:
277
+ return;
278
+ }
279
+ };
280
+ return (
281
+ <div
282
+ tabIndex={0} // Make the slider focusable
283
+ onKeyDown={handleKeyDown} // Attach the keydown event
284
+ role="slider" // Inform assistive technologies about the type of the component
285
+ aria-valuemin={getMin(true)} // Inform about the minimum value
286
+ aria-valuemax={getMax(true)} // Inform about the maximum value
287
+ aria-valuenow={value} // Inform about the current value
288
+ aria-valuetext={value.toString()} // Textual representation of the value
289
+ className={styles.slider}
290
+ onMouseDown={handleMouseDown}
291
+ onClick={handleChange}
292
+ ref={resolvedRef}
293
+ onTouchStart={handleMouseDown}
294
+ onDragStart={(e) => e.preventDefault()}
295
+ {...restProps}
296
+ >
297
+ <input type="hidden" name={name} value={value} />
298
+ <div
299
+ className={styles.activeTrack}
300
+ style={{ flex: pourcent / 100 }}
301
+ ></div>
302
+ <div className={styles.handle}>
303
+ <AnimatePresence>
304
+ {isChanging && (
305
+ <motion.div
306
+ className={styles.valueIndicator}
307
+ initial="hidden"
308
+ animate="visible"
309
+ exit="hidden"
310
+ style={{
311
+ translate: '-50%',
312
+ transformOrigin: 'center bottom',
313
+ textWrap: 'nowrap',
314
+ }}
315
+ variants={{
316
+ visible: { opacity: 1, scale: 1 },
317
+ hidden: { opacity: 1, scale: 0 },
318
+ }}
319
+ transition={{ duration: 0.1 }}
320
+ >
321
+ {valueFormatter ? valueFormatter(value) : value}
322
+ </motion.div>
323
+ )}
324
+ </AnimatePresence>
325
+ </div>
326
+ <div
327
+ className={styles.inactiveTrack}
328
+ style={{ flex: 1 - pourcent / 100 }}
329
+ ></div>
330
+ <div
331
+ className={
332
+ 'w-[calc(100%-12px)] h-full absolute -translate-x-1/2 transform left-1/2'
333
+ }
334
+ >
335
+ {marks &&
336
+ marks.map((mark, index) => {
337
+ let isUnderActiveTrack = null;
338
+
339
+ const handleAndGapPercent =
340
+ ((isChanging ? 9 : 10) / sliderWidth) * 100;
341
+ const markPercent = getPourcentFromValue(mark.value);
342
+
343
+ if (markPercent <= pourcent - handleAndGapPercent) {
344
+ isUnderActiveTrack = true;
345
+ } else if (markPercent >= pourcent + handleAndGapPercent) {
346
+ isUnderActiveTrack = false;
347
+ }
348
+ return (
349
+ <div
350
+ key={index}
351
+ className={classNames(styles.dot, {
352
+ 'bg-primary-container':
353
+ isUnderActiveTrack != null && isUnderActiveTrack,
354
+ 'bg-primary':
355
+ isUnderActiveTrack != null && !isUnderActiveTrack,
356
+ })}
357
+ style={{
358
+ left: `${getPourcentFromValue(mark.value)}%`,
359
+ }}
360
+ ></div>
361
+ );
362
+ })}
363
+ </div>
364
+ </div>
365
+ );
366
+ };
@@ -0,0 +1,71 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { AnimatePresence, motion } from 'motion/react';
3
+ import { faXmark } from '@fortawesome/free-solid-svg-icons';
4
+ import { SnackbarInterface } from '../interfaces/snackbar.interface';
5
+ import { snackbarStyle } from '../styles/snackbar.style';
6
+
7
+ import { MotionProps } from '../utils/component';
8
+ import { IconButton } from './IconButton';
9
+
10
+ /**
11
+ * Snackbars show short updates about app processes at the bottom of the screen
12
+ * @status beta
13
+ * @category Communication
14
+ */
15
+ export const Snackbar = ({
16
+ message,
17
+ className,
18
+ duration,
19
+ closeIcon = faXmark,
20
+ onClose,
21
+ ...restProps
22
+ }: MotionProps<SnackbarInterface>) => {
23
+ const [isVisible, setIsVisible] = useState(true);
24
+
25
+ const styles = snackbarStyle({
26
+ className,
27
+ closeIcon,
28
+ duration,
29
+ isVisible,
30
+ onClose,
31
+ message,
32
+ });
33
+
34
+ useEffect(() => {
35
+ if (duration) {
36
+ setTimeout(() => {
37
+ handleClose();
38
+ }, duration);
39
+ }
40
+ }, [duration]);
41
+
42
+ const handleClose = () => {
43
+ setIsVisible(false);
44
+ onClose?.();
45
+ };
46
+
47
+ return (
48
+ <AnimatePresence>
49
+ {isVisible && (
50
+ <motion.div
51
+ initial={{ height: 0 }}
52
+ animate={{ height: 'auto' }}
53
+ exit={{ height: 0 }}
54
+ transition={{ duration: 0.1 }}
55
+ className={styles.snackbar}
56
+ {...restProps}
57
+ >
58
+ <div className={styles.container}>
59
+ <p className={styles.supportingText}>{message}</p>
60
+ <IconButton
61
+ onClick={() => handleClose()}
62
+ className={styles.icon}
63
+ icon={closeIcon}
64
+ label={'close the snackbar'}
65
+ ></IconButton>
66
+ </div>
67
+ </motion.div>
68
+ )}
69
+ </AnimatePresence>
70
+ );
71
+ };
@@ -0,0 +1,99 @@
1
+ import React, { useRef, useState } from 'react';
2
+
3
+ import { Icon } from '../icon';
4
+ import { motion } from 'motion/react';
5
+ import { SwitchInterface } from '../interfaces/switch.interface';
6
+ import { switchStyle } from '../styles/switch.style';
7
+ import { MotionProps } from '../utils/component';
8
+
9
+ /**
10
+ * Switches toggle the selection of an item on or off
11
+ * @status beta
12
+ * @category Input
13
+ */
14
+ export const Switch = ({
15
+ selected = false,
16
+ className,
17
+ activeIcon,
18
+ disabled = false,
19
+ inactiveIcon,
20
+ onChange,
21
+ onClick,
22
+ onKeyDown,
23
+ ref,
24
+ ...restProps
25
+ }: MotionProps<SwitchInterface>) => {
26
+ const [isSelected, setIsSelected] = useState(selected);
27
+
28
+ const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {
29
+ if (disabled) return;
30
+ toggleSwitchState();
31
+ if (onClick) {
32
+ onClick(event);
33
+ }
34
+ };
35
+
36
+ const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
37
+ if (disabled) return;
38
+ if (event.key === ' ' || event.key === 'Enter') {
39
+ event.preventDefault();
40
+ toggleSwitchState();
41
+ }
42
+ if (onKeyDown) {
43
+ onKeyDown(event);
44
+ }
45
+ };
46
+
47
+ const toggleSwitchState = () => {
48
+ setIsSelected(!isSelected);
49
+ onChange?.(!isSelected);
50
+ };
51
+ const styles = switchStyle({
52
+ className,
53
+ isSelected,
54
+ activeIcon,
55
+ inactiveIcon,
56
+ disabled,
57
+ selected: isSelected,
58
+ onChange,
59
+ });
60
+
61
+ const defaultRef = useRef<HTMLDivElement>(null);
62
+ const resolvedRef: React.RefObject<any> | React.ForwardedRef<any> =
63
+ ref || defaultRef;
64
+
65
+ return (
66
+ <motion.div
67
+ role="switch"
68
+ aria-checked={isSelected}
69
+ tabIndex={disabled ? -1 : 0}
70
+ onKeyDown={handleKeyDown}
71
+ onClick={handleClick}
72
+ ref={resolvedRef}
73
+ className={styles.switch}
74
+ {...restProps}
75
+ >
76
+ <input type="hidden" value={isSelected ? '1' : '0'} />
77
+ <motion.div
78
+ layout
79
+ style={{ translate: isSelected ? '50%' : '-50%' }}
80
+ transition={{
81
+ type: 'spring',
82
+ stiffness: 700,
83
+ damping: 30,
84
+ }}
85
+ className={styles.handleContainer}
86
+ >
87
+ <div className={styles.handle}>
88
+ {(isSelected ? activeIcon : inactiveIcon) && (
89
+ <Icon
90
+ className={styles.icon}
91
+ icon={isSelected ? activeIcon! : inactiveIcon!}
92
+ ></Icon>
93
+ )}
94
+ </div>
95
+ <div className={styles.handleStateLayer} />
96
+ </motion.div>
97
+ </motion.div>
98
+ );
99
+ };
@@ -0,0 +1,114 @@
1
+ import { motion } from 'motion/react';
2
+ import React, { useEffect, useRef, useState } from 'react';
3
+
4
+ import { Icon } from '../icon';
5
+ import { RippleEffect } from '../effects/ripple';
6
+ import { tabStyle } from '../styles/tab.style';
7
+ import { TabInterface } from '../interfaces/tab.interface';
8
+ import { ReactProps } from '../utils/component';
9
+
10
+ /**
11
+ * @status beta
12
+ * @parent Tabs
13
+ */
14
+ export const Tab = ({
15
+ className,
16
+ onClick,
17
+ label,
18
+ variant = 'primary',
19
+ href,
20
+ icon,
21
+ selectedTab,
22
+ setSelectedTab,
23
+ tabsId,
24
+ index,
25
+ onTabSelected,
26
+ scrollable = false,
27
+ selected = false,
28
+ ref,
29
+ ...restProps
30
+ }: ReactProps<TabInterface>) => {
31
+ const defaultRef = useRef(null);
32
+ const resolvedRef = ref || defaultRef;
33
+
34
+ const [isSelected, setIsSelected] = useState<boolean>(selected);
35
+
36
+ useEffect(() => {
37
+ if (selected && selectedTab == null) {
38
+ setIsSelected(true);
39
+ } else {
40
+ setIsSelected(selectedTab == index && index != null);
41
+ }
42
+ }, [selectedTab]);
43
+
44
+ useEffect(() => {
45
+ if (selectedTab == index && onTabSelected) {
46
+ onTabSelected({
47
+ ref: resolvedRef as any,
48
+ index: index || 0,
49
+ label,
50
+ icon,
51
+ });
52
+ }
53
+ }, [selectedTab]);
54
+
55
+ const ElementType = href ? 'a' : 'button';
56
+
57
+ const handleClick = (e: React.MouseEvent<any>) => {
58
+ if (setSelectedTab) {
59
+ setSelectedTab(index ?? null);
60
+ }
61
+ if (onClick) {
62
+ onClick(e);
63
+ }
64
+ };
65
+
66
+ const styles = tabStyle({
67
+ className,
68
+ onTabSelected,
69
+ scrollable,
70
+ selectedTab,
71
+ index,
72
+ tabsId,
73
+ selected: isSelected,
74
+ variant,
75
+ icon,
76
+ label,
77
+ isSelected,
78
+ setSelectedTab,
79
+ href: href as any,
80
+ });
81
+
82
+ return (
83
+ <ElementType
84
+ {...restProps}
85
+ role="tab"
86
+ aria-selected={isSelected}
87
+ ref={resolvedRef}
88
+ href={href}
89
+ className={styles.tab}
90
+ onClick={handleClick}
91
+ {...(restProps as any)}
92
+ >
93
+ <span className={styles.stateLayer}>
94
+ <RippleEffect
95
+ colorName={
96
+ variant === 'primary' && isSelected ? 'primary' : 'on-surface'
97
+ }
98
+ triggerRef={resolvedRef}
99
+ />
100
+ </span>
101
+ <span className={styles.content}>
102
+ {icon && <Icon icon={icon} className={styles.icon} />}
103
+ <span className={styles.label}>{label}</span>
104
+ {isSelected && (
105
+ <motion.span
106
+ layoutId={`underline-${tabsId}`}
107
+ className={styles.underline}
108
+ transition={{ duration: 0.3 }}
109
+ />
110
+ )}
111
+ </span>
112
+ </ElementType>
113
+ );
114
+ };