@nice2dev/icons 1.2.1 → 1.3.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/CHANGELOG.md +538 -0
- package/README.md +146 -134
- package/dist/cjs/NiceDesktopIconExporter.js +7 -3
- package/dist/cjs/NiceFaviconGenerator.js +6 -2
- package/dist/cjs/NiceIconPicker.js +36 -28
- package/dist/cjs/NiceIconPreview.js +3 -1
- package/dist/cjs/NiceIconSetCreator.js +7 -2
- package/dist/cjs/NtdIconBadge.js +18 -3
- package/dist/cjs/NtdIconMorph.js +3 -1
- package/dist/cjs/createIcon.js +10 -2
- package/dist/cjs/design-tokens.js +2 -0
- package/dist/cjs/iconMetadata.js +4 -0
- package/dist/cjs/iconParts.js +49 -0
- package/dist/cjs/icons/accessibility.js +12 -4
- package/dist/cjs/icons/actions.js +89 -25
- package/dist/cjs/icons/business.js +58 -28
- package/dist/cjs/icons/ecommerce.js +0 -20
- package/dist/cjs/icons/education.js +22 -9
- package/dist/cjs/icons/files.js +70 -56
- package/dist/cjs/icons/fun.js +39 -25
- package/dist/cjs/icons/gaming.js +29 -4
- package/dist/cjs/icons/health.js +11 -4
- package/dist/cjs/icons/index.js +63 -5
- package/dist/cjs/icons/input.js +120 -0
- package/dist/cjs/icons/legal.js +4 -9
- package/dist/cjs/icons/media.js +26 -11
- package/dist/cjs/icons/navigation.js +4 -2
- package/dist/cjs/icons/omniverk.js +19 -6
- package/dist/cjs/icons/realestate.js +10 -4
- package/dist/cjs/icons/saas.js +15 -4
- package/dist/cjs/icons/science.js +6 -3
- package/dist/cjs/icons/shapes.js +133 -31
- package/dist/cjs/icons/sports.js +6 -2
- package/dist/cjs/icons/ui.js +62 -20
- package/dist/cjs/icons/weather.js +18 -8
- package/dist/cjs/index.js +63 -5
- package/dist/cjs/nicetodev-icons.css +1 -1
- package/dist/cjs/resolver.js +55 -1
- package/dist/cjs/rsc.js +1 -1
- package/dist/cjs/utilities.js +4 -2
- package/dist/esm/NiceDesktopIconExporter.js +7 -3
- package/dist/esm/NiceFaviconGenerator.js +6 -2
- package/dist/esm/NiceIconPicker.js +37 -29
- package/dist/esm/NiceIconPreview.js +3 -1
- package/dist/esm/NiceIconSetCreator.js +7 -2
- package/dist/esm/NtdIconBadge.js +18 -3
- package/dist/esm/NtdIconMorph.js +3 -1
- package/dist/esm/createIcon.js +10 -2
- package/dist/esm/design-tokens.js +2 -0
- package/dist/esm/iconMetadata.js +4 -0
- package/dist/esm/iconParts.js +46 -0
- package/dist/esm/icons/accessibility.js +12 -4
- package/dist/esm/icons/actions.js +87 -26
- package/dist/esm/icons/business.js +58 -29
- package/dist/esm/icons/ecommerce.js +1 -19
- package/dist/esm/icons/education.js +22 -10
- package/dist/esm/icons/files.js +70 -56
- package/dist/esm/icons/fun.js +37 -25
- package/dist/esm/icons/gaming.js +29 -5
- package/dist/esm/icons/health.js +11 -4
- package/dist/esm/icons/index.js +10 -9
- package/dist/esm/icons/input.js +75 -0
- package/dist/esm/icons/legal.js +4 -9
- package/dist/esm/icons/media.js +26 -11
- package/dist/esm/icons/navigation.js +4 -2
- package/dist/esm/icons/omniverk.js +19 -6
- package/dist/esm/icons/realestate.js +10 -4
- package/dist/esm/icons/saas.js +15 -4
- package/dist/esm/icons/science.js +6 -3
- package/dist/esm/icons/shapes.js +128 -32
- package/dist/esm/icons/sports.js +6 -2
- package/dist/esm/icons/ui.js +62 -21
- package/dist/esm/icons/weather.js +18 -8
- package/dist/esm/index.js +10 -9
- package/dist/esm/nicetodev-icons.css +1 -1
- package/dist/esm/resolver.js +55 -1
- package/dist/esm/rsc.js +1 -1
- package/dist/esm/utilities.js +4 -2
- package/dist/types/design-tokens.d.ts +2 -0
- package/dist/types/iconParts.d.ts +19 -0
- package/dist/types/icons/actions.d.ts +3 -0
- package/dist/types/icons/business.d.ts +2 -0
- package/dist/types/icons/ecommerce.d.ts +0 -2
- package/dist/types/icons/education.d.ts +1 -0
- package/dist/types/icons/files.d.ts +2 -1
- package/dist/types/icons/fun.d.ts +6 -1
- package/dist/types/icons/gaming.d.ts +2 -0
- package/dist/types/icons/index.d.ts +10 -9
- package/dist/types/icons/input.d.ts +53 -0
- package/dist/types/icons/omniverk.d.ts +0 -2
- package/dist/types/icons/shapes.d.ts +6 -0
- package/dist/types/icons/ui.d.ts +1 -0
- package/dist/types/types.d.ts +6 -0
- package/package.json +3 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useNiceTranslation } from '@nice2dev/ui-core';
|
|
2
3
|
import { useState, useMemo, useCallback } from 'react';
|
|
3
4
|
import { NtdCheck } from './icons/actions.js';
|
|
4
5
|
|
|
@@ -8,6 +9,7 @@ import { NtdCheck } from './icons/actions.js';
|
|
|
8
9
|
const DEFAULT_CONFIG = {
|
|
9
10
|
name: 'MyIcons',
|
|
10
11
|
packageName: '@myproject/icons',
|
|
12
|
+
// audit-allow: i18n — the generated package.json's default description, not UI copy
|
|
11
13
|
description: 'Custom icon set',
|
|
12
14
|
version: '1.0.0',
|
|
13
15
|
author: '',
|
|
@@ -285,6 +287,7 @@ function useIconSetCreator(options) {
|
|
|
285
287
|
* Icon Set Creator component for building custom icon packages.
|
|
286
288
|
*/
|
|
287
289
|
function NiceIconSetCreator({ icons, initialSelection, defaultConfig, onSelectionChange: _onSelectionChange, onExport, className = '', }) {
|
|
290
|
+
const { t } = useNiceTranslation();
|
|
288
291
|
const creator = useIconSetCreator({ icons, initialSelection, defaultConfig });
|
|
289
292
|
const [searchQuery, setSearchQuery] = useState('');
|
|
290
293
|
const [categoryFilter, setCategoryFilter] = useState('all');
|
|
@@ -338,7 +341,9 @@ function NiceIconSetCreator({ icons, initialSelection, defaultConfig, onSelectio
|
|
|
338
341
|
URL.revokeObjectURL(url);
|
|
339
342
|
});
|
|
340
343
|
}, [creator]);
|
|
341
|
-
return (jsxs("div", { className: `nice-icon-set-creator ${className}`, style: styles.container, children: [jsxs("div", { style: styles.header, children: [jsx("h2", { style: styles.title, children:
|
|
344
|
+
return (jsxs("div", { className: `nice-icon-set-creator ${className}`, style: styles.container, children: [jsxs("div", { style: styles.header, children: [jsx("h2", { style: styles.title, children: t('iconSetCreator.iconSetCreator', 'Icon Set Creator') }), jsx("div", { style: styles.stats, children: t('iconSetCreator.iconsSelected', '{selectedCount} / {items} icons selected')
|
|
345
|
+
.replace('{selectedCount}', String(creator.selectedCount))
|
|
346
|
+
.replace('{items}', String(creator.items.length)) })] }), jsxs("div", { style: styles.content, children: [jsxs("div", { style: styles.configPanel, children: [jsx("h3", { style: styles.sectionTitle, children: t('iconSetCreator.configuration', 'Configuration') }), jsxs("div", { style: styles.field, children: [jsx("label", { style: styles.fieldLabel, children: t('iconSetCreator.setName', 'Set Name') }), jsx("input", { type: "text", value: creator.config.name, onChange: (e) => creator.updateConfig({ name: e.target.value }), style: styles.input, placeholder: "MyIcons" })] }), jsxs("div", { style: styles.field, children: [jsx("label", { style: styles.fieldLabel, children: t('iconSetCreator.packageName', 'Package Name') }), jsx("input", { type: "text", value: creator.config.packageName, onChange: (e) => creator.updateConfig({ packageName: e.target.value }), style: styles.input, placeholder: "@myproject/icons" })] }), jsxs("div", { style: styles.field, children: [jsx("label", { style: styles.fieldLabel, children: t('iconSetCreator.description', 'Description') }), jsx("input", { type: "text", value: creator.config.description, onChange: (e) => creator.updateConfig({ description: e.target.value }), style: styles.input })] }), jsxs("div", { style: styles.fieldRow, children: [jsxs("div", { style: styles.field, children: [jsx("label", { style: styles.fieldLabel, children: t('iconSetCreator.version', 'Version') }), jsx("input", { type: "text", value: creator.config.version, onChange: (e) => creator.updateConfig({ version: e.target.value }), style: styles.input })] }), jsxs("div", { style: styles.field, children: [jsx("label", { style: styles.fieldLabel, children: t('iconSetCreator.license', 'License') }), jsx("input", { type: "text", value: creator.config.license, onChange: (e) => creator.updateConfig({ license: e.target.value }), style: styles.input })] })] }), jsxs("div", { style: styles.field, children: [jsx("label", { style: styles.fieldLabel, children: t('iconSetCreator.exportFormat', 'Export Format') }), jsxs("select", { value: creator.config.format, onChange: (e) => creator.updateConfig({ format: e.target.value }), style: styles.select, children: [jsx("option", { value: "esm", children: t('iconSetCreator.esModules', 'ES Modules') }), jsx("option", { value: "cjs", children: "CommonJS" }), jsx("option", { value: "both", children: t('iconSetCreator.both', 'Both') })] })] }), jsxs("div", { style: styles.checkboxGroup, children: [jsxs("label", { style: styles.checkbox, children: [jsx("input", { type: "checkbox", checked: creator.config.generateTypes, onChange: (e) => creator.updateConfig({ generateTypes: e.target.checked }) }), t('iconSetCreator.generateTypescriptTypes', 'Generate TypeScript types')] }), jsxs("label", { style: styles.checkbox, children: [jsx("input", { type: "checkbox", checked: creator.config.treeShaking, onChange: (e) => creator.updateConfig({ treeShaking: e.target.checked }) }), t('iconSetCreator.treeShakingFriendly', 'Tree-shaking friendly')] }), jsxs("label", { style: styles.checkbox, children: [jsx("input", { type: "checkbox", checked: creator.config.includeMetadata, onChange: (e) => creator.updateConfig({ includeMetadata: e.target.checked }) }), t('iconSetCreator.includeMetadata', 'Include metadata')] })] }), jsxs("div", { style: styles.exportActions, children: [jsx("button", { onClick: handleExport, style: styles.primaryButton, children: t('iconSetCreator.previewExport', 'Preview Export') }), jsx("button", { onClick: handleDownloadZip, style: styles.secondaryButton, children: t('iconSetCreator.downloadFiles', 'Download Files') })] })] }), jsxs("div", { style: styles.selectionPanel, children: [jsxs("div", { style: styles.selectionHeader, children: [jsx("input", { type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: t('iconSetCreator.searchIcons', 'Search icons...'), style: styles.searchInput }), jsxs("select", { value: categoryFilter, onChange: (e) => setCategoryFilter(e.target.value), style: styles.categorySelect, children: [jsx("option", { value: "all", children: t('iconSetCreator.allCategories', 'All Categories') }), categories.map((cat) => (jsx("option", { value: cat, children: cat }, cat)))] })] }), jsxs("div", { style: styles.selectionActions, children: [jsx("button", { onClick: creator.selectAll, style: styles.smallButton, children: t('iconSetCreator.selectAll', 'Select All') }), jsx("button", { onClick: creator.deselectAll, style: styles.smallButton, children: t('iconSetCreator.deselectAll', 'Deselect All') })] }), jsx("div", { style: styles.iconGrid, children: filteredItems.map((item) => (jsxs("div", { role: "checkbox", "aria-checked": item.included, "aria-label": item.customName, tabIndex: 0, onClick: () => creator.toggleIcon(item.originalName), onKeyDown: (e) => {
|
|
342
347
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
343
348
|
e.preventDefault();
|
|
344
349
|
creator.toggleIcon(item.originalName);
|
|
@@ -347,7 +352,7 @@ function NiceIconSetCreator({ icons, initialSelection, defaultConfig, onSelectio
|
|
|
347
352
|
...styles.iconItem,
|
|
348
353
|
borderColor: item.included ? '#3b82f6' : '#e5e7eb',
|
|
349
354
|
backgroundColor: item.included ? '#eff6ff' : '#fff',
|
|
350
|
-
}, children: [jsx(item.icon, { size: 32 }), jsx("span", { style: styles.iconName, children: item.customName }), item.included && (jsx("span", { style: styles.checkmark, children: jsx(NtdCheck, { size: 14 }) }))] }, item.originalName))) })] }), previewOutput && (jsxs("div", { style: styles.previewPanel, children: [jsx("h3", { style: styles.sectionTitle, children:
|
|
355
|
+
}, children: [jsx(item.icon, { size: 32 }), jsx("span", { style: styles.iconName, children: item.customName }), item.included && (jsx("span", { style: styles.checkmark, children: jsx(NtdCheck, { size: 14 }) }))] }, item.originalName))) })] }), previewOutput && (jsxs("div", { style: styles.previewPanel, children: [jsx("h3", { style: styles.sectionTitle, children: t('iconSetCreator.exportPreview', 'Export Preview') }), previewOutput.map((file) => (jsxs("div", { style: styles.filePreview, children: [jsx("div", { style: styles.fileName, children: file.filename }), jsxs("pre", { style: styles.codePreview, children: [file.content.slice(0, 1000), file.content.length > 1000 && '...'] })] }, file.filename)))] }))] })] }));
|
|
351
356
|
}
|
|
352
357
|
/* ══════════════════════════════════════════════════════════════════════════════
|
|
353
358
|
Styles
|
package/dist/esm/NtdIconBadge.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useNiceTranslation } from '@nice2dev/ui-core';
|
|
2
3
|
import { forwardRef, useState, useRef, useEffect } from 'react';
|
|
3
4
|
import { SIZE_MAP } from './types.js';
|
|
4
5
|
|
|
6
|
+
/** The status in words for the accessible name — English defaults of `ntdIconBadge.statusValue.*`. */
|
|
7
|
+
const STATUS_WORDS = {
|
|
8
|
+
online: 'online',
|
|
9
|
+
offline: 'offline',
|
|
10
|
+
busy: 'busy',
|
|
11
|
+
away: 'away',
|
|
12
|
+
dnd: 'do not disturb',
|
|
13
|
+
invisible: 'invisible',
|
|
14
|
+
};
|
|
5
15
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
6
16
|
CONSTANTS
|
|
7
17
|
───────────────────────────────────────────────────────────────────────────── */
|
|
@@ -188,6 +198,7 @@ function injectStyles() {
|
|
|
188
198
|
const NtdBadge = /* @__PURE__ */ Object.assign(
|
|
189
199
|
/* @__PURE__ */ forwardRef(({ icon: Icon, count = 0, maxCount = 99, showZero = false, position = 'top-right', variant = 'standard', badgeColor = '#ef4444', textColor = '#ffffff', animated = true, pulse = false, iconProps = {}, className, style, 'aria-label': ariaLabel, }, ref) => {
|
|
190
200
|
var _a, _b;
|
|
201
|
+
const { t } = useNiceTranslation();
|
|
191
202
|
const [isEntering, setIsEntering] = useState(false);
|
|
192
203
|
const [countChanging, setCountChanging] = useState(false);
|
|
193
204
|
const prevCountRef = useRef(count);
|
|
@@ -211,6 +222,7 @@ const NtdBadge = /* @__PURE__ */ Object.assign(
|
|
|
211
222
|
const timer = setTimeout(() => setIsEntering(false), 300);
|
|
212
223
|
return () => clearTimeout(timer);
|
|
213
224
|
}
|
|
225
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- the enter animation plays once, when the badge mounts
|
|
214
226
|
}, []);
|
|
215
227
|
const shouldShowBadge = count > 0 || showZero;
|
|
216
228
|
const displayCount = count > maxCount ? `${maxCount}+` : count.toString();
|
|
@@ -231,7 +243,9 @@ const NtdBadge = /* @__PURE__ */ Object.assign(
|
|
|
231
243
|
width: resolvedSize,
|
|
232
244
|
height: resolvedSize,
|
|
233
245
|
...style,
|
|
234
|
-
}, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : (shouldShowBadge
|
|
246
|
+
}, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : (shouldShowBadge
|
|
247
|
+
? t('ntdIconBadge.notifications', '{count} notifications').replace('{count}', String(count))
|
|
248
|
+
: undefined), children: [jsx(Icon, { ...iconProps }), shouldShowBadge && (jsx("span", { className: badgeClasses, style: {
|
|
235
249
|
...POSITION_STYLES[position],
|
|
236
250
|
backgroundColor: badgeColor,
|
|
237
251
|
color: textColor,
|
|
@@ -257,7 +271,8 @@ const NtdBadge = /* @__PURE__ */ Object.assign(
|
|
|
257
271
|
*/
|
|
258
272
|
const NtdStatusDot = /* @__PURE__ */ Object.assign(
|
|
259
273
|
/* @__PURE__ */ forwardRef(({ icon: Icon, status, statusColor, position = 'bottom-right', dotSize = 'md', animated = true, pulse = false, iconProps = {}, className, style, }, ref) => {
|
|
260
|
-
var _a, _b;
|
|
274
|
+
var _a, _b, _c;
|
|
275
|
+
const { t } = useNiceTranslation();
|
|
261
276
|
useEffect(() => {
|
|
262
277
|
injectStyles();
|
|
263
278
|
}, []);
|
|
@@ -277,7 +292,7 @@ const NtdStatusDot = /* @__PURE__ */ Object.assign(
|
|
|
277
292
|
width: resolvedIconSize,
|
|
278
293
|
height: resolvedIconSize,
|
|
279
294
|
...style,
|
|
280
|
-
}, role: "status", "aria-label":
|
|
295
|
+
}, role: "status", "aria-label": t('ntdIconBadge.status', 'Status: {status}').replace('{status}', t('ntdIconBadge.statusValue.' + status, (_c = STATUS_WORDS[status]) !== null && _c !== void 0 ? _c : status)), children: [jsx(Icon, { ...iconProps }), jsx("span", { className: dotClasses, style: {
|
|
281
296
|
...POSITION_STYLES[position],
|
|
282
297
|
width: resolvedDotSize,
|
|
283
298
|
height: resolvedDotSize,
|
package/dist/esm/NtdIconMorph.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useNiceTranslation } from '@nice2dev/ui-core';
|
|
2
3
|
import { forwardRef, useState, useRef, useEffect, useCallback } from 'react';
|
|
3
4
|
import { NtdCheck, NtdMinus, NtdPlus } from './icons/actions.js';
|
|
4
5
|
import { NtdPause, NtdPlay } from './icons/media.js';
|
|
@@ -262,6 +263,7 @@ const NtdIconMorph = /* @__PURE__ */ Object.assign(
|
|
|
262
263
|
const NtdPathMorph = /* @__PURE__ */ Object.assign(
|
|
263
264
|
/* @__PURE__ */ forwardRef(({ pair, morphed: controlledMorphed, trigger = 'none', duration = 300, easing = 'ease-in-out', size = 'md', color = 'currentColor', strokeWidth = 2, filled = false, onMorphStart, onMorphEnd, className, style, 'aria-label': ariaLabel, }, ref) => {
|
|
264
265
|
var _a, _b;
|
|
266
|
+
const { t } = useNiceTranslation();
|
|
265
267
|
const [internalMorphed, setInternalMorphed] = useState(false);
|
|
266
268
|
const morphed = controlledMorphed !== null && controlledMorphed !== void 0 ? controlledMorphed : internalMorphed;
|
|
267
269
|
const [isAnimating, setIsAnimating] = useState(false);
|
|
@@ -313,7 +315,7 @@ const NtdPathMorph = /* @__PURE__ */ Object.assign(
|
|
|
313
315
|
return (jsx("svg", { ref: ref, xmlns: "http://www.w3.org/2000/svg", viewBox: pathData.viewBox, width: resolvedSize, height: resolvedSize, className: `ntd-path-morph ${className !== null && className !== void 0 ? className : ''}`, style: {
|
|
314
316
|
cursor: trigger !== 'none' ? 'pointer' : undefined,
|
|
315
317
|
...style,
|
|
316
|
-
}, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, role: trigger !== 'none' ? 'button' : 'img', "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel :
|
|
318
|
+
}, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, role: trigger !== 'none' ? 'button' : 'img', "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t('ntdIconMorph.icon', '{pair} icon').replace('{pair}', String(pair)), "aria-pressed": trigger !== 'none' ? morphed : undefined, children: jsx("path", { d: currentPath, fill: filled ? color : 'none', stroke: filled ? 'none' : color, strokeWidth: filled ? 0 : strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", style: {
|
|
317
319
|
transition: `d ${duration}ms ${resolvedEasing}, fill ${duration}ms ${resolvedEasing}, stroke ${duration}ms ${resolvedEasing}`,
|
|
318
320
|
} }) }));
|
|
319
321
|
}), { displayName: 'NtdPathMorph' });
|
package/dist/esm/createIcon.js
CHANGED
|
@@ -83,7 +83,11 @@ function renderGradientDef(id, preset, type, angle, animation) {
|
|
|
83
83
|
}
|
|
84
84
|
/* ── 3D filter helper ───────────────────────────────── */
|
|
85
85
|
function render3dFilterDef(filterId) {
|
|
86
|
-
return (
|
|
86
|
+
return (
|
|
87
|
+
// The region is the icon's box plus a margin for the shadow, not a share of the shape's
|
|
88
|
+
// bounding box: a lone horizontal or vertical line (NtdMinus) has a zero-height box, and a
|
|
89
|
+
// filter region of 140% of zero rendered nothing.
|
|
90
|
+
jsxs("filter", { id: filterId, filterUnits: "userSpaceOnUse", x: "-4", y: "-4", width: "32", height: "32", children: [jsx("feDropShadow", { dx: "0", dy: "1.5", stdDeviation: "1", floodOpacity: "0.35" }), jsxs("feComponentTransfer", { in: "SourceGraphic", result: "highlight", children: [jsx("feFuncR", { type: "linear", slope: "1.2", intercept: "0.1" }), jsx("feFuncG", { type: "linear", slope: "1.2", intercept: "0.1" }), jsx("feFuncB", { type: "linear", slope: "1.2", intercept: "0.1" })] }), jsx("feComposite", { operator: "in", in: "highlight", in2: "SourceGraphic", result: "highlightMask" }), jsx("feMerge", { children: jsx("feMergeNode", { in: "SourceGraphic" }) })] }));
|
|
87
91
|
}
|
|
88
92
|
/* ── Cutout shape helper ──────────────────────────── */
|
|
89
93
|
function renderCutoutShape(shape, fill, maskId) {
|
|
@@ -114,6 +118,8 @@ function createIcon(options) {
|
|
|
114
118
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
115
119
|
const resolvedSize = typeof size === 'number' ? size : ((_a = SIZE_MAP[size]) !== null && _a !== void 0 ? _a : 24);
|
|
116
120
|
const gradId = useId();
|
|
121
|
+
// the prefix of the ids of the clip paths the renderers draw (IconRenderProps.uid)
|
|
122
|
+
const uid = useId();
|
|
117
123
|
const center = { x: 12, y: 12 }; // Default center for 24x24 viewBox
|
|
118
124
|
// Use dark/light mode detection when both colors are specified
|
|
119
125
|
const colorScheme = useColorScheme();
|
|
@@ -142,6 +148,7 @@ function createIcon(options) {
|
|
|
142
148
|
strokeWidth: effectiveStrokeWidth,
|
|
143
149
|
strokeLinecap,
|
|
144
150
|
strokeLinejoin,
|
|
151
|
+
uid,
|
|
145
152
|
};
|
|
146
153
|
// Resolve renderer with fallback chain. `wireframe` has no authored layer
|
|
147
154
|
// at all — it is a mechanical re-draw of the full `solid` construction, so
|
|
@@ -219,10 +226,11 @@ function createIcon(options) {
|
|
|
219
226
|
variant: 'solid',
|
|
220
227
|
primaryColor: 'black',
|
|
221
228
|
secondaryColor: 'black',
|
|
222
|
-
accentColor: '
|
|
229
|
+
accentColor: 'white',
|
|
223
230
|
primaryOpacity: 1,
|
|
224
231
|
secondaryOpacity: 1,
|
|
225
232
|
accentOpacity: 1,
|
|
233
|
+
uid: `${uid}m`,
|
|
226
234
|
}) })] }) })), smilAnimation ? (needsSmilScaleWrapper ? (jsxs("g", { transform: `translate(${center.x}, ${center.y})`, filter: is3d ? `url(#${filterId})` : undefined, children: [jsx("g", { transform: `translate(-${center.x}, -${center.y})`, children: iconContent }), smilAnimationElements] })) : (jsxs("g", { filter: is3d ? `url(#${filterId})` : undefined, children: [iconContent, smilAnimationElements] }))) : is3d ? (jsx("g", { filter: `url(#${filterId})`, children: iconContent })) : (iconContent)] }));
|
|
227
235
|
});
|
|
228
236
|
Icon.displayName = displayName;
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
* @version 1.0.0
|
|
26
26
|
* @since 2026-03
|
|
27
27
|
* @license MIT
|
|
28
|
+
*
|
|
29
|
+
* audit-allow: i18n-file — token descriptions written into Style Dictionary output, not UI copy.
|
|
28
30
|
*/
|
|
29
31
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
30
32
|
DEFAULT TOKEN VALUES
|
package/dist/esm/iconMetadata.js
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
16
16
|
CATEGORY METADATA
|
|
17
17
|
───────────────────────────────────────────────────────────────────────────── */
|
|
18
|
+
// audit-allow: i18n — English data for the host's icon browser and searchIcons(); no control of
|
|
19
|
+
// this package shows it.
|
|
18
20
|
const CATEGORY_INFO = {
|
|
19
21
|
actions: {
|
|
20
22
|
label: 'Actions',
|
|
@@ -362,6 +364,7 @@ function getSearchSuggestions(partialQuery, limit = 5) {
|
|
|
362
364
|
This will be populated when icons are imported
|
|
363
365
|
───────────────────────────────────────────────────────────────────────────── */
|
|
364
366
|
// Example metadata definitions (actual ones will be in icon files)
|
|
367
|
+
// audit-allow: i18n — English search metadata: searchIcons() matches these words.
|
|
365
368
|
const UI_ICON_METADATA = {
|
|
366
369
|
NtdHome: {
|
|
367
370
|
category: 'ui',
|
|
@@ -428,6 +431,7 @@ const UI_ICON_METADATA = {
|
|
|
428
431
|
related: ['NtdBellOff', 'NtdAlarm'],
|
|
429
432
|
},
|
|
430
433
|
};
|
|
434
|
+
// audit-allow: i18n — English search metadata: searchIcons() matches these words.
|
|
431
435
|
const ACTION_ICON_METADATA = {
|
|
432
436
|
NtdPlay: {
|
|
433
437
|
category: 'actions',
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { createIcon } from './createIcon.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* `content` drawn only inside `shape` — for accent lines that read as a cut through a shape (a
|
|
6
|
+
* pencil's band, a calendar's header line, an envelope's flap): clipped, they meet the shape's
|
|
7
|
+
* edges flush in every variant, where their round caps used to stick out of it (and `sharp` /
|
|
8
|
+
* `rounded` re-cap every stroke, so caps alone cannot do it).
|
|
9
|
+
*
|
|
10
|
+
* `uid` is the icon's `IconRenderProps.uid`; `name` tells the clips of one icon apart. Without a
|
|
11
|
+
* `uid` — a renderer called outside createIcon — the content is drawn as it is.
|
|
12
|
+
*/
|
|
13
|
+
function within(uid, name, shape, content) {
|
|
14
|
+
if (!uid) {
|
|
15
|
+
return content;
|
|
16
|
+
}
|
|
17
|
+
const id = `${uid}${name}`;
|
|
18
|
+
return (jsxs(Fragment, { children: [jsx("clipPath", { id: id, children: shape }), jsx("g", { clipPath: `url(#${id})`, children: content })] }));
|
|
19
|
+
}
|
|
20
|
+
/** The page of every paper icon: 16 × 20, its top-right corner folded over 8. */
|
|
21
|
+
const PAPER = 'M12 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V10z';
|
|
22
|
+
const PAPER_FOLD = 'M12 2v6a2 2 0 002 2h6z';
|
|
23
|
+
const PAPER_FOLD_LINE = 'M12 2v8h8';
|
|
24
|
+
const PAPER_SHARP = 'M12 2H4v20h16V10z';
|
|
25
|
+
const PAPER_FOLD_SHARP = 'M12 2v8h8z';
|
|
26
|
+
/**
|
|
27
|
+
* A paper icon — NtdFile, and every document drawn on the same page (NtdFileText, NtdInvoice,
|
|
28
|
+
* NtdContract, …), so their pages and folds match. The fold is secondary when the page is filled;
|
|
29
|
+
* `text` is the document's writing, a path of strokes kept below the fold (y ≥ 11, x 7.5–16.5),
|
|
30
|
+
* drawn in the accent colour on a filled page and in primary on a stroked one.
|
|
31
|
+
*/
|
|
32
|
+
function paperIcon(displayName, text = '') {
|
|
33
|
+
return createIcon({
|
|
34
|
+
displayName,
|
|
35
|
+
paths: {
|
|
36
|
+
solid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => (jsxs(Fragment, { children: [jsx("path", { d: PAPER, fill: primaryColor }), jsx("path", { d: PAPER_FOLD, fill: secondaryColor }), text && (jsx("path", { d: text, stroke: accentColor, strokeOpacity: accentOpacity, strokeWidth: "1.5", strokeLinecap: "round", fill: "none" }))] })),
|
|
37
|
+
// square at every corner, the fold included — the derived `sharp` keeps a path's arcs round
|
|
38
|
+
sharp: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => (jsxs(Fragment, { children: [jsx("path", { d: PAPER_SHARP, fill: primaryColor }), jsx("path", { d: PAPER_FOLD_SHARP, fill: secondaryColor }), text && (jsx("path", { d: text, stroke: accentColor, strokeOpacity: accentOpacity, strokeWidth: "1.5", fill: "none" }))] })),
|
|
39
|
+
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: `${PAPER}${PAPER_FOLD_LINE}${text}`, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
40
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: PAPER, fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: PAPER_FOLD_SHARP, fill: primaryColor, opacity: secondaryOpacity + 0.1 }), jsx("path", { d: `${PAPER}${PAPER_FOLD_LINE}${text}`, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
41
|
+
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: PAPER, fill: primaryColor }), jsx("path", { d: PAPER, fill: "white", opacity: "0.1" }), jsx("path", { d: PAPER_FOLD, fill: secondaryColor }), text && (jsx("path", { d: text, stroke: "white", strokeOpacity: "0.9", strokeWidth: "1.5", strokeLinecap: "round", fill: "none" }))] })),
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export { paperIcon, within };
|
|
@@ -13,13 +13,21 @@ const NtdAccessibility = /* @__PURE__ */ createIcon({
|
|
|
13
13
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "4", r: "2", fill: primaryColor }), jsx("circle", { cx: "12", cy: "4", r: "2", fill: "white", opacity: "0.08" }), jsx("path", { d: "M12 8c-4 0-6 1-6 2v2h3v8h2v-5h2v5h2v-8h3v-2c0-1-2-2-6-2z", fill: secondaryColor })] })),
|
|
14
14
|
},
|
|
15
15
|
});
|
|
16
|
+
// NtdWheelchair: the rider faces right, leaning back a little (it faced left and sat bolt
|
|
17
|
+
// upright), the arm forward on the rest, the leg out to the footrest, in a wheel that is a full
|
|
18
|
+
// 210° arc around the seat (it was a small ring under it).
|
|
19
|
+
const WC_TORSO = 'M8.2 7.4l2.2 6';
|
|
20
|
+
const WC_ARM = 'M9 9.4h5.6';
|
|
21
|
+
const WC_LEG = 'M10.4 13.4h5l2.5 6.4H21';
|
|
22
|
+
const WC_WHEEL = 'M5.6 10.95A5.6 5.6 0 1 0 13.25 18.6';
|
|
16
23
|
const NtdWheelchair = /* @__PURE__ */ createIcon({
|
|
17
24
|
displayName: 'NtdWheelchair',
|
|
18
25
|
paths: {
|
|
19
|
-
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "
|
|
20
|
-
outline: ({ primaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
solid: ({ primaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "8.6", cy: "3.4", r: "2.2", fill: primaryColor }), jsxs("g", { stroke: primaryColor, fill: "none", children: [jsx("path", { d: WC_TORSO, strokeWidth: strokeWidth * 1.4 }), jsx("path", { d: WC_ARM, strokeWidth: strokeWidth * 1.1 }), jsx("path", { d: WC_LEG, strokeWidth: strokeWidth * 1.3 }), jsx("path", { d: WC_WHEEL, strokeWidth: strokeWidth * 1.1 })] })] })),
|
|
27
|
+
outline: ({ primaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "8.6", cy: "3.4", r: "1.8", stroke: primaryColor, strokeWidth: strokeWidth }), jsx("path", { d: `${WC_TORSO}${WC_ARM}${WC_LEG}${WC_WHEEL}`, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
28
|
+
// fills only: the rider primary, the wheel secondary
|
|
29
|
+
duotone: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: WC_WHEEL, stroke: secondaryColor, strokeWidth: strokeWidth * 1.1, fill: "none" }), jsx("circle", { cx: "8.6", cy: "3.4", r: "2.2", fill: primaryColor }), jsxs("g", { stroke: primaryColor, fill: "none", children: [jsx("path", { d: WC_TORSO, strokeWidth: strokeWidth * 1.4 }), jsx("path", { d: WC_ARM, strokeWidth: strokeWidth * 1.1 }), jsx("path", { d: WC_LEG, strokeWidth: strokeWidth * 1.3 })] })] })),
|
|
30
|
+
vivid: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: WC_WHEEL, stroke: secondaryColor, strokeWidth: strokeWidth * 1.1, fill: "none" }), jsx("circle", { cx: "8.6", cy: "3.4", r: "2.2", fill: primaryColor }), jsxs("g", { stroke: primaryColor, fill: "none", children: [jsx("path", { d: WC_TORSO, strokeWidth: strokeWidth * 1.4 }), jsx("path", { d: WC_ARM, strokeWidth: strokeWidth * 1.1 }), jsx("path", { d: WC_LEG, strokeWidth: strokeWidth * 1.3 })] })] })),
|
|
23
31
|
},
|
|
24
32
|
});
|
|
25
33
|
const NtdBlind = /* @__PURE__ */ createIcon({
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { createIcon } from '../createIcon.js';
|
|
3
|
+
import { within } from '../iconParts.js';
|
|
3
4
|
|
|
4
5
|
const NtdSearch = /* @__PURE__ */ createIcon({
|
|
5
6
|
displayName: 'NtdSearch',
|
|
@@ -10,13 +11,31 @@ const NtdSearch = /* @__PURE__ */ createIcon({
|
|
|
10
11
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsx(Fragment, { children: jsx("path", { d: "M21 21l-4.35-4.35M11 19a8 8 0 100-16 8 8 0 000 16z", stroke: primaryColor, strokeWidth: "2.2", fill: "none" }) })),
|
|
11
12
|
},
|
|
12
13
|
});
|
|
14
|
+
const EDIT_PENCIL = 'M17 3a2.828 2.828 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z';
|
|
13
15
|
const NtdEdit = /* @__PURE__ */ createIcon({
|
|
14
16
|
displayName: 'NtdEdit',
|
|
15
17
|
paths: {
|
|
16
|
-
|
|
18
|
+
// The band is a cut across the pencil: kept inside it, its ends meet the edges flush (its
|
|
19
|
+
// round caps stuck out of both sides).
|
|
20
|
+
solid: ({ primaryColor, accentColor, accentOpacity, uid }) => (jsxs(Fragment, { children: [jsx("path", { d: EDIT_PENCIL, fill: primaryColor }), within(uid, 'band', jsx("path", { d: EDIT_PENCIL }), jsx("path", { d: "M15 5l4 4", stroke: accentColor, strokeWidth: "1.5", opacity: accentOpacity }))] })),
|
|
17
21
|
outline: ({ primaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: "M17 3a2.828 2.828 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsx("path", { d: "M15 5l4 4", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
18
22
|
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: "M17 3a2.828 2.828 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M17 3a2.828 2.828 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsx("path", { d: "M15 5l4 4", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
19
|
-
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d:
|
|
23
|
+
vivid: ({ primaryColor, secondaryColor, uid }) => (jsxs(Fragment, { children: [jsx("path", { d: EDIT_PENCIL, fill: primaryColor }), jsx("path", { d: EDIT_PENCIL, fill: "white", opacity: "0.1" }), within(uid, 'band', jsx("path", { d: EDIT_PENCIL }), jsx("path", { d: "M15 5l4 4", stroke: secondaryColor, strokeWidth: "1.8" }))] })),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
// NtdEditDetail: NtdEdit's pencil (scaled 0.62, coordinates baked in so strokes keep their
|
|
27
|
+
// weight) over a square frame left open where the pencil comes out of it — the pen-to-square
|
|
28
|
+
// "edit details" glyph.
|
|
29
|
+
const EDIT_DETAIL_PENCIL = 'M18.54 2.86a1.753 1.753 0 112.48 2.48L12.65 13.71 9.24 14.64l.93-3.41L18.54 2.86z';
|
|
30
|
+
const EDIT_DETAIL_BAND = 'M17.3 4.1l2.48 2.48';
|
|
31
|
+
const EDIT_DETAIL_FRAME = 'M12 4H6a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2v-6';
|
|
32
|
+
const NtdEditDetail = /* @__PURE__ */ createIcon({
|
|
33
|
+
displayName: 'NtdEditDetail',
|
|
34
|
+
paths: {
|
|
35
|
+
solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth, uid }) => (jsxs(Fragment, { children: [jsx("path", { d: EDIT_DETAIL_FRAME, stroke: primaryColor, strokeWidth: strokeWidth * 2, fill: "none" }), jsx("path", { d: EDIT_DETAIL_PENCIL, fill: primaryColor }), within(uid, 'band', jsx("path", { d: EDIT_DETAIL_PENCIL }), jsx("path", { d: EDIT_DETAIL_BAND, stroke: accentColor, strokeWidth: "1.1", opacity: accentOpacity }))] })),
|
|
36
|
+
outline: ({ primaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: EDIT_DETAIL_FRAME, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsx("path", { d: EDIT_DETAIL_PENCIL, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
37
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: EDIT_DETAIL_FRAME, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsx("path", { d: EDIT_DETAIL_PENCIL, fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: EDIT_DETAIL_PENCIL, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
38
|
+
vivid: ({ primaryColor, secondaryColor, strokeWidth, uid }) => (jsxs(Fragment, { children: [jsx("path", { d: EDIT_DETAIL_FRAME, stroke: secondaryColor, strokeWidth: strokeWidth * 2, fill: "none" }), jsx("path", { d: EDIT_DETAIL_PENCIL, fill: primaryColor }), within(uid, 'band', jsx("path", { d: EDIT_DETAIL_PENCIL }), jsx("path", { d: EDIT_DETAIL_BAND, stroke: secondaryColor, strokeWidth: "1.3" }))] })),
|
|
20
39
|
},
|
|
21
40
|
});
|
|
22
41
|
const NtdTrash = /* @__PURE__ */ createIcon({
|
|
@@ -28,31 +47,40 @@ const NtdTrash = /* @__PURE__ */ createIcon({
|
|
|
28
47
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: "M5 6l1 14a2 2 0 002 2h8a2 2 0 002-2l1-14H5z", fill: primaryColor }), jsx("path", { d: "M5 6l1 14a2 2 0 002 2h8a2 2 0 002-2l1-14H5z", fill: "white", opacity: "0.1" }), jsx("path", { d: "M3 6h18", stroke: secondaryColor, strokeWidth: "1.8" }), jsx("path", { d: "M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2", stroke: "#3B82F6", strokeWidth: "1.5" }), jsx("line", { x1: "10", y1: "10.5", x2: "10", y2: "17.5", stroke: "#3B82F6", strokeWidth: "1.5" }), jsx("line", { x1: "14", y1: "10.5", x2: "14", y2: "17.5", stroke: "#3B82F6", strokeWidth: "1.5" })] })),
|
|
29
48
|
},
|
|
30
49
|
});
|
|
50
|
+
// NtdSave: a 3.5" floppy — the clipped corner, a wide metal shutter at the top edge with its
|
|
51
|
+
// window, a large label at the bottom. Every part sits inside the body, so no variant pokes out.
|
|
52
|
+
const FLOPPY_BODY = 'M5 3h11.6L21 7.4V19a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2z';
|
|
53
|
+
/** The shutter with its window cut out (even-odd). */
|
|
54
|
+
const FLOPPY_SHUTTER = 'M7 3h9.2v4.8a.8.8 0 01-.8.8H7.8a.8.8 0 01-.8-.8zM12.6 4.4v2.8h2V4.4z';
|
|
55
|
+
const FLOPPY_LABEL = 'M6.8 10.6h10.4a1 1 0 011 1v7a1 1 0 01-1 1H6.8a1 1 0 01-1-1v-7a1 1 0 011-1z';
|
|
31
56
|
const NtdSave = /* @__PURE__ */ createIcon({
|
|
32
57
|
displayName: 'NtdSave',
|
|
33
58
|
paths: {
|
|
34
|
-
solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxs(Fragment, { children: [jsx("path", { d:
|
|
35
|
-
outline: ({ primaryColor, strokeWidth }) => (
|
|
36
|
-
|
|
37
|
-
|
|
59
|
+
solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxs(Fragment, { children: [jsx("path", { d: FLOPPY_BODY, fill: primaryColor }), jsxs("g", { fill: accentColor, opacity: accentOpacity, children: [jsx("path", { d: FLOPPY_SHUTTER, fillRule: "evenodd" }), jsx("path", { d: FLOPPY_LABEL })] })] })),
|
|
60
|
+
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: `${FLOPPY_BODY}M7.5 3v4h8V3M12.6 4.8v1${FLOPPY_LABEL}`, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinejoin: "round", fill: "none" })),
|
|
61
|
+
// fills only: the body secondary, the shutter and the label primary
|
|
62
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity }) => (jsxs(Fragment, { children: [jsx("path", { d: FLOPPY_BODY, fill: secondaryColor, opacity: secondaryOpacity }), jsxs("g", { fill: primaryColor, children: [jsx("path", { d: FLOPPY_SHUTTER, fillRule: "evenodd" }), jsx("path", { d: FLOPPY_LABEL })] })] })),
|
|
63
|
+
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: FLOPPY_BODY, fill: primaryColor }), jsx("path", { d: FLOPPY_SHUTTER, fillRule: "evenodd", fill: "#CBD5E1" }), jsx("path", { d: FLOPPY_LABEL, fill: "white" }), jsx("path", { d: "M5.8 13.2h12.4v-1.6a1 1 0 00-1-1H6.8a1 1 0 00-1 1z", fill: secondaryColor })] })),
|
|
38
64
|
},
|
|
39
65
|
});
|
|
66
|
+
// The shaft stops 2 short of the arrowhead's point: with the square caps of `sharp`, a shaft that
|
|
67
|
+
// ran to the point stuck out of it.
|
|
40
68
|
const NtdDownload = /* @__PURE__ */ createIcon({
|
|
41
69
|
displayName: 'NtdDownload',
|
|
42
70
|
paths: {
|
|
43
|
-
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12
|
|
44
|
-
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12
|
|
45
|
-
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "15", width: "18", height: "6", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12
|
|
46
|
-
vivid: ({ primaryColor,
|
|
71
|
+
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 13V3", stroke: primaryColor, strokeWidth: strokeWidth * 2 })),
|
|
72
|
+
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 13V3", stroke: primaryColor, strokeWidth: strokeWidth })),
|
|
73
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "15", width: "18", height: "6", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 13V3", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
74
|
+
vivid: ({ primaryColor, strokeWidth }) => (jsx(Fragment, { children: jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 13V3", stroke: primaryColor, strokeWidth: strokeWidth * 2 }) })),
|
|
47
75
|
},
|
|
48
76
|
});
|
|
49
77
|
const NtdUpload = /* @__PURE__ */ createIcon({
|
|
50
78
|
displayName: 'NtdUpload',
|
|
51
79
|
paths: {
|
|
52
|
-
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12
|
|
53
|
-
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12
|
|
54
|
-
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "15", width: "18", height: "6", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12
|
|
55
|
-
vivid: ({ primaryColor,
|
|
80
|
+
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 5v10", stroke: primaryColor, strokeWidth: strokeWidth * 2 })),
|
|
81
|
+
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 5v10", stroke: primaryColor, strokeWidth: strokeWidth })),
|
|
82
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "15", width: "18", height: "6", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 5v10", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
83
|
+
vivid: ({ primaryColor, strokeWidth }) => (jsx(Fragment, { children: jsx("path", { d: "M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 5v10", stroke: primaryColor, strokeWidth: strokeWidth * 2 }) })),
|
|
56
84
|
},
|
|
57
85
|
});
|
|
58
86
|
const NtdShare = /* @__PURE__ */ createIcon({
|
|
@@ -82,31 +110,33 @@ const NtdClipboard = /* @__PURE__ */ createIcon({
|
|
|
82
110
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: "M16 4h2a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2h2", fill: primaryColor }), jsx("path", { d: "M16 4h2a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2h2", fill: "white", opacity: "0.08" }), jsx("rect", { x: "8", y: "2", width: "8", height: "3.5", rx: "1.5", fill: secondaryColor, stroke: secondaryColor, strokeWidth: "1.5" }), jsx("line", { x1: "8", y1: "12", x2: "16", y2: "12", stroke: "white", strokeWidth: "1", opacity: "0.4" }), jsx("line", { x1: "8", y1: "15.5", x2: "13", y2: "15.5", stroke: "white", strokeWidth: "1", opacity: "0.4" })] })),
|
|
83
111
|
},
|
|
84
112
|
});
|
|
113
|
+
// The stroke glyphs (plus, minus, check, the arrows) are twice the stroke width when filled, so
|
|
114
|
+
// `solid` reads bold next to `outline` and still follows `strokeWidth`.
|
|
85
115
|
const NtdPlus = /* @__PURE__ */ createIcon({
|
|
86
116
|
displayName: 'NtdPlus',
|
|
87
117
|
paths: {
|
|
88
|
-
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M12 5v14M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth *
|
|
118
|
+
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M12 5v14M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth * 2 })),
|
|
89
119
|
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M12 5v14M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth })),
|
|
90
120
|
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "12", r: "9", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M12 8v8M8 12h8", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
91
|
-
vivid: ({ primaryColor,
|
|
121
|
+
vivid: ({ primaryColor, strokeWidth }) => (jsx(Fragment, { children: jsx("path", { d: "M12 5v14M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth * 2 }) })),
|
|
92
122
|
},
|
|
93
123
|
});
|
|
94
124
|
const NtdMinus = /* @__PURE__ */ createIcon({
|
|
95
125
|
displayName: 'NtdMinus',
|
|
96
126
|
paths: {
|
|
97
|
-
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth *
|
|
127
|
+
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth * 2 })),
|
|
98
128
|
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth })),
|
|
99
129
|
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "12", r: "9", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M8 12h8", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
100
|
-
vivid: ({ primaryColor,
|
|
130
|
+
vivid: ({ primaryColor, strokeWidth }) => (jsx(Fragment, { children: jsx("path", { d: "M5 12h14", stroke: primaryColor, strokeWidth: strokeWidth * 2 }) })),
|
|
101
131
|
},
|
|
102
132
|
});
|
|
103
133
|
const NtdCheck = /* @__PURE__ */ createIcon({
|
|
104
134
|
displayName: 'NtdCheck',
|
|
105
135
|
paths: {
|
|
106
|
-
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M20 6L9 17l-5-5", stroke: primaryColor, strokeWidth: strokeWidth *
|
|
136
|
+
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M20 6L9 17l-5-5", stroke: primaryColor, strokeWidth: strokeWidth * 2 })),
|
|
107
137
|
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M20 6L9 17l-5-5", stroke: primaryColor, strokeWidth: strokeWidth })),
|
|
108
138
|
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "12", r: "9", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M17 8l-6.5 6.5L7 11", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
109
|
-
vivid: ({ primaryColor,
|
|
139
|
+
vivid: ({ primaryColor, strokeWidth }) => (jsx(Fragment, { children: jsx("path", { d: "M20 6L9 17l-5-5", stroke: primaryColor, strokeWidth: strokeWidth * 2 }) })),
|
|
110
140
|
},
|
|
111
141
|
});
|
|
112
142
|
const NtdFilter = /* @__PURE__ */ createIcon({
|
|
@@ -200,17 +230,28 @@ const NtdLink = /* @__PURE__ */ createIcon({
|
|
|
200
230
|
paths: {
|
|
201
231
|
solid: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
202
232
|
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
203
|
-
|
|
233
|
+
// one ring per colour: the right link primary, the left one secondary
|
|
234
|
+
duotone: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: "M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71", stroke: secondaryColor, strokeWidth: strokeWidth, fill: "none" }), jsx("path", { d: "M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
204
235
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsx(Fragment, { children: jsx("path", { d: "M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71", stroke: primaryColor, strokeWidth: "2.2", fill: "none" }) })),
|
|
205
236
|
},
|
|
206
237
|
});
|
|
238
|
+
// NtdSettings: a gear whose eight teeth have flat tops, in every variant but `rounded`, which
|
|
239
|
+
// keeps the round-toothed gear it used to draw everywhere.
|
|
240
|
+
const GEAR = 'M9.95 4.58L10.55 1.7L13.45 1.7L14.05 4.58A7.7 7.7 0 0 1 15.8 5.3L18.26 3.69L20.31 5.74L18.7 8.2A7.7 7.7 0 0 1 19.42 9.95L22.3 10.55L22.3 13.45L19.42 14.05A7.7 7.7 0 0 1 18.7 15.8L20.31 18.26L18.26 20.31L15.8 18.7A7.7 7.7 0 0 1 14.05 19.42L13.45 22.3L10.55 22.3L9.95 19.42A7.7 7.7 0 0 1 8.2 18.7L5.74 20.31L3.69 18.26L5.3 15.8A7.7 7.7 0 0 1 4.58 14.05L1.7 13.45L1.7 10.55L4.58 9.95A7.7 7.7 0 0 1 5.3 8.2L3.69 5.74L5.74 3.69L8.2 5.3A7.7 7.7 0 0 1 9.95 4.58Z';
|
|
241
|
+
const GEAR_ROUND = 'M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 01-2.83 2.83l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 8.68a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.6a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06a1.65 1.65 0 00-.33 1.82V9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z';
|
|
242
|
+
/** The axle hole, r 3.2. */
|
|
243
|
+
const GEAR_HOLE = 'M12 8.8a3.2 3.2 0 100 6.4 3.2 3.2 0 100-6.4z';
|
|
244
|
+
/** The hub around the hole, r 5 — duotone and vivid only. */
|
|
245
|
+
const GEAR_HUB = 'M12 7a5 5 0 100 10 5 5 0 100-10z';
|
|
207
246
|
const NtdSettings = /* @__PURE__ */ createIcon({
|
|
208
247
|
displayName: 'NtdSettings',
|
|
209
248
|
paths: {
|
|
210
|
-
solid: ({ primaryColor
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
249
|
+
solid: ({ primaryColor }) => (jsx("path", { d: `${GEAR}${GEAR_HOLE}`, fillRule: "evenodd", fill: primaryColor })),
|
|
250
|
+
rounded: ({ primaryColor }) => (jsx("path", { d: `${GEAR_ROUND}${GEAR_HOLE}`, fillRule: "evenodd", fill: primaryColor })),
|
|
251
|
+
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: `${GEAR}M12 9a3 3 0 100 6 3 3 0 100-6z`, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinejoin: "round", fill: "none" })),
|
|
252
|
+
// fills only: the gear secondary, its hub primary
|
|
253
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity }) => (jsxs(Fragment, { children: [jsx("path", { d: `${GEAR}${GEAR_HOLE}`, fillRule: "evenodd", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: `${GEAR_HUB}${GEAR_HOLE}`, fillRule: "evenodd", fill: primaryColor })] })),
|
|
254
|
+
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: `${GEAR}${GEAR_HOLE}`, fillRule: "evenodd", fill: primaryColor }), jsx("path", { d: `${GEAR_HUB}${GEAR_HOLE}`, fillRule: "evenodd", fill: secondaryColor })] })),
|
|
214
255
|
},
|
|
215
256
|
});
|
|
216
257
|
const NtdLogIn = /* @__PURE__ */ createIcon({
|
|
@@ -249,5 +290,25 @@ const NtdUnlock = /* @__PURE__ */ createIcon({
|
|
|
249
290
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2.5", fill: primaryColor }), jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2.5", fill: "white", opacity: "0.08" }), jsx("circle", { cx: "12", cy: "15.5", r: "1.5", fill: secondaryColor }), jsx("rect", { x: "11.25", y: "16.5", width: "1.5", height: "2", rx: "0.5", fill: "#3B82F6" }), jsx("path", { d: "M7 11V7a5 5 0 019.9-1", stroke: "white", strokeWidth: "1" })] })),
|
|
250
291
|
},
|
|
251
292
|
});
|
|
293
|
+
// Group / ungroup selected objects (1.2.2: the diagram toolbar drew them as ⊞ / ⊟).
|
|
294
|
+
// Group: two objects inside the corners of one selection frame; ungroup: the two apart.
|
|
295
|
+
const NtdGroup = /* @__PURE__ */ createIcon({
|
|
296
|
+
displayName: 'NtdGroup',
|
|
297
|
+
paths: {
|
|
298
|
+
solid: ({ primaryColor, strokeWidth }) => (jsxs(Fragment, { children: [jsx("path", { d: "M3 7V3h4M17 3h4v4M21 17v4h-4M7 21H3v-4", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" }), jsx("rect", { x: "7", y: "7", width: "5", height: "5", fill: primaryColor }), jsx("rect", { x: "12", y: "12", width: "5", height: "5", fill: primaryColor })] })),
|
|
299
|
+
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M3 7V3h4M17 3h4v4M21 17v4h-4M7 21H3v-4M7 7h5v5H7zM12 12h5v5h-5z", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })),
|
|
300
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "7", y: "7", width: "5", height: "5", fill: secondaryColor, opacity: secondaryOpacity }), jsx("rect", { x: "12", y: "12", width: "5", height: "5", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M3 7V3h4M17 3h4v4M21 17v4h-4M7 21H3v-4M7 7h5v5H7zM12 12h5v5h-5z", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })] })),
|
|
301
|
+
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: "M3 7V3h4M17 3h4v4M21 17v4h-4M7 21H3v-4", stroke: primaryColor, strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", fill: "none" }), jsx("rect", { x: "7", y: "7", width: "5", height: "5", fill: primaryColor }), jsx("rect", { x: "12", y: "12", width: "5", height: "5", fill: primaryColor })] })),
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
const NtdUngroup = /* @__PURE__ */ createIcon({
|
|
305
|
+
displayName: 'NtdUngroup',
|
|
306
|
+
paths: {
|
|
307
|
+
solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "3", width: "8", height: "8", rx: "1", fill: primaryColor }), jsx("rect", { x: "13", y: "13", width: "8", height: "8", rx: "1", fill: primaryColor })] })),
|
|
308
|
+
outline: ({ primaryColor, strokeWidth }) => (jsx("path", { d: "M3 3h8v8H3zM13 13h8v8h-8z", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinejoin: "round", fill: "none" })),
|
|
309
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "3", width: "8", height: "8", fill: secondaryColor, opacity: secondaryOpacity }), jsx("rect", { x: "13", y: "13", width: "8", height: "8", fill: secondaryColor, opacity: secondaryOpacity }), jsx("path", { d: "M3 3h8v8H3zM13 13h8v8h-8z", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinejoin: "round", fill: "none" })] })),
|
|
310
|
+
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "3", y: "3", width: "8", height: "8", rx: "1", fill: primaryColor }), jsx("rect", { x: "13", y: "13", width: "8", height: "8", rx: "1", fill: primaryColor }), jsx("rect", { x: "3", y: "3", width: "8", height: "8", rx: "1", fill: "white", opacity: "0.1" }), jsx("rect", { x: "13", y: "13", width: "8", height: "8", rx: "1", fill: "white", opacity: "0.1" })] })),
|
|
311
|
+
},
|
|
312
|
+
});
|
|
252
313
|
|
|
253
|
-
export { NtdCheck, NtdClipboard, NtdCopy, NtdDownload, NtdEdit, NtdFilter, NtdLink, NtdLock, NtdLogIn, NtdLogOut, NtdMinus, NtdPlus, NtdPrint, NtdRedo, NtdReply, NtdSave, NtdSearch, NtdSettings, NtdShare, NtdSort, NtdTrash, NtdUndo, NtdUnlock, NtdUpload, NtdZoomIn, NtdZoomOut };
|
|
314
|
+
export { NtdCheck, NtdClipboard, NtdCopy, NtdDownload, NtdEdit, NtdEditDetail, NtdFilter, NtdGroup, NtdLink, NtdLock, NtdLogIn, NtdLogOut, NtdMinus, NtdPlus, NtdPrint, NtdRedo, NtdReply, NtdSave, NtdSearch, NtdSettings, NtdShare, NtdSort, NtdTrash, NtdUndo, NtdUngroup, NtdUnlock, NtdUpload, NtdZoomIn, NtdZoomOut };
|