@uipath/apollo-wind 2.16.1 → 2.18.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.
@@ -450,38 +450,12 @@ function FieldByType({ field, formField, error, disabled, required, options }) {
450
450
  ]
451
451
  });
452
452
  case 'slider':
453
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(FormField, {
454
- children: [
455
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
456
- className: "flex justify-between",
457
- children: [
458
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(FormLabel, {
459
- required: required,
460
- children: field.label
461
- }),
462
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
463
- className: "text-sm text-muted-foreground",
464
- children: formField.value
465
- })
466
- ]
467
- }),
468
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(slider_cjs_namespaceObject.Slider, {
469
- value: [
470
- formField.value
471
- ],
472
- onValueChange: (values)=>formField.onChange(values[0]),
473
- min: field.min || 0,
474
- max: field.max || 100,
475
- step: field.step || 1,
476
- disabled: disabled
477
- }),
478
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(FormDescription, {
479
- children: field.description
480
- }),
481
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(FormError, {
482
- children: error
483
- })
484
- ]
453
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(SliderField, {
454
+ field: field,
455
+ formField: formField,
456
+ error: error,
457
+ disabled: disabled,
458
+ required: required
485
459
  });
486
460
  case 'date':
487
461
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(FormField, {
@@ -588,6 +562,68 @@ function FormError({ children }) {
588
562
  children: children
589
563
  });
590
564
  }
565
+ function SliderField({ field, formField, error, disabled, required }) {
566
+ const { watch } = (0, external_react_hook_form_namespaceObject.useFormContext)();
567
+ const watchedMax = field.maxRef ? watch(field.maxRef.fromField) : void 0;
568
+ const resolvedMax = resolveSliderMax(field, watchedMax);
569
+ const prevMaxRef = (0, external_react_namespaceObject.useRef)(resolvedMax);
570
+ (0, external_react_namespaceObject.useEffect)(()=>{
571
+ if (resolvedMax === prevMaxRef.current) return;
572
+ prevMaxRef.current = resolvedMax;
573
+ const v = formField.value;
574
+ if ('number' == typeof v && v > resolvedMax) formField.onChange(resolvedMax);
575
+ }, [
576
+ resolvedMax,
577
+ formField.value,
578
+ formField.onChange
579
+ ]);
580
+ const displayValue = (()=>{
581
+ const v = formField.value;
582
+ if ('number' == typeof v) return Math.min(v, resolvedMax);
583
+ return v;
584
+ })();
585
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(FormField, {
586
+ children: [
587
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
588
+ className: "flex justify-between",
589
+ children: [
590
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(FormLabel, {
591
+ required: required,
592
+ children: field.label
593
+ }),
594
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
595
+ className: "text-sm text-muted-foreground",
596
+ children: displayValue
597
+ })
598
+ ]
599
+ }),
600
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(slider_cjs_namespaceObject.Slider, {
601
+ value: [
602
+ displayValue ?? field.min ?? 0
603
+ ],
604
+ onValueChange: (values)=>formField.onChange(values[0]),
605
+ min: field.min || 0,
606
+ max: resolvedMax,
607
+ step: field.step || 1,
608
+ disabled: disabled
609
+ }),
610
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(FormDescription, {
611
+ children: field.description
612
+ }),
613
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(FormError, {
614
+ children: error
615
+ })
616
+ ]
617
+ });
618
+ }
619
+ function resolveSliderMax(field, watchedValue) {
620
+ if (field.maxRef) {
621
+ if ('number' == typeof watchedValue && Number.isFinite(watchedValue) && watchedValue > 0) return watchedValue;
622
+ if ('number' == typeof field.maxRef.fallback) return field.maxRef.fallback;
623
+ }
624
+ if ('number' == typeof field.max) return field.max;
625
+ return 100;
626
+ }
591
627
  exports.FormFieldRenderer = __webpack_exports__.FormFieldRenderer;
592
628
  for(var __rspack_i in __webpack_exports__)if (-1 === [
593
629
  "FormFieldRenderer"
@@ -422,38 +422,12 @@ function FieldByType({ field, formField, error, disabled, required, options }) {
422
422
  ]
423
423
  });
424
424
  case 'slider':
