@node-core/ui-components 1.0.1-53352b306fcbcdb527095209221fd17b7fc955b9 → 1.0.1-5909a0bd471c5bfddac4f1bf7eee50aea0274970

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 (56) hide show
  1. package/Common/AlertBox/index.module.css +1 -82
  2. package/Common/AvatarGroup/Avatar/index.module.css +1 -59
  3. package/Common/AvatarGroup/Overlay/index.module.css +1 -37
  4. package/Common/AvatarGroup/index.module.css +1 -21
  5. package/Common/Badge/index.js +1 -3
  6. package/Common/Badge/index.module.css +1 -59
  7. package/Common/BadgeGroup/index.js +2 -2
  8. package/Common/BadgeGroup/index.module.css +1 -152
  9. package/Common/Banner/index.module.css +1 -44
  10. package/Common/BaseButton/index.module.css +1 -371
  11. package/Common/BaseCodeBox/index.module.css +1 -95
  12. package/Common/BaseCrossLink/index.module.css +1 -68
  13. package/Common/BaseLinkTabs/index.module.css +1 -76
  14. package/Common/BasePagination/Ellipsis/index.module.css +1 -15
  15. package/Common/BasePagination/PaginationListItem/index.module.css +1 -41
  16. package/Common/BasePagination/index.module.css +1 -39
  17. package/Common/Blockquote/index.module.css +1 -49
  18. package/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css +1 -4
  19. package/Common/Breadcrumbs/BreadcrumbItem/index.module.css +1 -51
  20. package/Common/Breadcrumbs/BreadcrumbLink/index.module.css +1 -31
  21. package/Common/Breadcrumbs/BreadcrumbRoot/index.module.css +1 -9
  22. package/Common/ChangeHistory/index.module.css +1 -197
  23. package/Common/CodeTabs/index.module.css +1 -66
  24. package/Common/DataTag/index.module.css +1 -53
  25. package/Common/GlowingBackdrop/index.module.css +1 -129
  26. package/Common/LanguageDropDown/index.module.css +1 -150
  27. package/Common/Modal/index.module.css +1 -233
  28. package/Common/NodejsLogo/index.module.css +1 -4
  29. package/Common/Notification/index.module.css +1 -103
  30. package/Common/Preview/index.module.css +1 -282
  31. package/Common/Select/NoScriptSelect/index.js +10 -0
  32. package/Common/Select/StatelessSelect/index.js +31 -0
  33. package/Common/Select/index.js +3 -6
  34. package/Common/Select/index.module.css +1 -327
  35. package/Common/Separator/index.module.css +1 -12
  36. package/Common/Skeleton/index.module.css +1 -126
  37. package/Common/Tabs/index.module.css +1 -71
  38. package/Common/ThemeToggle/index.module.css +1 -21
  39. package/Common/Tooltip/index.module.css +1 -132
  40. package/Containers/Article/index.module.css +1 -138
  41. package/Containers/Footer/index.js +2 -3
  42. package/Containers/Footer/index.module.css +1 -60
  43. package/Containers/MetaBar/index.module.css +1 -122
  44. package/Containers/NavBar/NavItem/index.module.css +1 -73
  45. package/Containers/NavBar/index.module.css +1 -204
  46. package/Containers/Sidebar/SidebarGroup/index.module.css +1 -191
  47. package/Containers/Sidebar/SidebarItem/index.js +1 -1
  48. package/Containers/Sidebar/SidebarItem/index.module.css +1 -66
  49. package/Containers/Sidebar/index.js +2 -2
  50. package/Containers/Sidebar/index.module.css +1 -47
  51. package/MDX/CodeTabs.js +22 -9
  52. package/Providers/NotificationProvider/index.module.css +1 -6
  53. package/package.json +9 -4
  54. package/styles/index.css +1 -1135
  55. package/util/array.js +2 -0
  56. package/Containers/DocSideBar/index.js +0 -1
@@ -1,283 +1,2 @@
1
1
  /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
