@uipath/apollo-wind 2.56.0 → 2.57.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 (77) hide show
  1. package/dist/components/ui/alert-dialog.cjs +7 -6
  2. package/dist/components/ui/alert-dialog.js +7 -6
  3. package/dist/components/ui/code-editors.shared.cjs +323 -0
  4. package/dist/components/ui/code-editors.shared.d.ts +936 -0
  5. package/dist/components/ui/code-editors.shared.js +264 -0
  6. package/dist/components/ui/combobox.cjs +33 -15
  7. package/dist/components/ui/combobox.js +33 -15
  8. package/dist/components/ui/date-picker.cjs +62 -26
  9. package/dist/components/ui/date-picker.js +62 -26
  10. package/dist/components/ui/datetime-picker.cjs +29 -12
  11. package/dist/components/ui/datetime-picker.js +29 -12
  12. package/dist/components/ui/dialog.cjs +2 -1
  13. package/dist/components/ui/dialog.js +2 -1
  14. package/dist/components/ui/dropdown-menu.cjs +12 -8
  15. package/dist/components/ui/dropdown-menu.js +12 -8
  16. package/dist/components/ui/field-actions/ai-assist-action.cjs +121 -0
  17. package/dist/components/ui/field-actions/ai-assist-action.d.ts +21 -0
  18. package/dist/components/ui/field-actions/ai-assist-action.js +84 -0
  19. package/dist/components/ui/field-actions/collapse.cjs +44 -0
  20. package/dist/components/ui/field-actions/collapse.d.ts +6 -0
  21. package/dist/components/ui/field-actions/collapse.js +4 -0
  22. package/dist/components/ui/field-actions/index.cjs +46 -0
  23. package/dist/components/ui/field-actions/index.d.ts +2 -0
  24. package/dist/components/ui/field-actions/index.js +3 -0
  25. package/dist/components/ui/field-actions/insert-variable-action.cjs +94 -0
  26. package/dist/components/ui/field-actions/insert-variable-action.d.ts +22 -0
  27. package/dist/components/ui/field-actions/insert-variable-action.js +57 -0
  28. package/dist/components/ui/field-addons/index.cjs +50 -0
  29. package/dist/components/ui/field-addons/index.d.ts +3 -0
  30. package/dist/components/ui/field-addons/index.js +4 -0
  31. package/dist/components/ui/field-addons/value-mode-indicator.cjs +57 -0
  32. package/dist/components/ui/field-addons/value-mode-indicator.d.ts +13 -0
  33. package/dist/components/ui/field-addons/value-mode-indicator.js +23 -0
  34. package/dist/components/ui/field-addons/value-mode-menu.cjs +149 -0
  35. package/dist/components/ui/field-addons/value-mode-menu.d.ts +69 -0
  36. package/dist/components/ui/field-addons/value-mode-menu.js +112 -0
  37. package/dist/components/ui/field-addons/value-mode-strings.cjs +69 -0
  38. package/dist/components/ui/field-addons/value-mode-strings.d.ts +32 -0
  39. package/dist/components/ui/field-addons/value-mode-strings.js +29 -0
  40. package/dist/components/ui/form-field.cjs +42 -5
  41. package/dist/components/ui/form-field.d.ts +21 -1
  42. package/dist/components/ui/form-field.js +36 -2
  43. package/dist/components/ui/index.cjs +150 -130
  44. package/dist/components/ui/index.d.ts +2 -0
  45. package/dist/components/ui/index.js +2 -0
  46. package/dist/components/ui/input-group-context.cjs +91 -0
  47. package/dist/components/ui/input-group-context.d.ts +69 -0
  48. package/dist/components/ui/input-group-context.js +42 -0
  49. package/dist/components/ui/input-group.cjs +303 -56
  50. package/dist/components/ui/input-group.d.ts +70 -3
  51. package/dist/components/ui/input-group.js +285 -56
  52. package/dist/components/ui/input.cjs +28 -17
  53. package/dist/components/ui/input.js +28 -17
  54. package/dist/components/ui/lockable-value-field/components/field-header.cjs +16 -114
  55. package/dist/components/ui/lockable-value-field/components/field-header.js +14 -112
  56. package/dist/components/ui/lockable-value-field/lockable-value-field.cjs +4 -12
  57. package/dist/components/ui/lockable-value-field/lockable-value-field.js +4 -12
  58. package/dist/components/ui/multi-select.cjs +82 -58
  59. package/dist/components/ui/multi-select.js +84 -60
  60. package/dist/components/ui/popover.cjs +13 -9
  61. package/dist/components/ui/popover.js +13 -9
  62. package/dist/components/ui/select.cjs +89 -27
  63. package/dist/components/ui/select.d.ts +4 -0
  64. package/dist/components/ui/select.js +90 -28
  65. package/dist/components/ui/textarea.cjs +16 -11
  66. package/dist/components/ui/textarea.js +16 -11
  67. package/dist/index.cjs +61 -11
  68. package/dist/index.d.ts +8 -4
  69. package/dist/index.js +5 -3
  70. package/dist/lib/dialog-surface.cjs +36 -0
  71. package/dist/lib/dialog-surface.d.ts +1 -0
  72. package/dist/lib/dialog-surface.js +2 -0
  73. package/dist/styles.css +249 -14
  74. package/package.json +1 -1
  75. package/dist/components/ui/lockable-value-field/components/mode-menu-item.cjs +0 -63
  76. package/dist/components/ui/lockable-value-field/components/mode-menu-item.d.ts +0 -9
  77. package/dist/components/ui/lockable-value-field/components/mode-menu-item.js +0 -29
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ NO_GROUP_DISABLED: ()=>NO_GROUP_DISABLED,
28
+ useInputGroup: ()=>useInputGroup,
29
+ NO_GROUP: ()=>NO_GROUP,
30
+ controlValidation: ()=>controlValidation,
31
+ useControlValidation: ()=>useControlValidation,
32
+ InputGroupContext: ()=>InputGroupContext
33
+ });
34
+ const external_react_namespaceObject = require("react");
35
+ const NO_GROUP = {
36
+ inGroup: false,
37
+ anchor: null
38
+ };
39
+ const NO_GROUP_DISABLED = {
40
+ ...NO_GROUP,
41
+ disabled: true
42
+ };
43
+ const InputGroupContext = (0, external_react_namespaceObject.createContext)(NO_GROUP);
44
+ function useInputGroup() {
45
+ return (0, external_react_namespaceObject.useContext)(InputGroupContext);
46
+ }
47
+ function controlValidation(group, { error, errorId, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, 'aria-errormessage': ariaErrorMessage }) {
48
+ const messageId = group.reportError ? group.error || error ? group.errorId : void 0 : error ? errorId : void 0;
49
+ const invalid = Boolean(error) || group.inGroup && Boolean(group.error || group.invalid);
50
+ const describedBy = [
51
+ ...new Set(`${ariaDescribedBy ?? ''} ${messageId ?? ''}`.split(/\s+/))
52
+ ].filter(Boolean).join(' ');
53
+ return {
54
+ 'aria-invalid': invalid ? true : ariaInvalid,
55
+ 'aria-describedby': describedBy || void 0,
56
+ 'aria-errormessage': messageId ?? ariaErrorMessage
57
+ };
58
+ }
59
+ function useControlValidation(group, input) {
60
+ const { reportError } = group;
61
+ const { error } = input;
62
+ (0, external_react_namespaceObject.useEffect)(()=>{
63
+ if (!reportError) return;
64
+ reportError(error);
65
+ return ()=>reportError(void 0);
66
+ }, [
67
+ reportError,
68
+ error
69
+ ]);
70
+ return {
71
+ aria: controlValidation(group, input),
72
+ ownMessage: !reportError
73
+ };
74
+ }
75
+ exports.InputGroupContext = __webpack_exports__.InputGroupContext;
76
+ exports.NO_GROUP = __webpack_exports__.NO_GROUP;
77
+ exports.NO_GROUP_DISABLED = __webpack_exports__.NO_GROUP_DISABLED;
78
+ exports.controlValidation = __webpack_exports__.controlValidation;
79
+ exports.useControlValidation = __webpack_exports__.useControlValidation;
80
+ exports.useInputGroup = __webpack_exports__.useInputGroup;
81
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
82
+ "InputGroupContext",
83
+ "NO_GROUP",
84
+ "NO_GROUP_DISABLED",
85
+ "controlValidation",
86
+ "useControlValidation",
87
+ "useInputGroup"
88
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
89
+ Object.defineProperty(exports, '__esModule', {
90
+ value: true
91
+ });
@@ -0,0 +1,69 @@
1
+ import { type AriaAttributes, type ReactNode, type RefObject } from 'react';
2
+ /** How tall the group may grow. `row` is the single-row control; the others override only sizing
3
+ * and alignment, so border, fill and rings stay identical across all four. */
4
+ export type InputGroupLayout = 'row' | 'grow' | 'block' | 'fill';
5
+ /** The enclosing InputGroup, as a control inside it sees it. */
6
+ export interface InputGroupState {
7
+ /**
8
+ * Whether the control is the group's control. `false` outside a group, and inside an
9
+ * `InputGroupAddon` or `InputGroupBody`, whose contents are not the group's control.
10
+ */
11
+ inGroup: boolean;
12
+ layout?: InputGroupLayout;
13
+ /** The group's validation message, which the group renders below its box. */
14
+ error?: ReactNode;
15
+ errorId?: string;
16
+ /** The group's `invalid`, which marks its control invalid without a message. */
17
+ invalid?: boolean;
18
+ /** The group's `disabled`. Holds for everything inside it, addons and body included. */
19
+ disabled?: boolean;
20
+ /** The group's box, for a popover opened by the control to anchor to. */
21
+ anchor: RefObject<HTMLElement | null> | null;
22
+ /**
23
+ * Shows the control's own `error` in the group's message slot, below the box, when the group has
24
+ * no `error` of its own. Absent where nothing renders the message for the control.
25
+ */
26
+ reportError?: (error: ReactNode) => void;
27
+ }
28
+ export declare const NO_GROUP: InputGroupState;
29
+ /** Not the group's control, but inside a disabled group. */
30
+ export declare const NO_GROUP_DISABLED: InputGroupState;
31
+ export declare const InputGroupContext: import("react").Context<InputGroupState>;
32
+ /**
33
+ * The enclosing InputGroup. Apollo's controls read it to become the group's control on their own;
34
+ * a custom control that also renders standalone can do the same.
35
+ */
36
+ export declare function useInputGroup(): InputGroupState;
37
+ interface ControlValidationInput {
38
+ /** The control's own `error`. */
39
+ error?: ReactNode;
40
+ /** The id of the control's own message. */
41
+ errorId?: string;
42
+ 'aria-invalid'?: AriaAttributes['aria-invalid'];
43
+ 'aria-describedby'?: string;
44
+ 'aria-errormessage'?: string;
45
+ }
46
+ /**
47
+ * A control's validation attributes. Standalone, they point at the message the control renders
48
+ * below itself. Inside a group they point at the group's message instead, since a message the
49
+ * control rendered would land inside the group's box; the group shows the control's own `error`
50
+ * there when it has none of its own.
51
+ */
52
+ export declare function controlValidation(group: InputGroupState, { error, errorId, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, 'aria-errormessage': ariaErrorMessage, }: ControlValidationInput): {
53
+ 'aria-invalid': boolean | "true" | "false" | "grammar" | "spelling" | undefined;
54
+ 'aria-describedby': string | undefined;
55
+ 'aria-errormessage': string | undefined;
56
+ };
57
+ /**
58
+ * {@link controlValidation} for a control that takes an `error`, and whether it renders that message
59
+ * itself. Inside a group it hands the message to the group, which renders it below the box.
60
+ */
61
+ export declare function useControlValidation(group: InputGroupState, input: ControlValidationInput): {
62
+ aria: {
63
+ 'aria-invalid': boolean | "true" | "false" | "grammar" | "spelling" | undefined;
64
+ 'aria-describedby': string | undefined;
65
+ 'aria-errormessage': string | undefined;
66
+ };
67
+ ownMessage: boolean;
68
+ };
69
+ export {};
@@ -0,0 +1,42 @@
1
+ import { createContext, useContext, useEffect } from "react";
2
+ const NO_GROUP = {
3
+ inGroup: false,
4
+ anchor: null
5
+ };
6
+ const NO_GROUP_DISABLED = {
7
+ ...NO_GROUP,
8
+ disabled: true
9
+ };
10
+ const InputGroupContext = createContext(NO_GROUP);
11
+ function useInputGroup() {
12
+ return useContext(InputGroupContext);
13
+ }
14
+ function controlValidation(group, { error, errorId, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, 'aria-errormessage': ariaErrorMessage }) {
15
+ const messageId = group.reportError ? group.error || error ? group.errorId : void 0 : error ? errorId : void 0;
16
+ const invalid = Boolean(error) || group.inGroup && Boolean(group.error || group.invalid);
17
+ const describedBy = [
18
+ ...new Set(`${ariaDescribedBy ?? ''} ${messageId ?? ''}`.split(/\s+/))
19
+ ].filter(Boolean).join(' ');
20
+ return {
21
+ 'aria-invalid': invalid ? true : ariaInvalid,
22
+ 'aria-describedby': describedBy || void 0,
23
+ 'aria-errormessage': messageId ?? ariaErrorMessage
24
+ };
25
+ }
26
+ function useControlValidation(group, input) {
27
+ const { reportError } = group;
28
+ const { error } = input;
29
+ useEffect(()=>{
30
+ if (!reportError) return;
31
+ reportError(error);
32
+ return ()=>reportError(void 0);
33
+ }, [
34
+ reportError,
35
+ error
36
+ ]);
37
+ return {
38
+ aria: controlValidation(group, input),
39
+ ownMessage: !reportError
40
+ };
41
+ }
42
+ export { InputGroupContext, NO_GROUP, NO_GROUP_DISABLED, controlValidation, useControlValidation, useInputGroup };
@@ -24,136 +24,383 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- InputGroupButton: ()=>InputGroupButton,
27
+ inputGroupVariants: ()=>inputGroupVariants,
28
28
  InputGroupText: ()=>InputGroupText,
