norma-library 0.5.145 → 0.5.147

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 (170) hide show
  1. package/.babelrc.json +18 -18
  2. package/.prettierignore +10 -10
  3. package/.prettierrc.json +20 -20
  4. package/.storybook/main.ts +20 -20
  5. package/.storybook/preview.ts +15 -15
  6. package/README.md +43 -43
  7. package/commitlint.config.js +1 -1
  8. package/dist/esm/components/StatusModal/StatusModal.d.ts +1 -0
  9. package/dist/esm/components/StatusModal/StatusModal.js +2 -2
  10. package/dist/esm/components/StatusModal/StatusModal.js.map +1 -1
  11. package/dist/esm/components/StatusModal/StatusModal.style.d.ts +3 -1
  12. package/dist/esm/components/StatusModal/StatusModal.style.js +1 -1
  13. package/dist/esm/components/StatusModal/StatusModal.style.js.map +1 -1
  14. package/dist/esm/helpers/colors.d.ts +4 -0
  15. package/dist/esm/helpers/colors.js +30 -0
  16. package/dist/esm/helpers/colors.js.map +1 -1
  17. package/docs/index.md +118 -118
  18. package/package.json +136 -136
  19. package/src/components/Accordion.tsx +39 -39
  20. package/src/components/Avatar.tsx +17 -17
  21. package/src/components/Badge.tsx +14 -14
  22. package/src/components/Box/index.tsx +12 -12
  23. package/src/components/Box/interfaces.ts +3 -3
  24. package/src/components/Box/styles.tsx +22 -22
  25. package/src/components/Breadcrumb/index.tsx +27 -27
  26. package/src/components/Breadcrumb/interface.ts +8 -8
  27. package/src/components/Breadcrumb/styles.tsx +32 -32
  28. package/src/components/Button.tsx +26 -26
  29. package/src/components/Card.tsx +37 -37
  30. package/src/components/ChatMessage.tsx +87 -87
  31. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  32. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  33. package/src/components/CheckBox.tsx +21 -21
  34. package/src/components/DateInput/index.tsx +34 -34
  35. package/src/components/DateInput/interface.ts +13 -13
  36. package/src/components/DateInput/styles.tsx +27 -27
  37. package/src/components/DatePicker.tsx +67 -67
  38. package/src/components/DropDown.tsx +24 -24
  39. package/src/components/IconButton.tsx +37 -37
  40. package/src/components/Icons.tsx +82 -82
  41. package/src/components/Modal.tsx +103 -103
  42. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  43. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  44. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  45. package/src/components/MultiSelectInput/index.tsx +60 -60
  46. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  47. package/src/components/MultiSelectInput/styles.tsx +43 -43
  48. package/src/components/Paper.tsx +12 -12
  49. package/src/components/ProgressBar.tsx +71 -71
  50. package/src/components/RadioGroup.tsx +43 -43
  51. package/src/components/RangerSlider.tsx +65 -65
  52. package/src/components/Select.tsx +74 -74
  53. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  54. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  55. package/src/components/SelectInput/index.tsx +45 -45
  56. package/src/components/SelectInput/interfaces.ts +15 -15
  57. package/src/components/SelectInput/styles.tsx +31 -31
  58. package/src/components/StatusModal/StatusModal.style.tsx +75 -75
  59. package/src/components/StatusModal/StatusModal.tsx +58 -57
  60. package/src/components/Svgs.tsx +506 -506
  61. package/src/components/Table/components/header/index.tsx +86 -86
  62. package/src/components/Table/components/header/styles.tsx +59 -59
  63. package/src/components/Table/components/index.tsx +8 -8
  64. package/src/components/Table/components/pagination/index.tsx +39 -39
  65. package/src/components/Table/components/pagination/styles.tsx +28 -28
  66. package/src/components/Table/components/tbody/index.tsx +30 -30
  67. package/src/components/Table/components/tbody/styles.tsx +4 -4
  68. package/src/components/Table/index.tsx +317 -317
  69. package/src/components/Table/interface.ts +23 -23
  70. package/src/components/Table/styles.tsx +117 -117
  71. package/src/components/Tabs.tsx +105 -105
  72. package/src/components/Tag.tsx +33 -33
  73. package/src/components/TextField.tsx +19 -19
  74. package/src/components/TextInput/index.tsx +37 -37
  75. package/src/components/TextInput/interface.ts +9 -9
  76. package/src/components/TextInput/styles.tsx +23 -23
  77. package/src/components/TimeLine.tsx +89 -89
  78. package/src/components/TimePicker.tsx +78 -78
  79. package/src/components/Typography/Text/index.tsx +20 -20
  80. package/src/components/Typography/Text/interfaces.ts +5 -5
  81. package/src/components/Typography/Text/styles.tsx +40 -40
  82. package/src/components/Typography/Title/index.tsx +22 -22
  83. package/src/components/Typography/Title/interfaces.ts +6 -6
  84. package/src/components/Typography/Title/styles.tsx +40 -40
  85. package/src/components/Typography/index.tsx +6 -6
  86. package/src/components/UncontrolledTable/components/header/index.tsx +63 -63
  87. package/src/components/UncontrolledTable/components/header/styles.tsx +60 -60
  88. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  89. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  90. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  91. package/src/components/UncontrolledTable/components/tbody/index.tsx +33 -33
  92. package/src/components/UncontrolledTable/components/tbody/styles.tsx +25 -25
  93. package/src/components/UncontrolledTable/index.tsx +221 -221
  94. package/src/components/UncontrolledTable/interface.ts +43 -43
  95. package/src/components/UncontrolledTable/styles.tsx +116 -116
  96. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +56 -56
  97. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +68 -68
  98. package/src/components/index.ts +24 -24
  99. package/src/helpers/alignments.ts +14 -14
  100. package/src/helpers/borders.ts +18 -18
  101. package/src/helpers/colors.ts +241 -206
  102. package/src/helpers/index.ts +5 -5
  103. package/src/helpers/radios.ts +24 -24
  104. package/src/helpers/sizes.ts +72 -72
  105. package/src/hooks/useClickOutside.tsx +18 -18
  106. package/src/index.ts +66 -66
  107. package/src/interfaces/Accordion.ts +12 -12
  108. package/src/interfaces/Avatar.tsx +15 -15
  109. package/src/interfaces/Badge.ts +19 -19
  110. package/src/interfaces/Button.ts +22 -22
  111. package/src/interfaces/Card.ts +11 -11
  112. package/src/interfaces/ChatMessage.ts +12 -12
  113. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  114. package/src/interfaces/CheckBox.ts +27 -27
  115. package/src/interfaces/DatePicker.ts +13 -13
  116. package/src/interfaces/DropDown.ts +14 -14
  117. package/src/interfaces/IconButton.ts +22 -22
  118. package/src/interfaces/Icons.ts +17 -17
  119. package/src/interfaces/Modal.ts +18 -18
  120. package/src/interfaces/Paper.ts +12 -12
  121. package/src/interfaces/ProgressBar.ts +29 -29
  122. package/src/interfaces/RadioGroup.ts +23 -23
  123. package/src/interfaces/RangerSlider.ts +21 -21
  124. package/src/interfaces/Select.ts +17 -17
  125. package/src/interfaces/Tabs.ts +19 -19
  126. package/src/interfaces/Tag.ts +17 -17
  127. package/src/interfaces/TextField.ts +44 -44
  128. package/src/interfaces/TimeLine.ts +11 -11
  129. package/src/interfaces/TimePicker.ts +13 -13
  130. package/src/interfaces/index.ts +23 -23
  131. package/src/providers/NormaProvider.tsx +13 -13
  132. package/src/sample-data-2.json +178 -178
  133. package/src/sample-data.json +177 -177
  134. package/src/stories/Accordion.stories.tsx +65 -65
  135. package/src/stories/Avatar.stories.tsx +123 -123
  136. package/src/stories/Badge.stories.tsx +39 -39
  137. package/src/stories/Box.stories.tsx +35 -35
  138. package/src/stories/Breadcrumb.stories.tsx +44 -44
  139. package/src/stories/Button.stories.tsx +93 -93
  140. package/src/stories/Card.stories.tsx +39 -39
  141. package/src/stories/ChatMessage.stories.tsx +84 -84
  142. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  143. package/src/stories/CheckBox.stories.tsx +88 -88
  144. package/src/stories/DateInput.stories.tsx +51 -51
  145. package/src/stories/DatePicker.stories.tsx +50 -50
  146. package/src/stories/DropDown.stories.tsx +57 -57
  147. package/src/stories/IconButton.stories.tsx +78 -78
  148. package/src/stories/Modal.stories.tsx +246 -246
  149. package/src/stories/ModalStatus.stories.tsx +46 -46
  150. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  151. package/src/stories/Paper.stories.tsx +53 -53
  152. package/src/stories/ProgressBar.stories.tsx +116 -116
  153. package/src/stories/RadioGroup.stories.tsx +87 -87
  154. package/src/stories/RangerSlider.stories.tsx +149 -149
  155. package/src/stories/Select.stories.tsx +100 -100
  156. package/src/stories/SelectInput.stories.tsx +78 -78
  157. package/src/stories/Table.stories.tsx +372 -372
  158. package/src/stories/Tabs.stories.tsx +61 -61
  159. package/src/stories/Tag.stories.tsx +56 -56
  160. package/src/stories/Text.stories.tsx +37 -37
  161. package/src/stories/TextField.stories.tsx +310 -310
  162. package/src/stories/TextInput.stories.tsx +52 -52
  163. package/src/stories/TimeLine.stories.tsx +35 -35
  164. package/src/stories/TimePicker.stories.tsx +87 -87
  165. package/src/stories/Title.stories.tsx +43 -43
  166. package/src/stories/UncontrolledTable.stories.tsx +305 -305
  167. package/src/stories/UncontrolledTabs.stories.tsx +63 -63
  168. package/src/styles/globals.scss +17 -17
  169. package/src/types/index.ts +204 -204
  170. package/vite.config.ts +15 -15
