@uipath/apollo-wind 2.31.0 → 2.32.0

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 (38) hide show
  1. package/dist/components/custom/panel-flow.cjs +3 -3
  2. package/dist/components/custom/panel-flow.d.ts +2 -0
  3. package/dist/components/custom/panel-flow.js +3 -3
  4. package/dist/components/ui/file-upload.cjs +22 -16
  5. package/dist/components/ui/file-upload.d.ts +19 -1
  6. package/dist/components/ui/file-upload.js +22 -16
  7. package/dist/components/ui/index.cjs +18 -18
  8. package/dist/components/ui/lockable-value-field/components/field-header.cjs +327 -0
  9. package/dist/components/ui/lockable-value-field/components/field-header.d.ts +19 -0
  10. package/dist/components/ui/lockable-value-field/components/field-header.js +293 -0
  11. package/dist/components/ui/lockable-value-field/components/lock-toggle-button.cjs +67 -0
  12. package/dist/components/ui/lockable-value-field/components/lock-toggle-button.d.ts +9 -0
  13. package/dist/components/ui/lockable-value-field/components/lock-toggle-button.js +33 -0
  14. package/dist/components/ui/lockable-value-field/components/mode-menu-item.cjs +63 -0
  15. package/dist/components/ui/lockable-value-field/components/mode-menu-item.d.ts +9 -0
  16. package/dist/components/ui/lockable-value-field/components/mode-menu-item.js +29 -0
  17. package/dist/components/ui/lockable-value-field/index.cjs +43 -0
  18. package/dist/components/ui/lockable-value-field/index.d.ts +3 -0
  19. package/dist/components/ui/lockable-value-field/index.js +3 -0
  20. package/dist/components/ui/lockable-value-field/lockable-value-field.cjs +264 -0
  21. package/dist/components/ui/lockable-value-field/lockable-value-field.d.ts +14 -0
  22. package/dist/components/ui/lockable-value-field/lockable-value-field.js +230 -0
  23. package/dist/components/ui/lockable-value-field/types.cjs +99 -0
  24. package/dist/components/ui/lockable-value-field/types.d.ts +78 -0
  25. package/dist/components/ui/lockable-value-field/types.js +62 -0
  26. package/dist/components/ui/lockable-value-field/utils.cjs +117 -0
  27. package/dist/components/ui/lockable-value-field/utils.d.ts +24 -0
  28. package/dist/components/ui/lockable-value-field/utils.js +68 -0
  29. package/dist/components/ui/multi-select.cjs +7 -3
  30. package/dist/components/ui/multi-select.d.ts +4 -0
  31. package/dist/components/ui/multi-select.js +7 -3
  32. package/dist/components/ui/search.cjs +1 -1
  33. package/dist/components/ui/search.js +1 -1
  34. package/dist/index.cjs +28 -18
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.js +2 -1
  37. package/dist/styles.css +71 -0
  38. package/package.json +2 -2