29
29
  InputGroupAddon: ()=>InputGroupAddon,
30
+ InputGroupPopoverTrigger: ()=>InputGroupPopoverTrigger,
31
+ InputGroupTextarea: ()=>InputGroupTextarea,
32
+ InputGroupBody: ()=>InputGroupBody,
33
+ InputGroupButton: ()=>InputGroupButton,
34
+ InputGroupRow: ()=>InputGroupRow,
30
35
  InputGroup: ()=>InputGroup,
36
+ InputGroupTrigger: ()=>InputGroupTrigger,
31
37
  InputGroupInput: ()=>InputGroupInput,
32
- InputGroupTextarea: ()=>InputGroupTextarea
38
+ useInputGroup: ()=>external_input_group_context_cjs_namespaceObject.useInputGroup
33
39
  });
34
40
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
35
41
  const external_class_variance_authority_namespaceObject = require("class-variance-authority");
42
+ const external_lucide_react_namespaceObject = require("lucide-react");
36
43
  const external_react_namespaceObject = require("react");
37
44
  const external_button_cjs_namespaceObject = require("./button.cjs");
38
45
  const external_input_cjs_namespaceObject = require("./input.cjs");
46
+ const external_popover_cjs_namespaceObject = require("./popover.cjs");
39
47
  const external_textarea_cjs_namespaceObject = require("./textarea.cjs");
