@soul-refiner/design-system 2.12.1 → 2.13.0-alpha.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.
Files changed (77) hide show
  1. package/dist/assets/custom_emoji_data.json.js +1 -0
  2. package/dist/components/card/person/person.js +23 -1
  3. package/dist/components/custom/help_center/help_center-auth.js +1 -0
  4. package/dist/components/custom/help_center/help_center-customModal.js +7 -0
  5. package/dist/components/custom/help_center/help_center-defaultArticle.js +60 -0
  6. package/dist/components/custom/help_center/help_center-editable-content.js +31 -0
  7. package/dist/components/custom/help_center/help_center-mainPage.js +32 -0
  8. package/dist/components/custom/help_center/help_center-sidebar.js +1 -0
  9. package/dist/components/custom/help_center/help_center.js +1 -0
  10. package/dist/components/custom/help_center/help_center_articlle-list.js +30 -0
  11. package/dist/components/custom/help_center/help_center_categoryList.js +55 -0
  12. package/dist/components/custom/help_center/help_center_dataStore.js +1 -0
  13. package/dist/components/custom/help_center/help_center_layout.js +64 -0
  14. package/dist/components/custom/help_center/help_center_sub-category.js +27 -0
  15. package/dist/components/custom/help_center/types.js +1 -0
  16. package/dist/components/feedback/emojiPicker/constants.js +1 -0
  17. package/dist/components/feedback/emojiPicker/emoji-picker.js +84 -0
  18. package/dist/components/feedback/emojiPicker/emoji-reactions.js +17 -0
  19. package/dist/components/feedback/emojiPicker/sparkle-reaction.js +5 -0
  20. package/dist/components/feedback/emojiPicker/utils.js +1 -0
  21. package/dist/components/iconography/icon/icon.js +1 -1
  22. package/dist/components/input/responsive-text_area/responsive_text_area.js +4 -0
  23. package/dist/components/input/text_area/text_area.js +9 -1
  24. package/dist/components/media/audio-player/audio-player.js +1 -1
  25. package/dist/components/media/audio-player/progress-bar.js +4 -0
  26. package/dist/components/media/audio-playlist/playing_indicator.js +28 -0
  27. package/dist/components/media/audio-playlist/playlist-item.js +1 -1
  28. package/dist/components/media/video-player/playlist-item.js +2 -2
  29. package/dist/components/media/video-player/video.js +2 -2
  30. package/dist/components/surfaces/comment/comment.js +14 -5
  31. package/dist/components/surfaces/discuss_post/discuss_post.js +6 -6
  32. package/dist/components/surfaces/post/post.js +8 -4
  33. package/dist/emojis/64-2Q7F4PKG.png +0 -0
  34. package/dist/icons/time/hourglass.js +1 -0
  35. package/dist/index.js +1 -1
  36. package/dist/src/components/card/person/person.d.ts +4 -2
  37. package/dist/src/components/custom/help_center/help_center-auth.d.ts +7 -0
  38. package/dist/src/components/custom/help_center/help_center-customModal.d.ts +4 -0
  39. package/dist/src/components/custom/help_center/help_center-defaultArticle.d.ts +15 -0
  40. package/dist/src/components/custom/help_center/help_center-editable-content.d.ts +7 -0
  41. package/dist/src/components/custom/help_center/help_center-mainPage.d.ts +3 -0
  42. package/dist/src/components/custom/help_center/help_center-sidebar.d.ts +3 -0
  43. package/dist/src/components/custom/help_center/help_center.d.ts +13 -0
  44. package/dist/src/components/custom/help_center/help_center_articlle-list.d.ts +7 -0
  45. package/dist/src/components/custom/help_center/help_center_categoryList.d.ts +6 -0
  46. package/dist/src/components/custom/help_center/help_center_dataStore.d.ts +4 -0
  47. package/dist/src/components/custom/help_center/help_center_layout.d.ts +3 -0
  48. package/dist/src/components/custom/help_center/help_center_seedData.d.ts +2 -0
  49. package/dist/src/components/custom/help_center/help_center_sub-category.d.ts +7 -0
  50. package/dist/src/components/custom/help_center/index.d.ts +1 -0
  51. package/dist/src/components/custom/help_center/types.d.ts +124 -0
  52. package/dist/src/components/feedback/emojiPicker/constants.d.ts +17 -0
  53. package/dist/src/components/feedback/emojiPicker/emoji-picker.d.ts +8 -0
  54. package/dist/src/components/feedback/emojiPicker/emoji-reactions.d.ts +12 -0
  55. package/dist/src/components/feedback/emojiPicker/grid-mapper.d.ts +2 -0
  56. package/dist/src/components/feedback/emojiPicker/index.d.ts +3 -0
  57. package/dist/src/components/feedback/emojiPicker/sparkle-reaction.d.ts +4 -0
  58. package/dist/src/components/feedback/emojiPicker/types.d.ts +37 -0
  59. package/dist/src/components/feedback/emojiPicker/utils.d.ts +3 -0
  60. package/dist/src/components/feedback/index.d.ts +2 -0
  61. package/dist/src/components/iconography/EmojiPicker/Reaction.d.ts +9 -0
  62. package/dist/src/components/iconography/EmojiPicker/emoji-picker.d.ts +18 -0
  63. package/dist/src/components/iconography/EmojiPicker/grid-mapper.d.ts +2 -0
  64. package/dist/src/components/iconography/icon/icon.d.ts +2 -1
  65. package/dist/src/components/media/audio-player/progress-bar.d.ts +14 -0
  66. package/dist/src/components/media/audio-playlist/playing_indicator.d.ts +4 -0
  67. package/dist/src/components/media/index.d.ts +1 -0
  68. package/dist/src/components/surfaces/comment/comment.d.ts +2 -1
  69. package/dist/src/components/surfaces/post/post.d.ts +5 -1
  70. package/dist/src/emoji/sparkle-emoji.d.ts +15 -0
  71. package/dist/src/emoji/sprite-emoji.d.ts +9 -0
  72. package/dist/src/hooks/useSparkle.d.ts +12 -0
  73. package/dist/src/icons/time/hourglass.d.ts +3 -0
  74. package/dist/src/styles/globals.css +1 -1
  75. package/dist/src/utils/debounce.d.ts +1 -0
  76. package/dist/styles/output.css +1911 -0
  77. package/package.json +117 -113
