@spear-ai/spectral 1.22.1 → 1.22.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Icons/LockIcon.d.ts +18 -0
- package/dist/Icons/LockIcon.d.ts.map +1 -0
- package/dist/Icons/LockIcon.js +27 -0
- package/dist/Icons/LockIcon.js.map +1 -0
- package/dist/Icons/UnlockIcon.d.ts +18 -0
- package/dist/Icons/UnlockIcon.d.ts.map +1 -0
- package/dist/Icons/UnlockIcon.js +27 -0
- package/dist/Icons/UnlockIcon.js.map +1 -0
- package/dist/Icons.d.ts +3 -1
- package/dist/Icons.js +3 -1
- package/dist/Input.js +5 -0
- package/dist/Input.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/package.json +9 -6
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { IconProps } from "../components/Icons/iconTypes.js";
|
|
3
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Icons/LockIcon.d.ts
|
|
6
|
+
declare const LockIcon: (({
|
|
7
|
+
ref,
|
|
8
|
+
className,
|
|
9
|
+
title,
|
|
10
|
+
description,
|
|
11
|
+
size,
|
|
12
|
+
...rest
|
|
13
|
+
}: IconProps) => _$react_jsx_runtime0.JSX.Element) & {
|
|
14
|
+
displayName: string;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { LockIcon };
|
|
18
|
+
//# sourceMappingURL=LockIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LockIcon.d.ts","names":[],"sources":["../../src/components/Icons/LockIcon.tsx"],"mappings":";;;;;cAwBa,QAAA;EAAQ,GAAA;EAAA,SAAA;EAAA,KAAA;EAAA,WAAA;EAAA,IAAA;EAAA,GAAA;AAAA,GArByD,SAAA,KAAS,oBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { IconBase } from "./IconBase.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Icons/LockIcon.tsx
|
|
6
|
+
const IconLock = ({ ref, className, title, description, size = 24, ...rest }) => {
|
|
7
|
+
return /* @__PURE__ */ jsx(IconBase, {
|
|
8
|
+
size,
|
|
9
|
+
className,
|
|
10
|
+
title,
|
|
11
|
+
description,
|
|
12
|
+
ref,
|
|
13
|
+
...rest,
|
|
14
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
15
|
+
d: "M16.5714 9.77778V6.44444C16.5714 3.98984 14.5247 2 12 2C9.47527 2 7.42857 3.98984 7.42857 6.44444V9.77778M12 14.2222V17.5556M6.28571 22H17.7143C18.9767 22 20 21.0051 20 19.7778V12C20 10.7727 18.9767 9.77778 17.7143 9.77778H6.28571C5.02335 9.77778 4 10.7727 4 12V19.7778C4 21.0051 5.02335 22 6.28571 22Z",
|
|
16
|
+
stroke: "currentColor",
|
|
17
|
+
strokeWidth: "2",
|
|
18
|
+
strokeLinecap: "round",
|
|
19
|
+
strokeLinejoin: "round"
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const LockIcon = Object.assign(IconLock, { displayName: "LockIcon" });
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { LockIcon };
|
|
27
|
+
//# sourceMappingURL=LockIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LockIcon.js","names":[],"sources":["../../src/components/Icons/LockIcon.tsx"],"sourcesContent":["import { IconBase } from './IconBase'\nimport { type IconProps } from './iconTypes'\n\nconst IconLock = ({ ref, className, title, description, size = 24, ...rest }: IconProps) => {\n return (\n <IconBase\n size={size}\n className={className}\n title={title}\n description={description}\n ref={ref}\n {...rest}\n >\n <path\n d='M16.5714 9.77778V6.44444C16.5714 3.98984 14.5247 2 12 2C9.47527 2 7.42857 3.98984 7.42857 6.44444V9.77778M12 14.2222V17.5556M6.28571 22H17.7143C18.9767 22 20 21.0051 20 19.7778V12C20 10.7727 18.9767 9.77778 17.7143 9.77778H6.28571C5.02335 9.77778 4 10.7727 4 12V19.7778C4 21.0051 5.02335 22 6.28571 22Z'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </IconBase>\n )\n}\n\nexport const LockIcon = Object.assign(IconLock, { displayName: 'LockIcon' })\n"],"mappings":";;;;;AAGA,MAAM,YAAY,EAAE,KAAK,WAAW,OAAO,aAAa,OAAO,IAAI,GAAG,WAAsB;AAC1F,QACE,oBAAC,UAAD;EACQ;EACK;EACJ;EACM;EACR;EACL,GAAI;YAEJ,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;GACf;EACO;;AAIf,MAAa,WAAW,OAAO,OAAO,UAAU,EAAE,aAAa,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { IconProps } from "../components/Icons/iconTypes.js";
|
|
3
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Icons/UnlockIcon.d.ts
|
|
6
|
+
declare const UnlockIcon: (({
|
|
7
|
+
ref,
|
|
8
|
+
className,
|
|
9
|
+
title,
|
|
10
|
+
description,
|
|
11
|
+
size,
|
|
12
|
+
...rest
|
|
13
|
+
}: IconProps) => _$react_jsx_runtime0.JSX.Element) & {
|
|
14
|
+
displayName: string;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { UnlockIcon };
|
|
18
|
+
//# sourceMappingURL=UnlockIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnlockIcon.d.ts","names":[],"sources":["../../src/components/Icons/UnlockIcon.tsx"],"mappings":";;;;;cAwBa,UAAA;EAAU,GAAA;EAAA,SAAA;EAAA,KAAA;EAAA,WAAA;EAAA,IAAA;EAAA,GAAA;AAAA,GArByD,SAAA,KAAS,oBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { IconBase } from "./IconBase.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Icons/UnlockIcon.tsx
|
|
6
|
+
const IconUnlock = ({ ref, className, title, description, size = 24, ...rest }) => {
|
|
7
|
+
return /* @__PURE__ */ jsx(IconBase, {
|
|
8
|
+
size,
|
|
9
|
+
className,
|
|
10
|
+
title,
|
|
11
|
+
description,
|
|
12
|
+
ref,
|
|
13
|
+
...rest,
|
|
14
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
15
|
+
d: "M12 14.2222V17.5556M7.42857 9.77778V6.44444C7.42857 3.98984 9.47527 2 12 2C14.1301 2 15.9199 3.41641 16.4274 5.33333M6.28571 22H17.7143C18.9767 22 20 21.0051 20 19.7778V12C20 10.7727 18.9767 9.77778 17.7143 9.77778H6.28571C5.02335 9.77778 4 10.7727 4 12V19.7778C4 21.0051 5.02335 22 6.28571 22Z",
|
|
16
|
+
stroke: "currentColor",
|
|
17
|
+
strokeWidth: "2",
|
|
18
|
+
strokeLinecap: "round",
|
|
19
|
+
strokeLinejoin: "round"
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const UnlockIcon = Object.assign(IconUnlock, { displayName: "UnlockIcon" });
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { UnlockIcon };
|
|
27
|
+
//# sourceMappingURL=UnlockIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnlockIcon.js","names":[],"sources":["../../src/components/Icons/UnlockIcon.tsx"],"sourcesContent":["import { IconBase } from './IconBase'\nimport { type IconProps } from './iconTypes'\n\nconst IconUnlock = ({ ref, className, title, description, size = 24, ...rest }: IconProps) => {\n return (\n <IconBase\n size={size}\n className={className}\n title={title}\n description={description}\n ref={ref}\n {...rest}\n >\n <path\n d='M12 14.2222V17.5556M7.42857 9.77778V6.44444C7.42857 3.98984 9.47527 2 12 2C14.1301 2 15.9199 3.41641 16.4274 5.33333M6.28571 22H17.7143C18.9767 22 20 21.0051 20 19.7778V12C20 10.7727 18.9767 9.77778 17.7143 9.77778H6.28571C5.02335 9.77778 4 10.7727 4 12V19.7778C4 21.0051 5.02335 22 6.28571 22Z'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </IconBase>\n )\n}\n\nexport const UnlockIcon = Object.assign(IconUnlock, { displayName: 'UnlockIcon' })\n"],"mappings":";;;;;AAGA,MAAM,cAAc,EAAE,KAAK,WAAW,OAAO,aAAa,OAAO,IAAI,GAAG,WAAsB;AAC5F,QACE,oBAAC,UAAD;EACQ;EACK;EACJ;EACM;EACR;EACL,GAAI;YAEJ,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;GACf;EACO;;AAIf,MAAa,aAAa,OAAO,OAAO,YAAY,EAAE,aAAa,cAAc,CAAC"}
|
package/dist/Icons.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ import { LinkIcon } from "./Icons/LinkIcon.js";
|
|
|
42
42
|
import { LiveViewIcon } from "./Icons/LiveViewIcon.js";
|
|
43
43
|
import { LoaderIcon } from "./Icons/LoaderIcon.js";
|
|
44
44
|
import { LocationIcon } from "./Icons/LocationIcon.js";
|
|
45
|
+
import { LockIcon } from "./Icons/LockIcon.js";
|
|
45
46
|
import { LogoutIcon } from "./Icons/LogoutIcon.js";
|
|
46
47
|
import { MaximizeIcon } from "./Icons/MaximizeIcon.js";
|
|
47
48
|
import { MeasureIcon } from "./Icons/MeasureIcon.js";
|
|
@@ -79,6 +80,7 @@ import { SyncOffIcon } from "./Icons/SyncOffIcon.js";
|
|
|
79
80
|
import { TrashIcon } from "./Icons/TrashIcon.js";
|
|
80
81
|
import { UndoIcon } from "./Icons/UndoIcon.js";
|
|
81
82
|
import { UnlinkIcon } from "./Icons/UnlinkIcon.js";
|
|
83
|
+
import { UnlockIcon } from "./Icons/UnlockIcon.js";
|
|
82
84
|
import { UploadIcon } from "./Icons/UploadIcon.js";
|
|
83
85
|
import { User2Icon } from "./Icons/User2Icon.js";
|
|
84
86
|
import { UserIcon } from "./Icons/UserIcon.js";
|
|
@@ -86,4 +88,4 @@ import { WarningIcon } from "./Icons/WarningIcon.js";
|
|
|
86
88
|
import { ZoomAllIcon } from "./Icons/ZoomAllIcon.js";
|
|
87
89
|
import { ZoomXIcon } from "./Icons/ZoomXIcon.js";
|
|
88
90
|
import { ZoomYIcon } from "./Icons/ZoomYIcon.js";
|
|
89
|
-
export { AdjustmentsIcon, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, BoxToolIcon, CalendarIcon, CheckCircleIcon, CheckSquareIcon, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Crosshairs2Icon, CrosshairsIcon, DashboardIcon, DatabaseIcon, DeleteIcon, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, InfoIcon, IterationArrowIcon, KeyboardIcon, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, MinimizeIcon, MinusIcon, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, ResetIcon, ReviewedIcon, ScissorsIcon, SearchIcon, SettingsIcon, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, StackIcon, StarIcon, SyncIcon, SyncOffIcon, TrashIcon, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, ZoomAllIcon, ZoomXIcon, ZoomYIcon };
|
|
91
|
+
export { AdjustmentsIcon, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, BoxToolIcon, CalendarIcon, CheckCircleIcon, CheckSquareIcon, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Crosshairs2Icon, CrosshairsIcon, DashboardIcon, DatabaseIcon, DeleteIcon, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, InfoIcon, IterationArrowIcon, KeyboardIcon, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LockIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, MinimizeIcon, MinusIcon, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, ResetIcon, ReviewedIcon, ScissorsIcon, SearchIcon, SettingsIcon, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, StackIcon, StarIcon, SyncIcon, SyncOffIcon, TrashIcon, UndoIcon, UnlinkIcon, UnlockIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, ZoomAllIcon, ZoomXIcon, ZoomYIcon };
|
package/dist/Icons.js
CHANGED
|
@@ -42,6 +42,7 @@ import { LinkIcon } from "./Icons/LinkIcon.js";
|
|
|
42
42
|
import { LiveViewIcon } from "./Icons/LiveViewIcon.js";
|
|
43
43
|
import { LoaderIcon } from "./Icons/LoaderIcon.js";
|
|
44
44
|
import { LocationIcon } from "./Icons/LocationIcon.js";
|
|
45
|
+
import { LockIcon } from "./Icons/LockIcon.js";
|
|
45
46
|
import { LogoutIcon } from "./Icons/LogoutIcon.js";
|
|
46
47
|
import { MaximizeIcon } from "./Icons/MaximizeIcon.js";
|
|
47
48
|
import { MeasureIcon } from "./Icons/MeasureIcon.js";
|
|
@@ -79,6 +80,7 @@ import { SyncOffIcon } from "./Icons/SyncOffIcon.js";
|
|
|
79
80
|
import { TrashIcon } from "./Icons/TrashIcon.js";
|
|
80
81
|
import { UndoIcon } from "./Icons/UndoIcon.js";
|
|
81
82
|
import { UnlinkIcon } from "./Icons/UnlinkIcon.js";
|
|
83
|
+
import { UnlockIcon } from "./Icons/UnlockIcon.js";
|
|
82
84
|
import { UploadIcon } from "./Icons/UploadIcon.js";
|
|
83
85
|
import { User2Icon } from "./Icons/User2Icon.js";
|
|
84
86
|
import { UserIcon } from "./Icons/UserIcon.js";
|
|
@@ -87,4 +89,4 @@ import { ZoomAllIcon } from "./Icons/ZoomAllIcon.js";
|
|
|
87
89
|
import { ZoomXIcon } from "./Icons/ZoomXIcon.js";
|
|
88
90
|
import { ZoomYIcon } from "./Icons/ZoomYIcon.js";
|
|
89
91
|
|
|
90
|
-
export { AdjustmentsIcon, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, BoxToolIcon, CalendarIcon, CheckCircleIcon, CheckSquareIcon, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Crosshairs2Icon, CrosshairsIcon, DashboardIcon, DatabaseIcon, DeleteIcon, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, InfoIcon, IterationArrowIcon, KeyboardIcon, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, MinimizeIcon, MinusIcon, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, ResetIcon, ReviewedIcon, ScissorsIcon, SearchIcon, SettingsIcon, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, StackIcon, StarIcon, SyncIcon, SyncOffIcon, TrashIcon, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, ZoomAllIcon, ZoomXIcon, ZoomYIcon };
|
|
92
|
+
export { AdjustmentsIcon, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, BoxToolIcon, CalendarIcon, CheckCircleIcon, CheckSquareIcon, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Crosshairs2Icon, CrosshairsIcon, DashboardIcon, DatabaseIcon, DeleteIcon, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, InfoIcon, IterationArrowIcon, KeyboardIcon, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LockIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, MinimizeIcon, MinusIcon, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, ResetIcon, ReviewedIcon, ScissorsIcon, SearchIcon, SettingsIcon, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, StackIcon, StarIcon, SyncIcon, SyncOffIcon, TrashIcon, UndoIcon, UnlinkIcon, UnlockIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, ZoomAllIcon, ZoomXIcon, ZoomYIcon };
|
package/dist/Input.js
CHANGED
|
@@ -75,6 +75,9 @@ const Input = (allProps) => {
|
|
|
75
75
|
element.focus();
|
|
76
76
|
}
|
|
77
77
|
}, [setValue]);
|
|
78
|
+
const handleInlineControlPointerDown = useCallback((event) => {
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
}, []);
|
|
78
81
|
const showClearButtonNow = showClearButton && value.length > 0;
|
|
79
82
|
const getEndIcon = () => {
|
|
80
83
|
const iconComponents = {
|
|
@@ -84,6 +87,7 @@ const Input = (allProps) => {
|
|
|
84
87
|
"aria-pressed": isVisible,
|
|
85
88
|
className: iconButtonClasses,
|
|
86
89
|
onClick: toggleVisibility,
|
|
90
|
+
onPointerDown: handleInlineControlPointerDown,
|
|
87
91
|
type: "button",
|
|
88
92
|
children: isVisible ? /* @__PURE__ */ jsx(EyeClosedIcon, { size: 22 }) : /* @__PURE__ */ jsx(EyeOpenIcon, { size: 22 })
|
|
89
93
|
}),
|
|
@@ -91,6 +95,7 @@ const Input = (allProps) => {
|
|
|
91
95
|
"aria-label": String(`Clear ${label ?? "input"}`),
|
|
92
96
|
className: iconButtonClasses,
|
|
93
97
|
onClick: handleClear,
|
|
98
|
+
onPointerDown: handleInlineControlPointerDown,
|
|
94
99
|
type: "button",
|
|
95
100
|
children: /* @__PURE__ */ jsx(CloseCircleIcon, { size: 22 })
|
|
96
101
|
}),
|
package/dist/Input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","names":[],"sources":["../src/components/Input/Input.tsx"],"sourcesContent":["import { CheckCircleIcon, CloseCircleIcon, ErrorIcon, EyeClosedIcon, EyeOpenIcon, LoaderIcon, WarningIcon } from '@components/Icons'\nimport { Label } from '@components/Label/Label'\nimport { useUncontrolledState } from '@hooks/useUncontrolledState'\nimport {\n ErrorMessage,\n getAriaProps,\n getErrorMessageId,\n getFormFieldCSSProperties,\n getInputClasses,\n getPasswordManagerIgnoreProps,\n getWarningMessageId,\n useFormFieldId,\n useFormFieldState,\n WarningMessage,\n type BaseFormFieldProps,\n} from '@utils/formFieldUtils'\nimport { cn } from '@utils/twUtils'\nimport { useCallback, useRef, type ChangeEvent, type CSSProperties, type FocusEvent, type InputHTMLAttributes, type ReactElement, type Ref } from 'react'\nimport { useClearOnFocus, usePasswordVisibility, usePrefixWidth } from './InputUtils'\n\nexport type InputType = 'text' | 'email' | 'url' | 'tel' | 'password' | 'number' | 'date' | 'datetime-local'\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'id' | 'onChange'> &\n BaseFormFieldProps & {\n className?: string\n clearOnFocus?: boolean\n endIcon?: ReactElement\n hideStateIcon?: boolean\n labelClassName?: string\n onBlur?: (e: FocusEvent<HTMLInputElement>) => void\n onChange?: (value: string) => void\n onFocus?: (e: FocusEvent<HTMLInputElement>) => void\n placeholder?: string\n prefix?: string\n showClearButton?: boolean\n startIcon?: ReactElement\n suppressHydrationWarning?: boolean\n type?: InputType\n value?: string\n warningMessage?: BaseFormFieldProps['errorMessage']\n }\n\nconst mergeRefs = <T,>(...refs: (Ref<T> | undefined)[]): Ref<T> => {\n return (value: T | null) => {\n refs.forEach((ref) => {\n if (!ref) return\n if (typeof ref === 'function') {\n ref(value)\n } else {\n ;(ref as { current: T | null }).current = value\n }\n })\n }\n}\n\nconst iconBaseClasses = 'absolute top-1/2 -translate-y-1/2'\nconst endIconClasses = cn(iconBaseClasses, 'right-3 text-input-icon')\nconst startIconClasses = cn(iconBaseClasses, 'left-3 text-input-icon')\nconst iconButtonClasses = cn(endIconClasses, 'aspect-square max-h-6 rounded-sm hover:text-input-icon--hover cursor-pointer focus:outline-none focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-1')\n\nconst getAutoCompleteValue = (type: InputType): string => {\n const autoCompleteMap: Record<InputType, string> = {\n date: 'off',\n email: 'email',\n number: 'off',\n password: 'current-password',\n tel: 'tel',\n text: 'off',\n url: 'url',\n 'datetime-local': 'off',\n }\n return autoCompleteMap[type] || 'off'\n}\n\nexport const Input = (\n allProps: InputProps & {\n ref?: Ref<HTMLInputElement>\n },\n): ReactElement => {\n const {\n className,\n clearOnFocus = false,\n defaultValue,\n disabled,\n endIcon,\n errorMessage,\n hideStateIcon = false,\n id,\n label,\n labelClassName,\n messageReserveLines = 1,\n messageReserveSpace = false,\n name,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n prefix,\n ref,\n required,\n showClearButton = false,\n startIcon,\n state = 'default',\n suppressHydrationWarning = true,\n type = 'text',\n value: valueProp,\n warningMessage,\n autoComplete,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n ...props\n } = allProps\n const inputId = useFormFieldId(id, name)\n const errorMessageId = getErrorMessageId(inputId)\n const warningMessageId = getWarningMessageId(inputId)\n const { isDisabled, isLoading, isInvalid } = useFormFieldState(disabled, state)\n const messageId = state === 'error' ? errorMessageId : state === 'warning' && warningMessage ? warningMessageId : undefined\n const ariaProps = getAriaProps(state, ariaDescribedBy, required, messageId)\n const normalizedDefaultValue = typeof defaultValue === 'string' ? defaultValue : defaultValue !== undefined && defaultValue !== null ? String(defaultValue) : ''\n const [value, setValue] = useUncontrolledState<string>({\n value: valueProp,\n defaultValue: normalizedDefaultValue,\n onChange,\n })\n\n const internalRef = useRef<HTMLInputElement>(null)\n const inputRef = mergeRefs(ref, internalRef)\n\n const { isVisible, toggleVisibility, inputType } = usePasswordVisibility()\n const { prefixWidth, prefixRef } = usePrefixWidth(prefix)\n const { handleFocus: clearOnFocusHandler } = useClearOnFocus(clearOnFocus, (e: ChangeEvent<HTMLInputElement>) => setValue(e.target.value))\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLInputElement>): void => {\n onBlur?.(e)\n },\n [onBlur],\n )\n\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLInputElement>): void => {\n clearOnFocusHandler(e, onFocus)\n },\n [clearOnFocusHandler, onFocus],\n )\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>): void => {\n const newValue = e.target.value\n setValue(newValue)\n },\n [setValue],\n )\n\n const handleClear = useCallback((): void => {\n const element = internalRef.current\n if (element) {\n setValue('')\n element.focus()\n }\n }, [setValue])\n\n const showClearButtonNow = showClearButton && value.length > 0\n\n const getEndIcon = (): ReactElement | null => {\n const iconComponents = {\n password: () => (\n <button aria-controls={inputId} aria-label={isVisible ? `Hide ${label ?? 'password'}` : `Show ${label ?? 'password'}`} aria-pressed={isVisible} className={iconButtonClasses} data-testid='spectral-input-password-toggle' onClick={toggleVisibility} type='button'>\n {isVisible ? <EyeClosedIcon size={22} /> : <EyeOpenIcon size={22} />}\n </button>\n ),\n clear: () => (\n <button aria-label={String(`Clear ${label ?? 'input'}`)} className={iconButtonClasses} data-testid='spectral-input-clear-button' onClick={handleClear} type='button'>\n <CloseCircleIcon size={22} />\n </button>\n ),\n loading: () => (\n <div className={endIconClasses} data-testid='spectral-input-loading-icon'>\n <LoaderIcon size={24} />\n </div>\n ),\n error: () => (\n <div className={cn(iconBaseClasses, 'right-3 text-danger-400')} data-testid='spectral-input-error-icon'>\n <ErrorIcon size={24} />\n </div>\n ),\n success: () => (\n <div className={cn(iconBaseClasses, 'right-3 text-success-400')} data-testid='spectral-input-success-icon'>\n <CheckCircleIcon size={24} />\n </div>\n ),\n warning: () => (\n <div className={cn(iconBaseClasses, 'right-3 text-warning-400')} data-testid='spectral-input-warning-icon'>\n <WarningIcon size={24} />\n </div>\n ),\n }\n\n if (endIcon) return <div className={endIconClasses}>{endIcon}</div>\n if (type === 'password') return iconComponents.password()\n if (showClearButtonNow) return iconComponents.clear()\n if (isLoading) return iconComponents.loading()\n if (hideStateIcon && (state === 'success' || state === 'warning' || state === 'error')) return null\n if (state === 'success') return iconComponents.success()\n if (state === 'warning') return iconComponents.warning()\n if (state === 'error') return iconComponents.error()\n\n return null\n }\n\n const getStartIcon = (): ReactElement | null => {\n if (startIcon) return <div className={startIconClasses}>{startIcon}</div>\n return null\n }\n\n const usesTabularNumbers = type === 'number' || type === 'date' || type === 'datetime-local'\n const inputClasses = cn(getInputClasses(state, className), '[text-indent:var(--prefix-width)]', startIcon && 'pl-10', showClearButtonNow && 'pr-10', usesTabularNumbers && 'tabular-nums')\n\n const prefixClasses = cn('inset-y-0 left-4 text-base pointer-events-none absolute flex items-center text-input-text-prefix opacity-100 peer-disabled:opacity-50')\n\n return (\n <div className='flex w-full flex-col gap-1.5' data-testid='spectral-input-container'>\n {label && (\n <Label className={cn('mb-2 block', labelClassName, isDisabled && 'cursor-not-allowed text-input-text--disabled placeholder:text-input-text-placeholder')} data-testid='spectral-input-label' htmlFor={inputId}>\n {label}\n </Label>\n )}\n <div className='relative' data-testid='spectral-input-wrapper'>\n <div className='relative'>\n {getStartIcon()}\n {prefix && (\n <span ref={prefixRef} className={prefixClasses}>\n {prefix}\n </span>\n )}\n <input\n aria-label={ariaLabel ?? label}\n autoComplete={autoComplete ?? getAutoCompleteValue(type)}\n className={inputClasses}\n data-state={state}\n data-testid='spectral-input'\n disabled={isDisabled}\n id={inputId}\n name={name}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n placeholder={placeholder ?? label}\n ref={inputRef}\n required={required}\n style={\n getFormFieldCSSProperties({\n '--prefix-width': prefix ? `${prefixWidth}px` : '0',\n }) as CSSProperties\n }\n suppressHydrationWarning={suppressHydrationWarning}\n type={type === 'password' ? inputType : type}\n value={value}\n {...getPasswordManagerIgnoreProps(type)}\n {...ariaProps}\n {...props}\n />\n {getEndIcon()}\n </div>\n\n <ErrorMessage\n dataTestId='spectral-input-error-message'\n id={errorMessageId}\n message={isInvalid ? (errorMessage ?? null) : null}\n messageReserveLines={messageReserveLines}\n messageReserveSpace={messageReserveSpace && state === 'error'}\n />\n <WarningMessage\n dataTestId='spectral-input-warning-message'\n id={warningMessageId}\n message={state === 'warning' ? (warningMessage ?? null) : null}\n messageReserveLines={messageReserveLines}\n messageReserveSpace={messageReserveSpace && state === 'warning'}\n />\n </div>\n </div>\n )\n}\nInput.displayName = 'Input'\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Input.js","names":[],"sources":["../src/components/Input/Input.tsx"],"sourcesContent":["import { CheckCircleIcon, CloseCircleIcon, ErrorIcon, EyeClosedIcon, EyeOpenIcon, LoaderIcon, WarningIcon } from '@components/Icons'\nimport { Label } from '@components/Label/Label'\nimport { useUncontrolledState } from '@hooks/useUncontrolledState'\nimport {\n ErrorMessage,\n getAriaProps,\n getErrorMessageId,\n getFormFieldCSSProperties,\n getInputClasses,\n getPasswordManagerIgnoreProps,\n getWarningMessageId,\n useFormFieldId,\n useFormFieldState,\n WarningMessage,\n type BaseFormFieldProps,\n} from '@utils/formFieldUtils'\nimport { cn } from '@utils/twUtils'\nimport { useCallback, useRef, type ChangeEvent, type CSSProperties, type FocusEvent, type InputHTMLAttributes, type PointerEvent, type ReactElement, type Ref } from 'react'\nimport { useClearOnFocus, usePasswordVisibility, usePrefixWidth } from './InputUtils'\n\nexport type InputType = 'text' | 'email' | 'url' | 'tel' | 'password' | 'number' | 'date' | 'datetime-local'\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'id' | 'onChange'> &\n BaseFormFieldProps & {\n className?: string\n clearOnFocus?: boolean\n endIcon?: ReactElement\n hideStateIcon?: boolean\n labelClassName?: string\n onBlur?: (e: FocusEvent<HTMLInputElement>) => void\n onChange?: (value: string) => void\n onFocus?: (e: FocusEvent<HTMLInputElement>) => void\n placeholder?: string\n prefix?: string\n showClearButton?: boolean\n startIcon?: ReactElement\n suppressHydrationWarning?: boolean\n type?: InputType\n value?: string\n warningMessage?: BaseFormFieldProps['errorMessage']\n }\n\nconst mergeRefs = <T,>(...refs: (Ref<T> | undefined)[]): Ref<T> => {\n return (value: T | null) => {\n refs.forEach((ref) => {\n if (!ref) return\n if (typeof ref === 'function') {\n ref(value)\n } else {\n ;(ref as { current: T | null }).current = value\n }\n })\n }\n}\n\nconst iconBaseClasses = 'absolute top-1/2 -translate-y-1/2'\nconst endIconClasses = cn(iconBaseClasses, 'right-3 text-input-icon')\nconst startIconClasses = cn(iconBaseClasses, 'left-3 text-input-icon')\nconst iconButtonClasses = cn(endIconClasses, 'aspect-square max-h-6 rounded-sm hover:text-input-icon--hover cursor-pointer focus:outline-none focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-1')\n\nconst getAutoCompleteValue = (type: InputType): string => {\n const autoCompleteMap: Record<InputType, string> = {\n date: 'off',\n email: 'email',\n number: 'off',\n password: 'current-password',\n tel: 'tel',\n text: 'off',\n url: 'url',\n 'datetime-local': 'off',\n }\n return autoCompleteMap[type] || 'off'\n}\n\nexport const Input = (\n allProps: InputProps & {\n ref?: Ref<HTMLInputElement>\n },\n): ReactElement => {\n const {\n className,\n clearOnFocus = false,\n defaultValue,\n disabled,\n endIcon,\n errorMessage,\n hideStateIcon = false,\n id,\n label,\n labelClassName,\n messageReserveLines = 1,\n messageReserveSpace = false,\n name,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n prefix,\n ref,\n required,\n showClearButton = false,\n startIcon,\n state = 'default',\n suppressHydrationWarning = true,\n type = 'text',\n value: valueProp,\n warningMessage,\n autoComplete,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n ...props\n } = allProps\n const inputId = useFormFieldId(id, name)\n const errorMessageId = getErrorMessageId(inputId)\n const warningMessageId = getWarningMessageId(inputId)\n const { isDisabled, isLoading, isInvalid } = useFormFieldState(disabled, state)\n const messageId = state === 'error' ? errorMessageId : state === 'warning' && warningMessage ? warningMessageId : undefined\n const ariaProps = getAriaProps(state, ariaDescribedBy, required, messageId)\n const normalizedDefaultValue = typeof defaultValue === 'string' ? defaultValue : defaultValue !== undefined && defaultValue !== null ? String(defaultValue) : ''\n const [value, setValue] = useUncontrolledState<string>({\n value: valueProp,\n defaultValue: normalizedDefaultValue,\n onChange,\n })\n\n const internalRef = useRef<HTMLInputElement>(null)\n const inputRef = mergeRefs(ref, internalRef)\n\n const { isVisible, toggleVisibility, inputType } = usePasswordVisibility()\n const { prefixWidth, prefixRef } = usePrefixWidth(prefix)\n const { handleFocus: clearOnFocusHandler } = useClearOnFocus(clearOnFocus, (e: ChangeEvent<HTMLInputElement>) => setValue(e.target.value))\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLInputElement>): void => {\n onBlur?.(e)\n },\n [onBlur],\n )\n\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLInputElement>): void => {\n clearOnFocusHandler(e, onFocus)\n },\n [clearOnFocusHandler, onFocus],\n )\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>): void => {\n const newValue = e.target.value\n setValue(newValue)\n },\n [setValue],\n )\n\n const handleClear = useCallback((): void => {\n const element = internalRef.current\n if (element) {\n setValue('')\n element.focus()\n }\n }, [setValue])\n\n const handleInlineControlPointerDown = useCallback((event: PointerEvent<HTMLButtonElement>): void => {\n event.preventDefault()\n }, [])\n\n const showClearButtonNow = showClearButton && value.length > 0\n\n const getEndIcon = (): ReactElement | null => {\n const iconComponents = {\n password: () => (\n <button\n aria-controls={inputId}\n aria-label={isVisible ? `Hide ${label ?? 'password'}` : `Show ${label ?? 'password'}`}\n aria-pressed={isVisible}\n className={iconButtonClasses}\n data-testid='spectral-input-password-toggle'\n onClick={toggleVisibility}\n onPointerDown={handleInlineControlPointerDown}\n type='button'\n >\n {isVisible ? <EyeClosedIcon size={22} /> : <EyeOpenIcon size={22} />}\n </button>\n ),\n clear: () => (\n <button\n aria-label={String(`Clear ${label ?? 'input'}`)}\n className={iconButtonClasses}\n data-testid='spectral-input-clear-button'\n onClick={handleClear}\n onPointerDown={handleInlineControlPointerDown}\n type='button'\n >\n <CloseCircleIcon size={22} />\n </button>\n ),\n loading: () => (\n <div className={endIconClasses} data-testid='spectral-input-loading-icon'>\n <LoaderIcon size={24} />\n </div>\n ),\n error: () => (\n <div className={cn(iconBaseClasses, 'right-3 text-danger-400')} data-testid='spectral-input-error-icon'>\n <ErrorIcon size={24} />\n </div>\n ),\n success: () => (\n <div className={cn(iconBaseClasses, 'right-3 text-success-400')} data-testid='spectral-input-success-icon'>\n <CheckCircleIcon size={24} />\n </div>\n ),\n warning: () => (\n <div className={cn(iconBaseClasses, 'right-3 text-warning-400')} data-testid='spectral-input-warning-icon'>\n <WarningIcon size={24} />\n </div>\n ),\n }\n\n if (endIcon) return <div className={endIconClasses}>{endIcon}</div>\n if (type === 'password') return iconComponents.password()\n if (showClearButtonNow) return iconComponents.clear()\n if (isLoading) return iconComponents.loading()\n if (hideStateIcon && (state === 'success' || state === 'warning' || state === 'error')) return null\n if (state === 'success') return iconComponents.success()\n if (state === 'warning') return iconComponents.warning()\n if (state === 'error') return iconComponents.error()\n\n return null\n }\n\n const getStartIcon = (): ReactElement | null => {\n if (startIcon) return <div className={startIconClasses}>{startIcon}</div>\n return null\n }\n\n const usesTabularNumbers = type === 'number' || type === 'date' || type === 'datetime-local'\n const inputClasses = cn(getInputClasses(state, className), '[text-indent:var(--prefix-width)]', startIcon && 'pl-10', showClearButtonNow && 'pr-10', usesTabularNumbers && 'tabular-nums')\n\n const prefixClasses = cn('inset-y-0 left-4 text-base pointer-events-none absolute flex items-center text-input-text-prefix opacity-100 peer-disabled:opacity-50')\n\n return (\n <div className='flex w-full flex-col gap-1.5' data-testid='spectral-input-container'>\n {label && (\n <Label className={cn('mb-2 block', labelClassName, isDisabled && 'cursor-not-allowed text-input-text--disabled placeholder:text-input-text-placeholder')} data-testid='spectral-input-label' htmlFor={inputId}>\n {label}\n </Label>\n )}\n <div className='relative' data-testid='spectral-input-wrapper'>\n <div className='relative'>\n {getStartIcon()}\n {prefix && (\n <span ref={prefixRef} className={prefixClasses}>\n {prefix}\n </span>\n )}\n <input\n aria-label={ariaLabel ?? label}\n autoComplete={autoComplete ?? getAutoCompleteValue(type)}\n className={inputClasses}\n data-state={state}\n data-testid='spectral-input'\n disabled={isDisabled}\n id={inputId}\n name={name}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n placeholder={placeholder ?? label}\n ref={inputRef}\n required={required}\n style={\n getFormFieldCSSProperties({\n '--prefix-width': prefix ? `${prefixWidth}px` : '0',\n }) as CSSProperties\n }\n suppressHydrationWarning={suppressHydrationWarning}\n type={type === 'password' ? inputType : type}\n value={value}\n {...getPasswordManagerIgnoreProps(type)}\n {...ariaProps}\n {...props}\n />\n {getEndIcon()}\n </div>\n\n <ErrorMessage\n dataTestId='spectral-input-error-message'\n id={errorMessageId}\n message={isInvalid ? (errorMessage ?? null) : null}\n messageReserveLines={messageReserveLines}\n messageReserveSpace={messageReserveSpace && state === 'error'}\n />\n <WarningMessage\n dataTestId='spectral-input-warning-message'\n id={warningMessageId}\n message={state === 'warning' ? (warningMessage ?? null) : null}\n messageReserveLines={messageReserveLines}\n messageReserveSpace={messageReserveSpace && state === 'warning'}\n />\n </div>\n </div>\n )\n}\nInput.displayName = 'Input'\n"],"mappings":";;;;;;;;;;;;;;;;;;AA0CA,MAAM,aAAiB,GAAG,SAAyC;AACjE,SAAQ,UAAoB;AAC1B,OAAK,SAAS,QAAQ;AACpB,OAAI,CAAC,IAAK;AACV,OAAI,OAAO,QAAQ,WACjB,KAAI,MAAK;OAER,CAAC,IAA8B,UAAU;IAE7C;;;AAIL,MAAM,kBAAkB;AACxB,MAAM,iBAAiB,GAAG,iBAAiB,0BAAyB;AACpE,MAAM,mBAAmB,GAAG,iBAAiB,yBAAwB;AACrE,MAAM,oBAAoB,GAAG,gBAAgB,sLAAqL;AAElO,MAAM,wBAAwB,SAA4B;AAWxD,QAAO;EATL,MAAM;EACN,OAAO;EACP,QAAQ;EACR,UAAU;EACV,KAAK;EACL,MAAM;EACN,KAAK;EACL,kBAAkB;EAEE,CAAC,SAAS;;AAGlC,MAAa,SACX,aAGiB;CACjB,MAAM,EACJ,WACA,eAAe,OACf,cACA,UACA,SACA,cACA,gBAAgB,OAChB,IACA,OACA,gBACA,sBAAsB,GACtB,sBAAsB,OACtB,MACA,QACA,UACA,SACA,aACA,QACA,KACA,UACA,kBAAkB,OAClB,WACA,QAAQ,WACR,2BAA2B,MAC3B,OAAO,QACP,OAAO,WACP,gBACA,cACA,cAAc,WACd,oBAAoB,iBACpB,GAAG,UACD;CACJ,MAAM,UAAU,eAAe,IAAI,KAAI;CACvC,MAAM,iBAAiB,kBAAkB,QAAO;CAChD,MAAM,mBAAmB,oBAAoB,QAAO;CACpD,MAAM,EAAE,YAAY,WAAW,cAAc,kBAAkB,UAAU,MAAK;CAE9E,MAAM,YAAY,aAAa,OAAO,iBAAiB,UADrC,UAAU,UAAU,iBAAiB,UAAU,aAAa,iBAAiB,mBAAmB,OACxC;CAE1E,MAAM,CAAC,OAAO,YAAY,qBAA6B;EACrD,OAAO;EACP,cAH6B,OAAO,iBAAiB,WAAW,eAAe,iBAAiB,UAAa,iBAAiB,OAAO,OAAO,aAAa,GAAG;EAI5J;EACD,CAAA;CAED,MAAM,cAAc,OAAyB,KAAI;CACjD,MAAM,WAAW,UAAU,KAAK,YAAW;CAE3C,MAAM,EAAE,WAAW,kBAAkB,cAAc,uBAAsB;CACzE,MAAM,EAAE,aAAa,cAAc,eAAe,OAAM;CACxD,MAAM,EAAE,aAAa,wBAAwB,gBAAgB,eAAe,MAAqC,SAAS,EAAE,OAAO,MAAM,CAAA;CAEzI,MAAM,aAAa,aAChB,MAA0C;AACzC,WAAS,EAAC;IAEZ,CAAC,OAAO,CACV;CAEA,MAAM,cAAc,aACjB,MAA0C;AACzC,sBAAoB,GAAG,QAAO;IAEhC,CAAC,qBAAqB,QAAQ,CAChC;CAEA,MAAM,eAAe,aAClB,MAA2C;EAC1C,MAAM,WAAW,EAAE,OAAO;AAC1B,WAAS,SAAQ;IAEnB,CAAC,SAAS,CACZ;CAEA,MAAM,cAAc,kBAAwB;EAC1C,MAAM,UAAU,YAAY;AAC5B,MAAI,SAAS;AACX,YAAS,GAAE;AACX,WAAQ,OAAM;;IAEf,CAAC,SAAS,CAAA;CAEb,MAAM,iCAAiC,aAAa,UAAiD;AACnG,QAAM,gBAAe;IACpB,EAAE,CAAA;CAEL,MAAM,qBAAqB,mBAAmB,MAAM,SAAS;CAE7D,MAAM,mBAAwC;EAC5C,MAAM,iBAAiB;GACrB,gBACE,oBAAC,UAAD;IACE,iBAAe;IACf,cAAY,YAAY,QAAQ,SAAS,eAAe,QAAQ,SAAS;IACzE,gBAAc;IACd,WAAW;IAEX,SAAS;IACT,eAAe;IACf,MAAK;cAEJ,YAAY,oBAAC,eAAD,EAAe,MAAM,IAAM,IAAG,oBAAC,aAAD,EAAa,MAAM,IAAM;IAC9D;GAEV,aACE,oBAAC,UAAD;IACE,cAAY,OAAO,SAAS,SAAS,UAAU;IAC/C,WAAW;IAEX,SAAS;IACT,eAAe;IACf,MAAK;cAEL,oBAAC,iBAAD,EAAiB,MAAM,IAAK;IACtB;GAEV,eACE,oBAAC,OAAD;IAAK,WAAW;cACd,oBAAC,YAAD,EAAY,MAAM,IAAK;IACpB;GAEP,aACE,oBAAC,OAAD;IAAK,WAAW,GAAG,iBAAiB,0BAA0B;cAC5D,oBAAC,WAAD,EAAW,MAAM,IAAK;IACnB;GAEP,eACE,oBAAC,OAAD;IAAK,WAAW,GAAG,iBAAiB,2BAA2B;cAC7D,oBAAC,iBAAD,EAAiB,MAAM,IAAK;IACzB;GAEP,eACE,oBAAC,OAAD;IAAK,WAAW,GAAG,iBAAiB,2BAA2B;cAC7D,oBAAC,aAAD,EAAa,MAAM,IAAK;IACrB;GAET;AAEA,MAAI,QAAS,QAAO,oBAAC,OAAD;GAAK,WAAW;aAAiB;GAAa;AAClE,MAAI,SAAS,WAAY,QAAO,eAAe,UAAS;AACxD,MAAI,mBAAoB,QAAO,eAAe,OAAM;AACpD,MAAI,UAAW,QAAO,eAAe,SAAQ;AAC7C,MAAI,kBAAkB,UAAU,aAAa,UAAU,aAAa,UAAU,SAAU,QAAO;AAC/F,MAAI,UAAU,UAAW,QAAO,eAAe,SAAQ;AACvD,MAAI,UAAU,UAAW,QAAO,eAAe,SAAQ;AACvD,MAAI,UAAU,QAAS,QAAO,eAAe,OAAM;AAEnD,SAAO;;CAGT,MAAM,qBAA0C;AAC9C,MAAI,UAAW,QAAO,oBAAC,OAAD;GAAK,WAAW;aAAmB;GAAe;AACxE,SAAO;;CAGT,MAAM,qBAAqB,SAAS,YAAY,SAAS,UAAU,SAAS;CAC5E,MAAM,eAAe,GAAG,gBAAgB,OAAO,UAAU,EAAE,qCAAqC,aAAa,SAAS,sBAAsB,SAAS,sBAAsB,eAAc;CAEzL,MAAM,gBAAgB,GAAG,wIAAuI;AAEhK,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACG,SACC,oBAAC,OAAD;GAAO,WAAW,GAAG,cAAc,gBAAgB,cAAc,uFAAuF;GAAqC,SAAS;aACnM;GACI,GAET,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,qBAAC,OAAD;KAAK,WAAU;eAAf;MACG,cAAc;MACd,UACC,oBAAC,QAAD;OAAM,KAAK;OAAW,WAAW;iBAC9B;OACG;MAER,oBAAC,SAAD;OACE,cAAY,aAAa;OACzB,cAAc,gBAAgB,qBAAqB,KAAK;OACxD,WAAW;OACX,cAAY;OAEZ,UAAU;OACV,IAAI;OACE;OACN,QAAQ;OACR,UAAU;OACV,SAAS;OACT,aAAa,eAAe;OAC5B,KAAK;OACK;OACV,OACE,0BAA0B,EACxB,kBAAkB,SAAS,GAAG,YAAY,MAAM,KACjD,CAAC;OAEsB;OAC1B,MAAM,SAAS,aAAa,YAAY;OACjC;OACP,GAAI,8BAA8B,KAAK;OACvC,GAAI;OACJ,GAAI;OACL;MACA,YAAY;MACV;;IAEL,oBAAC,cAAD;KACE,YAAW;KACX,IAAI;KACJ,SAAS,YAAa,gBAAgB,OAAQ;KACzB;KACrB,qBAAqB,uBAAuB,UAAU;KACvD;IACD,oBAAC,gBAAD;KACE,YAAW;KACX,IAAI;KACJ,SAAS,UAAU,YAAa,kBAAkB,OAAQ;KACrC;KACrB,qBAAqB,uBAAuB,UAAU;KACvD;IACE;KACF;;;AAGT,MAAM,cAAc"}
|
package/dist/index.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ import { LinkIcon } from "./Icons/LinkIcon.js";
|
|
|
66
66
|
import { LiveViewIcon } from "./Icons/LiveViewIcon.js";
|
|
67
67
|
import { LoaderIcon } from "./Icons/LoaderIcon.js";
|
|
68
68
|
import { LocationIcon } from "./Icons/LocationIcon.js";
|
|
69
|
+
import { LockIcon } from "./Icons/LockIcon.js";
|
|
69
70
|
import { LogoutIcon } from "./Icons/LogoutIcon.js";
|
|
70
71
|
import { MaximizeIcon } from "./Icons/MaximizeIcon.js";
|
|
71
72
|
import { MeasureIcon } from "./Icons/MeasureIcon.js";
|
|
@@ -103,6 +104,7 @@ import { SyncOffIcon } from "./Icons/SyncOffIcon.js";
|
|
|
103
104
|
import { TrashIcon } from "./Icons/TrashIcon.js";
|
|
104
105
|
import { UndoIcon } from "./Icons/UndoIcon.js";
|
|
105
106
|
import { UnlinkIcon } from "./Icons/UnlinkIcon.js";
|
|
107
|
+
import { UnlockIcon } from "./Icons/UnlockIcon.js";
|
|
106
108
|
import { UploadIcon } from "./Icons/UploadIcon.js";
|
|
107
109
|
import { User2Icon } from "./Icons/User2Icon.js";
|
|
108
110
|
import { UserIcon } from "./Icons/UserIcon.js";
|
|
@@ -142,4 +144,4 @@ import { useControllableState } from "./hooks/useControllableState.js";
|
|
|
142
144
|
import { useUncontrolledState } from "./hooks/useUncontrolledState.js";
|
|
143
145
|
import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea } from "./primitives/input-group.js";
|
|
144
146
|
import { cn } from "./utils/twUtils.js";
|
|
145
|
-
export { Accordion, type AccordionProps, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, type AlertDialogPopupProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, type AvatarProps, Badge, type BadgeProps, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupProps, ButtonGroupSeparator, ButtonIcon, type ButtonIconProps, ButtonIconSlideout, type ButtonIconSlideoutProps, type ButtonProps, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, type CheckboxProps, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, type ComboboxOption, type ComboboxProps, ControlGroupSelect, type ControlGroupSelectCaptionLayout, type ControlGroupSelectProps, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, type DataCardProps, DatabaseIcon, DateTimePicker, type DateTimePickerProps, DeleteIcon, Dialog, type DirectionalColorStop, DirectionalColorWheel, DirectionalColorWheelDisclosure, type DirectionalColorWheelDisclosurePosition, type DirectionalColorWheelDisclosureProps, DirectionalColorWheelGlyph, type DirectionalColorWheelGlyphProps, type DirectionalColorWheelProps, type DirectionalSectorCount, Drawer, type DrawerProps, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, type FormFieldMessageValue, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, type HoverCardProps, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, type InputNumericProps, InputOTP, type InputOTPBaseProps, type InputOTPProps, type InputProps, InputSearch, type InputSearchOption, type InputSearchProps, IterationArrowIcon, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, type KbdSymbol, KeyboardIcon, Label, LabelIcon, type LabelProps, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, Meter, type MeterProps, MinimizeIcon, MinusIcon, MultiSelect, type MultiSelectProps, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, type PopoverContentProps, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, type RadialMenuItem, type RadialMenuProps, RadioButton, RadioButtonGroup, RadioButtonGroupItem, type RadioButtonGroupItemProps, type RadioButtonGroupProps, type RadioButtonProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, type SelectExtendedProps, type SelectProps, Separator, type SeparatorProps, SettingsIcon, Skeleton, Slider, type SliderProps, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, type SpectralProviderProps, StackIcon, StarIcon, SvgIdContext, Switch, type SwitchProps, SyncIcon, SyncOffIcon, Tabs, type TabsProps, Textarea, type TextareaProps, Toast, type ToastProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, ToggleGroupSplitMenuItem, type ToggleGroupSplitMenuItemProps, type ToggleProps, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, type TrayBaseProps, type TrayBodyProps, type TrayContentProps, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
|
|
147
|
+
export { Accordion, type AccordionProps, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, type AlertDialogPopupProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, type AvatarProps, Badge, type BadgeProps, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupProps, ButtonGroupSeparator, ButtonIcon, type ButtonIconProps, ButtonIconSlideout, type ButtonIconSlideoutProps, type ButtonProps, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, type CheckboxProps, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, type ComboboxOption, type ComboboxProps, ControlGroupSelect, type ControlGroupSelectCaptionLayout, type ControlGroupSelectProps, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, type DataCardProps, DatabaseIcon, DateTimePicker, type DateTimePickerProps, DeleteIcon, Dialog, type DirectionalColorStop, DirectionalColorWheel, DirectionalColorWheelDisclosure, type DirectionalColorWheelDisclosurePosition, type DirectionalColorWheelDisclosureProps, DirectionalColorWheelGlyph, type DirectionalColorWheelGlyphProps, type DirectionalColorWheelProps, type DirectionalSectorCount, Drawer, type DrawerProps, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, type FormFieldMessageValue, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, type HoverCardProps, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, type InputNumericProps, InputOTP, type InputOTPBaseProps, type InputOTPProps, type InputProps, InputSearch, type InputSearchOption, type InputSearchProps, IterationArrowIcon, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, type KbdSymbol, KeyboardIcon, Label, LabelIcon, type LabelProps, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LockIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, Meter, type MeterProps, MinimizeIcon, MinusIcon, MultiSelect, type MultiSelectProps, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, type PopoverContentProps, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, type RadialMenuItem, type RadialMenuProps, RadioButton, RadioButtonGroup, RadioButtonGroupItem, type RadioButtonGroupItemProps, type RadioButtonGroupProps, type RadioButtonProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, type SelectExtendedProps, type SelectProps, Separator, type SeparatorProps, SettingsIcon, Skeleton, Slider, type SliderProps, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, type SpectralProviderProps, StackIcon, StarIcon, SvgIdContext, Switch, type SwitchProps, SyncIcon, SyncOffIcon, Tabs, type TabsProps, Textarea, type TextareaProps, Toast, type ToastProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, ToggleGroupSplitMenuItem, type ToggleGroupSplitMenuItemProps, type ToggleProps, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, type TrayBaseProps, type TrayBodyProps, type TrayContentProps, UndoIcon, UnlinkIcon, UnlockIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
|
package/dist/index.js
CHANGED
|
@@ -43,6 +43,7 @@ import { LinkIcon } from "./Icons/LinkIcon.js";
|
|
|
43
43
|
import { LiveViewIcon } from "./Icons/LiveViewIcon.js";
|
|
44
44
|
import { LoaderIcon } from "./Icons/LoaderIcon.js";
|
|
45
45
|
import { LocationIcon } from "./Icons/LocationIcon.js";
|
|
46
|
+
import { LockIcon } from "./Icons/LockIcon.js";
|
|
46
47
|
import { LogoutIcon } from "./Icons/LogoutIcon.js";
|
|
47
48
|
import { MaximizeIcon } from "./Icons/MaximizeIcon.js";
|
|
48
49
|
import { MeasureIcon } from "./Icons/MeasureIcon.js";
|
|
@@ -80,6 +81,7 @@ import { SyncOffIcon } from "./Icons/SyncOffIcon.js";
|
|
|
80
81
|
import { TrashIcon } from "./Icons/TrashIcon.js";
|
|
81
82
|
import { UndoIcon } from "./Icons/UndoIcon.js";
|
|
82
83
|
import { UnlinkIcon } from "./Icons/UnlinkIcon.js";
|
|
84
|
+
import { UnlockIcon } from "./Icons/UnlockIcon.js";
|
|
83
85
|
import { UploadIcon } from "./Icons/UploadIcon.js";
|
|
84
86
|
import { User2Icon } from "./Icons/User2Icon.js";
|
|
85
87
|
import { UserIcon } from "./Icons/UserIcon.js";
|
|
@@ -143,4 +145,4 @@ import { ToggleGroupSplitMenuItem } from "./ToggleGroup/ToggleGroupSplitMenuItem
|
|
|
143
145
|
import { ToggleGroup } from "./ToggleGroup.js";
|
|
144
146
|
import { Tray } from "./Tray.js";
|
|
145
147
|
|
|
146
|
-
export { Accordion, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, AlertDialogTitle, AlertDialogTrigger, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, Badge, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, ButtonGroupSeparator, ButtonIcon, ButtonIconSlideout, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, ControlGroupSelect, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, DatabaseIcon, DateTimePicker, DeleteIcon, Dialog, DirectionalColorWheel, DirectionalColorWheelDisclosure, DirectionalColorWheelGlyph, Drawer, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, InputOTP, InputSearch, IterationArrowIcon, Kbd, KbdGroup, KeyboardIcon, Label, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, Meter, MinimizeIcon, MinusIcon, MultiSelect, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, RadioButton, RadioButtonGroup, RadioButtonGroupItem, RadioGroup, RadioGroupItem, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, Separator, SettingsIcon, Skeleton, Slider, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, StackIcon, StarIcon, SvgIdContext, Switch, SyncIcon, SyncOffIcon, Tabs, Textarea, Toast, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupSplitMenuItem, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
|
|
148
|
+
export { Accordion, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, AlertDialogTitle, AlertDialogTrigger, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, Badge, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, ButtonGroupSeparator, ButtonIcon, ButtonIconSlideout, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, ControlGroupSelect, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, DatabaseIcon, DateTimePicker, DeleteIcon, Dialog, DirectionalColorWheel, DirectionalColorWheelDisclosure, DirectionalColorWheelGlyph, Drawer, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, InputOTP, InputSearch, IterationArrowIcon, Kbd, KbdGroup, KeyboardIcon, Label, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LockIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, Meter, MinimizeIcon, MinusIcon, MultiSelect, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, RadioButton, RadioButtonGroup, RadioButtonGroupItem, RadioGroup, RadioGroupItem, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, Separator, SettingsIcon, Skeleton, Slider, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, StackIcon, StarIcon, SvgIdContext, Switch, SyncIcon, SyncOffIcon, Tabs, Textarea, Toast, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupSplitMenuItem, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, UndoIcon, UnlinkIcon, UnlockIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spear-ai/spectral",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"engines": {
|
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"@vitest/browser-playwright": "^4.1.5",
|
|
119
119
|
"@vitest/coverage-v8": "^4.1.5",
|
|
120
120
|
"@vitest/ui": "^4.1.5",
|
|
121
|
+
"chromatic": "^17.5.0",
|
|
121
122
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
122
123
|
"http-server": "^14.1.1",
|
|
123
124
|
"magic-string": "^0.30.21",
|
|
@@ -156,12 +157,10 @@
|
|
|
156
157
|
"pack:dryrun": "pnpm pack --dry-run",
|
|
157
158
|
"check": "tsgo --noEmit && pnpm run format && pnpm run lint",
|
|
158
159
|
"fix": "pnpm run format:fix && pnpm run lint:fix",
|
|
159
|
-
"
|
|
160
|
-
"analyze:network": "vite-bundle-visualizer -c vite.storybook.config.ts -t network -o ./analyzer/network.html",
|
|
161
|
-
"analyze:sunburst": "vite-bundle-visualizer -c vite.storybook.config.ts -t sunburst -o ./analyzer/sunburst.html",
|
|
162
|
-
"analyze:list": "vite-bundle-visualizer -c vite.storybook.config.ts -t list -o ./analyzer/list.yml",
|
|
160
|
+
"chromatic": "chromatic --exit-zero-on-changes",
|
|
163
161
|
"storybook:dev": "storybook dev -p 6006",
|
|
164
162
|
"storybook:build": "storybook build",
|
|
163
|
+
"build-storybook": "pnpm run storybook:build",
|
|
165
164
|
"storybook:start": "http-server -p 6006 storybook-static",
|
|
166
165
|
"lint": "oxlint --react-plugin --jsx-a11y-plugin --import-plugin src/",
|
|
167
166
|
"lint:fix": "oxlint --react-plugin --jsx-a11y-plugin --import-plugin --fix src/",
|
|
@@ -180,6 +179,10 @@
|
|
|
180
179
|
"test:form-fields": "vitest run src/components/Select/Select.test.tsx src/components/Combobox/Combobox.test.tsx src/components/MultiSelect/MultiSelect.test.tsx src/components/Textarea/Textarea.test.tsx src/components/DateTimePicker/DateTimePicker.test.tsx src/components/InputOTP/InputOTP.test.tsx src/components/Checkbox/Checkbox.test.tsx src/components/Switch/Switch.test.tsx src/components/RadioGroup/RadioGroup.test.tsx src/components/ControlGroup/ControlGroupSelect.test.tsx",
|
|
181
180
|
"test:watch": "vitest",
|
|
182
181
|
"test:ui": "vitest --ui",
|
|
183
|
-
"test:coverage": "vitest run --coverage"
|
|
182
|
+
"test:coverage": "vitest run --coverage",
|
|
183
|
+
"analyze:visual": "vite-bundle-visualizer -c vite.storybook.config.ts -o ./analyzer/visual.html",
|
|
184
|
+
"analyze:network": "vite-bundle-visualizer -c vite.storybook.config.ts -t network -o ./analyzer/network.html",
|
|
185
|
+
"analyze:sunburst": "vite-bundle-visualizer -c vite.storybook.config.ts -t sunburst -o ./analyzer/sunburst.html",
|
|
186
|
+
"analyze:list": "vite-bundle-visualizer -c vite.storybook.config.ts -t list -o ./analyzer/list.yml"
|
|
184
187
|
}
|
|
185
188
|
}
|