2
- .root {
3
- container-type: inline-size;
4
- container-name: preview;
5
- position: relative;
6
- display: flex;
7
- aspect-ratio: 1.90/1;
8
- align-items: center;
9
- border-radius: var(--radius-sm, 0.25rem);
10
- border-style: var(--tw-border-style);
11
- border-width: 1px;
12
- border-color: var(--color-neutral-900, #2c3437);
13
- background-color: var(--color-neutral-950, #0d121c);
14
- &::after {
15
- content: var(--tw-content);
16
- position: absolute;
17
- }
18
- &::after {
19
- content: var(--tw-content);
20
- inset: calc(var(--spacing, 0.25rem)*0);
21
- }
22
- &::after {
23
- content: var(--tw-content);
24
- margin: auto;
25
- }
26
- &::after {
27
- content: var(--tw-content);
28
- aspect-ratio: 1 / 1;
29
- }
30
- &::after {
31
- content: var(--tw-content);
32
- width: 33.33333%;
33
- }
34
- &::after {
35
- content: var(--tw-content);
36
- border-radius: calc(infinity*1px);
37
- }
38
- &::after {
39
- content: var(--tw-content);
40
- background-image: radial-gradient( var(--tw-gradient-from), var(--tw-gradient-to) );
41
- }
42
- &::after {
43
- content: var(--tw-content);
44
- --tw-blur: blur(var(--blur-2xl, 40px));
45
- filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
46
- }
47
- &::after {
48
- content: var(--tw-content);
49
- --tw-content: '';
50
- content: var(--tw-content);
51
- }
52
- &.announcements {
53
- &::after {
54
- content: var(--tw-content);
55
- --tw-gradient-from: color-mix(in srgb, #2c682c 90%, transparent);
56
- @supports (color: color-mix(in lab, red, red)) {
57
- --tw-gradient-from: color-mix(in oklab, var(--color-green-700, #2c682c) 90%, transparent);
58
- }
59
- --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
60
- }
61
- }
62
- &.release {
63
- &::after {
64
- content: var(--tw-content);
65
- --tw-gradient-from: color-mix(in srgb, #0c7bb3 90%, transparent);
66
- @supports (color: color-mix(in lab, red, red)) {
67
- --tw-gradient-from: color-mix(in oklab, var(--color-info-600, #0c7bb3) 90%, transparent);
68
- }
69
- --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
70
- }
71
- }
72
- &.vulnerability {
73
- &::after {
74
- content: var(--tw-content);
75
- --tw-gradient-from: color-mix(in srgb, #ae5f00 90%, transparent);
76
- @supports (color: color-mix(in lab, red, red)) {
77
- --tw-gradient-from: color-mix(in oklab, var(--color-warning-600, #ae5f00) 90%, transparent);
78
- }
79
- --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
80
- }
81
- }
82
- .container {
83
- z-index: 10;
84
- margin-inline: auto;
85
- display: flex;
86
- width: 66.66667%;
87
- max-width: var(--container-xl, 36rem);
88
- flex-direction: column;
89
- gap: calc(var(--spacing, 0.25rem)*4);
90
- text-align: center;
91
- font-size: var(--text-xs, 0.75rem);
92
- line-height: var(--tw-leading, var(--text-xs--line-height, 1.33333));
93
- --tw-font-weight: var(--font-weight-semibold, 600);
94
- font-weight: var(--font-weight-semibold, 600);
95
- color: var(--color-white, #fff);
96
- @container preview (width >= 24rem) {
97
- font-size: var(--text-base, 1rem);
98
- line-height: var(--tw-leading, var(--text-base--line-height, 1.5));
99
- }
100
- @container preview (width >= 28rem) {
101
- gap: calc(var(--spacing, 0.25rem)*6);
102
- }
103
- @container preview (width >= 28rem) {
104
- font-size: var(--text-lg, 1.125rem);
105
- line-height: var(--tw-leading, var(--text-lg--line-height, 1.55556));
106
- }
107
- @container preview (width >= 32rem) {
108
- gap: calc(var(--spacing, 0.25rem)*8);
109
- }
110
- @container preview (width >= 32rem) {
111
- font-size: var(--text-xl, 1.25rem);
112
- line-height: var(--tw-leading, var(--text-xl--line-height, 1.4));
113
- }
114
- @container preview (width >= 36rem) {
115
- gap: calc(var(--spacing, 0.25rem)*12);
116
- }
117
- @container preview (width >= 36rem) {
118
- font-size: var(--text-2xl, 1.5rem);
119
- line-height: var(--tw-leading, var(--text-2xl--line-height, 1.33333));
120
- }
121
- @container preview (width >= 42rem) {
122
- font-size: var(--text-3xl, 1.875rem);
123
- line-height: var(--tw-leading, var(--text-3xl--line-height, 1.2));
124
- }
125
- .hexagon {
126
- position: absolute;
127
- inset: calc(var(--spacing, 0.25rem)*0);
128
- margin: auto;
129
- width: 100%;
130
- height: 100%;
131
- @container preview (width >= 28rem) {
132
- height: 60%;
133
- }
134
- @container preview (width >= 28rem) {
135
- width: 60%;
136
- }
137
- @container preview (width >= 32rem) {
138
- height: 66.66667%;
139
- }
140
- @container preview (width >= 32rem) {
141
- width: 66.66667%;
142
- }
143
- @container preview (width >= 36rem) {
144
- height: 60%;
145
- }
146
- @container preview (width >= 36rem) {
147
- width: 60%;
148
- }
149
- @container preview (width >= 42rem) {
150
- height: 66.66667%;
151
- }
152
- @container preview (width >= 42rem) {
153
- width: 66.66667%;
154
- }
155
- }
156
- .logo {
157
- margin-inline: auto;
158
- width: calc(var(--spacing, 0.25rem)*6);
159
- height: calc(var(--spacing, 0.25rem)*6);
160
- @container preview (width >= 28rem) {
161
- width: calc(var(--spacing, 0.25rem)*14);
162
- height: calc(var(--spacing, 0.25rem)*14);
163
- }
164
- @container preview (width >= 32rem) {
165
- width: calc(var(--spacing, 0.25rem)*16);
166
- height: calc(var(--spacing, 0.25rem)*16);
167
- }
168
- @container preview (width >= 36rem) {
169
- width: calc(var(--spacing, 0.25rem)*20);
170
- height: calc(var(--spacing, 0.25rem)*20);
171
- }
172
- }
173
- }
174
- }
175
- @property --tw-border-style {
176
- syntax: "*";
177
- inherits: false;
178
- initial-value: solid;
179
- }
180
- @property --tw-content {
181
- syntax: "*";
182
- initial-value: "";
183
- inherits: false;
184
- }
185
- @property --tw-blur {
186
- syntax: "*";
187
- inherits: false;
188
- }
189
- @property --tw-brightness {
190
- syntax: "*";
191
- inherits: false;
192
- }
193
- @property --tw-contrast {
194
- syntax: "*";
195
- inherits: false;
196
- }
197
- @property --tw-grayscale {
198
- syntax: "*";
199
- inherits: false;
200
- }
201
- @property --tw-hue-rotate {
202
- syntax: "*";
203
- inherits: false;
204
- }
205
- @property --tw-invert {
206
- syntax: "*";
207
- inherits: false;
208
- }
209
- @property --tw-opacity {
210
- syntax: "*";
211
- inherits: false;
212
- }
213
- @property --tw-saturate {
214
- syntax: "*";
215
- inherits: false;
216
- }
217
- @property --tw-sepia {
218
- syntax: "*";
219
- inherits: false;
220
- }
221
- @property --tw-drop-shadow {
222
- syntax: "*";
223
- inherits: false;
224
- }
225
- @property --tw-drop-shadow-color {
226
- syntax: "*";
227
- inherits: false;
228
- }
229
- @property --tw-drop-shadow-alpha {
230
- syntax: "<percentage>";
231
- inherits: false;
232
- initial-value: 100%;
233
- }
234
- @property --tw-drop-shadow-size {
235
- syntax: "*";
236
- inherits: false;
237
- }
238
- @property --tw-gradient-position {
239
- syntax: "*";
240
- inherits: false;
241
- }
242
- @property --tw-gradient-from {
243
- syntax: "<color>";
244
- inherits: false;
245
- initial-value: #0000;
246
- }
247
- @property --tw-gradient-via {
248
- syntax: "<color>";
249
- inherits: false;
250
- initial-value: #0000;
251
- }
252
- @property --tw-gradient-to {
253
- syntax: "<color>";
254
- inherits: false;
255
- initial-value: #0000;
256
- }
257
- @property --tw-gradient-stops {
258
- syntax: "*";
259
- inherits: false;
260
- }
261
- @property --tw-gradient-via-stops {
262
- syntax: "*";
263
- inherits: false;
264
- }
265
- @property --tw-gradient-from-position {
266
- syntax: "<length-percentage>";
267
- inherits: false;
268
- initial-value: 0%;
269
- }
270
- @property --tw-gradient-via-position {
271
- syntax: "<length-percentage>";
272
- inherits: false;
273
- initial-value: 50%;
274
- }
275
- @property --tw-gradient-to-position {
276
- syntax: "<length-percentage>";
277
- inherits: false;
278
- initial-value: 100%;
279
- }
280
- @property --tw-font-weight {
281
- syntax: "*";
282
- inherits: false;
283
- }
2
+ .root{aspect-ratio:1.9;border-radius:var(--radius-sm,.25rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-900,#2c3437);background-color:var(--color-neutral-950,#0d121c);align-items:center;display:flex;position:relative;container:preview/inline-size}.root:after{content:var(--tw-content);content:var(--tw-content);inset:calc(var(--spacing,.25rem)*0);content:var(--tw-content);content:var(--tw-content);aspect-ratio:1;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-image:radial-gradient(var(--tw-gradient-from),var(--tw-gradient-to));content:var(--tw-content);--tw-blur:blur(var(--blur-2xl,40px));width:33.3333%;filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,);content:var(--tw-content);--tw-content:"";content:var(--tw-content);border-radius:3.40282e38px;margin:auto;position:absolute}.root.announcements:after{content:var(--tw-content);--tw-gradient-from:#2c682ce6}@supports (color:color-mix(in lab, red, red)){.root.announcements:after{--tw-gradient-from:color-mix(in oklab,var(--color-green-700,#2c682c)90%,transparent)}}.root.announcements:after{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.root.release:after{content:var(--tw-content);--tw-gradient-from:#0c7bb3e6}@supports (color:color-mix(in lab, red, red)){.root.release:after{--tw-gradient-from:color-mix(in oklab,var(--color-info-600,#0c7bb3)90%,transparent)}}.root.release:after{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.root.vulnerability:after{content:var(--tw-content);--tw-gradient-from:#ae5f00e6}@supports (color:color-mix(in lab, red, red)){.root.vulnerability:after{--tw-gradient-from:color-mix(in oklab,var(--color-warning-600,#ae5f00)90%,transparent)}}.root.vulnerability:after{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.root .container{z-index:10;width:66.6667%;max-width:var(--container-xl,36rem);gap:calc(var(--spacing,.25rem)*4);text-align:center;font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,1.33333));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-white,#fff);flex-direction:column;margin-inline:auto;display:flex}@container preview (min-width:24rem){.root .container{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height,1.5))}}@container preview (min-width:28rem){.root .container{gap:calc(var(--spacing,.25rem)*6);font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,1.55556))}}@container preview (min-width:32rem){.root .container{gap:calc(var(--spacing,.25rem)*8);font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,1.4))}}@container preview (min-width:36rem){.root .container{gap:calc(var(--spacing,.25rem)*12);font-size:var(--text-2xl,1.5rem);line-height:var(--tw-leading,var(--text-2xl--line-height,1.33333))}}@container preview (min-width:42rem){.root .container{font-size:var(--text-3xl,1.875rem);line-height:var(--tw-leading,var(--text-3xl--line-height,1.2))}}.root .container .hexagon{inset:calc(var(--spacing,.25rem)*0);width:100%;height:100%;margin:auto;position:absolute}@container preview (min-width:28rem){.root .container .hexagon{width:60%;height:60%}}@container preview (min-width:32rem){.root .container .hexagon{width:66.6667%;height:66.6667%}}@container preview (min-width:36rem){.root .container .hexagon{width:60%;height:60%}}@container preview (min-width:42rem){.root .container .hexagon{width:66.6667%;height:66.6667%}}.root .container .logo{width:calc(var(--spacing,.25rem)*6);height:calc(var(--spacing,.25rem)*6);margin-inline:auto}@container preview (min-width:28rem){.root .container .logo{width:calc(var(--spacing,.25rem)*14);height:calc(var(--spacing,.25rem)*14)}}@container preview (min-width:32rem){.root .container .logo{width:calc(var(--spacing,.25rem)*16);height:calc(var(--spacing,.25rem)*16)}}@container preview (min-width:36rem){.root .container .logo{width:calc(var(--spacing,.25rem)*20);height:calc(var(--spacing,.25rem)*20)}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useId } from 'react';
3
+ import Select from '#ui/Common/Select';
4
+ import StatelessSelect from '#ui/Common/Select/StatelessSelect';
5
+ const WithNoScriptSelect = ({ as, ...props }) => {
6
+ const id = useId();
7
+ const selectId = `select-${id.replace(/[^a-zA-Z0-9]/g, '')}`;
8
+ return (_jsxs(_Fragment, { children: [_jsx(Select, { ...props, fallbackClass: selectId }), _jsxs("noscript", { children: [_jsx("style", { children: `.${selectId} { display: none!important; }` }), _jsx(StatelessSelect, { ...props, as: as })] })] }));
9
+ };
10
+ export default WithNoScriptSelect;
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDownIcon } from '@heroicons/react/24/solid';
3
+ import classNames from 'classnames';
4
+ import { useId, useMemo } from 'react';
5
+ import { isStringArray, isValuesArray } from '#ui/util/array';
6
+ import styles from '../index.module.css';
7
+ const StatelessSelect = ({ values = [], defaultValue, placeholder, label, inline, className, ariaLabel, disabled = false, as: Component = 'div', }) => {
8
+ const id = useId();
9
+ const mappedValues = useMemo(() => {
10
+ let mappedValues = values;
11
+ if (isStringArray(mappedValues)) {
12
+ mappedValues = mappedValues.map(value => ({
13
+ label: value,
14
+ value: value,
15
+ }));
16
+ }
17
+ if (isValuesArray(mappedValues)) {
18
+ return [{ items: mappedValues }];
19
+ }
20
+ return mappedValues;
21
+ }, [values]);
22
+ // Find the current/default item to display in summary
23
+ const currentItem = useMemo(() => mappedValues
24
+ .flatMap(({ items }) => items)
25
+ .find(item => item.value === defaultValue), [mappedValues, defaultValue]);
26
+ return (_jsxs("div", { className: classNames(styles.select, styles.noscript, { [styles.inline]: inline }, className), children: [label && (_jsx("label", { className: styles.label, htmlFor: id, children: label })), _jsxs("details", { className: styles.trigger, id: id, children: [_jsxs("summary", { className: styles.summary, "aria-label": ariaLabel, "aria-disabled": disabled, children: [currentItem && (_jsxs("span", { className: styles.selectedValue, children: [currentItem.iconImage, _jsx("span", { children: currentItem.label })] })), !currentItem && (_jsx("span", { className: styles.placeholder, children: placeholder })), _jsx(ChevronDownIcon, { className: styles.icon })] }), _jsx("div", { className: classNames(styles.dropdown, { [styles.inline]: inline }), children: mappedValues.map(({ label: groupLabel, items }, groupKey) => (_jsxs("div", { className: styles.group, children: [groupLabel && (_jsx("div", { className: classNames(styles.item, styles.label), children: groupLabel })), items.map(({ value, label, iconImage, disabled: itemDisabled }) => (_jsxs(Component, { href: value, className: classNames(styles.item, styles.text, {
27
+ [styles.disabled]: itemDisabled || disabled,
28
+ [styles.selected]: value === defaultValue,
29
+ }), "aria-disabled": itemDisabled || disabled, children: [iconImage, _jsx("span", { children: label })] }, value)))] }, groupLabel?.toString() ?? groupKey))) })] })] }));
30
+ };
31
+ export default StatelessSelect;
@@ -5,10 +5,9 @@ import * as SelectPrimitive from '@radix-ui/react-select';
5
5
  import classNames from 'classnames';
6
6
  import { useEffect, useId, useMemo, useState } from 'react';
7
7
  import Skeleton from '#ui/Common/Skeleton';
8
+ import { isStringArray, isValuesArray } from '#ui/util/array';
8
9
  import styles from './index.module.css';
9
- const isStringArray = (values) => Boolean(values[0] && typeof values[0] === 'string');
10
- const isValuesArray = (values) => Boolean(values[0] && typeof values[0] === 'object' && 'value' in values[0]);
11
- const Select = ({ values = [], defaultValue, placeholder, label, inline, onChange, className, ariaLabel, loading = false, disabled = false, }) => {
10
+ const Select = ({ values = [], defaultValue, placeholder, label, inline, onChange, className, dropdownClassName, ariaLabel, loading = false, disabled = false, fallbackClass = '', }) => {
12
11
  const id = useId();
13
12
  const [value, setValue] = useState(defaultValue);
14
13
  useEffect(() => setValue(defaultValue), [defaultValue]);
@@ -42,8 +41,6 @@ const Select = ({ values = [], defaultValue, placeholder, label, inline, onChang
42
41
  onChange(value);
43
42
  }
44
43
  };
45
- return (_jsx(Skeleton, { loading: loading, children: _jsxs("span", { className: classNames(styles.select, { [styles.inline]: inline }, className), children: [label && (_jsx("label", { className: styles.label, htmlFor: id, children: label })), _jsxs(SelectPrimitive.Root, { value: currentItem !== undefined ? value : undefined, onValueChange: handleChange, disabled: disabled, children: [_jsxs(SelectPrimitive.Trigger, { className: styles.trigger, "aria-label": ariaLabel, id: id, children: [_jsx(SelectPrimitive.Value, { placeholder: placeholder, children: currentItem !== undefined && (_jsxs(_Fragment, { children: [currentItem.iconImage, _jsx("span", { children: currentItem.label })] })) }), _jsx(ChevronDownIcon, { className: styles.icon })] }), _jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { position: inline ? 'popper' : 'item-aligned', className: classNames(styles.dropdown, {
46
- [styles.inline]: inline,
47
- }), children: [_jsx(SelectPrimitive.ScrollUpButton, { children: _jsx(ChevronUpIcon, { className: styles.scrollIcon }) }), _jsx(SelectPrimitive.Viewport, { children: memoizedMappedValues }), _jsx(SelectPrimitive.ScrollDownButton, { children: _jsx(ChevronDownIcon, { className: styles.scrollIcon }) })] }) })] })] }) }));
44
+ return (_jsx(Skeleton, { loading: loading, children: _jsxs("span", { className: classNames(styles.select, { [styles.inline]: inline }, className, fallbackClass), children: [label && (_jsx("label", { className: styles.label, htmlFor: id, children: label })), _jsxs(SelectPrimitive.Root, { value: currentItem !== undefined ? value : undefined, onValueChange: handleChange, disabled: disabled, children: [_jsxs(SelectPrimitive.Trigger, { className: styles.trigger, "aria-label": ariaLabel, id: id, children: [_jsx(SelectPrimitive.Value, { placeholder: placeholder, children: currentItem !== undefined && (_jsxs(_Fragment, { children: [currentItem.iconImage, _jsx("span", { children: currentItem.label })] })) }), _jsx(ChevronDownIcon, { className: styles.icon })] }), _jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { position: inline ? 'popper' : 'item-aligned', className: classNames(styles.dropdown, { [styles.inline]: inline }, dropdownClassName), children: [_jsx(SelectPrimitive.ScrollUpButton, { children: _jsx(ChevronUpIcon, { className: styles.scrollIcon }) }), _jsx(SelectPrimitive.Viewport, { children: memoizedMappedValues }), _jsx(SelectPrimitive.ScrollDownButton, { children: _jsx(ChevronDownIcon, { className: styles.scrollIcon }) })] }) })] })] }) }));
48
45
  };
49
46
  export default Select;