@raystack/apsara 0.51.0 → 0.51.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.
- package/dist/components/dropdown-menu/dropdown-menu-content.cjs +19 -6
- package/dist/components/dropdown-menu/dropdown-menu-content.cjs.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu-content.d.ts.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu-content.js +19 -6
- package/dist/components/dropdown-menu/dropdown-menu-content.js.map +1 -1
- package/package.json +19 -21
|
@@ -6,21 +6,34 @@ var VIIRIBF3 = require('../../node_modules/.pnpm/@ariakit_react-core@0.4.16_reac
|
|
|
6
6
|
var menu = require('../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@ariakit/react-core/esm/menu/menu.cjs');
|
|
7
7
|
var combobox = require('../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@ariakit/react-core/esm/combobox/combobox.cjs');
|
|
8
8
|
var MAXQOH4L = require('../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@ariakit/react-core/esm/__chunks/MAXQOH4L.cjs');
|
|
9
|
-
var index = require('../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.cjs');
|
|
9
|
+
var index$1 = require('../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.cjs');
|
|
10
10
|
var React = require('react');
|
|
11
11
|
var dropdownMenuRoot = require('./dropdown-menu-root.cjs');
|
|
12
12
|
var dropdownMenu_module = require('./dropdown-menu.module.css.cjs');
|
|
13
|
-
var index
|
|
13
|
+
var index = require('../../node_modules/.pnpm/@radix-ui_react-visually-hidden@1.2.3_@types_react-dom@19.1.7_@types_react@19.1.9__@types_rea_nas2f5v5xqlignvaay23ejie7a/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs');
|
|
14
|
+
var index$2 = require('../../node_modules/.pnpm/@radix-ui_react-slot@1.2.3_@types_react@19.1.9_react@19.1.1/node_modules/@radix-ui/react-slot/dist/index.cjs');
|
|
14
15
|
|
|
15
16
|
const DropdownMenuContent = React.forwardRef(({ className, children, asChild, searchPlaceholder = 'Search...', ...props }, ref) => {
|
|
16
17
|
const menu$1 = VIIRIBF3.useMenuContext();
|
|
17
18
|
const { autocomplete } = dropdownMenuRoot.useDropdownContext();
|
|
18
19
|
const isSubMenu = !!menu$1?.parent;
|
|
19
20
|
const comboboxRef = React.useRef(null);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const visuallyHiddenRef = React.useRef(null);
|
|
22
|
+
const [isInsideRadixDialog, setIsInsideRadixDialog] = React.useState(false);
|
|
23
|
+
/*
|
|
24
|
+
* This is a workaround to fix focus lock issue when the dropdown menu is inside a Radix Dialog.
|
|
25
|
+
* TODO: Use Radix.Popover for the dropdown popover
|
|
26
|
+
*/
|
|
27
|
+
React.useEffect(() => {
|
|
28
|
+
setIsInsideRadixDialog(!!visuallyHiddenRef.current?.closest("[role='dialog']"));
|
|
29
|
+
}, []);
|
|
30
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(index.Root, { ref: visuallyHiddenRef, "aria-hidden": 'true' }), jsxRuntime.jsx(menu.Menu, { ref: ref, modal: !isInsideRadixDialog, portal: !isInsideRadixDialog, portalElement: typeof window === 'undefined' || isInsideRadixDialog
|
|
31
|
+
? null
|
|
32
|
+
: window?.document?.body, unmountOnHide: true, gutter: isSubMenu ? 2 : 4, className: index$1.cx(dropdownMenu_module.default.content, autocomplete && dropdownMenu_module.default.comboboxContainer, className), render: asChild ? jsxRuntime.jsx(index$2.Root, {}) : undefined, ...props, children: autocomplete ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(combobox.Combobox, { ref: comboboxRef, placeholder: searchPlaceholder, className: dropdownMenu_module.default.comboboxInput, autoSelect: true, onPointerEnter: e => {
|
|
33
|
+
if (document &&
|
|
34
|
+
document.activeElement !== comboboxRef.current)
|
|
35
|
+
comboboxRef.current?.focus();
|
|
36
|
+
} }), jsxRuntime.jsx(MAXQOH4L.ComboboxList, { className: dropdownMenu_module.default.comboboxContent, children: children })] })) : (children) })] }));
|
|
24
37
|
});
|
|
25
38
|
|
|
26
39
|
exports.DropdownMenuContent = DropdownMenuContent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-content.cjs","sources":["../../../components/dropdown-menu/dropdown-menu-content.tsx"],"sourcesContent":["'use client';\n\nimport { Menu, MenuProps, useMenuContext } from '@ariakit/react';\nimport { Combobox, ComboboxList } from '@ariakit/react';\nimport { cx } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport { ElementRef, forwardRef, useRef } from 'react';\nimport { useDropdownContext } from './dropdown-menu-root';\nimport styles from './dropdown-menu.module.css';\nimport { WithAsChild } from './types';\n\nexport interface MenuContentProps extends WithAsChild<MenuProps> {\n searchPlaceholder?: string;\n}\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof Menu>,\n MenuContentProps\n>(\n (\n { className, children, asChild, searchPlaceholder = 'Search...', ...props },\n ref\n ) => {\n const menu = useMenuContext();\n const { autocomplete } = useDropdownContext();\n const isSubMenu = !!menu?.parent;\n const comboboxRef = useRef<HTMLInputElement>(null);\n\n return (\n <Menu\n
|
|
1
|
+
{"version":3,"file":"dropdown-menu-content.cjs","sources":["../../../components/dropdown-menu/dropdown-menu-content.tsx"],"sourcesContent":["'use client';\n\nimport { Menu, MenuProps, useMenuContext } from '@ariakit/react';\nimport { Combobox, ComboboxList } from '@ariakit/react';\nimport { cx } from 'class-variance-authority';\nimport { Slot, VisuallyHidden } from 'radix-ui';\nimport { ElementRef, forwardRef, useEffect, useRef, useState } from 'react';\nimport { useDropdownContext } from './dropdown-menu-root';\nimport styles from './dropdown-menu.module.css';\nimport { WithAsChild } from './types';\n\nexport interface MenuContentProps extends WithAsChild<MenuProps> {\n searchPlaceholder?: string;\n}\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof Menu>,\n MenuContentProps\n>(\n (\n { className, children, asChild, searchPlaceholder = 'Search...', ...props },\n ref\n ) => {\n const menu = useMenuContext();\n const { autocomplete } = useDropdownContext();\n const isSubMenu = !!menu?.parent;\n const comboboxRef = useRef<HTMLInputElement>(null);\n const visuallyHiddenRef = useRef<HTMLDivElement>(null);\n const [isInsideRadixDialog, setIsInsideRadixDialog] = useState(false);\n\n /*\n * This is a workaround to fix focus lock issue when the dropdown menu is inside a Radix Dialog.\n * TODO: Use Radix.Popover for the dropdown popover\n */\n useEffect(() => {\n setIsInsideRadixDialog(\n !!visuallyHiddenRef.current?.closest(\"[role='dialog']\")\n );\n }, []);\n\n return (\n <>\n <VisuallyHidden.Root ref={visuallyHiddenRef} aria-hidden='true' />\n <Menu\n ref={ref}\n modal={!isInsideRadixDialog}\n portal={!isInsideRadixDialog}\n portalElement={\n typeof window === 'undefined' || isInsideRadixDialog\n ? null\n : window?.document?.body\n }\n unmountOnHide\n gutter={isSubMenu ? 2 : 4}\n className={cx(\n styles.content,\n autocomplete && styles.comboboxContainer,\n className\n )}\n render={asChild ? <Slot.Root /> : undefined}\n {...props}\n >\n {autocomplete ? (\n <>\n <Combobox\n ref={comboboxRef}\n placeholder={searchPlaceholder}\n className={styles.comboboxInput}\n autoSelect\n onPointerEnter={e => {\n if (\n document &&\n document.activeElement !== comboboxRef.current\n )\n comboboxRef.current?.focus();\n }}\n />\n <ComboboxList className={styles.comboboxContent}>\n {children}\n </ComboboxList>\n </>\n ) : (\n children\n )}\n </Menu>\n </>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAea;AAQT;AACA;AACA;AACA;AACA;;AAGA;;;AAGG;;AAED;;AAKF;AASU;AACA;AAoBI;AAEE;AAEA;;AAalB;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-content.d.ts","sourceRoot":"","sources":["../../../components/dropdown-menu/dropdown-menu-content.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAQ,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAOjE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,gBAAiB,SAAQ,WAAW,CAAC,SAAS,CAAC;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"dropdown-menu-content.d.ts","sourceRoot":"","sources":["../../../components/dropdown-menu/dropdown-menu-content.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAQ,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAOjE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,gBAAiB,SAAQ,WAAW,CAAC,SAAS,CAAC;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,mBAAmB,mHAyE/B,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { useMenuContext } from '../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@ariakit/react-core/esm/__chunks/VIIRIBF3.js';
|
|
4
4
|
import { Menu } from '../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@ariakit/react-core/esm/menu/menu.js';
|
|
5
5
|
import { Combobox } from '../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@ariakit/react-core/esm/combobox/combobox.js';
|
|
6
6
|
import { ComboboxList } from '../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@ariakit/react-core/esm/__chunks/MAXQOH4L.js';
|
|
7
7
|
import { cx } from '../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js';
|
|
8
|
-
import { forwardRef, useRef } from 'react';
|
|
8
|
+
import { forwardRef, useRef, useState, useEffect } from 'react';
|
|
9
9
|
import { useDropdownContext } from './dropdown-menu-root.js';
|
|
10
10
|
import styles from './dropdown-menu.module.css.js';
|
|
11
|
+
import { Root } from '../../node_modules/.pnpm/@radix-ui_react-visually-hidden@1.2.3_@types_react-dom@19.1.7_@types_react@19.1.9__@types_rea_nas2f5v5xqlignvaay23ejie7a/node_modules/@radix-ui/react-visually-hidden/dist/index.js';
|
|
11
12
|
import { Root as Slot } from '../../node_modules/.pnpm/@radix-ui_react-slot@1.2.3_@types_react@19.1.9_react@19.1.1/node_modules/@radix-ui/react-slot/dist/index.js';
|
|
12
13
|
|
|
13
14
|
const DropdownMenuContent = forwardRef(({ className, children, asChild, searchPlaceholder = 'Search...', ...props }, ref) => {
|
|
@@ -15,10 +16,22 @@ const DropdownMenuContent = forwardRef(({ className, children, asChild, searchPl
|
|
|
15
16
|
const { autocomplete } = useDropdownContext();
|
|
16
17
|
const isSubMenu = !!menu?.parent;
|
|
17
18
|
const comboboxRef = useRef(null);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
const visuallyHiddenRef = useRef(null);
|
|
20
|
+
const [isInsideRadixDialog, setIsInsideRadixDialog] = useState(false);
|
|
21
|
+
/*
|
|
22
|
+
* This is a workaround to fix focus lock issue when the dropdown menu is inside a Radix Dialog.
|
|
23
|
+
* TODO: Use Radix.Popover for the dropdown popover
|
|
24
|
+
*/
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
setIsInsideRadixDialog(!!visuallyHiddenRef.current?.closest("[role='dialog']"));
|
|
27
|
+
}, []);
|
|
28
|
+
return (jsxs(Fragment, { children: [jsx(Root, { ref: visuallyHiddenRef, "aria-hidden": 'true' }), jsx(Menu, { ref: ref, modal: !isInsideRadixDialog, portal: !isInsideRadixDialog, portalElement: typeof window === 'undefined' || isInsideRadixDialog
|
|
29
|
+
? null
|
|
30
|
+
: window?.document?.body, unmountOnHide: true, gutter: isSubMenu ? 2 : 4, className: cx(styles.content, autocomplete && styles.comboboxContainer, className), render: asChild ? jsx(Slot, {}) : undefined, ...props, children: autocomplete ? (jsxs(Fragment, { children: [jsx(Combobox, { ref: comboboxRef, placeholder: searchPlaceholder, className: styles.comboboxInput, autoSelect: true, onPointerEnter: e => {
|
|
31
|
+
if (document &&
|
|
32
|
+
document.activeElement !== comboboxRef.current)
|
|
33
|
+
comboboxRef.current?.focus();
|
|
34
|
+
} }), jsx(ComboboxList, { className: styles.comboboxContent, children: children })] })) : (children) })] }));
|
|
22
35
|
});
|
|
23
36
|
|
|
24
37
|
export { DropdownMenuContent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-content.js","sources":["../../../components/dropdown-menu/dropdown-menu-content.tsx"],"sourcesContent":["'use client';\n\nimport { Menu, MenuProps, useMenuContext } from '@ariakit/react';\nimport { Combobox, ComboboxList } from '@ariakit/react';\nimport { cx } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport { ElementRef, forwardRef, useRef } from 'react';\nimport { useDropdownContext } from './dropdown-menu-root';\nimport styles from './dropdown-menu.module.css';\nimport { WithAsChild } from './types';\n\nexport interface MenuContentProps extends WithAsChild<MenuProps> {\n searchPlaceholder?: string;\n}\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof Menu>,\n MenuContentProps\n>(\n (\n { className, children, asChild, searchPlaceholder = 'Search...', ...props },\n ref\n ) => {\n const menu = useMenuContext();\n const { autocomplete } = useDropdownContext();\n const isSubMenu = !!menu?.parent;\n const comboboxRef = useRef<HTMLInputElement>(null);\n\n return (\n <Menu\n
|
|
1
|
+
{"version":3,"file":"dropdown-menu-content.js","sources":["../../../components/dropdown-menu/dropdown-menu-content.tsx"],"sourcesContent":["'use client';\n\nimport { Menu, MenuProps, useMenuContext } from '@ariakit/react';\nimport { Combobox, ComboboxList } from '@ariakit/react';\nimport { cx } from 'class-variance-authority';\nimport { Slot, VisuallyHidden } from 'radix-ui';\nimport { ElementRef, forwardRef, useEffect, useRef, useState } from 'react';\nimport { useDropdownContext } from './dropdown-menu-root';\nimport styles from './dropdown-menu.module.css';\nimport { WithAsChild } from './types';\n\nexport interface MenuContentProps extends WithAsChild<MenuProps> {\n searchPlaceholder?: string;\n}\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof Menu>,\n MenuContentProps\n>(\n (\n { className, children, asChild, searchPlaceholder = 'Search...', ...props },\n ref\n ) => {\n const menu = useMenuContext();\n const { autocomplete } = useDropdownContext();\n const isSubMenu = !!menu?.parent;\n const comboboxRef = useRef<HTMLInputElement>(null);\n const visuallyHiddenRef = useRef<HTMLDivElement>(null);\n const [isInsideRadixDialog, setIsInsideRadixDialog] = useState(false);\n\n /*\n * This is a workaround to fix focus lock issue when the dropdown menu is inside a Radix Dialog.\n * TODO: Use Radix.Popover for the dropdown popover\n */\n useEffect(() => {\n setIsInsideRadixDialog(\n !!visuallyHiddenRef.current?.closest(\"[role='dialog']\")\n );\n }, []);\n\n return (\n <>\n <VisuallyHidden.Root ref={visuallyHiddenRef} aria-hidden='true' />\n <Menu\n ref={ref}\n modal={!isInsideRadixDialog}\n portal={!isInsideRadixDialog}\n portalElement={\n typeof window === 'undefined' || isInsideRadixDialog\n ? null\n : window?.document?.body\n }\n unmountOnHide\n gutter={isSubMenu ? 2 : 4}\n className={cx(\n styles.content,\n autocomplete && styles.comboboxContainer,\n className\n )}\n render={asChild ? <Slot.Root /> : undefined}\n {...props}\n >\n {autocomplete ? (\n <>\n <Combobox\n ref={comboboxRef}\n placeholder={searchPlaceholder}\n className={styles.comboboxInput}\n autoSelect\n onPointerEnter={e => {\n if (\n document &&\n document.activeElement !== comboboxRef.current\n )\n comboboxRef.current?.focus();\n }}\n />\n <ComboboxList className={styles.comboboxContent}>\n {children}\n </ComboboxList>\n </>\n ) : (\n children\n )}\n </Menu>\n </>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;AAea;AAQT;AACA;AACA;AACA;AACA;;AAGA;;;AAGG;;AAED;;AAKF;AASU;AACA;AAoBI;AAEE;AAEA;;AAalB;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raystack/apsara",
|
|
3
|
-
"version": "0.51.
|
|
3
|
+
"version": "0.51.1",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"engines": {
|
|
@@ -34,22 +34,6 @@
|
|
|
34
34
|
"dist",
|
|
35
35
|
"README.md"
|
|
36
36
|
],
|
|
37
|
-
"scripts": {
|
|
38
|
-
"prebuild": "npm run clean",
|
|
39
|
-
"build": "rollup --config",
|
|
40
|
-
"dev": "rollup --config --watch",
|
|
41
|
-
"lint": "eslint \"**/*.ts*\"",
|
|
42
|
-
"lint:fix": "eslint \"v1/**/*.ts*\" --fix",
|
|
43
|
-
"release": "release-it",
|
|
44
|
-
"release:ci": "release-it --ci --no-increment --npm.ignoreVersion",
|
|
45
|
-
"bump-version": "node scripts/bump-version.js",
|
|
46
|
-
"clean": "rm -rf .turbo && rm -rf dist",
|
|
47
|
-
"test": "vitest --run",
|
|
48
|
-
"test:watch": "vitest --watch",
|
|
49
|
-
"test:coverage": "vitest --coverage",
|
|
50
|
-
"test:ui": "vitest --ui",
|
|
51
|
-
"build:icons": "node scripts/create-icons.js"
|
|
52
|
-
},
|
|
53
37
|
"typesVersions": {
|
|
54
38
|
"*": {
|
|
55
39
|
"*": [
|
|
@@ -86,7 +70,6 @@
|
|
|
86
70
|
"@types/react": "^19.0.0",
|
|
87
71
|
"@types/react-dom": "^19.0.0",
|
|
88
72
|
"@vitest/ui": "^3.2.4",
|
|
89
|
-
"eslint-config-custom": "workspace:*",
|
|
90
73
|
"identity-obj-proxy": "^3.0.0",
|
|
91
74
|
"jsdom": "^26.1.0",
|
|
92
75
|
"np": "^8.0.4",
|
|
@@ -97,15 +80,15 @@
|
|
|
97
80
|
"postcss-modules": "^6.0.0",
|
|
98
81
|
"react": "^19.0.0",
|
|
99
82
|
"react-dom": "^19.0.0",
|
|
100
|
-
"release-it": "^16.2.1",
|
|
101
83
|
"rollup": "^3.25.1",
|
|
102
84
|
"rollup-plugin-postcss": "^4.0.2",
|
|
103
85
|
"rollup-plugin-preserve-directives": "^0.4.0",
|
|
104
86
|
"rollup-plugin-tsconfig-paths": "^1.5.2",
|
|
105
87
|
"semver": "^7.6.0",
|
|
106
|
-
"tsconfig": "workspace:*",
|
|
107
88
|
"typescript": "~5.4.3",
|
|
108
|
-
"vitest": "^3.2.4"
|
|
89
|
+
"vitest": "^3.2.4",
|
|
90
|
+
"eslint-config-custom": "0.0.0",
|
|
91
|
+
"tsconfig": "0.0.0"
|
|
109
92
|
},
|
|
110
93
|
"dependencies": {
|
|
111
94
|
"@ariakit/react": "^0.4.16",
|
|
@@ -130,5 +113,20 @@
|
|
|
130
113
|
"@types/react": {
|
|
131
114
|
"optional": true
|
|
132
115
|
}
|
|
116
|
+
},
|
|
117
|
+
"scripts": {
|
|
118
|
+
"prebuild": "npm run clean",
|
|
119
|
+
"build": "rollup --config",
|
|
120
|
+
"dev": "rollup --config --watch",
|
|
121
|
+
"lint": "eslint \"**/*.ts*\"",
|
|
122
|
+
"lint:fix": "eslint \"v1/**/*.ts*\" --fix",
|
|
123
|
+
"release": "pnpm publish --access public --no-git-checks",
|
|
124
|
+
"bump-version": "node scripts/bump-version.js",
|
|
125
|
+
"clean": "rm -rf .turbo && rm -rf dist",
|
|
126
|
+
"test": "vitest --run",
|
|
127
|
+
"test:watch": "vitest --watch",
|
|
128
|
+
"test:coverage": "vitest --coverage",
|
|
129
|
+
"test:ui": "vitest --ui",
|
|
130
|
+
"build:icons": "node scripts/create-icons.js"
|
|
133
131
|
}
|
|
134
132
|
}
|