norma-library 0.5.147 → 0.5.149

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 (173) 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/UncontrolledTable/components/header/index.js +7 -7
  9. package/dist/esm/components/UncontrolledTable/components/header/index.js.map +1 -1
  10. package/dist/esm/components/UncontrolledTable/components/header/styles.js +2 -2
  11. package/dist/esm/components/UncontrolledTable/components/header/styles.js.map +1 -1
  12. package/dist/esm/components/UncontrolledTable/components/tbody/styles.js +7 -1
  13. package/dist/esm/components/UncontrolledTable/components/tbody/styles.js.map +1 -1
  14. package/dist/esm/components/UncontrolledTable/styles.js +7 -1
  15. package/dist/esm/components/UncontrolledTable/styles.js.map +1 -1
  16. package/dist/esm/utils/styledBreakpoints.d.ts +10 -0
  17. package/dist/esm/utils/styledBreakpoints.js +12 -0
  18. package/dist/esm/utils/styledBreakpoints.js.map +1 -0
  19. package/docs/index.md +118 -118
  20. package/package.json +136 -136
  21. package/src/components/Accordion.tsx +39 -39
  22. package/src/components/Avatar.tsx +17 -17
  23. package/src/components/Badge.tsx +14 -14
  24. package/src/components/Box/index.tsx +12 -12
  25. package/src/components/Box/interfaces.ts +3 -3
  26. package/src/components/Box/styles.tsx +22 -22
  27. package/src/components/Breadcrumb/index.tsx +27 -27
  28. package/src/components/Breadcrumb/interface.ts +8 -8
  29. package/src/components/Breadcrumb/styles.tsx +32 -32
  30. package/src/components/Button.tsx +26 -26
  31. package/src/components/Card.tsx +37 -37
  32. package/src/components/ChatMessage.tsx +87 -87
  33. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  34. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  35. package/src/components/CheckBox.tsx +21 -21
  36. package/src/components/DateInput/index.tsx +34 -34
  37. package/src/components/DateInput/interface.ts +13 -13
  38. package/src/components/DateInput/styles.tsx +27 -27
  39. package/src/components/DatePicker.tsx +67 -67
  40. package/src/components/DropDown.tsx +24 -24
  41. package/src/components/IconButton.tsx +37 -37
  42. package/src/components/Icons.tsx +82 -82
  43. package/src/components/Modal.tsx +103 -103
  44. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  45. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  46. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  47. package/src/components/MultiSelectInput/index.tsx +60 -60
  48. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  49. package/src/components/MultiSelectInput/styles.tsx +43 -43
  50. package/src/components/Paper.tsx +12 -12
  51. package/src/components/ProgressBar.tsx +71 -71
  52. package/src/components/RadioGroup.tsx +43 -43
  53. package/src/components/RangerSlider.tsx +65 -65
  54. package/src/components/Select.tsx +74 -74
  55. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  56. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  57. package/src/components/SelectInput/index.tsx +45 -45
  58. package/src/components/SelectInput/interfaces.ts +15 -15
  59. package/src/components/SelectInput/styles.tsx +31 -31
  60. package/src/components/StatusModal/StatusModal.style.tsx +75 -75
  61. package/src/components/StatusModal/StatusModal.tsx +58 -58
  62. package/src/components/Svgs.tsx +506 -506
  63. package/src/components/Table/components/header/index.tsx +86 -86
  64. package/src/components/Table/components/header/styles.tsx +59 -59
  65. package/src/components/Table/components/index.tsx +8 -8
  66. package/src/components/Table/components/pagination/index.tsx +39 -39
  67. package/src/components/Table/components/pagination/styles.tsx +28 -28
  68. package/src/components/Table/components/tbody/index.tsx +30 -30
  69. package/src/components/Table/components/tbody/styles.tsx +4 -4
  70. package/src/components/Table/index.tsx +317 -317
  71. package/src/components/Table/interface.ts +23 -23
  72. package/src/components/Table/styles.tsx +117 -117
  73. package/src/components/Tabs.tsx +105 -105
  74. package/src/components/Tag.tsx +33 -33
  75. package/src/components/TextField.tsx +19 -19
  76. package/src/components/TextInput/index.tsx +37 -37
  77. package/src/components/TextInput/interface.ts +9 -9
  78. package/src/components/TextInput/styles.tsx +23 -23
  79. package/src/components/TimeLine.tsx +89 -89
  80. package/src/components/TimePicker.tsx +78 -78
  81. package/src/components/Typography/Text/index.tsx +20 -20
  82. package/src/components/Typography/Text/interfaces.ts +5 -5
  83. package/src/components/Typography/Text/styles.tsx +40 -40
  84. package/src/components/Typography/Title/index.tsx +22 -22
  85. package/src/components/Typography/Title/interfaces.ts +6 -6
  86. package/src/components/Typography/Title/styles.tsx +40 -40
  87. package/src/components/Typography/index.tsx +6 -6
  88. package/src/components/UncontrolledTable/components/header/index.tsx +65 -63
  89. package/src/components/UncontrolledTable/components/header/styles.tsx +63 -60
  90. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  91. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  92. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  93. package/src/components/UncontrolledTable/components/tbody/index.tsx +33 -33
  94. package/src/components/UncontrolledTable/components/tbody/styles.tsx +32 -25
  95. package/src/components/UncontrolledTable/index.tsx +221 -221
  96. package/src/components/UncontrolledTable/interface.ts +43 -43
  97. package/src/components/UncontrolledTable/styles.tsx +123 -116
  98. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +56 -56
  99. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +68 -68
  100. package/src/components/index.ts +24 -24
  101. package/src/helpers/alignments.ts +14 -14
  102. package/src/helpers/borders.ts +18 -18
  103. package/src/helpers/colors.ts +241 -241
  104. package/src/helpers/index.ts +5 -5
  105. package/src/helpers/radios.ts +24 -24
  106. package/src/helpers/sizes.ts +72 -72
  107. package/src/hooks/useClickOutside.tsx +18 -18
  108. package/src/index.ts +66 -66
  109. package/src/interfaces/Accordion.ts +12 -12
  110. package/src/interfaces/Avatar.tsx +15 -15
  111. package/src/interfaces/Badge.ts +19 -19
  112. package/src/interfaces/Button.ts +22 -22
  113. package/src/interfaces/Card.ts +11 -11
  114. package/src/interfaces/ChatMessage.ts +12 -12
  115. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  116. package/src/interfaces/CheckBox.ts +27 -27
  117. package/src/interfaces/DatePicker.ts +13 -13
  118. package/src/interfaces/DropDown.ts +14 -14
  119. package/src/interfaces/IconButton.ts +22 -22
  120. package/src/interfaces/Icons.ts +17 -17
  121. package/src/interfaces/Modal.ts +18 -18
  122. package/src/interfaces/Paper.ts +12 -12
  123. package/src/interfaces/ProgressBar.ts +29 -29
  124. package/src/interfaces/RadioGroup.ts +23 -23
  125. package/src/interfaces/RangerSlider.ts +21 -21
  126. package/src/interfaces/Select.ts +17 -17
  127. package/src/interfaces/Tabs.ts +19 -19
  128. package/src/interfaces/Tag.ts +17 -17
  129. package/src/interfaces/TextField.ts +44 -44
  130. package/src/interfaces/TimeLine.ts +11 -11
  131. package/src/interfaces/TimePicker.ts +13 -13
  132. package/src/interfaces/index.ts +23 -23
  133. package/src/providers/NormaProvider.tsx +13 -13
  134. package/src/sample-data-2.json +178 -178
  135. package/src/sample-data.json +177 -177
  136. package/src/stories/Accordion.stories.tsx +65 -65
  137. package/src/stories/Avatar.stories.tsx +123 -123
  138. package/src/stories/Badge.stories.tsx +39 -39
  139. package/src/stories/Box.stories.tsx +35 -35
  140. package/src/stories/Breadcrumb.stories.tsx +44 -44
  141. package/src/stories/Button.stories.tsx +93 -93
  142. package/src/stories/Card.stories.tsx +39 -39
  143. package/src/stories/ChatMessage.stories.tsx +84 -84
  144. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  145. package/src/stories/CheckBox.stories.tsx +88 -88
  146. package/src/stories/DateInput.stories.tsx +51 -51
  147. package/src/stories/DatePicker.stories.tsx +50 -50
  148. package/src/stories/DropDown.stories.tsx +57 -57
  149. package/src/stories/IconButton.stories.tsx +78 -78
  150. package/src/stories/Modal.stories.tsx +246 -246
  151. package/src/stories/ModalStatus.stories.tsx +46 -46
  152. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  153. package/src/stories/Paper.stories.tsx +53 -53
  154. package/src/stories/ProgressBar.stories.tsx +116 -116
  155. package/src/stories/RadioGroup.stories.tsx +87 -87
  156. package/src/stories/RangerSlider.stories.tsx +149 -149
  157. package/src/stories/Select.stories.tsx +100 -100
  158. package/src/stories/SelectInput.stories.tsx +78 -78
  159. package/src/stories/Table.stories.tsx +372 -372
  160. package/src/stories/Tabs.stories.tsx +61 -61
  161. package/src/stories/Tag.stories.tsx +56 -56
  162. package/src/stories/Text.stories.tsx +37 -37
  163. package/src/stories/TextField.stories.tsx +310 -310
  164. package/src/stories/TextInput.stories.tsx +52 -52
  165. package/src/stories/TimeLine.stories.tsx +35 -35
  166. package/src/stories/TimePicker.stories.tsx +87 -87
  167. package/src/stories/Title.stories.tsx +43 -43
  168. package/src/stories/UncontrolledTable.stories.tsx +305 -305
  169. package/src/stories/UncontrolledTabs.stories.tsx +63 -63
  170. package/src/styles/globals.scss +17 -17
  171. package/src/types/index.ts +204 -204
  172. package/src/utils/styledBreakpoints.ts +25 -0
  173. package/vite.config.ts +15 -15
