@ultraviolet/ui 3.7.1 → 3.8.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 (124) hide show
  1. package/dist/components/Alert/styles.css.d.ts +1 -1
  2. package/dist/components/Avatar/index.d.ts.map +1 -1
  3. package/dist/components/Avatar/index.js +45 -41
  4. package/dist/components/Avatar/styles.css.js +1 -0
  5. package/dist/components/Avatar/variables.css.js +0 -1
  6. package/dist/components/Banner/index.d.ts.map +1 -1
  7. package/dist/components/Banner/index.js +1 -1
  8. package/dist/components/Banner/styles.css.d.ts +1 -1
  9. package/dist/components/BarStack/styles.css.js +1 -1
  10. package/dist/components/Button/index.d.ts +41 -22
  11. package/dist/components/Button/index.d.ts.map +1 -1
  12. package/dist/components/Button/index.js +18 -10
  13. package/dist/components/Checkbox/index.d.ts +1 -1
  14. package/dist/components/Checkbox/index.d.ts.map +1 -1
  15. package/dist/components/Checkbox/index.js +44 -38
  16. package/dist/components/Checkbox/styles.css.js +0 -1
  17. package/dist/components/Chip/index.d.ts +1 -1
  18. package/dist/components/DateInput/helpersLocale.d.ts.map +1 -1
  19. package/dist/components/DateInput/helpersLocale.js +8 -5
  20. package/dist/components/Dialog/constants.d.ts +1 -1
  21. package/dist/components/Dialog/index.d.ts +20 -5
  22. package/dist/components/Dialog/index.d.ts.map +1 -1
  23. package/dist/components/Drawer/styles.css.d.ts +1 -1
  24. package/dist/components/EmptyState/index.d.ts.map +1 -1
  25. package/dist/components/EmptyState/index.js +10 -1
  26. package/dist/components/EmptyState/styles.css.d.ts +1 -1
  27. package/dist/components/EmptyState/styles.css.d.ts.map +1 -1
  28. package/dist/components/ExpandableCard/index.d.ts.map +1 -1
  29. package/dist/components/ExpandableCard/index.js +28 -20
  30. package/dist/components/FileInput/components/List.d.ts.map +1 -1
  31. package/dist/components/FileInput/components/List.js +15 -2
  32. package/dist/components/FileInput/index.d.ts.map +1 -1
  33. package/dist/components/GlobalAlert/GlobalAlertLink.d.ts +3 -1
  34. package/dist/components/GlobalAlert/GlobalAlertLink.d.ts.map +1 -1
  35. package/dist/components/GlobalAlert/index.d.ts +61 -1
  36. package/dist/components/GlobalAlert/index.d.ts.map +1 -1
  37. package/dist/components/Link/index.d.ts +23 -2
  38. package/dist/components/Link/index.d.ts.map +1 -1
  39. package/dist/components/Link/index.js +26 -14
  40. package/dist/components/List/HeaderCell.d.ts.map +1 -1
  41. package/dist/components/List/HeaderCell.js +3 -1
  42. package/dist/components/List/ListContext.d.ts.map +1 -1
  43. package/dist/components/List/ListContext.js +3 -1
  44. package/dist/components/List/Row.d.ts.map +1 -1
  45. package/dist/components/List/Row.js +14 -5
  46. package/dist/components/List/SkeletonRows.d.ts.map +1 -1
  47. package/dist/components/List/SkeletonRows.js +0 -1
  48. package/dist/components/List/styles.css.d.ts +1 -0
  49. package/dist/components/List/styles.css.d.ts.map +1 -1
  50. package/dist/components/List/styles.css.js +4 -1
  51. package/dist/components/List/variables.css.js +1 -1
  52. package/dist/components/Menu/helpers.d.ts +1 -1
  53. package/dist/components/Menu/index.d.ts +1 -1
  54. package/dist/components/Meter/index.d.ts.map +1 -1
  55. package/dist/components/Meter/index.js +43 -40
  56. package/dist/components/Modal/components/Dialog.d.ts.map +1 -1
  57. package/dist/components/Modal/components/Dialog.js +10 -1
  58. package/dist/components/NumberInput/styles.css.d.ts +1 -1
  59. package/dist/components/Pagination/styles.css.d.ts +2 -2
  60. package/dist/components/Popup/styles.css.js +0 -1
  61. package/dist/components/Popup/variables.css.js +1 -0
  62. package/dist/components/ProgressBar/styles.css.d.ts +1 -1
  63. package/dist/components/ProgressBar/styles.css.js +0 -1
  64. package/dist/components/ProgressBar/variables.css.js +1 -0
  65. package/dist/components/Radio/index.js +22 -22
  66. package/dist/components/Row/styles.css.d.ts +44 -44
  67. package/dist/components/SelectInput/components/Dropdown.d.ts.map +1 -1
  68. package/dist/components/SelectInput/components/Dropdown.js +52 -56
  69. package/dist/components/SelectInput/components/selectBar.css.d.ts +1 -1
  70. package/dist/components/SelectableCard/IllustrationContainer.d.ts +8 -0
  71. package/dist/components/SelectableCard/IllustrationContainer.d.ts.map +1 -0
  72. package/dist/components/SelectableCard/IllustrationContainer.js +66 -0
  73. package/dist/components/SelectableCard/MultiStateInput.d.ts +3 -0
  74. package/dist/components/SelectableCard/MultiStateInput.d.ts.map +1 -0
  75. package/dist/components/SelectableCard/MultiStateInput.js +94 -0
  76. package/dist/components/SelectableCard/SelectableCard.d.ts +7 -0
  77. package/dist/components/SelectableCard/SelectableCard.d.ts.map +1 -0
  78. package/dist/components/SelectableCard/SelectableCard.js +165 -0
  79. package/dist/components/SelectableCard/index.d.ts +1 -33
  80. package/dist/components/SelectableCard/index.d.ts.map +1 -1
  81. package/dist/components/SelectableCard/types.d.ts +32 -0
  82. package/dist/components/SelectableCard/types.d.ts.map +1 -0
  83. package/dist/components/SelectableCardGroup/index.js +1 -1
  84. package/dist/components/SelectableCardOptionGroup/components/Option.js +1 -1
  85. package/dist/components/Separator/index.d.ts.map +1 -1
  86. package/dist/components/Separator/index.js +1 -0
  87. package/dist/components/Skeleton/Donut.d.ts.map +1 -1
  88. package/dist/components/Skeleton/Donut.js +12 -9
  89. package/dist/components/Slider/styles.css.d.ts +1 -1
  90. package/dist/components/Stack/styles.css.d.ts +46 -46
  91. package/dist/components/Stepper/styles.css.d.ts +1 -1
  92. package/dist/components/SwitchButton/Option.js +1 -1
  93. package/dist/components/SwitchButton/index.d.ts.map +1 -1
  94. package/dist/components/SwitchButton/index.js +7 -4
  95. package/dist/components/SwitchButton/styles.css.d.ts +2 -2
  96. package/dist/components/SwitchButton/styles.css.d.ts.map +1 -1
  97. package/dist/components/Table/HeaderRow.d.ts.map +1 -1
  98. package/dist/components/Table/HeaderRow.js +22 -25
  99. package/dist/components/Table/SkeletonRows.d.ts.map +1 -1
  100. package/dist/components/Table/SkeletonRows.js +4 -13
  101. package/dist/components/Tabs/index.d.ts +2 -2
  102. package/dist/components/TextInput/index.d.ts.map +1 -1
  103. package/dist/components/TextInput/index.js +6 -1
  104. package/dist/components/TextInput/styles.css.d.ts +1 -1
  105. package/dist/components/TextInput/styles.css.d.ts.map +1 -1
  106. package/dist/components/Toggle/index.d.ts +2 -7
  107. package/dist/components/Toggle/index.d.ts.map +1 -1
  108. package/dist/components/Toggle/index.js +13 -1
  109. package/dist/components/Tooltip/index.d.ts +1 -1
  110. package/dist/components/UnitInput/index.d.ts.map +1 -1
  111. package/dist/components/UnitInput/index.js +2 -1
  112. package/dist/components/UnitInput/styles.css.d.ts +2 -2
  113. package/dist/components/VerificationCode/styles.css.d.ts +1 -1
  114. package/dist/components/compositions/OptionSelector/__mock__/resources.d.ts.map +1 -1
  115. package/dist/components/compositions/OptionSelector/index.js +1 -1
  116. package/dist/index.js +3 -2
  117. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  118. package/dist/theme/ThemeProvider.js +46 -4
  119. package/dist/theme/index.d.ts +3 -2
  120. package/dist/theme/index.d.ts.map +1 -1
  121. package/dist/theme/index.js +1 -2
  122. package/dist/ui.css +1 -1
  123. package/package.json +3 -3
  124. package/dist/components/SelectableCard/index.js +0 -232
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ultraviolet/ui",
3
- "version": "3.7.1",
3
+ "version": "3.8.1",
4
4
  "description": "Ultraviolet UI",
