@hivemindhq/core 0.4.0 → 0.5.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/README.md +16 -16
- package/dist/{chunk-2RGM3KJL.js → chunk-K2544PJ5.js} +42 -20
- package/dist/chunk-K2544PJ5.js.map +1 -0
- package/dist/{chunk-P5E2XNDI.js → chunk-K4XDMY2V.js} +3 -3
- package/dist/{chunk-P5E2XNDI.js.map → chunk-K4XDMY2V.js.map} +1 -1
- package/dist/{chunk-ERZSVDIB.js → chunk-RW4JXOAM.js} +11 -3
- package/dist/chunk-RW4JXOAM.js.map +1 -0
- package/dist/chunk-VU3OPG32.js +907 -0
- package/dist/chunk-VU3OPG32.js.map +1 -0
- package/dist/components/index.d.ts +28 -3
- package/dist/components/index.js +2 -2
- package/dist/components/ui/index.js +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -6
- package/dist/utils/index.d.ts +312 -6
- package/dist/utils/index.js +2 -2
- package/package.json +15 -11
- package/src/components/AtomIcon.tsx +21 -0
- package/src/components/CryptoAmount.tsx +447 -0
- package/src/components/ErrorBanner.tsx +35 -0
- package/src/components/IpfsImage.tsx +21 -0
- package/src/components/LoadingDots.tsx +55 -0
- package/src/components/TripleAreaChart.tsx +108 -0
- package/src/components/TriplePositionsTornadoMinGraph.tsx +71 -0
- package/src/components/UnknownImage.tsx +55 -0
- package/src/components/index.ts +24 -0
- package/src/components/ui/alert.tsx +59 -0
- package/src/components/ui/avatar.tsx +47 -0
- package/src/components/ui/badge.tsx +35 -0
- package/src/components/ui/breadcrumb.tsx +108 -0
- package/src/components/ui/button.tsx +56 -0
- package/src/components/ui/card.tsx +75 -0
- package/src/components/ui/carousel.tsx +239 -0
- package/src/components/ui/chart.tsx +350 -0
- package/src/components/ui/checkbox.tsx +28 -0
- package/src/components/ui/collapsible.tsx +10 -0
- package/src/components/ui/command.tsx +177 -0
- package/src/components/ui/dialog.tsx +119 -0
- package/src/components/ui/dropdown-menu.tsx +202 -0
- package/src/components/ui/form.tsx +175 -0
- package/src/components/ui/index.ts +183 -0
- package/src/components/ui/input.tsx +21 -0
- package/src/components/ui/label.tsx +25 -0
- package/src/components/ui/loader.tsx +20 -0
- package/src/components/ui/pagination.tsx +104 -0
- package/src/components/ui/popover.tsx +45 -0
- package/src/components/ui/progress.tsx +25 -0
- package/src/components/ui/radio-group.tsx +42 -0
- package/src/components/ui/scroll-area.tsx +45 -0
- package/src/components/ui/select.tsx +178 -0
- package/src/components/ui/separator.tsx +28 -0
- package/src/components/ui/sheet.tsx +139 -0
- package/src/components/ui/sidebar.tsx +723 -0
- package/src/components/ui/skeleton.tsx +15 -0
- package/src/components/ui/sonner.tsx +27 -0
- package/src/components/ui/spinner.tsx +67 -0
- package/src/components/ui/switch.tsx +26 -0
- package/src/components/ui/table.tsx +113 -0
- package/src/components/ui/tabs.tsx +63 -0
- package/src/components/ui/textarea.tsx +21 -0
- package/src/components/ui/toast.tsx +146 -0
- package/src/components/ui/toaster.tsx +33 -0
- package/src/components/ui/toggle-group.tsx +58 -0
- package/src/components/ui/toggle.tsx +44 -0
- package/src/components/ui/tooltip.tsx +61 -0
- package/src/hooks/index.ts +7 -0
- package/src/hooks/use-mobile.ts +20 -0
- package/src/hooks/use-toast.ts +190 -0
- package/src/index.ts +25 -0
- package/src/types/index.ts +17 -0
- package/src/utils/atom-label-detection.ts +689 -0
- package/src/utils/atom.ts +279 -0
- package/src/utils/cn.ts +18 -0
- package/src/utils/formatting.ts +624 -0
- package/src/utils/index.ts +11 -0
- package/src/utils/multivault-errors.ts +581 -0
- package/src/utils/search/formatting.tsx +95 -0
- package/src/utils/search/index.ts +28 -0
- package/src/utils/search/ranking.ts +203 -0
- package/src/utils/search/types.ts +114 -0
- package/tailwind.config.js +3 -3
- package/dist/chunk-2RGM3KJL.js.map +0 -1
- package/dist/chunk-ERZSVDIB.js.map +0 -1
- package/dist/chunk-H4RMZQ2Z.js +0 -213
- package/dist/chunk-H4RMZQ2Z.js.map +0 -1
package/dist/utils/index.d.ts
CHANGED
|
@@ -292,7 +292,7 @@ interface AtomTypeInput {
|
|
|
292
292
|
*
|
|
293
293
|
* @example
|
|
294
294
|
* // From text_object value (plain text atoms)
|
|
295
|
-
* getAtomType({ value: { text_object: { data: '
|
|
295
|
+
* getAtomType({ value: { text_object: { data: 'Hive Mind' } } }) // Returns: 'TextObject'
|
|
296
296
|
*
|
|
297
297
|
* @example
|
|
298
298
|
* // From data pattern
|
|
@@ -300,8 +300,8 @@ interface AtomTypeInput {
|
|
|
300
300
|
*
|
|
301
301
|
* @example
|
|
302
302
|
* // Plain text detection
|
|
303
|
-
* getAtomType({ data: '
|
|
304
|
-
* getAtomType({ data: '
|
|
303
|
+
* getAtomType({ data: 'Hive Mind' }) // Returns: 'TextObject'
|
|
304
|
+
* getAtomType({ data: 'John Doe' }) // Returns: 'TextObject'
|
|
305
305
|
*/
|
|
306
306
|
declare function getAtomType(atom: AtomTypeInput): AtomType | undefined;
|
|
307
307
|
/**
|
|
@@ -362,9 +362,208 @@ declare function isRawDataType(type: string | undefined): boolean;
|
|
|
362
362
|
*/
|
|
363
363
|
declare function isPlainTextType(type: string | undefined): boolean;
|
|
364
364
|
|
|
365
|
+
/**
|
|
366
|
+
* Atom Label Detection System
|
|
367
|
+
*
|
|
368
|
+
* Provides unified detection and formatting of atom labels across Hive Mind applications.
|
|
369
|
+
* Takes a raw label string and returns a rich typed object with:
|
|
370
|
+
* - Detected kind (address, atom-id, ens, social, url, domain, ipfs, text)
|
|
371
|
+
* - Normalized/canonical form for storage
|
|
372
|
+
* - Shortened form for display in tight spaces
|
|
373
|
+
* - Human-readable display name
|
|
374
|
+
* - Type-specific metadata
|
|
375
|
+
*
|
|
376
|
+
* @module atom-label-detection
|
|
377
|
+
*/
|
|
378
|
+
/**
|
|
379
|
+
* Supported social media platforms.
|
|
380
|
+
* Extend this as new platforms are added.
|
|
381
|
+
*/
|
|
382
|
+
type SocialPlatform = 'twitter' | 'github' | 'linkedin' | 'farcaster' | 'lens' | 'youtube' | 'instagram' | 'tiktok' | 'discord' | 'telegram' | 'reddit' | 'medium';
|
|
383
|
+
/** Base properties shared by all detection results */
|
|
384
|
+
interface BaseDetectionResult {
|
|
385
|
+
/** Original input string */
|
|
386
|
+
raw: string;
|
|
387
|
+
/** Canonical/normalized form for storage and comparison */
|
|
388
|
+
normalized: string;
|
|
389
|
+
/** Shortened form for display in tight spaces */
|
|
390
|
+
shortened: string;
|
|
391
|
+
/** Human-readable display name */
|
|
392
|
+
displayName: string;
|
|
393
|
+
}
|
|
394
|
+
/** EVM address (42 characters, 0x + 40 hex) */
|
|
395
|
+
interface AddressDetectionResult extends BaseDetectionResult {
|
|
396
|
+
kind: 'address';
|
|
397
|
+
/** The checksummed address (if valid) or original */
|
|
398
|
+
address: `0x${string}`;
|
|
399
|
+
/** Whether the address was provided in checksummed format */
|
|
400
|
+
isChecksummed: boolean;
|
|
401
|
+
}
|
|
402
|
+
/** Atom ID (66 characters, 0x + 64 hex) */
|
|
403
|
+
interface AtomIdDetectionResult extends BaseDetectionResult {
|
|
404
|
+
kind: 'atom-id';
|
|
405
|
+
/** The atom ID */
|
|
406
|
+
id: `0x${string}`;
|
|
407
|
+
}
|
|
408
|
+
/** ENS domain name */
|
|
409
|
+
interface EnsDetectionResult extends BaseDetectionResult {
|
|
410
|
+
kind: 'ens';
|
|
411
|
+
/** The full ENS name (e.g., "vitalik.eth") */
|
|
412
|
+
name: string;
|
|
413
|
+
}
|
|
414
|
+
/** Social media profile */
|
|
415
|
+
interface SocialDetectionResult extends BaseDetectionResult {
|
|
416
|
+
kind: 'social';
|
|
417
|
+
/** The detected platform */
|
|
418
|
+
platform: SocialPlatform;
|
|
419
|
+
/** The extracted handle/username */
|
|
420
|
+
handle: string;
|
|
421
|
+
/** Full profile URL (normalized) */
|
|
422
|
+
profileUrl: string;
|
|
423
|
+
/** Unavatar URL for profile image (if available) */
|
|
424
|
+
avatarUrl?: string;
|
|
425
|
+
}
|
|
426
|
+
/** Generic URL (not matching any social platform) */
|
|
427
|
+
interface UrlDetectionResult extends BaseDetectionResult {
|
|
428
|
+
kind: 'url';
|
|
429
|
+
/** Full normalized URL */
|
|
430
|
+
url: string;
|
|
431
|
+
/** Origin (protocol + hostname) */
|
|
432
|
+
origin: string;
|
|
433
|
+
/** Hostname only */
|
|
434
|
+
hostname: string;
|
|
435
|
+
/** Path after hostname */
|
|
436
|
+
pathname: string;
|
|
437
|
+
}
|
|
438
|
+
/** Domain/hostname without protocol */
|
|
439
|
+
interface DomainDetectionResult extends BaseDetectionResult {
|
|
440
|
+
kind: 'domain';
|
|
441
|
+
/** The domain name */
|
|
442
|
+
domain: string;
|
|
443
|
+
/** Top-level domain */
|
|
444
|
+
tld: string;
|
|
445
|
+
}
|
|
446
|
+
/** IPFS content identifier */
|
|
447
|
+
interface IpfsDetectionResult extends BaseDetectionResult {
|
|
448
|
+
kind: 'ipfs';
|
|
449
|
+
/** The content identifier */
|
|
450
|
+
cid: string;
|
|
451
|
+
/** CID version (0 for Qm..., 1 for bafy...) */
|
|
452
|
+
version: 0 | 1;
|
|
453
|
+
/** Gateway URL for accessing content */
|
|
454
|
+
gatewayUrl: string;
|
|
455
|
+
}
|
|
456
|
+
/** Arweave content identifier */
|
|
457
|
+
interface ArweaveDetectionResult extends BaseDetectionResult {
|
|
458
|
+
kind: 'arweave';
|
|
459
|
+
/** The transaction ID */
|
|
460
|
+
txId: string;
|
|
461
|
+
/** Gateway URL for accessing content */
|
|
462
|
+
gatewayUrl: string;
|
|
463
|
+
}
|
|
464
|
+
/** Plain text (fallback) */
|
|
465
|
+
interface TextDetectionResult extends BaseDetectionResult {
|
|
466
|
+
kind: 'text';
|
|
467
|
+
/** The text content (normalized) */
|
|
468
|
+
text: string;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Discriminated union of all detection result types.
|
|
472
|
+
* Use TypeScript's type narrowing with `result.kind` to access type-specific properties.
|
|
473
|
+
*
|
|
474
|
+
* @example
|
|
475
|
+
* const result = detectAtomLabel('https://x.com/vitalik')
|
|
476
|
+
* if (result.kind === 'social') {
|
|
477
|
+
* console.log(result.handle) // 'vitalik'
|
|
478
|
+
* console.log(result.platform) // 'twitter'
|
|
479
|
+
* }
|
|
480
|
+
*/
|
|
481
|
+
type AtomLabelDetectionResult = AddressDetectionResult | AtomIdDetectionResult | EnsDetectionResult | SocialDetectionResult | UrlDetectionResult | DomainDetectionResult | IpfsDetectionResult | ArweaveDetectionResult | TextDetectionResult;
|
|
482
|
+
/**
|
|
483
|
+
* Detects the type of an atom label and returns a rich typed result.
|
|
484
|
+
*
|
|
485
|
+
* This is the primary function for understanding what kind of entity a label represents.
|
|
486
|
+
* Use this when you need to:
|
|
487
|
+
* - Display a label appropriately (shortened, with icon, etc.)
|
|
488
|
+
* - Generate creation data for new atoms
|
|
489
|
+
* - Compare two labels to see if they represent the same entity
|
|
490
|
+
*
|
|
491
|
+
* Detection priority (most specific first):
|
|
492
|
+
* 1. ENS (.eth suffix)
|
|
493
|
+
* 2. IPFS (ipfs:// or CID patterns)
|
|
494
|
+
* 3. Arweave (ar://)
|
|
495
|
+
* 4. Atom ID (66-char hex)
|
|
496
|
+
* 5. EVM Address (42-char hex)
|
|
497
|
+
* 6. Social Profile (known platform URLs)
|
|
498
|
+
* 7. URL (has protocol)
|
|
499
|
+
* 8. Domain (matches TLD pattern)
|
|
500
|
+
* 9. Text (fallback)
|
|
501
|
+
*
|
|
502
|
+
* @param label - The raw label string to detect
|
|
503
|
+
* @returns A discriminated union result with kind-specific properties
|
|
504
|
+
*
|
|
505
|
+
* @example
|
|
506
|
+
* // EVM Address
|
|
507
|
+
* detectAtomLabel('0x1234567890123456789012345678901234567890')
|
|
508
|
+
* // { kind: 'address', shortened: '0x1234...7890', ... }
|
|
509
|
+
*
|
|
510
|
+
* @example
|
|
511
|
+
* // Social Profile
|
|
512
|
+
* detectAtomLabel('https://x.com/vitalik')
|
|
513
|
+
* // { kind: 'social', platform: 'twitter', handle: 'vitalik', shortened: '@vitalik', ... }
|
|
514
|
+
*
|
|
515
|
+
* @example
|
|
516
|
+
* // ENS
|
|
517
|
+
* detectAtomLabel('vitalik.eth')
|
|
518
|
+
* // { kind: 'ens', name: 'vitalik.eth', shortened: 'vitalik.eth', ... }
|
|
519
|
+
*/
|
|
520
|
+
declare function detectAtomLabel(label: string): AtomLabelDetectionResult;
|
|
521
|
+
/**
|
|
522
|
+
* Compares two labels to determine if they represent the same entity.
|
|
523
|
+
* Handles various representations of the same entity:
|
|
524
|
+
* - Case insensitivity
|
|
525
|
+
* - Protocol variations (http vs https)
|
|
526
|
+
* - Domain aliases (x.com vs twitter.com)
|
|
527
|
+
* - Trailing slashes
|
|
528
|
+
*
|
|
529
|
+
* @param labelA - First label to compare
|
|
530
|
+
* @param labelB - Second label to compare
|
|
531
|
+
* @returns True if labels represent the same entity
|
|
532
|
+
*
|
|
533
|
+
* @example
|
|
534
|
+
* isSameAtomLabel('0xABC...', '0xabc...') // true (case insensitive)
|
|
535
|
+
* isSameAtomLabel('x.com/vitalik', 'https://x.com/vitalik') // true
|
|
536
|
+
* isSameAtomLabel('twitter.com/vitalik', 'x.com/vitalik') // true (same platform)
|
|
537
|
+
*/
|
|
538
|
+
declare function isSameAtomLabel(labelA: string, labelB: string): boolean;
|
|
539
|
+
/**
|
|
540
|
+
* Type guard to check if result is a specific kind.
|
|
541
|
+
*
|
|
542
|
+
* @example
|
|
543
|
+
* const result = detectAtomLabel(input)
|
|
544
|
+
* if (isAtomLabelKind(result, 'address')) {
|
|
545
|
+
* console.log(result.address) // TypeScript knows this is AddressDetectionResult
|
|
546
|
+
* }
|
|
547
|
+
*/
|
|
548
|
+
declare function isAtomLabelKind<K extends AtomLabelDetectionResult['kind']>(result: AtomLabelDetectionResult, kind: K): result is Extract<AtomLabelDetectionResult, {
|
|
549
|
+
kind: K;
|
|
550
|
+
}>;
|
|
551
|
+
/**
|
|
552
|
+
* Checks if a result is an on-chain identity (address or atom ID).
|
|
553
|
+
*/
|
|
554
|
+
declare function isOnChainIdentity(result: AtomLabelDetectionResult): result is AddressDetectionResult | AtomIdDetectionResult;
|
|
555
|
+
/**
|
|
556
|
+
* Checks if a result is a web reference (URL, domain, social).
|
|
557
|
+
*/
|
|
558
|
+
declare function isWebReference(result: AtomLabelDetectionResult): result is UrlDetectionResult | DomainDetectionResult | SocialDetectionResult;
|
|
559
|
+
/**
|
|
560
|
+
* Checks if a result is decentralized storage (IPFS, Arweave).
|
|
561
|
+
*/
|
|
562
|
+
declare function isDecentralizedStorage(result: AtomLabelDetectionResult): result is IpfsDetectionResult | ArweaveDetectionResult;
|
|
563
|
+
|
|
365
564
|
/**
|
|
366
565
|
* Shared type definitions for atom search functionality
|
|
367
|
-
* Used by both
|
|
566
|
+
* Used by both hivemind-explorer and intuition-extension
|
|
368
567
|
*/
|
|
369
568
|
/**
|
|
370
569
|
* Vault data from GraphQL response
|
|
@@ -474,7 +673,7 @@ interface SearchResult<T extends GraphQLAtom = GraphQLAtom> {
|
|
|
474
673
|
* Provides stake-first ranking with relevance as secondary sort
|
|
475
674
|
*
|
|
476
675
|
* @example
|
|
477
|
-
* import { rankAtoms } from '@
|
|
676
|
+
* import { rankAtoms } from '@hivemindhq/core'
|
|
478
677
|
* const rankedResults = rankAtoms(response.data.atoms, searchTerm)
|
|
479
678
|
*/
|
|
480
679
|
|
|
@@ -570,4 +769,111 @@ declare function highlightMatch(text: string, searchTerm: string): React__defaul
|
|
|
570
769
|
*/
|
|
571
770
|
declare function formatTermId(termId: string): string;
|
|
572
771
|
|
|
573
|
-
|
|
772
|
+
/**
|
|
773
|
+
* MultiVault Contract Error Mappings
|
|
774
|
+
*
|
|
775
|
+
* Maps Solidity error names from the MultiVault contract to user-friendly messages.
|
|
776
|
+
* These errors are thrown by the Intuition Protocol's MultiVault contract.
|
|
777
|
+
*
|
|
778
|
+
* @see intuition-contracts-v2/src/protocol/MultiVault.sol
|
|
779
|
+
* @see intuition-contracts-v2/src/protocol/MultiVaultCore.sol
|
|
780
|
+
*/
|
|
781
|
+
interface MultiVaultErrorInfo {
|
|
782
|
+
/** The Solidity error name as it appears in the contract */
|
|
783
|
+
errorName: string;
|
|
784
|
+
/** User-friendly message to display in the UI */
|
|
785
|
+
userMessage: string;
|
|
786
|
+
/** More detailed explanation for tooltips or error details */
|
|
787
|
+
description: string;
|
|
788
|
+
/** Category for grouping/filtering errors */
|
|
789
|
+
category: 'atom' | 'triple' | 'deposit' | 'redeem' | 'balance' | 'limits' | 'batch' | 'approval' | 'existence' | 'epoch' | 'wallet' | 'internal';
|
|
790
|
+
/** Whether this error is commonly encountered by users */
|
|
791
|
+
isCommon: boolean;
|
|
792
|
+
}
|
|
793
|
+
/**
|
|
794
|
+
* Result of parsing a MultiVault error
|
|
795
|
+
*/
|
|
796
|
+
interface ParsedMultiVaultError {
|
|
797
|
+
/** User-friendly message to display in the UI */
|
|
798
|
+
userMessage: string;
|
|
799
|
+
/** More detailed explanation for tooltips or error details */
|
|
800
|
+
description: string;
|
|
801
|
+
/** Whether this error is commonly encountered by users */
|
|
802
|
+
isCommon: boolean;
|
|
803
|
+
/** The original error name if matched, undefined if fallback */
|
|
804
|
+
errorName?: string;
|
|
805
|
+
/** The error category if matched */
|
|
806
|
+
category?: MultiVaultErrorInfo['category'];
|
|
807
|
+
/** Whether this was a known MultiVault error */
|
|
808
|
+
isMultiVaultError: boolean;
|
|
809
|
+
}
|
|
810
|
+
/**
|
|
811
|
+
* Complete mapping of MultiVault contract errors to user-friendly messages.
|
|
812
|
+
*
|
|
813
|
+
* @example
|
|
814
|
+
* ```typescript
|
|
815
|
+
* const errorInfo = MULTIVAULT_ERRORS['MultiVault_AtomExists']
|
|
816
|
+
* toast.error(errorInfo.userMessage)
|
|
817
|
+
* ```
|
|
818
|
+
*/
|
|
819
|
+
declare const MULTIVAULT_ERRORS: Record<string, MultiVaultErrorInfo>;
|
|
820
|
+
/**
|
|
821
|
+
* All error categories for filtering/grouping
|
|
822
|
+
*/
|
|
823
|
+
declare const ERROR_CATEGORIES: readonly ["atom", "triple", "deposit", "redeem", "balance", "limits", "batch", "approval", "existence", "epoch", "wallet", "internal"];
|
|
824
|
+
type ErrorCategory = (typeof ERROR_CATEGORIES)[number];
|
|
825
|
+
/**
|
|
826
|
+
* Get all errors marked as commonly encountered by users
|
|
827
|
+
*/
|
|
828
|
+
declare const COMMON_ERRORS: Record<string, MultiVaultErrorInfo>;
|
|
829
|
+
/**
|
|
830
|
+
* Total count of mapped errors
|
|
831
|
+
*/
|
|
832
|
+
declare const TOTAL_ERROR_COUNT: number;
|
|
833
|
+
/**
|
|
834
|
+
* Parse a contract error and return user-friendly error information
|
|
835
|
+
*
|
|
836
|
+
* This function attempts to match the error against known MultiVault errors
|
|
837
|
+
* and returns structured information for display in the UI.
|
|
838
|
+
*
|
|
839
|
+
* @param error - The error object from a contract call
|
|
840
|
+
* @returns Parsed error information with user-friendly message
|
|
841
|
+
*
|
|
842
|
+
* @example
|
|
843
|
+
* ```typescript
|
|
844
|
+
* try {
|
|
845
|
+
* await createAtom(...)
|
|
846
|
+
* } catch (err) {
|
|
847
|
+
* const parsed = parseMultiVaultError(err)
|
|
848
|
+
* toast.error(parsed.userMessage)
|
|
849
|
+
* if (parsed.isMultiVaultError) {
|
|
850
|
+
* console.log('Contract error:', parsed.errorName)
|
|
851
|
+
* }
|
|
852
|
+
* }
|
|
853
|
+
* ```
|
|
854
|
+
*/
|
|
855
|
+
declare function parseMultiVaultError(error: unknown): ParsedMultiVaultError;
|
|
856
|
+
/**
|
|
857
|
+
* Check if an error is a specific MultiVault error
|
|
858
|
+
*
|
|
859
|
+
* @param error - The error to check
|
|
860
|
+
* @param errorName - The specific error name to check for
|
|
861
|
+
* @returns True if the error matches the specified error name
|
|
862
|
+
*
|
|
863
|
+
* @example
|
|
864
|
+
* ```typescript
|
|
865
|
+
* if (isMultiVaultError(err, 'MultiVault_AtomExists')) {
|
|
866
|
+
* // Handle atom already exists case
|
|
867
|
+
* }
|
|
868
|
+
* ```
|
|
869
|
+
*/
|
|
870
|
+
declare function isMultiVaultError(error: unknown, errorName: keyof typeof MULTIVAULT_ERRORS): boolean;
|
|
871
|
+
/**
|
|
872
|
+
* Check if an error is any known MultiVault error
|
|
873
|
+
*
|
|
874
|
+
* @param error - The error to check
|
|
875
|
+
* @returns True if the error is a known MultiVault error
|
|
876
|
+
*/
|
|
877
|
+
declare function isKnownMultiVaultError(error: unknown): boolean;
|
|
878
|
+
|
|
879
|
+
export { ATOM_TYPES, type AddressDetectionResult, type ArweaveDetectionResult, type AtomCreator, type AtomIdDetectionResult, type AtomLabelDetectionResult, type AtomType, type AtomTypeInput, type AtomValue, type AtomVault, COMMON_ERRORS, type DomainDetectionResult, ERROR_CATEGORIES, type EnsDetectionResult, type ErrorCategory, type FormatCryptoAmountOptions, type FormattedCryptoAmount, type GraphQLAtom, type IpfsDetectionResult, MULTIVAULT_ERRORS, type MultiVaultErrorInfo, type ParsedMultiVaultError, type RankedAtom, type SearchResult, type SearchSummary, type SocialDetectionResult, type SocialPlatform, TOTAL_ERROR_COUNT, type TextDetectionResult, type UrlDetectionResult, calculateMatchScore, capitalize, capitalizeFirstLetter, cn, detectAtomLabel, ellipsizeHex, ellipsizeString, formatAtomType, formatCompact, formatCryptoAmount, formatStake, formatTermId, getAtomDescription, getAtomDisplayName, getAtomImage, getAtomType, highlightMatch, ipfsToHttp, isAtomLabelKind, isDecentralizedStorage, isEntityType, isKnownMultiVaultError, isMultiVaultError, isOnChainIdentity, isPlainTextType, isPredicateType, isRawDataType, isSameAtomLabel, isWebReference, parseMultiVaultError, rankAtoms, secondsToDhms, secondsToHms, shortenLabel, strengthenImageUrl, timeAgo, truncateId, truncateSignificantDigits, truncateString };
|
package/dist/utils/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { ATOM_TYPES, calculateMatchScore, formatAtomType, formatStake, formatTermId, getAtomDescription, getAtomDisplayName, getAtomImage, getAtomType, highlightMatch, isEntityType, isPlainTextType, isPredicateType, isRawDataType, rankAtoms } from '../chunk-
|
|
2
|
-
export { capitalize, capitalizeFirstLetter, ellipsizeHex, ellipsizeString, formatCompact, formatCryptoAmount, ipfsToHttp, secondsToDhms, secondsToHms, shortenLabel, strengthenImageUrl, timeAgo, truncateId, truncateSignificantDigits, truncateString } from '../chunk-
|
|
1
|
+
export { ATOM_TYPES, COMMON_ERRORS, ERROR_CATEGORIES, MULTIVAULT_ERRORS, TOTAL_ERROR_COUNT, calculateMatchScore, detectAtomLabel, formatAtomType, formatStake, formatTermId, getAtomDescription, getAtomDisplayName, getAtomImage, getAtomType, highlightMatch, isAtomLabelKind, isDecentralizedStorage, isEntityType, isKnownMultiVaultError, isMultiVaultError, isOnChainIdentity, isPlainTextType, isPredicateType, isRawDataType, isSameAtomLabel, isWebReference, parseMultiVaultError, rankAtoms } from '../chunk-VU3OPG32.js';
|
|
2
|
+
export { capitalize, capitalizeFirstLetter, ellipsizeHex, ellipsizeString, formatCompact, formatCryptoAmount, ipfsToHttp, secondsToDhms, secondsToHms, shortenLabel, strengthenImageUrl, timeAgo, truncateId, truncateSignificantDigits, truncateString } from '../chunk-RW4JXOAM.js';
|
|
3
3
|
export { cn } from '../chunk-VIRNUAYY.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hivemindhq/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Shared components, utilities, and types for hivemindhq applications",
|
|
5
5
|
"author": "Kylan Hurt <kylan@hivemindhq.io>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -32,15 +32,9 @@
|
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|
|
35
|
+
"src",
|
|
35
36
|
"tailwind.config.js"
|
|
36
37
|
],
|
|
37
|
-
"scripts": {
|
|
38
|
-
"build": "tsup",
|
|
39
|
-
"dev": "tsup --watch",
|
|
40
|
-
"clean": "rm -rf dist",
|
|
41
|
-
"typecheck": "tsc --noEmit",
|
|
42
|
-
"prepublishOnly": "pnpm run build"
|
|
43
|
-
},
|
|
44
38
|
"peerDependencies": {
|
|
45
39
|
"react": "^18.0.0 || ^19.0.0",
|
|
46
40
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
@@ -87,8 +81,8 @@
|
|
|
87
81
|
"devDependencies": {
|
|
88
82
|
"@types/react": "^18.0.0 || ^19.0.0",
|
|
89
83
|
"@types/react-dom": "^18.0.0 || ^19.0.0",
|
|
90
|
-
"react": "
|
|
91
|
-
"react-dom": "
|
|
84
|
+
"react": "19.2.0",
|
|
85
|
+
"react-dom": "19.2.0",
|
|
92
86
|
"tsup": "^8.0.0",
|
|
93
87
|
"typescript": "^5.0.0"
|
|
94
88
|
},
|
|
@@ -103,5 +97,15 @@
|
|
|
103
97
|
"repository": {
|
|
104
98
|
"type": "git",
|
|
105
99
|
"url": "https://github.com/hivemindhq-io/core.git"
|
|
100
|
+
},
|
|
101
|
+
"scripts": {
|
|
102
|
+
"build": "tsup",
|
|
103
|
+
"dev": "tsup --watch",
|
|
104
|
+
"clean": "rm -rf dist",
|
|
105
|
+
"typecheck": "tsc --noEmit",
|
|
106
|
+
"version:patch": "pnpm version patch --no-git-tag-version",
|
|
107
|
+
"version:minor": "pnpm version minor --no-git-tag-version",
|
|
108
|
+
"version:major": "pnpm version major --no-git-tag-version",
|
|
109
|
+
"release": "pnpm run build && pnpm publish --no-git-checks --access public"
|
|
106
110
|
}
|
|
107
|
-
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const AtomIcon = ({ ...props }: React.SVGProps<SVGSVGElement>) => {
|
|
2
|
+
return (
|
|
3
|
+
<svg
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="rgba(255,255,255,0.6)"
|
|
10
|
+
strokeWidth="1.5"
|
|
11
|
+
strokeLinecap="round"
|
|
12
|
+
strokeLinejoin="round"
|
|
13
|
+
className="lucide lucide-atom"
|
|
14
|
+
{...props}
|
|
15
|
+
>
|
|
16
|
+
<circle cx="12" cy="12" r="1" />
|
|
17
|
+
<path d="M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z" />
|
|
18
|
+
<path d="M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z" />
|
|
19
|
+
</svg>
|
|
20
|
+
)
|
|
21
|
+
}
|