@@ -1,87 +1,87 @@
1
- import React from 'react';
2
- import { RadioGroup } from '../components/RadioGroup';
3
- import type { Meta, StoryObj } from '@storybook/react';
4
- import { SizeVariant } from '../types';
5
-
6
- const meta = {
7
- title: 'Form/RadioGroup',
8
- component: RadioGroup,
9
- parameters: {
10
- layout: 'centered',
11
- },
12
- tags: ['autodocs'],
13
- argTypes: {},
14
- } satisfies Meta<typeof RadioGroup>;
15
-
16
- export default meta;
17
-
18
- type Story = StoryObj<typeof meta>;
19
-
20
- const defaultArgs = {
21
- disabled: false,
22
- };
23
-
24
- const sizeOptions = [
25
- { label: 'Small', value: 'S', size: 'small' },
26
- { label: 'Medium', value: 'M', size: 'medium' },
27
- { label: 'Large', value: 'L', size: 'large' },
28
- ];
29
-
30
- const genderOptions = [
31
- { label: 'Male', value: 'M' },
32
- { label: 'Female', value: 'F' },
33
- { label: 'Other', value: 'O' },
34
- ];
35
-
36
- export const Playground: Story = {
37
- args: {
38
- color: 'primary',
39
- options: genderOptions,
40
- name: 'gender',
41
- label: 'Gender',
42
- checked: 'F',
43
- },
44
- };
45
-
46
- export const RadioboxVertical = () => {
47
- return (
48
- <>
49
- <RadioGroup name="gender" options={genderOptions} label="Gender" color="primary" checked="M" id="gender" />
50
- </>
51
- );
52
- };
53
- RadioboxVertical.storyName = 'RadioGroup Vertical';
54
-
55
- export const RadioHorizontal = () => {
56
- return (
57
- <>
58
- <RadioGroup
59
- name="gender"
60
- options={genderOptions}
61
- label="Gender"
62
- color="primary"
63
- checked="M"
64
- id="gender"
65
- direction="horizontal"
66
- />
67
- </>
68
- );
69
- };
70
- RadioHorizontal.storyName = 'RadioGroup Horizontal';
71
-
72
- export const RadioSizes = () => {
73
- return (
74
- <>
75
- <RadioGroup
76
- name="size"
77
- options={sizeOptions}
78
- label="Sizes"
79
- color="primary"
80
- checked="M"
81
- id="size"
82
- direction="horizontal"
83
- />
84
- </>
85
- );
86
- };
87
- RadioSizes.storyName = 'RadioGroup Sizes';
1
+ import React from 'react';
2
+ import { RadioGroup } from '../components/RadioGroup';
3
+ import type { Meta, StoryObj } from '@storybook/react';
4
+ import { SizeVariant } from '../types';
5
+
6
+ const meta = {
7
+ title: 'Form/RadioGroup',
8
+ component: RadioGroup,
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ tags: ['autodocs'],
13
+ argTypes: {},
14
+ } satisfies Meta<typeof RadioGroup>;
15
+
16
+ export default meta;
17
+
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ const defaultArgs = {
21
+ disabled: false,
22
+ };
23
+
24
+ const sizeOptions = [
25
+ { label: 'Small', value: 'S', size: 'small' },
26
+ { label: 'Medium', value: 'M', size: 'medium' },
27
+ { label: 'Large', value: 'L', size: 'large' },
28
+ ];
29
+
30
+ const genderOptions = [
31
+ { label: 'Male', value: 'M' },
32
+ { label: 'Female', value: 'F' },
33
+ { label: 'Other', value: 'O' },
34
+ ];
35
+
36
+ export const Playground: Story = {
37
+ args: {
38
+ color: 'primary',
39
+ options: genderOptions,
40
+ name: 'gender',
41
+ label: 'Gender',
42
+ checked: 'F',
43
+ },
44
+ };
45
+
46
+ export const RadioboxVertical = () => {
47
+ return (
48
+ <>
49
+ <RadioGroup name="gender" options={genderOptions} label="Gender" color="primary" checked="M" id="gender" />
50
+ </>
51
+ );
52
+ };
53
+ RadioboxVertical.storyName = 'RadioGroup Vertical';
54
+
55
+ export const RadioHorizontal = () => {
56
+ return (
57
+ <>
58
+ <RadioGroup
59
+ name="gender"
60
+ options={genderOptions}
61
+ label="Gender"
62
+ color="primary"
63
+ checked="M"
64
+ id="gender"
65
+ direction="horizontal"
66
+ />
67
+ </>
68
+ );
69
+ };
70
+ RadioHorizontal.storyName = 'RadioGroup Horizontal';
71
+
72
+ export const RadioSizes = () => {
73
+ return (
74
+ <>
75
+ <RadioGroup
76
+ name="size"
77
+ options={sizeOptions}
78
+ label="Sizes"
79
+ color="primary"
80
+ checked="M"
81
+ id="size"
82
+ direction="horizontal"
83
+ />
84
+ </>
85
+ );
86
+ };
87
+ RadioSizes.storyName = 'RadioGroup Sizes';
@@ -1,149 +1,149 @@
1
- import React from 'react';
2
- import type { Meta, StoryObj } from '@storybook/react';
3
- import { RangerSlider } from '../components';
4
- import { ColorVariant, TextFieldSizeVariant } from '../types';
5
- import { TextField } from '@mui/material';
6
-
7
- const colors: ColorVariant[] = ['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning'];
8
- const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
9
-
10
- const meta: Meta<typeof RangerSlider> = {
11
- title: 'Display/RangerSlider',
12
- component: RangerSlider,
13
- parameters: {
14
- layout: 'centered',
15
- },
16
- tags: ['autodocs'],
17
- argTypes: {
18
- color: {
19
- control: { type: 'select' },
20
- options: colors,
21
- description: 'Define a cor do slider.',
22
- },
23
- size: {
24
- control: { type: 'select' },
25
- options: sizes,
26
- description: 'Define o tamanho do slider.',
27
- },
28
- min: {
29
- control: { type: 'number' },
30
- defaultValue: 0,
31
- description: 'Define o valor mínimo do slider.',
32
- },
33
- max: {
34
- control: { type: 'number' },
35
- defaultValue: 100,
36
- description: 'Define o valor máximo do slider.',
37
- },
38
- step: {
39
- control: { type: 'number' },
40
- defaultValue: 1,
41
- description: 'Define o passo do slider.',
42
- },
43
- valueLabelDisplay: {
44
- control: { type: 'select' },
45
- options: ['on', 'auto', 'off'],
46
- defaultValue: 'auto',
47
- description: 'Controla a exibição dos rótulos de valor.',
48
- },
49
- valueLabelFormat: {
50
- control: { type: 'function' },
51
- description: 'Função para formatar o rótulo do valor.',
52
- },
53
- defaultValue: {
54
- control: { type: 'number' },
55
- defaultValue: 50,
56
- description: 'Define o valor padrão do slider.',
57
- },
58
- onChange: {
59
- action: 'changed',
60
- description: 'Função callback que é disparada quando o valor do slider é alterado.',
61
- },
62
- },
63
- };
64
-
65
- export default meta;
66
-
67
- type Story = StoryObj<typeof meta>;
68
-
69
- export const RangerSliderBasic: Story = {
70
- args: {
71
- value: [20, 37],
72
- valueLabelDisplay: 'on',
73
- getAriaLabel: () => 'Faixa de temperatura',
74
- },
75
- argTypes: {
76
- value: {
77
- control: { type: 'array' },
78
- },
79
- },
80
- render: args => {
81
- const [value, setValue] = React.useState<number[]>(args.value);
82
-
83
- const handleChange = (event: Event, newValue: number | number[]) => {
84
- setValue(newValue as number[]);
85
- args.onChange?.(event, newValue, 0);
86
- };
87
-
88
- return (
89
- <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
90
- <RangerSlider {...args} value={value} onChange={handleChange} />
91
- </div>
92
- );
93
- },
94
- name: 'RangerSlider Básico',
95
- };
96
-
97
- export const RangerSliderFormatter: Story = {
98
- args: {
99
- value: [0, 540],
100
- valueLabelDisplay: 'auto',
101
- getAriaLabel: () => 'Faixa de tempo',
102
- valueLabelFormat: (value: number) => {
103
- if (value < 60) {
104
- return `${value}s`;
105
- } else if (value < 3600) {
106
- const minutes = Math.floor(value / 60);
107
- const seconds = value % 60;
108
- return seconds === 0 ? `${minutes}min` : `${minutes}min ${seconds}s`;
109
- } else {
110
- const hours = Math.floor(value / 3600);
111
- const minutes = Math.floor((value % 3600) / 60);
112
- const seconds = value % 60;
113
- if (minutes === 0 && seconds === 0) {
114
- return `${hours}h`;
115
- } else if (minutes === 0) {
116
- return `${hours}h ${seconds}s`;
117
- } else if (seconds === 0) {
118
- return `${hours}h ${minutes}min`;
119
- } else {
120
- return `${hours}h ${minutes}min ${seconds}s`;
121
- }
122
- }
123
- },
124
- min: 0,
125
- max: 1000,
126
- },
127
- argTypes: {
128
- value: {
129
- control: { type: 'array' },
130
- },
131
- },
132
- render: args => {
133
- const [value, setValue] = React.useState<number[]>(args.value);
134
-
135
- const handleChange = (event: Event, newValue: number | number[]) => {
136
- setValue(newValue as number[]);
137
- args.onChange?.(event, newValue, 0);
138
- };
139
-
140
- return (
141
- <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
142
- {/* <TextField size="small" variant='standard' /> */}
143
- <RangerSlider {...args} value={value} onChange={handleChange} />
144
- {/* <TextField size="small" variant='standard' /> */}
145
- </div>
146
- );
147
- },
148
- name: 'RangerSlider com Formatter',
149
- };
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { RangerSlider } from '../components';
4
+ import { ColorVariant, TextFieldSizeVariant } from '../types';
5
+ import { TextField } from '@mui/material';
6
+
7
+ const colors: ColorVariant[] = ['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning'];
8
+ const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
9
+
10
+ const meta: Meta<typeof RangerSlider> = {
11
+ title: 'Display/RangerSlider',
12
+ component: RangerSlider,
13
+ parameters: {
14
+ layout: 'centered',
15
+ },
16
+ tags: ['autodocs'],
17
+ argTypes: {
18
+ color: {
19
+ control: { type: 'select' },
20
+ options: colors,
21
+ description: 'Define a cor do slider.',
22
+ },
23
+ size: {
24
+ control: { type: 'select' },
25
+ options: sizes,
26
+ description: 'Define o tamanho do slider.',
27
+ },
28
+ min: {
29
+ control: { type: 'number' },
30
+ defaultValue: 0,
31
+ description: 'Define o valor mínimo do slider.',
32
+ },
33
+ max: {
34
+ control: { type: 'number' },
35
+ defaultValue: 100,
36
+ description: 'Define o valor máximo do slider.',
37
+ },
38
+ step: {
39
+ control: { type: 'number' },
40
+ defaultValue: 1,
41
+ description: 'Define o passo do slider.',
42
+ },
43
+ valueLabelDisplay: {
44
+ control: { type: 'select' },
45
+ options: ['on', 'auto', 'off'],
46
+ defaultValue: 'auto',
47
+ description: 'Controla a exibição dos rótulos de valor.',
48
+ },
49
+ valueLabelFormat: {
50
+ control: { type: 'function' },
51
+ description: 'Função para formatar o rótulo do valor.',
52
+ },
53
+ defaultValue: {
54
+ control: { type: 'number' },
55
+ defaultValue: 50,
56
+ description: 'Define o valor padrão do slider.',
57
+ },
58
+ onChange: {
59
+ action: 'changed',
60
+ description: 'Função callback que é disparada quando o valor do slider é alterado.',
61
+ },
62
+ },
63
+ };
64
+
65
+ export default meta;
66
+
67
+ type Story = StoryObj<typeof meta>;
68
+
69
+ export const RangerSliderBasic: Story = {
70
+ args: {
71
+ value: [20, 37],
72
+ valueLabelDisplay: 'on',
73
+ getAriaLabel: () => 'Faixa de temperatura',
74
+ },
75
+ argTypes: {
76
+ value: {
77
+ control: { type: 'array' },
78
+ },
79
+ },
80
+ render: args => {
81
+ const [value, setValue] = React.useState<number[]>(args.value);
82
+
83
+ const handleChange = (event: Event, newValue: number | number[]) => {
84
+ setValue(newValue as number[]);
85
+ args.onChange?.(event, newValue, 0);
86
+ };
87
+
88
+ return (
89
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
90
+ <RangerSlider {...args} value={value} onChange={handleChange} />
91
+ </div>
92
+ );
93
+ },
94
+ name: 'RangerSlider Básico',
95
+ };
96
+
97
+ export const RangerSliderFormatter: Story = {
98
+ args: {
99
+ value: [0, 540],
100
+ valueLabelDisplay: 'auto',
101
+ getAriaLabel: () => 'Faixa de tempo',
102
+ valueLabelFormat: (value: number) => {
103
+ if (value < 60) {
104
+ return `${value}s`;
105
+ } else if (value < 3600) {
106
+ const minutes = Math.floor(value / 60);
107
+ const seconds = value % 60;
108
+ return seconds === 0 ? `${minutes}min` : `${minutes}min ${seconds}s`;
109
+ } else {
110
+ const hours = Math.floor(value / 3600);
111
+ const minutes = Math.floor((value % 3600) / 60);
112
+ const seconds = value % 60;
113
+ if (minutes === 0 && seconds === 0) {
114
+ return `${hours}h`;
115
+ } else if (minutes === 0) {
116
+ return `${hours}h ${seconds}s`;
117
+ } else if (seconds === 0) {
118
+ return `${hours}h ${minutes}min`;
119
+ } else {
120
+ return `${hours}h ${minutes}min ${seconds}s`;
121
+ }
122
+ }
123
+ },
124
+ min: 0,
125
+ max: 1000,
126
+ },
127
+ argTypes: {
128
+ value: {
129
+ control: { type: 'array' },
130
+ },
131
+ },
132
+ render: args => {
133
+ const [value, setValue] = React.useState<number[]>(args.value);
134
+
135
+ const handleChange = (event: Event, newValue: number | number[]) => {
136
+ setValue(newValue as number[]);
137
+ args.onChange?.(event, newValue, 0);
138
+ };
139
+
140
+ return (
141
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
142
+ {/* <TextField size="small" variant='standard' /> */}
143
+ <RangerSlider {...args} value={value} onChange={handleChange} />
144
+ {/* <TextField size="small" variant='standard' /> */}
145
+ </div>
146
+ );
147
+ },
148
+ name: 'RangerSlider com Formatter',
149
+ };
@@ -1,100 +1,100 @@
1
- import React from 'react';
2
-
3
- import type { Meta, StoryObj } from '@storybook/react';
4
- import { Select } from '../components';
5
- import { DataSelect, TextFieldSizeVariant } from '../types';
6
- import { SelectChangeEvent } from '@mui/material';
7
-
8
- const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
9
-
10
- const data: DataSelect[] = [
11
- { label: 'Oliver Hansen', value: 'oliver-hansen' },
12
- { label: 'Van Henry', value: 'van-henry' },
13
- { label: 'April Tucker', value: 'april-tucker' },
14
- { label: 'Ralph Hubbard', value: 'ralph-hubbard' },
15
- { label: 'Omar Alexander', value: 'omar-alexander' },
16
- { label: 'Carlos Abbott', value: 'carlos-abbott' },
17
- { label: 'Miriam Wagner', value: 'miriam-wagner' },
18
- { label: 'Bradley Wilkerson', value: 'bradley-wilkerson' },
19
- { label: 'Virginia Andrews', value: 'virginia-andrews' },
20
- { label: 'Kelly Snyder', value: 'kelly-snyder' },
21
- ];
22
-
23
- const meta = {
24
- title: 'Form/Select',
25
- component: Select,
26
- parameters: {
27
- layout: 'centered',
28
- },
29
- tags: ['autodocs'],
30
- argTypes: {},
31
- } satisfies Meta<typeof Select>;
32
-
33
- export default meta;
34
-
35
- type Story = StoryObj<typeof meta>;
36
-
37
- export const SelectBasic = () => {
38
- const [value, setValue] = React.useState('');
39
-
40
- const handleChange = (event: SelectChangeEvent) => {
41
- setValue(event.target.value as string);
42
- };
43
- return (
44
- <div style={{ width: '480px', marginBottom: 30 }}>
45
- <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="standard" data={data} />
46
- </div>
47
- );
48
- };
49
-
50
- SelectBasic.storyName = 'Select Basic';
51
-
52
- export const SelectVariants = () => {
53
- const [value, setValue] = React.useState('');
54
-
55
- const handleChange = (event: SelectChangeEvent) => {
56
- setValue(event.target.value as string);
57
- };
58
- return (
59
- <>
60
- <div style={{ width: '480px', marginBottom: 30 }}>
61
- <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="standard" data={data} />
62
- </div>
63
- <div style={{ width: '480px', marginBottom: 30 }}>
64
- <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="filled" data={data} />
65
- </div>
66
- <div style={{ width: '480px', marginBottom: 30 }}>
67
- <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="outlined" data={data} />
68
- </div>
69
- </>
70
- );
71
- };
72
-
73
- SelectVariants.storyName = 'Select Variantes';
74
-
75
- export const SelectMultiple = () => {
76
- const [value, setValue] = React.useState<string[]>([]);
77
-
78
- const handleChange = (event: SelectChangeEvent<typeof value>) => {
79
- const {
80
- target: { value },
81
- } = event;
82
- setValue(typeof value === 'string' ? value.split(',') : value);
83
- };
84
-
85
- return (
86
- <div style={{ width: '480px', marginBottom: 30 }}>
87
- <Select
88
- id="select-demo"
89
- value={value}
90
- onChange={handleChange}
91
- label="Members"
92
- multiple={true}
93
- data={data}
94
- variant="standard"
95
- />
96
- </div>
97
- );
98
- };
99
-
100
- SelectMultiple.storyName = 'Select Multiples';
1
+ import React from 'react';
2
+
3
+ import type { Meta, StoryObj } from '@storybook/react';
4
+ import { Select } from '../components';
5
+ import { DataSelect, TextFieldSizeVariant } from '../types';
6
+ import { SelectChangeEvent } from '@mui/material';
7
+
8
+ const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
9
+
10
+ const data: DataSelect[] = [
11
+ { label: 'Oliver Hansen', value: 'oliver-hansen' },
12
+ { label: 'Van Henry', value: 'van-henry' },
13
+ { label: 'April Tucker', value: 'april-tucker' },
14
+ { label: 'Ralph Hubbard', value: 'ralph-hubbard' },
15
+ { label: 'Omar Alexander', value: 'omar-alexander' },
16
+ { label: 'Carlos Abbott', value: 'carlos-abbott' },
17
+ { label: 'Miriam Wagner', value: 'miriam-wagner' },
18
+ { label: 'Bradley Wilkerson', value: 'bradley-wilkerson' },
19
+ { label: 'Virginia Andrews', value: 'virginia-andrews' },
20
+ { label: 'Kelly Snyder', value: 'kelly-snyder' },
21
+ ];
22
+
23
+ const meta = {
24
+ title: 'Form/Select',
25
+ component: Select,
26
+ parameters: {
27
+ layout: 'centered',
28
+ },
29
+ tags: ['autodocs'],
30
+ argTypes: {},
31
+ } satisfies Meta<typeof Select>;
32
+
33
+ export default meta;
34
+
35
+ type Story = StoryObj<typeof meta>;
36
+
37
+ export const SelectBasic = () => {
38
+ const [value, setValue] = React.useState('');
39
+
40
+ const handleChange = (event: SelectChangeEvent) => {
41
+ setValue(event.target.value as string);
42
+ };
43
+ return (
44
+ <div style={{ width: '480px', marginBottom: 30 }}>
45
+ <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="standard" data={data} />
46
+ </div>
47
+ );
48
+ };
49
+
50
+ SelectBasic.storyName = 'Select Basic';
51
+
52
+ export const SelectVariants = () => {
53
+ const [value, setValue] = React.useState('');
54
+
55
+ const handleChange = (event: SelectChangeEvent) => {
56
+ setValue(event.target.value as string);
57
+ };
58
+ return (
59
+ <>
60
+ <div style={{ width: '480px', marginBottom: 30 }}>
61
+ <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="standard" data={data} />
62
+ </div>
63
+ <div style={{ width: '480px', marginBottom: 30 }}>
64
+ <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="filled" data={data} />
65
+ </div>
66
+ <div style={{ width: '480px', marginBottom: 30 }}>
67
+ <Select id="select-demo" value={value} onChange={handleChange} label="Members" variant="outlined" data={data} />
68
+ </div>
69
+ </>
70
+ );
71
+ };
72
+
73
+ SelectVariants.storyName = 'Select Variantes';
74
+
75
+ export const SelectMultiple = () => {
76
+ const [value, setValue] = React.useState<string[]>([]);
77
+
78
+ const handleChange = (event: SelectChangeEvent<typeof value>) => {
79
+ const {
80
+ target: { value },
81
+ } = event;
82
+ setValue(typeof value === 'string' ? value.split(',') : value);
83
+ };
84
+
85
+ return (
86
+ <div style={{ width: '480px', marginBottom: 30 }}>
87
+ <Select
88
+ id="select-demo"
89
+ value={value}
90
+ onChange={handleChange}
91
+ label="Members"
92
+ multiple={true}
93
+ data={data}
94
+ variant="standard"
95
+ />
96
+ </div>
97
+ );
98
+ };
99
+
100
+ SelectMultiple.storyName = 'Select Multiples';