40
48
  const index_cjs_namespaceObject = require("../../lib/index.cjs");
41
49
  const external_form_field_cjs_namespaceObject = require("./form-field.cjs");
42
- const InputGroupValidationContext = /*#__PURE__*/ external_react_namespaceObject.createContext({});
43
- const InputGroup = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, error, errorId, variant = 'default', size = 'default', ...props }, ref)=>{
50
+ const external_input_group_context_cjs_namespaceObject = require("./input-group-context.cjs");
51
+ const ROW_LAYOUTS = [
52
+ 'row',
53
+ 'grow',
54
+ 'fill'
55
+ ];
56
+ const FILLED = [
57
+ 'default',
58
+ 'ghost'
59
+ ];
60
+ const BOXED = [
61
+ 'default',
62
+ 'ghost',
63
+ 'outline'
64
+ ];
65
+ const inputGroupVariants = (0, external_class_variance_authority_namespaceObject.cva)([
66
+ 'group/input-group relative flex w-full items-center gap-2 transition-colors has-[>textarea]:h-auto has-[>textarea]:items-start',
67
+ 'has-[[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[[data-slot=input-group-control]:disabled]:opacity-50'
68
+ ], {
69
+ variants: {
70
+ size: {
71
+ default: 'h-9 rounded-md px-3 py-1 future:h-10 future:rounded-xl future:py-2 has-[>[data-slot=input-group-addon][data-align=inline-end]]:pr-2 future:has-[>[data-slot=input-group-addon][data-align=inline-end]]:pr-2',
72
+ xs: 'h-6 gap-1 rounded px-2'
73
+ },
74
+ layout: {
75
+ row: '',
76
+ grow: 'h-auto min-h-9 future:h-auto future:min-h-10',
77
+ block: 'h-auto flex-col items-stretch gap-0 overflow-hidden p-0 future:h-auto future:p-0',
78
+ fill: 'h-auto min-h-9 items-stretch py-0 pl-0 pr-0 future:h-auto future:min-h-10 future:py-0 future:pl-0 future:pr-0'
79
+ },
80
+ variant: {
81
+ default: 'border border-input bg-transparent future:border-0 future:bg-surface-overlay',
82
+ ghost: 'border-0 bg-surface-overlay',
83
+ outline: 'border border-input bg-transparent shadow-none future:border future:border-input future:bg-transparent future:has-[[data-slot][aria-invalid=true]]:border-error',
84
+ none: 'border-0 bg-transparent shadow-none future:bg-transparent'
85
+ },
86
+ invalid: {
87
+ true: '',
88
+ false: ''
89
+ },
90
+ disabled: {
91
+ true: 'cursor-not-allowed opacity-50',
92
+ false: ''
93
+ }
94
+ },
95
+ compoundVariants: [
96
+ {
97
+ variant: 'none',
98
+ layout: ROW_LAYOUTS,
99
+ class: 'px-0 pr-3'
100
+ },
101
+ {
102
+ layout: ROW_LAYOUTS,
103
+ class: 'has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]_:focus-visible]:ring-2 has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-error has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]_:focus-visible]:ring-error future:has-[[data-slot=input-group-control]:focus-visible]:ring-offset-2 future:has-[[data-slot=input-group-control]:focus-visible]:ring-offset-background future:has-[[data-slot=input-group-control]_:focus-visible]:ring-offset-2 future:has-[[data-slot=input-group-control]_:focus-visible]:ring-offset-background'
104
+ },
105
+ {
106
+ layout: ROW_LAYOUTS,
107
+ invalid: false,
108
+ class: 'has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]_:focus-visible]:ring-ring'
109
+ },
110
+ {
111
+ layout: ROW_LAYOUTS,
112
+ invalid: true,
113
+ class: 'has-[[data-slot=input-group-control]:focus-visible]:ring-error has-[[data-slot=input-group-control]_:focus-visible]:ring-error'
114
+ },
115
+ {
116
+ variant: BOXED,
117
+ class: 'has-[[data-slot][aria-invalid=true]]:border-error'
118
+ },
119
+ {
120
+ variant: BOXED,
121
+ invalid: true,
122
+ class: 'border-error'
123
+ },
124
+ {
125
+ variant: 'outline',
126
+ invalid: true,
127
+ class: 'future:border-error'
128
+ },
129
+ {
130
+ variant: FILLED,
131
+ class: 'has-[[data-slot][aria-invalid=true]]:ring-error/20 future:has-[[data-slot][aria-invalid=true]]:ring-1 future:has-[[data-slot][aria-invalid=true]]:ring-error/40'
132
+ },
133
+ {
134
+ variant: FILLED,
135
+ invalid: true,
136
+ class: 'ring-error/20 future:ring-1 future:ring-error/40'
137
+ },
138
+ {
139
+ variant: FILLED,
140
+ layout: ROW_LAYOUTS,
141
+ class: 'has-[button[data-slot=input-group-control]:not(:disabled):hover]:bg-accent future:has-[button[data-slot=input-group-control]:not(:disabled):hover]:bg-surface-hover'
142
+ }
143
+ ],
144
+ defaultVariants: {
145
+ size: 'default',
146
+ layout: 'row',
147
+ variant: 'default',
148
+ invalid: false,
149
+ disabled: false
150
+ }
151
+ });
152
+ const InputGroup = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, error, errorId, variant = 'default', size = 'default', layout = 'row', invalid, disabled, ...props }, ref)=>{
44
153
  const generatedId = external_react_namespaceObject.useId();
45
154
  const validationId = errorId ?? `input-group-${generatedId.replace(/:/g, '')}-error`;
46
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(InputGroupValidationContext.Provider, {
47
- value: {
155
+ const flagged = Boolean(invalid || error);
156
+ const [controlError, setControlError] = external_react_namespaceObject.useState();
157
+ const boxRef = external_react_namespaceObject.useRef(null);
158
+ const setBox = external_react_namespaceObject.useCallback((node)=>{
159
+ boxRef.current = node;
160
+ if ('function' == typeof ref) ref(node);
161
+ else if (ref) ref.current = node;
162
+ }, [
163
+ ref
164
+ ]);
165
+ const group = external_react_namespaceObject.useMemo(()=>({
166
+ inGroup: true,
167
+ layout,
48
168
  error,
49
- errorId: validationId
50
- },
169
+ errorId: validationId,
170
+ invalid,
171
+ disabled,
172
+ anchor: boxRef,
173
+ reportError: setControlError
174
+ }), [
175
+ layout,
176
+ error,
177
+ validationId,
178
+ invalid,
179
+ disabled
180
+ ]);
181
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_input_group_context_cjs_namespaceObject.InputGroupContext.Provider, {
182
+ value: group,
51
183
  children: [
52
184
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
53
- ref: ref,
185
+ ref: setBox,
54
186
  role: "group",
55
- className: (0, index_cjs_namespaceObject.cn)('group/input-group relative flex w-full items-center gap-2 transition-colors has-[>textarea]:h-auto has-[>textarea]:items-start', 'default' === size && 'h-9 rounded-md px-3 py-1 future:h-10 future:rounded-xl future:py-2', 'xs' === size && 'h-6 gap-1 rounded px-2', 'default' === variant && 'border border-input bg-transparent future:border-0 future:bg-surface-overlay', 'ghost' === variant && 'border-0 bg-surface-overlay', 'has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring future:has-[[data-slot=input-group-control]:focus-visible]:ring-offset-2 future:has-[[data-slot=input-group-control]:focus-visible]:ring-offset-background', 'has-[[data-slot][aria-invalid=true]]:border-error has-[[data-slot][aria-invalid=true]]:ring-error/20 future:has-[[data-slot][aria-invalid=true]]:ring-1 future:has-[[data-slot][aria-invalid=true]]:ring-error/40', error && 'border-error ring-error/20 future:ring-1 future:ring-error/40', 'has-[[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[[data-slot=input-group-control]:disabled]:opacity-50', className),
187
+ "data-slot": "input-group",
188
+ "data-layout": layout,
189
+ "data-invalid": flagged ? '' : void 0,
190
+ "data-disabled": disabled ? '' : void 0,
191
+ "aria-disabled": disabled || void 0,
192
+ className: (0, index_cjs_namespaceObject.cn)(inputGroupVariants({
193
+ size,
194
+ layout,
195
+ variant,
196
+ invalid: flagged,
197
+ disabled
198
+ }), className),
56
199
  ...props
57
200
  }),
58
201
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_form_field_cjs_namespaceObject.FormFieldError, {
59
202
  id: validationId,
60
- children: error
203
+ children: error || controlError
61
204
  })
62
205
  ]
63
206
  });
