@weing-dev/ui-kit-primitive 0.4.5 → 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.
Files changed (55) hide show
  1. package/README.md +6 -0
  2. package/dist/{Icon-DExqF865.js → Icon-DEdvzMs-.js} +1 -1
  3. package/dist/{color-B71xRiyK.js → baseColor-DYa5_IOB.js} +3 -120
  4. package/dist/calendar.js +12 -12
  5. package/dist/chart.css +1 -0
  6. package/dist/chart.d.ts +6 -2
  7. package/dist/chart.js +532 -85
  8. package/dist/color-qJrSCDan.js +155 -0
  9. package/dist/components/Calendar/Calendar.d.ts +1 -55
  10. package/dist/components/Calendar/Calendar.type.d.ts +61 -0
  11. package/dist/components/Cascader/Cascader.d.ts +2 -36
  12. package/dist/components/Cascader/Cascader.type.d.ts +37 -0
  13. package/dist/components/Chart/Chart.context.d.ts +9 -0
  14. package/dist/components/Chart/Chart.hooks.d.ts +4 -0
  15. package/dist/components/Chart/Chart.options.d.ts +24 -0
  16. package/dist/components/Chart/Chart.palette.d.ts +20 -0
  17. package/dist/components/Chart/Chart.preset.d.ts +7 -0
  18. package/dist/components/Chart/Chart.register.d.ts +1 -0
  19. package/dist/components/Chart/Chart.style.d.ts +21 -0
  20. package/dist/components/Chart/Chart.theme.d.ts +9 -0
  21. package/dist/components/Chart/Chart.type.d.ts +114 -0
  22. package/dist/components/Chart/ChartFrame.d.ts +14 -0
  23. package/dist/components/Chart/ChartRenderer.d.ts +11 -0
  24. package/dist/components/Chart/charts/BarChart.d.ts +3 -0
  25. package/dist/components/Chart/charts/DoughnutChart.d.ts +3 -0
  26. package/dist/components/Chart/charts/LineChart.d.ts +3 -0
  27. package/dist/components/Chart/charts/PieChart.d.ts +3 -0
  28. package/dist/components/Form/Dropdown/Dropdown.d.ts +1 -47
  29. package/dist/components/Form/Dropdown/Dropdown.type.d.ts +48 -0
  30. package/dist/components/Form/TextArea/TextArea.d.ts +1 -18
  31. package/dist/components/Form/TextArea/TextArea.type.d.ts +19 -0
  32. package/dist/components/Form/TextInput/TextInput.d.ts +1 -17
  33. package/dist/components/Form/TextInput/TextInput.type.d.ts +18 -0
  34. package/dist/components/Thumbnail/Thumbnail.context.d.ts +38 -3
  35. package/dist/components/Thumbnail/Thumbnail.d.ts +6 -9
  36. package/dist/components/Thumbnail/thumbnailImage.util.d.ts +13 -0
  37. package/dist/components/TimeInput/TimeInput.d.ts +1 -27
  38. package/dist/components/TimeInput/TimeInput.type.d.ts +27 -0
  39. package/dist/display.css +1 -1
  40. package/dist/display.js +2248 -2073
  41. package/dist/entry/chart.d.ts +6 -2
  42. package/dist/entry/components.d.ts +1 -2
  43. package/dist/feedback.js +2 -2
  44. package/dist/form.js +463 -462
  45. package/dist/icon.js +2 -2
  46. package/dist/index.css +1 -1
  47. package/dist/index.js +4904 -4786
  48. package/dist/index.umd.cjs +22 -22
  49. package/dist/navigation.js +41 -40
  50. package/dist/styles/color.d.ts +30 -0
  51. package/dist/video-player.js +83 -83
  52. package/docs/subpath-imports.md +80 -0
  53. package/package.json +5 -4
  54. package/dist/components/Chart/Chart.d.ts +0 -19
  55. /package/dist/components/Cascader/{Cacader.data.d.ts → Cascader.data.d.ts} +0 -0
@@ -1,54 +1,8 @@
1
1
  import { default as React } from 'react';
2
- import { DropdownProviderProps } from './Dropdown.context';
3
- import { Icon } from '../../../components/Icon/Icon';
4
- type AsProps = {
5
- isEmpty: boolean;
6
- placeholder?: string;
7
- selectedValue: string;
8
- open?: boolean;
9
- options?: {
10
- value: string;
11
- label: string;
12
- }[];
13
- variant?: "outlined" | "contained" | "text";
14
- size?: "small" | "medium" | "large";
15
- colorStyle: React.CSSProperties;
16
- iconColorStyle: (position: "left" | "right") => React.CSSProperties;
17
- handleTriggerClick?: () => void;
18
- };
19
- type TriggerProps = React.PropsWithChildren<{
20
- as?: (props: AsProps) => React.ReactNode;
21
- className?: string;
22
- variant?: "outlined" | "contained" | "text";
23
- size?: "small" | "medium" | "large";
24
- leftIcon?: React.ComponentProps<typeof Icon> | null;
25
- rightIcon?: React.ComponentProps<typeof Icon> | null;
26
- }>;
2
+ import { TriggerProps, MenuProps, ItemProps, RootProps } from './Dropdown.type';
27
3
  declare const Trigger: (props: TriggerProps) => string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
