sanity-plugin-iconify 4.0.2 โ 5.0.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/README.md +22 -3
- package/dist/index.cjs +13 -10
- package/dist/index.d.cts +31 -18
- package/dist/index.d.mts +31 -18
- package/dist/index.mjs +10 -7
- package/package.json +64 -71
- package/src/combobox/iconify-combobox.tsx +2 -1
- package/src/combobox/unset-button.tsx +1 -1
- package/src/iconify-input.tsx +1 -1
- package/src/lib/api.ts +0 -1
- package/src/lib/icon-types.gen.ts +1 -1
package/README.md
CHANGED
|
@@ -41,7 +41,9 @@ Enhance your [Sanity](https://www.sanity.io/) project with the Iconify plugin, w
|
|
|
41
41
|
|
|
42
42
|
## ๐ Getting Started
|
|
43
43
|
|
|
44
|
-
> **Requires Sanity Studio
|
|
44
|
+
> **Requires Sanity Studio v6.9.2 or later** โ the first release to ship [`@sanity/ui`](https://github.com/sanity-io/ui) v4. The plugin declares `@sanity/ui` as a peer dependency so it shares the Studio's own copy; a Studio that ships `@sanity/ui` v3 would load a second, separate copy and break React context.
|
|
45
|
+
>
|
|
46
|
+
> For Sanity Studio v5, or v6.0โv6.9.1, install `sanity-plugin-iconify@4`. For Sanity Studio v3/v4, use [v2.x](https://github.com/waspeer/sanity-plugin-iconify/tree/v2).
|
|
45
47
|
|
|
46
48
|
### Installation
|
|
47
49
|
|
|
@@ -281,9 +283,26 @@ git push origin new-feature-branch
|
|
|
281
283
|
|
|
282
284
|
## ๐งช Develop & test
|
|
283
285
|
|
|
284
|
-
|
|
286
|
+
The repo ships a dev studio in `dev/` that loads the plugin straight from `src/`.
|
|
287
|
+
Copy `dev/.env.example` to `dev/.env`, fill in a Sanity project id and dataset,
|
|
288
|
+
then:
|
|
285
289
|
|
|
286
|
-
|
|
290
|
+
```sh
|
|
291
|
+
pnpm install # or: vp install
|
|
292
|
+
pnpm dev # dev studio on http://localhost:3333
|
|
293
|
+
pnpm build # verify package, bundle with tsdown, check the dist output
|
|
294
|
+
pnpm test # unit/type tests (vitest)
|
|
295
|
+
pnpm test:e2e # playwright against the dev studio, running the plugin from src
|
|
296
|
+
pnpm test:e2e:dist # same specs against a production build of dist/
|
|
297
|
+
vp check # format, lint and type check (oxfmt + oxlint via vite-plus)
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Tooling is [vite-plus](https://viteplus.dev): `vp check --fix` also runs on
|
|
301
|
+
staged files through lefthook, which additionally lints commit messages with
|
|
302
|
+
commitlint (the changelog is generated from them).
|
|
303
|
+
|
|
304
|
+
[@sanity/plugin-kit](https://github.com/sanity-io/plugin-kit) is used for
|
|
305
|
+
`verify-package` only; bundling is done by [tsdown](https://tsdown.dev).
|
|
287
306
|
|
|
288
307
|
## ๐ Acknowledgments
|
|
289
308
|
|
package/dist/index.cjs
CHANGED
|
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
}
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
20
20
|
value: mod,
|
|
21
21
|
enumerable: true
|
|
22
22
|
}) : target, mod));
|
|
@@ -25,6 +25,8 @@ let sanity = require("sanity");
|
|
|
25
25
|
let _sanity_ui = require("@sanity/ui");
|
|
26
26
|
let _sanity_ui_theme = require("@sanity/ui/theme");
|
|
27
27
|
let react = require("react");
|
|
28
|
+
let _sanity_ui_popover = require("@sanity/ui/popover");
|
|
29
|
+
let _sanity_ui_toast = require("@sanity/ui/toast");
|
|
28
30
|
let downshift = require("downshift");
|
|
29
31
|
let ts_pattern = require("ts-pattern");
|
|
30
32
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
@@ -33,7 +35,7 @@ let styled_components = require("styled-components");
|
|
|
33
35
|
styled_components = __toESM(styled_components, 1);
|
|
34
36
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
35
37
|
let _iconify_react = require("@iconify/react");
|
|
36
|
-
let
|
|
38
|
+
let _sanity_icons_Trash = require("@sanity/icons/Trash");
|
|
37
39
|
let _iconify_utils = require("@iconify/utils");
|
|
38
40
|
let change_case = require("change-case");
|
|
39
41
|
//#region src/lib/api.ts
|
|
@@ -80,7 +82,7 @@ function useSearch({ collections }) {
|
|
|
80
82
|
},
|
|
81
83
|
enabled: debouncedTerm.length > 0,
|
|
82
84
|
placeholderData: _tanstack_react_query.keepPreviousData,
|
|
83
|
-
staleTime:
|
|
85
|
+
staleTime: 3e5
|
|
84
86
|
});
|
|
85
87
|
return {
|
|
86
88
|
term,
|
|
@@ -216,7 +218,7 @@ function UnsetButton(props) {
|
|
|
216
218
|
radius: 2,
|
|
217
219
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_sanity_ui.Button, {
|
|
218
220
|
"data-testid": "iconify-unset",
|
|
219
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
221
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_sanity_icons_Trash.TrashIcon, {}),
|
|
220
222
|
onClick: onUnset,
|
|
221
223
|
mode: "bleed",
|
|
222
224
|
fontSize: 1,
|
|
@@ -229,7 +231,7 @@ function UnsetButton(props) {
|
|
|
229
231
|
const IconifyCombobox = (0, react.memo)(function IconifyCombobox(props) {
|
|
230
232
|
const { selectedIcon, onSelect: pushSelection, collections, studioElementProps, fieldFocused } = props;
|
|
231
233
|
const id = (0, react.useId)();
|
|
232
|
-
const toast = (0,
|
|
234
|
+
const toast = (0, _sanity_ui_toast.useToast)();
|
|
233
235
|
const inputRef = (0, react.useRef)(null);
|
|
234
236
|
const composedInputRef = (0, react.useCallback)((node) => {
|
|
235
237
|
inputRef.current = node;
|
|
@@ -304,7 +306,7 @@ const IconifyCombobox = (0, react.memo)(function IconifyCombobox(props) {
|
|
|
304
306
|
onBlur: handleBlur,
|
|
305
307
|
selectedIcon,
|
|
306
308
|
suffix: selectedIcon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UnsetButton, { onUnset: handleUnset }) : null
|
|
307
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
309
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_sanity_ui_popover.Popover, {
|
|
308
310
|
open: true,
|
|
309
311
|
style: { display: isOpen ? "block" : "none" },
|
|
310
312
|
placement: "bottom",
|
|
@@ -350,15 +352,16 @@ const IconifyInput = (0, react.memo)(function IconifyInput(props) {
|
|
|
350
352
|
const options = schemaType.options;
|
|
351
353
|
const collections = !!options?.collections?.length && options.collections || !!config?.collections?.length && config.collections || null;
|
|
352
354
|
const showName = options?.showName ?? config?.showName ?? false;
|
|
355
|
+
const handleSelect = (0, react.useCallback)((icon) => {
|
|
356
|
+
pushChange(icon === "" ? (0, sanity.unset)() : (0, sanity.set)(icon, ["name"]));
|
|
357
|
+
}, [pushChange]);
|
|
353
358
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QueryClientProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_sanity_ui.ThemeProvider, {
|
|
354
359
|
theme,
|
|
355
360
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_sanity_ui.Stack, {
|
|
356
|
-
|
|
361
|
+
gap: 2,
|
|
357
362
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconifyCombobox, {
|
|
358
363
|
selectedIcon,
|
|
359
|
-
onSelect:
|
|
360
|
-
pushChange(icon === "" ? (0, sanity.unset)() : (0, sanity.set)(icon, ["name"]));
|
|
361
|
-
}, [pushChange]),
|
|
364
|
+
onSelect: handleSelect,
|
|
362
365
|
collections,
|
|
363
366
|
studioElementProps: elementProps,
|
|
364
367
|
fieldFocused: focused
|
package/dist/index.d.cts
CHANGED
|
@@ -1,37 +1,50 @@
|
|
|
1
1
|
import { BaseSchemaDefinition, BaseSchemaDefinition as BaseSchemaDefinition$1, ConditionalPropertyCallbackContext, FieldGroupDefinition, FieldsetDefinition, InitialValueProperty, ObjectOptions, RuleDef, ValidationBuilder } from "sanity";
|
|
2
|
-
|
|
3
2
|
//#region node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Icon set information block.
|
|
6
5
|
*/
|
|
7
6
|
interface IconifyInfo {
|
|
8
7
|
// Icon set name.
|
|
9
|
-
name: string;
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
name: string;
|
|
9
|
+
// Total number of icons.
|
|
10
|
+
total?: number;
|
|
11
|
+
// Version string.
|
|
12
|
+
version?: string;
|
|
13
|
+
// Author information.
|
|
12
14
|
author: {
|
|
13
15
|
// Author name.
|
|
14
|
-
name: string;
|
|
16
|
+
name: string;
|
|
17
|
+
// Link to author's website or icon set website.
|
|
15
18
|
url?: string;
|
|
16
|
-
};
|
|
19
|
+
};
|
|
20
|
+
// License
|
|
17
21
|
license: {
|
|
18
22
|
// Human readable license.
|
|
19
|
-
title: string;
|
|
20
|
-
|
|
23
|
+
title: string;
|
|
24
|
+
// SPDX license identifier.
|
|
25
|
+
spdx?: string;
|
|
26
|
+
// License URL.
|
|
21
27
|
url?: string;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
};
|
|
29
|
+
// Array of icons that should be used for samples in icon sets list.
|
|
30
|
+
samples?: string[];
|
|
31
|
+
// Icon grid: number or array of numbers.
|
|
32
|
+
height?: number | number[];
|
|
33
|
+
// Display height for samples: 16 - 24
|
|
34
|
+
displayHeight?: number;
|
|
35
|
+
// Category on Iconify collections list.
|
|
36
|
+
category?: string;
|
|
37
|
+
// List of tags to group similar icon sets.
|
|
38
|
+
tags?: string[];
|
|
39
|
+
// Palette status. True if icons have predefined color scheme, false if icons use currentColor.
|
|
28
40
|
// Ideally, icon set should not mix icons with and without palette to simplify search.
|
|
29
|
-
palette?: boolean;
|
|
41
|
+
palette?: boolean;
|
|
42
|
+
// If true, icon set should not appear in icon sets list.
|
|
30
43
|
hidden?: boolean;
|
|
31
44
|
}
|
|
32
45
|
//#endregion
|
|
33
46
|
//#region src/lib/icon-types.gen.d.ts
|
|
34
|
-
type IconPrefix = 'material-symbols' | 'material-symbols-light' | 'ic' | 'mdi' | 'mdi-light' | 'line-md' | 'solar' | 'tabler' | 'boxicons' | 'mingcute' | 'ri' | 'mynaui' | 'iconamoon' | 'iconoir' | 'lucide' | 'lucide-lab' | 'uil' | 'tdesign' | 'si' | 'majesticons' | 'gg' | 'flowbite' | 'basil' | 'pixelarticons' | 'pixel' | 'akar-icons' | 'ci' | 'proicons' | 'typcn' | 'meteor-icons' | 'prime' | 'circum' | 'fe' | 'eos-icons' | 'bitcoin-icons' | 'humbleicons' | 'uim' | 'uit' | 'uis' | 'gridicons' | 'mi' | 'cuida' | 'weui' | 'duo-icons' | 'svg-spinners' | 'hugeicons' | 'lets-icons' | 'streamline-ultimate' | 'streamline-plump' | 'streamline-sharp' | 'mage' | 'stash' | 'lineicons' | 'wordpress' | 'icon-park-outline' | 'icon-park-solid' | 'icon-park-twotone' | 'jam' | 'streamline-cyber' | 'guidance' | 'carbon' | 'ion' | 'famicons' | 'ant-design' | 'lsicon' | 'gravity-ui' | 'cil' | 'at-icons' | 'ep' | 'charm' | 'quill' | 'bytesize' | 'bi' | 'streamline-pixel' | 'streamline-block' | 'rivet-icons' | 'nimbus' | 'formkit' | 'fluent' | 'ph' | 'glyphs' | 'glyphs-poly' | 'teenyicons' | 'clarity' | 'streamline-freehand' | 'ix' | 'octicon' | 'memory' | 'system-uicons' | 'radix-icons' | 'zondicons' | 'uiw' | 'codex' | 'ei' | 'heroicons' | 'sidekickicons' | 'pepicons-pop' | 'pepicons-print' | 'pepicons-pencil' | 'f7' | 'pajamas' | 'garden' | 'streamline' | 'streamline-flex' | 'fa7-solid' | 'fa7-regular' | 'picon' | 'ooui' | 'oui' | 'nrk' | 'dinkie-icons' | 'qlementine-icons' | 'streamline-ultimate-color' | 'streamline-plump-color' | 'streamline-freehand-color' | 'streamline-kameleon-color' | 'streamline-stickies-color' | 'fluent-color' | 'streamline-color' | 'streamline-flex-color' | 'streamline-sharp-color' | 'streamline-cyber-color' | 'icon-park' | 'marketeq' | 'vscode-icons' | 'codicon' | 'material-icon-theme' | 'file-icons' | 'devicon' | 'devicon-plain' | 'catppuccin' | 'skill-icons' | 'gcp' | 'unjs' | 'simple-icons' | 'logos' | 'streamline-logos' | 'cib' | 'fa7-brands' | 'bxl' | 'nonicons' | 'arcticons' | 'cbi' | 'brandico' | 'entypo-social' | 'token' | 'token-branded' | 'cryptocurrency' | 'cryptocurrency-color' | 'openmoji' | 'twemoji' | 'noto' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'fxemoji' | 'streamline-emojis' | 'circle-flags' | 'flag' | 'flagpack' | 'cif' | 'pinhead' | 'roentgen' | 'maki' | 'temaki' | 'gis' | 'map' | 'geo' | 'game-icons' | 'fad' | 'academicons' | 'wi' | 'meteocons' | 'healthicons' | 'medical-icon' | 'covid' | 'ginetex' | 'la' | 'eva' | 'dashicons' | 'flat-color-icons' | 'entypo' | 'foundation' | 'raphael' | 'icons8' | 'iwwa' | 'gala' | 'heroicons-outline' | 'heroicons-solid' | 'bx' | 'bxs' | 'fa6-solid' | 'fa6-regular' | 'fa6-brands' | 'fa-solid' | 'fa-regular' | 'fa-brands' | 'fa' | 'fluent-mdl2' | 'fontisto' | 'icomoon-free' | 'subway' | 'oi' | 'wpf' | 'simple-line-icons' | 'et' | 'el' | 'vaadin' | 'grommet-icons' | 'whh' | 'si-glyph' | 'zmdi' | 'ls' | 'bpmn' | 'flat-ui' | 'vs' | 'topcoat' | 'il' | 'websymbol' | 'fontelico' | 'ps' | 'feather' | 'mono-icons' | 'pepicons' | 'fluent-emoji';
|
|
47
|
+
type IconPrefix = 'material-symbols' | 'material-symbols-light' | 'ic' | 'mdi' | 'mdi-light' | 'line-md' | 'solar' | 'tabler' | 'iconmind' | 'boxicons' | 'mingcute' | 'keyline-icons' | 'ri' | 'mynaui' | 'griddy-icons' | 'iconamoon' | 'iconoir' | 'lucide' | 'lucide-lab' | 'uil' | 'tdesign' | 'si' | 'majesticons' | 'gg' | 'flowbite' | 'vadivam' | 'basil' | 'pixelarticons' | 'pixel' | 'akar-icons' | 'ci' | 'proicons' | 'typcn' | 'meteor-icons' | 'prime' | 'circum' | 'fe' | 'eos-icons' | 'bitcoin-icons' | 'humbleicons' | 'uim' | 'uit' | 'uis' | 'gridicons' | 'mi' | 'cuida' | 'weui' | 'duo-icons' | 'svg-spinners' | 'reicon' | 'hugeicons' | 'lets-icons' | 'streamline-ultimate' | 'streamline-plump' | 'streamline-sharp' | 'mage' | 'stash' | 'lineicons' | 'wordpress' | 'icon-park-outline' | 'icon-park-solid' | 'icon-park-twotone' | 'jam' | 'streamline-cyber' | 'guidance' | 'carbon' | 'ion' | 'famicons' | 'ant-design' | 'lsicon' | 'gravity-ui' | 'cil' | 'at-icons' | 'ep' | 'charm' | 'quill' | 'bytesize' | 'bi' | 'streamline-pixel' | 'streamline-block' | 'rivet-icons' | 'nimbus' | 'formkit' | 'fluent' | 'ph' | 'glyphs' | 'glyphs-poly' | 'teenyicons' | 'clarity' | 'streamline-freehand' | 'ix' | 'octicon' | 'memory' | 'system-uicons' | 'radix-icons' | 'zondicons' | 'uiw' | 'codex' | 'ei' | 'heroicons' | 'sidekickicons' | 'pepicons-pop' | 'pepicons-print' | 'pepicons-pencil' | 'f7' | 'pajamas' | 'garden' | 'streamline' | 'streamline-flex' | 'fa7-solid' | 'fa7-regular' | 'picon' | 'ooui' | 'oui' | 'nrk' | 'dinkie-icons' | 'qlementine-icons' | 'streamline-ultimate-color' | 'streamline-plump-color' | 'streamline-freehand-color' | 'streamline-kameleon-color' | 'streamline-stickies-color' | 'fluent-color' | 'streamline-color' | 'streamline-flex-color' | 'streamline-sharp-color' | 'streamline-cyber-color' | 'icon-park' | 'marketeq' | 'vscode-icons' | 'codicon' | 'material-icon-theme' | 'file-icons' | 'devicon' | 'devicon-plain' | 'catppuccin' | 'skill-icons' | 'gcp' | 'k8s' | 'unjs' | 'simple-icons' | 'logos' | 'streamline-logos' | 'cib' | 'fa7-brands' | 'bxl' | 'nonicons' | 'arcticons' | 'thesvg' | 'thesvg-color' | 'selfhst' | 'cbi' | 'brandico' | 'entypo-social' | 'token' | 'token-branded' | 'cryptocurrency' | 'cryptocurrency-color' | 'openmoji' | 'twemoji' | 'noto' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'fxemoji' | 'streamline-emojis' | 'circle-flags' | 'flag' | 'flagpack' | 'cif' | 'pinhead' | 'roentgen' | 'maki' | 'temaki' | 'gis' | 'map' | 'geo' | 'osmic' | 'game-icons' | 'fad' | 'academicons' | 'wi' | 'meteocons' | 'healthicons' | 'medical-icon' | 'covid' | 'ginetex' | 'la' | 'eva' | 'dashicons' | 'flat-color-icons' | 'entypo' | 'foundation' | 'raphael' | 'icons8' | 'iwwa' | 'gala' | 'heroicons-outline' | 'heroicons-solid' | 'bx' | 'bxs' | 'fa6-solid' | 'fa6-regular' | 'fa6-brands' | 'fa-solid' | 'fa-regular' | 'fa-brands' | 'fa' | 'fluent-mdl2' | 'fontisto' | 'icomoon-free' | 'subway' | 'oi' | 'wpf' | 'simple-line-icons' | 'et' | 'el' | 'vaadin' | 'grommet-icons' | 'whh' | 'si-glyph' | 'zmdi' | 'ls' | 'bpmn' | 'flat-ui' | 'vs' | 'topcoat' | 'il' | 'websymbol' | 'fontelico' | 'ps' | 'feather' | 'mono-icons' | 'pepicons' | 'fluent-emoji';
|
|
35
48
|
//#endregion
|
|
36
49
|
//#region src/lib/types.d.ts
|
|
37
50
|
type IconOptions = {
|
|
@@ -84,6 +97,6 @@ declare module 'sanity' {
|
|
|
84
97
|
* })
|
|
85
98
|
* ```
|
|
86
99
|
*/
|
|
87
|
-
declare const iconify: import("sanity").Plugin<void | IconifyPluginConfig>;
|
|
100
|
+
export declare const iconify: import("sanity").Plugin<void | IconifyPluginConfig>;
|
|
88
101
|
//#endregion
|
|
89
|
-
export {
|
|
102
|
+
export type { BaseSchemaDefinition, IconConditionalProperty, IconConditionalPropertyCallbackContext, IconDefinition, IconOptions, IconPrefix, IconRule, IconValue, IconifyPluginConfig, IconifySearchResult };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,37 +1,50 @@
|
|
|
1
1
|
import { BaseSchemaDefinition, BaseSchemaDefinition as BaseSchemaDefinition$1, ConditionalPropertyCallbackContext, FieldGroupDefinition, FieldsetDefinition, InitialValueProperty, ObjectOptions, RuleDef, ValidationBuilder } from "sanity";
|
|
2
|
-
|
|
3
2
|
//#region node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Icon set information block.
|
|
6
5
|
*/
|
|
7
6
|
interface IconifyInfo {
|
|
8
7
|
// Icon set name.
|
|
9
|
-
name: string;
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
name: string;
|
|
9
|
+
// Total number of icons.
|
|
10
|
+
total?: number;
|
|
11
|
+
// Version string.
|
|
12
|
+
version?: string;
|
|
13
|
+
// Author information.
|
|
12
14
|
author: {
|
|
13
15
|
// Author name.
|
|
14
|
-
name: string;
|
|
16
|
+
name: string;
|
|
17
|
+
// Link to author's website or icon set website.
|
|
15
18
|
url?: string;
|
|
16
|
-
};
|
|
19
|
+
};
|
|
20
|
+
// License
|
|
17
21
|
license: {
|
|
18
22
|
// Human readable license.
|
|
19
|
-
title: string;
|
|
20
|
-
|
|
23
|
+
title: string;
|
|
24
|
+
// SPDX license identifier.
|
|
25
|
+
spdx?: string;
|
|
26
|
+
// License URL.
|
|
21
27
|
url?: string;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
};
|
|
29
|
+
// Array of icons that should be used for samples in icon sets list.
|
|
30
|
+
samples?: string[];
|
|
31
|
+
// Icon grid: number or array of numbers.
|
|
32
|
+
height?: number | number[];
|
|
33
|
+
// Display height for samples: 16 - 24
|
|
34
|
+
displayHeight?: number;
|
|
35
|
+
// Category on Iconify collections list.
|
|
36
|
+
category?: string;
|
|
37
|
+
// List of tags to group similar icon sets.
|
|
38
|
+
tags?: string[];
|
|
39
|
+
// Palette status. True if icons have predefined color scheme, false if icons use currentColor.
|
|
28
40
|
// Ideally, icon set should not mix icons with and without palette to simplify search.
|
|
29
|
-
palette?: boolean;
|
|
41
|
+
palette?: boolean;
|
|
42
|
+
// If true, icon set should not appear in icon sets list.
|
|
30
43
|
hidden?: boolean;
|
|
31
44
|
}
|
|
32
45
|
//#endregion
|
|
33
46
|
//#region src/lib/icon-types.gen.d.ts
|
|
34
|
-
type IconPrefix = 'material-symbols' | 'material-symbols-light' | 'ic' | 'mdi' | 'mdi-light' | 'line-md' | 'solar' | 'tabler' | 'boxicons' | 'mingcute' | 'ri' | 'mynaui' | 'iconamoon' | 'iconoir' | 'lucide' | 'lucide-lab' | 'uil' | 'tdesign' | 'si' | 'majesticons' | 'gg' | 'flowbite' | 'basil' | 'pixelarticons' | 'pixel' | 'akar-icons' | 'ci' | 'proicons' | 'typcn' | 'meteor-icons' | 'prime' | 'circum' | 'fe' | 'eos-icons' | 'bitcoin-icons' | 'humbleicons' | 'uim' | 'uit' | 'uis' | 'gridicons' | 'mi' | 'cuida' | 'weui' | 'duo-icons' | 'svg-spinners' | 'hugeicons' | 'lets-icons' | 'streamline-ultimate' | 'streamline-plump' | 'streamline-sharp' | 'mage' | 'stash' | 'lineicons' | 'wordpress' | 'icon-park-outline' | 'icon-park-solid' | 'icon-park-twotone' | 'jam' | 'streamline-cyber' | 'guidance' | 'carbon' | 'ion' | 'famicons' | 'ant-design' | 'lsicon' | 'gravity-ui' | 'cil' | 'at-icons' | 'ep' | 'charm' | 'quill' | 'bytesize' | 'bi' | 'streamline-pixel' | 'streamline-block' | 'rivet-icons' | 'nimbus' | 'formkit' | 'fluent' | 'ph' | 'glyphs' | 'glyphs-poly' | 'teenyicons' | 'clarity' | 'streamline-freehand' | 'ix' | 'octicon' | 'memory' | 'system-uicons' | 'radix-icons' | 'zondicons' | 'uiw' | 'codex' | 'ei' | 'heroicons' | 'sidekickicons' | 'pepicons-pop' | 'pepicons-print' | 'pepicons-pencil' | 'f7' | 'pajamas' | 'garden' | 'streamline' | 'streamline-flex' | 'fa7-solid' | 'fa7-regular' | 'picon' | 'ooui' | 'oui' | 'nrk' | 'dinkie-icons' | 'qlementine-icons' | 'streamline-ultimate-color' | 'streamline-plump-color' | 'streamline-freehand-color' | 'streamline-kameleon-color' | 'streamline-stickies-color' | 'fluent-color' | 'streamline-color' | 'streamline-flex-color' | 'streamline-sharp-color' | 'streamline-cyber-color' | 'icon-park' | 'marketeq' | 'vscode-icons' | 'codicon' | 'material-icon-theme' | 'file-icons' | 'devicon' | 'devicon-plain' | 'catppuccin' | 'skill-icons' | 'gcp' | 'unjs' | 'simple-icons' | 'logos' | 'streamline-logos' | 'cib' | 'fa7-brands' | 'bxl' | 'nonicons' | 'arcticons' | 'cbi' | 'brandico' | 'entypo-social' | 'token' | 'token-branded' | 'cryptocurrency' | 'cryptocurrency-color' | 'openmoji' | 'twemoji' | 'noto' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'fxemoji' | 'streamline-emojis' | 'circle-flags' | 'flag' | 'flagpack' | 'cif' | 'pinhead' | 'roentgen' | 'maki' | 'temaki' | 'gis' | 'map' | 'geo' | 'game-icons' | 'fad' | 'academicons' | 'wi' | 'meteocons' | 'healthicons' | 'medical-icon' | 'covid' | 'ginetex' | 'la' | 'eva' | 'dashicons' | 'flat-color-icons' | 'entypo' | 'foundation' | 'raphael' | 'icons8' | 'iwwa' | 'gala' | 'heroicons-outline' | 'heroicons-solid' | 'bx' | 'bxs' | 'fa6-solid' | 'fa6-regular' | 'fa6-brands' | 'fa-solid' | 'fa-regular' | 'fa-brands' | 'fa' | 'fluent-mdl2' | 'fontisto' | 'icomoon-free' | 'subway' | 'oi' | 'wpf' | 'simple-line-icons' | 'et' | 'el' | 'vaadin' | 'grommet-icons' | 'whh' | 'si-glyph' | 'zmdi' | 'ls' | 'bpmn' | 'flat-ui' | 'vs' | 'topcoat' | 'il' | 'websymbol' | 'fontelico' | 'ps' | 'feather' | 'mono-icons' | 'pepicons' | 'fluent-emoji';
|
|
47
|
+
type IconPrefix = 'material-symbols' | 'material-symbols-light' | 'ic' | 'mdi' | 'mdi-light' | 'line-md' | 'solar' | 'tabler' | 'iconmind' | 'boxicons' | 'mingcute' | 'keyline-icons' | 'ri' | 'mynaui' | 'griddy-icons' | 'iconamoon' | 'iconoir' | 'lucide' | 'lucide-lab' | 'uil' | 'tdesign' | 'si' | 'majesticons' | 'gg' | 'flowbite' | 'vadivam' | 'basil' | 'pixelarticons' | 'pixel' | 'akar-icons' | 'ci' | 'proicons' | 'typcn' | 'meteor-icons' | 'prime' | 'circum' | 'fe' | 'eos-icons' | 'bitcoin-icons' | 'humbleicons' | 'uim' | 'uit' | 'uis' | 'gridicons' | 'mi' | 'cuida' | 'weui' | 'duo-icons' | 'svg-spinners' | 'reicon' | 'hugeicons' | 'lets-icons' | 'streamline-ultimate' | 'streamline-plump' | 'streamline-sharp' | 'mage' | 'stash' | 'lineicons' | 'wordpress' | 'icon-park-outline' | 'icon-park-solid' | 'icon-park-twotone' | 'jam' | 'streamline-cyber' | 'guidance' | 'carbon' | 'ion' | 'famicons' | 'ant-design' | 'lsicon' | 'gravity-ui' | 'cil' | 'at-icons' | 'ep' | 'charm' | 'quill' | 'bytesize' | 'bi' | 'streamline-pixel' | 'streamline-block' | 'rivet-icons' | 'nimbus' | 'formkit' | 'fluent' | 'ph' | 'glyphs' | 'glyphs-poly' | 'teenyicons' | 'clarity' | 'streamline-freehand' | 'ix' | 'octicon' | 'memory' | 'system-uicons' | 'radix-icons' | 'zondicons' | 'uiw' | 'codex' | 'ei' | 'heroicons' | 'sidekickicons' | 'pepicons-pop' | 'pepicons-print' | 'pepicons-pencil' | 'f7' | 'pajamas' | 'garden' | 'streamline' | 'streamline-flex' | 'fa7-solid' | 'fa7-regular' | 'picon' | 'ooui' | 'oui' | 'nrk' | 'dinkie-icons' | 'qlementine-icons' | 'streamline-ultimate-color' | 'streamline-plump-color' | 'streamline-freehand-color' | 'streamline-kameleon-color' | 'streamline-stickies-color' | 'fluent-color' | 'streamline-color' | 'streamline-flex-color' | 'streamline-sharp-color' | 'streamline-cyber-color' | 'icon-park' | 'marketeq' | 'vscode-icons' | 'codicon' | 'material-icon-theme' | 'file-icons' | 'devicon' | 'devicon-plain' | 'catppuccin' | 'skill-icons' | 'gcp' | 'k8s' | 'unjs' | 'simple-icons' | 'logos' | 'streamline-logos' | 'cib' | 'fa7-brands' | 'bxl' | 'nonicons' | 'arcticons' | 'thesvg' | 'thesvg-color' | 'selfhst' | 'cbi' | 'brandico' | 'entypo-social' | 'token' | 'token-branded' | 'cryptocurrency' | 'cryptocurrency-color' | 'openmoji' | 'twemoji' | 'noto' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'fxemoji' | 'streamline-emojis' | 'circle-flags' | 'flag' | 'flagpack' | 'cif' | 'pinhead' | 'roentgen' | 'maki' | 'temaki' | 'gis' | 'map' | 'geo' | 'osmic' | 'game-icons' | 'fad' | 'academicons' | 'wi' | 'meteocons' | 'healthicons' | 'medical-icon' | 'covid' | 'ginetex' | 'la' | 'eva' | 'dashicons' | 'flat-color-icons' | 'entypo' | 'foundation' | 'raphael' | 'icons8' | 'iwwa' | 'gala' | 'heroicons-outline' | 'heroicons-solid' | 'bx' | 'bxs' | 'fa6-solid' | 'fa6-regular' | 'fa6-brands' | 'fa-solid' | 'fa-regular' | 'fa-brands' | 'fa' | 'fluent-mdl2' | 'fontisto' | 'icomoon-free' | 'subway' | 'oi' | 'wpf' | 'simple-line-icons' | 'et' | 'el' | 'vaadin' | 'grommet-icons' | 'whh' | 'si-glyph' | 'zmdi' | 'ls' | 'bpmn' | 'flat-ui' | 'vs' | 'topcoat' | 'il' | 'websymbol' | 'fontelico' | 'ps' | 'feather' | 'mono-icons' | 'pepicons' | 'fluent-emoji';
|
|
35
48
|
//#endregion
|
|
36
49
|
//#region src/lib/types.d.ts
|
|
37
50
|
type IconOptions = {
|
|
@@ -84,6 +97,6 @@ declare module 'sanity' {
|
|
|
84
97
|
* })
|
|
85
98
|
* ```
|
|
86
99
|
*/
|
|
87
|
-
declare const iconify: import("sanity").Plugin<void | IconifyPluginConfig>;
|
|
100
|
+
export declare const iconify: import("sanity").Plugin<void | IconifyPluginConfig>;
|
|
88
101
|
//#endregion
|
|
89
|
-
export {
|
|
102
|
+
export type { BaseSchemaDefinition, IconConditionalProperty, IconConditionalPropertyCallbackContext, IconDefinition, IconOptions, IconPrefix, IconRule, IconValue, IconifyPluginConfig, IconifySearchResult };
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { definePlugin, set, unset } from "sanity";
|
|
2
|
-
import { Box, Button, Card, Flex, Grid,
|
|
2
|
+
import { Box, Button, Card, Flex, Grid, Stack, Text, TextInput, ThemeProvider } from "@sanity/ui";
|
|
3
3
|
import { buildTheme } from "@sanity/ui/theme";
|
|
4
4
|
import { forwardRef, memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { Popover } from "@sanity/ui/popover";
|
|
6
|
+
import { useToast } from "@sanity/ui/toast";
|
|
5
7
|
import { useCombobox } from "downshift";
|
|
6
8
|
import { match } from "ts-pattern";
|
|
7
9
|
import { QueryClient, QueryClientProvider, keepPreviousData, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
@@ -9,7 +11,7 @@ import { useDebounce } from "use-debounce";
|
|
|
9
11
|
import styled from "styled-components";
|
|
10
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
11
13
|
import { Icon } from "@iconify/react";
|
|
12
|
-
import { TrashIcon } from "@sanity/icons";
|
|
14
|
+
import { TrashIcon } from "@sanity/icons/Trash";
|
|
13
15
|
import { stringToIcon } from "@iconify/utils";
|
|
14
16
|
import { sentenceCase } from "change-case";
|
|
15
17
|
//#region src/lib/api.ts
|
|
@@ -56,7 +58,7 @@ function useSearch({ collections }) {
|
|
|
56
58
|
},
|
|
57
59
|
enabled: debouncedTerm.length > 0,
|
|
58
60
|
placeholderData: keepPreviousData,
|
|
59
|
-
staleTime:
|
|
61
|
+
staleTime: 3e5
|
|
60
62
|
});
|
|
61
63
|
return {
|
|
62
64
|
term,
|
|
@@ -326,15 +328,16 @@ const IconifyInput = memo(function IconifyInput(props) {
|
|
|
326
328
|
const options = schemaType.options;
|
|
327
329
|
const collections = !!options?.collections?.length && options.collections || !!config?.collections?.length && config.collections || null;
|
|
328
330
|
const showName = options?.showName ?? config?.showName ?? false;
|
|
331
|
+
const handleSelect = useCallback((icon) => {
|
|
332
|
+
pushChange(icon === "" ? unset() : set(icon, ["name"]));
|
|
333
|
+
}, [pushChange]);
|
|
329
334
|
return /* @__PURE__ */ jsx(QueryClientProvider$1, { children: /* @__PURE__ */ jsx(ThemeProvider, {
|
|
330
335
|
theme,
|
|
331
336
|
children: /* @__PURE__ */ jsxs(Stack, {
|
|
332
|
-
|
|
337
|
+
gap: 2,
|
|
333
338
|
children: [/* @__PURE__ */ jsx(IconifyCombobox, {
|
|
334
339
|
selectedIcon,
|
|
335
|
-
onSelect:
|
|
336
|
-
pushChange(icon === "" ? unset() : set(icon, ["name"]));
|
|
337
|
-
}, [pushChange]),
|
|
340
|
+
onSelect: handleSelect,
|
|
338
341
|
collections,
|
|
339
342
|
studioElementProps: elementProps,
|
|
340
343
|
fieldFocused: focused
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sanity-plugin-iconify",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"description": "Icon picker based on Iconify",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
@@ -10,14 +10,23 @@
|
|
|
10
10
|
"bugs": {
|
|
11
11
|
"url": "https://github.com/waspeer/sanity-plugin-iconify/issues"
|
|
12
12
|
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "Wannes Salomรฉ <mail@wannessalome.nl>",
|
|
13
15
|
"repository": {
|
|
14
16
|
"type": "git",
|
|
15
17
|
"url": "git+ssh://git@github.com/waspeer/sanity-plugin-iconify.git"
|
|
16
18
|
},
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"sanity.json",
|
|
22
|
+
"src",
|
|
23
|
+
"v2-incompatible.js"
|
|
24
|
+
],
|
|
20
25
|
"type": "module",
|
|
26
|
+
"sideEffects": true,
|
|
27
|
+
"main": "./dist/index.cjs",
|
|
28
|
+
"module": "./dist/index.mjs",
|
|
29
|
+
"types": "./dist/index.d.mts",
|
|
21
30
|
"exports": {
|
|
22
31
|
".": {
|
|
23
32
|
"source": "./src/index.ts",
|
|
@@ -32,15 +41,6 @@
|
|
|
32
41
|
},
|
|
33
42
|
"./package.json": "./package.json"
|
|
34
43
|
},
|
|
35
|
-
"main": "./dist/index.cjs",
|
|
36
|
-
"module": "./dist/index.mjs",
|
|
37
|
-
"types": "./dist/index.d.mts",
|
|
38
|
-
"files": [
|
|
39
|
-
"dist",
|
|
40
|
-
"sanity.json",
|
|
41
|
-
"src",
|
|
42
|
-
"v2-incompatible.js"
|
|
43
|
-
],
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "run-s build:verify build:bundle build:check",
|
|
46
46
|
"build:bundle": "tsdown",
|
|
@@ -48,9 +48,7 @@
|
|
|
48
48
|
"build:verify": "plugin-kit verify-package --silent",
|
|
49
49
|
"dev": "vite dev --config dev/vite.config.ts",
|
|
50
50
|
"dev:dist": "vite build --config dev/vite.config.ts && vite preview --config dev/vite.config.ts",
|
|
51
|
-
"format": "prettier --write --cache --ignore-unknown .",
|
|
52
51
|
"generate-types": "node src/lib/generate-types",
|
|
53
|
-
"lint": "eslint .",
|
|
54
52
|
"prepublishOnly": "node scripts/check-dist.mjs",
|
|
55
53
|
"release": "release-it",
|
|
56
54
|
"test": "vitest run",
|
|
@@ -62,60 +60,58 @@
|
|
|
62
60
|
"test:watch": "vitest",
|
|
63
61
|
"watch": "tsdown --watch"
|
|
64
62
|
},
|
|
65
|
-
"browserslist": "extends @sanity/browserslist-config",
|
|
66
63
|
"dependencies": {
|
|
67
64
|
"@iconify/react": "^6.0.2",
|
|
68
|
-
"@iconify/utils": "^3.1.
|
|
69
|
-
"@sanity/icons": "^
|
|
65
|
+
"@iconify/utils": "^3.1.7",
|
|
66
|
+
"@sanity/icons": "^5.2.1",
|
|
70
67
|
"@sanity/incompatible-plugin": "^1.0.5",
|
|
71
|
-
"@
|
|
72
|
-
"@tanstack/react-query": "^5.101.0",
|
|
68
|
+
"@tanstack/react-query": "^5.102.8",
|
|
73
69
|
"change-case": "^5.4.4",
|
|
74
|
-
"downshift": "^9.
|
|
70
|
+
"downshift": "^9.4.0",
|
|
75
71
|
"ts-pattern": "^5.9.0",
|
|
76
72
|
"use-debounce": "^10.1.1"
|
|
77
73
|
},
|
|
78
74
|
"devDependencies": {
|
|
79
|
-
"@commitlint/cli": "^21.
|
|
80
|
-
"@commitlint/config-conventional": "^21.
|
|
81
|
-
"@iconify/json": "^2.2.
|
|
75
|
+
"@commitlint/cli": "^21.2.2",
|
|
76
|
+
"@commitlint/config-conventional": "^21.2.2",
|
|
77
|
+
"@iconify/json": "^2.2.526",
|
|
82
78
|
"@iconify/types": "^2.0.0",
|
|
83
|
-
"@playwright/test": "^1.
|
|
84
|
-
"@release-it/conventional-changelog": "^
|
|
85
|
-
"@sanity/
|
|
86
|
-
"@
|
|
87
|
-
"@
|
|
88
|
-
"@
|
|
89
|
-
"@types/
|
|
90
|
-
"@
|
|
91
|
-
"@
|
|
92
|
-
"@
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"react": "^19.
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"vite": "^8.0.2",
|
|
108
|
-
"vitest": "^4.1.9"
|
|
79
|
+
"@playwright/test": "^1.63.0",
|
|
80
|
+
"@release-it/conventional-changelog": "^12.0.0",
|
|
81
|
+
"@sanity/pkg-utils": "^12.3.4",
|
|
82
|
+
"@sanity/plugin-kit": "^10.0.9",
|
|
83
|
+
"@sanity/ui": "^4.2.0",
|
|
84
|
+
"@tanstack/react-query-devtools": "^5.102.8",
|
|
85
|
+
"@types/react": "^19.3.0",
|
|
86
|
+
"@types/react-dom": "^19.3.0",
|
|
87
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
88
|
+
"@vitest/ui": "^5.0.0",
|
|
89
|
+
"lefthook": "^2.1.12",
|
|
90
|
+
"npm-run-all2": "^9.0.3",
|
|
91
|
+
"publint": "^0.3.24",
|
|
92
|
+
"react": "^19.3.0",
|
|
93
|
+
"react-dom": "^19.3.0",
|
|
94
|
+
"react-is": "^19.3.0",
|
|
95
|
+
"release-it": "^21.0.2",
|
|
96
|
+
"sanity": "^6.13.1",
|
|
97
|
+
"tsdown": "^0.23.0",
|
|
98
|
+
"tsx": "^4.23.13",
|
|
99
|
+
"typescript": "^7.0.2",
|
|
100
|
+
"vite": "^8.2.2",
|
|
101
|
+
"vite-plus": "^0.3.1",
|
|
102
|
+
"vitest": "^5.0.0"
|
|
109
103
|
},
|
|
110
104
|
"peerDependencies": {
|
|
105
|
+
"@sanity/ui": "^4.0.1",
|
|
111
106
|
"react": "^19.2",
|
|
112
|
-
"sanity": "^
|
|
107
|
+
"sanity": "^6.9.2",
|
|
113
108
|
"styled-components": "^6"
|
|
114
109
|
},
|
|
115
|
-
"
|
|
110
|
+
"browserslist": "extends @sanity/browserslist-config",
|
|
116
111
|
"engines": {
|
|
117
112
|
"node": ">=22.12"
|
|
118
113
|
},
|
|
114
|
+
"packageManager": "pnpm@10.17.0",
|
|
119
115
|
"pnpm": {
|
|
120
116
|
"onlyBuiltDependencies": [
|
|
121
117
|
"esbuild",
|
|
@@ -123,33 +119,30 @@
|
|
|
123
119
|
"unrs-resolver"
|
|
124
120
|
],
|
|
125
121
|
"overrides": {
|
|
126
|
-
"@babel/core@<7.29.6": ">=7.29.6",
|
|
127
|
-
"@isaacs/brace-expansion@<5.0.1": ">=5.0.1",
|
|
128
|
-
"@typescript-eslint/utils": "^8.61.1",
|
|
129
|
-
"brace-expansion@>=4.0.0 <5.0.6": ">=5.0.6",
|
|
130
122
|
"brace-expansion@<2.0.3": ">=2.0.3",
|
|
131
|
-
"esbuild@<0.28.1": ">=0.28.1",
|
|
132
|
-
"follow-redirects@<1.16.0": ">=1.16.0",
|
|
133
|
-
"lodash@<4.17.23": ">=4.17.23",
|
|
134
|
-
"micromatch@<4.0.8": ">=4.0.8",
|
|
135
123
|
"minimatch@<10.2.3": ">=10.2.3",
|
|
136
|
-
"picomatch@<4.0.4": ">=4.0.4"
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
"
|
|
124
|
+
"picomatch@<4.0.4": ">=4.0.4"
|
|
125
|
+
},
|
|
126
|
+
"peerDependencyRules": {
|
|
127
|
+
"allowAny": [
|
|
128
|
+
"vite",
|
|
129
|
+
"vitest"
|
|
130
|
+
],
|
|
131
|
+
"allowedVersions": {
|
|
132
|
+
"vite": "*",
|
|
133
|
+
"vitest": "*"
|
|
134
|
+
}
|
|
144
135
|
}
|
|
145
136
|
},
|
|
146
137
|
"sanityPlugin": {
|
|
147
138
|
"verifyPackage": {
|
|
148
|
-
"
|
|
149
|
-
"
|
|
139
|
+
"bannedFiles": false,
|
|
140
|
+
"esmOnly": false,
|
|
150
141
|
"nodeEngine": false,
|
|
142
|
+
"oxfmt": false,
|
|
143
|
+
"oxlint": false,
|
|
151
144
|
"pkg-utils": false,
|
|
152
|
-
"
|
|
145
|
+
"scripts": false,
|
|
153
146
|
"tsconfig": false
|
|
154
147
|
}
|
|
155
148
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Popover
|
|
1
|
+
import { Popover } from '@sanity/ui/popover';
|
|
2
|
+
import { useToast } from '@sanity/ui/toast';
|
|
2
3
|
import { useCombobox } from 'downshift';
|
|
3
4
|
import { memo, useCallback, useEffect, useId, useRef } from 'react';
|
|
4
5
|
import type { ObjectInputProps } from 'sanity';
|
package/src/iconify-input.tsx
CHANGED
|
@@ -36,7 +36,7 @@ export const IconifyInput = memo(function IconifyInput(props: IconifyInputProps)
|
|
|
36
36
|
return (
|
|
37
37
|
<QueryClientProvider>
|
|
38
38
|
<ThemeProvider theme={theme}>
|
|
39
|
-
<Stack
|
|
39
|
+
<Stack gap={2}>
|
|
40
40
|
<IconifyCombobox
|
|
41
41
|
selectedIcon={selectedIcon}
|
|
42
42
|
onSelect={handleSelect}
|
package/src/lib/api.ts
CHANGED
|
@@ -44,7 +44,6 @@ export function useSearch({ collections }: { collections: string[] | null }) {
|
|
|
44
44
|
[setDebouncedTerm],
|
|
45
45
|
);
|
|
46
46
|
|
|
47
|
-
// eslint-disable-next-line @tanstack/query/exhaustive-deps -- queryClient from useQueryClient() is a stable reference, not a query dependency
|
|
48
47
|
const { isLoading, isError, error, data, isPlaceholderData } = useQuery<string[], Error>({
|
|
49
48
|
queryKey: ['search', collections, debouncedTerm],
|
|
50
49
|
queryFn: async ({ signal }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type IconPrefix = 'material-symbols' | 'material-symbols-light' | 'ic' | 'mdi' | 'mdi-light' | 'line-md' | 'solar' | 'tabler' | 'boxicons' | 'mingcute' | 'ri' | 'mynaui' | 'iconamoon' | 'iconoir' | 'lucide' | 'lucide-lab' | 'uil' | 'tdesign' | 'si' | 'majesticons' | 'gg' | 'flowbite' | 'basil' | 'pixelarticons' | 'pixel' | 'akar-icons' | 'ci' | 'proicons' | 'typcn' | 'meteor-icons' | 'prime' | 'circum' | 'fe' | 'eos-icons' | 'bitcoin-icons' | 'humbleicons' | 'uim' | 'uit' | 'uis' | 'gridicons' | 'mi' | 'cuida' | 'weui' | 'duo-icons' | 'svg-spinners' | 'hugeicons' | 'lets-icons' | 'streamline-ultimate' | 'streamline-plump' | 'streamline-sharp' | 'mage' | 'stash' | 'lineicons' | 'wordpress' | 'icon-park-outline' | 'icon-park-solid' | 'icon-park-twotone' | 'jam' | 'streamline-cyber' | 'guidance' | 'carbon' | 'ion' | 'famicons' | 'ant-design' | 'lsicon' | 'gravity-ui' | 'cil' | 'at-icons' | 'ep' | 'charm' | 'quill' | 'bytesize' | 'bi' | 'streamline-pixel' | 'streamline-block' | 'rivet-icons' | 'nimbus' | 'formkit' | 'fluent' | 'ph' | 'glyphs' | 'glyphs-poly' | 'teenyicons' | 'clarity' | 'streamline-freehand' | 'ix' | 'octicon' | 'memory' | 'system-uicons' | 'radix-icons' | 'zondicons' | 'uiw' | 'codex' | 'ei' | 'heroicons' | 'sidekickicons' | 'pepicons-pop' | 'pepicons-print' | 'pepicons-pencil' | 'f7' | 'pajamas' | 'garden' | 'streamline' | 'streamline-flex' | 'fa7-solid' | 'fa7-regular' | 'picon' | 'ooui' | 'oui' | 'nrk' | 'dinkie-icons' | 'qlementine-icons' | 'streamline-ultimate-color' | 'streamline-plump-color' | 'streamline-freehand-color' | 'streamline-kameleon-color' | 'streamline-stickies-color' | 'fluent-color' | 'streamline-color' | 'streamline-flex-color' | 'streamline-sharp-color' | 'streamline-cyber-color' | 'icon-park' | 'marketeq' | 'vscode-icons' | 'codicon' | 'material-icon-theme' | 'file-icons' | 'devicon' | 'devicon-plain' | 'catppuccin' | 'skill-icons' | 'gcp' | 'unjs' | 'simple-icons' | 'logos' | 'streamline-logos' | 'cib' | 'fa7-brands' | 'bxl' | 'nonicons' | 'arcticons' | 'cbi' | 'brandico' | 'entypo-social' | 'token' | 'token-branded' | 'cryptocurrency' | 'cryptocurrency-color' | 'openmoji' | 'twemoji' | 'noto' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'fxemoji' | 'streamline-emojis' | 'circle-flags' | 'flag' | 'flagpack' | 'cif' | 'pinhead' | 'roentgen' | 'maki' | 'temaki' | 'gis' | 'map' | 'geo' | 'game-icons' | 'fad' | 'academicons' | 'wi' | 'meteocons' | 'healthicons' | 'medical-icon' | 'covid' | 'ginetex' | 'la' | 'eva' | 'dashicons' | 'flat-color-icons' | 'entypo' | 'foundation' | 'raphael' | 'icons8' | 'iwwa' | 'gala' | 'heroicons-outline' | 'heroicons-solid' | 'bx' | 'bxs' | 'fa6-solid' | 'fa6-regular' | 'fa6-brands' | 'fa-solid' | 'fa-regular' | 'fa-brands' | 'fa' | 'fluent-mdl2' | 'fontisto' | 'icomoon-free' | 'subway' | 'oi' | 'wpf' | 'simple-line-icons' | 'et' | 'el' | 'vaadin' | 'grommet-icons' | 'whh' | 'si-glyph' | 'zmdi' | 'ls' | 'bpmn' | 'flat-ui' | 'vs' | 'topcoat' | 'il' | 'websymbol' | 'fontelico' | 'ps' | 'feather' | 'mono-icons' | 'pepicons' | 'fluent-emoji';
|
|
1
|
+
export type IconPrefix = 'material-symbols' | 'material-symbols-light' | 'ic' | 'mdi' | 'mdi-light' | 'line-md' | 'solar' | 'tabler' | 'iconmind' | 'boxicons' | 'mingcute' | 'keyline-icons' | 'ri' | 'mynaui' | 'griddy-icons' | 'iconamoon' | 'iconoir' | 'lucide' | 'lucide-lab' | 'uil' | 'tdesign' | 'si' | 'majesticons' | 'gg' | 'flowbite' | 'vadivam' | 'basil' | 'pixelarticons' | 'pixel' | 'akar-icons' | 'ci' | 'proicons' | 'typcn' | 'meteor-icons' | 'prime' | 'circum' | 'fe' | 'eos-icons' | 'bitcoin-icons' | 'humbleicons' | 'uim' | 'uit' | 'uis' | 'gridicons' | 'mi' | 'cuida' | 'weui' | 'duo-icons' | 'svg-spinners' | 'reicon' | 'hugeicons' | 'lets-icons' | 'streamline-ultimate' | 'streamline-plump' | 'streamline-sharp' | 'mage' | 'stash' | 'lineicons' | 'wordpress' | 'icon-park-outline' | 'icon-park-solid' | 'icon-park-twotone' | 'jam' | 'streamline-cyber' | 'guidance' | 'carbon' | 'ion' | 'famicons' | 'ant-design' | 'lsicon' | 'gravity-ui' | 'cil' | 'at-icons' | 'ep' | 'charm' | 'quill' | 'bytesize' | 'bi' | 'streamline-pixel' | 'streamline-block' | 'rivet-icons' | 'nimbus' | 'formkit' | 'fluent' | 'ph' | 'glyphs' | 'glyphs-poly' | 'teenyicons' | 'clarity' | 'streamline-freehand' | 'ix' | 'octicon' | 'memory' | 'system-uicons' | 'radix-icons' | 'zondicons' | 'uiw' | 'codex' | 'ei' | 'heroicons' | 'sidekickicons' | 'pepicons-pop' | 'pepicons-print' | 'pepicons-pencil' | 'f7' | 'pajamas' | 'garden' | 'streamline' | 'streamline-flex' | 'fa7-solid' | 'fa7-regular' | 'picon' | 'ooui' | 'oui' | 'nrk' | 'dinkie-icons' | 'qlementine-icons' | 'streamline-ultimate-color' | 'streamline-plump-color' | 'streamline-freehand-color' | 'streamline-kameleon-color' | 'streamline-stickies-color' | 'fluent-color' | 'streamline-color' | 'streamline-flex-color' | 'streamline-sharp-color' | 'streamline-cyber-color' | 'icon-park' | 'marketeq' | 'vscode-icons' | 'codicon' | 'material-icon-theme' | 'file-icons' | 'devicon' | 'devicon-plain' | 'catppuccin' | 'skill-icons' | 'gcp' | 'k8s' | 'unjs' | 'simple-icons' | 'logos' | 'streamline-logos' | 'cib' | 'fa7-brands' | 'bxl' | 'nonicons' | 'arcticons' | 'thesvg' | 'thesvg-color' | 'selfhst' | 'cbi' | 'brandico' | 'entypo-social' | 'token' | 'token-branded' | 'cryptocurrency' | 'cryptocurrency-color' | 'openmoji' | 'twemoji' | 'noto' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'fxemoji' | 'streamline-emojis' | 'circle-flags' | 'flag' | 'flagpack' | 'cif' | 'pinhead' | 'roentgen' | 'maki' | 'temaki' | 'gis' | 'map' | 'geo' | 'osmic' | 'game-icons' | 'fad' | 'academicons' | 'wi' | 'meteocons' | 'healthicons' | 'medical-icon' | 'covid' | 'ginetex' | 'la' | 'eva' | 'dashicons' | 'flat-color-icons' | 'entypo' | 'foundation' | 'raphael' | 'icons8' | 'iwwa' | 'gala' | 'heroicons-outline' | 'heroicons-solid' | 'bx' | 'bxs' | 'fa6-solid' | 'fa6-regular' | 'fa6-brands' | 'fa-solid' | 'fa-regular' | 'fa-brands' | 'fa' | 'fluent-mdl2' | 'fontisto' | 'icomoon-free' | 'subway' | 'oi' | 'wpf' | 'simple-line-icons' | 'et' | 'el' | 'vaadin' | 'grommet-icons' | 'whh' | 'si-glyph' | 'zmdi' | 'ls' | 'bpmn' | 'flat-ui' | 'vs' | 'topcoat' | 'il' | 'websymbol' | 'fontelico' | 'ps' | 'feather' | 'mono-icons' | 'pepicons' | 'fluent-emoji';
|