64
207
  });
65
208
  InputGroup.displayName = 'InputGroup';
66
- const inputGroupAddonVariants = (0, external_class_variance_authority_namespaceObject.cva)('flex h-auto cursor-text items-center justify-center gap-1 text-sm text-muted-foreground select-none group-has-[[data-slot=input-group-control]:disabled]/input-group:opacity-50 [&>svg:not([class*="size-"])]:size-4', {
209
+ const inputGroupAddonVariants = (0, external_class_variance_authority_namespaceObject.cva)('flex h-auto cursor-text empty:hidden items-center justify-center gap-1 text-sm text-muted-foreground select-none group-has-[[data-slot=input-group-control]:disabled]/input-group:opacity-50 [&>svg:not([class*="size-"])]:size-4', {
67
210
  variants: {
68
211
  align: {
69
212
  'inline-start': 'order-first',
70
- 'inline-end': 'order-last'
213
+ 'inline-end': 'order-last ml-auto'
214
+ },
215
+ layout: {
216
+ row: '',
217
+ grow: 'shrink-0 self-stretch max-h-6.5 future:max-h-6',
218
+ block: 'shrink-0 self-stretch max-h-9 future:max-h-10',
219
+ fill: 'shrink-0 self-stretch max-h-9 future:max-h-10'
71
220
  }
72
221
  },
73
222
  defaultVariants: {
74
- align: 'inline-start'
223
+ align: 'inline-start',
224
+ layout: 'row'
75
225
  }
76
226
  });
77
- const InputGroupAddon = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, align = 'inline-start', onClick, ...props }, ref)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
227
+ const ADDON_INTERACTIVE = 'button, a[href], input, textarea, select, [contenteditable], [tabindex]';
228
+ const InputGroupAddon = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, align = 'inline-start', focusControlOnClick = true, onClick, ...props }, ref)=>{
229
+ const { layout, disabled } = (0, external_input_group_context_cjs_namespaceObject.useInputGroup)();
230
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_group_context_cjs_namespaceObject.InputGroupContext.Provider, {
231
+ value: disabled ? external_input_group_context_cjs_namespaceObject.NO_GROUP_DISABLED : external_input_group_context_cjs_namespaceObject.NO_GROUP,
232
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
233
+ ref: ref,
234
+ role: "group",
235
+ "data-slot": "input-group-addon",
236
+ "data-align": align,
237
+ className: (0, index_cjs_namespaceObject.cn)(inputGroupAddonVariants({
238
+ align,
239
+ layout
240
+ }), className),
241
+ onClick: (e)=>{
242
+ const hit = e.target.closest(ADDON_INTERACTIVE);
243
+ if (focusControlOnClick && !(hit && e.currentTarget.contains(hit))) e.currentTarget.parentElement?.querySelector('[data-slot=input-group-control]')?.focus();
244
+ onClick?.(e);
245
+ },
246
+ ...props
247
+ })
248
+ });
249
+ });
250
+ InputGroupAddon.displayName = 'InputGroupAddon';
251
+ const InputGroupRow = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
78
252
  ref: ref,
