@eightshift/ui-components 5.0.0 → 5.0.2

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 (144) hide show
  1. package/dist/Button-BpwTmkAe.js +185 -0
  2. package/dist/Collection-n5d0zIgb.js +2398 -0
  3. package/dist/Color-lVhk8V_G.js +2452 -0
  4. package/dist/ColorSwatch-DntWEAC3.js +64 -0
  5. package/dist/ComboBox-BJpTEATT.js +1915 -0
  6. package/dist/Dialog-O9uw63D7.js +2317 -0
  7. package/dist/FieldError-DHrSdE_Q.js +42 -0
  8. package/dist/FocusScope-BEPI2m7u.js +831 -0
  9. package/dist/Form-Cq3fu75_.js +5 -0
  10. package/dist/Group-DDPhPPTQ.js +48 -0
  11. package/dist/Heading-ba38ScjJ.js +16 -0
  12. package/dist/Hidden-rE6uR-lr.js +41 -0
  13. package/dist/Input-BmDS8Juy.js +133 -0
  14. package/dist/Label-JS_ob-kh.js +17 -0
  15. package/dist/List-CZMUbkFU.js +593 -0
  16. package/dist/ListBox-BTxlCGcc.js +664 -0
  17. package/dist/NumberFormatter-DA8u1Ot7.js +140 -0
  18. package/dist/OverlayArrow-5aDgmImj.js +637 -0
  19. package/dist/RSPContexts-2lR5GG9p.js +14 -0
  20. package/dist/Select-aab027f3.esm-BKIJGje-.js +2469 -0
  21. package/dist/Separator-CaTBkETC.js +332 -0
  22. package/dist/Slider-C-S1oEH9.js +853 -0
  23. package/dist/Text-BuJgePCv.js +16 -0
  24. package/dist/VisuallyHidden-BYi0pekx.js +48 -0
  25. package/dist/_commonjsHelpers-CUmg6egw.js +6 -0
  26. package/dist/assets/index.css +57 -0
  27. package/dist/assets/style-admin.css +5908 -0
  28. package/dist/assets/style-editor.css +5908 -0
  29. package/dist/assets/style.css +5914 -0
  30. package/dist/assets/wp-font-enhancements.css +8 -0
  31. package/dist/assets/wp-ui-enhancements.css +396 -0
  32. package/dist/components/animated-visibility/animated-visibility.js +105 -0
  33. package/dist/components/base-control/base-control.js +86 -0
  34. package/dist/components/breakpoint-preview/breakpoint-preview.js +161 -0
  35. package/dist/components/button/button.js +387 -0
  36. package/dist/components/checkbox/checkbox.js +323 -0
  37. package/dist/components/color-pickers/color-picker.js +272 -0
  38. package/dist/components/color-pickers/color-swatch.js +59 -0
  39. package/dist/components/color-pickers/gradient-editor.js +534 -0
  40. package/dist/components/color-pickers/solid-color-picker.js +1567 -0
  41. package/dist/components/component-toggle/component-toggle.js +161 -0
  42. package/dist/components/container-panel/container-panel.js +131 -0
  43. package/dist/components/draggable/draggable-context.js +5 -0
  44. package/dist/components/draggable/draggable-handle.js +46 -0
  45. package/dist/components/draggable/draggable.js +7320 -0
  46. package/dist/components/draggable-list/draggable-list-context.js +5 -0
  47. package/dist/components/draggable-list/draggable-list-item.js +77 -0
  48. package/dist/components/draggable-list/draggable-list.js +151 -0
  49. package/dist/components/expandable/expandable.js +342 -0
  50. package/dist/components/index.js +137 -0
  51. package/dist/components/input-field/input-field.js +231 -0
  52. package/dist/components/item-collection/item-collection.js +59 -0
  53. package/dist/components/layout/hstack.js +30 -0
  54. package/dist/components/layout/vstack.js +30 -0
  55. package/dist/components/link-input/link-input.js +284 -0
  56. package/dist/components/matrix-align/matrix-align.js +134 -0
  57. package/dist/components/menu/menu.js +285 -0
  58. package/dist/components/modal/modal.js +305 -0
  59. package/dist/components/notice/notice.js +123 -0
  60. package/dist/components/number-picker/number-picker.js +292 -0
  61. package/dist/components/option-select/option-select.js +264 -0
  62. package/dist/components/options-panel/options-panel.js +158 -0
  63. package/dist/components/placeholders/file-placeholder.js +42 -0
  64. package/dist/components/placeholders/image-placeholder.js +88 -0
  65. package/dist/components/placeholders/media-placeholder.js +63 -0
  66. package/dist/components/popover/popover.js +207 -0
  67. package/dist/components/radio/radio.js +582 -0
  68. package/dist/components/repeater/repeater-context.js +5 -0
  69. package/dist/components/repeater/repeater-item.js +119 -0
  70. package/dist/components/repeater/repeater.js +280 -0
  71. package/dist/components/responsive/mini-responsive.js +498 -0
  72. package/dist/components/responsive/responsive-legacy.js +343 -0
  73. package/dist/components/responsive/responsive.js +583 -0
  74. package/dist/components/responsive-preview/responsive-preview.js +123 -0
  75. package/dist/components/rich-label/rich-label.js +66 -0
  76. package/dist/components/select/async-multi-select.js +157 -0
  77. package/dist/components/select/async-single-select.js +137 -0
  78. package/dist/components/select/custom-select-default-components.js +38 -0
  79. package/dist/components/select/multi-select-components.js +8 -0
  80. package/dist/components/select/multi-select.js +151 -0
  81. package/dist/components/select/react-select-component-wrappers.js +90 -0
  82. package/dist/components/select/shared.js +26 -0
  83. package/dist/components/select/single-select.js +131 -0
  84. package/dist/components/select/styles.js +49 -0
  85. package/dist/components/select/v2/async-select.js +297 -0
  86. package/dist/components/select/v2/shared.js +24 -0
  87. package/dist/components/select/v2/single-select.js +1004 -0
  88. package/dist/components/slider/column-config-slider.js +210 -0
  89. package/dist/components/slider/slider.js +345 -0
  90. package/dist/components/slider/utils.js +94 -0
  91. package/dist/components/spacer/spacer.js +97 -0
  92. package/dist/components/tabs/tabs.js +703 -0
  93. package/dist/components/toggle/switch.js +156 -0
  94. package/dist/components/toggle/toggle.js +64 -0
  95. package/dist/components/toggle-button/toggle-button.js +343 -0
  96. package/dist/components/tooltip/tooltip.js +527 -0
  97. package/dist/context-BbYZoHvX.js +92 -0
  98. package/dist/default-i18n-CT_oS1Fy.js +922 -0
  99. package/dist/filterDOMProps-EDDcM64A.js +28 -0
  100. package/dist/icons/block-icon.js +42 -0
  101. package/dist/icons/generic-color-swatch.js +113 -0
  102. package/dist/icons/icons.js +30495 -0
  103. package/dist/icons/index.js +11 -0
  104. package/dist/icons/jsx-svg.js +50 -0
  105. package/dist/index-641ee5b8.esm-BPU8rMZr.js +3137 -0
  106. package/dist/index-BljRBEr_.js +44 -0
  107. package/dist/index-CFozsmNS.js +28321 -0
  108. package/dist/index.js +139 -0
  109. package/dist/lite-DVmmD_-j.js +7 -0
  110. package/dist/modifiers.esm-BuJQPI1X.js +31 -0
  111. package/dist/multi-select-components-Sp-JEFEX.js +3744 -0
  112. package/dist/number-GajL10e1.js +36 -0
  113. package/dist/react-jsx-parser.min-DZCiis5V.js +11753 -0
  114. package/dist/react-select-async.esm-D937XTWW.js +107 -0
  115. package/dist/react-select.esm-Ciai3aKf.js +15 -0
  116. package/dist/style-admin.js +1 -0
  117. package/dist/style-editor.js +1 -0
  118. package/dist/style.js +1 -0
  119. package/dist/textSelection-8DpK8fJl.js +46 -0
  120. package/dist/useButton-Bt3BffJm.js +50 -0
  121. package/dist/useEvent-ICdlokG-.js +23 -0
  122. package/dist/useFocusRing-Bv0UJQl8.js +107 -0
  123. package/dist/useFormReset-D2YaWRIA.js +22 -0
  124. package/dist/useFormValidation-Dy0PXJg5.js +224 -0
  125. package/dist/useHover-C2SkI1Fn.js +895 -0
  126. package/dist/useLabel-BPCd5c7-.js +27 -0
  127. package/dist/useLabels-B7-lUnAF.js +23 -0
  128. package/dist/useListState-DkyH7elT.js +168 -0
  129. package/dist/useLocalizedStringFormatter-C9GO0IDB.js +121 -0
  130. package/dist/useNumberField-CU1_u8ze.js +1215 -0
  131. package/dist/useNumberFormatter-CZ9QUnRt.js +13 -0
  132. package/dist/usePress-BrJylgPR.js +688 -0
  133. package/dist/useSingleSelectListState-C4sorv2p.js +38 -0
  134. package/dist/useToggle-CDa3YAZI.js +59 -0
  135. package/dist/useToggleState-ibcBUHnB.js +19 -0
  136. package/dist/utilities/array-helpers.js +56 -0
  137. package/dist/utilities/debounce-throttle.js +123 -0
  138. package/dist/utilities/es-dash.js +382 -0
  139. package/dist/utilities/index.js +27 -0
  140. package/dist/utilities/text-helpers.js +136 -0
  141. package/dist/utils-CZt7LCbO.js +403 -0
  142. package/dist/wp/wp-font-enhancements.js +1 -0
  143. package/dist/wp/wp-ui-enhancements.js +1 -0
  144. package/package.json +24 -24
