@0xsquid/ui 0.27.0 → 0.27.1
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/cjs/index.js +962 -792
- package/dist/cjs/types/components/badges/IconLabel.d.ts +2 -2
- package/dist/cjs/types/components/badges/Image.d.ts +9 -0
- package/dist/cjs/types/components/badges/index.d.ts +1 -1
- package/dist/cjs/types/components/buttons/IconButton.d.ts +1 -1
- package/dist/cjs/types/components/controls/Switch.d.ts +4 -3
- package/dist/cjs/types/components/icons/Arrow.d.ts +4 -1
- package/dist/cjs/types/components/icons/Clock.d.ts +1 -1
- package/dist/cjs/types/components/icons/Coins.d.ts +5 -1
- package/dist/cjs/types/components/icons/Generic.d.ts +40 -0
- package/dist/cjs/types/components/icons/Search.d.ts +4 -1
- package/dist/cjs/types/components/icons/index.d.ts +1 -0
- package/dist/cjs/types/components/layout/DropdownMenu.d.ts +6 -3
- package/dist/cjs/types/components/layout/Menu.d.ts +2 -2
- package/dist/cjs/types/components/lists/DropdownMenuItem.d.ts +17 -2
- package/dist/cjs/types/components/lists/DropdownMenuTitle.d.ts +3 -0
- package/dist/cjs/types/components/lists/HistoryItem.d.ts +2 -3
- package/dist/cjs/types/components/lists/ListItem.d.ts +5 -4
- package/dist/cjs/types/components/lists/index.d.ts +1 -0
- package/dist/cjs/types/hooks/useDropdownMenu.d.ts +7 -3
- package/dist/cjs/types/stories/badges/ImageIcon.stories.d.ts +2 -2
- package/dist/cjs/types/stories/layout/DropdownMenu.stories.d.ts +4 -1
- package/dist/cjs/types/stories/lists/DropdownMenuItem.stories.d.ts +7 -2
- package/dist/cjs/types/stories/lists/DropdownMenuTitle.stories.d.ts +6 -0
- package/dist/cjs/types/stories/lists/HistoryItem.stories.d.ts +1 -0
- package/dist/cjs/types/types/components.d.ts +2 -2
- package/dist/cjs/types/types/index.d.ts +1 -0
- package/dist/cjs/types/types/utils.d.ts +11 -0
- package/dist/esm/index.js +949 -791
- package/dist/esm/types/components/badges/IconLabel.d.ts +2 -2
- package/dist/esm/types/components/badges/Image.d.ts +9 -0
- package/dist/esm/types/components/badges/index.d.ts +1 -1
- package/dist/esm/types/components/buttons/IconButton.d.ts +1 -1
- package/dist/esm/types/components/controls/Switch.d.ts +4 -3
- package/dist/esm/types/components/icons/Arrow.d.ts +4 -1
- package/dist/esm/types/components/icons/Clock.d.ts +1 -1
- package/dist/esm/types/components/icons/Coins.d.ts +5 -1
- package/dist/esm/types/components/icons/Generic.d.ts +40 -0
- package/dist/esm/types/components/icons/Search.d.ts +4 -1
- package/dist/esm/types/components/icons/index.d.ts +1 -0
- package/dist/esm/types/components/layout/DropdownMenu.d.ts +6 -3
- package/dist/esm/types/components/layout/Menu.d.ts +2 -2
- package/dist/esm/types/components/lists/DropdownMenuItem.d.ts +17 -2
- package/dist/esm/types/components/lists/DropdownMenuTitle.d.ts +3 -0
- package/dist/esm/types/components/lists/HistoryItem.d.ts +2 -3
- package/dist/esm/types/components/lists/ListItem.d.ts +5 -4
- package/dist/esm/types/components/lists/index.d.ts +1 -0
- package/dist/esm/types/hooks/useDropdownMenu.d.ts +7 -3
- package/dist/esm/types/stories/badges/ImageIcon.stories.d.ts +2 -2
- package/dist/esm/types/stories/layout/DropdownMenu.stories.d.ts +4 -1
- package/dist/esm/types/stories/lists/DropdownMenuItem.stories.d.ts +7 -2
- package/dist/esm/types/stories/lists/DropdownMenuTitle.stories.d.ts +6 -0
- package/dist/esm/types/stories/lists/HistoryItem.stories.d.ts +1 -0
- package/dist/esm/types/types/components.d.ts +2 -2
- package/dist/esm/types/types/index.d.ts +1 -0
- package/dist/esm/types/types/utils.d.ts +11 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +818 -728
- package/package.json +1 -1
- package/dist/cjs/types/components/badges/ImageIcon.d.ts +0 -9
- package/dist/esm/types/components/badges/ImageIcon.d.ts +0 -9
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { ImageVariant } from "../../types/components";
|
|
3
3
|
interface IconLabelProps {
|
|
4
4
|
isLoading?: boolean;
|
|
5
5
|
src?: string;
|
|
6
6
|
children?: ReactNode;
|
|
7
|
-
variant?:
|
|
7
|
+
variant?: ImageVariant;
|
|
8
8
|
}
|
|
9
9
|
export declare function IconLabel({ src, children, variant }: IconLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ImageSize, ImageVariant } from "../../types/components";
|
|
2
|
+
interface ImageProps {
|
|
3
|
+
src?: string;
|
|
4
|
+
variant?: ImageVariant;
|
|
5
|
+
size?: ImageSize;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function Image({ src, variant, size, className: propsClassName, }: ImageProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
interface IconButtonProps extends React.ComponentProps<"button"> {
|
|
3
3
|
icon: React.ReactNode;
|
|
4
4
|
}
|
|
5
|
-
export declare const IconButton: (
|
|
5
|
+
export declare const IconButton: import("react").ForwardRefExoticComponent<Omit<IconButtonProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
6
6
|
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { SwitchSize } from "../../types/components";
|
|
2
|
-
interface SwitchProps {
|
|
3
|
+
export interface SwitchProps {
|
|
3
4
|
checked?: boolean;
|
|
4
5
|
onChange?: (checked: boolean) => void;
|
|
5
6
|
size: SwitchSize;
|
|
6
7
|
disabled?: boolean;
|
|
8
|
+
inputProps?: React.ComponentProps<"input">;
|
|
7
9
|
}
|
|
8
|
-
export declare function Switch({ checked, onChange, size, disabled, }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
export {};
|
|
10
|
+
export declare function Switch({ checked, onChange, size, disabled, inputProps, }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -20,7 +20,10 @@ export declare function ChevronLargeRightIcon({ size, className, }: {
|
|
|
20
20
|
size?: string;
|
|
21
21
|
className?: string;
|
|
22
22
|
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
-
export declare function ChevronRightSmallIcon(
|
|
23
|
+
export declare function ChevronRightSmallIcon({ className, size, }: {
|
|
24
|
+
className?: string;
|
|
25
|
+
size?: string;
|
|
26
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
24
27
|
export declare function ArrowLeftIcon({ className, size, }: {
|
|
25
28
|
className?: string;
|
|
26
29
|
size?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare function CoinsIcon(): import("react/jsx-runtime").JSX.Element;
|
|
2
2
|
export declare function CoinsAddIcon(): import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function DollarOutlinedIcon({ className, size, }: {
|
|
4
4
|
className?: string;
|
|
5
5
|
size?: string;
|
|
6
6
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,3 +8,7 @@ export declare function StocksIcon({ size, className, }: {
|
|
|
8
8
|
size?: string;
|
|
9
9
|
className?: string;
|
|
10
10
|
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function DollarSolidIcon({ size, className, }: {
|
|
12
|
+
size?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare function GhostIcon({ size, className, }: {
|
|
2
|
+
size?: string;
|
|
3
|
+
className?: string;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function SettingsSliderIcon({ size, className, }: {
|
|
6
|
+
size?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function EyeOpenIcon({ size, className, }: {
|
|
10
|
+
size?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function BellAlarmIcon({ size, className, }: {
|
|
14
|
+
size?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function LimitIcon({ size, className, }: {
|
|
18
|
+
size?: string;
|
|
19
|
+
className?: string;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function PoopIcon({ size, className, }: {
|
|
22
|
+
size?: string;
|
|
23
|
+
className?: string;
|
|
24
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export declare function CatSquareIcon({ size, className, }: {
|
|
26
|
+
size?: string;
|
|
27
|
+
className?: string;
|
|
28
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare function FilterAscendingIcon({ size, className, }: {
|
|
30
|
+
size?: string;
|
|
31
|
+
className?: string;
|
|
32
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function ImageIcon({ size, className, }: {
|
|
34
|
+
size?: string;
|
|
35
|
+
className?: string;
|
|
36
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
export declare function FilterTimelineIcon({ size, className, }: {
|
|
38
|
+
size?: string;
|
|
39
|
+
className?: string;
|
|
40
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { DropdownMenuItemProps } from "../lists";
|
|
3
2
|
interface DropdownMenuProps {
|
|
4
3
|
dropdownRef?: React.RefObject<HTMLDivElement>;
|
|
5
4
|
menuRef?: React.RefObject<HTMLDivElement>;
|
|
6
|
-
items: DropdownMenuItemProps[];
|
|
7
5
|
className?: string;
|
|
8
6
|
isHidden?: boolean;
|
|
9
7
|
listClassName?: string;
|
|
8
|
+
containerClassName?: string;
|
|
9
|
+
containerRef?: React.RefObject<HTMLDivElement>;
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
contentWrapperProps?: React.ComponentProps<"div">;
|
|
12
|
+
menuContentClassName?: string;
|
|
10
13
|
}
|
|
11
|
-
export declare function DropdownMenu({ dropdownRef,
|
|
14
|
+
export declare function DropdownMenu({ dropdownRef, className, menuRef, isHidden, listClassName, containerClassName, children, contentWrapperProps, menuContentClassName, }: DropdownMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
12
15
|
export {};
|
|
@@ -5,7 +5,7 @@ interface MenuProps extends React.ComponentProps<"div"> {
|
|
|
5
5
|
contentClassName?: string;
|
|
6
6
|
rounded?: Rounded;
|
|
7
7
|
menuRef?: React.RefObject<HTMLDivElement>;
|
|
8
|
-
|
|
8
|
+
contentWrapperProps?: React.ComponentProps<"div">;
|
|
9
9
|
}
|
|
10
|
-
export declare function Menu({ children, containerClassName, contentClassName, rounded, menuRef,
|
|
10
|
+
export declare function Menu({ children, containerClassName, contentClassName, rounded, menuRef, contentWrapperProps, ...props }: MenuProps): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
export {};
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { AllOrNone } from "../../types";
|
|
3
|
+
import { SwitchProps } from "../controls";
|
|
4
|
+
interface DropdownMenuItemControl extends Omit<SwitchProps, "size"> {
|
|
5
|
+
type: "switch";
|
|
6
|
+
}
|
|
2
7
|
export interface DropdownMenuItemProps {
|
|
3
8
|
label: string;
|
|
4
9
|
labelClassName?: string;
|
|
5
10
|
imageUrl?: string;
|
|
6
11
|
icon?: React.ReactNode;
|
|
7
|
-
onClick?: () => void;
|
|
12
|
+
onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
8
13
|
link?: string;
|
|
14
|
+
control?: DropdownMenuItemControl;
|
|
15
|
+
detail?: React.ReactNode;
|
|
16
|
+
isSelected?: boolean;
|
|
17
|
+
itemRef?: React.RefObject<HTMLLIElement>;
|
|
18
|
+
children?: React.ReactNode;
|
|
19
|
+
contentRef?: React.RefObject<HTMLButtonElement>;
|
|
9
20
|
}
|
|
10
|
-
export declare function DropdownMenuItem(
|
|
21
|
+
export declare function DropdownMenuItem(props: DropdownMenuItemProps & AllOrNone<{
|
|
22
|
+
submenu: React.ReactNode;
|
|
23
|
+
containerRef: React.RefObject<HTMLDivElement>;
|
|
24
|
+
}>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { HistoryItemStatus } from "../../types/components";
|
|
3
|
-
import { DropdownMenuItemProps } from "./DropdownMenuItem";
|
|
4
3
|
interface HistoryItemProps {
|
|
5
4
|
firstImageUrl: string;
|
|
6
5
|
secondImageUrl: string;
|
|
@@ -10,10 +9,10 @@ interface HistoryItemProps {
|
|
|
10
9
|
dateCompleted: string;
|
|
11
10
|
fromAmount: string;
|
|
12
11
|
toAmount: string;
|
|
13
|
-
dropdownMenuItems?: DropdownMenuItemProps[];
|
|
14
12
|
itemsContainerRef?: React.RefObject<HTMLElement>;
|
|
15
13
|
onClick?: () => void;
|
|
16
14
|
warningLabel?: string;
|
|
15
|
+
dropdownMenuContent?: React.ReactNode;
|
|
17
16
|
}
|
|
18
|
-
export declare function HistoryItem({ firstImageUrl, secondImageUrl, dateCompleted, fromAmount, fromLabel, toAmount, toLabel,
|
|
17
|
+
export declare function HistoryItem({ firstImageUrl, secondImageUrl, dateCompleted, fromAmount, fromLabel, toAmount, toLabel, dropdownMenuContent, itemsContainerRef, status, warningLabel, onClick, }: HistoryItemProps): import("react/jsx-runtime").JSX.Element;
|
|
19
18
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { DropdownMenuItemProps } from "./DropdownMenuItem";
|
|
3
2
|
interface ListItemProps extends React.HTMLAttributes<HTMLButtonElement> {
|
|
4
3
|
itemTitle: string | React.ReactNode;
|
|
5
4
|
mainImageUrl?: string;
|
|
@@ -23,10 +22,12 @@ interface ListItemProps extends React.HTMLAttributes<HTMLButtonElement> {
|
|
|
23
22
|
containerProps?: React.HTMLAttributes<HTMLLIElement>;
|
|
24
23
|
compactOnMobile?: boolean;
|
|
25
24
|
extraPadding?: boolean;
|
|
26
|
-
|
|
25
|
+
dropdownMenuContent?: React.ReactNode;
|
|
27
26
|
itemsContainerRef?: React.RefObject<HTMLElement>;
|
|
28
27
|
}
|
|
29
28
|
type ListItemSize = "small" | "large";
|
|
30
|
-
export declare function ListItem({ itemTitle, mainImageUrl, subtitle, subtitleOnHover, detail, icon, secondaryImageUrl, placeholderImageUrl, size, mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly, rounded, detailButtonClassName, loading, containerProps, compactOnMobile, extraPadding, itemsContainerRef,
|
|
31
|
-
export declare const ListItemActionsButton: import("react").ForwardRefExoticComponent<Omit<import("react").
|
|
29
|
+
export declare function ListItem({ itemTitle, mainImageUrl, subtitle, subtitleOnHover, detail, icon, secondaryImageUrl, placeholderImageUrl, size, mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly, rounded, detailButtonClassName, loading, containerProps, compactOnMobile, extraPadding, itemsContainerRef, dropdownMenuContent, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare const ListItemActionsButton: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
31
|
+
isActive?: boolean | undefined;
|
|
32
|
+
}, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
32
33
|
export {};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type DropdownPosition = "top" | "bottom" | "center";
|
|
3
|
+
export type DropdownStyles = {
|
|
4
|
+
position: DropdownPosition;
|
|
5
|
+
maxHeight: number | null;
|
|
6
|
+
};
|
|
3
7
|
interface UseDropdownMenuParams {
|
|
4
8
|
initialIsModalOpen?: boolean;
|
|
5
9
|
itemsContainerRef?: React.RefObject<HTMLElement>;
|
|
@@ -10,7 +14,7 @@ export declare function useDropdownMenu(props?: UseDropdownMenuParams): {
|
|
|
10
14
|
closeDropdown: () => void;
|
|
11
15
|
dropdownRef: React.RefObject<HTMLDivElement>;
|
|
12
16
|
openDropdownButtonRef: React.RefObject<HTMLButtonElement>;
|
|
13
|
-
|
|
17
|
+
dropdownStyles: DropdownStyles | null;
|
|
14
18
|
itemRef: React.RefObject<HTMLLIElement>;
|
|
15
19
|
menuRef: React.RefObject<HTMLDivElement>;
|
|
16
20
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
-
import {
|
|
3
|
-
declare const meta: Meta<typeof
|
|
2
|
+
import { Image } from "../../components/badges/Image";
|
|
3
|
+
declare const meta: Meta<typeof Image>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof meta>;
|
|
6
6
|
export declare const Square: Story;
|
|
@@ -3,4 +3,7 @@ import { DropdownMenu } from "../../components/layout/DropdownMenu";
|
|
|
3
3
|
declare const meta: Meta<typeof DropdownMenu>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const Images: Story;
|
|
7
|
+
export declare const Icons: Story;
|
|
8
|
+
export declare const DetailsControlsAndLinks: Story;
|
|
9
|
+
export declare const SubMenu: Story;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
-
import { DropdownMenuItem } from "../../components/lists/DropdownMenuItem";
|
|
2
|
+
import { DropdownMenuItem, DropdownMenuItemProps } from "../../components/lists/DropdownMenuItem";
|
|
3
3
|
declare const meta: Meta<typeof DropdownMenuItem>;
|
|
4
4
|
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta
|
|
5
|
+
type Story = Omit<StoryObj<typeof meta>, "args"> & {
|
|
6
|
+
args: DropdownMenuItemProps;
|
|
7
|
+
};
|
|
6
8
|
export declare const Image: Story;
|
|
7
9
|
export declare const Icon: Story;
|
|
8
10
|
export declare const Link: Story;
|
|
11
|
+
export declare const SwitchControl: Story;
|
|
12
|
+
export declare const Detail: Story;
|
|
13
|
+
export declare const Selected: Story;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { DropdownMenuTitle } from "../../components/lists/DropdownMenuTitle";
|
|
3
|
+
declare const meta: Meta<typeof DropdownMenuTitle>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
@@ -35,8 +35,8 @@ export type InputMode = "token" | "price";
|
|
|
35
35
|
export type TransactionStateVariant = "full" | "compact" | "small";
|
|
36
36
|
export type TokenPairVariant = "horizontal" | "vertical";
|
|
37
37
|
export type TokenPairSize = "small" | "medium";
|
|
38
|
-
export type
|
|
39
|
-
export type
|
|
38
|
+
export type ImageVariant = "square" | "round" | "proportional";
|
|
39
|
+
export type ImageSize = "small" | "medium" | "large" | "xlarge";
|
|
40
40
|
export type ChainTypeFilter = "source" | "destination";
|
|
41
41
|
export type StatusFilter = "success" | "ongoing" | "error";
|
|
42
42
|
export type AssetsButtonVariant = "primary" | "accent";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility type to allow for a type to be either all of the properties of another type, or none of them
|
|
3
|
+
* @example
|
|
4
|
+
* type Person = { age: number } & AllOrNone<{ name: string, lastName: string }>
|
|
5
|
+
* const person: Person = { age: 30 } // ok
|
|
6
|
+
* const person: Person = { age: 30, name: "John" } // error, requires lastName
|
|
7
|
+
* const person: Person = { age: 30, name: "John", lastName: "Doe" } // ok, all properties are present
|
|
8
|
+
*/
|
|
9
|
+
export type AllOrNone<T> = T | {
|
|
10
|
+
[K in keyof T]?: never;
|
|
11
|
+
};
|