norma-library 0.5.131 → 0.5.133

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 (184) 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/styles.d.ts +1 -1
  9. package/dist/esm/components/Breadcrumb/styles.d.ts +4 -4
  10. package/dist/esm/components/ChatMessageBalloon/ChatMessageBalloon.style.d.ts +1 -1
  11. package/dist/esm/components/DateInput/styles.d.ts +2 -2
  12. package/dist/esm/components/Icons.d.ts +1 -1
  13. package/dist/esm/components/Modal.js +4 -4
  14. package/dist/esm/components/Modal.js.map +1 -1
  15. package/dist/esm/components/MultiSelectInput/components/Option/styles.d.ts +1 -1
  16. package/dist/esm/components/MultiSelectInput/styles.d.ts +2 -2
  17. package/dist/esm/components/ProgressBar.d.ts +1 -1
  18. package/dist/esm/components/ProgressBar.js +19 -8
  19. package/dist/esm/components/ProgressBar.js.map +1 -1
  20. package/dist/esm/components/SelectInput/components/Option/styles.d.ts +1 -1
  21. package/dist/esm/components/SelectInput/styles.d.ts +2 -2
  22. package/dist/esm/components/Table/components/header/styles.d.ts +8 -8
  23. package/dist/esm/components/Table/components/pagination/styles.d.ts +1 -1
  24. package/dist/esm/components/Table/components/tbody/styles.d.ts +1 -1
  25. package/dist/esm/components/Table/styles.d.ts +10 -10
  26. package/dist/esm/components/TextInput/styles.d.ts +3 -3
  27. package/dist/esm/components/Typography/Text/styles.d.ts +1 -1
  28. package/dist/esm/components/Typography/Title/styles.d.ts +1 -1
  29. package/dist/esm/components/UncontrolledTable/components/header/styles.d.ts +8 -8
  30. package/dist/esm/components/UncontrolledTable/components/pagination/styles.d.ts +1 -1
  31. package/dist/esm/components/UncontrolledTable/components/tbody/styles.d.ts +1 -1
  32. package/dist/esm/components/UncontrolledTable/styles.d.ts +10 -10
  33. package/dist/esm/components/UncontrolledTabs/UncontrolledTabs.style.d.ts +1 -1
  34. package/dist/esm/interfaces/ProgressBar.d.ts +5 -1
  35. package/docs/index.md +118 -118
  36. package/package.json +136 -136
  37. package/src/components/Accordion.tsx +39 -39
  38. package/src/components/Avatar.tsx +17 -17
  39. package/src/components/Badge.tsx +14 -14
  40. package/src/components/Box/index.tsx +12 -12
  41. package/src/components/Box/interfaces.ts +3 -3
  42. package/src/components/Box/styles.tsx +22 -22
  43. package/src/components/Breadcrumb/index.tsx +27 -27
  44. package/src/components/Breadcrumb/interface.ts +8 -8
  45. package/src/components/Breadcrumb/styles.tsx +32 -32
  46. package/src/components/Button.tsx +26 -26
  47. package/src/components/Card.tsx +37 -37
  48. package/src/components/ChatMessage.tsx +87 -87
  49. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  50. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  51. package/src/components/CheckBox.tsx +21 -21
  52. package/src/components/DateInput/index.tsx +34 -34
  53. package/src/components/DateInput/interface.ts +13 -13
  54. package/src/components/DateInput/styles.tsx +27 -27
  55. package/src/components/DatePicker.tsx +67 -67
  56. package/src/components/DropDown.tsx +24 -24
  57. package/src/components/IconButton.tsx +37 -37
  58. package/src/components/Icons.tsx +82 -82
  59. package/src/components/Modal.tsx +103 -113
  60. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  61. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  62. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  63. package/src/components/MultiSelectInput/index.tsx +60 -60
  64. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  65. package/src/components/MultiSelectInput/styles.tsx +43 -43
  66. package/src/components/Paper.tsx +12 -12
  67. package/src/components/ProgressBar.tsx +63 -50
  68. package/src/components/RadioGroup.tsx +43 -43
  69. package/src/components/RangerSlider.tsx +65 -65
  70. package/src/components/Select.tsx +74 -74
  71. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  72. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  73. package/src/components/SelectInput/index.tsx +45 -45
  74. package/src/components/SelectInput/interfaces.ts +15 -15
  75. package/src/components/SelectInput/styles.tsx +31 -31
  76. package/src/components/Svgs.tsx +506 -506
  77. package/src/components/Table/components/header/index.tsx +86 -86
  78. package/src/components/Table/components/header/styles.tsx +59 -59
  79. package/src/components/Table/components/index.tsx +8 -8
  80. package/src/components/Table/components/pagination/index.tsx +39 -39
  81. package/src/components/Table/components/pagination/styles.tsx +28 -28
  82. package/src/components/Table/components/tbody/index.tsx +30 -30
  83. package/src/components/Table/components/tbody/styles.tsx +4 -4
  84. package/src/components/Table/index.tsx +317 -317
  85. package/src/components/Table/interface.ts +23 -23
  86. package/src/components/Table/styles.tsx +117 -117
  87. package/src/components/Tabs.tsx +105 -105
  88. package/src/components/Tag.tsx +33 -33
  89. package/src/components/TextField.tsx +19 -19
  90. package/src/components/TextInput/index.tsx +37 -37
  91. package/src/components/TextInput/interface.ts +9 -9
  92. package/src/components/TextInput/styles.tsx +23 -23
  93. package/src/components/TimeLine.tsx +89 -89
  94. package/src/components/TimePicker.tsx +78 -78
  95. package/src/components/Typography/Text/index.tsx +20 -20
  96. package/src/components/Typography/Text/interfaces.ts +5 -5
  97. package/src/components/Typography/Text/styles.tsx +40 -40
  98. package/src/components/Typography/Title/index.tsx +22 -22
  99. package/src/components/Typography/Title/interfaces.ts +6 -6
  100. package/src/components/Typography/Title/styles.tsx +40 -40
  101. package/src/components/Typography/index.tsx +6 -6
  102. package/src/components/UncontrolledTable/components/header/index.tsx +63 -63
  103. package/src/components/UncontrolledTable/components/header/styles.tsx +59 -59
  104. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  105. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  106. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  107. package/src/components/UncontrolledTable/components/tbody/index.tsx +30 -30
  108. package/src/components/UncontrolledTable/components/tbody/styles.tsx +4 -4
  109. package/src/components/UncontrolledTable/index.tsx +226 -226
  110. package/src/components/UncontrolledTable/interface.ts +42 -42
  111. package/src/components/UncontrolledTable/styles.tsx +120 -120
  112. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +51 -51
  113. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +68 -68
  114. package/src/components/index.ts +24 -24
  115. package/src/helpers/alignments.ts +14 -14
  116. package/src/helpers/borders.ts +18 -18
  117. package/src/helpers/colors.ts +206 -206
  118. package/src/helpers/index.ts +5 -5
  119. package/src/helpers/radios.ts +24 -24
  120. package/src/helpers/sizes.ts +72 -72
  121. package/src/index.ts +66 -66
  122. package/src/interfaces/Accordion.ts +12 -12
  123. package/src/interfaces/Avatar.tsx +15 -15
  124. package/src/interfaces/Badge.ts +19 -19
  125. package/src/interfaces/Button.ts +22 -22
  126. package/src/interfaces/Card.ts +11 -11
  127. package/src/interfaces/ChatMessage.ts +12 -12
  128. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  129. package/src/interfaces/CheckBox.ts +27 -27
  130. package/src/interfaces/DatePicker.ts +13 -13
  131. package/src/interfaces/DropDown.ts +14 -14
  132. package/src/interfaces/IconButton.ts +22 -22
  133. package/src/interfaces/Icons.ts +17 -17
  134. package/src/interfaces/Modal.ts +16 -16
  135. package/src/interfaces/Paper.ts +12 -12
  136. package/src/interfaces/ProgressBar.ts +25 -19
  137. package/src/interfaces/RadioGroup.ts +23 -23
  138. package/src/interfaces/RangerSlider.ts +21 -21
  139. package/src/interfaces/Select.ts +17 -17
  140. package/src/interfaces/Tabs.ts +19 -19
  141. package/src/interfaces/Tag.ts +17 -17
  142. package/src/interfaces/TextField.ts +44 -44
  143. package/src/interfaces/TimeLine.ts +11 -11
  144. package/src/interfaces/TimePicker.ts +13 -13
  145. package/src/interfaces/index.ts +23 -23
  146. package/src/providers/NormaProvider.tsx +13 -13
  147. package/src/sample-data-2.json +178 -178
  148. package/src/sample-data.json +177 -177
  149. package/src/stories/Accordion.stories.tsx +65 -65
  150. package/src/stories/Avatar.stories.tsx +123 -123
  151. package/src/stories/Badge.stories.tsx +39 -39
  152. package/src/stories/Box.stories.tsx +35 -35
  153. package/src/stories/Breadcrumb.stories.tsx +44 -44
  154. package/src/stories/Button.stories.tsx +93 -93
  155. package/src/stories/Card.stories.tsx +39 -39
  156. package/src/stories/ChatMessage.stories.tsx +84 -84
  157. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  158. package/src/stories/CheckBox.stories.tsx +88 -88
  159. package/src/stories/DateInput.stories.tsx +51 -51
  160. package/src/stories/DatePicker.stories.tsx +50 -50
  161. package/src/stories/DropDown.stories.tsx +57 -57
  162. package/src/stories/IconButton.stories.tsx +78 -78
  163. package/src/stories/Modal.stories.tsx +195 -195
  164. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  165. package/src/stories/Paper.stories.tsx +53 -53
  166. package/src/stories/ProgressBar.stories.tsx +113 -95
  167. package/src/stories/RadioGroup.stories.tsx +87 -87
  168. package/src/stories/RangerSlider.stories.tsx +158 -58
  169. package/src/stories/Select.stories.tsx +100 -100
  170. package/src/stories/SelectInput.stories.tsx +78 -78
  171. package/src/stories/Table.stories.tsx +372 -372
  172. package/src/stories/Tabs.stories.tsx +61 -61
  173. package/src/stories/Tag.stories.tsx +56 -56
  174. package/src/stories/Text.stories.tsx +37 -37
  175. package/src/stories/TextField.stories.tsx +310 -310
  176. package/src/stories/TextInput.stories.tsx +52 -52
  177. package/src/stories/TimeLine.stories.tsx +35 -35
  178. package/src/stories/TimePicker.stories.tsx +87 -87
  179. package/src/stories/Title.stories.tsx +43 -43
  180. package/src/stories/UncontrolledTable.stories.tsx +337 -337
  181. package/src/stories/UncontrolledTabs.stories.tsx +63 -63
  182. package/src/styles/globals.scss +17 -17
  183. package/src/types/index.ts +204 -204
  184. package/vite.config.ts +15 -15
