@udixio/ui-react 2.10.12 → 2.10.14

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 (179) hide show
  1. package/dist/index.cjs +3 -3
  2. package/dist/index.js +2696 -2710
  3. package/dist/lib/effects/ThemeProvider.d.ts.map +1 -1
  4. package/dist/theme.worker.js +6633 -0
  5. package/package.json +4 -1
  6. package/.eslintrc.mjs +0 -22
  7. package/.storybook/main.ts +0 -20
  8. package/.storybook/preview.ts +0 -1
  9. package/CHANGELOG.md +0 -1130
  10. package/dist/scrollDriven-AP2yWhzi.js +0 -121
  11. package/postcss.config.mjs +0 -5
  12. package/src/index.css +0 -4
  13. package/src/index.ts +0 -1
  14. package/src/lib/components/AnchorPositioner.tsx +0 -185
  15. package/src/lib/components/Button.tsx +0 -208
  16. package/src/lib/components/Card.tsx +0 -47
  17. package/src/lib/components/Carousel.tsx +0 -437
  18. package/src/lib/components/CarouselItem.tsx +0 -61
  19. package/src/lib/components/Checkbox.tsx +0 -120
  20. package/src/lib/components/Chip.tsx +0 -341
  21. package/src/lib/components/Chips.tsx +0 -331
  22. package/src/lib/components/ContextMenu.tsx +0 -109
  23. package/src/lib/components/DatePicker.tsx +0 -432
  24. package/src/lib/components/Divider.tsx +0 -20
  25. package/src/lib/components/Fab.tsx +0 -127
  26. package/src/lib/components/FabMenu.tsx +0 -239
  27. package/src/lib/components/IconButton.tsx +0 -146
  28. package/src/lib/components/Menu.tsx +0 -88
  29. package/src/lib/components/MenuGroup.tsx +0 -34
  30. package/src/lib/components/MenuHeadline.tsx +0 -9
  31. package/src/lib/components/MenuItem.tsx +0 -215
  32. package/src/lib/components/NavigationRail.tsx +0 -186
  33. package/src/lib/components/NavigationRailItem.tsx +0 -227
  34. package/src/lib/components/ProgressIndicator.tsx +0 -214
  35. package/src/lib/components/SideSheet.tsx +0 -135
  36. package/src/lib/components/Slider.tsx +0 -374
  37. package/src/lib/components/Snackbar.tsx +0 -77
  38. package/src/lib/components/Switch.tsx +0 -107
  39. package/src/lib/components/Tab.tsx +0 -123
  40. package/src/lib/components/TabGroup.tsx +0 -66
  41. package/src/lib/components/TabGroupContext.tsx +0 -16
  42. package/src/lib/components/TabPanel.tsx +0 -27
  43. package/src/lib/components/TabPanels.tsx +0 -76
  44. package/src/lib/components/Tabs.tsx +0 -105
  45. package/src/lib/components/TextField.tsx +0 -586
  46. package/src/lib/components/Tooltip.tsx +0 -217
  47. package/src/lib/components/index.ts +0 -34
  48. package/src/lib/config/config.interface.ts +0 -9
  49. package/src/lib/config/define-config.ts +0 -16
  50. package/src/lib/config/index.ts +0 -2
  51. package/src/lib/effects/AnimateOnScroll.ts +0 -391
  52. package/src/lib/effects/State.tsx +0 -90
  53. package/src/lib/effects/SyncedFixedWrapper.tsx +0 -62
  54. package/src/lib/effects/ThemeProvider.tsx +0 -172
  55. package/src/lib/effects/block-scroll.effect.tsx +0 -313
  56. package/src/lib/effects/custom-scroll/custom-scroll.effect.tsx +0 -407
  57. package/src/lib/effects/custom-scroll/custom-scroll.interface.ts +0 -29
  58. package/src/lib/effects/custom-scroll/custom-scroll.style.ts +0 -32
  59. package/src/lib/effects/custom-scroll/index.ts +0 -3
  60. package/src/lib/effects/index.ts +0 -7
  61. package/src/lib/effects/ripple/RippleEffect.tsx +0 -116
  62. package/src/lib/effects/ripple/index.tsx +0 -1
  63. package/src/lib/effects/scrollDriven.ts +0 -239
  64. package/src/lib/effects/smooth-scroll.effect.tsx +0 -112
  65. package/src/lib/effects/theme.worker.ts +0 -97
  66. package/src/lib/hooks/index.ts +0 -10
  67. package/src/lib/hooks/useTooltipTrigger.ts +0 -270
  68. package/src/lib/icon/icon.tsx +0 -125
  69. package/src/lib/icon/index.ts +0 -1
  70. package/src/lib/index.ts +0 -8
  71. package/src/lib/interfaces/button.interface.ts +0 -65
  72. package/src/lib/interfaces/card.interface.ts +0 -11
  73. package/src/lib/interfaces/carousel-item.interface.ts +0 -12
  74. package/src/lib/interfaces/carousel.interface.ts +0 -41
  75. package/src/lib/interfaces/checkbox.interface.ts +0 -39
  76. package/src/lib/interfaces/chip.interface.ts +0 -97
  77. package/src/lib/interfaces/chips.interface.ts +0 -37
  78. package/src/lib/interfaces/date-picker.interface.ts +0 -79
  79. package/src/lib/interfaces/divider.interface.ts +0 -7
  80. package/src/lib/interfaces/fab-menu.interface.ts +0 -12
  81. package/src/lib/interfaces/fab.interface.ts +0 -27
  82. package/src/lib/interfaces/icon-button.interface.ts +0 -38
  83. package/src/lib/interfaces/index.ts +0 -26
  84. package/src/lib/interfaces/menu-group.interface.ts +0 -13
  85. package/src/lib/interfaces/menu-item.interface.ts +0 -29
  86. package/src/lib/interfaces/menu.interface.ts +0 -19
  87. package/src/lib/interfaces/navigation-rail-item.interface.ts +0 -39
  88. package/src/lib/interfaces/navigation-rail.interface.ts +0 -39
  89. package/src/lib/interfaces/progress-indicator.interface.ts +0 -41
  90. package/src/lib/interfaces/side-sheet.interface.tsx +0 -28
  91. package/src/lib/interfaces/slider.interface.ts +0 -27
  92. package/src/lib/interfaces/snackbar.interface.ts +0 -13
  93. package/src/lib/interfaces/switch.interface.ts +0 -14
  94. package/src/lib/interfaces/tab-group.interface.ts +0 -13
  95. package/src/lib/interfaces/tab-panels.interface.ts +0 -21
  96. package/src/lib/interfaces/tab.interface.ts +0 -31
  97. package/src/lib/interfaces/tabs.interface.ts +0 -22
  98. package/src/lib/interfaces/text-field.interface.ts +0 -61
  99. package/src/lib/interfaces/tooltip.interface.ts +0 -61
  100. package/src/lib/styles/button.style.ts +0 -136
  101. package/src/lib/styles/card.style.ts +0 -29
  102. package/src/lib/styles/carousel-item.style.ts +0 -24
  103. package/src/lib/styles/carousel.style.ts +0 -22
  104. package/src/lib/styles/checkbox.style.ts +0 -64
  105. package/src/lib/styles/chip.style.ts +0 -62
  106. package/src/lib/styles/chips.style.ts +0 -20
  107. package/src/lib/styles/date-picker.style.ts +0 -43
  108. package/src/lib/styles/divider.style.ts +0 -31
  109. package/src/lib/styles/fab-menu.style.ts +0 -29
  110. package/src/lib/styles/fab.style.ts +0 -49
  111. package/src/lib/styles/icon-button.style.ts +0 -168
  112. package/src/lib/styles/index.ts +0 -25
  113. package/src/lib/styles/menu-group.style.ts +0 -34
  114. package/src/lib/styles/menu-headline.style.ts +0 -20
  115. package/src/lib/styles/menu-item.style.ts +0 -45
  116. package/src/lib/styles/menu.style.ts +0 -32
  117. package/src/lib/styles/navigation-rail-item.style.ts +0 -56
  118. package/src/lib/styles/navigation-rail.style.ts +0 -36
  119. package/src/lib/styles/progress-indicator.style.ts +0 -72
  120. package/src/lib/styles/side-sheet.style.ts +0 -45
  121. package/src/lib/styles/slider.style.ts +0 -41
  122. package/src/lib/styles/snackbar.style.ts +0 -26
  123. package/src/lib/styles/switch.style.ts +0 -67
  124. package/src/lib/styles/tab-panels.style.ts +0 -35
  125. package/src/lib/styles/tab.style.ts +0 -78
  126. package/src/lib/styles/tabs.style.ts +0 -22
  127. package/src/lib/styles/text-field.style.ts +0 -115
  128. package/src/lib/styles/tooltip.style.ts +0 -48
  129. package/src/lib/utils/component-helper.ts +0 -134
  130. package/src/lib/utils/component.ts +0 -34
  131. package/src/lib/utils/index.ts +0 -7
  132. package/src/lib/utils/string.ts +0 -9
  133. package/src/lib/utils/styles/classnames.ts +0 -49
  134. package/src/lib/utils/styles/get-classname.ts +0 -96
  135. package/src/lib/utils/styles/index.ts +0 -4
  136. package/src/lib/utils/styles/use-classnames.ts +0 -25
  137. package/src/stories/action/button.stories.tsx +0 -86
  138. package/src/stories/action/fab.stories.tsx +0 -54
  139. package/src/stories/action/icon-button.stories.tsx +0 -134
  140. package/src/stories/assets/accessibility.png +0 -0
  141. package/src/stories/assets/accessibility.svg +0 -5
  142. package/src/stories/assets/addon-library.png +0 -0
  143. package/src/stories/assets/assets.png +0 -0
  144. package/src/stories/assets/context.png +0 -0
  145. package/src/stories/assets/discord.svg +0 -15
  146. package/src/stories/assets/docs.png +0 -0
  147. package/src/stories/assets/figma-plugin.png +0 -0
  148. package/src/stories/assets/github.svg +0 -3
  149. package/src/stories/assets/share.png +0 -0
  150. package/src/stories/assets/styling.png +0 -0
  151. package/src/stories/assets/testing.png +0 -0
  152. package/src/stories/assets/theming.png +0 -0
  153. package/src/stories/assets/tutorials.svg +0 -12
  154. package/src/stories/assets/youtube.svg +0 -4
  155. package/src/stories/communication/ProgressIndicator.stories.tsx +0 -57
  156. package/src/stories/communication/SnackBar.stories.tsx +0 -32
  157. package/src/stories/communication/tool-tip.stories.tsx +0 -133
  158. package/src/stories/containment/card.stories.tsx +0 -42
  159. package/src/stories/containment/carousel.stories.tsx +0 -65
  160. package/src/stories/containment/divider.stories.tsx +0 -35
  161. package/src/stories/containment/slide-sheet.stories.tsx +0 -45
  162. package/src/stories/effect/smooth-scroll.stories.tsx +0 -54
  163. package/src/stories/navigation/navigation-rail/navigation-rail-item.stories.tsx +0 -65
  164. package/src/stories/navigation/navigation-rail/navigation-rail.stories.tsx +0 -122
  165. package/src/stories/navigation/tabs/tab.stories.tsx +0 -57
  166. package/src/stories/navigation/tabs/tabs.stories.tsx +0 -102
  167. package/src/stories/selection/slider.stories.tsx +0 -85
  168. package/src/stories/selection/switch.stories.tsx +0 -46
  169. package/src/stories/text-inputs/text-field.stories.tsx +0 -135
  170. package/src/tests/Button.spec.tsx +0 -67
  171. package/src/tests/useClassNames.spec.tsx +0 -82
  172. package/src/udixio.css +0 -120
  173. package/theme.config.ts +0 -7
  174. package/tsconfig.json +0 -16
  175. package/tsconfig.lib.json +0 -51
  176. package/tsconfig.spec.json +0 -37
  177. package/tsconfig.storybook.json +0 -38
  178. package/vite.config.ts +0 -82
  179. /package/dist/{scrollDriven-DWAu7CR0.cjs → scrollDriven.js} +0 -0
