@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,190 @@
1
+ import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';
2
+ import { CarouselInterface, CarouselItemInterface } from '../interfaces';
3
+
4
+ import { motion, motionValue, useTransform } from 'motion/react';
5
+
6
+ import { carouselStyle } from '../styles';
7
+ import { CustomScroll } from '../effects';
8
+ import { ReactProps } from '../utils';
9
+ import { CarouselItem, normalize } from './CarouselItem';
10
+
11
+ export const Carousel = ({
12
+ variant = 'hero',
13
+ className,
14
+ children,
15
+ ref: optionalRef,
16
+ marginPourcent = 0,
17
+ inputRange = [0.21, 0.65],
18
+ outputRange = [42, 300],
19
+ gap = 8,
20
+ onChange,
21
+ scrollSensitivity = 1.25,
22
+ ...restProps
23
+ }: ReactProps<CarouselInterface>) => {
24
+ const defaultRef = useRef(null);
25
+ const ref = optionalRef || defaultRef;
26
+
27
+ const styles = carouselStyle({
28
+ className,
29
+ children,
30
+ variant,
31
+ inputRange,
32
+ outputRange,
33
+ marginPourcent,
34
+ onChange,
35
+ gap,
36
+ scrollSensitivity,
37
+ });
38
+
39
+ const items = React.Children.toArray(children).filter(
40
+ (child) => React.isValidElement(child) && child.type === CarouselItem
41
+ );
42
+
43
+ const trackRef = useRef<HTMLDivElement>(null);
44
+ const [itemsWidth, setItemsWidth] = useState<number[]>([]);
45
+ const [scroll, setScroll] = useState<{
46
+ scrollProgress: number;
47
+ scrollTotal: number;
48
+ scrollVisible: number;
49
+ scroll: number;
50
+ } | null>(null);
51
+ const calculatePercentages = () => {
52
+ if (!trackRef.current || !ref.current || !scroll) return [];
53
+
54
+ const { scrollVisible, scrollProgress } = scroll;
55
+
56
+ function assignRelativeIndexes(
57
+ values: number[],
58
+ progressScroll: number
59
+ ): number[] {
60
+ return values.map(
61
+ (value) => (value - progressScroll) / Math.abs(values[1] - values[0])
62
+ );
63
+ }
64
+
65
+ let itemValues = items.map((_, index) => {
66
+ const itemRef = itemRefs[index];
67
+
68
+ if (!itemRef.current || !trackRef.current) return 0;
69
+
70
+ let itemScrollXCenter = index / (items.length - 1);
71
+
72
+ if (itemScrollXCenter > 1) itemScrollXCenter = 1;
73
+ if (itemScrollXCenter < 0) itemScrollXCenter = 0;
74
+
75
+ return itemScrollXCenter;
76
+ });
77
+
78
+ itemValues = assignRelativeIndexes(itemValues, scrollProgress);
79
+
80
+ let visible =
81
+ ((ref.current?.clientWidth ?? scrollVisible) - (outputRange[0] + gap)) /
82
+ (outputRange[1] + gap);
83
+
84
+ itemValues
85
+ .map((value, index) => ({ value: Math.abs(value), originalIndex: index })) // Associer chaque élément à son index
86
+ .sort((a, b) => a.value - b.value)
87
+ .forEach((item, index) => {
88
+ if (index === 0) setSelectedItem(item.originalIndex);
89
+ let result = normalize(visible, [0, 1], [0, outputRange[1]]);
90
+ if (result < outputRange[0]) result = outputRange[0];
91
+ visible--;
92
+ itemValues[item.originalIndex] = result;
93
+ });
94
+
95
+ return itemValues;
96
+ };
97
+ const itemRefs = useRef<React.RefObject<HTMLDivElement | null>[]>([]).current;
98
+ const [selectedItem, setSelectedItem] = useState(0);
99
+
100
+ useEffect(() => {
101
+ if (onChange) onChange(selectedItem);
102
+ }, [selectedItem]);
103
+
104
+ if (itemRefs.length !== items.length) {
105
+ items.forEach((_, i) => {
106
+ if (!itemRefs[i]) {
107
+ itemRefs[i] = React.createRef<HTMLDivElement>(); // Crée une nouvelle ref si manquante
108
+ }
109
+ });
110
+ }
111
+
112
+ const renderItems = items.map((child, index) => {
113
+ return React.cloneElement(
114
+ child as React.ReactElement<ReactProps<CarouselItemInterface>>,
115
+ {
116
+ width: itemsWidth[index],
117
+ ref: itemRefs[index],
118
+ key: index,
119
+ index,
120
+ }
121
+ );
122
+ });
123
+
124
+ const scrollProgress = motionValue(scroll?.scrollProgress ?? 0);
125
+
126
+ const transform = useTransform(
127
+ scrollProgress,
128
+ [0, 1],
129
+ [
130
+ 0,
131
+ 1 -
132
+ (ref.current?.clientWidth ?? 0) / (trackRef?.current?.clientWidth ?? 0),
133
+ ]
134
+ );
135
+
136
+ const percentTransform = useTransform(
137
+ transform,
138
+ (value) => `${-value * 100}%`
139
+ );
140
+
141
+ const handleScroll = (args: {
142
+ scrollProgress: number;
143
+ scrollTotal: number;
144
+ scrollVisible: number;
145
+ scroll: number;
146
+ }) => {
147
+ if (args.scrollTotal > 0) {
148
+ setScroll(args);
149
+ }
150
+ };
151
+
152
+ useEffect(() => {
153
+ const updatedPercentages = calculatePercentages();
154
+ setItemsWidth(updatedPercentages);
155
+ }, [scroll]);
156
+
157
+ const [scrollSize, setScrollSize] = useState(0);
158
+ useLayoutEffect(() => {
159
+ let maxWidth = outputRange[1];
160
+ if (scroll && maxWidth > scroll.scrollVisible) {
161
+ maxWidth = scroll.scrollVisible;
162
+ }
163
+ const result = ((maxWidth + gap) * renderItems.length) / scrollSensitivity;
164
+ setScrollSize(result);
165
+ }, [ref, itemRefs, scroll]);
166
+
167
+ return (
168
+ <div className={styles.carousel} ref={ref} {...restProps}>
169
+ <CustomScroll
170
+ draggable
171
+ orientation={'horizontal'}
172
+ onScroll={handleScroll}
173
+ scrollSize={scrollSize}
174
+ >
175
+ <motion.div
176
+ className={styles.track}
177
+ ref={trackRef}
178
+ style={{
179
+ transitionDuration: '0.5s',
180
+ transitionTimingFunction: 'ease-out',
181
+ gap: `${gap}px`,
182
+ x: percentTransform,
183
+ }}
184
+ >
185
+ {renderItems}
186
+ </motion.div>
187
+ </CustomScroll>
188
+ </div>
189
+ );
190
+ };
@@ -0,0 +1,53 @@
1
+ import React, { useRef } from 'react';
2
+ import { CarouselItemInterface } from '../interfaces';
3
+ import { motion } from 'motion/react';
4
+ import { carouselItemStyle } from '../styles';
5
+ import { MotionProps } from '../utils';
6
+
7
+ export const normalize = (
8
+ value: number,
9
+ inputRange: [number, number],
10
+ outputRange: [number, number] = [0, 1]
11
+ ): number => {
12
+ const [inputMin, inputMax] = inputRange;
13
+ const [outputMin, outputMax] = outputRange;
14
+
15
+ const clampedValue = Math.max(inputMin, Math.min(value, inputMax));
16
+
17
+ const normalizedValue = (clampedValue - inputMin) / (inputMax - inputMin);
18
+
19
+ return outputMin + normalizedValue * (outputMax - outputMin);
20
+ };
21
+ export const CarouselItem = ({
22
+ className,
23
+ children,
24
+ width = 1,
25
+ index = 0,
26
+ ref: optionalRef,
27
+ ...restProps
28
+ }: MotionProps<CarouselItemInterface>) => {
29
+ const defaultRef = useRef(null);
30
+ const ref: React.RefObject<null | HTMLDivElement> = optionalRef || defaultRef;
31
+
32
+ const styles = carouselItemStyle({
33
+ className,
34
+ index,
35
+ width: width,
36
+ children,
37
+ });
38
+
39
+ return (
40
+ <motion.div
41
+ ref={ref}
42
+ animate={{ width: width + 'px' }}
43
+ transition={{
44
+ duration: 0.5,
45
+ ease: 'linear',
46
+ }}
47
+ className={styles.carouselItem}
48
+ {...restProps}
49
+ >
50
+ {children}
51
+ </motion.div>
52
+ );
53
+ };
@@ -0,0 +1,13 @@
1
+ import { dividerStyle } from '../styles';
2
+ import { DividerInterface } from '../interfaces';
3
+ import { ReactProps } from '../utils';
4
+
5
+ export const Divider = ({
6
+ orientation = 'horizontal',
7
+ className,
8
+ ...restProps
9
+ }: ReactProps<DividerInterface>) => {
10
+ const styles = dividerStyle({ orientation, className });
11
+
12
+ return <hr className={styles.divider} {...restProps} />;
13
+ };
@@ -0,0 +1,109 @@
1
+ import React, { useRef } from 'react';
2
+ import { Icon } from '../icon';
3
+
4
+ import { RippleEffect } from '../effects/ripple';
5
+ import { AnimatePresence, motion } from 'motion/react';
6
+ import { FabInterface } from '../interfaces/fab.interface';
7
+ import { fabStyle } from '../styles/fab.style';
8
+ import { classNames } from '../utils';
9
+ import { ReactProps } from '../utils/component';
10
+ import { ToolTip } from './ToolTip';
11
+
12
+ export const Fab = ({
13
+ className,
14
+ label,
15
+ variant = 'primary',
16
+ size = 'medium',
17
+ href,
18
+ type,
19
+ icon,
20
+ isExtended = false,
21
+ ref,
22
+ transition,
23
+ ...restProps
24
+ }: ReactProps<FabInterface>) => {
25
+ const ElementType = href ? 'a' : 'button';
26
+
27
+ const styles = fabStyle({
28
+ href,
29
+ icon,
30
+ isExtended,
31
+ label,
32
+ size,
33
+ variant,
34
+ className,
35
+ transition,
36
+ });
37
+
38
+ transition = { duration: 0.3, ...transition };
39
+
40
+ const defaultRef = useRef(null);
41
+ const resolvedRef = ref || defaultRef;
42
+
43
+ const labelVariants = {
44
+ visible: {
45
+ width: 'auto',
46
+ marginLeft: 12,
47
+ opacity: 1,
48
+ transition: {
49
+ ...transition,
50
+ opacity: {
51
+ duration: transition.duration! / 2,
52
+ delay: transition.duration! - transition.duration! / 2,
53
+ },
54
+ },
55
+ },
56
+ hidden: {
57
+ width: 0,
58
+ marginLeft: 0,
59
+ opacity: 0,
60
+ transition: {
61
+ ...transition,
62
+ marginLeft: {
63
+ duration: transition.duration! / 2,
64
+ delay: transition.duration! - transition.duration! / 2,
65
+ },
66
+ },
67
+ },
68
+ };
69
+ return (
70
+ <ElementType
71
+ {...(restProps as any)}
72
+ ref={resolvedRef}
73
+ href={href}
74
+ aria-label={isExtended ? undefined : label}
75
+ className={styles.fab}
76
+ >
77
+ <ToolTip
78
+ trigger={isExtended ? null : undefined}
79
+ text={label}
80
+ targetRef={resolvedRef}
81
+ />
82
+ <span className={styles.stateLayer}>
83
+ <RippleEffect
84
+ colorName={classNames({
85
+ primary: variant == 'surface',
86
+ 'on-primary-container': variant == 'primary',
87
+ 'on-secondary-container': variant == 'secondary',
88
+ 'on-tertiary-container': variant == 'tertiary',
89
+ })}
90
+ triggerRef={resolvedRef}
91
+ />
92
+ </span>
93
+ <Icon icon={icon} className={styles.icon} />
94
+ <AnimatePresence>
95
+ {isExtended && (
96
+ <motion.span
97
+ variants={labelVariants}
98
+ initial="hidden"
99
+ animate="visible"
100
+ exit="hidden"
101
+ className={styles.label}
102
+ >
103
+ {label}
104
+ </motion.span>
105
+ )}
106
+ </AnimatePresence>
107
+ </ElementType>
108
+ );
109
+ };
@@ -0,0 +1,141 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+
3
+ import { Icon } from '../icon/icon';
4
+ import { IconButtonInterface } from '../interfaces/icon-button.interface';
5
+ import { iconButtonStyle } from '../styles/icon-button.style';
6
+ import { ReactProps } from '../utils/component';
7
+ import { RippleEffect } from '../effects';
8
+ import { classNames } from '../utils';
9
+ import { ToolTip } from './ToolTip';
10
+
11
+ export type IconButtonVariant = 'standard' | 'filled' | 'tonal' | 'outlined';
12
+
13
+ export const IconButton = ({
14
+ variant = 'standard',
15
+ href,
16
+ disabled = false,
17
+ type = 'button',
18
+ title,
19
+ arialLabel,
20
+ onToggle,
21
+ activated = false,
22
+ onClick,
23
+ icon,
24
+ size = 'medium',
25
+ iconSelected,
26
+ className,
27
+ ref,
28
+ width = 'default',
29
+ shape = 'rounded',
30
+ allowShapeTransformation = true,
31
+ transition,
32
+ ...restProps
33
+ }: ReactProps<IconButtonInterface>) => {
34
+ if (!title) {
35
+ title = arialLabel;
36
+ }
37
+
38
+ const [isActive, setIsActive] = React.useState(activated);
39
+ let handleClick;
40
+
41
+ if (!onToggle) {
42
+ handleClick = (e: React.MouseEvent<any, MouseEvent>) => {
43
+ if (disabled) {
44
+ e.preventDefault();
45
+ }
46
+ if (onClick) {
47
+ onClick(e);
48
+ }
49
+ };
50
+ } else if (onToggle) {
51
+ handleClick = (e: React.MouseEvent<any, MouseEvent>) => {
52
+ if (disabled) {
53
+ e.preventDefault();
54
+ }
55
+ setIsActive(!isActive);
56
+ onToggle(Boolean(isActive));
57
+ };
58
+ icon = isActive ? (iconSelected ? iconSelected : icon) : icon;
59
+ }
60
+ useEffect(() => {
61
+ setIsActive(activated);
62
+ }, [activated]);
63
+
64
+ // Détermine le type de l'élément à rendre : un bouton ou un lien
65
+ const ElementType = href ? 'a' : 'button';
66
+
67
+ const styles = iconButtonStyle({
68
+ transition,
69
+ shape,
70
+ allowShapeTransformation,
71
+ width,
72
+ href,
73
+ activated,
74
+ arialLabel,
75
+ iconSelected,
76
+ isActive,
77
+ onToggle,
78
+ disabled,
79
+ icon,
80
+ variant,
81
+ className,
82
+ size,
83
+ ...restProps,
84
+ });
85
+
86
+ const defaultRef = useRef<HTMLDivElement>(null);
87
+ const resolvedRef = ref || defaultRef;
88
+
89
+ transition = { duration: 0.3, ...transition };
90
+
91
+ return (
92
+ <ElementType
93
+ disabled={disabled}
94
+ href={href}
95
+ className={styles.iconButton}
96
+ aria-label={arialLabel}
97
+ {...(restProps as any)}
98
+ title={undefined}
99
+ onClick={handleClick}
100
+ ref={resolvedRef}
101
+ >
102
+ <ToolTip
103
+ targetRef={resolvedRef}
104
+ trigger={disabled ? null : undefined}
105
+ text={title}
106
+ ></ToolTip>
107
+ <div
108
+ style={{ transition: transition.duration + 's' }}
109
+ className={styles.container}
110
+ >
111
+ <div className={styles.stateLayer}>
112
+ {!disabled && (
113
+ <RippleEffect
114
+ colorName={classNames(
115
+ variant === 'standard' && {
116
+ 'on-surface-variant': !isActive,
117
+ primary: isActive,
118
+ },
119
+ variant === 'filled' && {
120
+ primary: !isActive && Boolean(onToggle),
121
+ 'inverse-on-surface': isActive || !onToggle,
122
+ },
123
+ variant === 'tonal' && {
124
+ 'on-surface-variant': !isActive && Boolean(onToggle),
125
+ 'on-secondary-container': isActive || !onToggle,
126
+ },
127
+ variant === 'outlined' && {
128
+ 'on-surface-variant': !isActive,
129
+ 'on-primary': isActive,
130
+ }
131
+ )}
132
+ triggerRef={resolvedRef}
133
+ />
134
+ )}
135
+ </div>
136
+
137
+ {icon && <Icon icon={icon} className={styles.icon} />}
138
+ </div>
139
+ </ElementType>
140
+ );
141
+ };
@@ -0,0 +1,178 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { ReactProps } from '../utils';
3
+ import {
4
+ NavigationRailItem,
5
+ NavigationRailSection,
6
+ } from './NavigationRailItem';
7
+ import { Fab } from './Fab';
8
+ import { navigationRailStyle } from '../styles/navigation-rail.style';
9
+ import { NavigationRailInterface } from '../interfaces/navigation-rail.interface';
10
+ import { FabInterface, NavigationRailItemInterface } from '../interfaces';
11
+ import { faBars, faXmark } from '@fortawesome/free-solid-svg-icons';
12
+ import { IconButton } from './IconButton';
13
+
14
+ export const NavigationRail = ({
15
+ variant = 'standard',
16
+ onItemSelected,
17
+ children,
18
+ className,
19
+ selectedItem: externalSelectedItem,
20
+ extended,
21
+ alignment = 'top',
22
+ menu = {
23
+ closed: {
24
+ icon: faBars,
25
+ label: 'Open menu',
26
+ },
27
+ opened: {
28
+ icon: faXmark,
29
+ label: 'Close menu',
30
+ },
31
+ },
32
+ style,
33
+ onExtendedChange,
34
+ transition,
35
+ setSelectedItem: externalSetSelectedItem,
36
+ }: ReactProps<NavigationRailInterface>) => {
37
+ const [internalSelectedItem, internalSetSelectedItem] = useState<
38
+ number | null
39
+ >(null);
40
+
41
+ const [isExtended, setIsExtended] = useState(extended);
42
+
43
+ let selectedItem: number | null;
44
+ if (externalSelectedItem == 0 || externalSelectedItem != undefined) {
45
+ selectedItem = externalSelectedItem;
46
+ } else {
47
+ selectedItem = internalSelectedItem;
48
+ }
49
+
50
+ const setSelectedItem = externalSetSelectedItem || internalSetSelectedItem;
51
+
52
+ const ref = React.useRef<HTMLDivElement | null>(null);
53
+
54
+ const handleOnItemSelected = (
55
+ args: { index: number } & Pick<
56
+ ReactProps<NavigationRailItemInterface>,
57
+ 'label' | 'icon'
58
+ > & {
59
+ ref: React.RefObject<any>;
60
+ }
61
+ ) => {
62
+ onItemSelected?.(args);
63
+ };
64
+
65
+ function flattenChildren(children: React.ReactNode): React.ReactNode[] {
66
+ const flatChildren: React.ReactNode[] = [];
67
+ React.Children.forEach(children, (child) => {
68
+ if (
69
+ React.isValidElement<{ children?: React.ReactNode }>(child) &&
70
+ child.type === React.Fragment
71
+ ) {
72
+ flatChildren.push(...flattenChildren(child.props.children));
73
+ } else {
74
+ flatChildren.push(child);
75
+ }
76
+ });
77
+ return flatChildren;
78
+ }
79
+
80
+ const childrenArray = flattenChildren(children);
81
+
82
+ const fab = childrenArray.filter(
83
+ (child) => React.isValidElement(child) && child.type === Fab
84
+ );
85
+
86
+ const styles = navigationRailStyle({
87
+ children,
88
+ onItemSelected,
89
+ selectedItem,
90
+ setSelectedItem,
91
+ className,
92
+ variant,
93
+ extended: isExtended,
94
+ isExtended,
95
+ alignment,
96
+ menu,
97
+ transition,
98
+ onExtendedChange,
99
+ });
100
+ transition = { duration: 0.3, ...transition };
101
+ const extendedOnly = useRef(false);
102
+ extendedOnly.current = false;
103
+
104
+ useEffect(() => {
105
+ onExtendedChange?.(isExtended ?? false);
106
+ }, [isExtended]);
107
+
108
+ return (
109
+ <div
110
+ style={{ transition: transition.duration + 's', ...style }}
111
+ ref={ref}
112
+ className={styles.navigationRail}
113
+ >
114
+ <div className={styles.header}>
115
+ <IconButton
116
+ onClick={() => setIsExtended(!isExtended)}
117
+ arialLabel={isExtended ? menu?.opened.label : menu?.closed.label}
118
+ className={styles.menuIcon}
119
+ icon={!isExtended ? menu?.closed.icon : menu.opened.icon}
120
+ />
121
+ {fab.length > 0 &&
122
+ React.cloneElement(
123
+ fab[0] as React.ReactElement<ReactProps<FabInterface>>,
124
+ {
125
+ transition: transition,
126
+ isExtended: isExtended,
127
+ className: '!shadow-none mx-5 ' + (fab[0] as any).props.className,
128
+ }
129
+ )}
130
+ </div>
131
+
132
+ <div className={styles.segments}>
133
+ {(() => {
134
+ let itemIndex = 0;
135
+ return childrenArray.map((child) => {
136
+ if (
137
+ React.isValidElement(child) &&
138
+ child.type === NavigationRailItem
139
+ ) {
140
+ return React.cloneElement(
141
+ child as React.ReactElement<
142
+ ReactProps<NavigationRailItemInterface>
143
+ >,
144
+ {
145
+ key: itemIndex,
146
+ index: itemIndex++, // Utilise et incrémente le compteur dédié
147
+ variant: isExtended ? 'horizontal' : 'vertical',
148
+ selectedItem,
149
+ setSelectedItem: setSelectedItem,
150
+ onItemSelected: handleOnItemSelected,
151
+ transition,
152
+ extendedOnly: extendedOnly.current,
153
+ isExtended,
154
+ }
155
+ );
156
+ }
157
+ if (React.isValidElement(child) && child.type === Fab) {
158
+ return null;
159
+ }
160
+ if (
161
+ React.isValidElement(child) &&
162
+ child.type === NavigationRailSection
163
+ ) {
164
+ extendedOnly.current = true;
165
+ if (!isExtended) return null;
166
+ return React.cloneElement(
167
+ child as React.ReactElement<{ label: string }>,
168
+ {}
169
+ );
170
+ }
171
+ return child;
172
+ });
173
+ })()}
174
+ </div>
175
+ <div className={'flex-1 max-h-[160px]'}></div>
176
+ </div>
177
+ );
178
+ };