hive-react-kit 1.10.4 → 1.10.5

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/build.css CHANGED
@@ -59,6 +59,8 @@
59
59
  --color-blue-800: oklch(42.4% 0.199 265.638);
60
60
  --color-blue-900: oklch(37.9% 0.146 265.522);
61
61
  --color-indigo-600: oklch(51.1% 0.262 276.966);
62
+ --color-violet-200: oklch(89.4% 0.057 293.283);
63
+ --color-violet-400: oklch(70.2% 0.183 293.541);
62
64
  --color-purple-100: oklch(94.6% 0.033 307.174);
63
65
  --color-purple-200: oklch(90.2% 0.063 306.703);
64
66
  --color-purple-300: oklch(82.7% 0.119 306.383);
@@ -71,6 +73,8 @@
71
73
  --color-pink-400: oklch(71.8% 0.202 349.761);
72
74
  --color-rose-400: oklch(71.2% 0.194 13.428);
73
75
  --color-slate-50: oklch(98.4% 0.003 247.858);
76
+ --color-slate-300: oklch(86.9% 0.022 252.894);
77
+ --color-slate-400: oklch(70.4% 0.04 256.788);
74
78
  --color-slate-800: oklch(27.9% 0.041 260.031);
75
79
  --color-slate-900: oklch(20.8% 0.042 265.755);
76
80
  --color-slate-950: oklch(12.9% 0.042 264.695);
@@ -303,6 +307,9 @@
303
307
  .\@container {
304
308
  container-type: inline-size;
305
309
  }
310
+ .pointer-events-auto {
311
+ pointer-events: auto;
312
+ }
306
313
  .pointer-events-none {
307
314
  pointer-events: none;
308
315
  }
@@ -372,6 +379,12 @@
372
379
  .top-3 {
373
380
  top: calc(var(--spacing) * 3);
374
381
  }
382
+ .top-12 {
383
+ top: calc(var(--spacing) * 12);
384
+ }
385
+ .top-14 {
386
+ top: calc(var(--spacing) * 14);
387
+ }
375
388
  .top-24 {
376
389
  top: calc(var(--spacing) * 24);
377
390
  }
@@ -751,6 +764,9 @@
751
764
  .aspect-video {
752
765
  aspect-ratio: var(--aspect-video);
753
766
  }
767
+ .h-0 {
768
+ height: 0;
769
+ }
754
770
  .h-1 {
755
771
  height: var(--spacing);
756
772
  }
@@ -1431,6 +1447,13 @@
1431
1447
  .gap-x-4 {
1432
1448
  column-gap: calc(var(--spacing) * 4);
1433
1449
  }
