@sanity/ui 5.0.0-alpha.15 → 5.0.0-alpha.16

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 (43) hide show
  1. package/dist/index.d.ts +96 -19
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +340 -83
  4. package/dist/index.js.map +1 -1
  5. package/dist/styles.css +1 -1
  6. package/package.json +1 -1
  7. package/src/components/avatar/Avatar.tsx +50 -0
  8. package/src/components/avatar/avatar.css +51 -0
  9. package/src/components/avatar/avatar.props.ts +57 -0
  10. package/src/components/avatar-counter/AvatarCounter.tsx +38 -0
  11. package/src/components/avatar-counter/avatar-counter.css +8 -0
  12. package/src/components/avatar-counter/avatarCounter.props.ts +44 -0
  13. package/src/components/avatar-stack/AvatarStack.tsx +60 -0
  14. package/src/components/avatar-stack/avatar-stack.css +16 -0
  15. package/src/components/avatar-stack/avatarStack.props.ts +20 -0
  16. package/src/components/button/button.css +2 -2
  17. package/src/components/checkbox/Checkbox.tsx +3 -3
  18. package/src/components/checkbox/checkbox.props.ts +2 -2
  19. package/src/components/hotkeys/Hotkeys.tsx +29 -0
  20. package/src/components/hotkeys/hotkeys.css +3 -0
  21. package/src/components/hotkeys/hotkeys.props.ts +15 -0
  22. package/src/components/index.css +6 -0
  23. package/src/components/kbd/KBD.tsx +33 -0
  24. package/src/components/kbd/kbd.css +6 -0
  25. package/src/components/kbd/kbd.props.ts +20 -0
  26. package/src/components/radio/Radio.tsx +3 -3
  27. package/src/components/radio/radio.props.ts +2 -2
  28. package/src/components/select/select.props.ts +1 -0
  29. package/src/components/switch/Switch.tsx +3 -3
  30. package/src/components/switch/switch.props.ts +2 -2
  31. package/src/components/text-area/TextArea.tsx +32 -0
  32. package/src/components/text-area/text-area.css +56 -0
  33. package/src/components/text-area/textArea.props.ts +35 -0
  34. package/src/components/text-input/TextInput.tsx +1 -1
  35. package/src/components/text-input/text-input.css +9 -3
  36. package/src/components/text-input/textInput.props.ts +1 -0
  37. package/src/css/classes/dynamic/height.css +2 -0
  38. package/src/css/classes/local/field-sizing.css +3 -0
  39. package/src/css/classes/local/index.css +1 -0
  40. package/src/index.ts +7 -1
  41. package/src/types/Avatar.ts +14 -0
  42. package/src/types/Eyebrow.ts +1 -1
  43. package/src/version.ts +2 -2
package/dist/index.js CHANGED
@@ -81,9 +81,19 @@ function getCompositeValue(propValue, propDef, key) {
81
81
  return compositeValue;
82
82
  }
83
83
  function suffixClassName(className) {
84
- return `${className}-29dcdf`;
84
+ return `${className}-d73bbc`;
85
85
  }