@@ -1,66 +0,0 @@
1
- import React, { useId, useMemo, useRef, useState } from 'react';
2
- import { TabGroupContext, TabGroupContextValue } from './TabGroupContext';
3
- import { TabGroupInterface } from '../interfaces/tab-group.interface';
4
- import { ReactProps } from '../utils/component';
5
-
6
- /**
7
- * TabGroup provides shared state for Tabs and TabPanels
8
- * @status beta
9
- * @parent Tabs
10
- * @category Navigation
11
- * @devx
12
- * - Provides selection + slide direction for Tabs/TabPanels.
13
- * @limitations
14
- * - No URL/hash syncing or persistence built in.
15
- */
16
- export const TabGroup = ({
17
- children,
18
- selectedTab: externalSelectedTab,
19
- setSelectedTab: externalSetSelectedTab,
20
- defaultTab = 0,
21
- }: ReactProps<TabGroupInterface>) => {
22
- const [internalSelectedTab, internalSetSelectedTab] = useState<number | null>(
23
- defaultTab,
24
- );
25
- const previousTabRef = useRef<number | null>(null);
26
-
27
- // Priorité : props externes > état interne
28
- const selectedTab =
29
- externalSelectedTab !== undefined
30
- ? externalSelectedTab
31
- : internalSelectedTab;
32
-
33
- const setSelectedTab = externalSetSelectedTab ?? internalSetSelectedTab;
34
-
35
- // Calculer la direction du slide
36
- const direction =
37
- previousTabRef.current !== null && selectedTab !== null
38
- ? selectedTab > previousTabRef.current
39
- ? 1
40
- : -1
41
- : 0;
42
-
43
- // Mettre à jour la référence précédente
44
- if (selectedTab !== previousTabRef.current) {
45
- previousTabRef.current = selectedTab;
46
- }
47
-
48
- const id = useId();
49
-
50
- const contextValue: TabGroupContextValue = useMemo(
51
- () => ({
52
- selectedTab,
53
- setSelectedTab,
54
- previousTab: previousTabRef.current,
55
- direction,
56
- tabsId: id,
57
- }),
58
- [selectedTab, setSelectedTab, direction, id],
59
- );
60
-
61
- return (
62
- <TabGroupContext.Provider value={contextValue}>
63
- {children}
64
- </TabGroupContext.Provider>
65
- );
66
- };
@@ -1,16 +0,0 @@
1
- import { createContext, Dispatch, SetStateAction } from 'react';
2
-
3
- /**
4
- * Shared state container for Tabs and TabPanels.
5
- * @parent Tabs
6
- * @internal
7
- */
8
- export interface TabGroupContextValue {
9
- selectedTab: number | null;
10
- setSelectedTab: Dispatch<SetStateAction<number | null>>;
11
- previousTab: number | null;
12
- direction: number;
13
- tabsId: string;
14
- }
15
-
16
- export const TabGroupContext = createContext<TabGroupContextValue | null>(null);
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
- import { TabPanelInterface } from '../interfaces/tab-panels.interface';
3
- import { ReactProps } from '../utils/component';
4
- import { useTabPanelStyle } from '../styles/tab-panels.style';
5
-
6
- /**
7
- * TabPanel contains the content for a single tab
8
- * Must be used within TabPanels
9
- * @status beta
10
- * @parent Tabs
11
- * @category Navigation
12
- * @devx
13
- * - Should be rendered inside `TabPanels` for animations and aria wiring.
14
- */
15
- export const TabPanel = ({
16
- children,
17
- className,
18
- isSelected = false,
19
- }: ReactProps<TabPanelInterface>) => {
20
- const styles = useTabPanelStyle({
21
- children,
22
- className,
23
- isSelected,
24
- });
25
-
26
- return <div className={styles.tabPanel}>{children}</div>;
27
- };
@@ -1,76 +0,0 @@
1
- import React, { useContext } from 'react';
2
- import { AnimatePresence, motion } from 'motion/react';
3
- import { TabGroupContext } from './TabGroupContext';
4
- import { TabPanelsInterface } from '../interfaces/tab-panels.interface';
5
- import { ReactProps } from '../utils/component';
6
- import { useTabPanelsStyle } from '../styles/tab-panels.style';
7
- import { TabPanel } from './TabPanel';
8
-
9
- /**
10
- * TabPanels renders the content panels with slide animation
11
- * Must be used within a TabGroup
12
- * @status beta
13
- * @parent Tabs
14
- * @category Navigation
15
- * @devx
16
- * - Requires `TabGroup` context; otherwise it renders nothing.
17
- * @limitations
18
- * - Only renders the active panel (no offscreen preservation).
19
- */
20
- export const TabPanels = ({
21
- children,
22
- className,
23
- }: ReactProps<TabPanelsInterface>) => {
24
- const context = useContext(TabGroupContext);
25
-
26
- if (!context) {
27
- console.warn('TabPanels must be used within a TabGroup');
28
- return null;
29
- }
30
-
31
- const { selectedTab, direction, tabsId } = context;
32
-
33
- const panelChildren = React.Children.toArray(children).filter(
34
- (child) => React.isValidElement(child) && child.type === TabPanel,
35
- ) as React.ReactElement[];
36
-
37
- const styles = useTabPanelsStyle({
38
- children,
39
- className,
40
- });
41
-
42
- return (
43
- <div className={styles.tabPanels}>
44
- <AnimatePresence initial={false} custom={direction} mode="popLayout">
45
- {panelChildren.map(
46
- (child, index) =>
47
- selectedTab === index && (
48
- <motion.div
49
- key={index}
50
- custom={direction}
51
- variants={{
52
- enter: (dir: number) => ({
53
- x: dir * 100 + '%',
54
- opacity: 1,
55
- }),
56
- center: { x: 0, opacity: 1 },
57
- exit: (dir: number) => ({
58
- x: dir * -100 + '%',
59
- opacity: 1,
60
- }),
61
- }}
62
- initial="enter"
63
- animate="center"
64
- exit="exit"
65
- transition={{ type: 'spring', stiffness: 400, damping: 40 }}
66
- role="tabpanel"
67
- aria-labelledby={`tab-${tabsId}-${index}`}
68
- >
69
- {React.cloneElement(child, { isSelected: true })}
70
- </motion.div>
71
- ),
72
- )}
73
- </AnimatePresence>
74
- </div>
75
- );
76
- };
@@ -1,105 +0,0 @@
1
- import React, { useContext, useMemo, useState } from 'react';
2
- import { v4 as uuidv4 } from 'uuid';
3
- import { TabsInterface } from '../interfaces/tabs.interface';
4
-
5
- import { useTabsStyle } from '../styles/tabs.style';
6
- import { ReactProps } from '../utils/component';
7
- import { TabProps } from '../interfaces/tab.interface';
8
- import { Tab } from './Tab';
9
- import { TabGroupContext } from './TabGroupContext';
10
-
11
- /**
12
- * Tabs organize content across different screens and views
13
- * @status beta
14
- * @category Navigation
15
- * @devx
16
- * - Can be controlled via `selectedTab`/`setSelectedTab` or through `TabGroup`.
17
- * @a11y
18
- * - No keyboard navigation or roving tabindex.
19
- */
20
- export const Tabs = ({
21
- variant = 'primary',
22
- onTabSelected,
23
- children,
24
- className,
25
- selectedTab: externalSelectedTab,
26
- setSelectedTab: externalSetSelectedTab,
27
- scrollable = false,
28
- }: ReactProps<TabsInterface>) => {
29
- const tabGroupContext = useContext(TabGroupContext);
30
-
31
- const [internalSelectedTab, internalSetSelectedTab] = useState<number | null>(
32
- null,
33
- );
34
-
35
- // Priorité : props > context > état interne
36
- let selectedTab: number | null;
37
- if (externalSelectedTab === 0 || externalSelectedTab != undefined) {
38
- selectedTab = externalSelectedTab;
39
- } else if (tabGroupContext) {
40
- selectedTab = tabGroupContext.selectedTab;
41
- } else {
42
- selectedTab = internalSelectedTab;
43
- }
44
-
45
- const setSelectedTab =
46
- externalSetSelectedTab ?? tabGroupContext?.setSelectedTab ?? internalSetSelectedTab;
47
-
48
- const tabChildren = React.Children.toArray(children).filter(
49
- (child) => React.isValidElement(child) && child.type === Tab,
50
- ) as React.ReactElement<TabProps>[];
51
-
52
- const ref = React.useRef<HTMLDivElement | null>(null);
53
-
54
- const handleOnTabSelected = (
55
- args: { index: number } & Pick<TabProps, 'label' | 'icon'> & {
56
- ref: React.RefObject<any>;
57
- },
58
- ) => {
59
- onTabSelected?.(args);
60
-
61
- if (scrollable) {
62
- const tabs: HTMLElement = ref.current!;
63
- const tabSelected: HTMLElement = args.ref.current;
64
- if (tabs && tabSelected) {
65
- const scrollLeft =
66
- tabSelected.offsetLeft +
67
- tabSelected.offsetWidth / 2 -
68
- tabs.offsetWidth / 2;
69
- tabs.scrollTo({ left: scrollLeft, behavior: 'smooth' });
70
- }
71
- }
72
- };
73
-
74
- const tabsId = useMemo(
75
- () => tabGroupContext?.tabsId ?? uuidv4(),
76
- [tabGroupContext?.tabsId],
77
- );
78
-
79
- const styles = useTabsStyle({
80
- children,
81
- onTabSelected,
82
- scrollable,
83
- selectedTab,
84
- setSelectedTab,
85
- className,
86
- variant,
87
- });
88
-
89
- return (
90
- <div ref={ref} role="tablist" className={styles.tabs}>
91
- {tabChildren.map((child, index) => {
92
- return React.cloneElement(child, {
93
- key: index,
94
- index,
95
- variant: variant,
96
- selectedTab,
97
- setSelectedTab: setSelectedTab,
98
- tabsId: tabsId,
99
- onTabSelected: handleOnTabSelected,
100
- scrollable,
101
- });
102
- })}
103
- </div>
104
- );
105
- };