1450
+ .-space-x-1\.5 {
1451
+ :where(& > :not(:last-child)) {
1452
+ --tw-space-x-reverse: 0;
1453
+ margin-inline-start: calc(calc(var(--spacing) * -1.5) * var(--tw-space-x-reverse));
1454
+ margin-inline-end: calc(calc(var(--spacing) * -1.5) * calc(1 - var(--tw-space-x-reverse)));
1455
+ }
1456
+ }
1434
1457
  .space-x-1 {
1435
1458
  :where(& > :not(:last-child)) {
1436
1459
  --tw-space-x-reverse: 0;
@@ -1525,6 +1548,9 @@
1525
1548
  .overflow-hidden {
1526
1549
  overflow: hidden;
1527
1550
  }
1551
+ .overflow-visible {
1552
+ overflow: visible;
1553
+ }
1528
1554
  .overflow-x-auto {
1529
1555
  overflow-x: auto;
1530
1556
  }
@@ -1698,6 +1724,12 @@
1698
1724
  .border-\[var\(--hs-border-subtle\,\#3a424a\)\] {
1699
1725
  border-color: var(--hs-border-subtle,#3a424a);
1700
1726
  }
1727
+ .border-amber-400\/40 {
1728
+ border-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 40%, transparent);
1729
+ @supports (color: color-mix(in lab, red, red)) {
1730
+ border-color: color-mix(in oklab, var(--color-amber-400) 40%, transparent);
1731
+ }
1732
+ }
1701
1733
  .border-amber-500\/40 {
1702
1734
  border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 40%, transparent);
1703
1735
  @supports (color: color-mix(in lab, red, red)) {
@@ -1839,9 +1871,21 @@
1839
1871
  .border-red-700 {
1840
1872
  border-color: var(--color-red-700);
1841
1873
  }
1874
+ .border-slate-400\/40 {
1875
+ border-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 40%, transparent);
1876
+ @supports (color: color-mix(in lab, red, red)) {
1877
+ border-color: color-mix(in oklab, var(--color-slate-400) 40%, transparent);
1878
+ }
1879
+ }
1842
1880
  .border-transparent {
1843
1881
  border-color: transparent;
1844
1882
  }
1883
+ .border-violet-400\/40 {
1884
+ border-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 40%, transparent);
1885
+ @supports (color: color-mix(in lab, red, red)) {
1886
+ border-color: color-mix(in oklab, var(--color-violet-400) 40%, transparent);
1887
+ }
1888
+ }
1845
1889
  .border-white {
1846
1890
  border-color: var(--color-white);
1847
1891
  }
@@ -1878,6 +1922,9 @@
1878
1922
  .bg-\[\#1a1d21\] {
1879
1923
  background-color: #1a1d21;
1880
1924
  }
1925
+ .bg-\[\#1d9bf0\] {
1926
+ background-color: #1d9bf0;
1927
+ }
1881
1928
  .bg-\[\#1e242c\] {
1882
1929
  background-color: #1e242c;
1883
1930
  }
@@ -2103,6 +2150,12 @@
2103
2150
  .bg-\[var\(--hs-brand\,\#e31337\)\] {
2104
2151
  background-color: var(--hs-brand,#e31337);
2105
2152
  }
2153
+ .bg-amber-400\/15 {
2154
+ background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 15%, transparent);
2155
+ @supports (color: color-mix(in lab, red, red)) {
2156
+ background-color: color-mix(in oklab, var(--color-amber-400) 15%, transparent);
2157
+ }
2158
+ }
2106
2159
  .bg-amber-500\/10 {
2107
2160
  background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 10%, transparent);
2108
2161
  @supports (color: color-mix(in lab, red, red)) {
@@ -2478,6 +2531,12 @@
2478
2531
  .bg-slate-50 {
2479
2532
  background-color: var(--color-slate-50);
2480
2533
  }
2534
+ .bg-slate-400\/15 {
2535
+ background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 15%, transparent);
2536
+ @supports (color: color-mix(in lab, red, red)) {
2537
+ background-color: color-mix(in oklab, var(--color-slate-400) 15%, transparent);
2538
+ }
2539
+ }
2481
2540
  .bg-slate-800 {
2482
2541
  background-color: var(--color-slate-800);
2483
2542
  }
@@ -2493,6 +2552,12 @@
2493
2552
  .bg-transparent {
2494
2553
  background-color: transparent;
2495
2554
  }
2555
+ .bg-violet-400\/15 {
2556
+ background-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 15%, transparent);
2557
+ @supports (color: color-mix(in lab, red, red)) {
2558
+ background-color: color-mix(in oklab, var(--color-violet-400) 15%, transparent);
2559
+ }
2560
+ }
2496
2561
  .bg-white {
2497
2562
  background-color: var(--color-white);
2498
2563
  }
@@ -3189,6 +3254,12 @@
3189
3254
  .text-sky-400 {
3190
3255
  color: var(--color-sky-400);
3191
3256
  }
3257
+ .text-slate-300 {
3258
+ color: var(--color-slate-300);
3259
+ }
3260
+ .text-violet-200 {
3261
+ color: var(--color-violet-200);
3262
+ }
3192
3263
  .text-white {
3193
3264
  color: var(--color-white);
3194
3265
  }
@@ -3346,6 +3417,10 @@
3346
3417
  --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
3347
3418
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3348
3419
  }
3420
+ .ring {
3421
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3422
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3423
+ }
3349
3424
  .ring-1 {
3350
3425
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3351
3426
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -3354,24 +3429,40 @@
3354
3429
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3355
3430
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3356
3431
  }
3432
+ .ring-\[3px\] {
3433
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3434
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3435
+ }
3357
3436
  .shadow-blue-500\/10 {
3358
3437
  --tw-shadow-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);
3359
3438
  @supports (color: color-mix(in lab, red, red)) {
3360
3439
  --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 10%, transparent) var(--tw-shadow-alpha), transparent);
3361
3440
  }
3362
3441
  }
3442
+ .ring-\[\#1d9bf0\] {
3443
+ --tw-ring-color: #1d9bf0;
3444
+ }
3363
3445
  .ring-\[var\(--hrk-border-default\)\] {
3364
3446
  --tw-ring-color: var(--hrk-border-default);
3365
3447
  }
3366
3448
  .ring-\[var\(--hrk-border-subtle\)\] {
3367
3449
  --tw-ring-color: var(--hrk-border-subtle);
3368
3450
  }
3451
+ .ring-amber-400 {
3452
+ --tw-ring-color: var(--color-amber-400);
3453
+ }
3369
3454
  .ring-blue-500 {
3370
3455
  --tw-ring-color: var(--color-blue-500);
3371
3456
  }
3372
3457
  .ring-gray-700 {
3373
3458
  --tw-ring-color: var(--color-gray-700);
3374
3459
  }
3460
+ .ring-slate-400 {
3461
+ --tw-ring-color: var(--color-slate-400);
3462
+ }
3463
+ .ring-violet-400 {
3464
+ --tw-ring-color: var(--color-violet-400);
3465
+ }
3375
3466
  .ring-white\/30 {
3376
3467
  --tw-ring-color: color-mix(in srgb, #fff 30%, transparent);
3377
3468
  @supports (color: color-mix(in lab, red, red)) {
@@ -3740,6 +3831,13 @@
3740
3831
  }
3741
3832
  }
3742
3833
  }