79
- role: "group",
80
- "data-slot": "input-group-addon",
81
- "data-align": align,
82
- className: (0, index_cjs_namespaceObject.cn)(inputGroupAddonVariants({
83
- align
84
- }), className),
85
- onClick: (e)=>{
86
- if (!e.target.closest('button')) e.currentTarget.parentElement?.querySelector('input, textarea')?.focus();
87
- onClick?.(e);
88
- },
253
+ "data-slot": "input-group-row",
254
+ className: (0, index_cjs_namespaceObject.cn)('flex min-h-9 min-w-0 items-stretch gap-2 px-3 has-[>[data-slot=input-group-addon][data-align=inline-end]]:pr-2 future:min-h-10', 'rounded-[inherit] has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-inset has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]_:focus-visible]:ring-2 has-[[data-slot=input-group-control]_:focus-visible]:ring-inset has-[[data-slot=input-group-control]_:focus-visible]:ring-ring has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-error has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]_:focus-visible]:ring-error', className),
89
255
  ...props
90
256
  }));
91
- InputGroupAddon.displayName = 'InputGroupAddon';
92
- const InputGroupButton = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, type = 'button', variant = 'ghost', size = 'xs', ...props }, ref)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_button_cjs_namespaceObject.Button, {
257
+ InputGroupRow.displayName = 'InputGroupRow';
258
+ const InputGroupBody = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, ...props }, ref)=>{
259
+ const { disabled } = (0, external_input_group_context_cjs_namespaceObject.useInputGroup)();
260
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_group_context_cjs_namespaceObject.InputGroupContext.Provider, {
261
+ value: disabled ? external_input_group_context_cjs_namespaceObject.NO_GROUP_DISABLED : external_input_group_context_cjs_namespaceObject.NO_GROUP,
262
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
263
+ ref: ref,
264
+ "data-slot": "input-group-body",
265
+ className: (0, index_cjs_namespaceObject.cn)('border-t empty:border-t-0 has-[>[hidden]]:border-t-0', className),
266
+ ...props
267
+ })
268
+ });
269
+ });
270
+ InputGroupBody.displayName = 'InputGroupBody';
271
+ const InputGroupButton = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, type = 'button', variant = 'ghost', size = 'xs', disabled, ...props }, ref)=>{
272
+ const group = (0, external_input_group_context_cjs_namespaceObject.useInputGroup)();
273
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_button_cjs_namespaceObject.Button, {
93
274
  ref: ref,
94
275
  type: type,
95
276
  variant: variant,
96
277
  size: size,
278
+ disabled: disabled || group.disabled,
97
279
  className: (0, index_cjs_namespaceObject.cn)('gap-1', className),
98
280
  ...props
99
- }));
281
+ });
282
+ });
100
283
  InputGroupButton.displayName = 'InputGroupButton';
