@uipath/apollo-wind 2.57.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.
@@ -0,0 +1,264 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import react from "@monaco-editor/react";
3
+ import { useEffect, useId, useRef, useState } from "react";
4
+ import { apolloCoreDarkCodeMirror, apolloCoreDarkHCCodeMirror, apolloCoreDarkHCMonaco, apolloCoreDarkMonaco, apolloCoreLightCodeMirror, apolloCoreLightHCCodeMirror, apolloCoreLightHCMonaco, apolloCoreLightMonaco, apolloFutureDarkCodeMirror, apolloFutureDarkMonaco, apolloFutureLightCodeMirror, apolloFutureLightMonaco } from "../../editor-themes/index.js";
5
+ const editorThemeConfigs = [
6
+ {
7
+ key: 'future-dark',
8
+ label: 'Future Dark',
9
+ monacoThemeName: 'apollo-future-dark',
10
+ monacoExport: 'apolloFutureDarkMonaco',
11
+ cmExport: 'apolloFutureDarkCodeMirror',
12
+ monacoThemeObj: apolloFutureDarkMonaco,
13
+ cmTokens: apolloFutureDarkCodeMirror,
14
+ isDark: true,
15
+ family: 'Future'
16
+ },
17
+ {
18
+ key: 'future-light',
19
+ label: 'Future Light',
20
+ monacoThemeName: 'apollo-future-light',
21
+ monacoExport: 'apolloFutureLightMonaco',
22
+ cmExport: 'apolloFutureLightCodeMirror',
23
+ monacoThemeObj: apolloFutureLightMonaco,
24
+ cmTokens: apolloFutureLightCodeMirror,
25
+ isDark: false,
26
+ family: 'Future'
27
+ },
28
+ {
29
+ key: 'dark',
30
+ label: 'Dark',
31
+ monacoThemeName: 'apollo-core-dark',
32
+ monacoExport: 'apolloCoreDarkMonaco',
33
+ cmExport: 'apolloCoreDarkCodeMirror',
34
+ monacoThemeObj: apolloCoreDarkMonaco,
35
+ cmTokens: apolloCoreDarkCodeMirror,
36
+ isDark: true,
37
+ family: 'Core'
38
+ },
39
+ {
40
+ key: 'light',
41
+ label: 'Light',
42
+ monacoThemeName: 'apollo-core-light',
43
+ monacoExport: 'apolloCoreLightMonaco',
44
+ cmExport: 'apolloCoreLightCodeMirror',
45
+ monacoThemeObj: apolloCoreLightMonaco,
46
+ cmTokens: apolloCoreLightCodeMirror,
47
+ isDark: false,
48
+ family: 'Core'
49
+ },
50
+ {
51
+ key: 'dark-hc',
52
+ label: 'Dark High Contrast',
53
+ monacoThemeName: 'apollo-core-dark-hc',
54
+ monacoExport: 'apolloCoreDarkHCMonaco',
55
+ cmExport: 'apolloCoreDarkHCCodeMirror',
56
+ monacoThemeObj: apolloCoreDarkHCMonaco,
57
+ cmTokens: apolloCoreDarkHCCodeMirror,
58
+ isDark: true,
59
+ family: 'Core HC'
60
+ },
61
+ {
62
+ key: 'light-hc',
63
+ label: 'Light High Contrast',
64
+ monacoThemeName: 'apollo-core-light-hc',
65
+ monacoExport: 'apolloCoreLightHCMonaco',
66
+ cmExport: 'apolloCoreLightHCCodeMirror',
67
+ monacoThemeObj: apolloCoreLightHCMonaco,
68
+ cmTokens: apolloCoreLightHCCodeMirror,
69
+ isDark: false,
70
+ family: 'Core HC'
71
+ }
72
+ ];
73
+ const monacoFullSample = `import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
74
+
75
+ type SortDirection = 'asc' | 'desc';
76
+
77
+ interface Column<T> {
78
+ key: keyof T;
79
+ header: string;
80
+ sortable?: boolean;
81
+ render?: (value: T[keyof T], row: T) => ReactNode;
82
+ }
83
+
84
+ interface TableProps<T> {
85
+ data: T[];
86
+ columns: Column<T>[];
87
+ pageSize?: number;
88
+ }
89
+
90
+ export function DataTable<T extends { id: string | number }>({
91
+ data,
92
+ columns,
93
+ pageSize = 10,
94
+ }: TableProps<T>) {
95
+ const [query, setQuery] = useState('');
96
+ const [sortKey, setSortKey] = useState<keyof T | null>(null);
97
+ const [sortDir, setSortDir] = useState<SortDirection>('asc');
98
+ const [page, setPage] = useState(1);
99
+
100
+ useEffect(() => { setPage(1); }, [query, sortKey, sortDir]);
101
+
102
+ const filtered = useMemo(() => {
103
+ if (!query.trim()) return data;
104
+ const q = query.toLowerCase();
105
+ return data.filter((row) =>
106
+ columns.some((col) => String(row[col.key]).toLowerCase().includes(q))
107
+ );
108
+ }, [data, columns, query]);
109
+
110
+ const sorted = useMemo(() => {
111
+ if (!sortKey) return filtered;
112
+ return [...filtered].sort((a, b) => {
113
+ const cmp = a[sortKey] < b[sortKey] ? -1 : a[sortKey] > b[sortKey] ? 1 : 0;
114
+ return sortDir === 'asc' ? cmp : -cmp;
115
+ });
116
+ }, [filtered, sortKey, sortDir]);
117
+
118
+ return (
119
+ <div className="flex flex-col gap-4">
120
+ <input
121
+ className="rounded-lg border border-border px-3 py-2 text-sm"
122
+ placeholder="Search..."
123
+ value={query}
124
+ onChange={(e) => setQuery(e.target.value)}
125
+ />
126
+ <table className="w-full text-sm">
127
+ <thead>
128
+ <tr className="border-b border-border">
129
+ {columns.map((col) => (
130
+ <th key={String(col.key)} className="px-4 py-2 text-left">
131
+ {col.header}
132
+ </th>
133
+ ))}
134
+ </tr>
135
+ </thead>
136
+ </table>
137
+ </div>
138
+ );
139
+ }`.trim();
140
+ const monacoSample = `interface WorkflowNode {
141
+ id: string;
142
+ type: 'action' | 'condition' | 'trigger';
143
+ executionStatus: 'NotExecuted' | 'InProgress' | 'Completed' | 'Failed';
144
+ }
145
+
146
+ function getNextNodes(node: WorkflowNode): string[] {
147
+ if (node.executionStatus === 'Completed') {
148
+ return node.type === 'condition'
149
+ ? ['true-branch', 'false-branch']
150
+ : ['next'];
151
+ }
152
+ return [];
153
+ }`.trim();
154
+ let monacoThemesRegistered = false;
155
+ function registerAllMonacoThemes(monaco) {
156
+ if (monacoThemesRegistered) return;
157
+ for (const cfg of editorThemeConfigs)monaco.editor.defineTheme(cfg.monacoThemeName, cfg.monacoThemeObj);
158
+ monacoThemesRegistered = true;
159
+ }
160
+ let demoDefaultsUsers = 0;
161
+ let savedTypescriptDefaults = null;
162
+ function acquireDemoTypescriptDefaults(monaco) {
163
+ demoDefaultsUsers += 1;
164
+ if (demoDefaultsUsers > 1) return;
165
+ const ts = monaco.languages.typescript.typescriptDefaults;
166
+ savedTypescriptDefaults = {
167
+ diagnostics: ts.getDiagnosticsOptions(),
168
+ compiler: ts.getCompilerOptions()
169
+ };
170
+ ts.setDiagnosticsOptions({
171
+ ...ts.getDiagnosticsOptions(),
172
+ noSemanticValidation: true
173
+ });
174
+ ts.setCompilerOptions({
175
+ ...ts.getCompilerOptions(),
176
+ jsx: monaco.languages.typescript.JsxEmit.Preserve
177
+ });
178
+ }
179
+ function releaseDemoTypescriptDefaults(monaco) {
180
+ demoDefaultsUsers -= 1;
181
+ if (demoDefaultsUsers > 0 || !savedTypescriptDefaults) return;
182
+ const ts = monaco.languages.typescript.typescriptDefaults;
183
+ ts.setDiagnosticsOptions(savedTypescriptDefaults.diagnostics);
184
+ ts.setCompilerOptions(savedTypescriptDefaults.compiler);
185
+ savedTypescriptDefaults = null;
186
+ }
187
+ function LiveMonacoEditor({ themeConfig, height = '220px', value, onChange, onMount, language = "typescript", options = {} }) {
188
+ const extension = 'json' === language ? 'json' : 'tsx';
189
+ const modelPath = `file:///editor-${useId().replace(/[^a-zA-Z0-9]/g, '')}.${extension}`;
190
+ const monacoRef = useRef(null);
191
+ useEffect(()=>()=>{
192
+ if (monacoRef.current) releaseDemoTypescriptDefaults(monacoRef.current);
193
+ monacoRef.current = null;
194
+ }, []);
195
+ return /*#__PURE__*/ jsx(react, {
196
+ height: height,
197
+ path: modelPath,
198
+ defaultLanguage: language,
199
+ ...onChange ? {
200
+ value: value ?? ''
201
+ } : {
202
+ defaultValue: value ?? monacoSample
203
+ },
204
+ theme: themeConfig.monacoThemeName,
205
+ beforeMount: (monaco)=>{
206
+ registerAllMonacoThemes(monaco);
207
+ if (!monacoRef.current) {
208
+ monacoRef.current = monaco;
209
+ acquireDemoTypescriptDefaults(monaco);
210
+ }
211
+ },
212
+ onChange: onChange,
213
+ onMount: onMount,
214
+ options: {
215
+ fontSize: 13,
216
+ lineHeight: 20,
217
+ minimap: {
218
+ enabled: false
219
+ },
220
+ scrollBeyondLastLine: false,
221
+ wordWrap: 'on',
222
+ fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace',
223
+ padding: {
224
+ top: 16,
225
+ bottom: 16
226
+ },
227
+ lineNumbers: 'on',
228
+ glyphMargin: false,
229
+ folding: false,
230
+ renderLineHighlight: 'line',
231
+ hideCursorInOverviewRuler: true,
232
+ overviewRulerBorder: false,
233
+ scrollbar: {
234
+ vertical: 'auto',
235
+ horizontal: 'hidden',
236
+ alwaysConsumeMouseWheel: false
237
+ },
238
+ automaticLayout: true,
239
+ fixedOverflowWidgets: true,
240
+ ...options
241
+ }
242
+ });
243
+ }
244
+ const futureDarkConfig = editorThemeConfigs[0];
245
+ function getStorybookThemeConfig() {
246
+ const keys = editorThemeConfigs.map((c)=>c.key);
247
+ const found = Array.from(document.body.classList).find((c)=>keys.includes(c));
248
+ return editorThemeConfigs.find((c)=>c.key === found) ?? futureDarkConfig;
249
+ }
250
+ function useEditorThemeConfig() {
251
+ const [themeConfig, setThemeConfig] = useState(getStorybookThemeConfig);
252
+ useEffect(()=>{
253
+ const observer = new MutationObserver(()=>setThemeConfig(getStorybookThemeConfig()));
254
+ observer.observe(document.body, {
255
+ attributes: true,
256
+ attributeFilter: [
257
+ 'class'
258
+ ]
259
+ });
260
+ return ()=>observer.disconnect();
261
+ }, []);
262
+ return themeConfig;
263
+ }
264
+ export { LiveMonacoEditor, editorThemeConfigs, monacoFullSample, monacoSample, registerAllMonacoThemes, useEditorThemeConfig };
@@ -53,6 +53,7 @@ const external_lucide_react_namespaceObject = require("lucide-react");
53
53
  const external_react_namespaceObject = require("react");