@@ -0,0 +1,124 @@
1
+ /// <reference types="react" />
2
+ import { TElement } from '@udecode/plate';
3
+ import { IStyledComponent } from 'styled-components';
4
+ import { FastOmit } from 'styled-components/dist/types';
5
+ export interface Category {
6
+ id: string;
7
+ name: string;
8
+ subcategories: Subcategory[];
9
+ }
10
+ export interface Subcategory {
11
+ id: string;
12
+ name: string;
13
+ categoryId: string;
14
+ articles: Article[];
15
+ }
16
+ export interface WithPermissionProps {
17
+ role: (typeof USER_ROLES)[keyof typeof USER_ROLES];
18
+ permission: string;
19
+ }
20
+ export declare const USER_ROLES: {
21
+ readonly ADMIN: "admin";
22
+ readonly EDITOR: "editor";
23
+ readonly VIEWER: "viewer";
24
+ };
25
+ export interface User {
26
+ id: string;
27
+ email: string;
28
+ role: (typeof USER_ROLES)[keyof typeof USER_ROLES];
29
+ }
30
+ export interface Category {
31
+ id: string;
32
+ name: string;
33
+ subcategories: Subcategory[];
34
+ }
35
+ export declare enum DropdownOptions {
36
+ RENAME = "Rename",
37
+ CREATE_SUBCATEGORY = "Create Sub-Category",
38
+ DELETE_CATEGORY = "Remove the Category",
39
+ CREATE_ARTICLES = "Create Articles",
40
+ DELETE_SUBCATEGORY = "Remove"
41
+ }
42
+ export interface CustomModalProps {
43
+ title: string;
44
+ isOpen: boolean;
45
+ setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
46
+ initialValue?: string;
47
+ modalType: modalType;
48
+ submitButtonText?: string;
49
+ cancelButtonText?: string;
50
+ mainContent?: React.ReactNode;
51
+ headerContent?: React.ReactNode;
52
+ footerContent?: React.ReactNode;
53
+ onSubmit: (value: string) => void;
54
+ trigger: React.ReactNode;
55
+ }
56
+ export type modalType = 'create' | 'edit' | 'delete' | 'create-article-category' | 'edit-article' | 'edit-article-category' | 'delete-article-category' | 'edit-article-QA' | 'delete-article-QA' | 'articleQuestion';
57
+ export interface Subcategory {
58
+ id: string;
59
+ name: string;
60
+ categoryId: string;
61
+ articles: Article[];
62
+ }
63
+ export interface ArticleCategory {
64
+ id: string;
65
+ title?: string;
66
+ articleId: string;
67
+ description?: string;
68
+ questions?: ArticleQuestion[];
69
+ }
70
+ export interface ArticleQuestion {
71
+ id: string;
72
+ articleCategoryId: string;
73
+ question?: string;
74
+ answer?: TElement[];
75
+ }
76
+ export interface Article {
77
+ id: string;
78
+ title: string;
79
+ content: ArticleCategory[];
80
+ categoryId: string;
81
+ subcategoryId: string;
82
+ }
83
+ export interface HelpCenterContextValue {
84
+ categories: Category[];
85
+ isLoading: boolean;
86
+ selectedArticle: Article | null;
87
+ isNewArticle: boolean;
88
+ selectedSubcategory: Subcategory | null;
89
+ error: string | null;
90
+ userRole: (typeof USER_ROLES)[keyof typeof USER_ROLES];
91
+ breadcrumbTrail: string[];
92
+ setSelectedSubcategory: React.Dispatch<React.SetStateAction<Subcategory | null>>;
93
+ setSelectedArticle: React.Dispatch<React.SetStateAction<Article | null>>;
94
+ setIsNewArticle: React.Dispatch<React.SetStateAction<boolean>>;
95
+ setBreadcrumbTrail: React.Dispatch<React.SetStateAction<string[]>>;
96
+ addCategory: (name: string) => void;
97
+ updateCategory: (id: string, name: string) => void;
98
+ deleteCategory: (id: string) => void;
99
+ addSubcategory: (categoryId: string, name: string) => void;
100
+ addArticleCategory: (categoryId: string, subcategoryId: string, articleId: string, newCategory: Omit<ArticleCategory, 'id'>) => void;
101
+ deleteArticleQuestion: (categoryId: string, subcategoryId: string, articleId: string, articleCategoryId: string, questionId: string) => void;
102
+ deleteArticleCategory: (categoryId: string, subcategoryId: string, articleId: string, articleCategoryId: string) => void;
103
+ updateArticleCategory: (categoryId: string, subcategoryId: string, articleId: string, articleCategoryId: string, updatedCategoryName: string) => void;
104
+ addArticleQuestion: (categoryId: string, subcategoryId: string, articleId: string, articleCategoryId: string, newQuestion: Omit<ArticleQuestion, 'id'>) => void;
105
+ updateArticleQuestion: (categoryId: string, subcategoryId: string, articleId: string, articleCategoryId: string, articleQuestionId: string, updatedQuestion: Omit<ArticleQuestion, 'id'>) => void;
106
+ updateSubcategory: (categoryId: string, subcategoryId: string, name: string) => void;
107
+ deleteSubcategory: (categoryId: string, subcategoryId: string) => void;
108
+ addArticle: (categoryId: string, subcategoryId: string, title: string, content: ArticleCategory[]) => string;
109
+ updateArticle: (categoryId: string, subcategoryId: string, articleId: string, title: string, content: ArticleCategory[]) => void;
110
+ deleteArticle: (categoryId: string, subcategoryId: string, articleId: string) => void;
111
+ }
112
+ export interface HelpCenterProviderProps extends HelpCenterProps {
113
+ children: React.ReactNode;
114
+ }
115
+ export interface HelpCenterProps {
116
+ initialData: {
117
+ categories: Category[];
118
+ userRole: (typeof USER_ROLES)[keyof typeof USER_ROLES];
119
+ };
120
+ onDataChange?: (data: {
121
+ categories: Category[];
122
+ }) => void;
123
+ }
124
+ export type StyledType = IStyledComponent<'web', FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
@@ -0,0 +1,17 @@
1
+ export declare const FREQUENTLY_USED_IDS: string[];
2
+ export declare enum CategoryId {
3
+ FREQUENTLY = "frequently",
4
+ PEOPLE = "people",
5
+ NATURE = "nature",
6
+ FOODS = "foods",
7
+ ACTIVITY = "activity",
8
+ OBJECTS = "objects",
9
+ SYMBOLS = "symbols",
10
+ FLAGS = "flags"
11
+ }
12
+ export declare const CATEGORY_ICONS: Record<CategoryId, string>;
13
+ export declare const RAINBOW_COLORS: string[];
14
+ export declare const SPRITE_URL = "/emojis/64-2Q7F4PKG.png";
15
+ export declare const SPRITE_COLUMNS = 62;
16
+ export declare const TILE_SIZE = 32;
17
+ export declare const SPRITE_SIZE = 100;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export declare const CustomEmojiPicker: React.FC<{
3
+ onSelect: (emoji: Record<string, string>) => void;
4
+ onClickOutside?: () => void;
5
+ open?: boolean;
6
+ trigger?: React.ReactNode;
7
+ $pickersx?: string;
8
+ }>;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface EmojiReactionProps {
3
+ emoji: string;
4
+ isActive: boolean;
5
+ size?: number;
6
+ showSparkle?: boolean;
7
+ count?: number;
8
+ onReact: () => void;
9
+ showCount?: boolean;
10
+ }
11
+ export declare const EmojiReaction: React.FC<EmojiReactionProps>;
12
+ export {};
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const EmojiGridMapper: React.FC;
@@ -0,0 +1,3 @@
1
+ export { CustomEmojiPicker } from './emoji-picker';
2
+ export { EmojiReaction } from './emoji-reactions';
3
+ export type { NormalizedEmojiType, ReactionEmojiProps } from './types';
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import './reaction-sparkle.css';
3
+ import { ReactionEmojiProps } from './types';
4
+ export declare const ReactionEmoji: React.FC<ReactionEmojiProps>;
@@ -0,0 +1,37 @@
1
+ export type NormalizedEmojiType = {
2
+ id: string;
3
+ name: string;
4
+ keywords?: string[];
5
+ skins: {
6
+ unified: string;
7
+ native: string;
8
+ }[];
9
+ coordinates?: {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ };
14
+ export interface ReactionEmojiProps {
15
+ emojiId: string;
16
+ size?: number;
17
+ sparkleOnMount?: boolean;
18
+ coordinates?: {
19
+ x: number;
20
+ y: number;
21
+ };
22
+ }
23
+ export type RawEmojiDataType = {
24
+ emojis: Record<string, NormalizedEmojiType>;
25
+ categories: {
26
+ id: string;
27
+ emojis: string[];
28
+ }[];
29
+ };
30
+ export type PreprocessedEmojiDataType = {
31
+ categories: {
32
+ [categoryId: string]: NormalizedEmojiType[];
33
+ };
34
+ emojiMap: {
35
+ [emojiId: string]: NormalizedEmojiType;
36
+ };
37
+ };
@@ -0,0 +1,3 @@
1
+ import { NormalizedEmojiType, PreprocessedEmojiDataType, RawEmojiDataType } from './types';
2
+ export declare function preprocessEmojiData(rawData: RawEmojiDataType, FREQUENTLY_USED_IDS: string[]): PreprocessedEmojiDataType;
3
+ export declare function buildNativeEmojiMap(emojis: Record<string, NormalizedEmojiType>): Record<string, NormalizedEmojiType>;
@@ -14,3 +14,5 @@ export { Tooltip } from './tooltip';
14
14
  export type { TooltipProps } from './tooltip';
15
15
  export { AnimatedToast } from './animated_toast';
16
16
  export type { AnimatedToastProps } from './animated_toast';
17
+ export { CustomEmojiPicker } from './emojiPicker';
18
+ export type { NormalizedEmojiType } from './emojiPicker';
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import './reaction-sparkle.css';
3
+ interface RainbowReactionEmojiProps {
4
+ emojiId: string;
5
+ size?: number;
6
+ sparkleOnMount?: boolean;
7
+ }
8
+ export declare const RainbowReactionEmoji: React.FC<RainbowReactionEmojiProps>;
9
+ export {};
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ type NormalizedEmoji = {
3
+ id: string;
4
+ name: string;
5
+ keywords?: string[];
6
+ skins: {
7
+ unified: string;
8
+ native: string;
9
+ }[];
10
+ coordinates?: {
11
+ x: number;
12
+ y: number;
13
+ };
14
+ };
15
+ export declare const CustomEmojiPicker: React.FC<{
16
+ onSelect: (emoji: NormalizedEmoji) => void;
17
+ }>;
18
+ export {};
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const EmojiGridMapper: React.FC;
@@ -8,6 +8,7 @@ export interface IconProps extends NativeProps {
8
8
  color?: (typeof COLORS)[number];
9
9
  size?: 16 | 20 | 24 | 32 | 40;
10
10
  sx?: string;
11
+ viewBox?: string;
11
12
  }
12
- export declare const Icon: ({ as, children, color, size, sx, ...rest }: IconProps) => React.JSX.Element;
13
+ export declare const Icon: ({ as, children, color, size, sx, viewBox, ...rest }: IconProps) => React.JSX.Element;
13
14
  export {};
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface AudioProgressBarProps {
3
+ /**
4
+ * @param duration the total duration of the audio media in seconds
5
+ * */
6
+ duration: number;
7
+ /**
8
+ * @param progress the amount of the audio media listened to
9
+ * */
10
+ progress: number;
11
+ onSeek: (percent: number) => void;
12
+ }
13
+ export declare const AudioProgressBar: ({ duration, progress, onSeek, }: AudioProgressBarProps) => React.JSX.Element;
14
+ export {};
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const NowPlaying: ({ sx }: {
3
+ sx?: string | undefined;
4
+ }) => React.JSX.Element;
@@ -8,3 +8,4 @@ export { Video } from './video';
8
8
  export type { VideoProps } from './video';
9
9
  export { VideoPlayer } from './video-player';
10
10
  export type { VideoPlayerProps } from './video-player';
11
+ export { NowPlaying } from './audio-playlist/playing_indicator';
@@ -24,5 +24,6 @@ export interface CommentProps {
24
24
  userReactions?: string[];
25
25
  userProfileUri: string;
26
26
  sx?: string;
27
+ moveButtonsToLeft?: boolean;
27
28
  }
28
- export declare const Comment: ({ avatarTooltipContent, avatarTooltipSx, content, createdDate, hasMoreReplies, id, onComment, onReact, onShowReplies, onEdit, isEditing, setIsEditing, dropdown, reactionModal, reactions, replies, userImageUri, userName, userReactions, visibilityIcon, customPlaceHolder, userProfileUri, sx, }: CommentProps) => React.JSX.Element;
29
+ export declare const Comment: ({ avatarTooltipContent, avatarTooltipSx, content, createdDate, hasMoreReplies, id, onComment, onReact, onShowReplies, onEdit, isEditing, setIsEditing, dropdown, reactionModal, reactions, replies, userImageUri, userName, userReactions, visibilityIcon, customPlaceHolder, userProfileUri, sx, moveButtonsToLeft, }: CommentProps) => React.JSX.Element;
@@ -21,7 +21,11 @@ export interface PostProps extends React.PropsWithChildren {
21
21
  imageUrl: string;
22
22
  url: string;
23
23
  };
24
+ video?: {
25
+ url: string;
26
+ thumbnail: string;
27
+ };
24
28
  onJoin?: () => void;
25
29
  monthlyMembershipPrice?: number;
26
30
  }
