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