commit09bed34946Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 8 14:03:50 2022 +0100 Fixed the layout of a search list item commit90126d43adAuthor: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 17:25:13 2022 +0100 Insanely complicated path search results highlighitng and truncating commita4bbd5521eAuthor: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 14:05:01 2022 +0100 Improved the title editing in the header commit5814053968Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 13:38:33 2022 +0100 Improved text highlight colour commit110de37242Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 13:36:57 2022 +0100 Icon hover state now uses isHighlighted commitfb6da943d9Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 13:31:11 2022 +0100 Light mode styling commit2c378d5158Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 12:24:43 2022 +0100 Spacing between search items no longer a hack commit85d90bb0aeAuthor: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 12:19:10 2022 +0100 Added ellipsis to search matches if they are windowed commit91f3e70676Author: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 12:08:00 2022 +0100 Fixed search item icons commite384c87c6fAuthor: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 11:52:58 2022 +0100 Improved hover state commitf4681edc07Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 11:47:33 2022 +0100 Removed focus state on button commitfaa2d0663cAuthor: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 11:26:42 2022 +0100 made the search palette a little bigger commitdf8bd521feAuthor: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 11:26:14 2022 +0100 Remove onOverlayClick prop commitecd046b3b2Author: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 11:18:46 2022 +0100 Close search when the overlay is clicked commitfba330b5d9Author: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 11:10:35 2022 +0100 hitting esc when search input is focused and empty should close the search commitfc2fe8ae6fAuthor: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 11:00:08 2022 +0100 Highlight the window of the best search match in the search results commit45193ec92cAuthor: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 10:45:01 2022 +0100 Now you can arrow down to the last item in the list commit0de5fef7e9Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Apr 1 10:37:20 2022 +0100 Added a hacky margin between items and remove the transition to make it feel snappier commit167b548343Author: Eric Allam <eallam@icloud.com> Date: Fri Apr 1 09:30:33 2022 +0100 WIP implementing search commit5655631f12Author: James Ritchie <james@jamesritchie.co.uk> Date: Fri Mar 25 15:28:19 2022 +0000 Build and styled search modal commite368db81c8Author: Eric Allam <eallam@icloud.com> Date: Fri Mar 25 14:42:03 2022 +0000 Implement JSON search through fuse.js + web worker + react hook commit8caa11ba1cAuthor: Eric Allam <eallam@icloud.com> Date: Wed Mar 23 10:21:33 2022 +0000 Start of the Command Palette using radix-ui Dialog commit904b64d781Author: Eric Allam <eallam@icloud.com> Date: Wed Mar 23 09:58:52 2022 +0000 Uncommented out the search bar field
155 lines
3.4 KiB
TypeScript
155 lines
3.4 KiB
TypeScript
import {
|
|
CubeIcon,
|
|
CollectionIcon,
|
|
EyeOffIcon,
|
|
CheckCircleIcon,
|
|
AnnotationIcon,
|
|
CalendarIcon,
|
|
AtSymbolIcon,
|
|
GlobeAltIcon,
|
|
PhotographIcon,
|
|
CodeIcon,
|
|
PhoneIcon,
|
|
DocumentIcon,
|
|
ColorSwatchIcon,
|
|
CreditCardIcon,
|
|
CurrencyDollarIcon,
|
|
ClockIcon,
|
|
GlobeIcon,
|
|
EmojiHappyIcon,
|
|
ChatAlt2Icon,
|
|
ArchiveIcon,
|
|
IdentificationIcon,
|
|
KeyIcon,
|
|
DocumentTextIcon,
|
|
HashtagIcon,
|
|
} from "@heroicons/react/outline";
|
|
import { inferType, JSONValueType } from "@jsonhero/json-infer-types";
|
|
import { StringIcon } from "~/components/Icons/StringIcon";
|
|
import { IconComponent } from "~/useColumnView";
|
|
|
|
export function iconForValue(value: unknown): IconComponent {
|
|
return iconForType(inferType(value));
|
|
}
|
|
|
|
export function iconForType(type: JSONValueType): IconComponent {
|
|
switch (type.name) {
|
|
case "object": {
|
|
return CubeIcon;
|
|
}
|
|
case "array": {
|
|
return CollectionIcon;
|
|
}
|
|
case "null": {
|
|
return EyeOffIcon;
|
|
}
|
|
case "bool": {
|
|
return CheckCircleIcon;
|
|
}
|
|
case "int":
|
|
case "float": {
|
|
return HashtagIcon;
|
|
}
|
|
case "string": {
|
|
if (type.format == null) {
|
|
return StringIcon;
|
|
}
|
|
|
|
switch (type.format.name) {
|
|
case "timestamp": {
|
|
return CalendarIcon;
|
|
}
|
|
case "datetime": {
|
|
switch (type.format.parts) {
|
|
case "time":
|
|
return ClockIcon;
|
|
}
|
|
return ClockIcon;
|
|
}
|
|
case "email": {
|
|
return AtSymbolIcon;
|
|
}
|
|
case "hostname":
|
|
case "tld":
|
|
case "ip":
|
|
return GlobeAltIcon;
|
|
case "uri": {
|
|
switch (type.format.contentType) {
|
|
case "image/jpeg":
|
|
case "image/png":
|
|
case "image/gif":
|
|
case "image/webm":
|
|
return PhotographIcon;
|
|
case "application/json":
|
|
return CodeIcon;
|
|
default:
|
|
return GlobeAltIcon;
|
|
}
|
|
}
|
|
case "phoneNumber": {
|
|
return PhoneIcon;
|
|
}
|
|
case "currency": {
|
|
return CurrencyDollarIcon;
|
|
}
|
|
case "country": {
|
|
return GlobeIcon;
|
|
}
|
|
case "emoji": {
|
|
return EmojiHappyIcon;
|
|
}
|
|
case "color": {
|
|
return ColorSwatchIcon;
|
|
}
|
|
case "language": {
|
|
return ChatAlt2Icon;
|
|
}
|
|
case "filesize": {
|
|
return ArchiveIcon;
|
|
}
|
|
case "uuid": {
|
|
return IdentificationIcon;
|
|
}
|
|
case "json":
|
|
case "jsonPointer": {
|
|
return CodeIcon;
|
|
}
|
|
case "jwt": {
|
|
return KeyIcon;
|
|
}
|
|
case "semver": {
|
|
return DocumentTextIcon;
|
|
}
|
|
case "creditcard": {
|
|
switch (type.format.variant) {
|
|
case "visa": {
|
|
return CreditCardIcon;
|
|
}
|
|
case "mastercard": {
|
|
return CreditCardIcon;
|
|
}
|
|
case "amex": {
|
|
return CreditCardIcon;
|
|
}
|
|
case "discover": {
|
|
return CreditCardIcon;
|
|
}
|
|
case "dinersclub": {
|
|
return CreditCardIcon;
|
|
}
|
|
default: {
|
|
return CreditCardIcon;
|
|
}
|
|
}
|
|
}
|
|
default: {
|
|
return AnnotationIcon;
|
|
}
|
|
}
|
|
}
|
|
default: {
|
|
return DocumentIcon;
|
|
}
|
|
}
|
|
}
|