27
- export declare const Post: ({ actions, author, authorActive, authorHref, authorImage, avatarTooltipContent, avatarTooltipSx, children, content, createdDate, dropdown, hasComments, id, images, isPaidUser, isPaywalled, link, onJoin, monthlyMembershipPrice, }: PostProps) => React.JSX.Element;
31
+ export declare const Post: ({ actions, author, authorActive, authorHref, authorImage, avatarTooltipContent, avatarTooltipSx, children, content, createdDate, dropdown, hasComments, id, images, isPaidUser, isPaywalled, link, video, onJoin, monthlyMembershipPrice, }: PostProps) => React.JSX.Element;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ interface ClickUpStyleEmojiButtonProps {
3
+ emojiId: string;
4
+ count?: number;
5
+ size?: number;
6
+ onClick?: () => void;
7
+ }
8
+ interface ClickUpStyleEmojiButtonProps {
9
+ emojiId: string;
10
+ count?: number;
11
+ size?: number;
12
+ onClick?: () => void;
13
+ }
14
+ export declare const ClickUpStyleEmojiButton: React.FC<ClickUpStyleEmojiButtonProps>;
15
+ export {};
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface SpriteEmojiProps {
3
+ emoji: {
4
+ id: string;
5
+ };
6
+ size?: number;
7
+ }
8
+ export declare const SpriteEmoji: React.FC<SpriteEmojiProps>;
9
+ export {};
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ interface SparkleOptions {
3
+ containerRef: React.RefObject<HTMLDivElement>;
4
+ size: number;
5
+ shape?: 'star' | 'dot';
6
+ theme?: 'rainbow' | 'gold';
7
+ ringCount?: number;
8
+ sparkleCount?: number;
9
+ delay?: number;
10
+ }
11
+ export declare const useSparkle: ({ containerRef, size, shape, theme, ringCount, sparkleCount, delay, }: SparkleOptions) => void;
12
+ export {};
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { IconProps } from '../../components/iconography/icon/icon';
3
+ export declare const Hourglass: (props: IconProps) => React.JSX.Element;
@@ -1 +1 @@
1
- @tailwind base;@tailwind components;@tailwind utilities;@layer base{:root{--background:0 0% 100%;--foreground:222.2 84% 4.9%;--card:0 0% 100%;--card-foreground:222.2 84% 4.9%;--popover:0 0% 100%;--popover-foreground:222.2 84% 4.9%;--primary:222.2 47.4% 11.2%;--primary-foreground:210 40% 98%;--secondary:210 40% 96.1%;--secondary-foreground:222.2 47.4% 11.2%;--muted:210 40% 96.1%;--muted-foreground:215.4 16.3% 46.9%;--accent:210 40% 96.1%;--accent-foreground:222.2 47.4% 11.2%;--destructive:0 84.2% 60.2%;--destructive-foreground:210 40% 98%;--border:214.3 31.8% 91.4%;--input:214.3 31.8% 91.4%;--ring:222.2 84% 4.9%;--radius:0.5rem;--font-inter:Inter;--color-page-bg:#f8fafc;--color-white:#fff;--color-primary-blue-0:#003f73;--color-primary-blue-1:#005aa6;--color-primary-blue-2:#0076d9;--color-primary-blue-3:#d4e7fa;--color-primary-blue-4:#e9f2fb;--color-grey-0:#080809;--color-grey-1:#17191b;--color-grey-2:#313438;--color-grey-3:#4a4f55;--color-grey-4:#636971;--color-grey-5:#7c838d;--color-grey-6:#989da4;--color-grey-7:#b3b7bc;--color-grey-8:#d0d2d6;--color-grey-9:#eaebed;--color-grey-10:#f8f9f9;--color-red-0:#491410;--color-red-1:#5b1914;--color-red-2:#83241d;--color-red-3:#aa2f25;--color-red-4:#cf3a2e;--color-red-5:#f34638;--color-red-6:#f66e63;--color-red-7:#f8948c;--color-red-8:#fbbdb8;--color-red-9:#fee3e1;--color-red-10:#fff8f7;--color-green-0:#113a1c;--color-green-1:#154923;--color-green-2:#1f6933;--color-green-3:#288641;--color-green-4:#31a450;--color-green-5:#3cc260;--color-green-6:#66cf82;--color-green-7:#8edca3;--color-green-8:#b8e9c6;--color-green-9:#e0f6e6;--color-green-10:#f7fdf9;--color-blue-0:#0a2c48;--color-blue-1:#0c375b;--color-blue-2:#114f81;--color-blue-3:#1665a6;--color-blue-4:#1b7bcb;--color-blue-5:#2393ef;--color-blue-6:#51a9f2;--color-blue-7:#80c1f6;--color-blue-8:#b1d9f9;--color-blue-9:#ddeffc;--color-blue-10:#f6fbfe;--color-turquoise-0:#033630;--color-turquoise-1:#0b4740;--color-turquoise-2:#1a685f;--color-turquoise-3:#29877e;--color-turquoise-4:#38a89c;--color-turquoise-5:#49c7ba;--color-turquoise-6:#6fd3c8;--color-turquoise-7:#95ded7;--color-turquoise-8:#baeae5;--color-turquoise-9:#e1f6f3;--color-turquoise-10:#f5fcfb;--color-purple-0:#31153a;--color-purple-1:#3d1a49;--color-purple-2:#572567;--color-purple-3:#703086;--color-purple-4:#8a3ca5;--color-purple-5:#a349c2;--color-purple-6:#b76fcf;--color-purple-7:#ca96dc;--color-purple-8:#debeea;--color-purple-9:#f0e3f6;--color-purple-10:#fbf8fd;--color-yellow-0:#4b3b02;--color-yellow-1:#5e4a02;--color-yellow-2:#876b04;--color-yellow-3:#ad8905;--color-yellow-4:#d5a806;--color-yellow-5:#fac70a;--color-yellow-6:#fbd33d;--color-yellow-7:#fcde71;--color-yellow-8:#fdeba9;--color-yellow-9:#fef6d8;--color-yellow-10:#fffdf5;--color-orange-0:#4a2b03;--color-orange-1:#5d3604;--color-orange-2:#854d06;--color-orange-3:#ac6307;--color-orange-4:#d27909;--color-orange-5:#f7900f;--color-orange-6:#f9a742;--color-orange-7:#fbbf74;--color-orange-8:#fcd6a8;--color-orange-9:#feedd9;--color-orange-10:#fffaf5;--color-hue-pink-1:#a5199d;--color-hue-pink-2:#fed6ff;--color-hue-pink-3:#fbe7f9;--color-hue-purple-1:#584fd6;--color-hue-purple-2:#c4c1f0;--color-hue-purple-3:#f3effb;--color-hue-ocean-1:#226f91;--color-hue-ocean-2:#c1e2f0;--color-hue-ocean-3:#eff7fb;--color-hue-mint-1:#078f81;--color-hue-mint-2:#a9e4de;--color-hue-mint-3:#d8f3f0;--color-hue-blue-1:#0b5cd7;--color-hue-blue-2:#b6cff3;--color-hue-blue-3:#ecf2fc;--color-hue-orange-1:#e96d00;--color-hue-orange-2:#ffd5bd;--color-hue-orange-3:#fff2e5;--color-special-yellow-1:#efb520;--color-special-yellow-2:#fff3c7;--color-special-orange-1:#ff5722;--color-special-orange-2:#ffead2;--color-special-red-1:#f72f4d;--color-special-red-2:#feded5;--color-special-pink-1:#fb19b4;--color-special-pink-2:#fed3e1;--color-special-purple-1:#7a5bf5;--color-special-purple-2:#ece1fe;--color-special-blue-1:#6c75f7;--color-special-blue-2:#dfeaff;--color-special-turquoise-1:#24a3d0;--color-special-turquoise-2:#cff9f2;--color-special-green-1:#1ea385;--color-special-green-2:#d4fae4;--color-special-grape-1:#2fa52d;--color-special-grape-2:#e3fad6;--color-gradient-blue-1:#1d62f0;--color-gradient-blue-2:#1ad5fd;--color-gradient-teal-1:#5ac8fb;--color-gradient-teal-2:#52edc7;--color-gradient-green-1:#0cd318;--color-gradient-green-2:#87fc70;--color-gradient-spring-green-1:#09b3a1;--color-gradient-spring-green-2:#3ac15e;--color-gradient-yellow-1:#ffcd02;--color-gradient-yellow-2:#ffdb4c;--color-gradient-orange-1:#ff5e3a;--color-gradient-orange-2:#ff9500;--color-gradient-red-1:#ff2a68;--color-gradient-red-2:#ff5e3a;--color-gradient-pink-1:#c643fc;--color-gradient-pink-2:#ef4db6;--color-gradient-purple-1:#ae33e8;--color-gradient-purple-2:#5e44ff;--gradient-background-1:radial-gradient(50.49% 55.14% at 5.76% 3.88%,#d9062c 11.51%,rgba(186,24,175,0) 100%,rgba(255,0,0,0) 0),radial-gradient(50.75% 55.24% at 93.3% -5.24%,#ff7a00 6.42%,rgba(186,24,175,0) 100%,rgba(255,122,0,0) 0),linear-gradient(180deg,#b80cbf,#2d21b6);--gradient-background-2:radial-gradient(47.55% 121.02% at 24.15% 120.55%,#ff7a00 0%,rgba(186,24,175,0) 100%),radial-gradient(107.04% 116.84% at 120.44% 68.19%,#ba004b 27.09%,#ba06c8 47.64%,#0026b7 86.58%);--gradient-light:radial-gradient(39.84% 64.62% at 3.52% 96.87%,#e7f1fd 0%,rgba(232,241,254,0) 100%),radial-gradient(35.14% 65.68% at 98.89% 0%,#ece1ef 0%,rgba(236,226,240,0) 100%),linear-gradient(109.97deg,#eef9f9 4.72%,#ecf1fd 100.82%);--gradient-dark-grey:linear-gradient(360deg,#2b2b2b,#4a4a4a);--gradient-grey:linear-gradient(360deg,#898c90,#dbddde);--gradient-light-grey:linear-gradient(360deg,#d7d7d7,#f7f7f7);--extra-small:4px;--small:8px;--medium:16px;--medium-large:20px;--large:24px;--extra-large:40px;--full:80px;--elevation-1:0px 3px 3px rgba(0,0,0,.04);--elevation-2:0px 4px 8px rgba(0,0,0,.1);--elevation-3:0px 6px 10px rgba(0,0,0,.15);--elevation-4:0px 4px 10px rgba(0,0,0,.06);--elevation-5:inset 0px 2px 2px rgba(0,0,0,.12);--elevation-6:inset 0px 4px 4px rgba(0,0,0,.03);--elevation-7:0px 0px 15px rgba(0,0,0,.05);--elevation-8:0px 1px 30px rgba(0,0,0,.06);--elevation-9:0px 15px 50px rgba(0,0,0,.15);--spacing-0:4px;--spacing-1:8px;--spacing-2:16px;--spacing-3:24px;--spacing-4:32px;--spacing-5:40px;--spacing-6:48px;--spacing-7:56px;--spacing-8:64px;--spacing-9:72px;--spacing-10:80px;--spacing-11:88px;--spacing-12:96px;--spacing-13:104px;--spacing-14:112px;--spacing-15:120px}*,body{@apply bg-background text-foreground}}
1
+ @tailwind base;@tailwind components;@tailwind utilities;@layer base{:root{--background:0 0% 100%;--foreground:222.2 84% 4.9%;--card:0 0% 100%;--card-foreground:222.2 84% 4.9%;--popover:0 0% 100%;--popover-foreground:222.2 84% 4.9%;--primary:222.2 47.4% 11.2%;--primary-foreground:210 40% 98%;--secondary:210 40% 96.1%;--secondary-foreground:222.2 47.4% 11.2%;--muted:210 40% 96.1%;--muted-foreground:215.4 16.3% 46.9%;--accent:210 40% 96.1%;--accent-foreground:222.2 47.4% 11.2%;--destructive:0 84.2% 60.2%;--destructive-foreground:210 40% 98%;--border:214.3 31.8% 91.4%;--input:214.3 31.8% 91.4%;--ring:222.2 84% 4.9%;--radius:0.5rem;--font-inter:Inter;--color-page-bg:#f8fafc;--color-white:#fff;--color-primary-blue-0:#003f73;--color-primary-blue-1:#005aa6;--color-primary-blue-2:#0076d9;--color-primary-blue-3:#d4e7fa;--color-primary-blue-4:#e9f2fb;--color-grey-0:#080809;--color-grey-1:#17191b;--color-grey-2:#313438;--color-grey-3:#4a4f55;--color-grey-4:#636971;--color-grey-5:#7c838d;--color-grey-6:#989da4;--color-grey-7:#b3b7bc;--color-grey-8:#d0d2d6;--color-grey-9:#eaebed;--color-grey-10:#f8f9f9;--color-red-0:#491410;--color-red-1:#5b1914;--color-red-2:#83241d;--color-red-3:#aa2f25;--color-red-4:#cf3a2e;--color-red-5:#f34638;--color-red-6:#f66e63;--color-red-7:#f8948c;--color-red-8:#fbbdb8;--color-red-9:#fee3e1;--color-red-10:#fff8f7;--color-green-0:#113a1c;--color-green-1:#154923;--color-green-2:#1f6933;--color-green-3:#288641;--color-green-4:#31a450;--color-green-5:#3cc260;--color-green-6:#66cf82;--color-green-7:#8edca3;--color-green-8:#b8e9c6;--color-green-9:#e0f6e6;--color-green-10:#f7fdf9;--color-blue-0:#0a2c48;--color-blue-1:#0c375b;--color-blue-2:#114f81;--color-blue-3:#1665a6;--color-blue-4:#1b7bcb;--color-blue-5:#2393ef;--color-blue-6:#51a9f2;--color-blue-7:#80c1f6;--color-blue-8:#b1d9f9;--color-blue-9:#ddeffc;--color-blue-10:#f6fbfe;--color-turquoise-0:#033630;--color-turquoise-1:#0b4740;--color-turquoise-2:#1a685f;--color-turquoise-3:#29877e;--color-turquoise-4:#38a89c;--color-turquoise-5:#49c7ba;--color-turquoise-6:#6fd3c8;--color-turquoise-7:#95ded7;--color-turquoise-8:#baeae5;--color-turquoise-9:#e1f6f3;--color-turquoise-10:#f5fcfb;--color-purple-0:#31153a;--color-purple-1:#3d1a49;--color-purple-2:#572567;--color-purple-3:#703086;--color-purple-4:#8a3ca5;--color-purple-5:#a349c2;--color-purple-6:#b76fcf;--color-purple-7:#ca96dc;--color-purple-8:#debeea;--color-purple-9:#f0e3f6;--color-purple-10:#fbf8fd;--color-yellow-0:#4b3b02;--color-yellow-1:#5e4a02;--color-yellow-2:#876b04;--color-yellow-3:#ad8905;--color-yellow-4:#d5a806;--color-yellow-5:#fac70a;--color-yellow-6:#fbd33d;--color-yellow-7:#fcde71;--color-yellow-8:#fdeba9;--color-yellow-9:#fef6d8;--color-yellow-10:#fffdf5;--color-orange-0:#4a2b03;--color-orange-1:#5d3604;--color-orange-2:#854d06;--color-orange-3:#ac6307;--color-orange-4:#d27909;--color-orange-5:#f7900f;--color-orange-6:#f9a742;--color-orange-7:#fbbf74;--color-orange-8:#fcd6a8;--color-orange-9:#feedd9;--color-orange-10:#fffaf5;--color-hue-pink-1:#a5199d;--color-hue-pink-2:#fed6ff;--color-hue-pink-3:#fbe7f9;--color-hue-purple-1:#584fd6;--color-hue-purple-2:#c4c1f0;--color-hue-purple-3:#f3effb;--color-hue-ocean-1:#226f91;--color-hue-ocean-2:#c1e2f0;--color-hue-ocean-3:#eff7fb;--color-hue-mint-1:#078f81;--color-hue-mint-2:#a9e4de;--color-hue-mint-3:#d8f3f0;--color-hue-blue-1:#0b5cd7;--color-hue-blue-2:#b6cff3;--color-hue-blue-3:#ecf2fc;--color-hue-orange-1:#e96d00;--color-hue-orange-2:#ffd5bd;--color-hue-orange-3:#fff2e5;--color-special-yellow-1:#efb520;--color-special-yellow-2:#fff3c7;--color-special-orange-1:#ff5722;--color-special-orange-2:#ffead2;--color-special-red-1:#f72f4d;--color-special-red-2:#feded5;--color-special-pink-1:#fb19b4;--color-special-pink-2:#fed3e1;--color-special-purple-1:#7a5bf5;--color-special-purple-2:#ece1fe;--color-special-blue-1:#6c75f7;--color-special-blue-2:#dfeaff;--color-special-turquoise-1:#24a3d0;--color-special-turquoise-2:#cff9f2;--color-special-green-1:#1ea385;--color-special-green-2:#d4fae4;--color-special-grape-1:#2fa52d;--color-special-grape-2:#e3fad6;--color-gradient-blue-1:#1d62f0;--color-gradient-blue-2:#1ad5fd;--color-gradient-teal-1:#5ac8fb;--color-gradient-teal-2:#52edc7;--color-gradient-green-1:#0cd318;--color-gradient-green-2:#87fc70;--color-gradient-spring-green-1:#09b3a1;--color-gradient-spring-green-2:#3ac15e;--color-gradient-yellow-1:#ffcd02;--color-gradient-yellow-2:#ffdb4c;--color-gradient-orange-1:#ff5e3a;--color-gradient-orange-2:#ff9500;--color-gradient-red-1:#ff2a68;--color-gradient-red-2:#ff5e3a;--color-gradient-pink-1:#c643fc;--color-gradient-pink-2:#ef4db6;--color-gradient-purple-1:#ae33e8;--color-gradient-purple-2:#5e44ff;--gradient-background-1:radial-gradient(50.49% 55.14% at 5.76% 3.88%,#d9062c 11.51%,rgba(186,24,175,0) 100%,rgba(255,0,0,0) 0),radial-gradient(50.75% 55.24% at 93.3% -5.24%,#ff7a00 6.42%,rgba(186,24,175,0) 100%,rgba(255,122,0,0) 0),linear-gradient(180deg,#b80cbf,#2d21b6);--gradient-background-2:radial-gradient(47.55% 121.02% at 24.15% 120.55%,#ff7a00 0%,rgba(186,24,175,0) 100%),radial-gradient(107.04% 116.84% at 120.44% 68.19%,#ba004b 27.09%,#ba06c8 47.64%,#0026b7 86.58%);--gradient-light:radial-gradient(39.84% 64.62% at 3.52% 96.87%,#e7f1fd 0%,rgba(232,241,254,0) 100%),radial-gradient(35.14% 65.68% at 98.89% 0%,#ece1ef 0%,rgba(236,226,240,0) 100%),linear-gradient(109.97deg,#eef9f9 4.72%,#ecf1fd 100.82%);--gradient-dark-grey:linear-gradient(360deg,#2b2b2b,#4a4a4a);--gradient-grey:linear-gradient(360deg,#898c90,#dbddde);--gradient-light-grey:linear-gradient(360deg,#d7d7d7,#f7f7f7);--extra-small:4px;--small:8px;--medium:16px;--medium-large:20px;--large:24px;--extra-large:40px;--full:80px;--elevation-1:0px 3px 3px rgba(0,0,0,.04);--elevation-2:0px 4px 8px rgba(0,0,0,.1);--elevation-3:0px 6px 10px rgba(0,0,0,.15);--elevation-4:0px 4px 10px rgba(0,0,0,.06);--elevation-5:inset 0px 2px 2px rgba(0,0,0,.12);--elevation-6:inset 0px 4px 4px rgba(0,0,0,.03);--elevation-7:0px 0px 15px rgba(0,0,0,.05);--elevation-8:0px 1px 30px rgba(0,0,0,.06);--elevation-9:0px 15px 50px rgba(0,0,0,.15);--spacing-0:4px;--spacing-1:8px;--spacing-2:16px;--spacing-3:24px;--spacing-4:32px;--spacing-5:40px;--spacing-6:48px;--spacing-7:56px;--spacing-8:64px;--spacing-9:72px;--spacing-10:80px;--spacing-11:88px;--spacing-12:96px;--spacing-13:104px;--spacing-14:112px;--spacing-15:120px}*,body{@apply bg-background text-foreground}}.emoji-picker{background:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.08);font-family:sans-serif;max-height:320px;overflow-y:auto;padding:12px;width:300px}.emoji-picker h4{color:#555;font-size:14px;font-weight:600;margin:16px 0 8px;text-transform:capitalize}.emoji-grid{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(28px,1fr))}.emoji-btn{align-items:center;border-radius:6px;cursor:pointer;display:flex;height:28px;justify-content:center;transition:transform .2s ease;width:28px}.emoji-btn:hover{background-color:#f0f0f0;transform:scale(1.2)}.emoji-core:active{transform:scale(1.15)}@keyframes sparklePop{0%{opacity:1;transform:scale(.5)}to{opacity:0;transform:scale(1.6)}}.magic{--r:45px;display:inline-block;position:relative}.magic:before{border:var(--r) solid orange;border-radius:50%;box-sizing:border-box;content:"";height:calc(var(--r)*2);left:calc(50% - var(--r));position:absolute;top:calc(50% - var(--r));transform:scale(0);width:calc(var(--r)*2)}.magic.spark:before{border-width:0;transform:scale(1);transition:transform .5s,border-width .5s .5s}.magic:after{--c1:radial-gradient(circle,red 50%,transparent 60%);--c2:radial-gradient(circle,orange 50%,transparent 60%);background:var(--c1),var(--c1),var(--c1),var(--c1),var(--c2),var(--c2),var(--c2),var(--c2);background-position:calc(50% - var(--r)) calc(50% - var(--r)),calc(50% + var(--r)) calc(50% - var(--r)),calc(50% - var(--r)) calc(50% + var(--r)),calc(50% + var(--r)) calc(50% + var(--r)),50% calc(50% + var(--r)*1.414),calc(50% + var(--r)*1.414) 50%,calc(50% - var(--r)*1.414) 50%,50% calc(50% - var(--r)*1.414);background-repeat:no-repeat;background-size:calc(var(--r)/3) calc(var(--r)/3);content:"";height:calc(var(--r)*4);left:calc(50% - var(--r)*2);position:absolute;top:calc(50% - var(--r)*2);transform:scale(0);width:calc(var(--r)*4)}.magic.spark:after{background-size:0 0;opacity:0;transform:scale(1);transition:transform .5s .5s,opacity .4s .9s,background-size .5s .9s}.reaction-container{display:inline-block;position:relative}.reaction-flash{background:radial-gradient(circle,hsla(0,0%,100%,0) 30%,hsla(0,0%,100%,0) 100%);border-radius:50%;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}.reaction-flash.active{animation:rainbow-pulse .2s ease-out forwards}.reaction-emoji{position:relative;transition:transform .3s ease;z-index:2}.reaction-emoji.active{animation:emoji-pop .5s ease-out forwards}.sparkle-container{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:3}.sparkle{filter:drop-shadow(0 0 3px rgba(255,255,255,.8));height:10px;opacity:0;position:absolute;transform-origin:center;width:10px}.sparkle.star{clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.sparkle.dot{border-radius:50%}.sparkle:after{background:linear-gradient(135deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0) 50%,hsla(0,0%,100%,0));border-radius:inherit;bottom:0;content:"";left:0;opacity:.7;position:absolute;right:0;top:0}.sparkle-ring{border-radius:50%;left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0)}@keyframes rainbow-pulse{0%{background:radial-gradient(circle,hsla(0,0%,100%,0) 30%,hsla(0,0%,100%,0) 100%);box-shadow:0 0 0 0 hsla(0,0%,100%,0)}20%{background:radial-gradient(circle,hsla(0,0%,100%,.8) 0,rgba(255,0,0,.3) 30%,rgba(255,255,0,.2) 50%,rgba(0,255,255,.1) 70%,rgba(0,0,255,0) 100%);box-shadow:0 0 30px 5px hsla(0,0%,100%,.7)}to{background:radial-gradient(circle,hsla(0,0%,100%,0) 30%,hsla(0,0%,100%,0) 100%);box-shadow:0 0 0 0 hsla(0,0%,100%,0)}}@keyframes emoji-pop{0%{transform:scale(1)}40%{transform:scale(1.3)}70%{transform:scale(1.15)}85%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes sparkle-fly{0%{opacity:0;transform:translate(0) scale(0) rotate(0deg)}10%{opacity:1}70%{opacity:1}to{opacity:0;transform:translate(var(--tx),var(--ty)) scale(var(--scale)) rotate(var(--rotation))}}@keyframes ring-expand{0%{border-width:15px;opacity:.9;transform:translate(-50%,-50%) scale(.1)}to{border-width:1px;opacity:0;transform:translate(-50%,-50%) scale(.4)}}
@@ -0,0 +1 @@
1
+ export declare const useDebounce: <T extends (...args: any[]) => void>(callback: T, delay: number) => T;