54
54
  const external_button_cjs_namespaceObject = require("./button.cjs");
55
55
  const external_portal_container_cjs_namespaceObject = require("./portal-container.cjs");
56
+ const dialog_surface_cjs_namespaceObject = require("../../lib/dialog-surface.cjs");
56
57
  const index_cjs_namespaceObject = require("../../lib/index.cjs");
57
58
  function Dialog({ ...props }) {
58
59
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_dialog_namespaceObject.Root, {
@@ -73,7 +74,7 @@ function DialogPortal({ ...props }) {
73
74
  ...props
74
75
  });
75
76
  }
76
- const dialogContentVariants = (0, external_class_variance_authority_namespaceObject.cva)('bg-surface-raised text-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 relative z-50 border border-border-subtle shadow-xl duration-200', {
77
+ const dialogContentVariants = (0, external_class_variance_authority_namespaceObject.cva)(`${dialog_surface_cjs_namespaceObject.dialogSurfaceClassName} data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 relative z-50 duration-200`, {
77
78
  variants: {
78
79
  variant: {
79
80
  default: 'grid w-full max-w-[calc(100%-2rem)] gap-4 rounded-2xl p-6 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:max-w-lg',
@@ -6,6 +6,7 @@ import { Maximize2, Minimize2, XIcon } from "lucide-react";
6
6
  import { forwardRef, useState } from "react";
7
7
  import { Button } from "./button.js";
8
8
  import { useResolvedPortalContainer } from "./portal-container.js";
9
+ import { dialogSurfaceClassName } from "../../lib/dialog-surface.js";
9
10
  import { cn } from "../../lib/index.js";
10
11
  function Dialog({ ...props }) {
11
12
  return /*#__PURE__*/ jsx(Root, {
@@ -26,7 +27,7 @@ function DialogPortal({ ...props }) {
26
27
  ...props
27
28
  });
28
29
  }
29
- const dialogContentVariants = cva('bg-surface-raised text-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 relative z-50 border border-border-subtle shadow-xl duration-200', {
30
+ const dialogContentVariants = cva(`${dialogSurfaceClassName} data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 relative z-50 duration-200`, {
30
31
  variants: {
31
32
  variant: {
32
33
  default: 'grid w-full max-w-[calc(100%-2rem)] gap-4 rounded-2xl p-6 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:max-w-lg',
@@ -45,7 +45,7 @@ var __webpack_modules__ = {
45
45
  "./combobox" (module) {
46
46
  module.exports = require("./combobox.cjs");
47
47
  },
48
- "./command" (module) {
48
+ "@/components/ui/command" (module) {
49
49
  module.exports = require("./command.cjs");
50
50
  },
51
51
  "@/components/ui/context-menu" (module) {
@@ -69,7 +69,7 @@ var __webpack_modules__ = {
69
69
  "@/components/ui/dropdown-menu" (module) {
70
70
  module.exports = require("./dropdown-menu.cjs");
71
71
  },
72
- "./editable-cell" (module) {
72
+ "@/components/ui/editable-cell" (module) {
73
73
  module.exports = require("./editable-cell.cjs");
74
74
  },
75
75
  "./empty-state" (module) {
@@ -171,22 +171,22 @@ var __webpack_modules__ = {
171
171
  "./switch" (module) {
172
172
  module.exports = require("./switch.cjs");
173
173
  },
174
- "./table" (module) {
174
+ "@/components/ui/table" (module) {
175
175
  module.exports = require("./table.cjs");
176
176
  },
177
177
  "./tabs" (module) {
178
178
  module.exports = require("./tabs.cjs");
179
179
  },
180
- "./textarea" (module) {
180
+ "@/components/ui/textarea" (module) {
181
181
  module.exports = require("./textarea.cjs");
182
182
  },
183
183
  "./toggle-group" (module) {
184
184
  module.exports = require("./toggle-group.cjs");
185
185
  },
186
- "./toggle" (module) {
186
+ "@/components/ui/toggle" (module) {
187
187
  module.exports = require("./toggle.cjs");
188
188
  },
189
- "./tooltip" (module) {
189
+ "@/components/ui/tooltip" (module) {
190
190
  module.exports = require("./tooltip.cjs");
191
191
  },
192
192
  "./tree-view" (module) {
@@ -347,7 +347,7 @@ var __webpack_exports__ = {};
347
347
  "default"
348
348
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_combobox__rspack_import_14[__rspack_import_key];
349
349
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
350
- var _command__rspack_import_15 = __webpack_require__("./command");
350
+ var _command__rspack_import_15 = __webpack_require__("@/components/ui/command");
351
351
  var __rspack_reexport = {};
352
352
  for(const __rspack_import_key in _command__rspack_import_15)if ([
353
353
  "TreeView",
@@ -403,7 +403,7 @@ var __webpack_exports__ = {};
403
403
  "default"
404
404
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_dropdown_menu__rspack_import_22[__rspack_import_key];
405
405
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
406
- var _editable_cell__rspack_import_23 = __webpack_require__("./editable-cell");
406
+ var _editable_cell__rspack_import_23 = __webpack_require__("@/components/ui/editable-cell");
407
407
  var __rspack_reexport = {};
408
408
  for(const __rspack_import_key in _editable_cell__rspack_import_23)if ([
409
409
  "TreeView",
@@ -641,7 +641,7 @@ var __webpack_exports__ = {};
641
641
  "default"
642
642
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_switch__rspack_import_56[__rspack_import_key];
643
643
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
644
- var _table__rspack_import_57 = __webpack_require__("./table");
644
+ var _table__rspack_import_57 = __webpack_require__("@/components/ui/table");
645
645
  var __rspack_reexport = {};
646
646
  for(const __rspack_import_key in _table__rspack_import_57)if ([
647
647
  "TreeView",
@@ -655,14 +655,14 @@ var __webpack_exports__ = {};
655
655
  "default"
656
656
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_tabs__rspack_import_58[__rspack_import_key];
657
657
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
658
- var _textarea__rspack_import_59 = __webpack_require__("./textarea");
658
+ var _textarea__rspack_import_59 = __webpack_require__("@/components/ui/textarea");
659
659
  var __rspack_reexport = {};
660
660
  for(const __rspack_import_key in _textarea__rspack_import_59)if ([
661
661
  "TreeView",
662
662
  "default"
663
663
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_textarea__rspack_import_59[__rspack_import_key];
664
664
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
665
- var _toggle__rspack_import_60 = __webpack_require__("./toggle");
665
+ var _toggle__rspack_import_60 = __webpack_require__("@/components/ui/toggle");
666
666
  var __rspack_reexport = {};
667
667
  for(const __rspack_import_key in _toggle__rspack_import_60)if ([
668
668
  "TreeView",
@@ -676,7 +676,7 @@ var __webpack_exports__ = {};
676
676
  "default"
677
677
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_toggle_group__rspack_import_61[__rspack_import_key];
678
678
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
679
- var _tooltip__rspack_import_62 = __webpack_require__("./tooltip");
679
+ var _tooltip__rspack_import_62 = __webpack_require__("@/components/ui/tooltip");
680
680
  var __rspack_reexport = {};
681
681
  for(const __rspack_import_key in _tooltip__rspack_import_62)if ([
682
682
  "TreeView",
@@ -0,0 +1,36 @@
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
+ dialogSurfaceClassName: ()=>dialogSurfaceClassName
28
+ });
29
+ const dialogSurfaceClassName = 'bg-surface-raised text-foreground border border-border-subtle shadow-xl';
30
+ exports.dialogSurfaceClassName = __webpack_exports__.dialogSurfaceClassName;
31
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
32
+ "dialogSurfaceClassName"
33
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
34
+ Object.defineProperty(exports, '__esModule', {
35
+ value: true
36
+ });
@@ -0,0 +1 @@
1
+ export declare const dialogSurfaceClassName = "bg-surface-raised text-foreground border border-border-subtle shadow-xl";
@@ -0,0 +1,2 @@
1
+ const dialogSurfaceClassName = 'bg-surface-raised text-foreground border border-border-subtle shadow-xl';
2
+ export { dialogSurfaceClassName };
package/dist/styles.css CHANGED
@@ -1159,6 +1159,9 @@
1159
1159
  .h-\[400px\] {
1160
1160
  height: 400px;
1161
1161
  }
1162
+ .h-\[420px\] {
1163
+ height: 420px;
1164
+ }
1162
1165
  .h-\[500px\] {
1163
1166
  height: 500px;
1164
1167
  }
@@ -6294,14 +6297,14 @@
6294
6297
  }
6295
6298
  }
6296
6299
  }
6297
- .sm\:mt-0 {
6300
+ .sm\:max-w-2xl {
6298
6301
  @media (width >= 40rem) {
6299
- margin-top: calc(var(--spacing) * 0);
6302
+ max-width: var(--container-2xl);
6300
6303
  }
6301
6304
  }
6302
- .sm\:max-w-2xl {
6305
+ .sm\:max-w-3xl {
6303
6306
  @media (width >= 40rem) {
6304
- max-width: var(--container-2xl);
6307
+ max-width: var(--container-3xl);
6305
6308
  }
6306
6309
  }
6307
6310
  .sm\:max-w-lg {
@@ -6358,11 +6361,6 @@
6358
6361
  }
6359
6362
  }
6360
6363
  }
6361
- .sm\:rounded-lg {
6362
- @media (width >= 40rem) {
6363
- border-radius: var(--radius-lg);
6364
- }
6365
- }
6366
6364
  .sm\:border-t-0 {
6367
6365
  @media (width >= 40rem) {
6368
6366
  border-top-style: var(--tw-border-style);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/apollo-wind",
3
- "version": "2.57.0",
3
+ "version": "2.57.1",
4
4
  "description": "UiPath wind design system - A Tailwind CSS based React component library",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",