@@ -0,0 +1,78 @@
1
+ import { type LucideIcon } from 'lucide-react';
2
+ import type { ReactNode } from 'react';
3
+ export type LockableValueFieldMode = 'fixed' | 'expression';
4
+ export type LockableFieldType = 'string' | 'integer' | 'date' | 'boolean' | 'single-select' | 'multi-select' | 'file';
5
+ interface FieldTypeMeta {
6
+ label: string;
7
+ icon: LucideIcon;
8
+ supportsExpression: boolean;
9
+ fixedLabel: string;
10
+ fixedDescription: string;
11
+ }
12
+ export declare const FIELD_TYPE_META: Record<LockableFieldType, FieldTypeMeta>;
13
+ export declare const FIELD_TYPE_ORDER: LockableFieldType[];
14
+ export interface LockableValueFieldOption {
15
+ label: string;
16
+ value: string;
17
+ }
18
+ export interface LockableValueFieldProps {
19
+ /** Current field value. Encoding depends on fieldType (e.g. multi-select is a JSON array string). */
20
+ value?: string;
21
+ /** Called when the user edits the value (only fires while unlocked). */
22
+ onValueChange?: (value: string) => void;
23
+ /** Called when the active value control loses focus. */
24
+ onValueBlur?: () => void;
25
+ /** Whether the field is read-only. Defaults to true. */
26
+ locked?: boolean;
27
+ /** Called when the user toggles the lock. */
28
+ onLockedChange?: (locked: boolean) => void;
29
+ /** Fixed value vs. JS expression. Defaults to 'fixed'. Ignored for types that don't support expressions. */
30
+ mode?: LockableValueFieldMode;
31
+ /** Called when the user switches modes. */
32
+ onModeChange?: (mode: LockableValueFieldMode) => void;
33
+ /**
34
+ * Optional expression editor used in place of the built-in monospace input.
35
+ * Consumers can use this to supply a syntax-aware editor such as Monaco.
36
+ */
37
+ renderExpressionEditor?: (props: {
38
+ id: string;
39
+ value: string;
40
+ onValueChange?: (value: string) => void;
41
+ onBlur?: () => void;
42
+ readOnly: boolean;
43
+ placeholder: string;
44
+ fieldType: LockableFieldType;
45
+ }) => ReactNode;
46
+ /** The field's data type. Defaults to 'string'. Determines which control renders the value. */
47
+ fieldType?: LockableFieldType;
48
+ /** Called when the user switches the field type. */
49
+ onFieldTypeChange?: (fieldType: LockableFieldType) => void;
50
+ /** Shows a required-field asterisk next to the default label. Ignored when `label` is provided. */
51
+ required?: boolean;
52
+ /** Called when the user toggles required/optional. Renders the Required switch when provided. */
53
+ onRequiredChange?: (required: boolean) => void;
54
+ /** Overrides the default mode-based label (e.g. a field name instead of "String value"). */
55
+ label?: ReactNode;
56
+ /** Accessible name for the file-upload dropzone. Defaults to a string `label`, then the computed field label. */
57
+ fileUploadAriaLabel?: string;
58
+ /** Extra content rendered after the built-in AI assist / Insert variable buttons (e.g. a delete button). */
59
+ headerActions?: ReactNode;
60
+ /** Forces the header row into its narrow-container icon-only layout, regardless of actual width. For demos/comparisons. */
61
+ compact?: boolean;
62
+ /** Whether the field-type, AI-assist, and insert-variable controls are always shown or only on hover. Defaults to 'visible'. */
63
+ controlsVisibility?: 'visible' | 'hover';
64
+ /** Whether the AI-assist and Insert-variable actions render at all. Set to false for read-only reviewer contexts where field configuration isn't editable. Defaults to true. */
65
+ showFieldActions?: boolean;
66
+ /** Options for 'single-select' / 'multi-select' field types. Defaults to a small set of demo options. */
67
+ options?: LockableValueFieldOption[];
68
+ /** Called with the entered prompt when the user clicks Generate in the AI-assist popover. */
69
+ onGenerateWithAi?: (prompt: string) => void;
70
+ /**
71
+ * Variables offered by the "Insert variable" popover; clicking one appends its value to the
72
+ * current value. The button is disabled when this is empty (the default).
73
+ */
74
+ variables?: LockableValueFieldOption[];
75
+ id?: string;
76
+ className?: string;
77
+ }
78
+ export {};
@@ -0,0 +1,62 @@
1
+ import { ALargeSmall, Calendar, File, Hash, List, ListChecks, ToggleLeft } from "lucide-react";
2
+ const FIELD_TYPE_META = {
3
+ string: {
4
+ label: 'String',
5
+ icon: ALargeSmall,
6
+ supportsExpression: true,
7
+ fixedLabel: 'Fixed value',
8
+ fixedDescription: 'Use a literal string value'
9
+ },
10
+ integer: {
11
+ label: 'Integer',
12
+ icon: Hash,
13
+ supportsExpression: true,
14
+ fixedLabel: 'Fixed value',
15
+ fixedDescription: 'Use a literal number value'
16
+ },
17
+ date: {
18
+ label: 'Date',
19
+ icon: Calendar,
20
+ supportsExpression: true,
21
+ fixedLabel: 'Fixed date',
22
+ fixedDescription: 'Use a literal date value'
23
+ },
24
+ boolean: {
25
+ label: 'Boolean',
26
+ icon: ToggleLeft,
27
+ supportsExpression: true,
28
+ fixedLabel: 'Fixed value',
29
+ fixedDescription: 'Use a literal true or false value'
30
+ },
31
+ 'single-select': {
32
+ label: 'Single select',
33
+ icon: List,
34
+ supportsExpression: false,
35
+ fixedLabel: 'Fixed value',
36
+ fixedDescription: 'Choose one option'
37
+ },
38
+ 'multi-select': {
39
+ label: 'Multi select',
40
+ icon: ListChecks,
41
+ supportsExpression: false,
42
+ fixedLabel: 'Fixed value',
43
+ fixedDescription: 'Choose one or more options'
44
+ },
45
+ file: {
46
+ label: 'File',
47
+ icon: File,
48
+ supportsExpression: false,
49
+ fixedLabel: 'Fixed value',
50
+ fixedDescription: 'Upload a file'
51
+ }
52
+ };
53
+ const FIELD_TYPE_ORDER = [
54
+ 'string',
55
+ 'integer',
56
+ 'date',
57
+ 'boolean',
58
+ 'single-select',
59
+ 'multi-select',
60
+ 'file'
61
+ ];
62
+ export { FIELD_TYPE_META, FIELD_TYPE_ORDER };
@@ -0,0 +1,117 @@
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
+ DEFAULT_SELECT_OPTIONS: ()=>DEFAULT_SELECT_OPTIONS,
28
+ formatDateValue: ()=>formatDateValue,
29
+ getLockedDisplayValue: ()=>getLockedDisplayValue,
30
+ parseDateValue: ()=>parseDateValue,
31
+ parseListValue: ()=>parseListValue,
32
+ toDateOnlyString: ()=>toDateOnlyString
33
+ });
34
+ const DEFAULT_SELECT_OPTIONS = [
35
+ {
36
+ label: 'Option 1',
37
+ value: 'option-1'
38
+ },
39
+ {
40
+ label: 'Option 2',
41
+ value: 'option-2'
42
+ },
43
+ {
44
+ label: 'Option 3',
45
+ value: 'option-3'
46
+ }
47
+ ];
48
+ function parseListValue(value) {
49
+ try {
50
+ const parsed = JSON.parse(value);
51
+ return Array.isArray(parsed) ? parsed.filter((v)=>'string' == typeof v) : [];
52
+ } catch {
53
+ return [];
54
+ }
55
+ }
56
+ const DATE_ONLY_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
57
+ function parseDateValue(value) {
58
+ if (DATE_ONLY_PATTERN.test(value)) {
59
+ const [year, month, day] = value.split('-').map(Number);
60
+ const date = new Date(year, month - 1, day);
61
+ const isValid = !Number.isNaN(date.getTime()) && date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day;
62
+ return isValid ? date : void 0;
63
+ }
64
+ const date = new Date(value);
65
+ return Number.isNaN(date.getTime()) ? void 0 : date;
66
+ }
67
+ function toDateOnlyString(date) {
68
+ const year = date.getFullYear();
69
+ const month = String(date.getMonth() + 1).padStart(2, '0');
70
+ const day = String(date.getDate()).padStart(2, '0');
71
+ return `${year}-${month}-${day}`;
72
+ }
73
+ function formatDateValue(value) {
74
+ const date = parseDateValue(value);
75
+ return date ? date.toLocaleDateString(void 0, {
76
+ year: 'numeric',
77
+ month: 'long',
78
+ day: 'numeric'
79
+ }) : value;
80
+ }
81
+ function getLockedDisplayValue(fieldType, value, options) {
82
+ switch(fieldType){
83
+ case 'boolean':
84
+ if ('true' === value) return 'True';
85
+ if ('false' === value) return 'False';
86
+ return '';
87
+ case 'date':
88
+ return value ? formatDateValue(value) : '';
89
+ case 'single-select':
90
+ return options.find((option)=>option.value === value)?.label ?? value;
91
+ case 'multi-select':
92
+ {
93
+ const parsed = parseListValue(value);
94
+ if (0 === parsed.length && value && '[]' !== value) return value;
95
+ return parsed.map((v)=>options.find((option)=>option.value === v)?.label ?? v).join(', ');
96
+ }
97
+ default:
98
+ return value;
99
+ }
100
+ }
101
+ exports.DEFAULT_SELECT_OPTIONS = __webpack_exports__.DEFAULT_SELECT_OPTIONS;
102
+ exports.formatDateValue = __webpack_exports__.formatDateValue;
103
+ exports.getLockedDisplayValue = __webpack_exports__.getLockedDisplayValue;
104
+ exports.parseDateValue = __webpack_exports__.parseDateValue;
105
+ exports.parseListValue = __webpack_exports__.parseListValue;
106
+ exports.toDateOnlyString = __webpack_exports__.toDateOnlyString;
107
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
108
+ "DEFAULT_SELECT_OPTIONS",
109
+ "formatDateValue",
110
+ "getLockedDisplayValue",
111
+ "parseDateValue",
112
+ "parseListValue",
113
+ "toDateOnlyString"
114
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
115
+ Object.defineProperty(exports, '__esModule', {
116
+ value: true
117
+ });
@@ -0,0 +1,24 @@
1
+ import type { LockableFieldType, LockableValueFieldOption } from './types';
2
+ export declare const DEFAULT_SELECT_OPTIONS: LockableValueFieldOption[];
3
+ export declare function parseListValue(value: string): string[];
4
+ /**
5
+ * Parses a date field's stored value, returning undefined for empty or invalid input.
6
+ *
7
+ * Date-only strings (`YYYY-MM-DD`) are parsed as a local date instead of going through
8
+ * `new Date(string)` directly -- the latter treats date-only strings as UTC midnight,
9
+ * which rolls over to the previous day once formatted in a negative-UTC-offset
10
+ * timezone. Full ISO timestamps (which already carry explicit time/zone info) go
11
+ * through `new Date` as-is.
12
+ */
13
+ export declare function parseDateValue(value: string): Date | undefined;
14
+ /** Formats a Date as a local `YYYY-MM-DD` string, the inverse of parseDateValue's date-only path. */
15
+ export declare function toDateOnlyString(date: Date): string;
16
+ /** Formats a date field's value for display, falling back to the raw value if it isn't a valid date. */
17
+ export declare function formatDateValue(value: string): string;
18
+ /**
19
+ * Computes the plain-text shown in place of the real control once a field is locked.
20
+ * Boolean/single-select/multi-select resolve their stored value to a display label;
21
+ * everything else (including an invalid date, so the component never throws on
22
+ * external input) falls back to the raw value.
23
+ */
24
+ export declare function getLockedDisplayValue(fieldType: LockableFieldType, value: string, options: LockableValueFieldOption[]): string;
@@ -0,0 +1,68 @@
1
+ const DEFAULT_SELECT_OPTIONS = [
2
+ {
3
+ label: 'Option 1',
4
+ value: 'option-1'
5
+ },
6
+ {
7
+ label: 'Option 2',
8
+ value: 'option-2'
9
+ },
10
+ {
11
+ label: 'Option 3',
12
+ value: 'option-3'
13
+ }
14
+ ];
15
+ function parseListValue(value) {
16
+ try {
17
+ const parsed = JSON.parse(value);
18
+ return Array.isArray(parsed) ? parsed.filter((v)=>'string' == typeof v) : [];
19
+ } catch {
20
+ return [];
21
+ }
22
+ }
23
+ const DATE_ONLY_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
24
+ function parseDateValue(value) {
25
+ if (DATE_ONLY_PATTERN.test(value)) {
26
+ const [year, month, day] = value.split('-').map(Number);
27
+ const date = new Date(year, month - 1, day);
28
+ const isValid = !Number.isNaN(date.getTime()) && date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day;
29
+ return isValid ? date : void 0;
30
+ }
31
+ const date = new Date(value);
32
+ return Number.isNaN(date.getTime()) ? void 0 : date;
33
+ }
34
+ function toDateOnlyString(date) {
35
+ const year = date.getFullYear();
36
+ const month = String(date.getMonth() + 1).padStart(2, '0');
37
+ const day = String(date.getDate()).padStart(2, '0');
38
+ return `${year}-${month}-${day}`;
39
+ }
40
+ function formatDateValue(value) {
41
+ const date = parseDateValue(value);
42
+ return date ? date.toLocaleDateString(void 0, {
43
+ year: 'numeric',
44
+ month: 'long',
45
+ day: 'numeric'
46
+ }) : value;
47
+ }
48
+ function getLockedDisplayValue(fieldType, value, options) {
49
+ switch(fieldType){
50
+ case 'boolean':
51
+ if ('true' === value) return 'True';
52
+ if ('false' === value) return 'False';
53
+ return '';
54
+ case 'date':
55
+ return value ? formatDateValue(value) : '';
56
+ case 'single-select':
57
+ return options.find((option)=>option.value === value)?.label ?? value;
58
+ case 'multi-select':
59
+ {
60
+ const parsed = parseListValue(value);
61
+ if (0 === parsed.length && value && '[]' !== value) return value;
62
+ return parsed.map((v)=>options.find((option)=>option.value === v)?.label ?? v).join(', ');
63
+ }
64
+ default:
65
+ return value;
66
+ }
67
+ }
68
+ export { DEFAULT_SELECT_OPTIONS, formatDateValue, getLockedDisplayValue, parseDateValue, parseListValue, toDateOnlyString };
@@ -35,7 +35,7 @@ const external_checkbox_cjs_namespaceObject = require("./checkbox.cjs");
35
35
  const external_command_cjs_namespaceObject = require("./command.cjs");
