@1doc/1ds-react 0.0.1 → 2.7.1

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 (101) hide show
  1. package/CHANGELOG.md +667 -0
  2. package/README.md +138 -6
  3. package/package.json +43 -10
  4. package/src/index.ts +161 -16
  5. package/src/teste/AttachmentCard.test.tsx +161 -0
  6. package/src/teste/Chart.test.tsx +233 -0
  7. package/src/teste/Combobox.test.tsx +251 -0
  8. package/src/teste/DataTable.test.tsx +70 -0
  9. package/src/teste/DatePicker.test.tsx +86 -0
  10. package/src/teste/Drawer.test.tsx +265 -0
  11. package/src/teste/Dropdown.test.tsx +217 -0
  12. package/src/teste/Input.test.tsx +64 -0
  13. package/src/teste/Kanban.test.tsx +333 -0
  14. package/src/teste/MultiSelect.test.tsx +73 -0
  15. package/src/teste/Podium.test.tsx +107 -0
  16. package/src/teste/Popover.test.tsx +221 -0
  17. package/src/teste/SegmentedControl.test.tsx +183 -0
  18. package/src/teste/Timeline.test.tsx +100 -0
  19. package/src/teste/Tree.test.tsx +74 -0
  20. package/src/teste/setup.ts +7 -0
  21. package/src/utils/bandeiras.ts +22 -0
  22. package/src/utils/chart.ts +682 -0
  23. package/src/utils/density.ts +27 -0
  24. package/src/utils/overlay-stack.ts +26 -0
  25. package/src/utils/theme.ts +63 -47
  26. package/src/utils/toast.ts +89 -0
  27. package/vitest.config.ts +28 -0
  28. package/dist/components/Alert/Alert.css +0 -188
  29. package/dist/components/Alert/Alert.d.ts +0 -65
  30. package/dist/components/Alert/Alert.js +0 -56
  31. package/dist/components/Avatar/Avatar.css +0 -88
  32. package/dist/components/Avatar/Avatar.d.ts +0 -34
  33. package/dist/components/Avatar/Avatar.js +0 -16
  34. package/dist/components/Avatar/AvatarGroup.d.ts +0 -12
  35. package/dist/components/Avatar/AvatarGroup.js +0 -8
  36. package/dist/components/Badge/Badge.css +0 -155
  37. package/dist/components/Badge/Badge.d.ts +0 -46
  38. package/dist/components/Badge/Badge.js +0 -17
  39. package/dist/components/Button/Button.css +0 -199
  40. package/dist/components/Button/Button.d.ts +0 -23
  41. package/dist/components/Button/Button.js +0 -62
  42. package/dist/components/Checkbox/Checkbox.css +0 -122
  43. package/dist/components/Checkbox/Checkbox.d.ts +0 -21
  44. package/dist/components/Checkbox/Checkbox.js +0 -49
  45. package/dist/components/Divider/Divider.css +0 -81
  46. package/dist/components/Divider/Divider.d.ts +0 -18
  47. package/dist/components/Divider/Divider.js +0 -26
  48. package/dist/components/Grid/Grid.css +0 -154
  49. package/dist/components/Grid/Grid.d.ts +0 -21
  50. package/dist/components/Grid/Grid.js +0 -53
  51. package/dist/components/Icon/Icon.css +0 -41
  52. package/dist/components/Icon/Icon.d.ts +0 -12
  53. package/dist/components/Icon/Icon.js +0 -29
  54. package/dist/components/Input/Input.css +0 -190
  55. package/dist/components/Input/Input.d.ts +0 -32
  56. package/dist/components/Input/Input.js +0 -58
  57. package/dist/components/Link/Link.css +0 -76
  58. package/dist/components/Link/Link.d.ts +0 -15
  59. package/dist/components/Link/Link.js +0 -19
  60. package/dist/components/Logo/Logo.css +0 -32
  61. package/dist/components/Logo/Logo.d.ts +0 -10
  62. package/dist/components/Logo/Logo.js +0 -16
  63. package/dist/components/Modal/Modal.css +0 -155
  64. package/dist/components/Modal/Modal.d.ts +0 -36
  65. package/dist/components/Modal/Modal.js +0 -55
  66. package/dist/components/Radio/Radio.css +0 -114
  67. package/dist/components/Radio/Radio.d.ts +0 -19
  68. package/dist/components/Radio/Radio.js +0 -39
  69. package/dist/components/Select/Select.css +0 -291
  70. package/dist/components/Select/Select.d.ts +0 -38
  71. package/dist/components/Select/Select.js +0 -246
  72. package/dist/components/Spinner/Spinner.css +0 -60
  73. package/dist/components/Spinner/Spinner.d.ts +0 -16
  74. package/dist/components/Spinner/Spinner.js +0 -16
  75. package/dist/components/Switch/Switch.css +0 -127
  76. package/dist/components/Switch/Switch.d.ts +0 -18
  77. package/dist/components/Switch/Switch.js +0 -57
  78. package/dist/components/Tabs/Tab.d.ts +0 -19
  79. package/dist/components/Tabs/Tab.js +0 -76
  80. package/dist/components/Tabs/TabContent.d.ts +0 -15
  81. package/dist/components/Tabs/TabContent.js +0 -11
  82. package/dist/components/Tabs/Tabs.css +0 -124
  83. package/dist/components/Tabs/Tabs.d.ts +0 -20
  84. package/dist/components/Tabs/Tabs.js +0 -14
  85. package/dist/components/Tabs/TabsContent.d.ts +0 -16
  86. package/dist/components/Tabs/TabsContent.js +0 -12
  87. package/dist/components/Tabs/tabs.context.d.ts +0 -2
  88. package/dist/components/Tabs/tabs.context.js +0 -2
  89. package/dist/components/Tag/Tag.css +0 -140
  90. package/dist/components/Tag/Tag.d.ts +0 -63
  91. package/dist/components/Tag/Tag.js +0 -48
  92. package/dist/components/Text/Text.css +0 -1213
  93. package/dist/components/Text/Text.d.ts +0 -70
  94. package/dist/components/Text/Text.js +0 -89
  95. package/dist/components/Textarea/Textarea.css +0 -133
  96. package/dist/components/Textarea/Textarea.d.ts +0 -28
  97. package/dist/components/Textarea/Textarea.js +0 -72
  98. package/dist/index.d.ts +0 -25
  99. package/dist/index.js +0 -27
  100. package/dist/utils/theme.d.ts +0 -30
  101. package/dist/utils/theme.js +0 -106