284
+ const inputGroupTriggerVariants = (0, external_class_variance_authority_namespaceObject.cva)('flex w-full min-w-0 flex-1 gap-2 rounded-none border-0 bg-transparent text-left font-normal shadow-none hover:bg-transparent focus-visible:ring-offset-0 future:text-foreground future:hover:text-foreground', {
285
+ variants: {
286
+ layout: {
287
+ row: 'h-full min-h-5 justify-between p-0 focus-visible:ring-0',
288
+ block: 'h-auto min-h-9 justify-start px-0 focus-visible:ring-0 future:min-h-10'
289
+ }
290
+ },
291
+ defaultVariants: {
292
+ layout: 'row'
293
+ }
294
+ });
295
+ const InputGroupTrigger = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, type = 'button', disabled, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, 'aria-errormessage': ariaErrorMessage, ...props }, ref)=>{
296
+ const group = (0, external_input_group_context_cjs_namespaceObject.useInputGroup)();
297
+ const { layout } = group;
298
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_button_cjs_namespaceObject.Button, {
299
+ ref: ref,
300
+ type: type,
301
+ variant: "ghost",
302
+ disabled: disabled || group.disabled,
303
+ className: (0, index_cjs_namespaceObject.cn)(inputGroupTriggerVariants({
304
+ layout: 'block' === layout ? 'block' : 'row'
305
+ }), className),
306
+ ...props,
307
+ ...(0, external_input_group_context_cjs_namespaceObject.controlValidation)(group, {
308
+ 'aria-invalid': ariaInvalid,
309
+ 'aria-describedby': ariaDescribedBy,
310
+ 'aria-errormessage': ariaErrorMessage
311
+ }),
312
+ "data-slot": "input-group-control"
313
+ });
314
+ });
315
+ InputGroupTrigger.displayName = 'InputGroupTrigger';
316
+ function isEmpty(children) {
317
+ return null == children || false === children || '' === children;
318
+ }
319
+ const InputGroupPopoverTrigger = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ children, placeholder, caret = true, ...props }, ref)=>{
320
+ const { anchor } = (0, external_input_group_context_cjs_namespaceObject.useInputGroup)();
321
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
322
+ children: [
323
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_popover_cjs_namespaceObject.PopoverTrigger, {
324
+ asChild: true,
325
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(InputGroupTrigger, {
326
+ ref: ref,
327
+ ...props,
328
+ children: [
329
+ isEmpty(children) ? void 0 !== placeholder && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
330
+ "data-slot": "input-group-placeholder",
331
+ className: "truncate text-muted-foreground",
332
+ children: placeholder
333
+ }) : children,
334
+ caret && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronDown, {
335
+ className: "ml-auto shrink-0 text-muted-foreground"
336
+ })
337
+ ]
338
+ })
339
+ }),
340
+ anchor && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_popover_cjs_namespaceObject.PopoverAnchor, {
341
+ virtualRef: anchor
342
+ })
343
+ ]
344
+ });
345
+ });
346
+ InputGroupPopoverTrigger.displayName = 'InputGroupPopoverTrigger';
101
347
  const InputGroupText = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