36
36
  const external_popover_cjs_namespaceObject = require("./popover.cjs");
37
37
  const index_cjs_namespaceObject = require("../../lib/index.cjs");
38
- const MultiSelect = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ options, selected, onChange, placeholder = 'Select items...', emptyMessage = 'No items found.', className, maxSelected, disabled = false, searchPlaceholder = 'Search...', clearAllText }, ref)=>{
38
+ const MultiSelect = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ id, options, selected, onChange, placeholder = 'Select items...', emptyMessage = 'No items found.', className, maxSelected, disabled = false, searchPlaceholder = 'Search...', clearAllText, onBlur }, ref)=>{
39
39
  const [open, setOpen] = external_react_namespaceObject.useState(false);
40
40
  const handleUnselect = (value)=>{
41
41
  onChange(selected.filter((s)=>s !== value));
@@ -58,15 +58,19 @@ const MultiSelect = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ o
58
58
  className: (0, index_cjs_namespaceObject.cn)('relative', className),
59
59
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_popover_cjs_namespaceObject.Popover, {
60
60
  open: open,
61
- onOpenChange: setOpen,
61
+ onOpenChange: (nextOpen)=>{
62
+ setOpen(nextOpen);
63
+ if (!nextOpen && open) onBlur?.();
64
+ },
62
65
  children: [
63
66
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_popover_cjs_namespaceObject.PopoverTrigger, {
64
67
  asChild: true,
65
68
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_button_cjs_namespaceObject.Button, {
69
+ id: id,
66
70
  variant: "outline",
67
71
  role: "combobox",
68
72
  "aria-expanded": open,
69
- "aria-label": selected.length > 0 ? `${selected.length} items selected` : placeholder,
73
+ "aria-label": id ? void 0 : selected.length > 0 ? `${selected.length} ${1 === selected.length ? 'item' : 'items'} selected` : placeholder,
70
74
  className: (0, index_cjs_namespaceObject.cn)('w-full justify-between future:rounded-xl future:border-0 future:bg-surface-overlay future:hover:bg-surface-hover future:font-normal future:text-muted-foreground', selected.length > 0 ? 'h-auto min-h-10' : 'h-10'),
71
75
  disabled: disabled,
72
76
  children: [
@@ -1,5 +1,7 @@
1
1
  import * as React from 'react';
2
2
  export interface MultiSelectProps {
3
+ /** Applied to the trigger button, so a `<label htmlFor>` pointing at it associates correctly. */
4
+ id?: string;
3
5
  options: {
4
6
  label: string;
5
7
  value: string;
@@ -13,6 +15,8 @@ export interface MultiSelectProps {
13
15
  disabled?: boolean;
14
16
  searchPlaceholder?: string;
15
17
  clearAllText?: string | ((count: number) => string);
18
+ /** Called when the multi-select popover closes after being opened. */
19
+ onBlur?: () => void;
16
20
  }
17
21
  declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLDivElement>>;
18
22
  export { MultiSelect };
@@ -7,7 +7,7 @@ import { Checkbox } from "./checkbox.js";
7
7
  import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "./command.js";
8
8
  import { Popover, PopoverContent, PopoverTrigger } from "./popover.js";
9
9
  import { cn } from "../../lib/index.js";
10
- const MultiSelect = /*#__PURE__*/ forwardRef(({ options, selected, onChange, placeholder = 'Select items...', emptyMessage = 'No items found.', className, maxSelected, disabled = false, searchPlaceholder = 'Search...', clearAllText }, ref)=>{
10
+ const MultiSelect = /*#__PURE__*/ forwardRef(({ id, options, selected, onChange, placeholder = 'Select items...', emptyMessage = 'No items found.', className, maxSelected, disabled = false, searchPlaceholder = 'Search...', clearAllText, onBlur }, ref)=>{
11
11
  const [open, setOpen] = useState(false);
12
12
  const handleUnselect = (value)=>{
13
13
  onChange(selected.filter((s)=>s !== value));
@@ -30,15 +30,19 @@ const MultiSelect = /*#__PURE__*/ forwardRef(({ options, selected, onChange, pla
30
30
  className: cn('relative', className),
31
31
  children: /*#__PURE__*/ jsxs(Popover, {
32
32
  open: open,
33
- onOpenChange: setOpen,
33
+ onOpenChange: (nextOpen)=>{
34
+ setOpen(nextOpen);
35
+ if (!nextOpen && open) onBlur?.();
36
+ },
34
37
  children: [
35
38
  /*#__PURE__*/ jsx(PopoverTrigger, {
36
39
  asChild: true,
37
40
  children: /*#__PURE__*/ jsxs(Button, {
41
+ id: id,
38
42
  variant: "outline",
39
43
  role: "combobox",
40
44
  "aria-expanded": open,
41
- "aria-label": selected.length > 0 ? `${selected.length} items selected` : placeholder,
45
+ "aria-label": id ? void 0 : selected.length > 0 ? `${selected.length} ${1 === selected.length ? 'item' : 'items'} selected` : placeholder,
42
46
  className: cn('w-full justify-between future:rounded-xl future:border-0 future:bg-surface-overlay future:hover:bg-surface-hover future:font-normal future:text-muted-foreground', selected.length > 0 ? 'h-auto min-h-10' : 'h-10'),
43
47
  disabled: disabled,
44
48
  children: [
@@ -52,7 +52,7 @@ const Search = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ classN
52
52
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_group_cjs_namespaceObject.InputGroupInput, {
53
53
  ref: ref,
54
54
  type: "search",
55
- className: className,
55
+ className: (0, index_cjs_namespaceObject.cn)('[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none', className),
56
56
  value: value,
57
57
  onChange: (e)=>onChange?.(e.target.value),
58
58
  ...props
@@ -23,7 +23,7 @@ const search_Search = /*#__PURE__*/ forwardRef(({ className, value, onChange, on
23
23
  /*#__PURE__*/ jsx(InputGroupInput, {
24
24
  ref: ref,
25
25
  type: "search",
26
- className: className,
26
+ className: cn('[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none', className),
27
27
  value: value,
28
28
  onChange: (e)=>onChange?.(e.target.value),
29
29
  ...props
package/dist/index.cjs CHANGED
@@ -47,28 +47,28 @@ __webpack_require__.d(__webpack_exports__, {
47
47
  CommandEmpty: ()=>command_cjs_namespaceObject.CommandEmpty,
48
48
  Skeleton: ()=>skeleton_cjs_namespaceObject.Skeleton,
49
49
  AlertDialogOverlay: ()=>alert_dialog_cjs_namespaceObject.AlertDialogOverlay,
50
- PaginationContent: ()=>pagination_cjs_namespaceObject.PaginationContent,
50
+ FIELD_TYPE_ORDER: ()=>index_cjs_namespaceObject.FIELD_TYPE_ORDER,
51
51
  DropdownMenuSubTrigger: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuSubTrigger,
52
52
  ButtonGroupText: ()=>button_group_cjs_namespaceObject.ButtonGroupText,
53
- SelectGroup: ()=>select_cjs_namespaceObject.SelectGroup,
53
+ PaginationContent: ()=>pagination_cjs_namespaceObject.PaginationContent,
54
54
  ContextMenuLabel: ()=>context_menu_cjs_namespaceObject.ContextMenuLabel,
55
- TooltipTrigger: ()=>tooltip_cjs_namespaceObject.TooltipTrigger,
55
+ SelectGroup: ()=>select_cjs_namespaceObject.SelectGroup,
56
56
  ContextMenuSeparator: ()=>context_menu_cjs_namespaceObject.ContextMenuSeparator,
57
57
  DropdownMenuContent: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuContent,
58
58
  ContextMenuSub: ()=>context_menu_cjs_namespaceObject.ContextMenuSub,
59
+ LockableValueField: ()=>index_cjs_namespaceObject.LockableValueField,
59
60
  PopoverTrigger: ()=>popover_cjs_namespaceObject.PopoverTrigger,
60
61
  Separator: ()=>separator_cjs_namespaceObject.Separator,
61
- TreeView: ()=>tree_view_cjs_default(),
62
62
  CardDescription: ()=>card_cjs_namespaceObject.CardDescription,
63
63
  ContextMenuContent: ()=>context_menu_cjs_namespaceObject.ContextMenuContent,
64
64
  Pagination: ()=>pagination_cjs_namespaceObject.Pagination,
65
65
  SheetFooter: ()=>sheet_cjs_namespaceObject.SheetFooter,
66
- auditPlugin: ()=>form_plugins_cjs_namespaceObject.auditPlugin,
67
- toast: ()=>sonner_cjs_namespaceObject.toast,
66
+ TooltipTrigger: ()=>tooltip_cjs_namespaceObject.TooltipTrigger,
67
+ TreeView: ()=>tree_view_cjs_default(),
68
68
  CommandSeparator: ()=>command_cjs_namespaceObject.CommandSeparator,
69
69
  FormFieldRenderer: ()=>field_renderer_cjs_namespaceObject.FormFieldRenderer,
70
70
  EditableCell: ()=>editable_cell_cjs_namespaceObject.EditableCell,
71
- PromptEditor: ()=>index_cjs_namespaceObject.PromptEditor,
71
+ PromptEditor: ()=>prompt_editor_index_cjs_namespaceObject.PromptEditor,
72
72
  ScrollableTabsList: ()=>tabs_cjs_namespaceObject.ScrollableTabsList,
73
73
  Spinner: ()=>spinner_cjs_namespaceObject.Spinner,
74
74
  SheetOverlay: ()=>sheet_cjs_namespaceObject.SheetOverlay,
@@ -78,17 +78,18 @@ __webpack_require__.d(__webpack_exports__, {
78
78
  TabsList: ()=>tabs_cjs_namespaceObject.TabsList,
79
79
  ContextMenuItem: ()=>context_menu_cjs_namespaceObject.ContextMenuItem,
80
80
  TooltipContent: ()=>tooltip_cjs_namespaceObject.TooltipContent,
81
- buttonVariants: ()=>button_cjs_namespaceObject.buttonVariants,
81
+ auditPlugin: ()=>form_plugins_cjs_namespaceObject.auditPlugin,
82
82
  TableBody: ()=>table_cjs_namespaceObject.TableBody,
83
83
  AvatarImage: ()=>avatar_cjs_namespaceObject.AvatarImage,
84
84
  RuleBuilder: ()=>rules_engine_cjs_namespaceObject.RuleBuilder,
85
- toggleVariants: ()=>toggle_cjs_namespaceObject.toggleVariants,
85
+ buttonVariants: ()=>button_cjs_namespaceObject.buttonVariants,
86
86
  AlertDialogTitle: ()=>alert_dialog_cjs_namespaceObject.AlertDialogTitle,
87
87
  DataSourceBuilder: ()=>data_fetcher_cjs_namespaceObject.DataSourceBuilder,
88
88
  BreadcrumbEllipsis: ()=>breadcrumb_cjs_namespaceObject.BreadcrumbEllipsis,
89
89
  BreadcrumbLink: ()=>breadcrumb_cjs_namespaceObject.BreadcrumbLink,
90
90
  badgeVariants: ()=>badge_cjs_namespaceObject.badgeVariants,
91
91
  createEditableColumn: ()=>editable_cell_cjs_namespaceObject.createEditableColumn,
92
+ toggleVariants: ()=>toggle_cjs_namespaceObject.toggleVariants,
92
93
  AccordionItem: ()=>accordion_cjs_namespaceObject.AccordionItem,
93
94
  DropdownMenuLabel: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuLabel,
94
95
  Column: ()=>column_cjs_namespaceObject.Column,
@@ -132,7 +133,7 @@ __webpack_require__.d(__webpack_exports__, {
132
133
  TooltipProvider: ()=>tooltip_cjs_namespaceObject.TooltipProvider,
133
134
  DataFetcher: ()=>data_fetcher_cjs_namespaceObject.DataFetcher,
134
135
  DialogPortal: ()=>dialog_cjs_namespaceObject.DialogPortal,
135
- VARIABLE_DRAG_MIME: ()=>index_cjs_namespaceObject.VARIABLE_DRAG_MIME,
136
+ VARIABLE_DRAG_MIME: ()=>prompt_editor_index_cjs_namespaceObject.VARIABLE_DRAG_MIME,
136
137
  analyticsPlugin: ()=>form_plugins_cjs_namespaceObject.analyticsPlugin,
137
138
  cn: ()=>utils_cjs_namespaceObject.cn,
138
139
  DropdownMenuSub: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuSub,
@@ -202,6 +203,7 @@ __webpack_require__.d(__webpack_exports__, {
202
203
  SheetPortal: ()=>sheet_cjs_namespaceObject.SheetPortal,
203
204
  hasMinMaxStep: ()=>form_schema_cjs_namespaceObject.hasMinMaxStep,
204
205
  isFileField: ()=>form_schema_cjs_namespaceObject.isFileField,
206
+ toast: ()=>sonner_cjs_namespaceObject.toast,
205
207
  workflowPlugin: ()=>form_plugins_cjs_namespaceObject.workflowPlugin,
206
208
  AlertDialogDescription: ()=>alert_dialog_cjs_namespaceObject.AlertDialogDescription,
207
209
  CommandInput: ()=>command_cjs_namespaceObject.CommandInput,
@@ -209,21 +211,21 @@ __webpack_require__.d(__webpack_exports__, {
209
211
  DropdownMenuShortcut: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuShortcut,
210
212
  FetchAdapter: ()=>data_fetcher_cjs_namespaceObject.FetchAdapter,
211
213
  DataTableSelectColumn: ()=>data_table_cjs_namespaceObject.DataTableSelectColumn,
212
- FormStateViewer: ()=>form_state_viewer_cjs_namespaceObject.FormStateViewer,
213
- CollapsibleTrigger: ()=>collapsible_cjs_namespaceObject.CollapsibleTrigger,
214
214
  DropdownMenu: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenu,
215
+ CollapsibleTrigger: ()=>collapsible_cjs_namespaceObject.CollapsibleTrigger,
216
+ FormStateViewer: ()=>form_state_viewer_cjs_namespaceObject.FormStateViewer,
215
217
  RadioGroup: ()=>radio_group_cjs_namespaceObject.RadioGroup,
216
218
  MultiSelect: ()=>multi_select_cjs_namespaceObject.MultiSelect,
217
219
  AspectRatio: ()=>aspect_ratio_cjs_namespaceObject.AspectRatio,
218
220
  DataTableColumnHeader: ()=>data_table_cjs_namespaceObject.DataTableColumnHeader,
219
- DialogContent: ()=>dialog_cjs_namespaceObject.DialogContent,
221
+ FormDesigner: ()=>form_designer_cjs_namespaceObject.FormDesigner,
220
222
  Alert: ()=>alert_cjs_namespaceObject.Alert,
221
- DialogTrigger: ()=>dialog_cjs_namespaceObject.DialogTrigger,
223
+ DialogContent: ()=>dialog_cjs_namespaceObject.DialogContent,
222
224
  CommandDialog: ()=>command_cjs_namespaceObject.CommandDialog,
225
+ DialogTrigger: ()=>dialog_cjs_namespaceObject.DialogTrigger,
223
226
  DropdownMenuRadioGroup: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuRadioGroup,
224
- DropdownMenuRadioItem: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuRadioItem,
225
227
  Accordion: ()=>accordion_cjs_namespaceObject.Accordion,
226
- FormDesigner: ()=>form_designer_cjs_namespaceObject.FormDesigner,
228
+ DropdownMenuRadioItem: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuRadioItem,
227
229
  Progress: ()=>progress_cjs_namespaceObject.Progress,
228
230
  ResizableHandle: ()=>resizable_cjs_namespaceObject.ResizableHandle,
229
231
  AlertDialogCancel: ()=>alert_dialog_cjs_namespaceObject.AlertDialogCancel,
@@ -236,10 +238,11 @@ __webpack_require__.d(__webpack_exports__, {
236
238
  Dialog: ()=>dialog_cjs_namespaceObject.Dialog,
237
239
  DatePicker: ()=>date_picker_cjs_namespaceObject.DatePicker,
238
240
  SelectTrigger: ()=>select_cjs_namespaceObject.SelectTrigger,
241
+ FIELD_TYPE_META: ()=>index_cjs_namespaceObject.FIELD_TYPE_META,
239
242
  ToggleGroup: ()=>toggle_group_cjs_namespaceObject.ToggleGroup,
240
- spinnerVariants: ()=>spinner_cjs_namespaceObject.spinnerVariants,
241
243
  DataTransformers: ()=>data_fetcher_cjs_namespaceObject.DataTransformers,
242
244
  RadioGroupItem: ()=>radio_group_cjs_namespaceObject.RadioGroupItem,
245
+ spinnerVariants: ()=>spinner_cjs_namespaceObject.spinnerVariants,
243
246
  PopoverAnchor: ()=>popover_cjs_namespaceObject.PopoverAnchor,
244
247
  DropdownMenuPortal: ()=>dropdown_menu_cjs_namespaceObject.DropdownMenuPortal,
245
248
  ButtonGroupSeparator: ()=>button_group_cjs_namespaceObject.ButtonGroupSeparator,
@@ -265,6 +268,7 @@ const toggle_cjs_namespaceObject = require("./components/ui/toggle.cjs");
265
268
  const toggle_group_cjs_namespaceObject = require("./components/ui/toggle-group.cjs");
266
269
  const input_cjs_namespaceObject = require("./components/ui/input.cjs");
267
270
  const input_group_cjs_namespaceObject = require("./components/ui/input-group.cjs");
271
+ const index_cjs_namespaceObject = require("./components/ui/lockable-value-field/index.cjs");
268
272
  const textarea_cjs_namespaceObject = require("./components/ui/textarea.cjs");
269
273
  const label_cjs_namespaceObject = require("./components/ui/label.cjs");
270
274
  const checkbox_cjs_namespaceObject = require("./components/ui/checkbox.cjs");
@@ -287,7 +291,7 @@ const table_cjs_namespaceObject = require("./components/ui/table.cjs");
287
291
  const data_table_cjs_namespaceObject = require("./components/ui/data-table.cjs");
288
292
  const editable_cell_cjs_namespaceObject = require("./components/ui/editable-cell.cjs");
289
293
  const progress_cjs_namespaceObject = require("./components/ui/progress.cjs");
290
- const index_cjs_namespaceObject = require("./components/ui/prompt-editor/index.cjs");
294
+ const prompt_editor_index_cjs_namespaceObject = require("./components/ui/prompt-editor/index.cjs");
291
295
  const skeleton_cjs_namespaceObject = require("./components/ui/skeleton.cjs");
292
296
  const spinner_cjs_namespaceObject = require("./components/ui/spinner.cjs");
293
297
  const empty_state_cjs_namespaceObject = require("./components/ui/empty-state.cjs");
@@ -430,6 +434,8 @@ exports.DropdownMenuTrigger = __webpack_exports__.DropdownMenuTrigger;
430
434
  exports.EditableCell = __webpack_exports__.EditableCell;
431
435
  exports.EmptyState = __webpack_exports__.EmptyState;
432
436
  exports.ExpressionBuilder = __webpack_exports__.ExpressionBuilder;
437
+ exports.FIELD_TYPE_META = __webpack_exports__.FIELD_TYPE_META;
438
+ exports.FIELD_TYPE_ORDER = __webpack_exports__.FIELD_TYPE_ORDER;
433
439
  exports.FetchAdapter = __webpack_exports__.FetchAdapter;
434
440
  exports.FileUpload = __webpack_exports__.FileUpload;
435
441
  exports.FormDesigner = __webpack_exports__.FormDesigner;
@@ -447,6 +453,7 @@ exports.InputGroupInput = __webpack_exports__.InputGroupInput;
447
453
  exports.InputGroupText = __webpack_exports__.InputGroupText;
448
454
  exports.InputGroupTextarea = __webpack_exports__.InputGroupTextarea;
449
455
  exports.Label = __webpack_exports__.Label;
456
+ exports.LockableValueField = __webpack_exports__.LockableValueField;
450
457
  exports.MetadataForm = __webpack_exports__.MetadataForm;
451
458
  exports.MultiSelect = __webpack_exports__.MultiSelect;
452
459
  exports.Pagination = __webpack_exports__.Pagination;
@@ -652,6 +659,8 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
652
659
  "EditableCell",
653
660
  "EmptyState",
654
661
  "ExpressionBuilder",
662
+ "FIELD_TYPE_META",
663
+ "FIELD_TYPE_ORDER",
655
664
  "FetchAdapter",
656
665
  "FileUpload",
657
666
  "FormDesigner",
@@ -669,6 +678,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
669
678
  "InputGroupText",
670
679
  "InputGroupTextarea",
671
680
  "Label",
681
+ "LockableValueField",
672
682
  "MetadataForm",
673
683
  "MultiSelect",
674
684
  "Pagination",
package/dist/index.d.ts CHANGED
@@ -14,6 +14,8 @@ export { Input } from './components/ui/input';
14
14
  export type { InputProps } from './components/ui/input';
15
15
  export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea, } from './components/ui/input-group';
16
16
  export type { InputGroupProps, InputGroupAddonProps, InputGroupButtonProps, InputGroupTextProps, InputGroupInputProps, InputGroupTextareaProps, } from './components/ui/input-group';
17
+ export { FIELD_TYPE_META, FIELD_TYPE_ORDER, LockableValueField, } from './components/ui/lockable-value-field';
18
+ export type { LockableValueFieldProps, LockableValueFieldMode, LockableFieldType, LockableValueFieldOption, } from './components/ui/lockable-value-field';
17
19
  export { Textarea } from './components/ui/textarea';
18
20
  export type { TextareaProps } from './components/ui/textarea';
19
21
  export { Label } from './components/ui/label';