Files
jsonhero-web/app/utilities/icons.ts
T
James Ritchie 0632e82a4b Squashed commit of the following:
commit 09bed34946
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 8 14:03:50 2022 +0100

    Fixed the layout of a search list item

commit 90126d43ad
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Apr 1 17:25:13 2022 +0100

    Insanely complicated path search results highlighitng and truncating

commit a4bbd5521e
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 1 14:05:01 2022 +0100

    Improved the title editing in the header

commit 5814053968
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 1 13:38:33 2022 +0100

    Improved text highlight colour

commit 110de37242
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 1 13:36:57 2022 +0100

    Icon hover state now uses isHighlighted

commit fb6da943d9
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 1 13:31:11 2022 +0100

    Light mode styling

commit 2c378d5158
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 1 12:24:43 2022 +0100

    Spacing between search items no longer a hack

commit 85d90bb0ae
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Apr 1 12:19:10 2022 +0100

    Added ellipsis to search matches if they are windowed

commit 91f3e70676
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Apr 1 12:08:00 2022 +0100

    Fixed search item icons

commit e384c87c6f
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 1 11:52:58 2022 +0100

    Improved hover state

commit f4681edc07
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Apr 1 11:47:33 2022 +0100

    Removed focus state on button

commit faa2d0663c
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Apr 1 11:26:42 2022 +0100

    made the search palette a little bigger

commit df8bd521fe
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Apr 1 11:26:14 2022 +0100

    Remove onOverlayClick prop

commit ecd046b3b2
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Apr 1 11:18:46 2022 +0100

    Close search when the overlay is clicked

commit fba330b5d9
Author: 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

commit fc2fe8ae6f
Author: 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

commit 45193ec92c
Author: 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

commit 0de5fef7e9
Author: 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

commit 167b548343
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Apr 1 09:30:33 2022 +0100

    WIP implementing search

commit 5655631f12
Author: James Ritchie <james@jamesritchie.co.uk>
Date:   Fri Mar 25 15:28:19 2022 +0000

    Build and styled search modal

commit e368db81c8
Author: Eric Allam <eallam@icloud.com>
Date:   Fri Mar 25 14:42:03 2022 +0000

    Implement JSON search through fuse.js + web worker + react hook

commit 8caa11ba1c
Author: Eric Allam <eallam@icloud.com>
Date:   Wed Mar 23 10:21:33 2022 +0000

    Start of the Command Palette using radix-ui Dialog

commit 904b64d781
Author: Eric Allam <eallam@icloud.com>
Date:   Wed Mar 23 09:58:52 2022 +0000

    Uncommented out the search bar field
2022-04-08 14:07:39 +01:00

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;
}
}
}