86
- const SPACE = [
86
+ const FONT_WEIGHT = [
87
+ "regular",
88
+ "medium",
89
+ "semibold",
90
+ "bold"
91
+ ], TEXT_ALIGN = [
92
+ "left",
93
+ "center",
94
+ "right",
95
+ "justify"
96
+ ], SPACE = [
87
97
  0,
88
98
  1,
89
99
  2,
@@ -156,12 +166,7 @@ const SPACE = [
156
166
  align: {
157
167
  type: "union",
158
168
  className: "text",
159
- values: [
160
- "left",
161
- "center",
162
- "right",
163
- "justify"
164
- ]
169
+ values: TEXT_ALIGN
165
170
  },
166
171
  muted: {
167
172
  type: "boolean",
@@ -187,61 +192,22 @@ const SPACE = [
187
192
  weight: {
188
193
  type: "union",
189
194
  className: "weight",
190
- values: [
191
- "regular",
192
- "medium",
193
- "semibold",
194
- "bold"
195
- ]
195
+ values: FONT_WEIGHT
196
196
  },
197
197
  ...marginProps,
198
198
  ...toneProps
199
- }, ICON_SIZE = [
199
+ }, TEXT_SIZE = [
200
200
  0,
201
201
  1,
202
202
  2,
203
203
  3,
204
204
  4
205
- ], iconProps = {
206
- icon: { type: "string" },
207
- size: {
208
- type: "union",
209
- className: "icon-body",
210
- values: ICON_SIZE
211
- },
212
- muted: typographyProps.muted,
213
- ...toneProps,
214
- ...marginProps
215
- }, iconClassName = suffixClassName("sui-Icon");
216
- /** @public */
217
- function Icon({ icon, size = 2, ...props }) {
218
- let { className, style, ...rest } = getProps({
219
- size,
220
- ...props
221
- }, iconProps), iconElement = isValidElement(icon) ? icon : null, ariaLabel = props["aria-label"] || (iconElement ? iconElement.props["aria-label"] : void 0), svgProps = {
222
- className: clsx(iconClassName, "sui-display-block", className, iconElement ? iconElement.props.className : void 0),
223
- style: iconElement ? {
224
- ...iconElement.props.style,
225
- ...style
226
- } : style,
227
- "data-ui": "Icon",
228
- "aria-hidden": !ariaLabel || void 0,
229
- ...rest
230
- };
231
- return iconElement ? cloneElement(iconElement, svgProps) : createElement(icon, svgProps);
232
- }
233
- const textProps = {
205
+ ], textProps = {
234
206
  as: { type: "string" },
235
207
  size: {
236
208
  type: "union",
237
209
  className: "text-body",
238
- values: [
239
- 0,
240
- 1,
241
- 2,
242
- 3,
243
- 4
244
- ]
210
+ values: TEXT_SIZE
245
211
  },
246
212
  ...typographyProps
247
213
  }, textClassName = suffixClassName("sui-Text");
@@ -285,6 +251,220 @@ function Text(t0) {
285
251
  children
286
252
  }), $[9] = T0, $[10] = children, $[11] = rest, $[12] = style, $[13] = t1, $[14] = t3) : t3 = $[14], t3;
287
253
  }
254
+ const heightProps = {
255
+ height: {
256
+ type: "string",
257
+ className: "height",
258
+ variable: "--height"
259
+ },
260
+ minHeight: {
261
+ type: "string",
262
+ className: "min-height",
263
+ variable: "--min-height"
264
+ },
265
+ maxHeight: {
266
+ type: "string",
267
+ className: "max-height",
268
+ variable: "--max-height"
269
+ }
270
+ }, AVATAR_SIZE = [
271
+ 0,
272
+ 1,
273
+ 2
274
+ ], avatarProps = {
275
+ color: {
276
+ type: "union",
277
+ className: "avatar",
278
+ values: [
279
+ "gray",
280
+ "purple",
281
+ "magenta",
282
+ "red",
283
+ "orange",
284
+ "yellow",
285
+ "green",
286
+ "cyan"
287
+ ]
288
+ },
289
+ name: { type: "string" },
290
+ size: {
291
+ type: "composite",
292
+ values: AVATAR_SIZE,
293
+ composition: {
294
+ size: {
295
+ propDef: {
296
+ type: "union",
297
+ className: "text-body",
298
+ values: TEXT_SIZE
299
+ },
300
+ mapping: {
301
+ 0: 0,
302
+ 1: 1,
303
+ 2: 2
304
+ }
305
+ },
306
+ height: {
307
+ propDef: heightProps.height,
308
+ mapping: {
309
+ 0: "19px",
310
+ 1: "25px",
311
+ 2: "33px"
312
+ }
313
+ }
314
+ }
315
+ },
316
+ src: { type: "string" }
317
+ }, avatarClassName = suffixClassName("sui-Avatar");
318
+ /** @public */
319
+ function Avatar(t0) {
320
+ let $ = c(5), { color: t1, size: t2, ...props } = t0, { className, style, "aria-label": ariaLabel, name, src, ...rest } = getProps({
321
+ color: t1 === void 0 ? "gray" : t1,
322
+ size: t2 === void 0 ? 1 : t2,
323
+ ...props
324
+ }, avatarProps), [error, setError] = useState(!1), t3 = clsx(avatarClassName, "sui-display-inline-flex sui-align-items-center sui-justify-content-center sui-radius-full sui-position-relative", className), t5 = src && !error ? /* @__PURE__ */ jsx("img", {
325
+ className: "sui-radius-full sui-width-full sui-height-full",
326
+ src,
327
+ alt: ariaLabel || name,
328
+ onError: () => setError(!0)
329
+ }) : /* @__PURE__ */ jsx(Text, {
330
+ role: "img",
331
+ weight: "semibold",
332
+ "aria-label": ariaLabel || name,
333
+ children: name.slice(0, 1)
334
+ }), t6;
335
+ return $[0] !== rest || $[1] !== style || $[2] !== t3 || $[3] !== t5 ? (t6 = /* @__PURE__ */ jsx("figure", {
336
+ className: t3,
337
+ style,
338
+ "data-ui": "Avatar",
339
+ ...rest,
340
+ children: t5
341
+ }), $[0] = rest, $[1] = style, $[2] = t3, $[3] = t5, $[4] = t6) : t6 = $[4], t6;
342
+ }
343
+ const avatarCounterProps = {
344
+ count: { type: "number" },
345
+ size: {
346
+ type: "composite",
347
+ values: AVATAR_SIZE,
348
+ composition: {
349
+ size: {
350
+ propDef: {
351
+ type: "union",
352
+ className: "text-body",
353
+ values: TEXT_SIZE
354
+ },
355
+ mapping: {
356
+ 0: 0,
357
+ 1: 1,
358
+ 2: 2
359
+ }
360
+ },
361
+ height: {
362
+ propDef: heightProps.height,
363
+ mapping: {
364
+ 0: "19px",
365
+ 1: "25px",
366
+ 2: "33px"
367
+ }
368
+ }
369
+ }
370
+ }
371
+ }, avatarCounterClassName = suffixClassName("sui-AvatarCounter");
372
+ /** @public */
373
+ function AvatarCounter(t0) {
374
+ let $ = c(14), ariaLabel, count, rest, style, t1;
375
+ if ($[0] !== t0) {
376
+ let { size: t2, ...props } = t0, { className, style: t3, "aria-label": t4, count: t5, ...t6 } = getProps({
377
+ size: t2 === void 0 ? 1 : t2,
378
+ ...props
379
+ }, avatarCounterProps);
380
+ style = t3, ariaLabel = t4, count = t5, rest = t6, t1 = clsx(avatarCounterClassName, "sui-display-inline-flex sui-align-items-center sui-justify-content-center sui-radius-full sui-border", className), $[0] = t0, $[1] = ariaLabel, $[2] = count, $[3] = rest, $[4] = style, $[5] = t1;
381
+ } else ariaLabel = $[1], count = $[2], rest = $[3], style = $[4], t1 = $[5];
382
+ let t2 = ariaLabel || `+ ${count} more`, t3;
383
+ $[6] !== count || $[7] !== t2 ? (t3 = /* @__PURE__ */ jsx(Text, {
384
+ role: "img",
385
+ weight: "semibold",
386
+ "aria-label": t2,
387
+ children: count
388
+ }), $[6] = count, $[7] = t2, $[8] = t3) : t3 = $[8];
389
+ let t4;
390
+ return $[9] !== rest || $[10] !== style || $[11] !== t1 || $[12] !== t3 ? (t4 = /* @__PURE__ */ jsx("figure", {
391
+ className: t1,
392
+ style,
393
+ "data-ui": "AvatarCounter",
394
+ ...rest,
395
+ children: t3
396
+ }), $[9] = rest, $[10] = style, $[11] = t1, $[12] = t3, $[13] = t4) : t4 = $[13], t4;
397
+ }
398
+ const avatarStackProps = {
399
+ maxLength: { type: "number" },
400
+ size: {
401
+ type: "union",
402
+ values: AVATAR_SIZE
403
+ }
404
+ }, avatarStackClassName = suffixClassName("sui-AvatarStack");
405
+ /** @public */
406
+ function AvatarStack(t0) {
407
+ let $ = c(14), t1, t2, t3, t4, t5, t6;
408
+ if ($[0] !== t0) {
409
+ let { size: t7, ...props } = t0, { children, className, style, maxLength: maxLengthProp, size: sizeProp, ...rest } = getProps({
410
+ size: t7 === void 0 ? 1 : t7,
411
+ ...props
412
+ }, avatarStackProps), childArray = Children.toArray(children).filter(isValidElement), length = childArray.length, maxLength = maxLengthProp ?? length, visibleAvatars = length > maxLength ? childArray.slice(length - maxLength, length) : childArray;
413
+ t1 = clsx(avatarStackClassName, "sui-display-flex", className), t2 = style, t3 = "AvatarStack", t4 = rest, t5 = (!length || length > maxLength) && /* @__PURE__ */ jsx("li", {
414
+ className: "sui-display-flex",
415
+ children: /* @__PURE__ */ jsx(AvatarCounter, {
416
+ count: length ? length - maxLength : 0,
417
+ size: sizeProp,
418
+ "aria-label": length ? `+ ${length - maxLength} more user${length - maxLength > 1 ? "s" : ""}` : "No users"
419
+ })
420
+ }), t6 = visibleAvatars.map((child) => /* @__PURE__ */ jsx("li", {
421
+ className: "sui-display-flex",
422
+ children: cloneElement(child, { size: sizeProp })
423
+ }, child.key)), $[0] = t0, $[1] = t1, $[2] = t2, $[3] = t3, $[4] = t4, $[5] = t5, $[6] = t6;
424
+ } else t1 = $[1], t2 = $[2], t3 = $[3], t4 = $[4], t5 = $[5], t6 = $[6];
425
+ let t7;
426
+ return $[7] !== t1 || $[8] !== t2 || $[9] !== t3 || $[10] !== t4 || $[11] !== t5 || $[12] !== t6 ? (t7 = /* @__PURE__ */ jsxs("ul", {
427
+ className: t1,
428
+ style: t2,
429
+ "data-ui": t3,
430
+ ...t4,
431
+ children: [t5, t6]
432
+ }), $[7] = t1, $[8] = t2, $[9] = t3, $[10] = t4, $[11] = t5, $[12] = t6, $[13] = t7) : t7 = $[13], t7;
433
+ }
434
+ const ICON_SIZE = [
435
+ 0,
436
+ 1,
437
+ 2,
438
+ 3,
439
+ 4
440
+ ], iconProps = {
441
+ icon: { type: "string" },
442
+ size: {
443
+ type: "union",
444
+ className: "icon-body",
445
+ values: ICON_SIZE
446
+ },
447
+ muted: typographyProps.muted,
448
+ ...toneProps,
449
+ ...marginProps
450
+ }, iconClassName = suffixClassName("sui-Icon");
451
+ /** @public */
452
+ function Icon({ icon, size = 2, ...props }) {
453
+ let { className, style, ...rest } = getProps({
454
+ size,
455
+ ...props
456
+ }, iconProps), iconElement = isValidElement(icon) ? icon : null, ariaLabel = props["aria-label"] || (iconElement ? iconElement.props["aria-label"] : void 0), svgProps = {
457
+ className: clsx(iconClassName, "sui-display-block", className, iconElement ? iconElement.props.className : void 0),
458
+ style: iconElement ? {
459
+ ...iconElement.props.style,
460
+ ...style
461
+ } : style,
462
+ "data-ui": "Icon",
463
+ "aria-hidden": !ariaLabel || void 0,
464
+ ...rest
465
+ };
466
+ return iconElement ? cloneElement(iconElement, svgProps) : createElement(icon, svgProps);
467
+ }
288
468
  const badgeProps = {
289
469
  as: { type: "string" },
290
470
  iconStart: { type: "string" },
@@ -414,22 +594,6 @@ const borderProps = {
414
594
  className: "grid-row-end",
415
595
  variable: "--grid-row-end"
416
596
  }
417
- }, heightProps = {
418
- height: {
419
- type: "string",
420
- className: "height",
421
- variable: "--height"
422
- },
423
- minHeight: {
424
- type: "string",
425
- className: "min-height",
426
- variable: "--min-height"
427
- },
428
- maxHeight: {
429
- type: "string",
430
- className: "max-height",
431
- variable: "--max-height"
432
- }
433
597
  }, OVERFLOW = [
434
598
  "visible",
435
599
  "hidden",
@@ -941,18 +1105,18 @@ function VisuallyHidden(props) {
941
1105
  }), $[6] = T0, $[7] = children, $[8] = rest, $[9] = style, $[10] = t0, $[11] = t1) : t1 = $[11], t1;