28
- type MenuRenderProps = {
29
- open: boolean;
30
- id?: string;
31
- variant?: "shadow" | "line";
32
- size?: "small" | "medium";
33
- handleTriggerClick?: () => void;
34
- };
35
- type MenuProps = {
36
- className?: string;
37
- variant?: "shadow" | "line";
38
- size?: "small" | "medium";
39
- children?: React.ReactNode | ((props: MenuRenderProps) => React.ReactNode);
40
- boundaryPadding?: number;
41
- };
42
4
  declare const Menu: (props: MenuProps) => import("react/jsx-runtime").JSX.Element | null;
43
- type ItemProps = React.PropsWithChildren<{
44
- className?: string;
45
- value: string;
46
- label?: string;
47
- variant?: "shadow" | "line";
48
- size?: "small" | "medium";
49
- }>;
50
5
  declare const Item: (props: ItemProps) => import("react/jsx-runtime").JSX.Element;
51
- type RootProps = DropdownProviderProps & Omit<React.HTMLProps<HTMLDivElement>, "onChange">;
52
6
  declare const Root: (props: RootProps) => import("react/jsx-runtime").JSX.Element;
53
7
  interface IDropdown {
54
8
  Trigger: typeof Trigger;
@@ -0,0 +1,48 @@
1
+ import { default as React } from 'react';
2
+ import { DropdownProviderProps } from './Dropdown.context';
3
+ import { Icon } from '../../../components/Icon/Icon';
4
+ export type AsProps = {
5
+ isEmpty: boolean;
6
+ placeholder?: string;
7
+ selectedValue: string;
8
+ open?: boolean;
9
+ options?: {
10
+ value: string;
11
+ label: string;
12
+ }[];
13
+ variant?: "outlined" | "contained" | "text";
14
+ size?: "small" | "medium" | "large";
15
+ colorStyle: React.CSSProperties;
16
+ iconColorStyle: (position: "left" | "right") => React.CSSProperties;
17
+ handleTriggerClick?: () => void;
18
+ };
19
+ export type TriggerProps = React.PropsWithChildren<{
20
+ as?: (props: AsProps) => React.ReactNode;
21
+ className?: string;
22
+ variant?: "outlined" | "contained" | "text";
23
+ size?: "small" | "medium" | "large";
24
+ leftIcon?: React.ComponentProps<typeof Icon> | null;
25
+ rightIcon?: React.ComponentProps<typeof Icon> | null;
26
+ }>;
27
+ export type MenuRenderProps = {
28
+ open: boolean;
29
+ id?: string;
30
+ variant?: "shadow" | "line";
31
+ size?: "small" | "medium";
32
+ handleTriggerClick?: () => void;
33
+ };
34
+ export type MenuProps = {
35
+ className?: string;
36
+ variant?: "shadow" | "line";
37
+ size?: "small" | "medium";
38
+ children?: React.ReactNode | ((props: MenuRenderProps) => React.ReactNode);
39
+ boundaryPadding?: number;
40
+ };
41
+ export type ItemProps = React.PropsWithChildren<{
42
+ className?: string;
43
+ value: string;
44
+ label?: string;
45
+ variant?: "shadow" | "line";
46
+ size?: "small" | "medium";
47
+ }>;
48
+ export type RootProps = DropdownProviderProps & Omit<React.HTMLProps<HTMLDivElement>, "onChange">;
@@ -1,28 +1,11 @@
1
1
  import { default as React } from 'react';
2
2
  import { default as HelperTextComponent } from '../../HelperText/HelperText';
3
3
  import { TextAreaProviderProps } from './TextArea.context';
4
- type TextCountProps = React.PropsWithChildren<{
5
- className?: string;
6
- }>;
4
+ import { TextCountProps, EraseProps, InputProps, LabelProps } from './TextArea.type';
7
5
  declare const TextCount: (props: TextCountProps) => import("react/jsx-runtime").JSX.Element;
8
- type EraseProps = React.PropsWithChildren<{
9
- className?: string;
10
- }>;
11
6
  declare const Erase: (props: EraseProps) => import("react/jsx-runtime").JSX.Element;
12
7
  declare const HelperText: (props: React.ComponentProps<typeof HelperTextComponent>) => import("react/jsx-runtime").JSX.Element;
13
- type InputProps = React.PropsWithChildren<React.HTMLProps<HTMLTextAreaElement>> & {
14
- wrapperClassName?: string;
15
- placeholderColor?: string;
16
- focusedColor?: string;
17
- containedBackgroundColor?: string;
18
- disabledColor?: string;
19
- maxRows?: number;
20
- };
21
8
  declare const Input: (props: InputProps) => import("react/jsx-runtime").JSX.Element;
22
- type LabelProps = React.PropsWithChildren<{
23
- className?: string;
24
- focusedColor?: string;
25
- }>;
26
9
  declare const Label: (props: LabelProps) => import("react/jsx-runtime").JSX.Element;
27
10
  declare const Root: (props: TextAreaProviderProps) => import("react/jsx-runtime").JSX.Element;
28
11
  interface ITextArea {
@@ -0,0 +1,19 @@
1
+ import { default as React } from 'react';
2
+ export type TextCountProps = React.PropsWithChildren<{
3
+ className?: string;
4
+ }>;
5
+ export type EraseProps = React.PropsWithChildren<{
6
+ className?: string;
7
+ }>;
8
+ export type InputProps = React.PropsWithChildren<React.HTMLProps<HTMLTextAreaElement>> & {
9
+ wrapperClassName?: string;
10
+ placeholderColor?: string;
11
+ focusedColor?: string;
12
+ containedBackgroundColor?: string;
13
+ disabledColor?: string;
14
+ maxRows?: number;
15
+ };
16
+ export type LabelProps = React.PropsWithChildren<{
17
+ className?: string;
18
+ focusedColor?: string;
19
+ }>;
@@ -1,26 +1,10 @@
1
1
  import { default as React } from 'react';
2
2
  import { default as HelperTextComponent } from '../../HelperText/HelperText';
3
3
  import { TextInputProviderProps } from './TextInput.context';
4
- type EraseProps = React.PropsWithChildren<{
5
- className?: string;
6
- color?: string;
7
- }>;
4
+ import { EraseProps, InputProps, LabelProps } from './TextInput.type';
8
5
  declare const Erase: (props: EraseProps) => import("react/jsx-runtime").JSX.Element;
9
- type InputProps = React.PropsWithChildren<React.HTMLProps<HTMLInputElement>> & {
10
- wrapperClassName?: string;
11
- placeholderColor?: string;
12
- focusedColor?: string;
13
- containedBackgroundColor?: string;
14
- disabledColor?: string;
15
- leftIcon?: React.ReactNode;
16
- rightIcon?: React.ReactNode;
17
- };
18
6
  declare const Input: (props: InputProps) => import("react/jsx-runtime").JSX.Element;
19
7
  declare const HelperText: (props: React.ComponentProps<typeof HelperTextComponent>) => import("react/jsx-runtime").JSX.Element;
20
- type LabelProps = React.PropsWithChildren<{
21
- className?: string;
22
- focusedColor?: string;
23
- }>;
24
8
  declare const Label: (props: LabelProps) => import("react/jsx-runtime").JSX.Element;
25
9
  declare const Root: (props: TextInputProviderProps) => import("react/jsx-runtime").JSX.Element;
26
10
  interface ITextInput {
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ export type EraseProps = React.PropsWithChildren<{
3
+ className?: string;
4
+ color?: string;
5
+ }>;
6
+ export type InputProps = React.PropsWithChildren<React.HTMLProps<HTMLInputElement>> & {
7
+ wrapperClassName?: string;
8
+ placeholderColor?: string;
9
+ focusedColor?: string;
10
+ containedBackgroundColor?: string;
11
+ disabledColor?: string;
12
+ leftIcon?: React.ReactNode;
13
+ rightIcon?: React.ReactNode;
14
+ };
15
+ export type LabelProps = React.PropsWithChildren<{
16
+ className?: string;
17
+ focusedColor?: string;
18
+ }>;
@@ -1,4 +1,5 @@
1
1
  import { default as React } from 'react';
2
+ import { StrictIconProps } from '../Icon/Icon';
2
3
  export declare const THUMBNAIL_SIZES: {
3
4
  readonly xxs: 40;
4
5
  readonly xs: 48;
@@ -10,18 +11,52 @@ export declare const THUMBNAIL_SIZES: {
10
11
  readonly xxl: 192;
11
12
  };
12
13
  export type ThumbnailSize = keyof typeof THUMBNAIL_SIZES | number;
13
- export interface ThumbnailContextType {
14
+ /** EmptyImage / ErrorImage 아이콘 기본 색상 */
15
+ export declare const THUMBNAIL_PLACEHOLDER_ICON_COLOR = "var(--Text-Disabled, #C4CDD5)";
16
+ /** RemoveButton / EditButton 아이콘 기본 색상 */
17
+ export declare const THUMBNAIL_ACTION_ICON_COLOR = "#fff";
18
+ export type ThumbnailPlaceholderConfig = {
19
+ icon?: Partial<StrictIconProps>;
20
+ };
21
+ /** Thumbnail이 Image(또는 imageComponent)에 주입하는 최소 props */
22
+ export type ThumbnailManagedImageProps = {
23
+ src: string;
24
+ alt?: string;
25
+ className?: string;
26
+ style?: React.CSSProperties;
27
+ onLoad?: () => void;
28
+ onError?: React.ReactEventHandler<HTMLImageElement>;
29
+ width?: number;
30
+ height?: number;
31
+ };
32
+ /** next/image 등 다양한 이미지 컴포넌트 주입 허용 */
33
+ export type ThumbnailImageComponent = React.ElementType;
34
+ export interface ThumbnailContextBase {
14
35
  size?: ThumbnailSize;
15
36
  aspectRatio?: string;
16
37
  variant?: "square" | "circle";
17
38
  objectFit?: "cover" | "contain";
18
39
  isReload?: boolean;
40
+ showLoadingSkeleton?: boolean;
41
+ placeholderBackground?: string;
42
+ emptyImage?: ThumbnailPlaceholderConfig;
43
+ errorImage?: ThumbnailPlaceholderConfig;
19
44
  onUpload?: (e: React.ChangeEvent<HTMLInputElement>) => void;
20
45
  onEdit?: (e: React.ChangeEvent<HTMLInputElement>, index?: number) => void;
21
46
  onRemove?: (index?: number) => void;
22
47
  }
48
+ export interface ThumbnailContextType extends ThumbnailContextBase {
49
+ imageComponent?: ThumbnailImageComponent;
50
+ }
23
51
  export declare const initialState: ThumbnailContextType;
24
52
  export declare const ThumbnailContext: React.Context<ThumbnailContextType>;
25
- export type ThumbnailProviderProps = React.PropsWithChildren<ThumbnailContextType & {
53
+ export type ThumbnailProviderProps<ImageComponent extends React.ElementType = "img"> = ThumbnailContextBase & {
54
+ imageComponent?: ImageComponent;
26
55
  className?: string;
27
- }>;
56
+ children?: React.ReactNode;
57
+ };
58
+ export type ThumbnailImageProps<ImageComponent extends React.ElementType = "img"> = {
59
+ index?: number;
60
+ children?: React.ReactNode;
61
+ } & ThumbnailManagedImageProps & Omit<React.ComponentPropsWithoutRef<ImageComponent>, keyof ThumbnailManagedImageProps | "children">;
62
+ export declare const mergeThumbnailIconProps: (defaults: StrictIconProps, overrides?: Partial<StrictIconProps>) => StrictIconProps;
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { THUMBNAIL_SIZES, ThumbnailProviderProps } from './Thumbnail.context';
2
+ import { THUMBNAIL_SIZES, ThumbnailImageComponent, ThumbnailImageProps, ThumbnailProviderProps } from './Thumbnail.context';
3
3
  import { Icon } from '../Icon/Icon';
4
4
  type RemoveButtonProps = {
5
5
  index?: number;
@@ -13,18 +13,14 @@ type EditButtonProps = {
13
13
  } & React.JSX.IntrinsicElements["div"];
14
14
  declare const EditButton: (props: EditButtonProps) => import("react/jsx-runtime").JSX.Element;
15
15
  type EmptyImageProps = {
16
- iconName?: React.ComponentProps<typeof Icon>["name"];
17
- iconSize?: number;
16
+ icon?: Partial<React.ComponentProps<typeof Icon>>;
18
17
  } & React.JSX.IntrinsicElements["div"];
19
18
  declare const EmptyImage: (props: EmptyImageProps) => import("react/jsx-runtime").JSX.Element;
20
19
  type UploadProps = React.PropsWithChildren<React.JSX.IntrinsicElements["input"]>;
21
20
  declare const Upload: (props: UploadProps) => import("react/jsx-runtime").JSX.Element;
22
- type ImageProps = React.PropsWithChildren<{
23
- index?: number;
24
- } & React.JSX.IntrinsicElements["img"]>;
25
- declare const ImageComponent: (props: ImageProps) => import("react/jsx-runtime").JSX.Element;
26
- type ThumbnailRootProps = ThumbnailProviderProps & React.JSX.IntrinsicElements["div"];
27
- declare const Root: (props: ThumbnailRootProps) => import("react/jsx-runtime").JSX.Element;
21
+ declare const ImageComponent: <ImageElement extends React.ElementType = "img">(props: ThumbnailImageProps<ImageElement>) => import("react/jsx-runtime").JSX.Element;
22
+ type ThumbnailRootProps<ImageComponent extends ThumbnailImageComponent = "img"> = ThumbnailProviderProps<ImageComponent> & React.JSX.IntrinsicElements["div"];
23
+ declare const Root: <ImageComponent extends ThumbnailImageComponent = "img">(props: ThumbnailRootProps<ImageComponent>) => import("react/jsx-runtime").JSX.Element;
28
24
  type IThumbnail = {
29
25
  Root: typeof Root;
30
26
  Image: typeof ImageComponent;
@@ -36,4 +32,5 @@ type IThumbnail = {
36
32
  };
37
33
  declare const Thumbnail: IThumbnail;
38
34
  export type { ThumbnailRootProps };
35
+ export type { ThumbnailImageProps, ThumbnailManagedImageProps, ThumbnailPlaceholderConfig, ThumbnailProviderProps, } from './Thumbnail.context';
39
36
  export default Thumbnail;
@@ -0,0 +1,13 @@
1
+ import { ThumbnailImageComponent, ThumbnailSize } from './Thumbnail.context';
2
+ export declare const isValidThumbnailSrc: (src: string | undefined) => src is string;
3
+ export declare const parseAspectRatio: (aspectRatio: string) => number;
4
+ export declare const getThumbnailPixelWidth: (size: ThumbnailSize | undefined) => number;
5
+ export declare const getThumbnailDimensions: (size: ThumbnailSize | undefined, aspectRatio: string | undefined) => {
6
+ width: number;
7
+ height: number;
8
+ };
9
+ export declare const isNativeThumbnailImage: (component: ThumbnailImageComponent | undefined) => component is undefined | "img";
10
+ export declare const syncNativeImageLoadState: (img: HTMLImageElement | null, callbacks: {
11
+ onLoaded: () => void;
12
+ onFailed: () => void;
13
+ }) => void;
@@ -1,37 +1,11 @@
1
- import { default as React } from 'react';
2
- import { TimeInputContextType } from './TimeInput.context';
3
- type InputProps = {
4
- index: number;
5
- placeholder: string;
6
- } & React.JSX.IntrinsicElements["input"];
1
+ import { InputProps, TimeRangeProps, ColonProps, SeparatorProps, HelperTextProps, InputWrapperProps, LabelProps, RootProps } from './TimeInput.type';
7
2
  declare const Input: (props: InputProps) => import("react/jsx-runtime").JSX.Element;
8
- type TimeRangeProps = React.PropsWithChildren<React.JSX.IntrinsicElements["div"]>;
9
3
  declare const TimeRange: (props: TimeRangeProps) => import("react/jsx-runtime").JSX.Element;
10
- type ColonProps = React.JSX.IntrinsicElements["span"];
11
4
  declare const Colon: (props: ColonProps) => import("react/jsx-runtime").JSX.Element;
12
- type SeparatorProps = React.JSX.IntrinsicElements["span"];
13
5
  declare const Separator: (props: SeparatorProps) => import("react/jsx-runtime").JSX.Element;
14
- type HelperTextProps = React.PropsWithChildren<{
15
- className?: string;
16
- warningColor?: string;
17
- errorColor?: string;
18
- successColor?: string;
19
- defaultColor?: string;
20
- infoColor?: string;
21
- size?: number;
22
- iconVisible?: boolean;
23
- }>;
24
6
  declare const HelperText: (props: HelperTextProps) => import("react/jsx-runtime").JSX.Element | null;
25
- type InputWrapperProps = React.PropsWithChildren<React.JSX.IntrinsicElements["div"]>;
26
7
  declare const InputWrapper: (props: InputWrapperProps) => import("react/jsx-runtime").JSX.Element;
27
- type LabelProps = React.PropsWithChildren<{
28
- className?: string;
29
- focusedColor?: string;
30
- }>;
31
8
  declare const Label: (props: LabelProps) => import("react/jsx-runtime").JSX.Element;
32
- type RootProps = React.PropsWithChildren<Omit<TimeInputContextType, "inputRefs" | "handleChange" | "handleBlur" | "handleKeyDown"> & {
33
- className?: string;
34
- }>;
35
9
  declare const Root: (props: RootProps) => import("react/jsx-runtime").JSX.Element;
36
10
  interface ITimeInput {
37
11
  Root: typeof Root;
@@ -0,0 +1,27 @@
1
+ import { default as React } from 'react';
2
+ import { TimeInputContextType } from './TimeInput.context';
3
+ export type InputProps = {
4
+ index: number;
5
+ placeholder: string;
6
+ } & React.JSX.IntrinsicElements["input"];
7
+ export type TimeRangeProps = React.PropsWithChildren<React.JSX.IntrinsicElements["div"]>;
8
+ export type ColonProps = React.JSX.IntrinsicElements["span"];
9
+ export type SeparatorProps = React.JSX.IntrinsicElements["span"];
10
+ export type HelperTextProps = React.PropsWithChildren<{
11
+ className?: string;
12
+ warningColor?: string;
13
+ errorColor?: string;
14
+ successColor?: string;
15
+ defaultColor?: string;
16
+ infoColor?: string;
17
+ size?: number;
18
+ iconVisible?: boolean;
19
+ }>;
20
+ export type InputWrapperProps = React.PropsWithChildren<React.JSX.IntrinsicElements["div"]>;
21
+ export type LabelProps = React.PropsWithChildren<{
22
+ className?: string;
23
+ focusedColor?: string;
24
+ }>;
25
+ export type RootProps = React.PropsWithChildren<Omit<TimeInputContextType, "inputRefs" | "handleChange" | "handleBlur" | "handleKeyDown"> & {
26
+ className?: string;
27
+ }>;
package/dist/display.css CHANGED
@@ -1 +1 @@
1
- @layer{._Group_e8604_2{display:flex}._GroupItem_e8604_5{margin-inline:-4px}._Item_e8604_8{--bg-color: white;--size: 40px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:hidden;-webkit-user-select:none;user-select:none;border:2px solid var(--backgroundDefault, #fff);background-color:var(--bgColor);width:var(--size);height:var(--size)}._Item_e8604_8._rounded_e8604_22{border-radius:10px}._Item_e8604_8._circle_e8604_25{border-radius:50%}._Text_e8604_28{width:inherit;height:inherit;font-size:100%;display:flex;align-items:center;justify-content:center;white-space:nowrap}._AvatarImage_e8604_37{width:inherit;height:inherit;object-fit:cover}}@layer Badge{._Wrap_r1qra_2{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px;position:relative;min-width:36px;min-height:fit-content}._Wrap_r1qra_2._square_r1qra_13{background-color:#688dee}._Wrap_r1qra_2._circle_r1qra_16{background-color:#688dee;border-radius:50%}._Badge_r1qra_20{position:absolute;top:0;right:0;box-sizing:border-box;padding:4px 6px;border-radius:50px;font-size:14px;color:#fff;transform:translate(50%,-25%);height:fit-content}._Badge_r1qra_20._dot_r1qra_32{width:12px;height:12px;border-radius:50%;padding:unset}._Badge_r1qra_20._hidden_r1qra_38{display:none}._Standalone_r1qra_41{position:relative;transform:unset}}@layer Chips{._ChipsWrapper_5cgrc_2{padding:0 12px;display:flex;flex-direction:row;align-items:center;gap:4px;background-color:var(--default-background-color, #edeff2);color:var(--default-tint-color, #000000);border:1px solid var(--default-border-color, #d9d9d9);max-width:100%}._ChipsWrapper_5cgrc_2._large_5cgrc_13{height:48px;font-weight:500;font-size:16px;line-height:26px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{font-size:18px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{font-size:12px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{line-height:30px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{line-height:26px}._ChipsWrapper_5cgrc_2._medium_5cgrc_31{height:40px;font-weight:500;font-size:14px;line-height:24px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{font-size:16px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{font-size:10px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{line-height:26px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{line-height:24px}._ChipsWrapper_5cgrc_2._small_5cgrc_49{height:32px;font-weight:500;font-size:14px;line-height:24px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{font-size:16px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{font-size:10px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{line-height:26px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{line-height:24px}._ChipsWrapper_5cgrc_2._outlined_5cgrc_67{border-radius:16px}._ChipsWrapper_5cgrc_2._round_5cgrc_70{border-radius:22px}._ChipsWrapper_5cgrc_2._round_5cgrc_70._small_5cgrc_49{border-radius:16px}._ChipsWrapper_5cgrc_2._square_5cgrc_76{border-radius:8px}._ChipsWrapper_5cgrc_2._square_5cgrc_76._small_5cgrc_49{border-radius:4px}._ChipsText_5cgrc_82{line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;width:100%}}._CommentWrapper_9wn1d_1{padding:8px;background:var(--Gray-Gray99, #f6f8fb);border-radius:4px;display:flex;flex-direction:row;align-items:flex-start;gap:8px}._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{vertical-align:top;font-weight:400;font-size:10px;line-height:14px}[data-typography=senior] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{font-size:12px}[data-typography=mobile] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{font-size:6px}[data-typography=senior] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{line-height:12px}[data-typography=mobile] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{line-height:14px}@layer Label{._Label_1xhzp_2{display:inline-flex;align-items:center;justify-content:center;width:max-content;padding-inline:6px;border-radius:6px;gap:4px;background-color:var(--background-color, rgba(255, 171, 0, .1215686275));color:var(--color, #b76e00);border:1px solid var(--border-color, transparent)}._Label_1xhzp_2._cursor_1xhzp_14{cursor:pointer}._Label_1xhzp_2._medium_1xhzp_17{height:32px;font-weight:700;font-size:14px;line-height:24px}[data-typography=senior] ._Label_1xhzp_2._medium_1xhzp_17{font-size:18px}[data-typography=mobile] ._Label_1xhzp_2._medium_1xhzp_17{font-size:10px}[data-typography=senior] ._Label_1xhzp_2._medium_1xhzp_17{line-height:30px}[data-typography=mobile] ._Label_1xhzp_2._medium_1xhzp_17{line-height:24px}._Label_1xhzp_2._small_1xhzp_35{height:24px;font-weight:700;font-size:12px;line-height:18px}[data-typography=senior] ._Label_1xhzp_2._small_1xhzp_35{font-size:14px}[data-typography=mobile] ._Label_1xhzp_2._small_1xhzp_35{font-size:8px}[data-typography=senior] ._Label_1xhzp_2._small_1xhzp_35{line-height:24px}[data-typography=mobile] ._Label_1xhzp_2._small_1xhzp_35{line-height:18px}._Label_1xhzp_2._xSmall_1xhzp_53{height:16px;font-weight:700;font-size:10px;line-height:14px}[data-typography=senior] ._Label_1xhzp_2._xSmall_1xhzp_53{font-size:12px}[data-typography=mobile] ._Label_1xhzp_2._xSmall_1xhzp_53{font-size:6px}[data-typography=senior] ._Label_1xhzp_2._xSmall_1xhzp_53{line-height:12px}[data-typography=mobile] ._Label_1xhzp_2._xSmall_1xhzp_53{line-height:14px}}._LazyImage_b5s08_1{background-repeat:no-repeat;background-size:50% 50%;background-color:#222;background-position:center center}@layer Thumbnail{._Wrapper_1ayjm_2{display:flex;align-items:center;justify-content:flex-start;height:auto;position:relative;gap:8px;-webkit-user-select:none;user-select:none}._ImageWrapper_1ayjm_11{position:relative}._Image_1ayjm_11{aspect-ratio:var(--aspectRatio);background-color:#fff;position:relative;display:block}._Image_1ayjm_11._isLoading_1ayjm_20{animation:_skeleton-loading_1ayjm_1 1s infinite alternate}._Image_1ayjm_11._square_1ayjm_23{border-radius:8px}._Image_1ayjm_11._circle_1ayjm_26{border-radius:50%}._Image_1ayjm_11._cover_1ayjm_29{object-fit:cover}._Image_1ayjm_11._contain_1ayjm_32{object-fit:contain}._UploadInput_1ayjm_35{display:none}._EmptyImage_1ayjm_38{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;flex-shrink:0;aspect-ratio:var(--aspectRatio);background-color:var(--greyGrey3, #f4f6f8);cursor:pointer}._EmptyImage_1ayjm_38._square_1ayjm_23{border-radius:8px}._EmptyImage_1ayjm_38._circle_1ayjm_26{border-radius:50%}._EmptyImage_1ayjm_38 ._Text_1ayjm_55{color:var(--textTertiary, #919eab);font-weight:400;font-size:10px;line-height:14px}[data-typography=senior] ._EmptyImage_1ayjm_38 ._Text_1ayjm_55{font-size:12px}[data-typography=mobile] ._EmptyImage_1ayjm_38 ._Text_1ayjm_55{font-size:6px}[data-typography=senior] ._EmptyImage_1ayjm_38 ._Text_1ayjm_55{line-height:12px}[data-typography=mobile] ._EmptyImage_1ayjm_38 ._Text_1ayjm_55{line-height:14px}._ErrorImage_1ayjm_73{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;flex-shrink:0;aspect-ratio:var(--aspectRatio);background-color:var(--greyGrey3, #f4f6f8);position:relative}._ErrorImage_1ayjm_73._square_1ayjm_23{border-radius:8px}._ErrorImage_1ayjm_73._circle_1ayjm_26{border-radius:50%}._EditButton_1ayjm_90{width:var(--exactSize);height:var(--exactSize);position:absolute;bottom:0;right:0;border-radius:50%;background-color:var(--greyGrey7, #637381);display:flex;align-items:center;justify-content:center;border:var(--borderWidth) solid #fff;cursor:pointer}._EditButton_1ayjm_90._square_1ayjm_23{transform:translate(var(--translate),var(--translate))}._EditButton_1ayjm_90._circle_1ayjm_26{transform:translate(4px)}._FileInput_1ayjm_110{display:none}._RemoveButton_1ayjm_113{width:var(--exactSize);height:var(--exactSize);position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;cursor:pointer}._RemoveButton_1ayjm_113._square_1ayjm_23{border-radius:0 8px 0 0;background:var(--black32, rgba(0, 0, 0, .3215686275));box-shadow:var(--z8x, 0) var(--z8y, 8px) var(--z8blur, 16px) var(--z8spread, 0px) var(--shadow12, #919eab)}._RemoveButton_1ayjm_113._circle_1ayjm_26{border-radius:50%;background-color:var(--greyGrey7, #637381);border:var(--borderWidth) solid #fff;transform:translate(4px)}}@keyframes _skeleton-loading_1ayjm_1{0%{background-color:#dcdcdc99}to{background-color:#f4f6f899}}
1
+ @layer{._Group_e8604_2{display:flex}._GroupItem_e8604_5{margin-inline:-4px}._Item_e8604_8{--bg-color: white;--size: 40px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:hidden;-webkit-user-select:none;user-select:none;border:2px solid var(--backgroundDefault, #fff);background-color:var(--bgColor);width:var(--size);height:var(--size)}._Item_e8604_8._rounded_e8604_22{border-radius:10px}._Item_e8604_8._circle_e8604_25{border-radius:50%}._Text_e8604_28{width:inherit;height:inherit;font-size:100%;display:flex;align-items:center;justify-content:center;white-space:nowrap}._AvatarImage_e8604_37{width:inherit;height:inherit;object-fit:cover}}@layer Badge{._Wrap_r1qra_2{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px;position:relative;min-width:36px;min-height:fit-content}._Wrap_r1qra_2._square_r1qra_13{background-color:#688dee}._Wrap_r1qra_2._circle_r1qra_16{background-color:#688dee;border-radius:50%}._Badge_r1qra_20{position:absolute;top:0;right:0;box-sizing:border-box;padding:4px 6px;border-radius:50px;font-size:14px;color:#fff;transform:translate(50%,-25%);height:fit-content}._Badge_r1qra_20._dot_r1qra_32{width:12px;height:12px;border-radius:50%;padding:unset}._Badge_r1qra_20._hidden_r1qra_38{display:none}._Standalone_r1qra_41{position:relative;transform:unset}}@layer Chips{._ChipsWrapper_5cgrc_2{padding:0 12px;display:flex;flex-direction:row;align-items:center;gap:4px;background-color:var(--default-background-color, #edeff2);color:var(--default-tint-color, #000000);border:1px solid var(--default-border-color, #d9d9d9);max-width:100%}._ChipsWrapper_5cgrc_2._large_5cgrc_13{height:48px;font-weight:500;font-size:16px;line-height:26px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{font-size:18px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{font-size:12px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{line-height:30px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._large_5cgrc_13{line-height:26px}._ChipsWrapper_5cgrc_2._medium_5cgrc_31{height:40px;font-weight:500;font-size:14px;line-height:24px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{font-size:16px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{font-size:10px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{line-height:26px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._medium_5cgrc_31{line-height:24px}._ChipsWrapper_5cgrc_2._small_5cgrc_49{height:32px;font-weight:500;font-size:14px;line-height:24px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{font-size:16px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{font-size:10px}[data-typography=senior] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{line-height:26px}[data-typography=mobile] ._ChipsWrapper_5cgrc_2._small_5cgrc_49{line-height:24px}._ChipsWrapper_5cgrc_2._outlined_5cgrc_67{border-radius:16px}._ChipsWrapper_5cgrc_2._round_5cgrc_70{border-radius:22px}._ChipsWrapper_5cgrc_2._round_5cgrc_70._small_5cgrc_49{border-radius:16px}._ChipsWrapper_5cgrc_2._square_5cgrc_76{border-radius:8px}._ChipsWrapper_5cgrc_2._square_5cgrc_76._small_5cgrc_49{border-radius:4px}._ChipsText_5cgrc_82{line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;width:100%}}._CommentWrapper_9wn1d_1{padding:8px;background:var(--Gray-Gray99, #f6f8fb);border-radius:4px;display:flex;flex-direction:row;align-items:flex-start;gap:8px}._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{vertical-align:top;font-weight:400;font-size:10px;line-height:14px}[data-typography=senior] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{font-size:12px}[data-typography=mobile] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{font-size:6px}[data-typography=senior] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{line-height:12px}[data-typography=mobile] ._CommentWrapper_9wn1d_1 ._Caption_9wn1d_10{line-height:14px}@layer Label{._Label_1xhzp_2{display:inline-flex;align-items:center;justify-content:center;width:max-content;padding-inline:6px;border-radius:6px;gap:4px;background-color:var(--background-color, rgba(255, 171, 0, .1215686275));color:var(--color, #b76e00);border:1px solid var(--border-color, transparent)}._Label_1xhzp_2._cursor_1xhzp_14{cursor:pointer}._Label_1xhzp_2._medium_1xhzp_17{height:32px;font-weight:700;font-size:14px;line-height:24px}[data-typography=senior] ._Label_1xhzp_2._medium_1xhzp_17{font-size:18px}[data-typography=mobile] ._Label_1xhzp_2._medium_1xhzp_17{font-size:10px}[data-typography=senior] ._Label_1xhzp_2._medium_1xhzp_17{line-height:30px}[data-typography=mobile] ._Label_1xhzp_2._medium_1xhzp_17{line-height:24px}._Label_1xhzp_2._small_1xhzp_35{height:24px;font-weight:700;font-size:12px;line-height:18px}[data-typography=senior] ._Label_1xhzp_2._small_1xhzp_35{font-size:14px}[data-typography=mobile] ._Label_1xhzp_2._small_1xhzp_35{font-size:8px}[data-typography=senior] ._Label_1xhzp_2._small_1xhzp_35{line-height:24px}[data-typography=mobile] ._Label_1xhzp_2._small_1xhzp_35{line-height:18px}._Label_1xhzp_2._xSmall_1xhzp_53{height:16px;font-weight:700;font-size:10px;line-height:14px}[data-typography=senior] ._Label_1xhzp_2._xSmall_1xhzp_53{font-size:12px}[data-typography=mobile] ._Label_1xhzp_2._xSmall_1xhzp_53{font-size:6px}[data-typography=senior] ._Label_1xhzp_2._xSmall_1xhzp_53{line-height:12px}[data-typography=mobile] ._Label_1xhzp_2._xSmall_1xhzp_53{line-height:14px}}._LazyImage_b5s08_1{background-repeat:no-repeat;background-size:50% 50%;background-color:#222;background-position:center center}@layer Thumbnail{._Wrapper_1n0fd_2{display:flex;align-items:center;justify-content:flex-start;height:auto;position:relative;gap:8px;-webkit-user-select:none;user-select:none}._ImageWrapper_1n0fd_11{position:relative;display:inline-block;line-height:0}._LoadingSkeleton_1n0fd_16{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;aspect-ratio:var(--aspectRatio);pointer-events:none;animation:_skeleton-loading_1n0fd_1 1s infinite alternate}._LoadingSkeleton_1n0fd_16._square_1n0fd_24{border-radius:8px}._LoadingSkeleton_1n0fd_16._circle_1n0fd_27{border-radius:50%}._Image_1n0fd_11{aspect-ratio:var(--aspectRatio);background-color:#fff;position:relative;display:block;opacity:0;transition:opacity .15s ease}._Image_1n0fd_11._isLoaded_1n0fd_38{opacity:1}._Image_1n0fd_11._square_1n0fd_24{border-radius:8px}._Image_1n0fd_11._circle_1n0fd_27{border-radius:50%}._Image_1n0fd_11._cover_1n0fd_47{object-fit:cover}._Image_1n0fd_11._contain_1n0fd_50{object-fit:contain}._UploadInput_1n0fd_53{display:none}._EmptyImage_1n0fd_56{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;flex-shrink:0;aspect-ratio:var(--aspectRatio);background-color:var(--thumbnailPlaceholderBg, var(--greyGrey3, #f4f6f8));cursor:pointer}._EmptyImage_1n0fd_56._square_1n0fd_24{border-radius:8px}._EmptyImage_1n0fd_56._circle_1n0fd_27{border-radius:50%}._EmptyImage_1n0fd_56 ._Text_1n0fd_73{color:var(--textTertiary, #919eab);font-weight:400;font-size:10px;line-height:14px}[data-typography=senior] ._EmptyImage_1n0fd_56 ._Text_1n0fd_73{font-size:12px}[data-typography=mobile] ._EmptyImage_1n0fd_56 ._Text_1n0fd_73{font-size:6px}[data-typography=senior] ._EmptyImage_1n0fd_56 ._Text_1n0fd_73{line-height:12px}[data-typography=mobile] ._EmptyImage_1n0fd_56 ._Text_1n0fd_73{line-height:14px}._ErrorImage_1n0fd_91{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;flex-shrink:0;aspect-ratio:var(--aspectRatio);background-color:var(--thumbnailPlaceholderBg, var(--greyGrey3, #f4f6f8));position:relative}._ErrorImage_1n0fd_91._square_1n0fd_24{border-radius:8px}._ErrorImage_1n0fd_91._circle_1n0fd_27{border-radius:50%}._EditButton_1n0fd_108{width:var(--exactSize);height:var(--exactSize);position:absolute;bottom:0;right:0;border-radius:50%;background-color:var(--greyGrey7, #637381);display:flex;align-items:center;justify-content:center;border:var(--borderWidth) solid #fff;cursor:pointer}._EditButton_1n0fd_108._square_1n0fd_24{transform:translate(var(--translate),var(--translate))}._EditButton_1n0fd_108._circle_1n0fd_27{transform:translate(4px)}._FileInput_1n0fd_128{display:none}._RemoveButton_1n0fd_131{width:var(--exactSize);height:var(--exactSize);position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;cursor:pointer}._RemoveButton_1n0fd_131._square_1n0fd_24{border-radius:0 8px 0 0;background:var(--black32, rgba(0, 0, 0, .3215686275));box-shadow:var(--z8x, 0) var(--z8y, 8px) var(--z8blur, 16px) var(--z8spread, 0px) var(--shadow12, #919eab)}._RemoveButton_1n0fd_131._circle_1n0fd_27{border-radius:50%;background-color:var(--greyGrey7, #637381);border:var(--borderWidth) solid #fff;transform:translate(4px)}}@keyframes _skeleton-loading_1n0fd_1{0%{background-color:#dcdcdc99}to{background-color:#f4f6f899}}