@uipath/apollo-wind 2.16.0 → 2.17.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.
- package/dist/components/forms/field-renderer.cjs +68 -32
- package/dist/components/forms/field-renderer.js +68 -32
- package/dist/components/forms/form-schema.d.ts +16 -0
- package/dist/components/ui/calendar.cjs +0 -1
- package/dist/components/ui/calendar.js +0 -1
- package/dist/components/ui/index.cjs +8 -8
- package/package.json +8 -11
|
@@ -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.
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
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__*/
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
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),
|
|
@@ -36,7 +36,7 @@ var __webpack_modules__ = {
|
|
|
36
36
|
"@/components/ui/checkbox" (module) {
|
|
37
37
|
module.exports = require("./checkbox.cjs");
|
|
38
38
|
},
|
|
39
|
-
"
|
|
39
|
+
"@/components/ui/collapsible" (module) {
|
|
40
40
|
module.exports = require("./collapsible.cjs");
|
|
41
41
|
},
|
|
42
42
|
"./combobox" (module) {
|
|
@@ -45,7 +45,7 @@ var __webpack_modules__ = {
|
|
|
45
45
|
"@/components/ui/command" (module) {
|
|
46
46
|
module.exports = require("./command.cjs");
|
|
47
47
|
},
|
|
48
|
-
"
|
|
48
|
+
"@/components/ui/context-menu" (module) {
|
|
49
49
|
module.exports = require("./context-menu.cjs");
|
|
50
50
|
},
|
|
51
51
|
"./data-table" (module) {
|
|
@@ -72,7 +72,7 @@ var __webpack_modules__ = {
|
|
|
72
72
|
"./file-upload" (module) {
|
|
73
73
|
module.exports = require("./file-upload.cjs");
|
|
74
74
|
},
|
|
75
|
-
"
|
|
75
|
+
"@/components/ui/hover-card" (module) {
|
|
76
76
|
module.exports = require("./hover-card.cjs");
|
|
77
77
|
},
|
|
78
78
|
"@/components/ui/input" (module) {
|
|
@@ -150,7 +150,7 @@ var __webpack_modules__ = {
|
|
|
150
150
|
"./toggle-group" (module) {
|
|
151
151
|
module.exports = require("./toggle-group.cjs");
|
|
152
152
|
},
|
|
153
|
-
"
|
|
153
|
+
"./toggle" (module) {
|
|
154
154
|
module.exports = require("./toggle.cjs");
|
|
155
155
|
},
|
|
156
156
|
"./tooltip" (module) {
|
|
@@ -290,7 +290,7 @@ var __webpack_exports__ = {};
|
|
|
290
290
|
"default"
|
|
291
291
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_checkbox__rspack_import_11[__rspack_import_key];
|
|
292
292
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
293
|
-
var _collapsible__rspack_import_12 = __webpack_require__("
|
|
293
|
+
var _collapsible__rspack_import_12 = __webpack_require__("@/components/ui/collapsible");
|
|
294
294
|
var __rspack_reexport = {};
|
|
295
295
|
for(const __rspack_import_key in _collapsible__rspack_import_12)if ([
|
|
296
296
|
"TreeView",
|
|
@@ -311,7 +311,7 @@ var __webpack_exports__ = {};
|
|
|
311
311
|
"default"
|
|
312
312
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_command__rspack_import_14[__rspack_import_key];
|
|
313
313
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
314
|
-
var _context_menu__rspack_import_15 = __webpack_require__("
|
|
314
|
+
var _context_menu__rspack_import_15 = __webpack_require__("@/components/ui/context-menu");
|
|
315
315
|
var __rspack_reexport = {};
|
|
316
316
|
for(const __rspack_import_key in _context_menu__rspack_import_15)if ([
|
|
317
317
|
"TreeView",
|
|
@@ -374,7 +374,7 @@ var __webpack_exports__ = {};
|
|
|
374
374
|
"default"
|
|
375
375
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_file_upload__rspack_import_23[__rspack_import_key];
|
|
376
376
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
377
|
-
var _hover_card__rspack_import_24 = __webpack_require__("
|
|
377
|
+
var _hover_card__rspack_import_24 = __webpack_require__("@/components/ui/hover-card");
|
|
378
378
|
var __rspack_reexport = {};
|
|
379
379
|
for(const __rspack_import_key in _hover_card__rspack_import_24)if ([
|
|
380
380
|
"TreeView",
|
|
@@ -549,7 +549,7 @@ var __webpack_exports__ = {};
|
|
|
549
549
|
"default"
|
|
550
550
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_textarea__rspack_import_48[__rspack_import_key];
|
|
551
551
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
552
|
-
var _toggle__rspack_import_49 = __webpack_require__("
|
|
552
|
+
var _toggle__rspack_import_49 = __webpack_require__("./toggle");
|
|
553
553
|
var __rspack_reexport = {};
|
|
554
554
|
for(const __rspack_import_key in _toggle__rspack_import_49)if ([
|
|
555
555
|
"TreeView",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uipath/apollo-wind",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.17.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",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"tailwindcss": "^4.1.17",
|
|
112
112
|
"vaul": "^1.1.2",
|
|
113
113
|
"zod": "^4.3.5",
|
|
114
|
-
"@uipath/apollo-core": "5.9.
|
|
114
|
+
"@uipath/apollo-core": "5.9.1"
|
|
115
115
|
},
|
|
116
116
|
"devDependencies": {
|
|
117
117
|
"@rsbuild/plugin-react": "^1.4.1",
|
|
@@ -134,8 +134,8 @@
|
|
|
134
134
|
"@types/react": "^19.2.6",
|
|
135
135
|
"@types/react-dom": "^19.2.2",
|
|
136
136
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
137
|
-
"@vitest/coverage-v8": "^4.1.
|
|
138
|
-
"@vitest/ui": "^4.1.
|
|
137
|
+
"@vitest/coverage-v8": "^4.1.5",
|
|
138
|
+
"@vitest/ui": "^4.1.5",
|
|
139
139
|
"ajv": "^8.18.0",
|
|
140
140
|
"autoprefixer": "^10.4.22",
|
|
141
141
|
"globals": "^16.5.0",
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
"storybook": "^10.2.15",
|
|
151
151
|
"tailwindcss": "^4.1.17",
|
|
152
152
|
"typescript": "^5.9.3",
|
|
153
|
-
"vitest": "^4.1.
|
|
153
|
+
"vitest": "^4.1.5"
|
|
154
154
|
},
|
|
155
155
|
"keywords": [
|
|
156
156
|
"react",
|
|
@@ -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/
|
|
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": {
|