@@ -1,88 +0,0 @@
1
- .umds-avatar {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: center;
5
- border-radius: 9999px;
6
- overflow: hidden;
7
- font-family: var(--umds-semantic-font-family-base, inherit);
8
- font-weight: 600;
9
- /* SemiBold */
10
- text-transform: uppercase;
11
- line-height: 1;
12
- box-sizing: border-box;
13
- flex-shrink: 0;
14
- white-space: nowrap;
15
- user-select: none;
16
- border: 1.5px solid var(--umds-semantic-color-background-white);
17
- /* Borda branca global */
18
- }
19
-
20
- /* Sizes */
21
- .umds-avatar--xs {
22
- width: 16px;
23
- height: 16px;
24
- font-size: 8px;
25
- }
26
-
27
- .umds-avatar--sm {
28
- width: 24px;
29
- height: 24px;
30
- font-size: 12px;
31
- }
32
-
33
- .umds-avatar--md {
34
- width: 42px;
35
- height: 42px;
36
- font-size: 16px;
37
- }
38
-
39
- .umds-avatar--lg {
40
- width: 64px;
41
- height: 64px;
42
- font-size: 24px;
43
- }
44
-
45
- /* Types */
46
- .umds-avatar--letter {
47
- background-color: var(--umds-semantic-color-primary-light);
48
- color: var(--umds-semantic-color-primary-dark);
49
- }
50
-
51
- .umds-avatar--number {
52
- background-color: var(--umds-semantic-color-primary-dark);
53
- /* Alterado para Primary Dark */
54
- color: var(--umds-semantic-color-background-white);
55
- }
56
-
57
- /* Ajuste fino para fonte do Number se necessário */
58
- .umds-avatar--number.umds-avatar--xs {
59
- font-size: 6px;
60
- }
61
-
62
- .umds-avatar--photo {
63
- background-color: var(--umds-semantic-color-neutral-light-medium);
64
- }
65
-
66
- .umds-avatar__image {
67
- width: 100%;
68
- height: 100%;
69
- object-fit: cover;
70
- display: block;
71
- }
72
-
73
- /* Avatar Group Styles */
74
- .umds-avatar-group {
75
- display: inline-flex;
76
- flex-direction: row;
77
- align-items: center;
78
- }
79
-
80
- .umds-avatar-group .umds-avatar {
81
- /* Border já definida no componente base */
82
- margin-right: -6px;
83
- z-index: 1;
84
- }
85
-
86
- .umds-avatar-group .umds-avatar:hover {
87
- z-index: 5;
88
- }
@@ -1,34 +0,0 @@
1
- import './Avatar.css';
2
- export interface AvatarProps {
3
- /**
4
- * URL da imagem. Se fornecida, o tipo será automaticamente 'Photo' visualmente,
5
- * a menos que haja erro no carregamento (fallback para Letter/Number).
6
- */
7
- src?: string;
8
- /**
9
- * Texto alternativo para a imagem (acessibilidade).
10
- */
11
- alt?: string;
12
- /**
13
- * Tamanho do avatar.
14
- * XS: 16px, SM: 24px, MD: 42px, LG: 64px.
15
- * @default 'md'
16
- */
17
- size?: "xs" | "sm" | "md" | "lg";
18
- /**
19
- * Tipo do avatar. Controla estilos de cor.
20
- * @default 'letter'
21
- */
22
- type?: "photo" | "letter" | "number";
23
- /**
24
- * Conteúdo interno (Iniciais ou Número).
25
- * Ex: "AB", "+3".
26
- */
27
- children?: any;
28
- /**
29
- * Classes adicionais.
30
- */
31
- className?: string;
32
- }
33
- declare function Avatar(props: AvatarProps): import("react/jsx-runtime").JSX.Element;
34
- export default Avatar;
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './Avatar.css';
3
- function Avatar(props) {
4
- function classes() {
5
- return [
6
- "umds-avatar",
7
- `umds-avatar--${props.size || "md"}`,
8
- `umds-avatar--${props.type || (props.src ? "photo" : "letter")}`,
9
- props.className,
10
- ]
11
- .filter(Boolean)
12
- .join(" ");
13
- }
14
- return (_jsxs("div", { className: classes(), children: [props.src ? (_jsx("img", { className: "umds-avatar__image", src: props.src, alt: props.alt || "" })) : null, !props.src ? _jsx(_Fragment, { children: props.children }) : null] }));
15
- }
16
- export default Avatar;
@@ -1,12 +0,0 @@
1
- export interface AvatarGroupProps {
2
- /**
3
- * Conteúdo (lista de Avatars).
4
- */
5
- children?: any;
6
- /**
7
- * Classes adicionais.
8
- */
9
- className?: string;
10
- }
11
- declare function AvatarGroup(props: AvatarGroupProps): import("react/jsx-runtime").JSX.Element;
12
- export default AvatarGroup;
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- function AvatarGroup(props) {
3
- function classes() {
4
- return ["umds-avatar-group", props.className].filter(Boolean).join(" ");
5
- }
6
- return _jsx("div", { className: classes(), children: props.children });
7
- }
8
- export default AvatarGroup;
@@ -1,155 +0,0 @@
1
- .umds-badge {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: center;
5
- border-radius: 4px;
6
- font-family: var(--umds-semantic-font-family-base, sans-serif);
7
- font-weight: 600;
8
- line-height: 1;
9
- white-space: nowrap;
10
- letter-spacing: normal;
11
- border: 1px solid transparent;
12
- box-sizing: border-box;
13
- gap: 6px;
14
- }
15
-
16
- .umds-badge__icon {
17
- display: inline-flex;
18
- align-self: center;
19
- flex-shrink: 0;
20
- }
21
-
22
- .umds-badge__icon:empty {
23
- display: none;
24
- }
25
-
26
- .umds-badge__icon svg,
27
- .umds-badge__icon img,
28
- .umds-badge__icon .umds-icon {
29
- width: 1.15em;
30
- height: 1.15em;
31
- font-size: 1.15em;
32
- display: block;
33
- }
34
-
35
- /* Sizes (Heights in REM as requested) */
36
- .umds-badge--lg {
37
- font-size: 14px;
38
- padding: 0 16px;
39
- height: 3rem;
40
- }
41
-
42
- .umds-badge--md {
43
- font-size: 12px;
44
- padding: 0 12px;
45
- height: 2rem;
46
- }
47
-
48
- .umds-badge--sm {
49
- font-size: 10px;
50
- padding: 0 8px;
51
- height: 1.5rem;
52
- }
53
-
54
- .umds-badge--xs {
55
- font-size: 9px;
56
- padding: 0 6px;
57
- height: 1rem;
58
- gap: 4px;
59
- }
60
-
61
- .umds-badge--pill {
62
- font-size: 9px;
63
- /* Ajuste para caber em 0.75rem (12px) */
64
- padding: 0 6px;
65
- height: 0.75rem;
66
- border-radius: 9999px;
67
- font-weight: 700;
68
- }
69
-
70
- /* Hide icons in Pill size */
71
- .umds-badge--pill .umds-badge__icon {
72
- display: none !important;
73
- }
74
-
75
- /* --- Solid --- */
76
- .umds-badge--solid.umds-badge--neutral {
77
- background-color: var(--umds-semantic-color-neutral-dark-down);
78
- color: var(--umds-semantic-color-background-white);
79
- }
80
-
81
- .umds-badge--solid.umds-badge--positive {
82
- background-color: var(--umds-semantic-color-feedback-positive-pure);
83
- color: var(--umds-semantic-color-background-white);
84
- }
85
-
86
- .umds-badge--solid.umds-badge--negative {
87
- background-color: var(--umds-semantic-color-feedback-negative-pure);
88
- color: var(--umds-semantic-color-background-white);
89
- }
90
-
91
- .umds-badge--solid.umds-badge--info {
92
- background-color: var(--umds-semantic-color-feedback-info-pure);
93
- color: var(--umds-semantic-color-background-white);
94
- }
95
-
96
- .umds-badge--solid.umds-badge--primary {
97
- background-color: var(--umds-semantic-color-primary-pure);
98
- color: var(--umds-semantic-color-background-white);
99
- }
100
-
101
- /* --- Soft (Subtle) --- */
102
- .umds-badge--soft.umds-badge--neutral {
103
- background-color: var(--umds-semantic-color-neutral-light-medium);
104
- color: var(--umds-semantic-color-neutral-dark-pure);
105
- }
106
-
107
- .umds-badge--soft.umds-badge--positive {
108
- background-color: var(--umds-semantic-color-feedback-positive-light);
109
- color: var(--umds-semantic-color-feedback-positive-dark);
110
- }
111
-
112
- .umds-badge--soft.umds-badge--negative {
113
- background-color: var(--umds-semantic-color-feedback-negative-light);
114
- color: var(--umds-semantic-color-feedback-negative-dark);
115
- }
116
-
117
- .umds-badge--soft.umds-badge--info {
118
- background-color: var(--umds-semantic-color-feedback-info-light);
119
- color: var(--umds-semantic-color-feedback-info-dark);
120
- }
121
-
122
- .umds-badge--soft.umds-badge--primary {
123
- background-color: var(--umds-semantic-color-primary-light);
124
- color: var(--umds-semantic-color-primary-pure);
125
- }
126
-
127
- /* --- Outlined --- */
128
- .umds-badge--outlined {
129
- background-color: transparent;
130
- }
131
-
132
- .umds-badge--outlined.umds-badge--neutral {
133
- border-color: var(--umds-semantic-color-neutral-dark-medium);
134
- color: var(--umds-semantic-color-neutral-dark-medium);
135
- }
136
-
137
- .umds-badge--outlined.umds-badge--positive {
138
- border-color: var(--umds-semantic-color-feedback-positive-pure);
139
- color: var(--umds-semantic-color-feedback-positive-pure);
140
- }
141
-
142
- .umds-badge--outlined.umds-badge--negative {
143
- border-color: var(--umds-semantic-color-feedback-negative-pure);
144
- color: var(--umds-semantic-color-feedback-negative-pure);
145
- }
146
-
147
- .umds-badge--outlined.umds-badge--info {
148
- border-color: var(--umds-semantic-color-feedback-info-pure);
149
- color: var(--umds-semantic-color-feedback-info-pure);
150
- }
151
-
152
- .umds-badge--outlined.umds-badge--primary {
153
- border-color: var(--umds-semantic-color-primary-pure);
154
- color: var(--umds-semantic-color-primary-pure);
155
- }
@@ -1,46 +0,0 @@
1
- import './Badge.css';
2
- /**
3
- * Componente Badge para exibir status, rótulos e contagens.
4
- * Suporta múltiplas variantes de cor, tamanhos e estilos.
5
- */
6
- export interface BadgeProps {
7
- /**
8
- * Variação de cor semântica.
9
- * @default 'neutral'
10
- */
11
- variant?: "neutral" | "positive" | "negative" | "info" | "primary";
12
- /**
13
- * Tamanho do badge.
14
- * LG: 3rem, MD: 2rem, SM: 1.5rem, XS: 1rem, PILL: 0.75rem.
15
- * @default 'md'
16
- */
17
- size?: "sm" | "md" | "lg" | "xs" | "pill";
18
- /**
19
- * Estilo visual do badge.
20
- * @default 'soft'
21
- */
22
- type?: "solid" | "soft" | "outlined";
23
- /**
24
- * Conteúdo do ícone à esquerda.
25
- * - React: Passe um elemento React (ex: `<Icon />`).
26
- * - Vue: Utilize o slot `#iconLeft`.
27
- */
28
- iconLeft?: any;
29
- /**
30
- * Conteúdo do ícone à direita.
31
- * - React: Passe um elemento React (ex: `<Icon />`).
32
- * - Vue: Utilize o slot `#iconRight`.
33
- */
34
- iconRight?: any;
35
- /**
36
- * Classes CSS adicionais.
37
- */
38
- className?: string;
39
- /**
40
- * Conteúdo textual do badge.
41
- */
42
- children?: any;
43
- [key: string]: any;
44
- }
45
- declare function Badge(props: BadgeProps): import("react/jsx-runtime").JSX.Element;
46
- export default Badge;
@@ -1,17 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './Badge.css';
3
- function Badge(props) {
4
- function classes() {
5
- return [
6
- "umds-badge",
7
- `umds-badge--${props.variant || "neutral"}`,
8
- `umds-badge--${props.size || "md"}`,
9
- `umds-badge--${props.type || "soft"}`,
10
- props.className,
11
- ]
12
- .filter(Boolean)
13
- .join(" ");
14
- }
15
- return (_jsxs("span", { ...props, className: classes(), children: [_jsx("span", { className: "umds-badge__icon", children: _jsx(_Fragment, { children: props.iconLeft }) }), _jsx(_Fragment, { children: props.children || "{props.children}" }), _jsx("span", { className: "umds-badge__icon", children: _jsx(_Fragment, { children: props.iconRight }) })] }));
16
- }
17
- export default Badge;
@@ -1,199 +0,0 @@
1
- .umds-button {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: center;
5
- gap: var(--umds-primitive-spacing-nano);
6
- border-radius: var(--umds-primitive-border-radius-sm);
7
- /* Updated from 4px to match Figma */
8
- padding: 0 var(--umds-primitive-spacing-xxxs);
9
- height: var(--umds-primitive-spacing-sm);
10
- cursor: pointer;
11
- border: 1px solid transparent;
12
- font-family: var(--umds-semantic-font-family-base, inherit);
13
- font-weight: var(--umds-primitive-font-weight-semibold);
14
- /* Updated from 500 to match Figma (Semibold) */
15
- transition: all 0.2s;
16
- font-size: var(--umds-primitive-font-size-xxs);
17
- line-height: 1;
18
- }
19
-
20
-
21
- /* Focus States */
22
- .umds-button:focus-visible {
23
- outline: 2px solid var(--umds-semantic-color-neutral-dark-down);
24
- outline-offset: 2px;
25
- box-shadow: none;
26
- }
27
-
28
- /* Primary */
29
- .umds-button--primary {
30
- background-color: var(--umds-semantic-color-primary-pure);
31
- color: var(--umds-semantic-color-neutral-light-pure);
32
- }
33
-
34
- .umds-button--primary:hover:not(:disabled) {
35
- background-color: var(--umds-semantic-color-primary-dark);
36
- }
37
-
38
- .umds-button--primary:disabled {
39
- background-color: var(--umds-semantic-color-neutral-light-medium);
40
- cursor: not-allowed;
41
- color: var(--umds-semantic-color-neutral-dark-medium);
42
- }
43
-
44
- /* Secondary */
45
- .umds-button--secondary {
46
- background-color: transparent;
47
- border-color: var(--umds-semantic-color-primary-pure);
48
- color: var(--umds-semantic-color-primary-pure);
49
- }
50
-
51
- .umds-button--secondary:hover:not(:disabled) {
52
- background-color: var(--umds-semantic-color-primary-light);
53
- }
54
-
55
- .umds-button--secondary:disabled {
56
- border-color: var(--umds-semantic-color-neutral-light-medium);
57
- color: var(--umds-semantic-color-neutral-dark-medium);
58
- cursor: not-allowed;
59
- }
60
-
61
- /* Sizes */
62
- .umds-button--sm {
63
- height: var(--umds-primitive-spacing-xs);
64
- padding: 0 12px;
65
- font-size: var(--umds-primitive-font-size-xxxs);
66
- }
67
-
68
- .umds-button--md {
69
- height: var(--umds-primitive-spacing-sm);
70
- padding: 0 var(--umds-primitive-spacing-xxxs);
71
- font-size: var(--umds-primitive-font-size-xxs);
72
- }
73
-
74
- .umds-button--lg {
75
- height: var(--umds-primitive-spacing-md);
76
- padding: 0 var(--umds-primitive-spacing-xxs);
77
- font-size: var(--umds-primitive-font-size-xs);
78
- }
79
-
80
- /* Neutral */
81
- .umds-button--neutral {
82
- background-color: var(--umds-semantic-color-neutral-light-pure);
83
- border-color: var(--umds-semantic-color-neutral-dark-up);
84
- color: var(--umds-semantic-color-neutral-dark-down);
85
- }
86
-
87
- .umds-button--neutral:hover:not(:disabled) {
88
- background-color: var(--umds-semantic-color-neutral-light-medium);
89
- }
90
-
91
- .umds-button--neutral:disabled {
92
- background-color: var(--umds-semantic-color-neutral-light-pure);
93
- border-color: var(--umds-semantic-color-neutral-light-down);
94
- color: var(--umds-semantic-color-neutral-light-down);
95
- cursor: not-allowed;
96
- }
97
-
98
- /* Text */
99
- .umds-button--text {
100
- background-color: transparent;
101
- border-color: transparent;
102
- color: var(--umds-semantic-color-primary-pure);
103
- }
104
-
105
- .umds-button--text:hover:not(:disabled) {
106
- background-color: var(--umds-semantic-color-primary-light);
107
- }
108
-
109
- .umds-button--text:disabled {
110
- color: var(--umds-semantic-color-neutral-dark-medium);
111
- cursor: not-allowed;
112
- }
113
-
114
- /* Danger */
115
- .umds-button--danger {
116
- background-color: var(--umds-semantic-color-feedback-negative-pure);
117
- color: var(--umds-semantic-color-neutral-light-pure);
118
- }
119
-
120
- .umds-button--danger:hover:not(:disabled) {
121
- background-color: var(--umds-semantic-color-feedback-negative-dark);
122
- }
123
-
124
- .umds-button--danger:disabled {
125
- background-color: var(--umds-semantic-color-neutral-light-medium);
126
- color: var(--umds-semantic-color-neutral-dark-medium);
127
- cursor: not-allowed;
128
- }
129
-
130
- /* Danger Outlined */
131
- .umds-button--danger-outlined {
132
- background-color: transparent;
133
- border-color: var(--umds-semantic-color-feedback-negative-pure);
134
- color: var(--umds-semantic-color-feedback-negative-dark);
135
- }
136
-
137
- .umds-button--danger-outlined:hover:not(:disabled) {
138
- background-color: var(--umds-semantic-color-feedback-negative-light);
139
- }
140
-
141
- .umds-button--danger-outlined:disabled {
142
- border-color: var(--umds-semantic-color-neutral-light-medium);
143
- color: var(--umds-semantic-color-neutral-dark-medium);
144
- cursor: not-allowed;
145
- }
146
-
147
- /* Icon */
148
- .umds-button--icon {
149
- background-color: transparent;
150
- color: var(--umds-semantic-color-neutral-dark-down);
151
- padding: 0;
152
- min-width: unset;
153
- }
154
-
155
- .umds-button--icon:hover:not(:disabled) {
156
- background-color: var(--umds-semantic-color-neutral-light-medium);
157
- }
158
-
159
- .umds-button--icon.umds-button--sm {
160
- width: 32px;
161
- }
162
-
163
- .umds-button--icon.umds-button--md {
164
- width: 40px;
165
- }
166
-
167
- .umds-button--icon.umds-button--lg {
168
- width: 48px;
169
- /* Assuming 48px for large icon button, Figma said 40 but text buttons are 48? Need to double check, keeping consistent with height for now */
170
- }
171
-
172
- .umds-button--icon:disabled {
173
- color: var(--umds-semantic-color-neutral-light-down);
174
- cursor: not-allowed;
175
- }
176
-
177
- /* Full Width */
178
- .umds-button--full-width {
179
- width: 100%;
180
- }
181
-
182
- /* Loading */
183
- .umds-button__loading {
184
- animation: spin 1s linear infinite;
185
- height: 1em;
186
- width: 1em;
187
- min-width: 1em;
188
- /* Ensure it doesn't shrink */
189
- }
190
-
191
- @keyframes spin {
192
- from {
193
- transform: rotate(0deg);
194
- }
195
-
196
- to {
197
- transform: rotate(360deg);
198
- }
199
- }
@@ -1,23 +0,0 @@
1
- import './Button.css';
2
- /**
3
- * Button component properties
4
- * @property {string} [aria-label] - Descrição acessível do botão. OBRIGATÓRIO se o botão não possuir texto visível (ex: icon-only). Caso não fornecido, o texto interno será usado.
5
- */
6
- export interface ButtonProps {
7
- variant?: "primary" | "secondary" | "neutral" | "text" | "danger" | "danger-outlined" | "icon";
8
- size?: "sm" | "md" | "lg";
9
- disabled?: boolean;
10
- type?: "button" | "submit" | "reset";
11
- children?: any;
12
- onClick?: (event: any) => void;
13
- className?: string;
14
- startIcon?: any;
15
- endIcon?: any;
16
- loading?: boolean;
17
- loadingIcon?: any;
18
- loadingPosition?: "start" | "end" | "center";
19
- fullWidth?: boolean;
20
- [key: string]: any;
21
- }
22
- declare function Button(props: ButtonProps): import("react/jsx-runtime").JSX.Element;
23
- export default Button;
@@ -1,62 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './Button.css';
3
- "use client";
4
- import Icon from "../Icon/Icon";
5
- function Button(props) {
6
- function classes() {
7
- return [
8
- "umds-button",
9
- `umds-button--${props.variant || "primary"}`,
10
- `umds-button--${props.size || "md"}`,
11
- props.fullWidth ? "umds-button--full-width" : "",
12
- props.className,
13
- ]
14
- .filter(Boolean)
15
- .join(" ");
16
- }
17
- function showStartIcon() {
18
- const isLoading = props.loading;
19
- const position = props.loadingPosition || "center";
20
- return !isLoading || (isLoading && position === "end");
21
- }
22
- function showEndIcon() {
23
- const isLoading = props.loading;
24
- const position = props.loadingPosition || "center";
25
- return !isLoading || (isLoading && position === "start");
26
- }
27
- function showLoadingAtStart() {
28
- return props.loading && props.loadingPosition === "start";
29
- }
30
- function showLoadingAtEnd() {
31
- return props.loading && props.loadingPosition === "end";
32
- }
33
- function showLoadingAtCenter() {
34
- return (props.loading &&
35
- (props.loadingPosition === "center" || !props.loadingPosition));
36
- }
37
- function showChildren() {
38
- const isLoading = props.loading;
39
- const position = props.loadingPosition || "center";
40
- return !isLoading || (isLoading && position !== "center");
41
- }
42
- return (_jsxs("button", { ...props, type: props.type || "button", disabled: props.disabled, onClick: (event) => props.onClick?.(event), className: classes(), children: [showLoadingAtStart() ? (_jsx(Icon, { className: "umds-button__loading", variant: "inherit", name: typeof props.loadingIcon === "string"
43
- ? props.loadingIcon
44
- : props.loadingIcon
45
- ? undefined
46
- : "refresh", component: typeof props.loadingIcon !== "string"
47
- ? props.loadingIcon
48
- : undefined, size: props.size })) : null, showStartIcon() ? (_jsx(_Fragment, { children: typeof props.startIcon === "string" ? (_jsx(Icon, { variant: "inherit", name: props.startIcon, size: props.size })) : (_jsx(_Fragment, { children: _jsx(_Fragment, { children: props.startIcon }) })) })) : null, showLoadingAtCenter() ? (_jsx(Icon, { className: "umds-button__loading", variant: "inherit", name: typeof props.loadingIcon === "string"
49
- ? props.loadingIcon
50
- : props.loadingIcon
51
- ? undefined
52
- : "refresh", component: typeof props.loadingIcon !== "string"
53
- ? props.loadingIcon
54
- : undefined, size: props.size })) : null, showChildren() ? _jsx(_Fragment, { children: props.children }) : null, showEndIcon() ? (_jsx(_Fragment, { children: typeof props.endIcon === "string" ? (_jsx(Icon, { variant: "inherit", name: props.endIcon, size: props.size })) : (_jsx(_Fragment, { children: _jsx(_Fragment, { children: props.endIcon }) })) })) : null, showLoadingAtEnd() ? (_jsx(Icon, { className: "umds-button__loading", variant: "inherit", name: typeof props.loadingIcon === "string"
55
- ? props.loadingIcon
56
- : props.loadingIcon
57
- ? undefined
58
- : "refresh", component: typeof props.loadingIcon !== "string"
59
- ? props.loadingIcon
60
- : undefined, size: props.size })) : null] }));
61
- }
62
- export default Button;