102
348
  ref: ref,
103
349
  className: (0, index_cjs_namespaceObject.cn)('flex items-center gap-1 text-sm text-muted-foreground [&>svg:not([class*="size-"])]:size-4', className),
104
350
  ...props
105
351
  }));
106
352
  InputGroupText.displayName = 'InputGroupText';
107
- const InputGroupInput = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ 'aria-describedby': ariaDescribedBy, 'aria-errormessage': ariaErrorMessage, 'aria-invalid': ariaInvalid, className, ...props }, ref)=>{
108
- const validation = external_react_namespaceObject.useContext(InputGroupValidationContext);
109
- const describedBy = [
110
- ariaDescribedBy,
111
- validation.error ? validation.errorId : void 0
112
- ].filter(Boolean).join(' ');
113
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
114
- className: "min-w-0 flex-1",
353
+ const FORCED_GROUP = {
354
+ ...external_input_group_context_cjs_namespaceObject.NO_GROUP,
355
+ inGroup: true
356
+ };
357
+ const InputGroupInput = /*#__PURE__*/ external_react_namespaceObject.forwardRef((props, ref)=>{
358
+ const group = (0, external_input_group_context_cjs_namespaceObject.useInputGroup)();
359
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_group_context_cjs_namespaceObject.InputGroupContext.Provider, {
360
+ value: group.inGroup ? group : FORCED_GROUP,
115
361
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_cjs_namespaceObject.Input, {
116
362
  ref: ref,
117
- "data-slot": "input-group-control",
118
- "aria-describedby": describedBy || void 0,
119
- "aria-errormessage": validation.error ? validation.errorId : ariaErrorMessage,
120
- "aria-invalid": validation.error ? true : ariaInvalid,
121
- className: (0, index_cjs_namespaceObject.cn)('h-full w-full rounded-none !border-0 !ring-0 bg-transparent p-0 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 future:h-full future:rounded-none future:border-0 future:bg-transparent future:p-0 future:focus-visible:ring-offset-0', className),
122
363
  ...props
123
364
  })
124
365
  });
125
366
  });