942
1106
  }
943
1107
  const checkboxProps = {
944
- error: { type: "boolean" },
1108
+ hasError: { type: "boolean" },
945
1109
  indeterminate: { type: "boolean" },
946
1110
  label: { type: "string" },
947
1111
  ...marginProps
948
1112
  }, checkboxClassName = suffixClassName("sui-Checkbox"), checkboxInputClassName = suffixClassName("sui-CheckboxInput"), checkboxMarkClassName = suffixClassName("sui-CheckboxMark");
949
1113
  /** @beta */
950
1114
  function Checkbox(props) {
951
- let $ = c(6), inputRef = useRef(null), { className, style, disabled, error, indeterminate, label, ...rest } = getProps(props, checkboxProps);
1115
+ let $ = c(6), inputRef = useRef(null), { className, style, disabled, hasError, indeterminate, label, ...rest } = getProps(props, checkboxProps);
952
1116
  useEffect(() => {
953
1117
  inputRef.current && (inputRef.current.indeterminate = indeterminate);
954
1118
  }, [indeterminate, inputRef]);
955
- let t0 = clsx(checkboxClassName, "sui-position-relative", className), T0 = Box, t2 = clsx(checkboxMarkClassName, error && "sui-error"), t3;
1119
+ let t0 = clsx(checkboxClassName, "sui-position-relative", className), T0 = Box, t2 = clsx(checkboxMarkClassName, hasError && "sui-error"), t3;
956
1120
  $[0] === indeterminate ? t3 = $[1] : (t3 = jsx(indeterminate ? RemoveIcon : CheckmarkIcon, {}), $[0] = indeterminate, $[1] = t3);
957
1121
  let t4;
958
1122
  return $[2] !== T0 || $[3] !== t2 || $[4] !== t3 ? (t4 = /* @__PURE__ */ jsx(T0, {
@@ -968,7 +1132,7 @@ function Checkbox(props) {
968
1132
  style,
969
1133
  "data-ui": "Checkbox",
970
1134
  disabled,
971
- error,
1135
+ error: hasError,
972
1136
  children: [
973
1137
  /* @__PURE__ */ jsx(VisuallyHidden, {
974
1138
  as: "input",
@@ -1319,7 +1483,8 @@ const eyebrowProps = {
1319
1483
  1,
1320
1484
  2,
1321
1485
  3,
1322
- 4
1486
+ 4,
1487
+ 5
1323
1488
  ]
1324
1489
  },
1325
1490
  ...typographyProps
@@ -1444,6 +1609,64 @@ function HStack(t0) {
1444
1609
  ...t2
1445
1610
  }), $[5] = t1, $[6] = t2, $[7] = t3) : t3 = $[7], t3;
1446
1611
  }
1612
+ const kbdProps = { text: { type: "string" } }, kbdClassName = suffixClassName("sui-KBD");
1613
+ /** @alpha */
1614
+ function KBD(props) {
1615
+ let $ = c(14), T0, rest, style, t0, t1, text;
1616
+ if ($[0] !== props) {
1617
+ let { className, style: t2, text: t3, ...t4 } = getProps(props, kbdProps);
1618
+ style = t2, text = t3, rest = t4;
1619
+ let kbdClasses = clsx(kbdClassName, "sui-p1 sui-radius2 sui-display-inline-block");
1620
+ T0 = Text, t0 = "kbd", t1 = clsx(kbdClasses, className), $[0] = props, $[1] = T0, $[2] = rest, $[3] = style, $[4] = t0, $[5] = t1, $[6] = text;
1621
+ } else T0 = $[1], rest = $[2], style = $[3], t0 = $[4], t1 = $[5], text = $[6];
1622
+ let t2;
1623
+ return $[7] !== T0 || $[8] !== rest || $[9] !== style || $[10] !== t0 || $[11] !== t1 || $[12] !== text ? (t2 = /* @__PURE__ */ jsx(T0, {
1624
+ as: t0,
1625
+ className: t1,
1626
+ style,
1627
+ "data-ui": "KBD",
1628
+ size: 0,
1629
+ weight: "semibold",
1630
+ muted: !0,
1631
+ trim: !0,
1632
+ ...rest,
1633
+ children: text
1634
+ }), $[7] = T0, $[8] = rest, $[9] = style, $[10] = t0, $[11] = t1, $[12] = text, $[13] = t2) : t2 = $[13], t2;
1635
+ }
1636
+ const hotkeysProps = { keys: { type: "string" } }, hotkeysClassName = suffixClassName("sui-Hotkeys");
1637
+ /** @alpha */
1638
+ function Hotkeys(t0) {
1639
+ let $ = c(13), keys, rest, style, t1, t2;
1640
+ if ($[0] !== t0) {
1641
+ t2 = Symbol.for("react.early_return_sentinel");
1642
+ bb0: {
1643
+ let { keys: t3, ...props } = t0;
1644
+ keys = t3;
1645
+ let { className, style: t4, ...t5 } = getProps(props, hotkeysProps);
1646
+ if (style = t4, rest = t5, !keys || keys.length === 0) {
1647
+ t2 = null;
1648
+ break bb0;
1649
+ }
1650
+ let hotkeysClasses = clsx(hotkeysClassName, "sui-display-inline-flex");
1651
+ t1 = clsx(hotkeysClasses, className);
1652
+ }
1653
+ $[0] = t0, $[1] = keys, $[2] = rest, $[3] = style, $[4] = t1, $[5] = t2;
1654
+ } else keys = $[1], rest = $[2], style = $[3], t1 = $[4], t2 = $[5];
1655
+ if (t2 !== Symbol.for("react.early_return_sentinel")) return t2;
1656
+ let t3;
1657
+ $[6] === keys ? t3 = $[7] : (t3 = keys.map(_temp$1), $[6] = keys, $[7] = t3);
1658
+ let t4;
1659
+ return $[8] !== rest || $[9] !== style || $[10] !== t1 || $[11] !== t3 ? (t4 = /* @__PURE__ */ jsx("kbd", {
1660
+ className: t1,
1661
+ style,
1662
+ "data-ui": "Hotkeys",
1663
+ ...rest,
1664
+ children: t3
1665
+ }), $[8] = rest, $[9] = style, $[10] = t1, $[11] = t3, $[12] = t4) : t4 = $[12], t4;
1666
+ }
1667
+ function _temp$1(key) {
1668
+ return /* @__PURE__ */ jsx(KBD, { text: key }, key);
1669
+ }
1447
1670
  const indicatorProps = {
1448
1671
  as: { type: "string" },
1449
1672
  label: { type: "string" },
@@ -1936,7 +2159,7 @@ function PopoverRoot(t0) {
1936
2159
  }
1937
2160
  /** @beta */
1938
2161
  const Popover = Object.assign(PopoverRoot, { forwardsTriggerProps: !0 }), radioProps = {
1939
- error: { type: "boolean" },
2162
+ hasError: { type: "boolean" },
1940
2163
  label: { type: "string" },
1941
2164
  ...marginProps
1942
2165
  }, radioClassName = suffixClassName("sui-Radio"), radioInputClassName = suffixClassName("sui-RadioInput"), radioMarkClassName = suffixClassName("sui-RadioMark");
@@ -1944,14 +2167,14 @@ const Popover = Object.assign(PopoverRoot, { forwardsTriggerProps: !0 }), radioP
1944
2167
  function Radio(props) {
1945
2168
  let $ = c(26), T0, T1, label, t0, t1, t2, t3, t4, t5, t6, t7;
1946
2169
  if ($[0] !== props) {
1947
- let { className, style, label: t8, disabled, error, ...rest } = getProps(props, radioProps);
1948
- label = t8, T1 = Label, t2 = clsx(radioClassName, "sui-position-relative", className), t3 = style, t4 = "Radio", t5 = disabled, t6 = error, t7 = /* @__PURE__ */ jsx(VisuallyHidden, {
2170
+ let { className, style, label: t8, disabled, hasError, ...rest } = getProps(props, radioProps);
2171
+ label = t8, T1 = Label, t2 = clsx(radioClassName, "sui-position-relative", className), t3 = style, t4 = "Radio", t5 = disabled, t6 = hasError, t7 = /* @__PURE__ */ jsx(VisuallyHidden, {
1949
2172
  as: "input",
1950
2173
  type: "radio",
1951
2174
  className: radioInputClassName,
1952
2175
  disabled,
1953
2176
  ...rest
1954
- }), T0 = Box, t0 = "span", t1 = clsx(radioMarkClassName, error && "sui-error"), $[0] = props, $[1] = T0, $[2] = T1, $[3] = label, $[4] = t0, $[5] = t1, $[6] = t2, $[7] = t3, $[8] = t4, $[9] = t5, $[10] = t6, $[11] = t7;
2177
+ }), T0 = Box, t0 = "span", t1 = clsx(radioMarkClassName, hasError && "sui-error"), $[0] = props, $[1] = T0, $[2] = T1, $[3] = label, $[4] = t0, $[5] = t1, $[6] = t2, $[7] = t3, $[8] = t4, $[9] = t5, $[10] = t6, $[11] = t7;
1955
2178
  } else T0 = $[1], T1 = $[2], label = $[3], t0 = $[4], t1 = $[5], t2 = $[6], t3 = $[7], t4 = $[8], t5 = $[9], t6 = $[10], t7 = $[11];
1956
2179
  let t8;
1957
2180
  $[12] !== T0 || $[13] !== t0 || $[14] !== t1 ? (t8 = /* @__PURE__ */ jsx(T0, {
@@ -2061,7 +2284,7 @@ function SkipToContent(props) {
2061
2284
  }), $[10] = T0, $[11] = rest, $[12] = style, $[13] = t0, $[14] = t1, $[15] = t2, $[16] = t3, $[17] = t4) : t4 = $[17], t4;
2062
2285
  }
2063
2286
  const switchProps = {
2064
- error: { type: "boolean" },
2287
+ hasError: { type: "boolean" },
2065
2288
  label: { type: "string" },
2066
2289
  ...marginProps
2067
2290
  }, switchClassName = suffixClassName("sui-Switch"), switchInputClassName = suffixClassName("sui-SwitchInput"), switchMarkClassName = suffixClassName("sui-SwitchMark");
@@ -2069,15 +2292,15 @@ const switchProps = {
2069
2292
  function Switch(props) {
2070
2293
  let $ = c(26), T0, T1, label, t0, t1, t2, t3, t4, t5, t6, t7;
2071
2294
  if ($[0] !== props) {
2072
- let { className, style, disabled, error, label: t8, ...rest } = getProps(props, switchProps);
2073
- label = t8, T1 = Label, t2 = clsx(switchClassName, "sui-position-relative", className), t3 = style, t4 = "Switch", t5 = props.disabled, t6 = error, t7 = /* @__PURE__ */ jsx(VisuallyHidden, {
2295
+ let { className, style, disabled, hasError, label: t8, ...rest } = getProps(props, switchProps);
2296
+ label = t8, T1 = Label, t2 = clsx(switchClassName, "sui-position-relative", className), t3 = style, t4 = "Switch", t5 = props.disabled, t6 = hasError, t7 = /* @__PURE__ */ jsx(VisuallyHidden, {
2074
2297
  as: "input",
2075
2298
  type: "checkbox",
2076
2299
  role: "switch",
2077
2300
  className: switchInputClassName,
2078
2301
  disabled,
2079
2302
  ...rest
2080
- }), T0 = Flex, t0 = "span", t1 = clsx(switchMarkClassName, error && "sui-error"), $[0] = props, $[1] = T0, $[2] = T1, $[3] = label, $[4] = t0, $[5] = t1, $[6] = t2, $[7] = t3, $[8] = t4, $[9] = t5, $[10] = t6, $[11] = t7;
2303
+ }), T0 = Flex, t0 = "span", t1 = clsx(switchMarkClassName, hasError && "sui-error"), $[0] = props, $[1] = T0, $[2] = T1, $[3] = label, $[4] = t0, $[5] = t1, $[6] = t2, $[7] = t3, $[8] = t4, $[9] = t5, $[10] = t6, $[11] = t7;
2081
2304
  } else T0 = $[1], T1 = $[2], label = $[3], t0 = $[4], t1 = $[5], t2 = $[6], t3 = $[7], t4 = $[8], t5 = $[9], t6 = $[10], t7 = $[11];
2082
2305
  let t8;
2083
2306
  $[12] !== T0 || $[13] !== t0 || $[14] !== t1 ? (t8 = /* @__PURE__ */ jsx(T0, {
@@ -2101,6 +2324,38 @@ function Switch(props) {
2101
2324
  ]
2102
2325
  }), $[16] = T1, $[17] = label, $[18] = t2, $[19] = t3, $[20] = t4, $[21] = t5, $[22] = t6, $[23] = t7, $[24] = t8, $[25] = t9) : t9 = $[25], t9;
2103
2326
  }
2327
+ const textAreaProps = {
2328
+ autoResize: {
2329
+ type: "boolean",
2330
+ className: "field-sizing-content"
2331
+ },
2332
+ hasError: { type: "boolean" },
2333
+ maxHeight: heightProps.maxHeight,
2334
+ ...formElementDensityProps
2335
+ }, textAreaClassName = suffixClassName("sui-TextArea");
2336
+ /** @public */
2337
+ function TextArea(t0) {
2338
+ let $ = c(10), hasError, rest, style, t1;
2339
+ if ($[0] !== t0) {
2340
+ let { autoResize, density: t2, hasError: t3, rows: t4, ...props } = t0;
2341
+ hasError = t3;
2342
+ let { className, style: t5, ...t6 } = getProps({
2343
+ autoResize,
2344
+ density: t2 === void 0 ? "regular" : t2,
2345
+ rows: t4 === void 0 ? 5 : t4,
2346
+ ...props
2347
+ }, textAreaProps);
2348
+ style = t5, rest = t6, t1 = clsx(textAreaClassName, "sui-radius2", "sui-width-full", className), $[0] = t0, $[1] = hasError, $[2] = rest, $[3] = style, $[4] = t1;
2349
+ } else hasError = $[1], rest = $[2], style = $[3], t1 = $[4];
2350
+ let textAreaClasses = t1, t2 = hasError || void 0, t3;
2351
+ return $[5] !== rest || $[6] !== style || $[7] !== t2 || $[8] !== textAreaClasses ? (t3 = /* @__PURE__ */ jsx("textarea", {
2352
+ className: textAreaClasses,
2353
+ style,
2354
+ "data-ui": "TextArea",
2355
+ ...rest,
2356
+ "aria-invalid": t2
2357
+ }), $[5] = rest, $[6] = style, $[7] = t2, $[8] = textAreaClasses, $[9] = t3) : t3 = $[9], t3;
2358
+ }
2104
2359
  const textInputProps = {
2105
2360
  hasError: { type: "boolean" },
2106
2361
  ...formElementDensityProps
@@ -2109,8 +2364,10 @@ const textInputProps = {
2109
2364
  function TextInput(t0) {
2110
2365
  let $ = c(12), hasError, rest, style, t1, type;
2111
2366
  if ($[0] !== t0) {
2112
- let { density: t2, hasError: t3, type: t4, ...props } = t0, density = t2 === void 0 ? "regular" : t2;
2113
- hasError = t3 !== void 0 && t3, type = t4 === void 0 ? "text" : t4;
2367
+ let { density: t2, hasError: t3, type: t4, ...props } = t0;
2368
+ hasError = t3;
2369
+ let density = t2 === void 0 ? "regular" : t2;
2370
+ type = t4 === void 0 ? "text" : t4;
2114
2371
  let { className, style: t5, ...t6 } = getProps({
2115
2372
  density,
2116
2373
  ...props
@@ -2209,6 +2466,6 @@ function TooltipGroup(props) {
2209
2466
  children
2210
2467
  }), $[8] = Component, $[9] = children, $[10] = handleBlur, $[11] = handleMouseLeave, $[12] = handleTransitionEnd, $[13] = rest, $[14] = t3, $[15] = t5, $[16] = t6) : t6 = $[16], t6;
2211
2468
  }
2212
- export { Badge, Box, Button, Card, Checkbox, Code, Container, Dialog, Divider, Eyebrow, Flex, Grid, HStack, Heading, Icon, IconButton, Indicator, IndicatorStack, Inline, Label, Link, List, Popover, PressArea, Radio, Select, SkipToContent, Spinner, Switch, Text, TextInput, Tooltip, TooltipGroup, VStack, VisuallyHidden, useIsClient };
2469
+ export { Avatar, AvatarCounter, AvatarStack, Badge, Box, Button, Card, Checkbox, Code, Container, Dialog, Divider, Eyebrow, Flex, Grid, HStack, Heading, Hotkeys, Icon, IconButton, Indicator, IndicatorStack, Inline, KBD, Label, Link, List, Popover, PressArea, Radio, Select, SkipToContent, Spinner, Switch, Text, TextArea, TextInput, Tooltip, TooltipGroup, VStack, VisuallyHidden, useIsClient };
2213
2470
 
2214
2471
  //# sourceMappingURL=index.js.map