@@ -1,116 +1,116 @@
1
- import styled from 'styled-components';
2
-
3
- export const Container = styled.div`
4
- background-color: #fff;
5
- `;
6
-
7
- export const Table = styled.table`
8
- display: table;
9
- width: 100%;
10
- border-collapse: collapse;
11
- border-spacing: 0;
12
- min-width: 650px;
13
- border: none;
14
- `;
15
-
16
- const StickyStyles = `
17
- position: sticky;
18
- top: 0;
19
- z-index: 99;
20
- background: #fff;
21
- `;
22
-
23
- export const Thead = styled.thead<{ $sticky?: boolean }>`
24
- display: table-header-group;
25
- ${props => props.$sticky && StickyStyles}
26
- `;
27
-
28
- export const TableRow = styled.tr`
29
- color: inherit;
30
- display: table-row;
31
- vertical-align: middle;
32
- outline: 0;
33
- `;
34
-
35
- export const Th = styled.th`
36
- font-weight: 500;
37
- font-size: 0.875rem;
38
- line-height: 1.5rem;
39
- letter-spacing: 0.01071em;
40
- display: table-cell;
41
- vertical-align: inherit;
42
- border-bottom: 1px solid rgba(224, 224, 224, 1);
43
- text-align: left;
44
- padding: 16px;
45
- color: rgba(0, 0, 0, 0.87);
46
- color: #666666;
47
- font-size: 0.875rem;
48
- font-weight: 700;
49
- `;
50
-
51
- export const ColumnContent = styled.div`
52
- display: flex;
53
- align-items: center;
54
- gap: 5px;
55
- `;
56
-
57
- export const TextColumn = styled.span``;
58
-
59
- export const IconFilterDialog = styled.div`
60
- height: 20px;
61
- width: 20px;
62
- `;
63
-
64
- export const FilterDialog = styled.div`
65
- position: absolute;
66
- padding: 10px 0;
67
- margin: 6px 0px 0 0;
68
- width: max-content;
69
- background: #fff;
70
- box-shadow: 0px 3px 6px #00000029;
71
- border: 1px solid #e0e0e0;
72
- z-index: 99;
73
- `;
74
-
75
- export const ListFilterDialog = styled.div`
76
- display: flex;
77
- flex-direction: column;
78
- .label {
79
- margin: 0 0 8px 0;
80
- color: #666666;
81
- font-size: 14px;
82
- font-weight: 400;
83
- text-align: left;
84
- }
85
- .select {
86
- border: 1px solid #e0e0e0;
87
- padding: 8px 12px;
88
- }
89
- `;
90
-
91
- export const OptionFilterDialog = styled.div`
92
- display: flex;
93
- gap: 16px;
94
- align-items: center;
95
- padding: 6px 15px;
96
- cursor: pointer;
97
- &:hover {
98
- background: rgba(0, 0, 0, 0.04);
99
- }
100
- .icon {
101
- color: #666;
102
- }
103
- .rotate {
104
- rotate: 180deg;
105
- }
106
- div {
107
- width: 20px;
108
- height: 20px;
109
- }
110
- p {
111
- margin: 0;
112
- color: #666666;
113
- font-size: 16px;
114
- font-weight: 400;
115
- }
116
- `;
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ background-color: #fff;
5
+ `;
6
+
7
+ export const Table = styled.table`
8
+ display: table;
9
+ width: 100%;
10
+ border-collapse: collapse;
11
+ border-spacing: 0;
12
+ min-width: 650px;
13
+ border: none;
14
+ `;
15
+
16
+ const StickyStyles = `
17
+ position: sticky;
18
+ top: 0;
19
+ z-index: 99;
20
+ background: #fff;
21
+ `;
22
+
23
+ export const Thead = styled.thead<{ $sticky?: boolean }>`
24
+ display: table-header-group;
25
+ ${props => props.$sticky && StickyStyles}
26
+ `;
27
+
28
+ export const TableRow = styled.tr`
29
+ color: inherit;
30
+ display: table-row;
31
+ vertical-align: middle;
32
+ outline: 0;
33
+ `;
34
+
35
+ export const Th = styled.th`
36
+ font-weight: 500;
37
+ font-size: 0.875rem;
38
+ line-height: 1.5rem;
39
+ letter-spacing: 0.01071em;
40
+ display: table-cell;
41
+ vertical-align: inherit;
42
+ border-bottom: 1px solid rgba(224, 224, 224, 1);
43
+ text-align: left;
44
+ padding: 16px;
45
+ color: rgba(0, 0, 0, 0.87);
46
+ color: #666666;
47
+ font-size: 0.875rem;
48
+ font-weight: 700;
49
+ `;
50
+
51
+ export const ColumnContent = styled.div`
52
+ display: flex;
53
+ align-items: center;
54
+ gap: 5px;
55
+ `;
56
+
57
+ export const TextColumn = styled.span``;
58
+
59
+ export const IconFilterDialog = styled.div`
60
+ height: 20px;
61
+ width: 20px;
62
+ `;
63
+
64
+ export const FilterDialog = styled.div`
65
+ position: absolute;
66
+ padding: 10px 0;
67
+ margin: 6px 0px 0 0;
68
+ width: max-content;
69
+ background: #fff;
70
+ box-shadow: 0px 3px 6px #00000029;
71
+ border: 1px solid #e0e0e0;
72
+ z-index: 99;
73
+ `;
74
+
75
+ export const ListFilterDialog = styled.div`
76
+ display: flex;
77
+ flex-direction: column;
78
+ .label {
79
+ margin: 0 0 8px 0;
80
+ color: #666666;
81
+ font-size: 14px;
82
+ font-weight: 400;
83
+ text-align: left;
84
+ }
85
+ .select {
86
+ border: 1px solid #e0e0e0;
87
+ padding: 8px 12px;
88
+ }
89
+ `;
90
+
91
+ export const OptionFilterDialog = styled.div`
92
+ display: flex;
93
+ gap: 16px;
94
+ align-items: center;
95
+ padding: 6px 15px;
96
+ cursor: pointer;
97
+ &:hover {
98
+ background: rgba(0, 0, 0, 0.04);
99
+ }
100
+ .icon {
101
+ color: #666;
102
+ }
103
+ .rotate {
104
+ rotate: 180deg;
105
+ }
106
+ div {
107
+ width: 20px;
108
+ height: 20px;
109
+ }
110
+ p {
111
+ margin: 0;
112
+ color: #666666;
113
+ font-size: 16px;
114
+ font-weight: 400;
115
+ }
116
+ `;
@@ -1,56 +1,56 @@
1
- import React from 'react';
2
- import { styled } from '@mui/material/styles';
3
- import { TabsProps } from '@mui/material/Tabs';
4
-
5
- import { Tab, Tabs } from '@mui/material';
6
- import { ColorVariant } from '@/types';
7
- import { palette } from '../../helpers';
8
-
9
- const colorMap: Record<ColorVariant, string> = {
10
- inherit: palette.inherit,
11
- primary: palette.primary,
12
- secondary: palette.secondary,
13
- error: palette.error,
14
- warning: palette.warning,
15
- info: palette.info,
16
- success: palette.success,
17
- };
18
-
19
- interface StyledTabProps {
20
- label: string;
21
- color: ColorVariant;
22
- }
23
-
24
- export const NormaTabs: React.ComponentType<TabsProps & { color: ColorVariant }> = styled(Tabs)<{
25
- color: ColorVariant;
26
- }>(({ color }) => ({
27
- borderBottom: '1px solid #e8e8e8',
28
- '& .Mui-selected': {
29
- color: colorMap[color],
30
- },
31
- '& .MuiTabs-indicator': {
32
- backgroundColor: colorMap[color],
33
- },
34
- '& .MuiButtonBase-root': {
35
- textTransform: 'none',
36
- },
37
- }));
38
-
39
- export const NormaTab: React.ComponentType<StyledTabProps> = styled((props: StyledTabProps) => (
40
- <Tab disableRipple {...props} />
41
- ))(({ theme, color }) => ({
42
- textTransform: 'none',
43
- fontWeight: theme.typography.fontWeightRegular,
44
- fontSize: theme.typography.pxToRem(15),
45
- marginRight: theme.spacing(1),
46
- color: '#666666',
47
- padding: '5px 15px',
48
- top: '5px',
49
- minWidth: '60px',
50
- '&.Mui-selected': {
51
- color: colorMap[color],
52
- },
53
- '&.Mui-focusVisible': {
54
- backgroundColor: 'rgba(100, 95, 228, 0.32)',
55
- },
56
- }));
1
+ import React from 'react';
2
+ import { styled } from '@mui/material/styles';
3
+ import { TabsProps } from '@mui/material/Tabs';
4
+
5
+ import { Tab, Tabs } from '@mui/material';
6
+ import { ColorVariant } from '@/types';
7
+ import { palette } from '../../helpers';
8
+
9
+ const colorMap: Record<ColorVariant, string> = {
10
+ inherit: palette.inherit,
11
+ primary: palette.primary,
12
+ secondary: palette.secondary,
13
+ error: palette.error,
14
+ warning: palette.warning,
15
+ info: palette.info,
16
+ success: palette.success,
17
+ };
18
+
19
+ interface StyledTabProps {
20
+ label: string;
21
+ color: ColorVariant;
22
+ }
23
+
24
+ export const NormaTabs: React.ComponentType<TabsProps & { color: ColorVariant }> = styled(Tabs)<{
25
+ color: ColorVariant;
26
+ }>(({ color }) => ({
27
+ borderBottom: '1px solid #e8e8e8',
28
+ '& .Mui-selected': {
29
+ color: colorMap[color],
30
+ },
31
+ '& .MuiTabs-indicator': {
32
+ backgroundColor: colorMap[color],
33
+ },
34
+ '& .MuiButtonBase-root': {
35
+ textTransform: 'none',
36
+ },
37
+ }));
38
+
39
+ export const NormaTab: React.ComponentType<StyledTabProps> = styled((props: StyledTabProps) => (
40
+ <Tab disableRipple {...props} />
41
+ ))(({ theme, color }) => ({
42
+ textTransform: 'none',
43
+ fontWeight: theme.typography.fontWeightRegular,
44
+ fontSize: theme.typography.pxToRem(15),
45
+ marginRight: theme.spacing(1),
46
+ color: '#666666',
47
+ padding: '5px 15px',
48
+ top: '5px',
49
+ minWidth: '60px',
50
+ '&.Mui-selected': {
51
+ color: colorMap[color],
52
+ },
53
+ '&.Mui-focusVisible': {
54
+ backgroundColor: 'rgba(100, 95, 228, 0.32)',
55
+ },
56
+ }));
@@ -1,68 +1,68 @@
1
- import React, { SyntheticEvent } from 'react';
2
- import { Box, SxProps } from '@mui/material';
3
- import { ColorVariant, DataTabs, MuiTabsBaseProps, TabsVariant } from '@/types';
4
- import { NormaTab, NormaTabs } from './UncontrolledTabs.style';
5
- import { Theme } from '@emotion/react';
6
-
7
- interface Props extends MuiTabsBaseProps {
8
- sx?: SxProps<Theme>;
9
- tabs: DataTabs[];
10
- tab: number;
11
- onTabChange: (event: SyntheticEvent, tab: number) => void;
12
- color?: ColorVariant;
13
- variant?: TabsVariant;
14
- }
15
-
16
- interface TabPanelProps {
17
- children?: React.ReactNode;
18
- index: number;
19
- value: number;
20
- }
21
-
22
- function TabPanel(props: TabPanelProps) {
23
- const { children, value, index, ...other } = props;
24
-
25
- return (
26
- <div
27
- role="tabpanel"
28
- hidden={value !== index}
29
- id={`simple-tabpanel-${index}`}
30
- aria-labelledby={`simple-tab-${index}`}
31
- {...other}
32
- >
33
- {value === index && <Box sx={{ p: 3 }}>{children}</Box>}
34
- </div>
35
- );
36
- }
37
-
38
- function a11yProps(index: number) {
39
- return {
40
- id: `simple-tab-${index}`,
41
- 'aria-controls': `simple-tabpanel-${index}`,
42
- };
43
- }
44
-
45
- const UncontrolledTabs = ({ tabs, tab, color = 'primary', onTabChange, ...props }: Props) => {
46
- const handleChange = (event: SyntheticEvent, newValue: number) => {
47
- onTabChange(event, newValue);
48
- };
49
-
50
- return (
51
- <Box sx={{ width: '100%' }}>
52
- <Box>
53
- <NormaTabs value={tab} color={color} onChange={handleChange} aria-label="tabs" {...props}>
54
- {tabs.map((item, key) => (
55
- <NormaTab label={item.label} color={color} {...a11yProps(key)} />
56
- ))}
57
- </NormaTabs>
58
- </Box>
59
- {tabs.map((item, key) => (
60
- <TabPanel key={key} value={tab} index={key}>
61
- {item.children}
62
- </TabPanel>
63
- ))}
64
- </Box>
65
- );
66
- };
67
-
68
- export default UncontrolledTabs;
1
+ import React, { SyntheticEvent } from 'react';
2
+ import { Box, SxProps } from '@mui/material';
3
+ import { ColorVariant, DataTabs, MuiTabsBaseProps, TabsVariant } from '@/types';
4
+ import { NormaTab, NormaTabs } from './UncontrolledTabs.style';
5
+ import { Theme } from '@emotion/react';
6
+
7
+ interface Props extends MuiTabsBaseProps {
8
+ sx?: SxProps<Theme>;
9
+ tabs: DataTabs[];
10
+ tab: number;
11
+ onTabChange: (event: SyntheticEvent, tab: number) => void;
12
+ color?: ColorVariant;
13
+ variant?: TabsVariant;
14
+ }
15
+
16
+ interface TabPanelProps {
17
+ children?: React.ReactNode;
18
+ index: number;
19
+ value: number;
20
+ }
21
+
22
+ function TabPanel(props: TabPanelProps) {
23
+ const { children, value, index, ...other } = props;
24
+
25
+ return (
26
+ <div
27
+ role="tabpanel"
28
+ hidden={value !== index}
29
+ id={`simple-tabpanel-${index}`}
30
+ aria-labelledby={`simple-tab-${index}`}
31
+ {...other}
32
+ >
33
+ {value === index && <Box sx={{ p: 3 }}>{children}</Box>}
34
+ </div>
35
+ );
36
+ }
37
+
38
+ function a11yProps(index: number) {
39
+ return {
40
+ id: `simple-tab-${index}`,
41
+ 'aria-controls': `simple-tabpanel-${index}`,
42
+ };
43
+ }
44
+
45
+ const UncontrolledTabs = ({ tabs, tab, color = 'primary', onTabChange, ...props }: Props) => {
46
+ const handleChange = (event: SyntheticEvent, newValue: number) => {
47
+ onTabChange(event, newValue);
48
+ };
49
+
50
+ return (
51
+ <Box sx={{ width: '100%' }}>
52
+ <Box>
53
+ <NormaTabs value={tab} color={color} onChange={handleChange} aria-label="tabs" {...props}>
54
+ {tabs.map((item, key) => (
55
+ <NormaTab label={item.label} color={color} {...a11yProps(key)} />
56
+ ))}
57
+ </NormaTabs>
58
+ </Box>
59
+ {tabs.map((item, key) => (
60
+ <TabPanel key={key} value={tab} index={key}>
61
+ {item.children}
62
+ </TabPanel>
63
+ ))}
64
+ </Box>
65
+ );
66
+ };
67
+
68
+ export default UncontrolledTabs;
@@ -1,24 +1,24 @@
1
- export * from './Accordion';
2
- export * from './Avatar';
3
- export * from './Badge';
4
- export * from './Button';
5
- export * from './Card';
6
- export * from './ChatMessage';
7
- export * from './ChatMessageBalloon/ChatMessageBalloon';
8
- export * from './CheckBox';
9
- export * from './DatePicker';
10
- export * from './DropDown';
11
- export * from './IconButton';
12
- export * from './Icons';
13
- export * from './Modal';
14
- export * from './Paper';
15
- export * from './ProgressBar';
16
- export * from './RadioGroup';
17
- export * from './RangerSlider';
18
- export * from './Select';
19
- export * from './Tabs';
20
- export * from './Tag';
21
- export * from './Table';
22
- export * from './TextField';
23
- export * from './TimeLine';
24
- export * from './TimePicker';
1
+ export * from './Accordion';
2
+ export * from './Avatar';
3
+ export * from './Badge';
4
+ export * from './Button';
5
+ export * from './Card';
6
+ export * from './ChatMessage';
7
+ export * from './ChatMessageBalloon/ChatMessageBalloon';
8
+ export * from './CheckBox';
9
+ export * from './DatePicker';
10
+ export * from './DropDown';
11
+ export * from './IconButton';
12
+ export * from './Icons';
13
+ export * from './Modal';
14
+ export * from './Paper';
15
+ export * from './ProgressBar';
16
+ export * from './RadioGroup';
17
+ export * from './RangerSlider';
18
+ export * from './Select';
19
+ export * from './Tabs';
20
+ export * from './Tag';
21
+ export * from './Table';
22
+ export * from './TextField';
23
+ export * from './TimeLine';
24
+ export * from './TimePicker';
@@ -1,14 +1,14 @@
1
- function getAlign(border: string) {
2
- switch (border) {
3
- case 'left':
4
- return 'text-start justify-items-start';
5
- case 'center':
6
- return 'justify-items-center';
7
- case 'right':
8
- return 'text-end justify-items-end';
9
- default:
10
- return 'text-center inline-flex';
11
- }
12
- }
13
-
14
- export { getAlign };
1
+ function getAlign(border: string) {
2
+ switch (border) {
3
+ case 'left':
4
+ return 'text-start justify-items-start';
5
+ case 'center':
6
+ return 'justify-items-center';
7
+ case 'right':
8
+ return 'text-end justify-items-end';
9
+ default:
10
+ return 'text-center inline-flex';
11
+ }
12
+ }
13
+
14
+ export { getAlign };
@@ -1,18 +1,18 @@
1
- function getBorderSize(size: number) {
2
- switch (size.toString()) {
3
- case '0':
4
- return 'border-0';
5
- case '1':
6
- return 'border border-[0.05rem]';
7
- case '2':
8
- return 'border border-2';
9
- case '4':
10
- return 'border border-4';
11
- case '8':
12
- return 'border border-8';
13
- default:
14
- return 'border border-2';
15
- }
16
- }
17
-
18
- export { getBorderSize };
1
+ function getBorderSize(size: number) {
2
+ switch (size.toString()) {
3
+ case '0':
4
+ return 'border-0';
5
+ case '1':
6
+ return 'border border-[0.05rem]';
7
+ case '2':
8
+ return 'border border-2';
9
+ case '4':
10
+ return 'border border-4';
11
+ case '8':
12
+ return 'border border-8';
13
+ default:
14
+ return 'border border-2';
15
+ }
16
+ }
17
+
18
+ export { getBorderSize };