norma-library 0.6.65 → 0.6.67

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 (202) 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/Box/interfaces.d.ts +0 -1
  9. package/dist/esm/components/Box/styles.d.ts +0 -1
  10. package/dist/esm/components/Breadcrumb/styles.d.ts +0 -1
  11. package/dist/esm/components/Card.js +7 -11
  12. package/dist/esm/components/Card.js.map +1 -1
  13. package/dist/esm/components/DateInput/styles.d.ts +0 -1
  14. package/dist/esm/components/Icons.d.ts +2 -2
  15. package/dist/esm/components/MultiSelectInput/components/Option/styles.d.ts +0 -1
  16. package/dist/esm/components/MultiSelectInput/styles.d.ts +0 -1
  17. package/dist/esm/components/SelectInput/components/Option/styles.d.ts +0 -1
  18. package/dist/esm/components/SelectInput/styles.d.ts +0 -1
  19. package/dist/esm/components/StatusModal/StatusModal.style.d.ts +1 -2
  20. package/dist/esm/components/Table/components/header/styles.d.ts +0 -1
  21. package/dist/esm/components/Table/components/pagination/styles.d.ts +0 -1
  22. package/dist/esm/components/Table/styles.d.ts +0 -1
  23. package/dist/esm/components/TextInput/styles.d.ts +0 -1
  24. package/dist/esm/components/Typography/Text/interfaces.d.ts +0 -1
  25. package/dist/esm/components/Typography/Text/styles.d.ts +0 -1
  26. package/dist/esm/components/Typography/Title/interfaces.d.ts +0 -1
  27. package/dist/esm/components/Typography/Title/styles.d.ts +0 -1
  28. package/dist/esm/components/UncontrolledTable/components/header/styles.d.ts +0 -1
  29. package/dist/esm/components/UncontrolledTable/components/pagination/styles.d.ts +0 -1
  30. package/dist/esm/components/UncontrolledTable/components/tbody/styles.d.ts +0 -1
  31. package/dist/esm/components/UncontrolledTable/interface.d.ts +0 -1
  32. package/dist/esm/components/UncontrolledTable/styles.d.ts +2 -3
  33. package/dist/esm/components/UncontrolledTabs/UncontrolledTabsInfo.style.d.ts +0 -1
  34. package/dist/esm/interfaces/Accordion.d.ts +0 -1
  35. package/dist/esm/interfaces/Card.d.ts +0 -1
  36. package/dist/esm/interfaces/ChatMessage.d.ts +0 -1
  37. package/dist/esm/interfaces/DatePicker.d.ts +0 -1
  38. package/dist/esm/interfaces/Modal.d.ts +0 -1
  39. package/dist/esm/interfaces/Paper.d.ts +0 -1
  40. package/dist/esm/interfaces/ProgressBar.d.ts +0 -1
  41. package/dist/esm/interfaces/Select.d.ts +0 -1
  42. package/dist/esm/interfaces/Tabs.d.ts +0 -1
  43. package/dist/esm/interfaces/Tag.d.ts +0 -1
  44. package/dist/esm/interfaces/TimeLine.d.ts +0 -1
  45. package/dist/esm/interfaces/TimePicker.d.ts +0 -1
  46. package/dist/esm/types/index.d.ts +0 -1
  47. package/docs/index.md +118 -118
  48. package/package.json +136 -136
  49. package/src/components/Accordion.tsx +39 -39
  50. package/src/components/Avatar.tsx +17 -17
  51. package/src/components/Badge.tsx +14 -14
  52. package/src/components/Box/index.tsx +12 -12
  53. package/src/components/Box/interfaces.ts +3 -3
  54. package/src/components/Box/styles.tsx +22 -22
  55. package/src/components/Breadcrumb/index.tsx +27 -27
  56. package/src/components/Breadcrumb/interface.ts +8 -8
  57. package/src/components/Breadcrumb/styles.tsx +32 -32
  58. package/src/components/Button.tsx +26 -26
  59. package/src/components/Card.tsx +36 -38
  60. package/src/components/ChatMessage.tsx +87 -87
  61. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  62. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  63. package/src/components/CheckBox.tsx +21 -21
  64. package/src/components/DateInput/index.tsx +34 -34
  65. package/src/components/DateInput/interface.ts +13 -13
  66. package/src/components/DateInput/styles.tsx +27 -27
  67. package/src/components/DatePicker.tsx +67 -67
  68. package/src/components/DropDown.tsx +24 -24
  69. package/src/components/IconButton.tsx +37 -37
  70. package/src/components/Icons.tsx +82 -82
  71. package/src/components/Modal.tsx +103 -103
  72. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  73. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  74. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  75. package/src/components/MultiSelectInput/index.tsx +60 -60
  76. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  77. package/src/components/MultiSelectInput/styles.tsx +43 -43
  78. package/src/components/Paper.tsx +12 -12
  79. package/src/components/ProgressBar.tsx +71 -71
  80. package/src/components/RadioGroup.tsx +43 -43
  81. package/src/components/RangerSlider.tsx +65 -65
  82. package/src/components/Select.tsx +74 -74
  83. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  84. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  85. package/src/components/SelectInput/index.tsx +45 -45
  86. package/src/components/SelectInput/interfaces.ts +15 -15
  87. package/src/components/SelectInput/styles.tsx +31 -31
  88. package/src/components/StatusModal/StatusModal.style.tsx +75 -75
  89. package/src/components/StatusModal/StatusModal.tsx +58 -58
  90. package/src/components/Svgs.tsx +506 -506
  91. package/src/components/Table/components/header/index.tsx +86 -86
  92. package/src/components/Table/components/header/styles.tsx +59 -59
  93. package/src/components/Table/components/index.tsx +8 -8
  94. package/src/components/Table/components/pagination/index.tsx +39 -39
  95. package/src/components/Table/components/pagination/styles.tsx +28 -28
  96. package/src/components/Table/components/tbody/index.tsx +30 -30
  97. package/src/components/Table/components/tbody/styles.tsx +4 -4
  98. package/src/components/Table/index.tsx +317 -317
  99. package/src/components/Table/interface.ts +23 -23
  100. package/src/components/Table/styles.tsx +117 -117
  101. package/src/components/Tabs.tsx +105 -105
  102. package/src/components/Tag.tsx +33 -33
  103. package/src/components/TextField.tsx +19 -19
  104. package/src/components/TextInput/index.tsx +37 -37
  105. package/src/components/TextInput/interface.ts +9 -9
  106. package/src/components/TextInput/styles.tsx +23 -23
  107. package/src/components/TimeLine.tsx +89 -89
  108. package/src/components/TimePicker.tsx +78 -78
  109. package/src/components/Typography/Text/index.tsx +20 -20
  110. package/src/components/Typography/Text/interfaces.ts +5 -5
  111. package/src/components/Typography/Text/styles.tsx +40 -40
  112. package/src/components/Typography/Title/index.tsx +22 -22
  113. package/src/components/Typography/Title/interfaces.ts +6 -6
  114. package/src/components/Typography/Title/styles.tsx +40 -40
  115. package/src/components/Typography/index.tsx +6 -6
  116. package/src/components/UncontrolledTable/components/header/index.tsx +72 -72
  117. package/src/components/UncontrolledTable/components/header/styles.tsx +66 -66
  118. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  119. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  120. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  121. package/src/components/UncontrolledTable/components/tbody/index.tsx +33 -33
  122. package/src/components/UncontrolledTable/components/tbody/styles.tsx +32 -32
  123. package/src/components/UncontrolledTable/index.tsx +223 -223
  124. package/src/components/UncontrolledTable/interface.ts +46 -46
  125. package/src/components/UncontrolledTable/styles.tsx +123 -123
  126. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +58 -58
  127. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +71 -71
  128. package/src/components/UncontrolledTabs/UncontrolledTabsInfo.style.ts +8 -8
  129. package/src/components/index.ts +24 -24
  130. package/src/helpers/alignments.ts +14 -14
  131. package/src/helpers/borders.ts +18 -18
  132. package/src/helpers/colors.ts +264 -264
  133. package/src/helpers/index.ts +5 -5
  134. package/src/helpers/radios.ts +24 -24
  135. package/src/helpers/sizes.ts +72 -72
  136. package/src/hooks/useClickOutside.tsx +18 -18
  137. package/src/index.ts +70 -70
  138. package/src/interfaces/Accordion.ts +12 -12
  139. package/src/interfaces/Avatar.tsx +15 -15
  140. package/src/interfaces/Badge.ts +19 -19
  141. package/src/interfaces/Button.ts +19 -19
  142. package/src/interfaces/Card.ts +11 -11
  143. package/src/interfaces/ChatMessage.ts +12 -12
  144. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  145. package/src/interfaces/CheckBox.ts +27 -27
  146. package/src/interfaces/DatePicker.ts +13 -13
  147. package/src/interfaces/DropDown.ts +14 -14
  148. package/src/interfaces/IconButton.ts +22 -22
  149. package/src/interfaces/Icons.ts +17 -17
  150. package/src/interfaces/Modal.ts +18 -18
  151. package/src/interfaces/Paper.ts +12 -12
  152. package/src/interfaces/ProgressBar.ts +29 -29
  153. package/src/interfaces/RadioGroup.ts +23 -23
  154. package/src/interfaces/RangerSlider.ts +21 -21
  155. package/src/interfaces/Select.ts +17 -17
  156. package/src/interfaces/Tabs.ts +19 -19
  157. package/src/interfaces/Tag.ts +17 -17
  158. package/src/interfaces/TextField.ts +44 -44
  159. package/src/interfaces/TimeLine.ts +11 -11
  160. package/src/interfaces/TimePicker.ts +13 -13
  161. package/src/interfaces/index.ts +23 -23
  162. package/src/providers/NormaProvider.tsx +13 -13
  163. package/src/sample-data-2.json +178 -178
  164. package/src/sample-data.json +177 -177
  165. package/src/stories/Accordion.stories.tsx +65 -65
  166. package/src/stories/Avatar.stories.tsx +123 -123
  167. package/src/stories/Badge.stories.tsx +39 -39
  168. package/src/stories/Box.stories.tsx +35 -35
  169. package/src/stories/Breadcrumb.stories.tsx +44 -44
  170. package/src/stories/Button.stories.tsx +93 -93
  171. package/src/stories/Card.stories.tsx +39 -39
  172. package/src/stories/ChatMessage.stories.tsx +84 -84
  173. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  174. package/src/stories/CheckBox.stories.tsx +88 -88
  175. package/src/stories/DateInput.stories.tsx +51 -51
  176. package/src/stories/DatePicker.stories.tsx +50 -50
  177. package/src/stories/DropDown.stories.tsx +57 -57
  178. package/src/stories/IconButton.stories.tsx +78 -78
  179. package/src/stories/Modal.stories.tsx +246 -246
  180. package/src/stories/ModalStatus.stories.tsx +46 -46
  181. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  182. package/src/stories/Paper.stories.tsx +53 -53
  183. package/src/stories/ProgressBar.stories.tsx +116 -116
  184. package/src/stories/RadioGroup.stories.tsx +87 -87
  185. package/src/stories/RangerSlider.stories.tsx +149 -149
  186. package/src/stories/Select.stories.tsx +100 -100
  187. package/src/stories/SelectInput.stories.tsx +78 -78
  188. package/src/stories/Table.stories.tsx +372 -372
  189. package/src/stories/Tabs.stories.tsx +61 -61
  190. package/src/stories/Tag.stories.tsx +56 -56
  191. package/src/stories/Text.stories.tsx +37 -37
  192. package/src/stories/TextField.stories.tsx +310 -310
  193. package/src/stories/TextInput.stories.tsx +52 -52
  194. package/src/stories/TimeLine.stories.tsx +35 -35
  195. package/src/stories/TimePicker.stories.tsx +87 -87
  196. package/src/stories/Title.stories.tsx +43 -43
  197. package/src/stories/UncontrolledTable.stories.tsx +315 -315
  198. package/src/stories/UncontrolledTabs.stories.tsx +74 -74
  199. package/src/styles/globals.scss +17 -17
  200. package/src/types/index.ts +207 -207
  201. package/src/utils/styledBreakpoints.ts +25 -25
  202. 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';