From 1ea0296bd840dd3405a6a044c3660426d6d5693a Mon Sep 17 00:00:00 2001 From: dextmorgn Date: Thu, 8 Jan 2026 19:59:56 +0100 Subject: [PATCH] feat(app): update icons to latest --- flowsint-app/index.html | 6 +- .../sketches/settings/icon-picker/popup.tsx | 5 - .../src/stores/node-display-settings.ts | 312 +++++++----------- 3 files changed, 133 insertions(+), 190 deletions(-) diff --git a/flowsint-app/index.html b/flowsint-app/index.html index b1c9773..18242e1 100644 --- a/flowsint-app/index.html +++ b/flowsint-app/index.html @@ -2,7 +2,11 @@ - + diff --git a/flowsint-app/src/components/sketches/settings/icon-picker/popup.tsx b/flowsint-app/src/components/sketches/settings/icon-picker/popup.tsx index dfe0a1e..1247bbd 100644 --- a/flowsint-app/src/components/sketches/settings/icon-picker/popup.tsx +++ b/flowsint-app/src/components/sketches/settings/icon-picker/popup.tsx @@ -282,11 +282,6 @@ export default function IconPicker({ iconType, open, setOpen }: IconPopoverProps if (!iconType) return setIcon(iconType, iconName as keyof typeof LucideIcons) clearIconTypeCache(iconType) - setTimeout(() => { - const customIcons = useNodesDisplaySettings.getState().customIcons - console.log('Updated customIcons:', customIcons) - }, 100) - setOpen(false) } diff --git a/flowsint-app/src/stores/node-display-settings.ts b/flowsint-app/src/stores/node-display-settings.ts index ee318bf..e74b584 100644 --- a/flowsint-app/src/stores/node-display-settings.ts +++ b/flowsint-app/src/stores/node-display-settings.ts @@ -3,228 +3,172 @@ import { persist } from 'zustand/middleware' import type * as LucideIcons from 'lucide-react' export type ItemType = - | 'individual' - | 'phone' - | 'location' + | 'domain' | 'email' | 'ip' - | 'port' - | 'socialaccount' - | 'organization' - | 'vehicle' - | 'car' - | 'motorcycle' - | 'boat' - | 'plane' - | 'website' - | 'domain' - | 'document' - | 'financial' - | 'event' - | 'device' - | 'media' - | 'education' - | 'relationship' - | 'online_activity' - | 'digital_footprint' - | 'biometric' - | 'credential' + | 'phone' | 'username' - | 'siret' - | 'siren' - | 'cryptowallet' - | 'cryptotransaction' - | 'cryptonft' + | 'organization' + | 'individual' + | 'socialaccount' | 'asn' | 'cidr' - | 'whois' - | 'gravatar' - | 'breach' - | 'webtracker' - | 'session' - | 'dnsrecord' - | 'ssl' - | 'message' - | 'malware' - | 'weapon' - | 'script' - | 'reputation' - | 'risk' - | 'file' - | 'bank' - | 'creditcard' - | 'alias' - | 'affiliation' + | 'cryptowallet' + | 'cryptowallettransaction' + | 'cryptonft' + | 'website' + | 'port' | 'phrase' + | 'breach' + | 'credential' + | 'device' + | 'document' + | 'file' + | 'malware' + | 'sslcertificate' + | 'location' + | 'affiliation' + | 'alias' + | 'bankaccount' + | 'creditcard' + | 'dnsrecord' + | 'gravatar' + | 'leak' + | 'message' + | 'reputationscore' + | 'riskprofile' + | 'script' + | 'session' + | 'webtracker' + | 'weapon' + | 'whois' export const ITEM_TYPES: ItemType[] = [ - 'individual', - 'phone', - 'location', + 'domain', 'email', 'ip', - 'port', - 'socialaccount', - 'organization', - 'vehicle', - 'car', - 'motorcycle', - 'boat', - 'plane', - 'website', - 'domain', - 'document', - 'financial', - 'event', - 'device', - 'media', - 'education', - 'relationship', - 'online_activity', - 'digital_footprint', - 'biometric', - 'credential', + 'phone', 'username', - 'siret', - 'siren', - 'cryptowallet', - 'cryptotransaction', - 'cryptonft', + 'organization', + 'individual', + 'socialaccount', 'asn', 'cidr', - 'whois', - 'gravatar', + 'cryptowallet', + 'cryptowallettransaction', + 'cryptonft', + 'website', + 'port', + 'phrase', 'breach', - 'webtracker', - 'session', - 'dnsrecord', - 'ssl', - 'message', - 'malware', - 'weapon', - 'script', - 'reputation', - 'risk', + 'credential', + 'device', + 'document', 'file', - 'bank', - 'creditcard', - 'alias', + 'malware', + 'sslcertificate', + 'location', 'affiliation', - 'phrase' + 'alias', + 'bankaccount', + 'creditcard', + 'dnsrecord', + 'gravatar', + 'leak', + 'message', + 'reputationscore', + 'riskprofile', + 'script', + 'session', + 'webtracker', + 'weapon', + 'whois' ] // Icon mapping for each item type (Lucide icons) export const TYPE_TO_ICON: Record = { - individual: 'User', - phone: 'Phone', - location: 'MapPin', + domain: 'Globe', email: 'Mail', ip: 'Network', - port: 'Plug', - socialaccount: 'Share2', - organization: 'Building2', - vehicle: 'Car', - car: 'Car', - motorcycle: 'Bike', - boat: 'Ship', - plane: 'Plane', - website: 'Globe', - domain: 'Globe', - document: 'FileText', - financial: 'DollarSign', - event: 'Calendar', - device: 'Smartphone', - media: 'Image', - education: 'GraduationCap', - relationship: 'Users', - online_activity: 'Activity', - digital_footprint: 'Footprints', - biometric: 'Fingerprint', - credential: 'Key', + phone: 'Phone', username: 'UserPlus', - siret: 'Building', - siren: 'Building', - cryptowallet: 'Wallet', - cryptotransaction: 'ArrowRightLeft', - cryptonft: 'Image', + organization: 'Building2', + individual: 'User', + socialaccount: 'Share2', asn: 'Network', cidr: 'Network', - whois: 'Info', - gravatar: 'UserCircle', - breach: 'ShieldAlert', - webtracker: 'Target', - session: 'Clock', - dnsrecord: 'Database', - ssl: 'Lock', - message: 'MessageSquare', - malware: 'Bug', - weapon: 'Sword', - script: 'FileCode', - reputation: 'Star', - risk: 'AlertTriangle', - file: 'File', - bank: 'Landmark', - creditcard: 'CreditCard', - alias: 'UserCog', - affiliation: 'Link2', + cryptowallet: 'Wallet', + cryptowallettransaction: 'ArrowRightLeft', + cryptonft: 'Image', + website: 'Globe', + port: 'Plug', phrase: 'Quote', + breach: 'ShieldAlert', + credential: 'Key', + device: 'Smartphone', + document: 'FileText', + file: 'File', + malware: 'Bug', + sslcertificate: 'Lock', + location: 'MapPin', + affiliation: 'Link2', + alias: 'UserCog', + bankaccount: 'Landmark', + creditcard: 'CreditCard', + dnsrecord: 'Database', + gravatar: 'UserCircle', + leak: 'Droplet', + message: 'MessageSquare', + reputationscore: 'Star', + riskprofile: 'AlertTriangle', + script: 'FileCode', + session: 'Clock', + webtracker: 'Target', + weapon: 'Sword', + whois: 'Info', default: 'Circle' } const DEFAULT_COLORS: Record = { - individual: '#4C8EDA', // bleu moyen - phone: '#4CB5AE', // teal doux - location: '#E57373', // rouge rosé + domain: '#66A892', // vert sauge email: '#8E7CC3', // violet pastel ip: '#5AA1C8', // orange chaud - port: '#4CB5DA', // cyan clair - socialaccount: '#A76DAA', // mauve - organization: '#BCA18A', // taupe clair - vehicle: '#E1B84D', // jaune doux - car: '#BFAF7A', // olive beige - motorcycle: '#A78B6C', // brun taupe - boat: '#6FB1C5', // bleu teal - plane: '#C1A78E', // brun clair - website: '#D279A6', // rose pastel - domain: '#66A892', // vert sauge - document: '#8F9CA3', // gris bleuté - financial: '#E98973', // corail doux - event: '#6DBBA2', // vert menthe - device: '#E3A857', // orange sable - media: '#C97C73', // terracotta - education: '#6C8CBF', // bleu acier - relationship: '#B18B84', // brun rosé - online_activity: '#7EAD6F', // vert sauge - digital_footprint: '#B97777', // brique + phone: '#4CB5AE', // teal doux username: '#8B83C1', // pervenche - credential: '#D4B030', // doré doux - biometric: '#7F868D', // gris ardoise - siret: '#7D8B99', // gris bleu - siren: '#687684', // gris foncé - cryptowallet: '#D4B030', // or clair - cryptotransaction: '#BFA750', // or chaud - cryptonft: '#A5BF50', // vert lime doux + organization: '#BCA18A', // taupe clair + individual: '#4C8EDA', // bleu moyen + socialaccount: '#A76DAA', // mauve asn: '#D97474', // pêche rosée cidr: '#80BF80', // vert menthe - whois: '#9B6F9B', // violet doux - gravatar: '#6CB7CA', // cyan clair + cryptowallet: '#D4B030', // or clair + cryptowallettransaction: '#BFA750', // or chaud + cryptonft: '#A5BF50', // vert lime doux + website: '#D279A6', // rose pastel + port: '#4CB5DA', // cyan clair + phrase: '#BFA77A', // beige chaud breach: '#CC7A7A', // rose chaud - webtracker: '#C7BF50', // jaune doux - session: '#A8BF50', // lime atténué - dnsrecord: '#BFAF80', // vert teal clair - ssl: '#BFAF80', // sable chaud - message: '#897FC9', // violet lavande - malware: '#4AA29E', // teal saturé - weapon: '#E98973', // corail brun - script: '#A36FA3', // violet doux - reputation: '#6FA8DC', // bleu clair - risk: '#D97474', // rouge doux + credential: '#D4B030', // doré doux + device: '#E3A857', // orange sable + document: '#8F9CA3', // gris bleuté file: '#8F9CA3', // gris bleuté - bank: '#D4B030', // or clair - creditcard: '#285E8E', // bleu profond - alias: '#A36FA3', // violet + malware: '#4AA29E', // teal saturé + sslcertificate: '#BFAF80', // sable chaud + location: '#E57373', // rouge rosé affiliation: '#66A892', // vert sauge - phrase: '#BFA77A' // beige chaud + alias: '#A36FA3', // violet + bankaccount: '#D4B030', // or clair + creditcard: '#285E8E', // bleu profond + dnsrecord: '#BFAF80', // vert teal clair + gravatar: '#6CB7CA', // cyan clair + leak: '#7C9CBF', // bleu acier + message: '#897FC9', // violet lavande + reputationscore: '#6FA8DC', // bleu clair + riskprofile: '#D97474', // rouge doux + script: '#A36FA3', // violet doux + session: '#A8BF50', // lime atténué + webtracker: '#C7BF50', // jaune doux + weapon: '#E98973', // corail brun + whois: '#9B6F9B' // violet doux } const hslToHex = (h: number, s: number, l: number): string => {