@@ -0,0 +1,156 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { a as $64fa3d84918910a7$export$29f1550f4b0d4415, l as $df56164dff5785e2$export$4338b53315abf666, m as $5dc95899b306f630$export$c9058316764c140e, h as $64fa3d84918910a7$export$ef03459518577ad4, b as $64fa3d84918910a7$export$4d86445c2cf5e3, d as $3ef42575df84b30b$export$9d1611c77c2fe928 } from "../../utils-CZt7LCbO.js";
3
+ import { $ as $65484d02dcb7eb3e$export$457c3d6518dd4c6f } from "../../filterDOMProps-EDDcM64A.js";
4
+ import React__default, { forwardRef, createContext } from "react";
5
+ import { $ as $3017fa7ffdddec74$export$8042c6c013fd5226 } from "../../useToggleState-ibcBUHnB.js";
6
+ import { $ as $d2c8e2b0480f3f34$export$cbe85ee05b554577 } from "../../useToggle-CDa3YAZI.js";
7
+ import { $ as $f7dceffc5ad7768b$export$4e328f61c538687f } from "../../useFocusRing-Bv0UJQl8.js";
8
+ import { $ as $6179b936705e76d3$export$ae780daf29e6d456 } from "../../useHover-C2SkI1Fn.js";
9
+ import { $ as $5c3e21d68f1c4674$export$439d29a4e110a164 } from "../../VisuallyHidden-BYi0pekx.js";
10
+ import { c as clsx } from "../../lite-DVmmD_-j.js";
11
+ function $b418ec0c85c52f27$export$d853f7095ae95f88(props, state, ref) {
12
+ let { labelProps, inputProps, isSelected, isPressed, isDisabled, isReadOnly } = $d2c8e2b0480f3f34$export$cbe85ee05b554577(props, state, ref);
13
+ return {
14
+ labelProps,
15
+ inputProps: {
16
+ ...inputProps,
17
+ role: "switch",
18
+ checked: isSelected
19
+ },
20
+ isSelected,
21
+ isPressed,
22
+ isDisabled,
23
+ isReadOnly
24
+ };
25
+ }
26
+ const $8e59e948500a8fe1$export$8699e3b644d5a28a = /* @__PURE__ */ createContext(null);
27
+ const $8e59e948500a8fe1$export$b5d5cf8927ab7262 = /* @__PURE__ */ forwardRef(function Switch(props, ref) {
28
+ let { inputRef: userProvidedInputRef = null, ...otherProps } = props;
29
+ [props, ref] = $64fa3d84918910a7$export$29f1550f4b0d4415(otherProps, ref, $8e59e948500a8fe1$export$8699e3b644d5a28a);
30
+ let inputRef = $df56164dff5785e2$export$4338b53315abf666($5dc95899b306f630$export$c9058316764c140e(userProvidedInputRef, props.inputRef !== void 0 ? props.inputRef : null));
31
+ let state = $3017fa7ffdddec74$export$8042c6c013fd5226(props);
32
+ let { labelProps, inputProps, isSelected, isDisabled, isReadOnly, isPressed } = $b418ec0c85c52f27$export$d853f7095ae95f88({
33
+ ...$64fa3d84918910a7$export$ef03459518577ad4(props),
34
+ // ReactNode type doesn't allow function children.
35
+ children: typeof props.children === "function" ? true : props.children
36
+ }, state, inputRef);
37
+ let { isFocused, isFocusVisible, focusProps } = $f7dceffc5ad7768b$export$4e328f61c538687f();
38
+ let isInteractionDisabled = props.isDisabled || props.isReadOnly;
39
+ let { hoverProps, isHovered } = $6179b936705e76d3$export$ae780daf29e6d456({
40
+ ...props,
41
+ isDisabled: isInteractionDisabled
42
+ });
43
+ let renderProps = $64fa3d84918910a7$export$4d86445c2cf5e3({
44
+ ...props,
45
+ defaultClassName: "react-aria-Switch",
46
+ values: {
47
+ isSelected,
48
+ isPressed,
49
+ isHovered,
50
+ isFocused,
51
+ isFocusVisible,
52
+ isDisabled,
53
+ isReadOnly,
54
+ state
55
+ }
56
+ });
57
+ let DOMProps = $65484d02dcb7eb3e$export$457c3d6518dd4c6f(props);
58
+ delete DOMProps.id;
59
+ return /* @__PURE__ */ React__default.createElement("label", {
60
+ ...$3ef42575df84b30b$export$9d1611c77c2fe928(DOMProps, labelProps, hoverProps, renderProps),
61
+ ref,
62
+ slot: props.slot || void 0,
63
+ "data-selected": isSelected || void 0,
64
+ "data-pressed": isPressed || void 0,
65
+ "data-hovered": isHovered || void 0,
66
+ "data-focused": isFocused || void 0,
67
+ "data-focus-visible": isFocusVisible || void 0,
68
+ "data-disabled": isDisabled || void 0,
69
+ "data-readonly": isReadOnly || void 0
70
+ }, /* @__PURE__ */ React__default.createElement($5c3e21d68f1c4674$export$439d29a4e110a164, {
71
+ elementType: "span"
72
+ }, /* @__PURE__ */ React__default.createElement("input", {
73
+ ...$3ef42575df84b30b$export$9d1611c77c2fe928(inputProps, focusProps),
74
+ ref: inputRef
75
+ })), renderProps.children);
76
+ });
77
+ /**
78
+ * A toggle switch.
79
+ *
80
+ * @component
81
+ * @param {Object} props - Component props.
82
+ * @param {boolean} props.checked - Whether the switch is checked.
83
+ * @param {Function} props.onChange - Function to call when the switch is toggled.
84
+ * @param {boolean} [props.disabled] - Whether the switch is disabled.
85
+ * @param {string} [props.id] - The ID of the switch.
86
+ * @param {string} [props.className] - Classes to pass to the switch.
87
+ * @param {boolean} [props.isIndeterminate] - If `true`, the switch will render in an indeterminate state.
88
+ * @param {boolean} [props.hidden] - If `true`, the component is not rendered.
89
+ *
90
+ * @returns {JSX.Element} The Switch component.
91
+ *
92
+ * @example
93
+ * const [checked, setChecked] = useState(false);
94
+ *
95
+ * <Switch
96
+ * checked={checked}
97
+ * onChange={() => setChecked(!checked)}
98
+ * />
99
+ *
100
+ * @preserve
101
+ */
102
+ const Switch2 = (props) => {
103
+ const { checked, onChange, disabled, id, children, className, isIndeterminate, hidden, ...rest } = props;
104
+ if (hidden) {
105
+ return null;
106
+ }
107
+ return /* @__PURE__ */ jsxs(
108
+ $8e59e948500a8fe1$export$b5d5cf8927ab7262,
109
+ {
110
+ id,
111
+ isDisabled: disabled,
112
+ isSelected: checked ?? false,
113
+ onChange,
114
+ className: "es:group es:flex es:items-center es:justify-between es:gap-2 es:any-focus:outline-hidden",
115
+ ...rest,
116
+ children: [
117
+ children,
118
+ /* @__PURE__ */ jsx("div", { className: clsx("es:flex es:shrink-0 es:items-center es:justify-center es:min-h-6.5", className), children: /* @__PURE__ */ jsx(
119
+ "div",
120
+ {
121
+ className: clsx(
122
+ "es:shrink-0 es:group-not-disabled:cursor-pointer es:no-webkit-highlight",
123
+ "es:h-5 es:w-9 es:p-[0.1875rem] es:rounded-full",
124
+ "es:bg-radial-[circle_at_75%_50%]",
125
+ "es:border es:inset-ring es:inset-shadow-xs",
126
+ "es:transition",
127
+ "es:group-focus-visible:ring-2 es:group-focus-visible:ring-accent-500/50 es:group-focus-visible:border-accent-600",
128
+ !checked && !disabled && "es:border-secondary-400 es:inset-ring-secondary-100 es:from-white es:to-secondary-100",
129
+ checked && !disabled && "es:border-accent-700/75 es:inset-ring-accent-500 es:to-accent-500 es:from-accent-600 es:shadow-accent-600/30",
130
+ disabled && "es:cursor-default es:border-secondary-300 es:from-white es:to-secondary-50 es:inset-ring-secondary-200/30 es:inset-shadow-secondary-100",
131
+ !disabled && "es:shadow-xs"
132
+ ),
133
+ children: /* @__PURE__ */ jsx(
134
+ "span",
135
+ {
136
+ className: clsx(
137
+ "es:block es:size-3 es:rounded-full es:border es:will-change-transform es:bg-radial",
138
+ "es:transition es:motion-ease-spring-snappy es:ease-[var(--motion-spring-snappy)]",
139
+ !checked && "es:scale-95",
140
+ !checked && !disabled && "es:border-secondary-500 es:from-secondary-500 es:to-secondary-600",
141
+ checked && "es:translate-x-4",
142
+ checked && !disabled && "es:border-accent-600/20 es:from-white es:to-accent-500/30 es:from-40% es:bg-white es:shadow-xs es:shadow-accent-900/60",
143
+ disabled && "es:border-secondary-400 es:bg-secondary-100",
144
+ isIndeterminate && "es:translate-x-2 es:scale-100"
145
+ )
146
+ }
147
+ )
148
+ }
149
+ ) })
150
+ ]
151
+ }
152
+ );
153
+ };
154
+ export {
155
+ Switch2 as Switch
156
+ };
@@ -0,0 +1,64 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { $ as $01b77f81d0f07f68$export$b04be29aa201d4f5 } from "../../Label-JS_ob-kh.js";
3
+ import { Switch } from "./switch.js";
4
+ import { RichLabel } from "../rich-label/rich-label.js";
5
+ /**
6
+ * A toggle switch with a label and optional icon and subtitle.
7
+ *
8
+ * @component
9
+ * @param {Object} props - Component props.
10
+ * @param {boolean} props.checked - Whether the switch is checked.
11
+ * @param {Function} props.onChange - Function to call when the switch is toggled.
12
+ * @param {boolean} [props.disabled] - Whether the switch is disabled.
13
+ * @param {JSX.Element} [props.icon] - Icon to display.
14
+ * @param {string} props.label - Label to display.
15
+ * @param {string} [props.subtitle] - Subtitle to display.
16
+ * @param {string} [props.className] - Classes to pass to the toggle switch.
17
+ * @param {string} [props.labelClassName] - Classes to pass to the label.
18
+ * @param {boolean} [props.isIndeterminate] - If `true`, the switch will render in an indeterminate state.
19
+ * @param {boolean} [props.hidden] - If `true`, the component is not rendered.
20
+ *
21
+ * @returns {JSX.Element} The Toggle component.
22
+ *
23
+ * @example
24
+ * const [checked, setChecked] = useState(false);
25
+ *
26
+ * <Toggle
27
+ * icon={icons.myIcon}
28
+ * label='My toggle'
29
+ * checked={checked}
30
+ * onChange={() => setChecked(!checked)}
31
+ * />
32
+ *
33
+ * @preserve
34
+ */
35
+ const Toggle = (props) => {
36
+ const { checked, onChange, icon, label, subtitle, disabled, className, labelClassName, isIndeterminate, hidden } = props;
37
+ if (hidden) {
38
+ return null;
39
+ }
40
+ return /* @__PURE__ */ jsx(
41
+ Switch,
42
+ {
43
+ checked,
44
+ onChange,
45
+ disabled,
46
+ className,
47
+ isIndeterminate,
48
+ children: /* @__PURE__ */ jsx(
49
+ RichLabel,
50
+ {
51
+ as: $01b77f81d0f07f68$export$b04be29aa201d4f5,
52
+ icon,
53
+ label,
54
+ subtitle,
55
+ className: labelClassName,
56
+ fullWidth: true
57
+ }
58
+ )
59
+ }
60
+ );
61
+ };
62
+ export {
63
+ Toggle
64
+ };
@@ -0,0 +1,343 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { p as $ff5963eb1fccf552$export$e08e3b67e392101e, d as $3ef42575df84b30b$export$9d1611c77c2fe928, a as $64fa3d84918910a7$export$29f1550f4b0d4415, b as $64fa3d84918910a7$export$4d86445c2cf5e3 } from "../../utils-CZt7LCbO.js";
3
+ import React__default, { createContext, forwardRef, useContext } from "react";
4
+ import { $ as $3017fa7ffdddec74$export$8042c6c013fd5226 } from "../../useToggleState-ibcBUHnB.js";
5
+ import { $ as $701a24aa0da5b062$export$ea18c227d4417cc3 } from "../../useButton-Bt3BffJm.js";
6
+ import { $ as $f7dceffc5ad7768b$export$4e328f61c538687f } from "../../useFocusRing-Bv0UJQl8.js";
7
+ import { $ as $6179b936705e76d3$export$ae780daf29e6d456 } from "../../useHover-C2SkI1Fn.js";
8
+ import { c as cva } from "../../index-BljRBEr_.js";
9
+ import { Tooltip } from "../tooltip/tooltip.js";
10
+ function $55f54f7887471b58$export$51e84d46ca0bc451(props, state, ref) {
11
+ const { isSelected } = state;
12
+ const { isPressed, buttonProps } = $701a24aa0da5b062$export$ea18c227d4417cc3({
13
+ ...props,
14
+ onPress: $ff5963eb1fccf552$export$e08e3b67e392101e(state.toggle, props.onPress)
15
+ }, ref);
16
+ return {
17
+ isPressed,
18
+ isSelected,
19
+ isDisabled: props.isDisabled || false,
20
+ buttonProps: $3ef42575df84b30b$export$9d1611c77c2fe928(buttonProps, {
21
+ "aria-pressed": isSelected
22
+ })
23
+ };
24
+ }
25
+ function $4547d1bf40011fdf$export$bc53712daae3d6e6(props, state, ref) {
26
+ let toggleState = {
27
+ isSelected: state.selectedKeys.has(props.id),
28
+ setSelected(isSelected2) {
29
+ state.setSelected(props.id, isSelected2);
30
+ },
31
+ toggle() {
32
+ state.toggleKey(props.id);
33
+ }
34
+ };
35
+ let { isPressed, isSelected, isDisabled, buttonProps } = $55f54f7887471b58$export$51e84d46ca0bc451({
36
+ ...props,
37
+ id: void 0,
38
+ isDisabled: props.isDisabled || state.isDisabled
39
+ }, toggleState, ref);
40
+ if (state.selectionMode === "single") {
41
+ buttonProps.role = "radio";
42
+ buttonProps["aria-checked"] = toggleState.isSelected;
43
+ delete buttonProps["aria-pressed"];
44
+ }
45
+ return {
46
+ isPressed,
47
+ isSelected,
48
+ isDisabled,
49
+ buttonProps
50
+ };
51
+ }
52
+ const $84b7d8702d4ff4a8$export$a8a71863db173133 = /* @__PURE__ */ createContext(null);
53
+ const $efde0372d7a700fe$export$43506d75ebd2e218 = /* @__PURE__ */ createContext({});
54
+ const $efde0372d7a700fe$export$d2b052e7b4be1756 = /* @__PURE__ */ forwardRef(function ToggleButton(props, ref) {
55
+ [props, ref] = $64fa3d84918910a7$export$29f1550f4b0d4415(props, ref, $efde0372d7a700fe$export$43506d75ebd2e218);
56
+ let groupState = useContext($84b7d8702d4ff4a8$export$a8a71863db173133);
57
+ let state = $3017fa7ffdddec74$export$8042c6c013fd5226(groupState && props.id != null ? {
58
+ isSelected: groupState.selectedKeys.has(props.id),
59
+ onChange(isSelected2) {
60
+ groupState.setSelected(props.id, isSelected2);
61
+ }
62
+ } : props);
63
+ let { buttonProps, isPressed, isSelected, isDisabled } = groupState && props.id != null ? $4547d1bf40011fdf$export$bc53712daae3d6e6({
64
+ ...props,
65
+ id: props.id
66
+ }, groupState, ref) : $55f54f7887471b58$export$51e84d46ca0bc451({
67
+ ...props,
68
+ id: props.id != null ? String(props.id) : void 0
69
+ }, state, ref);
70
+ let { focusProps, isFocused, isFocusVisible } = $f7dceffc5ad7768b$export$4e328f61c538687f(props);
71
+ let { hoverProps, isHovered } = $6179b936705e76d3$export$ae780daf29e6d456(props);
72
+ let renderProps = $64fa3d84918910a7$export$4d86445c2cf5e3({
73
+ ...props,
74
+ id: void 0,
75
+ values: {
76
+ isHovered,
77
+ isPressed,
78
+ isFocused,
79
+ isSelected: state.isSelected,
80
+ isFocusVisible,
81
+ isDisabled,
82
+ state
83
+ },
84
+ defaultClassName: "react-aria-ToggleButton"
85
+ });
86
+ return /* @__PURE__ */ React__default.createElement("button", {
87
+ ...$3ef42575df84b30b$export$9d1611c77c2fe928(buttonProps, focusProps, hoverProps),
88
+ ...renderProps,
89
+ ref,
90
+ slot: props.slot || void 0,
91
+ "data-focused": isFocused || void 0,
92
+ "data-disabled": isDisabled || void 0,
93
+ "data-pressed": isPressed || void 0,
94
+ "data-selected": isSelected || void 0,
95
+ "data-hovered": isHovered || void 0,
96
+ "data-focus-visible": isFocusVisible || void 0
97
+ });
98
+ });
99
+ /**
100
+ * A simple toggle button component.
101
+ *
102
+ * @component
103
+ * @param {Object} props - Component props.
104
+ * @param {JSX.Element} [props.icon] - Icon to display within the button.
105
+ * @param {ButtonSize} [props.size='default'] - The size of the button.
106
+ * @param {ButtonType} [props.type='default'] - The type of the button.
107
+ * @param {boolean} [props.disabled] - If `true`, the button is disabled.
108
+ * @param {string} [props.className] - Classes to pass to the button.
109
+ * @param {string|boolean} [props.tooltip] - Tooltip text to display on hover.
110
+ * @param {boolean} props.selected - Whether the button is selected.
111
+ * @param {Function} [props.onChange] - Function to run when the toggle state changes.
112
+ * @param {string} [props.wrapperClassName] - Classes to pass to the tooltip wrapper.
113
+ * @param {Object} [props.tooltipProps] - Props to pass to the tooltip.
114
+ * @param {boolean} [props.hidden] - If `true`, the component is not rendered.
115
+ *
116
+ * @returns {JSX.Element} The Button component.
117
+ *
118
+ * @typedef {'small' | 'default' | 'large'} ButtonSize
119
+ * @typedef {'default' | 'selected' | 'ghost' | 'danger'} ButtonType
120
+ *
121
+ * @example
122
+ * const [selected, setSelected] = useState(false);
123
+ *
124
+ * <ToggleButton
125
+ * selected={selected}
126
+ * onChange={setSelected}
127
+ * icon={icons.myIcon}
128
+ * />
129
+ *
130
+ * <ToggleButton
131
+ * selected={selected}
132
+ * onChange={setSelected}
133
+ * icon={icons.myIcon}
134
+ * >
135
+ * My button
136
+ * </ToggleButton>
137
+ *
138
+ * @preserve
139
+ */
140
+ const ToggleButton2 = (props) => {
141
+ const {
142
+ children,
143
+ icon,
144
+ size = "default",
145
+ type = "default",
146
+ disabled,
147
+ className,
148
+ tooltip: rawTooltip,
149
+ selected,
150
+ onChange,
151
+ wrapperClassName,
152
+ tooltipProps,
153
+ hidden,
154
+ "aria-label": ariaLabel,
155
+ ...other
156
+ } = props;
157
+ if (hidden) {
158
+ return null;
159
+ }
160
+ const componentClasses = cva(
161
+ [
162
+ "es:flex es:items-center es:gap-1",
163
+ "es:transition es:duration-300 es:border es:text-sm",
164
+ "es:any-focus:outline-hidden es:focus-visible:z-10",
165
+ "es:focus-visible:ring-2 es:focus-visible:ring-accent-500/50",
166
+ "es:focus-visible:border-accent-500",
167
+ "es:btn-group-mid:rounded-none",
168
+ "es:btn-group-h-start:rounded-r-none es:btn-group-v-start:rounded-b-none",
169
+ "es:btn-group-h-end:rounded-l-none es:btn-group-v-end:rounded-t-none",
170
+ "es:cursor-pointer",
171
+ icon && children ? "es:justify-start" : "es:justify-center",
172
+ className
173
+ ],
174
+ {
175
+ variants: {
176
+ size: {
177
+ small: "es:icon:size-4.5 es:rounded-md",
178
+ default: "es:icon:size-5.5 es:rounded-lg",
179
+ large: "es:icon:size-6 es:rounded-lg"
180
+ },
181
+ type: {
182
+ default: ["es:bg-radial-[at_50%_125%]", "es:inset-ring es:inset-shadow-xs"],
183
+ ghost: ["es:border-transparent es:text-secondary-700", "es:hover:bg-secondary-100", "es:disabled:border-transparent!"]
184
+ }
185
+ },
186
+ compoundVariants: [
187
+ {
188
+ type: "default",
189
+ disabled: false,
190
+ selected: false,
191
+ class: [
192
+ "es:text-black",
193
+ "es:from-secondary-50 es:to-white",
194
+ "es:border-secondary-300",
195
+ "es:inset-ring-secondary-100",
196
+ "es:inset-shadow-secondary-100/50",
197
+ "es:shadow-xs",
198
+ "es:hover:inset-shadow-secondary-100 es:hover:to-secondary-100 es:hover:inset-ring-secondary-100",
199
+ "es:hover:text-accent-950",
200
+ "es:focus-visible:text-accent-950"
201
+ ]
202
+ },
203
+ {
204
+ type: "default",
205
+ disabled: false,
206
+ selected: true,
207
+ class: [
208
+ "es:text-white es:accent-text-shadow",
209
+ "es:from-accent-500 es:to-accent-600",
210
+ "es:border-accent-700",
211
+ "es:inset-ring es:inset-ring-accent-600",
212
+ "es:inset-shadow-xs es:inset-shadow-accent-400/75",
213
+ "es:focus-visible:border-accent-700",
214
+ "es:focus-visible:inset-ring es:focus-visible:inset-ring-accent-600",
215
+ "es:focus-visible:inset-shadow-xs es:focus-visible:inset-shadow-accent-400",
216
+ "es:shadow-xs es:shadow-accent-600/30"
217
+ ]
218
+ },
219
+ {
220
+ disabled: true,
221
+ class: "es:disabled:border-secondary-300 es:disabled:text-secondary-400 es:border es:shadow-none es:disabled:inset-shadow-transparent es:disabled:inset-ring-0"
222
+ },
223
+ {
224
+ type: "ghost",
225
+ disabled: false,
226
+ selected: true,
227
+ class: ["es:bg-accent-600 es:text-white es:border-accent-600 es:shadow-xs es:shadow-accent-500/25", "es:hover:shadow-accent-600/50"]
228
+ },
229
+ // Sizes.
230
+ {
231
+ size: "small",
232
+ iconOnly: false,
233
+ class: "es:h-7 es:min-w-7"
234
+ },
235
+ {
236
+ size: "small",
237
+ iconOnly: true,
238
+ class: "es:size-7"
239
+ },
240
+ {
241
+ size: "small",
242
+ hasIcon: false,
243
+ iconOnly: false,
244
+ class: "es:px-2"
245
+ },
246
+ {
247
+ size: "small",
248
+ hasIcon: true,
249
+ iconOnly: false,
250
+ class: "es:px-1"
251
+ },
252
+ {
253
+ size: "default",
254
+ iconOnly: false,
255
+ class: "es:h-9 es:min-w-9"
256
+ },
257
+ {
258
+ size: "default",
259
+ iconOnly: true,
260
+ class: "es:size-9"
261
+ },
262
+ {
263
+ size: "default",
264
+ hasIcon: false,
265
+ iconOnly: false,
266
+ class: "es:px-2"
267
+ },
268
+ {
269
+ size: "default",
270
+ hasIcon: true,
271
+ iconOnly: false,
272
+ class: "es:px-1.5"
273
+ },
274
+ {
275
+ size: "large",
276
+ iconOnly: false,
277
+ class: "es:h-10 es:min-w-10"
278
+ },
279
+ {
280
+ size: "large",
281
+ iconOnly: true,
282
+ class: "es:size-10"
283
+ },
284
+ {
285
+ size: "large",
286
+ hasIcon: false,
287
+ iconOnly: false,
288
+ class: "es:px-4"
289
+ },
290
+ {
291
+ size: "large",
292
+ hasIcon: true,
293
+ iconOnly: false,
294
+ class: "es:px-2"
295
+ }
296
+ ],
297
+ defaultVariants: {
298
+ selected: false,
299
+ disabled: false
300
+ }
301
+ }
302
+ );
303
+ let tooltip = rawTooltip;
304
+ if (rawTooltip === true && (ariaLabel == null ? void 0 : ariaLabel.length) > 0) {
305
+ tooltip = ariaLabel;
306
+ }
307
+ const component = /* @__PURE__ */ jsxs(
308
+ $efde0372d7a700fe$export$d2b052e7b4be1756,
309
+ {
310
+ isSelected: selected,
311
+ onChange,
312
+ isDisabled: disabled,
313
+ className: componentClasses({
314
+ disabled,
315
+ selected,
316
+ hasIcon: Boolean(icon),
317
+ iconOnly: Boolean(icon && !children),
318
+ size,
319
+ type
320
+ }),
321
+ ...other,
322
+ children: [
323
+ icon,
324
+ children
325
+ ]
326
+ }
327
+ );
328
+ if (!tooltip) {
329
+ return component;
330
+ }
331
+ return /* @__PURE__ */ jsx(
332
+ Tooltip,
333
+ {
334
+ text: tooltip,
335
+ wrapperClassName,
336
+ ...tooltipProps,
337
+ children: component
338
+ }
339
+ );
340
+ };
341
+ export {
342
+ ToggleButton2 as ToggleButton
343
+ };