3834
+ .hover\:bg-\[\#1a8cd8\] {
3835
+ &:hover {
3836
+ @media (hover: hover) {
3837
+ background-color: #1a8cd8;
3838
+ }
3839
+ }
3840
+ }
3743
3841
  .hover\:bg-\[var\(--hrk-bg-hover\)\] {
3744
3842
  &:hover {
3745
3843
  @media (hover: hover) {
@@ -5476,6 +5574,12 @@
5476
5574
  line-height: var(--tw-leading, var(--text-xl--line-height));
5477
5575
  }
5478
5576
  }
5577
+ .md\:text-xs {
5578
+ @media (width >= 48rem) {
5579
+ font-size: var(--text-xs);
5580
+ line-height: var(--tw-leading, var(--text-xs--line-height));
5581
+ }
5582
+ }
5479
5583
  .md\:text-\[10px\] {
5480
5584
  @media (width >= 48rem) {
5481
5585
  font-size: 10px;
@@ -6123,10 +6227,31 @@
6123
6227
  .hive-post-body img {
6124
6228
  max-width: 100%;
6125
6229
  height: auto;
6230
+ max-height: 80vh;
6231
+ object-fit: contain;
6126
6232
  border-radius: 0.75rem;
6127
6233
  margin: 1rem auto;
6128
6234
  display: block;
6129
6235
  }
6236
+ .hive-post-body .hive-image-gallery {
6237
+ display: flex;
6238
+ flex-wrap: wrap;
6239
+ gap: 0.5rem;
6240
+ margin: 1rem 0;
6241
+ justify-content: center;
6242
+ }
6243
+ .hive-post-body .hive-image-gallery .hive-img-figure {
6244
+ flex: 1 1 0%;
6245
+ min-width: 200px;
6246
+ margin: 0;
6247
+ }
6248
+ .hive-post-body .hive-image-gallery .hive-img-figure img {
6249
+ margin: 0;
6250
+ width: 100%;
6251
+ height: 100%;
6252
+ object-fit: contain;
6253
+ max-height: 80vh;
6254
+ }
6130
6255
  .hive-post-body blockquote {
6131
6256
  border-left: 4px solid #3b82f680;
6132
6257
  background: #1f293780;
@@ -6526,6 +6651,8 @@
6526
6651
  .snaps-feed-body img {
6527
6652
  max-width: 100%;
6528
6653
  height: auto;
6654
+ max-height: 80vh;
6655
+ object-fit: contain;
6529
6656
  border-radius: 0.5rem;
6530
6657
  margin: 0.25rem 0;
6531
6658
  }
@@ -35,6 +35,8 @@ export interface BlogPostListProps {
35
35
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
36
36
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
37
37
  onReblog?: (author: string, permlink: string) => void;
38
+ isPostReblogged?: (author: string, permlink: string) => boolean;
39
+ onCheckReblogged?: (author: string, permlink: string) => void;
38
40
  onTip?: (author: string, permlink: string) => void;
39
41
  onSharePost?: (author: string, permlink: string) => void;
40
42
  onCommentClick?: (author: string, permlink: string) => void;
@@ -85,6 +85,7 @@ export interface HiveDetailPostProps {
85
85
  };
86
86
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
87
87
  onReblog?: () => void;
88
+ isReblogged?: boolean;
88
89
  onShare?: () => void;
89
90
  onTip?: () => void;
90
91
  onReport?: () => void;
@@ -217,5 +218,5 @@ export interface HiveDetailPostProps {
217
218
  * page will then re-render with the new language. */
218
219
  onSelectLanguage?: (code: string) => void;
219
220
  }
220
- export declare function HiveDetailPost({ author, permlink, currentUser, onUpvote, onSubmitComment, onClickCommentUpvote, onReblog, onShare, onTip, onReport, onEdit, onDelete, onShareComment, onTipComment, onReportComment, onToggleCommentBookmark, isCommentBookmarked, onEditComment, onDeleteComment, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, reportedAuthors, reportedPosts, hiveIconUrl, backgroundColor, onBack, onOpenMenu, onOpenProfileMenu, onUserClick, onCommunityClick, getUserUrl, getCommunityUrl, onNavigateToPost, isBookmarked, onToggleBookmark, onHeaderShare, onHeaderReport, language, onSelectLanguage, onVotePoll, showVoteButton, processBody, defaultReward, defaultBeneficiaries, beneficiaryFavorites, defaultVotePercent, voteWeightStep, allowLandscapeVideos, renderOptions, awaitingWalletApproval, }: HiveDetailPostProps): import("react/jsx-runtime").JSX.Element;
221
+ export declare function HiveDetailPost({ author, permlink, currentUser, onUpvote, onSubmitComment, onClickCommentUpvote, onReblog, isReblogged, onShare, onTip, onReport, onEdit, onDelete, onShareComment, onTipComment, onReportComment, onToggleCommentBookmark, isCommentBookmarked, onEditComment, onDeleteComment, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, reportedAuthors, reportedPosts, hiveIconUrl, backgroundColor, onBack, onOpenMenu, onOpenProfileMenu, onUserClick, onCommunityClick, getUserUrl, getCommunityUrl, onNavigateToPost, isBookmarked, onToggleBookmark, onHeaderShare, onHeaderReport, language, onSelectLanguage, onVotePoll, showVoteButton, processBody, defaultReward, defaultBeneficiaries, beneficiaryFavorites, defaultVotePercent, voteWeightStep, allowLandscapeVideos, renderOptions, awaitingWalletApproval, }: HiveDetailPostProps): import("react/jsx-runtime").JSX.Element;
221
222
  export default HiveDetailPost;
@@ -7,6 +7,10 @@ interface LanguagePickerButtonProps {
7
7
  /** Optional override for the language list. Defaults to the same
8
8
  * 15-language set used by the selection-translate popover. */
9
9
  languages?: SelectionTranslateLanguage[];
10
+ /** Optional class name to override styling. */
11
+ className?: string;
12
+ /** Optional flag to render as a menu item instead of header button. */
13
+ isMenuItem?: boolean;
10
14
  }
11
- export declare function LanguagePickerButton({ language, onSelectLanguage, languages, }: LanguagePickerButtonProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function LanguagePickerButton({ language, onSelectLanguage, languages, className, isMenuItem, }: LanguagePickerButtonProps): import("react/jsx-runtime").JSX.Element;
12
16
  export default LanguagePickerButton;
@@ -25,7 +25,7 @@ interface WalletProps {
25
25
  onTransfer?: (to: string, amount: string, currency: Currency, memo: string) => void | boolean | Promise<void | boolean>;
26
26
  onPowerUp?: (to: string, amount: string) => void | boolean | Promise<void | boolean>;
27
27
  onPowerDown?: (hp: string) => void | boolean | Promise<void | boolean>;
28
- onTransferToSavings?: (currency: Currency, amount: string, memo: string) => void | boolean | Promise<void | boolean>;
28
+ onTransferToSavings?: (to: string, currency: Currency, amount: string, memo: string) => void | boolean | Promise<void | boolean>;
29
29
  onTransferFromSavings?: (currency: Currency, amount: string, memo: string) => void | boolean | Promise<void | boolean>;
30
30
  /** Cancels the in-progress HP power-down (broadcasts `withdraw_vesting`
31
31
  * with 0 vests). Surfaces a STOP button on the Hive Power row when the
@@ -17,6 +17,7 @@ export declare const TransferModal: React.FC<{
17
17
  }>;
18
18
  export declare const PowerUpModal: React.FC<{
19
19
  from: string;
20
+ toDefault?: string;
20
21
  hiveBalance?: string;
21
22
  onClose: () => void;
22
23
  onSubmit: (to: string, amount: string) => void | boolean | Promise<void | boolean>;
@@ -30,10 +31,11 @@ export declare const PowerDownModal: React.FC<{
30
31
  export declare const SavingsModal: React.FC<{
31
32
  mode: "add" | "remove";
32
33
  from: string;
34
+ toDefault?: string;
33
35
  currency: Currency;
34
36
  availableBalance?: string;
35
37
  onClose: () => void;
36
- onSubmit: (currency: Currency, amount: string, memo: string) => void | boolean | Promise<void | boolean>;
38
+ onSubmit: any;
37
39
  }>;
38
40
  export declare const ConfirmActionModal: React.FC<{
39
41
  title: string;
@@ -4,6 +4,7 @@ export interface MoreActionsMenuProps {
4
4
  onEdit?: () => void;
5
5
  /** Show the Reblog item. */
6
6
  onReblog?: () => void;
7
+ isReblogged?: boolean;
7
8
  /** Show the Re-snap item. Re-snap broadcasts a new snap whose body is
8
9
  * a URL pointing back at this snap — receivers render the original
9
10
  * inline with a "RE-SNAP" badge. */
@@ -33,5 +34,5 @@ export interface MoreActionsMenuProps {
33
34
  /** aria-label for the trigger. */
34
35
  ariaLabel?: string;
35
36
  }
36
- export declare function MoreActionsMenu({ onEdit, onReblog, onReSnap, onShare, onTip, onReport, onToggleBookmark, isBookmarked, onPin, onUnpin, onDelete, buttonClassName, ariaLabel, }: MoreActionsMenuProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare function MoreActionsMenu({ onEdit, onReblog, isReblogged, onReSnap, onShare, onTip, onReport, onToggleBookmark, isBookmarked, onPin, onUnpin, onDelete, buttonClassName, ariaLabel, }: MoreActionsMenuProps): import("react/jsx-runtime").JSX.Element;
37
38
  export default MoreActionsMenu;
@@ -73,6 +73,8 @@ export interface PostActionButtonProps {
73
73
  onEdit?: () => void;
74
74
  /** Called when reblog is clicked (when logged in). */
75
75
  onReblog?: () => void;
76
+ isReblogged?: boolean;
77
+ onCheckReblogged?: (author: string, permlink: string) => void;
76
78
  /** Called when re-snap is clicked (when logged in). Re-snap appends
77
79
  * a new snap to the latest peak.snaps container whose body is a URL
78
80
  * to the original snap — receivers render the original inline. */
@@ -154,5 +156,5 @@ export interface PostActionButtonProps {
154
156
  * polls, community detail) where there isn't room for four icons. */
155
157
  actionsAsMenu?: boolean;
156
158
  }
157
- export declare function PostActionButton({ author, permlink, currentUser: currentUserProp, hiveValue, hiveIconUrl, payoutTooltip, payoutDetails, initialVotes, initialVoteCount, initialFlagWeight, initialCommentsCount, onUpvote, onSubmitComment, onComments, onEdit, onReblog, onReSnap, onShare, onTip, onReport, onToggleBookmark, isBookmarked, onDelete, onPin, onUnpin, onClickCommentUpvote, onUserClick, getUserUrl, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, disableCommentsModal, onClickCommentIcon, onClickCommentCount, hasCommented, myReplyKey, showVoteButton, parentTags, defaultReward, defaultBeneficiaries, beneficiaryFavorites, defaultVotePercent, voteWeightStep, allowLandscapeVideos, actionsAsMenu, awaitingWalletApproval, postCreatedAt, size, }: PostActionButtonProps): import("react/jsx-runtime").JSX.Element;
159
+ export declare function PostActionButton({ author, permlink, currentUser: currentUserProp, hiveValue, hiveIconUrl, payoutTooltip, payoutDetails, initialVotes, initialVoteCount, initialFlagWeight, initialCommentsCount, onUpvote, onSubmitComment, onComments, onEdit, onReblog, isReblogged, onCheckReblogged, onReSnap, onShare, onTip, onReport, onToggleBookmark, isBookmarked, onDelete, onPin, onUnpin, onClickCommentUpvote, onUserClick, getUserUrl, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, disableCommentsModal, onClickCommentIcon, onClickCommentCount, hasCommented, myReplyKey, showVoteButton, parentTags, defaultReward, defaultBeneficiaries, beneficiaryFavorites, defaultVotePercent, voteWeightStep, allowLandscapeVideos, actionsAsMenu, awaitingWalletApproval, postCreatedAt, size, }: PostActionButtonProps): import("react/jsx-runtime").JSX.Element;
158
160
  export default PostActionButton;
@@ -18,6 +18,8 @@ export interface CommunityDetailProps {
18
18
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
19
19
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
20
20
  onReblog?: (author: string, permlink: string) => void;
21
+ isPostReblogged?: (author: string, permlink: string) => boolean;
22
+ onCheckReblogged?: (author: string, permlink: string) => void;
21
23
  onTip?: (author: string, permlink: string) => void;
22
24
  onSharePost?: (author: string, permlink: string) => void;
23
25
  onReportPost?: (author: string, permlink: string) => void;
@@ -118,5 +120,5 @@ export interface CommunityDetailProps {
118
120
  * the view starts at the top, matching forward navigation. */
119
121
  shouldRestoreScroll?: boolean;
120
122
  }
121
- declare const CommunityDetail: ({ communityId, currentUser, onBack, onUserClick, onPostClick, getPostUrl, getUserUrl, getTagUrl, getCommunityUrl, onCommentClick, onUpvote, onSubmitComment, onClickCommentUpvote, onReblog, onTip, onSharePost, onReportPost, onToggleBookmark, isPostBookmarked, onToggleCommunityBookmark, isCommunityBookmarked, onDeletePost, canPin, onPinPost, onUnpinPost, onVotePoll, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, defaultVotePercent, voteWeightStep, allowLandscapeVideos, awaitingWalletApproval, defaultReward, actionsAsMenu, onShare, onRss, isSubscribed: controlledIsSubscribed, onToggleSubscribe, subscribePending, canManage, onManageRoles, onOpenSettings, loadCommunitySnaps: _loadCommunitySnaps, reportedAuthors, reportedPosts, activeTab: controlledActiveTab, onActiveTabChange, postSort: controlledPostSort, onPostSortChange, shouldRestoreScroll, }: CommunityDetailProps) => import("react/jsx-runtime").JSX.Element;
123
+ declare const CommunityDetail: ({ communityId, currentUser, onBack, onUserClick, onPostClick, getPostUrl, getUserUrl, getTagUrl, getCommunityUrl, onCommentClick, onUpvote, onSubmitComment, onClickCommentUpvote, onReblog, isPostReblogged, onCheckReblogged, onTip, onSharePost, onReportPost, onToggleBookmark, isPostBookmarked, onToggleCommunityBookmark, isCommunityBookmarked, onDeletePost, canPin, onPinPost, onUnpinPost, onVotePoll, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, defaultVotePercent, voteWeightStep, allowLandscapeVideos, awaitingWalletApproval, defaultReward, actionsAsMenu, onShare, onRss, isSubscribed: controlledIsSubscribed, onToggleSubscribe, subscribePending, canManage, onManageRoles, onOpenSettings, loadCommunitySnaps: _loadCommunitySnaps, reportedAuthors, reportedPosts, activeTab: controlledActiveTab, onActiveTabChange, postSort: controlledPostSort, onPostSortChange, shouldRestoreScroll, }: CommunityDetailProps) => import("react/jsx-runtime").JSX.Element;
122
124
  export default CommunityDetail;
@@ -29,6 +29,8 @@ export interface CommunitySnapsTabProps {
29
29
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
30
30
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
31
31
  onReblog?: (author: string, permlink: string) => void;
32
+ isPostReblogged?: (author: string, permlink: string) => boolean;
33
+ onCheckReblogged?: (author: string, permlink: string) => void;
32
34
  onTip?: (author: string, permlink: string) => void;
33
35
  onSharePost?: (author: string, permlink: string) => void;
34
36
  onCommentClick?: (author: string, permlink: string) => void;
@@ -25,6 +25,8 @@ export interface SnapsFeedCardProps {
25
25
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
26
26
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
27
27
  onReblog?: (author: string, permlink: string) => void;
28
+ isPostReblogged?: (author: string, permlink: string) => boolean;
29
+ onCheckReblogged?: (author: string, permlink: string) => void;
28
30
  /** Called when the viewer taps "Re-snap" in the snap's more menu.
29
31
  * Host implements the broadcast — body is a URL pointing at the
30
32
  * original snap (`http(s)://<frontend>/@<author>/<permlink>`) so
@@ -29,6 +29,9 @@ export interface SnapsFeedSlot {
29
29
  error?: string | null;
30
30
  onLoadMore?: () => void;
31
31
  onRefresh?: () => void;
32
+ newCount?: number;
33
+ newAvatars?: string[];
34
+ onShowNew?: () => void;
32
35
  }
33
36
  export interface SnapsFeedViewProps {
34
37
  feeds: Record<SnapsFeedKey, SnapsFeedSlot>;
@@ -45,6 +48,8 @@ export interface SnapsFeedViewProps {
45
48
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
46
49
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
47
50
  onReblog?: (author: string, permlink: string) => void;
51
+ isPostReblogged?: (author: string, permlink: string) => boolean;
52
+ onCheckReblogged?: (author: string, permlink: string) => void;
48
53
  /** Called when the viewer taps "Re-snap" in a snap's more menu.
49
54
  * Host implements the broadcast — see SnapsFeedCard's `onReSnap`.
50
55
  * The `parentTags` argument carries the original snap's
@@ -125,6 +130,7 @@ export interface SnapsFeedViewProps {
125
130
  * page-level scrollbar instead of four independent ones. Column
126
131
  * headers stay visible via `sticky top-0`. Mobile is unaffected. */
127
132
  pageScroll?: boolean;
133
+ onActiveFeedChange?: (feed: SnapsFeedKey) => void;
128
134
  }
129
- export declare function SnapsFeedView({ feeds, labels, avatars, defaultPrimary, currentUser, onUpvote, onSubmitComment, onClickCommentUpvote, onReblog, onReSnap, onTip, onSharePost, onCommentClick, onClickCommentIcon, onClickCommentCount, onReportPost, onToggleBookmark, isPostBookmarked, onDeletePost, onEditSnap, onVotePoll, onUserClick, onPostClick, getPostUrl, getUserUrl, getTagUrl, getCommunityUrl, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, defaultVotePercent, voteWeightStep, allowLandscapeVideos, awaitingWalletApproval, defaultReward, toolbar, footer, renderHeaderActions, actionsAsMenu, pageScroll, }: SnapsFeedViewProps): import("react/jsx-runtime").JSX.Element;
135
+ export declare function SnapsFeedView({ feeds, labels, avatars, defaultPrimary, currentUser, onUpvote, onSubmitComment, onClickCommentUpvote, onReblog, isPostReblogged, onCheckReblogged, onReSnap, onTip, onSharePost, onCommentClick, onClickCommentIcon, onClickCommentCount, onReportPost, onToggleBookmark, isPostBookmarked, onDeletePost, onEditSnap, onVotePoll, onUserClick, onPostClick, getPostUrl, getUserUrl, getTagUrl, getCommunityUrl, ecencyToken, threeSpeakApiKey, giphyApiKey, templateToken, templateApiBaseUrl, defaultVotePercent, voteWeightStep, allowLandscapeVideos, awaitingWalletApproval, defaultReward, toolbar, footer, renderHeaderActions, actionsAsMenu, pageScroll, onActiveFeedChange, }: SnapsFeedViewProps): import("react/jsx-runtime").JSX.Element;
130
136
  export default SnapsFeedView;
@@ -18,6 +18,8 @@ export interface PollListItemProps {
18
18
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
19
19
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
20
20
  onReblog?: (author: string, permlink: string) => void;
21
+ isPostReblogged?: (author: string, permlink: string) => boolean;
22
+ onCheckReblogged?: (author: string, permlink: string) => void;
21
23
  onTip?: (author: string, permlink: string) => void;
22
24
  onSharePost?: (author: string, permlink: string) => void;
23
25
  onCommentClick?: (author: string, permlink: string) => void;
@@ -22,6 +22,8 @@ export interface ProfileSnapsTabProps {
22
22
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
23
23
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
24
24
  onReblog?: (author: string, permlink: string) => void;
25
+ isPostReblogged?: (author: string, permlink: string) => boolean;
26
+ onCheckReblogged?: (author: string, permlink: string) => void;
25
27
  onTip?: (author: string, permlink: string) => void;
26
28
  onSharePost?: (author: string, permlink: string) => void;
27
29
  onCommentClick?: (author: string, permlink: string) => void;
@@ -27,8 +27,22 @@ export interface UserDetailProfileProps {
27
27
  */
28
28
  activeTab?: TabType;
29
29
  /** Called whenever the user clicks a different tab. Fires whether or
30
- * not `activeTab` is supplied. */
30
+ * not `activeTab` is supplied. Always fires with the PARENT tab name
31
+ * (e.g. `"posts"`, not `"blogs"`). */
31
32
  onActiveTabChange?: (tab: TabType) => void;
33
+ /**
34
+ * Called whenever the user switches a sub-tab toggle (Blogs/Posts,
35
+ * Comments/Replies, etc.). Receives both the parent tab name and the
36
+ * sub-tab name so the host app can sync the URL (e.g. `?subtab=blogs`).
37
+ */
38
+ onSubTabChange?: (parentTab: TabType, subTab: string) => void;
39
+ /**
40
+ * Initial sub-tab to activate within the parent `activeTab`. Lets the
41
+ * host app restore a sub-tab from the URL on first render.
42
+ * E.g. `initialSubTab="replies"` opens the Replies sub-tab inside the
43
+ * parent Replies tab.
44
+ */
45
+ initialSubTab?: string;
32
46
  /** Ecency image hosting token — enables image and video thumbnail upload in comment composer */
33
47
  ecencyToken?: string;
34
48
  /** 3Speak API key — enables audio and video upload in comment composer */
@@ -61,6 +75,8 @@ export interface UserDetailProfileProps {
61
75
  onSubmitComment?: (parentAuthor: string, parentPermlink: string, body: string) => void | Promise<void>;
62
76
  onClickCommentUpvote?: (author: string, permlink: string, percent: number) => void | Promise<void>;
63
77
  onReblog?: (author: string, permlink: string) => void;
78
+ isPostReblogged?: (author: string, permlink: string) => boolean;
79
+ onCheckReblogged?: (author: string, permlink: string) => void;
64
80
  onTip?: (author: string, permlink: string) => void;
65
81
  onReportPost?: (author: string, permlink: string, reason: string) => void | Promise<void>;
66
82
  /** Per-row bookmark toggle on every Blogs / Posts / Comments / Replies
@@ -117,7 +133,7 @@ export interface UserDetailProfileProps {
117
133
  /** Wallet tab — power down (unstake HP → HIVE over 13 weeks). */
118
134
  onPowerDown?: (hp: string) => void | boolean | Promise<void | boolean>;
119
135
  /** Wallet tab — add to savings (transfer_to_savings). */
120
- onTransferToSavings?: (currency: "HIVE" | "HBD", amount: string, memo: string) => void | boolean | Promise<void | boolean>;
136
+ onTransferToSavings?: (to: string, currency: "HIVE" | "HBD", amount: string, memo: string) => void | boolean | Promise<void | boolean>;
121
137
  /** Wallet tab — withdraw from savings (transfer_from_savings). */
122
138
  onTransferFromSavings?: (currency: "HIVE" | "HBD", amount: string, memo: string) => void | boolean | Promise<void | boolean>;
123
139
  /** Wallet tab — stop an in-progress power-down (withdraw_vesting with 0). */
@@ -229,6 +245,6 @@ export interface UserDetailProfileProps {
229
245
  * `addAccountAuthority` / `removeAccountAuthority`). */
230
246
  onPostingAuthority?: () => void;
231
247
  }
232
- type TabType = "blogs" | "posts" | "snaps" | "polls" | "comments" | "replies" | "activities" | "authorRewards" | "curationRewards" | "followers" | "following" | "wallet" | "votingPower" | "badges" | "witnessVotes" | "growth" | "curation";
248
+ type TabType = "blogs" | "posts" | "snaps" | "polls" | "comments" | "replies" | "activities" | "authorRewards" | "curationRewards" | "followers" | "following" | "wallet" | "votingPower" | "badges" | "witnessVotes" | "growth" | "curation" | "rewards" | "tokens" | "follows";
233
249
  declare const UserDetailProfile: React.FC<UserDetailProfileProps>;
234
250
  export default UserDetailProfile;
@@ -0,0 +1,15 @@
1
+ import { type ReactNode } from 'react';
2
+ export type SupporterTier = 'silver' | 'gold' | 'platinum';
3
+ export type SupporterTierMap = Record<string, SupporterTier>;
4
+ export declare function SupporterTierProvider({ tierMap, children, }: {
5
+ tierMap: SupporterTierMap;
6
+ children: ReactNode;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ /** Use in list components to avoid per-item hook calls inside map(). */
9
+ export declare function useSupporterTierMap(): SupporterTierMap;
10
+ /** Use in single-author components (SnapsFeedCard, CommentTile, etc.). */
11
+ export declare function useSupporterTier(username: string): SupporterTier | undefined;
12
+ /** Returns the ring className for avatar border, or the fallback if no tier. */
13
+ export declare function getSupporterRing(tier: SupporterTier | undefined, fallback?: string): string;
14
+ /** Returns the badge className for username highlight, or '' if no tier. */
15
+ export declare function getSupporterBadge(tier: SupporterTier | undefined): string;
@@ -15,7 +15,7 @@
15
15
  * Missing keys for a non-English language fall back to the English entry,
16
16
  * which is the source of truth for every label.
17
17
  */
18
- export type KitMessageKey = "tab.blogs" | "tab.posts" | "tab.snaps" | "tab.polls" | "tab.comments" | "tab.replies" | "tab.activities" | "tab.authorRewards" | "tab.curationRewards" | "tab.growth" | "tab.followers" | "tab.following" | "tab.wallet" | "tab.engineTokens" | "tab.votingPower" | "tab.badges" | "tab.witnessVotes" | "tab.curation" | "meta.followers" | "meta.following" | "meta.posts" | "action.follow" | "action.unfollow" | "action.ignoreAuthor" | "action.mute" | "action.unmute" | "action.reportUser" | "action.shareProfile" | "action.cancel" | "action.confirmIgnore" | "action.processing" | "modal.ignoreAuthorTitle" | "modal.ignoreAuthorBody" | "empty.noBlogs" | "empty.noPosts" | "empty.noSnaps" | "empty.noPolls" | "empty.noComments" | "empty.noReplies" | "empty.noFollowers" | "empty.notFollowing" | "empty.noBadges" | "empty.noWitnessVotes" | "empty.noPendingAuthor" | "empty.noPendingCuration" | "empty.curationHint" | "empty.votingPowerUnavailable" | "empty.userNotFound" | "empty.noCuration" | "status.active" | "status.ended" | "poll.selectAnOption" | "poll.selectUpTo" | "poll.changeYourVote" | "poll.selected" | "poll.submitVote" | "poll.submitVotes" | "poll.changeVote" | "poll.submitting" | "poll.voted" | "poll.voteChangesAllowed" | "poll.voter" | "poll.voters" | "poll.option" | "poll.options" | "poll.endsIn" | "common.translating" | "common.processing" | "common.fullyCharged" | "reward.pendingAuthor" | "reward.pendingCuration" | "reward.posts" | "reward.comments" | "reward.totalHbd" | "reward.totalHp" | "reward.avgEfficiency" | "reward.post" | "reward.comment" | "vp.upvotePower" | "vp.downvotePower" | "vp.resourceCredits";
18
+ export type KitMessageKey = "tab.blogs" | "tab.posts" | "tab.snaps" | "tab.polls" | "tab.comments" | "tab.replies" | "tab.activities" | "tab.authorRewards" | "tab.curationRewards" | "tab.growth" | "tab.followers" | "tab.following" | "tab.follows" | "tab.wallet" | "tab.engineTokens" | "tab.rewards" | "tab.votingPower" | "tab.badges" | "tab.witnessVotes" | "tab.curation" | "meta.followers" | "meta.following" | "meta.posts" | "action.follow" | "action.unfollow" | "action.ignoreAuthor" | "action.mute" | "action.unmute" | "action.reportUser" | "action.shareProfile" | "action.cancel" | "action.confirmIgnore" | "action.processing" | "modal.ignoreAuthorTitle" | "modal.ignoreAuthorBody" | "empty.noBlogs" | "empty.noPosts" | "empty.noSnaps" | "empty.noPolls" | "empty.noComments" | "empty.noReplies" | "empty.noFollowers" | "empty.notFollowing" | "empty.noBadges" | "empty.noWitnessVotes" | "empty.noPendingAuthor" | "empty.noPendingCuration" | "empty.curationHint" | "empty.votingPowerUnavailable" | "empty.userNotFound" | "empty.noCuration" | "status.active" | "status.ended" | "poll.selectAnOption" | "poll.selectUpTo" | "poll.changeYourVote" | "poll.selected" | "poll.submitVote" | "poll.submitVotes" | "poll.changeVote" | "poll.submitting" | "poll.voted" | "poll.voteChangesAllowed" | "poll.voter" | "poll.voters" | "poll.option" | "poll.options" | "poll.endsIn" | "common.translating" | "common.processing" | "common.fullyCharged" | "reward.pendingAuthor" | "reward.pendingCuration" | "reward.posts" | "reward.comments" | "reward.totalHbd" | "reward.totalHp" | "reward.avgEfficiency" | "reward.post" | "reward.comment" | "vp.upvotePower" | "vp.downvotePower" | "vp.resourceCredits";
19
19
  export type KitMessages = Partial<Record<KitMessageKey, string>>;
20
20
  export declare const BUILTIN_MESSAGES: Record<string, Record<string, string>>;
21
21
  /**