@cystackapp/ui 1.4.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +77 -47
- package/dist/assets/background-pattern-grid.svg.js +7 -0
- package/dist/assets/empty-cloud.svg.js +5 -0
- package/dist/components/accordion/Accordion.d.ts +20 -0
- package/dist/components/accordion/Accordion.js +36 -0
- package/dist/components/accordion/AccordionTestStory.d.ts +3 -0
- package/dist/components/alert/Alert.d.ts +15 -0
- package/dist/components/alert/Alert.js +54 -0
- package/dist/components/avatar/Avatar.d.ts +13 -0
- package/dist/components/avatar/Avatar.js +64 -0
- package/dist/components/background-pattern/BackgroundPatternGrid.d.ts +1 -0
- package/dist/components/background-pattern/BackgroundPatternGrid.js +6 -0
- package/dist/components/badge/Badge.d.ts +1 -1
- package/dist/components/badge/Badge.js +3 -3
- package/dist/components/badge/BadgeTestStory.d.ts +1 -1
- package/dist/components/badge/variants/BadgeMore.d.ts +1 -1
- package/dist/components/badge/variants/BadgeMoreTestStory.d.ts +1 -1
- package/dist/components/badge/variants/BadgeTag.d.ts +1 -1
- package/dist/components/badge/variants/BadgeTag.js +1 -1
- package/dist/components/banner/Banner.d.ts +9 -0
- package/dist/components/banner/Banner.js +21 -0
- package/dist/components/breadcrumb/Breadcrumb.d.ts +13 -0
- package/dist/components/breadcrumb/Breadcrumb.js +36 -0
- package/dist/components/button/Button.d.ts +21 -0
- package/dist/components/button/Button.js +49 -0
- package/dist/components/button/ButtonLoader.d.ts +7 -0
- package/dist/components/button/ButtonLoader.js +44 -0
- package/dist/components/button/ButtonTestStory.d.ts +5 -0
- package/dist/components/button/button-variants.d.ts +13 -0
- package/dist/components/button/button-variants.js +58 -0
- package/dist/components/card/Card.d.ts +91 -0
- package/dist/components/card/Card.js +56 -0
- package/dist/components/card/Card.stories-ct.d.ts +1 -0
- package/dist/components/card/CardBody.d.ts +9 -0
- package/dist/components/card/CardBody.js +16 -0
- package/dist/components/card/CardHeader.d.ts +15 -0
- package/dist/components/card/CardHeader.js +79 -0
- package/dist/components/card/types.d.ts +1 -0
- package/dist/components/chart/chart-legend/ChartLegend.d.ts +38 -0
- package/dist/components/chart/chart-legend/ChartLegend.js +57 -0
- package/dist/components/chart/chart-legend/ChartLegendItem.d.ts +19 -0
- package/dist/components/chart/chart-legend/ChartLegendItem.js +30 -0
- package/dist/components/chart/chart-legend/types.d.ts +49 -0
- package/dist/components/chart/donut-chart/DonutChart.d.ts +55 -0
- package/dist/components/chart/donut-chart/DonutChart.js +110 -0
- package/dist/components/chart/donut-chart/DonutSegments.d.ts +25 -0
- package/dist/components/chart/donut-chart/DonutSegments.js +51 -0
- package/dist/components/chart/donut-chart/donut-tooltip.d.ts +20 -0
- package/dist/components/chart/donut-chart/donut-tooltip.js +37 -0
- package/dist/components/chart/types.d.ts +8 -0
- package/dist/components/checkbox/Checkbox.d.ts +6 -0
- package/dist/components/checkbox/Checkbox.js +72 -0
- package/dist/components/checkbox/CheckboxTestStory.d.ts +7 -0
- package/dist/components/collapsible/Collapsible.d.ts +21 -0
- package/dist/components/collapsible/Collapsible.js +50 -0
- package/dist/components/combobox/Combobox.d.ts +1 -1
- package/dist/components/divider/Divider.d.ts +9 -0
- package/dist/components/divider/Divider.js +28 -0
- package/dist/components/drawer/Drawer.d.ts +8 -0
- package/dist/components/drawer/Drawer.js +68 -0
- package/dist/components/dropdown/Dropdown.d.ts +45 -0
- package/dist/components/dropdown/Dropdown.js +133 -0
- package/dist/components/dropdown/DropdownMenu.d.ts +20 -0
- package/dist/components/dropdown/DropdownMenu.js +78 -0
- package/dist/components/dropdown/DropdownMenuItem.d.ts +13 -0
- package/dist/components/dropdown/DropdownMenuItem.js +49 -0
- package/dist/components/dropdown/DropdownTestStory.d.ts +5 -0
- package/dist/components/dropdown/dropdown-utils.d.ts +4 -0
- package/dist/components/dropdown/dropdown-utils.js +14 -0
- package/dist/components/dropdown/types.d.ts +48 -0
- package/dist/components/dropdown/use-dropdown-keyboard.d.ts +12 -0
- package/dist/components/dropdown/use-dropdown-keyboard.js +49 -0
- package/dist/components/empty-state/EmptyState.d.ts +26 -0
- package/dist/components/empty-state/EmptyState.js +36 -0
- package/dist/components/error-state/ErrorState.d.ts +1 -1
- package/dist/components/featured-icon/FeaturedIcon.d.ts +12 -0
- package/dist/components/featured-icon/FeaturedIcon.js +44 -0
- package/dist/components/form-field/FormField.d.ts +13 -0
- package/dist/components/form-field/FormField.js +21 -0
- package/dist/components/input/Input.d.ts +11 -0
- package/dist/components/input/Input.js +39 -0
- package/dist/components/keyboard-shortcut-label/KeyboardShortcutLabel.d.ts +8 -0
- package/dist/components/keyboard-shortcut-label/KeyboardShortcutLabel.js +18 -0
- package/dist/components/loading-state/Loader.d.ts +20 -0
- package/dist/components/loading-state/Loader.js +38 -0
- package/dist/components/loading-state/LoadingState.d.ts +15 -0
- package/dist/components/loading-state/LoadingState.js +47 -0
- package/dist/components/loading-state/locale/en.json.d.ts +6 -0
- package/dist/components/loading-state/locale/en.json.js +7 -0
- package/dist/components/loading-state/locale/vi.json.d.ts +6 -0
- package/dist/components/loading-state/locale/vi.json.js +7 -0
- package/dist/components/media/Media.d.ts +7 -0
- package/dist/components/media/Media.js +25 -0
- package/dist/components/modal/Modal.d.ts +9 -0
- package/dist/components/modal/Modal.js +68 -0
- package/dist/components/modal/helpers/HeaderIcon.d.ts +8 -0
- package/dist/components/modal/helpers/HeaderIcon.js +32 -0
- package/dist/components/modal/helpers/Title.d.ts +6 -0
- package/dist/components/modal/helpers/Title.js +9 -0
- package/dist/components/modal/helpers/circles-sm.svg.js +5 -0
- package/dist/components/modal/modal-context.d.ts +2 -0
- package/dist/components/modal/modal-context.js +9 -0
- package/dist/components/modal/use-click-outside-modal.d.ts +2 -0
- package/dist/components/modal/use-click-outside-modal.js +15 -0
- package/dist/components/notification/NotificationBanner.d.ts +9 -0
- package/dist/components/notification/NotificationBanner.js +97 -0
- package/dist/components/notification/icons.d.ts +5 -0
- package/dist/components/notification/icons.js +29 -0
- package/dist/components/notification/index.d.ts +4 -0
- package/dist/components/notification/index.js +26 -0
- package/dist/components/notification/locale/en.json.d.ts +8 -0
- package/dist/components/notification/locale/en.json.js +7 -0
- package/dist/components/notification/locale/vi.json.d.ts +8 -0
- package/dist/components/notification/locale/vi.json.js +7 -0
- package/dist/components/operating-system-icon/OperatingSystemIcon.d.ts +6 -0
- package/dist/components/operating-system-icon/OperatingSystemIcon.js +19 -0
- package/dist/components/operating-system-icon/assets/logo-android.svg.js +5 -0
- package/dist/components/operating-system-icon/assets/logo-apple.svg.js +5 -0
- package/dist/components/operating-system-icon/assets/logo-ubuntu.svg.js +5 -0
- package/dist/components/operating-system-icon/assets/logo-windows-10.svg.js +5 -0
- package/dist/components/page-title/PageTitle.d.ts +1 -1
- package/dist/components/popover/Popover.d.ts +1 -1
- package/dist/components/progress-bar/ProgressBar.d.ts +9 -0
- package/dist/components/progress-bar/ProgressBar.js +31 -0
- package/dist/components/radio/Radio.d.ts +4 -0
- package/dist/components/radio/Radio.js +55 -0
- package/dist/components/searchbox/Searchbox.d.ts +7 -0
- package/dist/components/searchbox/Searchbox.js +15 -0
- package/dist/components/select/Select.d.ts +11 -0
- package/dist/components/select/Select.js +44 -0
- package/dist/components/skeleton/Skeleton.d.ts +14 -0
- package/dist/components/skeleton/Skeleton.js +12 -0
- package/dist/components/switch/Switch.d.ts +1 -1
- package/dist/components/table/Table.d.ts +32 -0
- package/dist/components/table/Table.js +128 -0
- package/dist/components/table/TableActionButton.d.ts +15 -0
- package/dist/components/table/TableActionButton.js +50 -0
- package/dist/components/table/TableCell.d.ts +8 -0
- package/dist/components/table/TableCell.js +26 -0
- package/dist/components/table/TableHeader.d.ts +15 -0
- package/dist/components/table/TableHeader.js +36 -0
- package/dist/components/table/TableHeaderCell.d.ts +10 -0
- package/dist/components/table/TableHeaderCell.js +35 -0
- package/dist/components/table/TablePagination.d.ts +6 -0
- package/dist/components/table/TablePagination.js +69 -0
- package/dist/components/table/TableRow.d.ts +12 -0
- package/dist/components/table/TableRow.js +9 -0
- package/dist/components/table/expandable/ExpandableTable.d.ts +30 -0
- package/dist/components/table/expandable/ExpandableTable.js +156 -0
- package/dist/components/table/hooks/use-fit-page-height.d.ts +14 -0
- package/dist/components/table/hooks/use-fit-page-height.js +21 -0
- package/dist/components/table/hooks/use-row-selection.d.ts +27 -0
- package/dist/components/table/hooks/use-row-selection.js +35 -0
- package/dist/components/table/locale/en.json.d.ts +13 -0
- package/dist/components/table/locale/en.json.js +21 -0
- package/dist/components/table/locale/vi.json.d.ts +13 -0
- package/dist/components/table/locale/vi.json.js +21 -0
- package/dist/components/table/table-utils.d.ts +10 -0
- package/dist/components/table/table-utils.js +10 -0
- package/dist/components/table/types.d.ts +84 -0
- package/dist/components/tabs/Tabs.d.ts +27 -0
- package/dist/components/tabs/Tabs.js +75 -0
- package/dist/components/tabs/TabsTestStory.d.ts +4 -0
- package/dist/components/tags-input/TagsInput.d.ts +18 -0
- package/dist/components/tags-input/TagsInput.js +78 -0
- package/dist/components/tags-input/TagsInputTestStory.d.ts +3 -0
- package/dist/components/textarea/Textarea.d.ts +7 -0
- package/dist/components/textarea/Textarea.js +36 -0
- package/dist/components/toast/ToastSlice.d.ts +11 -0
- package/dist/components/toast/ToastSlice.js +103 -0
- package/dist/components/toast/icons.d.ts +8 -0
- package/dist/components/toast/icons.js +19 -0
- package/dist/components/toast/index.d.ts +4 -0
- package/dist/components/toast/index.js +35 -0
- package/dist/components/toast/types.d.ts +14 -0
- package/dist/components/toast/use-toast-list.d.ts +4 -0
- package/dist/components/toast/use-toast-list.js +27 -0
- package/dist/components/tooltip/Tooltip.d.ts +1 -1
- package/dist/filters/FilterDropdown.d.ts +9 -0
- package/dist/filters/FilterDropdown.js +57 -0
- package/dist/filters/types.d.ts +11 -0
- package/dist/filters/url-params.d.ts +5 -0
- package/dist/filters/url-params.js +20 -0
- package/dist/filters/use-filters.d.ts +13 -0
- package/dist/filters/use-filters.js +63 -0
- package/dist/hooks/use-countdown.d.ts +4 -0
- package/dist/hooks/use-countdown.js +18 -0
- package/dist/i18n/resources.js +23 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +141 -38
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +421 -350
- package/dist/test-utils/expect-visibility.d.ts +45 -0
- package/dist/utils/key-typeguard.d.ts +5 -0
- package/dist/utils/key-typeguard.js +6 -0
- package/dist/utils/observable.d.ts +7 -0
- package/dist/utils/observable.js +22 -0
- package/dist/utils/use-debounce.d.ts +1 -0
- package/dist/utils/use-debounce.js +11 -0
- package/package.json +30 -7
- package/theme.css +7 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsxs as s, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { cn as m } from "../../utils/cn.js";
|
|
3
|
+
const x = ({ name: e, Icon: r, className: t }) => /* @__PURE__ */ s(
|
|
4
|
+
"div",
|
|
5
|
+
{
|
|
6
|
+
className: m(
|
|
7
|
+
"px-1 py-px flex items-center gap-1 text-xs font-medium text-gray-v2 border border-gray-v2-200 rounded-md",
|
|
8
|
+
t
|
|
9
|
+
),
|
|
10
|
+
children: [
|
|
11
|
+
e,
|
|
12
|
+
r && /* @__PURE__ */ o(r, { className: "size-3.5 shrink-0" })
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
);
|
|
16
|
+
export {
|
|
17
|
+
x as KeyboardShortcutLabel
|
|
18
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface LoaderProps {
|
|
2
|
+
/** Size of the loader in rem. Default 4. */
|
|
3
|
+
baseSize?: number;
|
|
4
|
+
/** Number of dot particles. Default 16. */
|
|
5
|
+
particleCount?: number;
|
|
6
|
+
/** Override the default brand color with a custom hex/rgb value. */
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Rotating-dot spinner. Can be used standalone or inside other components.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <Loader /> // default 4 rem, 16 dots
|
|
15
|
+
* <Loader baseSize={1} /> // small inline spinner
|
|
16
|
+
* <Loader color="#e53e3e" /> // custom color
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare const Loader: ({ baseSize, particleCount, color, }: LoaderProps) => import("react").JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
const n = 0.1, m = 0.1, s = 1, I = ({
|
|
3
|
+
baseSize: r = 4,
|
|
4
|
+
particleCount: t = 16,
|
|
5
|
+
color: l
|
|
6
|
+
}) => {
|
|
7
|
+
const a = {
|
|
8
|
+
position: "absolute",
|
|
9
|
+
height: r * n + "rem",
|
|
10
|
+
width: r * m + "rem",
|
|
11
|
+
left: r * (0.5 - m / 2) + "rem",
|
|
12
|
+
top: r * (0.5 - n) / 4 + "rem",
|
|
13
|
+
transformOrigin: r * m / 2 + "rem " + r * 0.45 + "rem"
|
|
14
|
+
};
|
|
15
|
+
return /* @__PURE__ */ e(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
className: "relative",
|
|
19
|
+
style: { height: r + "rem", width: r + "rem" },
|
|
20
|
+
children: Array.from({ length: t }, (d, o) => /* @__PURE__ */ e(
|
|
21
|
+
"span",
|
|
22
|
+
{
|
|
23
|
+
className: "animate-pseudo-rotate h-2 w-2 rounded-full bg-brand-v2-600",
|
|
24
|
+
style: {
|
|
25
|
+
...a,
|
|
26
|
+
backgroundColor: l,
|
|
27
|
+
rotate: 360 / t * o + "deg",
|
|
28
|
+
animationDelay: -(s / t) * o + "s"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
o
|
|
32
|
+
))
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
I as Loader
|
|
38
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
className?: string;
|
|
3
|
+
text?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Loading state for CyStack Platform, with a little bit of fun.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <LoadingState />
|
|
11
|
+
* <LoadingState className="min-h-screen" />
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare const LoadingState: ({ className, text }: Props) => import("react").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as e, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as p, useMemo as g, useEffect as x } from "react";
|
|
3
|
+
import { useTranslation as v } from "react-i18next";
|
|
4
|
+
import { cn as N } from "../../utils/cn.js";
|
|
5
|
+
import { Loader as c } from "./Loader.js";
|
|
6
|
+
const T = 5e3, L = ({ className: l, text: o }) => {
|
|
7
|
+
const { t: i } = v("components/loading-state"), [m, d] = p(!1), f = g(() => {
|
|
8
|
+
const t = {
|
|
9
|
+
normal: 9994,
|
|
10
|
+
cat: 6
|
|
11
|
+
}, r = Object.keys(t), u = r.reduce((a, h) => a + t[h], 0);
|
|
12
|
+
let s = Math.floor(Math.random() * u);
|
|
13
|
+
for (const a of r)
|
|
14
|
+
if (s -= t[a], s < 0) return a;
|
|
15
|
+
return "normal";
|
|
16
|
+
}, []);
|
|
17
|
+
return x(() => {
|
|
18
|
+
const t = setTimeout(() => {
|
|
19
|
+
d(!0);
|
|
20
|
+
}, T);
|
|
21
|
+
return () => clearTimeout(t);
|
|
22
|
+
}, []), /* @__PURE__ */ e(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
className: N(
|
|
26
|
+
"flex h-40 w-full items-center justify-center py-12",
|
|
27
|
+
l
|
|
28
|
+
),
|
|
29
|
+
children: f === "cat" ? /* @__PURE__ */ n("div", { className: "relative", children: [
|
|
30
|
+
/* @__PURE__ */ e(
|
|
31
|
+
"img",
|
|
32
|
+
{
|
|
33
|
+
src: "/loading-cat.jpg",
|
|
34
|
+
className: "max-h-40 overflow-hidden object-cover"
|
|
35
|
+
}
|
|
36
|
+
),
|
|
37
|
+
/* @__PURE__ */ e("div", { className: "absolute left-18 top-18", children: /* @__PURE__ */ e(c, { baseSize: 1 }) })
|
|
38
|
+
] }) : /* @__PURE__ */ n("div", { className: "flex flex-col items-center gap-5", children: [
|
|
39
|
+
/* @__PURE__ */ e(c, {}),
|
|
40
|
+
o ? /* @__PURE__ */ e("span", { className: "text-lg font-medium text-gray-v2-700", children: o }) : m ? /* @__PURE__ */ e("span", { className: "text-lg font-medium text-gray-v2-700", children: i("loading") }) : null
|
|
41
|
+
] })
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
export {
|
|
46
|
+
L as LoadingState
|
|
47
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ObjectHTMLAttributes } from 'react';
|
|
2
|
+
interface Props extends Omit<ObjectHTMLAttributes<HTMLObjectElement>, "data"> {
|
|
3
|
+
data?: HTMLObjectElement["data"] | null;
|
|
4
|
+
}
|
|
5
|
+
/** Extends a HTML Object tag since it can display multiple types of media with fallback. */
|
|
6
|
+
export declare const Media: import('react').ForwardRefExoticComponent<Props & import('react').RefAttributes<HTMLObjectElement>>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as r } from "react";
|
|
3
|
+
import { cn as i } from "../../utils/cn.js";
|
|
4
|
+
import { Image02 as t } from "@untitled-ui/icons-react";
|
|
5
|
+
const l = r(
|
|
6
|
+
({ ...e }, c) => e.data ? /* @__PURE__ */ a(
|
|
7
|
+
"object",
|
|
8
|
+
{
|
|
9
|
+
type: "image/png",
|
|
10
|
+
ref: c,
|
|
11
|
+
...e,
|
|
12
|
+
data: e.data,
|
|
13
|
+
className: i(
|
|
14
|
+
"flex justify-center items-center size-7 shrink-0 object-cover",
|
|
15
|
+
e.className
|
|
16
|
+
),
|
|
17
|
+
children: e.children ? e.children : /* @__PURE__ */ a(t, { className: "size-full text-gray-v2-400" })
|
|
18
|
+
},
|
|
19
|
+
e.data
|
|
20
|
+
) : e.children ? e.children : /* @__PURE__ */ a("div", { className: i("size-7 shrink-0 object-cover", e.className), children: /* @__PURE__ */ a(t, { className: "size-full text-gray-v2-400" }) })
|
|
21
|
+
);
|
|
22
|
+
l.displayName = "Media";
|
|
23
|
+
export {
|
|
24
|
+
l as Media
|
|
25
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const Modal: ({ isOpen, onOpenChange, children, className }: Props) => import('react').ReactPortal;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as r, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import { useId as p, useRef as f, useCallback as x, useEffect as g } from "react";
|
|
3
|
+
import { createPortal as C } from "react-dom";
|
|
4
|
+
import { XClose as w } from "@untitled-ui/icons-react";
|
|
5
|
+
import { Button as E } from "../button/Button.js";
|
|
6
|
+
import { cn as u } from "../../utils/cn.js";
|
|
7
|
+
import { ModalContext as k } from "./modal-context.js";
|
|
8
|
+
import { useClickOutsideModal as A } from "./use-click-outside-modal.js";
|
|
9
|
+
const D = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])', B = ({ isOpen: e, onOpenChange: a, children: m, className: b }) => {
|
|
10
|
+
const i = p(), n = f(null), o = f(null), y = (t) => {
|
|
11
|
+
if (!(!e || o.current === null) && (t.key === "Escape" && a(!1), t.key === "Tab")) {
|
|
12
|
+
const l = Array.from(
|
|
13
|
+
o.current.querySelectorAll(D)
|
|
14
|
+
).filter((v) => !v.closest("[inert]"));
|
|
15
|
+
if (l.length === 0) return;
|
|
16
|
+
const c = l[0], d = l[l.length - 1];
|
|
17
|
+
t.shiftKey ? document.activeElement === c && (t.preventDefault(), d.focus()) : document.activeElement === d && (t.preventDefault(), c.focus());
|
|
18
|
+
}
|
|
19
|
+
}, s = x(
|
|
20
|
+
() => a(!1),
|
|
21
|
+
[a]
|
|
22
|
+
);
|
|
23
|
+
return A(s, n, [o]), g(() => (document.body.classList.toggle("overflow-hidden", e), () => document.body.classList.remove("overflow-hidden")), [e]), C(
|
|
24
|
+
/* @__PURE__ */ r(k.Provider, { value: i, children: /* @__PURE__ */ r(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
ref: n,
|
|
28
|
+
className: u(
|
|
29
|
+
"fixed inset-0 flex items-center justify-center z-10 transition-opacity bg-gray-v2-950/48",
|
|
30
|
+
{ "opacity-0 pointer-events-none": !e }
|
|
31
|
+
),
|
|
32
|
+
onKeyDown: y,
|
|
33
|
+
children: /* @__PURE__ */ h(
|
|
34
|
+
"div",
|
|
35
|
+
{
|
|
36
|
+
ref: o,
|
|
37
|
+
role: "dialog",
|
|
38
|
+
"aria-modal": "true",
|
|
39
|
+
"aria-labelledby": i,
|
|
40
|
+
className: u(
|
|
41
|
+
"relative min-h-20 w-xl p-6 rounded-xl bg-white flex flex-col gap-5 overflow-hidden transition-all",
|
|
42
|
+
{ "scale-90": !e },
|
|
43
|
+
b
|
|
44
|
+
),
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ r(
|
|
47
|
+
E,
|
|
48
|
+
{
|
|
49
|
+
variant: "tertiary",
|
|
50
|
+
color: "gray",
|
|
51
|
+
className: "absolute right-0 top-0 m-4",
|
|
52
|
+
onClick: s,
|
|
53
|
+
"aria-label": "Close",
|
|
54
|
+
children: /* @__PURE__ */ r(w, { className: "size-6 shrink-0 text-gray-v2-400" })
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
m
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
) }),
|
|
63
|
+
document.body
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
export {
|
|
67
|
+
B as Modal
|
|
68
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode, SVGProps } from 'react';
|
|
2
|
+
type IconType = "brand" | "gray" | "success" | "warning" | "error";
|
|
3
|
+
interface Props {
|
|
4
|
+
type?: IconType;
|
|
5
|
+
Icon: (props: SVGProps<SVGSVGElement>) => ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare const ModalHeaderIcon: ({ type, Icon }: Props) => import("react").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsxs as o, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { cn as n } from "../../../utils/cn.js";
|
|
4
|
+
import a from "./circles-sm.svg.js";
|
|
5
|
+
const t = {
|
|
6
|
+
brand: "bg-brand-v2-100 border-brand-v2-50",
|
|
7
|
+
gray: "bg-gray-v2-100 border-gray-v2-50",
|
|
8
|
+
success: "bg-success-v2-100 border-success-v2-50",
|
|
9
|
+
warning: "bg-warning-v2-100 border-warning-v2-50",
|
|
10
|
+
error: "bg-error-v2-100 border-error-v2-50"
|
|
11
|
+
}, c = {
|
|
12
|
+
brand: "text-brand-v2-600",
|
|
13
|
+
gray: "text-gray-v2-600",
|
|
14
|
+
success: "text-success-v2-600",
|
|
15
|
+
warning: "text-warning-v2-600",
|
|
16
|
+
error: "text-error-v2-600"
|
|
17
|
+
}, g = ({ type: r = "brand", Icon: s }) => /* @__PURE__ */ o(
|
|
18
|
+
"div",
|
|
19
|
+
{
|
|
20
|
+
className: n(
|
|
21
|
+
"relative h-13 w-13 min-w-13 flex items-center justify-center rounded-full border-8",
|
|
22
|
+
t[r]
|
|
23
|
+
),
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ e(s, { className: n("h-6 w-6 min-w-6", c[r]) }),
|
|
26
|
+
/* @__PURE__ */ e(a, { className: "absolute h-84 w-84 min-w-84 pointer-events-none" })
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
export {
|
|
31
|
+
g as ModalHeaderIcon
|
|
32
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useModalContext as r } from "../modal-context.js";
|
|
3
|
+
const i = ({ children: t }) => {
|
|
4
|
+
const o = r();
|
|
5
|
+
return /* @__PURE__ */ e("h2", { id: o, className: "text-lg font-semibold text-gray-v2-900", children: t });
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
i as ModalTitle
|
|
9
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as e from "react";
|
|
2
|
+
const r = (t) => /* @__PURE__ */ e.createElement("svg", { height: 336, width: 336, viewBox: "0 0 336 336", xmlns: "http://www.w3.org/2000/svg", ...t }, /* @__PURE__ */ e.createElement("defs", null, /* @__PURE__ */ e.createElement("radialGradient", { id: "radialGradient-mask", cx: "50%", cy: "50%", r: "50%", fx: "50%", fy: "50%" }, /* @__PURE__ */ e.createElement("stop", { offset: "0%", stopColor: "white" }), /* @__PURE__ */ e.createElement("stop", { offset: "100%", stopColor: "black" })), /* @__PURE__ */ e.createElement("mask", { id: "background-pattern-decorative-mask" }, /* @__PURE__ */ e.createElement("rect", { x: 0, y: 0, height: "100%", width: "100%", fill: "url(#radialGradient-mask)" }))), /* @__PURE__ */ e.createElement("g", { mask: "url(#background-pattern-decorative-mask)" }, /* @__PURE__ */ e.createElement("circle", { cx: 168, cy: 168, r: 168, stroke: "#E9EAEB", fill: "transparent" }), /* @__PURE__ */ e.createElement("circle", { cx: 168, cy: 168, r: 144, stroke: "#E9EAEB", fill: "transparent" }), /* @__PURE__ */ e.createElement("circle", { cx: 168, cy: 168, r: 120, stroke: "#E9EAEB", fill: "transparent" }), /* @__PURE__ */ e.createElement("circle", { cx: 168, cy: 168, r: 96, stroke: "#E9EAEB", fill: "transparent" }), /* @__PURE__ */ e.createElement("circle", { cx: 168, cy: 168, r: 72, stroke: "#E9EAEB", fill: "transparent" }), /* @__PURE__ */ e.createElement("circle", { cx: 168, cy: 168, r: 48, stroke: "#E9EAEB", fill: "transparent" })));
|
|
3
|
+
export {
|
|
4
|
+
r as default
|
|
5
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useEffect as u } from "react";
|
|
2
|
+
const d = (e, n, r) => {
|
|
3
|
+
u(() => {
|
|
4
|
+
function i(o) {
|
|
5
|
+
const { target: t } = o;
|
|
6
|
+
t instanceof Node && n.current && n.current.contains(t) && r.every((c) => !c.current || !c.current.contains(t)) && e();
|
|
7
|
+
}
|
|
8
|
+
return window.addEventListener("mousedown", i), () => {
|
|
9
|
+
window.removeEventListener("mousedown", i);
|
|
10
|
+
};
|
|
11
|
+
}, [n, r, e]);
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
d as useClickOutsideModal
|
|
15
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InternalToastProps } from '../toast/types';
|
|
2
|
+
import { Observable } from '../../utils/observable';
|
|
3
|
+
interface Props {
|
|
4
|
+
toast: InternalToastProps;
|
|
5
|
+
observable: Observable<InternalToastProps>;
|
|
6
|
+
}
|
|
7
|
+
/** Just notification's UI. */
|
|
8
|
+
export declare const NotificationBanner: ({ toast, observable }: Props) => import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsxs as o, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useState as g, useRef as u, useMemo as x, useCallback as l, useEffect as y } from "react";
|
|
3
|
+
import { useTranslation as v } from "react-i18next";
|
|
4
|
+
import { XClose as w } from "@untitled-ui/icons-react";
|
|
5
|
+
import { iconByNotificationType as b } from "./icons.js";
|
|
6
|
+
const H = ({ toast: e, observable: i }) => {
|
|
7
|
+
var d, m;
|
|
8
|
+
const { t: c } = v("components/notification"), [p, f] = g(!1), n = u(null), s = x(() => ["peach"].includes(e.type) ? "gradient" : "normal", [e.type]), a = l(
|
|
9
|
+
(t) => {
|
|
10
|
+
i.notify({ ...t, status: "dismissed" });
|
|
11
|
+
},
|
|
12
|
+
[i]
|
|
13
|
+
), h = l(
|
|
14
|
+
(t) => {
|
|
15
|
+
i.notify({ ...t, status: "destroyed" });
|
|
16
|
+
},
|
|
17
|
+
[i]
|
|
18
|
+
);
|
|
19
|
+
return y(() => {
|
|
20
|
+
f(!0);
|
|
21
|
+
}, []), /* @__PURE__ */ o(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
ref: n,
|
|
25
|
+
style: p ? e.status === "dismissed" ? (
|
|
26
|
+
// The last state before toast is destroyed
|
|
27
|
+
{
|
|
28
|
+
height: 0,
|
|
29
|
+
minHeight: 0,
|
|
30
|
+
opacity: 0,
|
|
31
|
+
paddingTop: 0,
|
|
32
|
+
paddingBottom: 0,
|
|
33
|
+
borderWidth: 0
|
|
34
|
+
}
|
|
35
|
+
) : (
|
|
36
|
+
// The stable state
|
|
37
|
+
{
|
|
38
|
+
height: (m = n.current) == null ? void 0 : m.offsetHeight,
|
|
39
|
+
paddingTop: "1rem",
|
|
40
|
+
paddingBottom: "1rem",
|
|
41
|
+
borderWidth: "1px"
|
|
42
|
+
}
|
|
43
|
+
) : (
|
|
44
|
+
// The first state: before toast is mounted
|
|
45
|
+
{
|
|
46
|
+
transform: "translate(0, 100%)",
|
|
47
|
+
height: (d = n.current) == null ? void 0 : d.offsetHeight,
|
|
48
|
+
paddingTop: "1rem",
|
|
49
|
+
paddingBottom: "1rem",
|
|
50
|
+
borderWidth: "1px"
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
className: "v2 relative px-4 w-[80vw] flex items-start gap-4 rounded-lg duration-300 ease-out overflow-hidden border-gray-v2-300 bg-white shadow-xs",
|
|
54
|
+
onTransitionEnd: (t) => {
|
|
55
|
+
t.target === t.currentTarget && t.propertyName === "height" && h(e);
|
|
56
|
+
},
|
|
57
|
+
children: [
|
|
58
|
+
b[e.type],
|
|
59
|
+
/* @__PURE__ */ o("div", { className: "flex flex-col gap-3", children: [
|
|
60
|
+
/* @__PURE__ */ o("div", { className: "flex flex-col gap-1", children: [
|
|
61
|
+
/* @__PURE__ */ r("span", { className: "text-sm font-semibold text-gray-v2-700 min-h-[1em] wrap-break-words", children: e.message }),
|
|
62
|
+
e.detail ? /* @__PURE__ */ r(
|
|
63
|
+
"span",
|
|
64
|
+
{
|
|
65
|
+
className: `text-sm min-h-[1em] wrap-break-words ${s === "gradient" ? "text-white" : "text-gray-v2-600"}`,
|
|
66
|
+
children: e.detail
|
|
67
|
+
}
|
|
68
|
+
) : null
|
|
69
|
+
] }),
|
|
70
|
+
/* @__PURE__ */ r(
|
|
71
|
+
"button",
|
|
72
|
+
{
|
|
73
|
+
className: "text-sm font-semibold text-brand-v2-700 hover:text-brand-v2-800 w-fit",
|
|
74
|
+
onClick: () => {
|
|
75
|
+
a(e);
|
|
76
|
+
},
|
|
77
|
+
children: c("button.ok")
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
] }),
|
|
81
|
+
/* @__PURE__ */ r(
|
|
82
|
+
"button",
|
|
83
|
+
{
|
|
84
|
+
className: `absolute m-2 top-2 right-2 flex text-gray-v2-400 ${s === "gradient" ? "bg-transparent hover:bg-transparent" : void 0}`,
|
|
85
|
+
onClick: () => {
|
|
86
|
+
a(e);
|
|
87
|
+
},
|
|
88
|
+
children: /* @__PURE__ */ r(w, { className: "h-5 w-5 min-w-5" })
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
};
|
|
95
|
+
export {
|
|
96
|
+
H as NotificationBanner
|
|
97
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import { InfoCircle as a, AlertTriangle as c, AlertCircle as n, CheckCircle as i } from "@untitled-ui/icons-react";
|
|
3
|
+
const r = ({
|
|
4
|
+
colorClassName: s,
|
|
5
|
+
children: l
|
|
6
|
+
}) => /* @__PURE__ */ o("div", { className: "relative flex", children: [
|
|
7
|
+
l,
|
|
8
|
+
/* @__PURE__ */ e(
|
|
9
|
+
"span",
|
|
10
|
+
{
|
|
11
|
+
className: "absolute -top-[0.21rem] -left-[0.21rem] h-[1.67rem] w-[1.67rem] rounded-full border-[1.67px] opacity-30 " + s
|
|
12
|
+
}
|
|
13
|
+
),
|
|
14
|
+
/* @__PURE__ */ e(
|
|
15
|
+
"span",
|
|
16
|
+
{
|
|
17
|
+
className: "absolute -top-[0.47rem] -left-[0.47rem] h-[2.19rem] w-[2.19rem] rounded-full border-[1.67px] opacity-10 " + s
|
|
18
|
+
}
|
|
19
|
+
)
|
|
20
|
+
] }), d = {
|
|
21
|
+
success: /* @__PURE__ */ e(r, { colorClassName: "border-success-v2-600", children: /* @__PURE__ */ e(i, { className: "h-5 w-5 min-w-5 text-success-v2-600" }) }),
|
|
22
|
+
error: /* @__PURE__ */ e(r, { colorClassName: "border-error-v2-600", children: /* @__PURE__ */ e(n, { className: "h-5 w-5 min-w-5 text-error-v2-600" }) }),
|
|
23
|
+
warning: /* @__PURE__ */ e(r, { colorClassName: "border-warning-v2-600", children: /* @__PURE__ */ e(c, { className: "h-5 w-5 min-w-5 text-warning-v2-600" }) }),
|
|
24
|
+
info: /* @__PURE__ */ e(r, { colorClassName: "border-blue-v2-600", children: /* @__PURE__ */ e(a, { className: "h-5 w-5 min-w-5 text-blue-v2-600" }) }),
|
|
25
|
+
peach: /* @__PURE__ */ e(r, { colorClassName: "border-brand-v2-600", children: /* @__PURE__ */ e(a, { className: "h-5 w-5 min-w-5 text-brand-v2-600" }) })
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
d as iconByNotificationType
|
|
29
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { WrittenOnTheToast } from '../toast/types';
|
|
2
|
+
/** Where we store notifications that requires user interaction. */
|
|
3
|
+
export declare const NotificationBox: () => import("react").JSX.Element;
|
|
4
|
+
export declare const createNotification: (newToast: WrittenOnTheToast) => void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { useToastList as n } from "../toast/use-toast-list.js";
|
|
3
|
+
import { Observable as r } from "../../utils/observable.js";
|
|
4
|
+
import { NotificationBanner as a } from "./NotificationBanner.js";
|
|
5
|
+
const s = () => window.isSecureContext ? crypto.randomUUID() : crypto.getRandomValues(new Uint32Array(1))[0].toString(), e = new r(), p = () => {
|
|
6
|
+
const o = n(e);
|
|
7
|
+
return /* @__PURE__ */ i("div", { className: "flex flex-col gap-2", children: o.map((t) => /* @__PURE__ */ i(
|
|
8
|
+
a,
|
|
9
|
+
{
|
|
10
|
+
toast: t,
|
|
11
|
+
observable: e
|
|
12
|
+
},
|
|
13
|
+
`toast-${t.id}`
|
|
14
|
+
)) });
|
|
15
|
+
}, d = (o) => {
|
|
16
|
+
const t = {
|
|
17
|
+
...o,
|
|
18
|
+
id: s(),
|
|
19
|
+
status: "stable"
|
|
20
|
+
};
|
|
21
|
+
e.notify(t);
|
|
22
|
+
};
|
|
23
|
+
export {
|
|
24
|
+
p as NotificationBox,
|
|
25
|
+
d as createNotification
|
|
26
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import m from "./assets/logo-windows-10.svg.js";
|
|
3
|
+
import p from "./assets/logo-apple.svg.js";
|
|
4
|
+
import g from "./assets/logo-ubuntu.svg.js";
|
|
5
|
+
import d from "./assets/logo-android.svg.js";
|
|
6
|
+
import { Monitor01 as u } from "@untitled-ui/icons-react";
|
|
7
|
+
import { keyTypeguard as f } from "../../utils/key-typeguard.js";
|
|
8
|
+
const r = {
|
|
9
|
+
windows: m,
|
|
10
|
+
darwin: p,
|
|
11
|
+
ubuntu: g,
|
|
12
|
+
android: d
|
|
13
|
+
}, l = ({ osName: o, ...t }) => {
|
|
14
|
+
const n = o != null && f(o, r) ? r[o] : u;
|
|
15
|
+
return /* @__PURE__ */ i(n, { ...t });
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
l as OperatingSystemIcon
|
|
19
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as C from "react";
|
|
2
|
+
const t = (e) => /* @__PURE__ */ C.createElement("svg", { width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ C.createElement("path", { d: "M23.933 18.3905C23.9251 18.3416 23.9176 18.2933 23.9094 18.2449C23.7018 16.9981 23.297 15.792 22.71 14.6714C22.1354 13.5734 21.3938 12.5703 20.5116 11.6978C19.8674 11.0599 19.1531 10.4962 18.3822 10.0173C18.3868 10.0098 18.3907 10.0016 18.3953 9.99398C18.6374 9.57762 18.8802 9.16173 19.1224 8.74518L19.8326 7.5255C20.0031 7.23374 20.1731 6.94123 20.3424 6.64947C20.4282 6.50228 20.4784 6.33729 20.4891 6.16749C20.4999 5.99769 20.4709 5.82772 20.4045 5.67097C20.3136 5.45478 20.155 5.27358 19.9523 5.15427C19.8092 5.06985 19.6489 5.0185 19.4832 5.004C19.414 4.99815 19.3444 4.99872 19.2753 5.00568C19.1021 5.02327 18.9357 5.08149 18.7895 5.17556C18.6434 5.26963 18.5217 5.39687 18.4345 5.54683C18.2645 5.83869 18.0944 6.1311 17.9247 6.42286L17.2145 7.64263C16.9723 8.05909 16.7295 8.47498 16.4874 8.89143C16.461 8.93689 16.4343 8.98224 16.4079 9.02835C16.3712 9.0137 16.3348 8.99914 16.2981 8.98523C14.9631 8.47843 13.5148 8.20123 12.0009 8.20123C11.9595 8.20123 11.9185 8.20123 11.8768 8.20179C10.5308 8.21514 9.23756 8.44819 8.031 8.86633C7.89188 8.91469 7.75372 8.96578 7.61663 9.01958C7.59206 8.97711 7.56675 8.93455 7.54256 8.89199C7.30041 8.47554 7.05759 8.05965 6.81553 7.64319L6.10528 6.42333C5.93484 6.13157 5.76478 5.83915 5.59538 5.5473C5.49058 5.36689 5.33627 5.21999 5.15055 5.12384C4.96483 5.02769 4.75541 4.98628 4.54688 5.00447C4.38087 5.01849 4.22025 5.06994 4.07719 5.15492C3.92009 5.24772 3.78872 5.37806 3.69497 5.53414C3.66862 5.57838 3.64509 5.62439 3.62541 5.67162C3.52271 5.91412 3.51058 6.1852 3.59119 6.43583C3.61547 6.50919 3.64687 6.58087 3.68709 6.65013C3.85746 6.9419 4.02743 7.23391 4.197 7.52615C4.43419 7.93281 4.67081 8.33937 4.90763 8.74592C5.14969 9.16238 5.39213 9.57827 5.63419 9.99473C5.63606 9.99827 5.6385 10.0017 5.64028 10.0052C5.15315 10.3065 4.68814 10.6419 4.24875 11.0088C3.46278 11.6655 2.76347 12.4186 2.1675 13.2502C1.84262 13.7034 1.55003 14.1787 1.29188 14.6726C0.846133 15.5237 0.504838 16.425 0.275344 17.3572C0.203327 17.6512 0.142316 17.9477 0.0924375 18.2461C0.0842813 18.2945 0.0767813 18.3434 0.0692813 18.3917C0.0421861 18.5665 0.0190864 18.7419 0 18.9177H24C23.9808 18.7412 23.9579 18.5658 23.9312 18.3916L23.933 18.3905Z", fill: "#34A853" }), /* @__PURE__ */ C.createElement("path", { d: "M18.2431 15.6134C18.7233 15.2952 18.7931 14.5588 18.3988 13.9689C18.0048 13.3788 17.2961 13.1586 16.8161 13.4768C16.3359 13.795 16.2659 14.5314 16.6602 15.1214C17.0543 15.7114 17.7632 15.9317 18.2431 15.6134ZM7.36137 15.1234C7.75568 14.5335 7.68574 13.7972 7.20555 13.4789C6.72527 13.1606 6.0168 13.3809 5.62249 13.9708C5.22846 14.5609 5.2983 15.2972 5.7783 15.6155C6.25849 15.9338 6.96733 15.7135 7.36137 15.1234Z", fill: "#202124" }));
|
|
3
|
+
export {
|
|
4
|
+
t as default
|
|
5
|
+
};
|