126
367
  InputGroupInput.displayName = 'InputGroupInput';
127
- const InputGroupTextarea = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ 'aria-describedby': ariaDescribedBy, 'aria-errormessage': ariaErrorMessage, 'aria-invalid': ariaInvalid, className, ...props }, ref)=>{
128
- const validation = external_react_namespaceObject.useContext(InputGroupValidationContext);
129
- const describedBy = [
130
- ariaDescribedBy,
131
- validation.error ? validation.errorId : void 0
132
- ].filter(Boolean).join(' ');
133
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_textarea_cjs_namespaceObject.Textarea, {
134
- ref: ref,
135
- "data-slot": "input-group-control",
136
- "aria-describedby": describedBy || void 0,
137
- "aria-errormessage": validation.error ? validation.errorId : ariaErrorMessage,
138
- "aria-invalid": validation.error ? true : ariaInvalid,
139
- className: (0, index_cjs_namespaceObject.cn)('min-h-0 flex-1 resize-none rounded-none !border-0 !ring-0 bg-transparent p-0 py-2 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 future:rounded-none future:border-0 future:bg-transparent future:focus-visible:ring-offset-0', className),
140
- ...props
368
+ const InputGroupTextarea = /*#__PURE__*/ external_react_namespaceObject.forwardRef((props, ref)=>{
369
+ const group = (0, external_input_group_context_cjs_namespaceObject.useInputGroup)();
370
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_group_context_cjs_namespaceObject.InputGroupContext.Provider, {
371
+ value: group.inGroup ? group : FORCED_GROUP,
372
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_textarea_cjs_namespaceObject.Textarea, {
373
+ ref: ref,
374
+ ...props
375
+ })
141
376
  });
142
377
  });
143
378
  InputGroupTextarea.displayName = 'InputGroupTextarea';
144
379
  exports.InputGroup = __webpack_exports__.InputGroup;
145
380
  exports.InputGroupAddon = __webpack_exports__.InputGroupAddon;
381
+ exports.InputGroupBody = __webpack_exports__.InputGroupBody;
146
382
  exports.InputGroupButton = __webpack_exports__.InputGroupButton;
147
383
  exports.InputGroupInput = __webpack_exports__.InputGroupInput;
384
+ exports.InputGroupPopoverTrigger = __webpack_exports__.InputGroupPopoverTrigger;
385
+ exports.InputGroupRow = __webpack_exports__.InputGroupRow;
148
386
  exports.InputGroupText = __webpack_exports__.InputGroupText;
149
387
  exports.InputGroupTextarea = __webpack_exports__.InputGroupTextarea;
388
+ exports.InputGroupTrigger = __webpack_exports__.InputGroupTrigger;
389
+ exports.inputGroupVariants = __webpack_exports__.inputGroupVariants;
390
+ exports.useInputGroup = __webpack_exports__.useInputGroup;
150
391
  for(var __rspack_i in __webpack_exports__)if (-1 === [
151
392
  "InputGroup",
152
393
  "InputGroupAddon",
394
+ "InputGroupBody",
153
395
  "InputGroupButton",
154
396
  "InputGroupInput",
397
+ "InputGroupPopoverTrigger",
398
+ "InputGroupRow",
155
399
  "InputGroupText",
156
- "InputGroupTextarea"
400
+ "InputGroupTextarea",
401
+ "InputGroupTrigger",
402
+ "inputGroupVariants",
403
+ "useInputGroup"
157
404
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
158
405
  Object.defineProperty(exports, '__esModule', {
159
406
  value: true