5
5
  "homepage": "https://github.com/scaleway/ultraviolet#readme",
6
6
  "repository": {
@@ -96,9 +96,9 @@
96
96
  "deepmerge": "4.3.1",
97
97
  "react-toastify": "11.0.5",
98
98
  "react-use-clipboard": "1.0.9",
99
- "@ultraviolet/icons": "5.0.7",
99
+ "@ultraviolet/icons": "5.1.1",
100
100
  "@ultraviolet/themes": "3.0.5",
101
- "@ultraviolet/utils": "1.0.1"
101
+ "@ultraviolet/utils": "1.0.2"
102
102
  },
103
103
  "scripts": {
104
104
  "type:generate": "tsc --declaration -p tsconfig.build.json",
@@ -1,232 +0,0 @@
1
- "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import * as ProductIcon from "@ultraviolet/icons/product";
4
- import { useTheme } from "@ultraviolet/themes";
5
- import { cn } from "@ultraviolet/utils";
6
- import { assignInlineVars } from "@vanilla-extract/dynamic";
7
- import { forwardRef, useRef, useState, useMemo, useEffect, useCallback } from "react";
8
- import { Checkbox } from "../Checkbox/index.js";
9
- import { Radio } from "../Radio/index.js";
10
- import { Stack } from "../Stack/index.js";
11
- import { Tooltip } from "../Tooltip/index.js";
12
- import { illustrationSelectableCard, divSelectableCard, imageSelectableCard, selectableElementSelectableCard, stackSelectableCard, indentedCard, containerSelectableCard, labelContainerSelectableCardLabel, labelContainerSelectableCardNoLabel } from "./styles.css.js";
13
- import { widthSelectable, labelDisplay, inputDisplay } from "./variables.css.js";
14
- const SelectableCard = forwardRef(
15
- ({
16
- name,
17
- value,
18
- onChange,
19
- showTick = false,
20
- type = "radio",
21
- checked = false,
22
- disabled = false,
23
- children,
24
- className,
25
- isError,
26
- onFocus,
27
- onBlur,
28
- tooltip,
29
- id,
30
- label,
31
- "data-testid": dataTestId,
32
- productIcon,
33
- illustration,
34
- "aria-label": ariaLabel,
35
- style,
36
- indented = true
37
- }, ref) => {
38
- const theme = useTheme();
39
- const innerRef = useRef(null);
40
- const childrenRef = useRef(null);
41
- const [svgContent, setSvgContent] = useState(null);
42
- const image = useMemo(() => {
43
- if (illustration) {
44
- return "illustration";
45
- }
46
- if (productIcon) {
47
- return "icon";
48
- }
49
- return "none";
50
- }, [illustration, productIcon]);
51
- useEffect(() => {
52
- if (illustration?.endsWith(".svg")) {
53
- fetch(illustration).then((response) => response.text()).then((svg) => {
54
- const updatedSvg = svg.replace(
55
- /fill="[^"]*"/g,
56
- `fill="${theme.colors.neutral.backgroundStronger}"`
57
- ).replace(/width="[^"]*"/g, `width="220px"`).replace(/height="[^"]*"/g, `height="220px"`);
58
- setSvgContent(updatedSvg);
59
- }).catch(() => null);
60
- }
61
- });
62
- const ProductIconUsed = productIcon ? (
63
- // biome-ignore lint/performance/noDynamicNamespaceImportAccess: to fix
64
- ProductIcon[`${productIcon.charAt(0).toUpperCase() + productIcon.slice(1)}ProductIcon`]
65
- ) : null;
66
- const ParentContainer = useCallback(
67
- ({ children: subChildren }) => {
68
- if (tooltip) {
69
- return /* @__PURE__ */ jsx(Stack, { flex: 1, children: /* @__PURE__ */ jsx(Tooltip, { containerFullHeight: true, text: tooltip, children: subChildren }) });
70
- }
71
- return /* @__PURE__ */ jsx(Tooltip, { children: subChildren });
72
- },
73
- [tooltip]
74
- );
75
- const IllustrationContainer = useCallback(
76
- ({ children: subChildren }) => {
77
- if (ProductIconUsed || illustration) {
78
- return /* @__PURE__ */ jsxs(
79
- Stack,
80
- {
81
- alignItems: "stretch",
82
- direction: "row",
83
- flex: 1,
84
- justifyContent: "space-between",
85
- width: "100%",
86
- children: [
87
- /* @__PURE__ */ jsx(Stack, { className: illustrationSelectableCard, children: subChildren }),
88
- /* @__PURE__ */ jsx(Stack, { justifyContent: "center", children: ProductIconUsed ? /* @__PURE__ */ jsx(ProductIconUsed, { size: "large" }) : null }),
89
- illustration ? /* @__PURE__ */ jsx("div", { className: divSelectableCard, children: illustration.endsWith(".svg") && svgContent ? /* @__PURE__ */ jsx(
90
- "div",
91
- {
92
- className: imageSelectableCard,
93
- dangerouslySetInnerHTML: { __html: svgContent }
94
- }
95
- ) : /* @__PURE__ */ jsx(
96
- "img",
97
- {
98
- alt: "illustration",
99
- className: imageSelectableCard,
100
- src: illustration,
101
- width: 220
102
- }
103
- ) }) : null
104
- ]
105
- }
106
- );
107
- }
108
- return subChildren;
109
- },
110
- [ProductIconUsed, illustration, svgContent]
111
- );
112
- const onKeyDown = useCallback(
113
- (event) => {
114
- if (event.key === " " && innerRef?.current) {
115
- event.preventDefault();
116
- innerRef.current.click();
117
- }
118
- },
119
- [innerRef]
120
- );
121
- const isComplexChildren = ["function", "array", "object"].includes(
122
- typeof children
123
- );
124
- const onClickContainer = useCallback(
125
- (event) => {
126
- if (innerRef.current && !disabled) {
127
- const inputElement = innerRef.current;
128
- const labelElement = document.querySelector(
129
- `label[for="${inputElement.id}"]`
130
- );
131
- const targetNode = event.target;
132
- if (!(inputElement.contains(targetNode) || labelElement?.contains(targetNode))) {
133
- inputElement.click();
134
- }
135
- }
136
- },
137
- [disabled]
138
- );
139
- return /* @__PURE__ */ jsx(ParentContainer, { children: /* @__PURE__ */ jsx(
140
- Stack,
141
- {
142
- alignItems: "flex-start",
143
- className: cn(
144
- className,
145
- containerSelectableCard({
146
- cursor: type === "checkbox" && isComplexChildren ? "default" : "custom",
147
- image
148
- }),
149
- label ? labelContainerSelectableCardLabel : labelContainerSelectableCardNoLabel
150
- ),
151
- "data-checked": checked,
152
- "data-disabled": disabled,
153
- "data-error": isError,
154
- "data-testid": dataTestId,
155
- "data-type": type,
156
- direction: label ? "column" : "row",
157
- flex: 1,
158
- gap: 0.5,
159
- onClick: type === "checkbox" && isComplexChildren ? void 0 : onClickContainer,
160
- onKeyDown,
161
- ref,
162
- role: "button",
163
- style: {
164
- ...assignInlineVars({
165
- [inputDisplay]: showTick ? "inline" : "none",
166
- [labelDisplay]: showTick || label ? "inline" : "none",
167
- [widthSelectable]: label ? "100%" : "auto"
168
- }),
169
- ...style
170
- },
171
- tabIndex: disabled ? void 0 : 0,
172
- children: /* @__PURE__ */ jsxs(IllustrationContainer, { children: [
173
- type === "radio" ? /* @__PURE__ */ jsx(
174
- Radio,
175
- {
176
- checked,
177
- className: selectableElementSelectableCard,
178
- "data-error": isError,
179
- disabled,
180
- error: isError,
181
- id,
182
- name,
183
- onBlur,
184
- onChange,
185
- onFocus,
186
- ref: innerRef,
187
- tabIndex: -1,
188
- value,
189
- ...label ? { label } : { "aria-label": ariaLabel }
190
- }
191
- ) : /* @__PURE__ */ jsx(
192
- Checkbox,
193
- {
194
- checked,
195
- className: selectableElementSelectableCard,
196
- "data-error": isError,
197
- disabled,
198
- error: isError,
199
- id,
200
- name,
201
- onBlur,
202
- onChange,
203
- onFocus,
204
- ref: innerRef,
205
- tabIndex: -1,
206
- value,
207
- ...label ? { "aria-label": void 0, children: label } : { "aria-label": ariaLabel }
208
- }
209
- ),
210
- children ? /* @__PURE__ */ jsx(
211
- Stack,
212
- {
213
- className: cn(
214
- stackSelectableCard,
215
- !!label && showTick && indented ? indentedCard : void 0
216
- ),
217
- "data-has-default-cursor": type === "checkbox" && isComplexChildren,
218
- "data-has-label": !!label && showTick,
219
- onKeyDown: (event) => event.stopPropagation(),
220
- ref: childrenRef,
221
- width: "100%",
222
- children: typeof children === "function" ? children({ checked, disabled }) : children
223
- }
224
- ) : null
225
- ] })
226
- }
227
- ) });
228
- }
229
- );
230
- export {
231
- SelectableCard
232
- };