425
- return /*#__PURE__*/ jsxs(FormField, {
426
- children: [
427
- /*#__PURE__*/ jsxs("div", {
428
- className: "flex justify-between",
429
- children: [
430
- /*#__PURE__*/ jsx(FormLabel, {
431
- required: required,
432
- children: field.label
433
- }),
434
- /*#__PURE__*/ jsx("span", {
435
- className: "text-sm text-muted-foreground",
436
- children: formField.value
437
- })
438
- ]
439
- }),
440
- /*#__PURE__*/ jsx(Slider, {
441
- value: [
442
- formField.value
443
- ],
444
- onValueChange: (values)=>formField.onChange(values[0]),
445
- min: field.min || 0,
446
- max: field.max || 100,
447
- step: field.step || 1,
448
- disabled: disabled
449
- }),
450
- /*#__PURE__*/ jsx(FormDescription, {
451
- children: field.description
452
- }),
453
- /*#__PURE__*/ jsx(FormError, {
454
- children: error
455
- })
456
- ]
425
+ return /*#__PURE__*/ jsx(SliderField, {
426
+ field: field,
427
+ formField: formField,
428
+ error: error,
429
+ disabled: disabled,
430
+ required: required
457
431
  });
458
432
  case 'date':
459
433
  return /*#__PURE__*/ jsxs(FormField, {
@@ -560,4 +534,66 @@ function FormError({ children }) {
560
534
  children: children
561
535
  });
562
536
  }
537
+ function SliderField({ field, formField, error, disabled, required }) {
538
+ const { watch } = useFormContext();
539
+ const watchedMax = field.maxRef ? watch(field.maxRef.fromField) : void 0;
540
+ const resolvedMax = resolveSliderMax(field, watchedMax);
541
+ const prevMaxRef = useRef(resolvedMax);
542
+ useEffect(()=>{
543
+ if (resolvedMax === prevMaxRef.current) return;
544
+ prevMaxRef.current = resolvedMax;
545
+ const v = formField.value;
546
+ if ('number' == typeof v && v > resolvedMax) formField.onChange(resolvedMax);
547
+ }, [
548
+ resolvedMax,
549
+ formField.value,
550
+ formField.onChange
551
+ ]);
552
+ const displayValue = (()=>{
553
+ const v = formField.value;
554
+ if ('number' == typeof v) return Math.min(v, resolvedMax);
555
+ return v;
556
+ })();
557
+ return /*#__PURE__*/ jsxs(FormField, {
558
+ children: [
559
+ /*#__PURE__*/ jsxs("div", {
560
+ className: "flex justify-between",
561
+ children: [
562
+ /*#__PURE__*/ jsx(FormLabel, {
563
+ required: required,
564
+ children: field.label
565
+ }),
566
+ /*#__PURE__*/ jsx("span", {
567
+ className: "text-sm text-muted-foreground",
568
+ children: displayValue
569
+ })
570
+ ]
571
+ }),
572
+ /*#__PURE__*/ jsx(Slider, {
573
+ value: [
574
+ displayValue ?? field.min ?? 0
575
+ ],
576
+ onValueChange: (values)=>formField.onChange(values[0]),
577
+ min: field.min || 0,
578
+ max: resolvedMax,
579
+ step: field.step || 1,
580
+ disabled: disabled
581
+ }),
582
+ /*#__PURE__*/ jsx(FormDescription, {
583
+ children: field.description
584
+ }),
585
+ /*#__PURE__*/ jsx(FormError, {
586
+ children: error
587
+ })
588
+ ]
589
+ });
590
+ }
591
+ function resolveSliderMax(field, watchedValue) {
592
+ if (field.maxRef) {
593
+ if ('number' == typeof watchedValue && Number.isFinite(watchedValue) && watchedValue > 0) return watchedValue;
594
+ if ('number' == typeof field.maxRef.fallback) return field.maxRef.fallback;
595
+ }
596
+ if ('number' == typeof field.max) return field.max;
597
+ return 100;
598
+ }
563
599
  export { FormFieldRenderer };
@@ -184,10 +184,26 @@ export interface CheckboxFieldMetadata extends BaseFieldMetadata {
184
184
  export interface SwitchFieldMetadata extends BaseFieldMetadata {
185
185
  type: 'switch';
186
186
  }
187
+ /**
188
+ * Reference to another form field's value, used to drive a numeric property
189
+ * (e.g. a slider's `max`) at render time.
190
+ */
191
+ export interface FieldRef {
192
+ /** Form field path to watch (react-hook-form name). */
193
+ fromField: string;
194
+ /** Used when the watched value is missing or not a finite positive number. */
195
+ fallback?: number;
196
+ }
187
197
  export interface SliderFieldMetadata extends BaseFieldMetadata {
188
198
  type: 'slider';
189
199
  min?: number;
190
200
  max?: number;
201
+ /**
202
+ * Dynamic upper bound sourced from another form field. Takes precedence
203
+ * over `max` when present. The watched field's value is used as the slider's
204
+ * `max` when it's a finite positive number; otherwise `fallback` is used.
205
+ */
206
+ maxRef?: FieldRef;
191
207
  step?: number;
192
208
  }
193
209
  export interface DateFieldMetadata extends BaseFieldMetadata {
@@ -62,7 +62,6 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
62
62
  dropdown_root: (0, index_cjs_namespaceObject.cn)('has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border', defaultClassNames.dropdown_root),
63
63
  dropdown: (0, index_cjs_namespaceObject.cn)('bg-popover absolute inset-0 opacity-0', defaultClassNames.dropdown),
64
64
  caption_label: (0, index_cjs_namespaceObject.cn)('select-none font-medium', 'label' === captionLayout ? 'text-sm' : '[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5', defaultClassNames.caption_label),
65
- table: 'w-full border-collapse',
66
65
  weekdays: (0, index_cjs_namespaceObject.cn)('flex gap-2', defaultClassNames.weekdays),
67
66
  weekday: (0, index_cjs_namespaceObject.cn)('text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal', defaultClassNames.weekday),
68
67
  week: (0, index_cjs_namespaceObject.cn)('mt-2 flex w-full gap-2', defaultClassNames.week),
@@ -33,7 +33,6 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
33
33
  dropdown_root: cn('has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border', defaultClassNames.dropdown_root),
34
34
  dropdown: cn('bg-popover absolute inset-0 opacity-0', defaultClassNames.dropdown),
35
35
  caption_label: cn('select-none font-medium', 'label' === captionLayout ? 'text-sm' : '[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5', defaultClassNames.caption_label),
36
- table: 'w-full border-collapse',
37
36
  weekdays: cn('flex gap-2', defaultClassNames.weekdays),
38
37
  weekday: cn('text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal', defaultClassNames.weekday),
39
38
  week: cn('mt-2 flex w-full gap-2', defaultClassNames.week),
@@ -27,10 +27,10 @@ var __webpack_modules__ = {
27
27
  "@/components/ui/button" (module) {
28
28
  module.exports = require("./button.cjs");
29
29
  },
30
- "./calendar" (module) {
30
+ "@/components/ui/calendar" (module) {
31
31
  module.exports = require("./calendar.cjs");
32
32
  },
33
- "./card" (module) {
33
+ "@/components/ui/card" (module) {
34
34
  module.exports = require("./card.cjs");
35
35
  },
36
36
  "@/components/ui/checkbox" (module) {
@@ -57,13 +57,13 @@ var __webpack_modules__ = {
57
57
  "./datetime-picker" (module) {
58
58
  module.exports = require("./datetime-picker.cjs");
59
59
  },
60
- "./dialog" (module) {
60
+ "@/components/ui/dialog" (module) {
61
61
  module.exports = require("./dialog.cjs");
62
62
  },
63
63
  "@/components/ui/dropdown-menu" (module) {
64
64
  module.exports = require("./dropdown-menu.cjs");
65
65
  },
66
- "./editable-cell" (module) {
66
+ "@/components/ui/editable-cell" (module) {
67
67
  module.exports = require("./editable-cell.cjs");
68
68
  },
69
69
  "./empty-state" (module) {
@@ -78,7 +78,7 @@ var __webpack_modules__ = {
78
78
  "@/components/ui/input" (module) {
79
79
  module.exports = require("./input.cjs");
80
80
  },
81
- "./label" (module) {
81
+ "@/components/ui/label" (module) {
82
82
  module.exports = require("./label.cjs");
83
83
  },
84
84
  "./layout" (module) {
@@ -138,7 +138,7 @@ var __webpack_modules__ = {
138
138
  "./switch" (module) {
139
139
  module.exports = require("./switch.cjs");
140
140
  },
141
- "./table" (module) {
141
+ "@/components/ui/table" (module) {
142
142
  module.exports = require("./table.cjs");
143
143
  },
144
144
  "./tabs" (module) {
@@ -269,14 +269,14 @@ var __webpack_exports__ = {};
269
269
  "default"
270
270
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_button_group__rspack_import_8[__rspack_import_key];
271
271
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
272
- var _calendar__rspack_import_9 = __webpack_require__("./calendar");
272
+ var _calendar__rspack_import_9 = __webpack_require__("@/components/ui/calendar");
273
273
  var __rspack_reexport = {};
274
274
  for(const __rspack_import_key in _calendar__rspack_import_9)if ([
275
275
  "TreeView",
276
276
  "default"
277
277
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_calendar__rspack_import_9[__rspack_import_key];
278
278
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
279
- var _card__rspack_import_10 = __webpack_require__("./card");
279
+ var _card__rspack_import_10 = __webpack_require__("@/components/ui/card");
280
280
  var __rspack_reexport = {};
281
281
  for(const __rspack_import_key in _card__rspack_import_10)if ([
282
282
  "TreeView",
@@ -339,7 +339,7 @@ var __webpack_exports__ = {};
339
339
  "default"
340
340
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_datetime_picker__rspack_import_18[__rspack_import_key];
341
341
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
342
- var _dialog__rspack_import_19 = __webpack_require__("./dialog");
342
+ var _dialog__rspack_import_19 = __webpack_require__("@/components/ui/dialog");
343
343
  var __rspack_reexport = {};
344
344
  for(const __rspack_import_key in _dialog__rspack_import_19)if ([
345
345
  "TreeView",
@@ -353,7 +353,7 @@ var __webpack_exports__ = {};
353
353
  "default"
354
354
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_dropdown_menu__rspack_import_20[__rspack_import_key];
355
355
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
356
- var _editable_cell__rspack_import_21 = __webpack_require__("./editable-cell");
356
+ var _editable_cell__rspack_import_21 = __webpack_require__("@/components/ui/editable-cell");
357
357
  var __rspack_reexport = {};
358
358
  for(const __rspack_import_key in _editable_cell__rspack_import_21)if ([
359
359
  "TreeView",
@@ -388,7 +388,7 @@ var __webpack_exports__ = {};
388
388
  "default"
389
389
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_input__rspack_import_25[__rspack_import_key];
390
390
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
391
- var _label__rspack_import_26 = __webpack_require__("./label");
391
+ var _label__rspack_import_26 = __webpack_require__("@/components/ui/label");
392
392
  var __rspack_reexport = {};
393
393
  for(const __rspack_import_key in _label__rspack_import_26)if ([
394
394
  "TreeView",
@@ -528,7 +528,7 @@ var __webpack_exports__ = {};
528
528
  "default"
529
529
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_switch__rspack_import_45[__rspack_import_key];
530
530
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
531
- var _table__rspack_import_46 = __webpack_require__("./table");
531
+ var _table__rspack_import_46 = __webpack_require__("@/components/ui/table");
532
532
  var __rspack_reexport = {};
533
533
  for(const __rspack_import_key in _table__rspack_import_46)if ([
534
534
  "TreeView",
package/dist/styles.css CHANGED
@@ -2143,6 +2143,12 @@
2143
2143
  border-color: color-mix(in oklab, var(--destructive) 20%, transparent);
2144
2144
  }
2145
2145
  }
2146
+ .border-destructive\/30 {
2147
+ border-color: var(--destructive);
2148
+ @supports (color: color-mix(in lab, red, red)) {
2149
+ border-color: color-mix(in oklab, var(--destructive) 30%, transparent);
2150
+ }
2151
+ }
2146
2152
  .border-destructive\/50 {
2147
2153
  border-color: var(--destructive);
2148
2154
  @supports (color: color-mix(in lab, red, red)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/apollo-wind",
3
- "version": "2.16.1",
3
+ "version": "2.18.0",
4
4
  "description": "UiPath wind design system - A Tailwind CSS based React component library",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -164,15 +164,12 @@
164
164
  "author": "UiPath",
165
165
  "license": "MIT",
166
166
  "publishConfig": {
167
- "access": "public",
168
- "registry": "https://registry.npmjs.org"
167
+ "access": "public"
169
168
  },
170
169
  "repository": {
171
170
  "type": "git",
172
- "url": "https://github.com/uipath/apollo-ui"
173
- },
174
- "bugs": {
175
- "url": "https://github.com/uipath/apollo-ui/issues"
171
+ "url": "https://github.com/UiPath/apollo-ui.git",
172
+ "directory": "packages/apollo-wind"
176
173
  },
177
174
  "homepage": "https://apollo-design.vercel.app",
178
175
  "scripts": {