@@ -1,95 +1,113 @@
1
- import React from 'react';
2
-
3
- import type { Meta, StoryObj } from '@storybook/react';
4
- import { ProgressBar } from '../components';
5
- import { ColorVariant, SizeVariant, TextFieldSizeVariant } from '../types';
6
-
7
- const colors: ColorVariant[] = ['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning'];
8
-
9
- const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
10
-
11
- const meta = {
12
- title: 'Display/ProgressBar',
13
- component: ProgressBar,
14
- parameters: {
15
- layout: 'centered',
16
- },
17
- tags: ['autodocs'],
18
- argTypes: {},
19
- } satisfies Meta<typeof ProgressBar>;
20
-
21
- export default meta;
22
-
23
- type Story = StoryObj<typeof meta>;
24
-
25
- const defaultArgs = {
26
- disabled: false,
27
- };
28
-
29
- export const Playground: Story = {
30
- args: {
31
- label: 'Progress',
32
- total: 100,
33
- color: 'primary',
34
- value: 10,
35
- },
36
- };
37
-
38
- export const ProgressBarBasic = () => (
39
- <div style={{ display: 'flex', gap: '1rem', width: '320px' }}>
40
- <div style={{ position: 'relative', width: '100%' }}>
41
- <ProgressBar value={40} total={100} color="primary" />
42
- </div>
43
- </div>
44
- );
45
-
46
- ProgressBarBasic.storyName = 'ProgressBar Basic';
47
-
48
- export const ProgressBarTitle: Story = () => (
49
- <div style={{ display: 'flex', gap: '1rem', width: '320px' }}>
50
- <div style={{ position: 'relative', width: '100%' }}>
51
- <ProgressBar value={10} label="Progress" total={100} />
52
- </div>
53
- </div>
54
- );
55
-
56
- ProgressBarTitle.storyName = 'ProgressBar With Title';
57
-
58
- export const ProgressBarColors: Story = () => (
59
- <>
60
- <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
61
- <>
62
- <div style={{ position: 'relative', flex: 1, width: '230px' }}>
63
- <ProgressBar value={100} total={300} color="inherit" label="Progress Inherit" />
64
- </div>
65
- <div style={{ position: 'relative', flex: 1, width: '230px' }}>
66
- <ProgressBar value={125} total={1000} color="secondary" label="Progress secondary" />
67
- </div>
68
- </>
69
- </div>
70
- <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
71
- <>
72
- <div style={{ position: 'relative', flex: 1, width: '230px' }}>
73
- <ProgressBar value={22} total={100} color="error" label="Progress error" />
74
- </div>
75
- <div style={{ position: 'relative', flex: 1, width: '230px' }}>
76
- <ProgressBar value={24} total={100} color="info" label="Progress info" />
77
- </div>
78
- </>
79
- </div>
80
- <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
81
- <>
82
- <div style={{ display: 'flex', gap: '1rem', marginBottom: 15 }}>
83
- <div style={{ position: 'relative', flex: 1, width: '230px' }}>
84
- <ProgressBar value={45} total={100} color="success" label="Progress success" />
85
- </div>
86
- <div style={{ position: 'relative', flex: 1, width: '230px' }}>
87
- <ProgressBar value={86} total={100} color="warning" label="Progress warning" />
88
- </div>
89
- </div>
90
- </>
91
- </div>
92
- </>
93
- );
94
-
95
- ProgressBarColors.storyName = 'ProgressBar Colors';
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { ProgressBar } from '../components';
4
+ import { ColorVariant } from '../types';
5
+
6
+ const colors: ColorVariant[] = ['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning'];
7
+
8
+ const meta = {
9
+ title: 'Display/ProgressBar',
10
+ component: ProgressBar,
11
+ parameters: {
12
+ layout: 'centered',
13
+ },
14
+ tags: ['autodocs'],
15
+ argTypes: {},
16
+ } satisfies Meta<typeof ProgressBar>;
17
+
18
+ export default meta;
19
+
20
+ type Story = StoryObj<typeof meta>;
21
+
22
+ const defaultArgs = {
23
+ disabled: false,
24
+ };
25
+
26
+ export const Playground: Story = {
27
+ args: {
28
+ label: 'Progress',
29
+ total: 100,
30
+ color: 'primary',
31
+ value: 10,
32
+ },
33
+ };
34
+
35
+ export const ProgressBarBasic = () => (
36
+ <div style={{ display: 'flex', gap: '1rem', width: '320px' }}>
37
+ <div style={{ position: 'relative', width: '100%' }}>
38
+ <ProgressBar value={40} total={100} color="primary" />
39
+ </div>
40
+ </div>
41
+ );
42
+
43
+ ProgressBarBasic.storyName = 'ProgressBar Basic';
44
+
45
+ export const ProgressBarTitle: Story = () => (
46
+ <div style={{ display: 'flex', gap: '1rem', width: '320px' }}>
47
+ <div style={{ position: 'relative', width: '100%' }}>
48
+ <ProgressBar value={10} label="Progress" total={100} />
49
+ </div>
50
+ </div>
51
+ );
52
+
53
+ ProgressBarTitle.storyName = 'ProgressBar With Title';
54
+
55
+ export const ProgressBarColors: Story = () => (
56
+ <>
57
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
58
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
59
+ <ProgressBar value={100} total={300} color="inherit" label="Progress Inherit" />
60
+ </div>
61
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
62
+ <ProgressBar value={125} total={1000} color="secondary" label="Progress secondary" />
63
+ </div>
64
+ </div>
65
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
66
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
67
+ <ProgressBar value={22} total={100} color="error" label="Progress error" />
68
+ </div>
69
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
70
+ <ProgressBar value={24} total={100} color="info" label="Progress info" />
71
+ </div>
72
+ </div>
73
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
74
+ <div style={{ display: 'flex', gap: '1rem', marginBottom: 15 }}>
75
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
76
+ <ProgressBar value={45} total={100} color="success" label="Progress success" />
77
+ </div>
78
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
79
+ <ProgressBar value={86} total={100} color="warning" label="Progress warning" />
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </>
84
+ );
85
+
86
+ ProgressBarColors.storyName = 'ProgressBar Colors';
87
+
88
+ export const ProgressBarCustomColors: Story = () => (
89
+ <>
90
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
91
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
92
+ <ProgressBar
93
+ value={50}
94
+ total={100}
95
+ colorCustom={{ root: 'rgba(179, 222, 105, 0.2)', bar: '#b3de69' }}
96
+ label="Custom Color"
97
+ />
98
+ </div>
99
+ </div>
100
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
101
+ <div style={{ position: 'relative', flex: 1, width: '230px' }}>
102
+ <ProgressBar
103
+ value={75}
104
+ total={100}
105
+ colorCustom={{ root: 'rgba(0, 191, 255, 0.2)', bar: '#00bfff' }}
106
+ label="Custom Color Blue"
107
+ />
108
+ </div>
109
+ </div>
110
+ </>
111
+ );
112
+
113
+ ProgressBarCustomColors.storyName = 'ProgressBar Custom Colors';
@@ -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,58 +1,158 @@
1
- import React from 'react';
2
-
3
- import type { Meta, StoryObj } from '@storybook/react';
4
- import { RangerSlider } from '../components';
5
- import { ColorVariant, SizeVariant, TextFieldSizeVariant } from '../types';
6
-
7
- const colors: ColorVariant[] = ['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning'];
8
-
9
- const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
10
-
11
- const meta = {
12
- title: 'Display/RangerSlider',
13
- component: RangerSlider,
14
- parameters: {
15
- layout: 'centered',
16
- },
17
- tags: ['autodocs'],
18
- argTypes: {},
19
- } satisfies Meta<typeof RangerSlider>;
20
-
21
- export default meta;
22
-
23
- type Story = StoryObj<typeof meta>;
24
-
25
- export const Playground: Story = {
26
- args: {
27
- max: 90,
28
- min: 10,
29
- value: [20, 80],
30
- color: 'primary',
31
- },
32
- };
33
-
34
- function valuetext(value: number) {
35
- return `${value}°C`;
36
- }
37
-
38
- export const RangerSliderBasic = () => {
39
- const [value, setValue] = React.useState<number[]>([20, 37]);
40
-
41
- const handleChange = (event: Event, newValue: number | number[]) => {
42
- setValue(newValue as number[]);
43
- };
44
-
45
- return (
46
- <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
47
- <RangerSlider
48
- getAriaLabel={() => 'Temperature range'}
49
- value={value}
50
- onChange={handleChange}
51
- valueLabelDisplay="on"
52
- getAriaValueText={valuetext}
53
- />
54
- </div>
55
- );
56
- };
57
-
58
- RangerSliderBasic.storyName = 'RangerSlider Basic';
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
+
6
+ const colors: ColorVariant[] = ['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning'];
7
+ const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
8
+
9
+ const meta: Meta<typeof RangerSlider> = {
10
+ title: 'Display/RangerSlider',
11
+ component: RangerSlider,
12
+ parameters: {
13
+ layout: 'centered',
14
+ },
15
+ tags: ['autodocs'],
16
+ argTypes: {
17
+ color: {
18
+ control: { type: 'select' },
19
+ options: colors,
20
+ description: 'Define a cor do slider.',
21
+ },
22
+ size: {
23
+ control: { type: 'select' },
24
+ options: sizes,
25
+ description: 'Define o tamanho do slider.',
26
+ },
27
+ min: {
28
+ control: { type: 'number' },
29
+ defaultValue: 0,
30
+ description: 'Define o valor mínimo do slider.',
31
+ },
32
+ max: {
33
+ control: { type: 'number' },
34
+ defaultValue: 100,
35
+ description: 'Define o valor máximo do slider.',
36
+ },
37
+ step: {
38
+ control: { type: 'number' },
39
+ defaultValue: 1,
40
+ description: 'Define o passo do slider.',
41
+ },
42
+ valueLabelDisplay: {
43
+ control: { type: 'select' },
44
+ options: ['on', 'auto', 'off'],
45
+ defaultValue: 'auto',
46
+ description: 'Controla a exibição dos rótulos de valor.',
47
+ },
48
+ valueLabelFormat: {
49
+ control: { type: 'function' },
50
+ description: 'Função para formatar o rótulo do valor.',
51
+ },
52
+ defaultValue: {
53
+ control: { type: 'number' },
54
+ defaultValue: 50,
55
+ description: 'Define o valor padrão do slider.',
56
+ },
57
+ onChange: {
58
+ action: 'changed',
59
+ description: 'Função callback que é disparada quando o valor do slider é alterado.',
60
+ },
61
+ },
62
+ };
63
+
64
+ export default meta;
65
+
66
+ type Story = StoryObj<typeof meta>;
67
+
68
+ function valuetext(value: number) {
69
+ return `${value}°C`;
70
+ }
71
+
72
+ export const RangerSliderBasic: Story = {
73
+ args: {
74
+ value: [20, 37],
75
+ valueLabelDisplay: 'on',
76
+ getAriaLabel: () => 'Faixa de temperatura',
77
+ },
78
+ argTypes: {
79
+ value: {
80
+ control: { type: 'array' },
81
+ },
82
+ },
83
+ render: (args) => {
84
+ const [value, setValue] = React.useState<number[]>(args.value);
85
+
86
+ const handleChange = (event: Event, newValue: number | number[]) => {
87
+ setValue(newValue as number[]);
88
+ args.onChange?.(event, newValue, 0);
89
+ };
90
+
91
+ return (
92
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
93
+ <RangerSlider
94
+ {...args}
95
+ value={value}
96
+ onChange={handleChange}
97
+ />
98
+ </div>
99
+ );
100
+ },
101
+ name: 'RangerSlider Básico',
102
+ };
103
+
104
+ export const RangerSliderFormatter: Story = {
105
+ args: {
106
+ value: [0, 540],
107
+ valueLabelDisplay: 'on',
108
+ getAriaLabel: () => 'Faixa de tempo',
109
+ valueLabelFormat: (value: number) => {
110
+ if (value < 60) {
111
+ return `${value}s`;
112
+ } else if (value < 3600) {
113
+ const minutes = Math.floor(value / 60);
114
+ const seconds = value % 60;
115
+ return seconds === 0 ? `${minutes}min` : `${minutes}min ${seconds}s`;
116
+ } else {
117
+ const hours = Math.floor(value / 3600);
118
+ const minutes = Math.floor((value % 3600) / 60);
119
+ const seconds = value % 60;
120
+ if (minutes === 0 && seconds === 0) {
121
+ return `${hours}h`;
122
+ } else if (minutes === 0) {
123
+ return `${hours}h ${seconds}s`;
124
+ } else if (seconds === 0) {
125
+ return `${hours}h ${minutes}min`;
126
+ } else {
127
+ return `${hours}h ${minutes}min ${seconds}s`;
128
+ }
129
+ }
130
+ },
131
+ min: 0,
132
+ max: 1000,
133
+ },
134
+ argTypes: {
135
+ value: {
136
+ control: { type: 'array' },
137
+ },
138
+ },
139
+ render: (args) => {
140
+ const [value, setValue] = React.useState<number[]>(args.value);
141
+
142
+ const handleChange = (event: Event, newValue: number | number[]) => {
143
+ setValue(newValue as number[]);
144
+ args.onChange?.(event, newValue, 0);
145
+ };
146
+
147
+ return (
148
+ <div style={{ display: 'flex', gap: '1rem', width: '480px', marginBottom: 30 }}>
149
+ <RangerSlider
150
+ {...args}
151
+ value={value}
152
+ onChange={handleChange}
153
+ />
154
+ </div>
155
+ );
156
+ },
157
+ name: 'RangerSlider com Formatter',
158
+ };