@fanvue/ui 0.1.0-alpha.2 → 1.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/README.md +1 -1
- package/dist/cjs/components/Alert/Alert.cjs +72 -0
- package/dist/cjs/components/Alert/Alert.cjs.map +1 -0
- package/dist/cjs/components/Avatar/Avatar.cjs +162 -0
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/cjs/components/Badge/Badge.cjs +99 -0
- package/dist/cjs/components/Badge/Badge.cjs.map +1 -0
- package/dist/cjs/components/Button/Button.cjs +172 -0
- package/dist/cjs/components/Button/Button.cjs.map +1 -0
- package/dist/cjs/components/Checkbox/Checkbox.cjs +157 -0
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/cjs/components/Chip/Chip.cjs +92 -0
- package/dist/cjs/components/Chip/Chip.cjs.map +1 -0
- package/dist/cjs/components/Count/Count.cjs +56 -0
- package/dist/cjs/components/Count/Count.cjs.map +1 -0
- package/dist/cjs/components/DatePicker/DatePicker.cjs +133 -0
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -0
- package/dist/cjs/components/Divider/Divider.cjs +69 -0
- package/dist/cjs/components/Divider/Divider.cjs.map +1 -0
- package/dist/cjs/components/IconButton/IconButton.cjs +92 -0
- package/dist/cjs/components/IconButton/IconButton.cjs.map +1 -0
- package/dist/cjs/components/Icons/ArrowRightIcon.cjs +47 -0
- package/dist/cjs/components/Icons/ArrowRightIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/ArrowUpRightIcon.cjs +47 -0
- package/dist/cjs/components/Icons/ArrowUpRightIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/CheckCircleIcon.cjs +47 -0
- package/dist/cjs/components/Icons/CheckCircleIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/CheckIcon.cjs +49 -0
- package/dist/cjs/components/Icons/CheckIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/ChevronLeftIcon.cjs +49 -0
- package/dist/cjs/components/Icons/ChevronLeftIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/ChevronRightIcon.cjs +49 -0
- package/dist/cjs/components/Icons/ChevronRightIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/CloseIcon.cjs +46 -0
- package/dist/cjs/components/Icons/CloseIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/CrossIcon.cjs +40 -0
- package/dist/cjs/components/Icons/CrossIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/CrownIcon.cjs +40 -0
- package/dist/cjs/components/Icons/CrownIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/ErrorCircleIcon.cjs +47 -0
- package/dist/cjs/components/Icons/ErrorCircleIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/ErrorIcon.cjs +30 -0
- package/dist/cjs/components/Icons/ErrorIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/FireIcon.cjs +47 -0
- package/dist/cjs/components/Icons/FireIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/HomeIcon.cjs +40 -0
- package/dist/cjs/components/Icons/HomeIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/InfoCircleIcon.cjs +47 -0
- package/dist/cjs/components/Icons/InfoCircleIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/InfoIcon.cjs +30 -0
- package/dist/cjs/components/Icons/InfoIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/MicrophoneIcon.cjs +31 -0
- package/dist/cjs/components/Icons/MicrophoneIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/MinusIcon.cjs +40 -0
- package/dist/cjs/components/Icons/MinusIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/PlusIcon.cjs +40 -0
- package/dist/cjs/components/Icons/PlusIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/SpinnerIcon.cjs +43 -0
- package/dist/cjs/components/Icons/SpinnerIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/StopIcon.cjs +22 -0
- package/dist/cjs/components/Icons/StopIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/SuccessIcon.cjs +30 -0
- package/dist/cjs/components/Icons/SuccessIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/VipBadgeIcon.cjs +97 -0
- package/dist/cjs/components/Icons/VipBadgeIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/WarningIcon.cjs +30 -0
- package/dist/cjs/components/Icons/WarningIcon.cjs.map +1 -0
- package/dist/cjs/components/Icons/WarningTriangleIcon.cjs +47 -0
- package/dist/cjs/components/Icons/WarningTriangleIcon.cjs.map +1 -0
- package/dist/cjs/components/Logo/Logo.cjs +182 -0
- package/dist/cjs/components/Logo/Logo.cjs.map +1 -0
- package/dist/cjs/components/Pagination/Pagination.cjs +144 -0
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -0
- package/dist/cjs/components/Pill/Pill.cjs +69 -0
- package/dist/cjs/components/Pill/Pill.cjs.map +1 -0
- package/dist/cjs/components/ProgressBar/ProgressBar.cjs +112 -0
- package/dist/cjs/components/ProgressBar/ProgressBar.cjs.map +1 -0
- package/dist/cjs/components/Radio/Radio.cjs +74 -0
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -0
- package/dist/cjs/components/RadioGroup/RadioGroup.cjs +30 -0
- package/dist/cjs/components/RadioGroup/RadioGroup.cjs.map +1 -0
- package/dist/cjs/components/Slider/Slider.cjs +96 -0
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -0
- package/dist/cjs/components/Slider/SliderLayout.cjs +31 -0
- package/dist/cjs/components/Slider/SliderLayout.cjs.map +1 -0
- package/dist/cjs/components/Slider/SliderThumb.cjs +87 -0
- package/dist/cjs/components/Slider/SliderThumb.cjs.map +1 -0
- package/dist/cjs/components/Snackbar/Snackbar.cjs +215 -0
- package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -0
- package/dist/cjs/components/Switch/Switch.cjs +57 -0
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -0
- package/dist/cjs/components/SwitchField/SwitchField.cjs +103 -0
- package/dist/cjs/components/SwitchField/SwitchField.cjs.map +1 -0
- package/dist/cjs/components/SwitchToggle/SwitchToggle.cjs +110 -0
- package/dist/cjs/components/SwitchToggle/SwitchToggle.cjs.map +1 -0
- package/dist/cjs/components/Tabs/Tabs.cjs +24 -0
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -0
- package/dist/cjs/components/Tabs/TabsContent.cjs +36 -0
- package/dist/cjs/components/Tabs/TabsContent.cjs.map +1 -0
- package/dist/cjs/components/Tabs/TabsList.cjs +42 -0
- package/dist/cjs/components/Tabs/TabsList.cjs.map +1 -0
- package/dist/cjs/components/Tabs/TabsTrigger.cjs +50 -0
- package/dist/cjs/components/Tabs/TabsTrigger.cjs.map +1 -0
- package/dist/cjs/components/Toast/Toast.cjs +128 -0
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -0
- package/dist/cjs/index.cjs +111 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/utils/cn.cjs +10 -0
- package/dist/cjs/utils/cn.cjs.map +1 -0
- package/dist/components/Alert/Alert.mjs +55 -0
- package/dist/components/Alert/Alert.mjs.map +1 -0
- package/dist/components/Avatar/Avatar.mjs +144 -0
- package/dist/components/Avatar/Avatar.mjs.map +1 -0
- package/dist/components/Badge/Badge.mjs +82 -0
- package/dist/components/Badge/Badge.mjs.map +1 -0
- package/dist/components/Button/Button.mjs +155 -0
- package/dist/components/Button/Button.mjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.mjs +139 -0
- package/dist/components/Checkbox/Checkbox.mjs.map +1 -0
- package/dist/components/Chip/Chip.mjs +75 -0
- package/dist/components/Chip/Chip.mjs.map +1 -0
- package/dist/components/Count/Count.mjs +39 -0
- package/dist/components/Count/Count.mjs.map +1 -0
- package/dist/components/DatePicker/DatePicker.mjs +133 -0
- package/dist/components/DatePicker/DatePicker.mjs.map +1 -0
- package/dist/components/Divider/Divider.mjs +51 -0
- package/dist/components/Divider/Divider.mjs.map +1 -0
- package/dist/components/IconButton/IconButton.mjs +75 -0
- package/dist/components/IconButton/IconButton.mjs.map +1 -0
- package/dist/components/Icons/ArrowRightIcon.mjs +30 -0
- package/dist/components/Icons/ArrowRightIcon.mjs.map +1 -0
- package/dist/components/Icons/ArrowUpRightIcon.mjs +30 -0
- package/dist/components/Icons/ArrowUpRightIcon.mjs.map +1 -0
- package/dist/components/Icons/CheckCircleIcon.mjs +30 -0
- package/dist/components/Icons/CheckCircleIcon.mjs.map +1 -0
- package/dist/components/Icons/CheckIcon.mjs +32 -0
- package/dist/components/Icons/CheckIcon.mjs.map +1 -0
- package/dist/components/Icons/ChevronLeftIcon.mjs +32 -0
- package/dist/components/Icons/ChevronLeftIcon.mjs.map +1 -0
- package/dist/components/Icons/ChevronRightIcon.mjs +32 -0
- package/dist/components/Icons/ChevronRightIcon.mjs.map +1 -0
- package/dist/components/Icons/CloseIcon.mjs +29 -0
- package/dist/components/Icons/CloseIcon.mjs.map +1 -0
- package/dist/components/Icons/CrossIcon.mjs +23 -0
- package/dist/components/Icons/CrossIcon.mjs.map +1 -0
- package/dist/components/Icons/CrownIcon.mjs +23 -0
- package/dist/components/Icons/CrownIcon.mjs.map +1 -0
- package/dist/components/Icons/ErrorCircleIcon.mjs +30 -0
- package/dist/components/Icons/ErrorCircleIcon.mjs.map +1 -0
- package/dist/components/Icons/ErrorIcon.mjs +30 -0
- package/dist/components/Icons/ErrorIcon.mjs.map +1 -0
- package/dist/components/Icons/FireIcon.mjs +30 -0
- package/dist/components/Icons/FireIcon.mjs.map +1 -0
- package/dist/components/Icons/HomeIcon.mjs +23 -0
- package/dist/components/Icons/HomeIcon.mjs.map +1 -0
- package/dist/components/Icons/InfoCircleIcon.mjs +30 -0
- package/dist/components/Icons/InfoCircleIcon.mjs.map +1 -0
- package/dist/components/Icons/InfoIcon.mjs +30 -0
- package/dist/components/Icons/InfoIcon.mjs.map +1 -0
- package/dist/components/Icons/MicrophoneIcon.mjs +31 -0
- package/dist/components/Icons/MicrophoneIcon.mjs.map +1 -0
- package/dist/components/Icons/MinusIcon.mjs +23 -0
- package/dist/components/Icons/MinusIcon.mjs.map +1 -0
- package/dist/components/Icons/PlusIcon.mjs +23 -0
- package/dist/components/Icons/PlusIcon.mjs.map +1 -0
- package/dist/components/Icons/SpinnerIcon.mjs +26 -0
- package/dist/components/Icons/SpinnerIcon.mjs.map +1 -0
- package/dist/components/Icons/StopIcon.mjs +22 -0
- package/dist/components/Icons/StopIcon.mjs.map +1 -0
- package/dist/components/Icons/SuccessIcon.mjs +30 -0
- package/dist/components/Icons/SuccessIcon.mjs.map +1 -0
- package/dist/components/Icons/VipBadgeIcon.mjs +80 -0
- package/dist/components/Icons/VipBadgeIcon.mjs.map +1 -0
- package/dist/components/Icons/WarningIcon.mjs +30 -0
- package/dist/components/Icons/WarningIcon.mjs.map +1 -0
- package/dist/components/Icons/WarningTriangleIcon.mjs +30 -0
- package/dist/components/Icons/WarningTriangleIcon.mjs.map +1 -0
- package/dist/components/Logo/Logo.mjs +165 -0
- package/dist/components/Logo/Logo.mjs.map +1 -0
- package/dist/components/Pagination/Pagination.mjs +127 -0
- package/dist/components/Pagination/Pagination.mjs.map +1 -0
- package/dist/components/Pill/Pill.mjs +52 -0
- package/dist/components/Pill/Pill.mjs.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.mjs +95 -0
- package/dist/components/ProgressBar/ProgressBar.mjs.map +1 -0
- package/dist/components/Radio/Radio.mjs +56 -0
- package/dist/components/Radio/Radio.mjs.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.mjs +12 -0
- package/dist/components/RadioGroup/RadioGroup.mjs.map +1 -0
- package/dist/components/Slider/Slider.mjs +78 -0
- package/dist/components/Slider/Slider.mjs.map +1 -0
- package/dist/components/Slider/SliderLayout.mjs +31 -0
- package/dist/components/Slider/SliderLayout.mjs.map +1 -0
- package/dist/components/Slider/SliderThumb.mjs +69 -0
- package/dist/components/Slider/SliderThumb.mjs.map +1 -0
- package/dist/components/Snackbar/Snackbar.mjs +198 -0
- package/dist/components/Snackbar/Snackbar.mjs.map +1 -0
- package/dist/components/Switch/Switch.mjs +39 -0
- package/dist/components/Switch/Switch.mjs.map +1 -0
- package/dist/components/SwitchField/SwitchField.mjs +86 -0
- package/dist/components/SwitchField/SwitchField.mjs.map +1 -0
- package/dist/components/SwitchToggle/SwitchToggle.mjs +93 -0
- package/dist/components/SwitchToggle/SwitchToggle.mjs.map +1 -0
- package/dist/components/Tabs/Tabs.mjs +7 -0
- package/dist/components/Tabs/Tabs.mjs.map +1 -0
- package/dist/components/Tabs/TabsContent.mjs +18 -0
- package/dist/components/Tabs/TabsContent.mjs.map +1 -0
- package/dist/components/Tabs/TabsList.mjs +24 -0
- package/dist/components/Tabs/TabsList.mjs.map +1 -0
- package/dist/components/Tabs/TabsTrigger.mjs +32 -0
- package/dist/components/Tabs/TabsTrigger.mjs.map +1 -0
- package/dist/components/Toast/Toast.mjs +110 -0
- package/dist/components/Toast/Toast.mjs.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.mjs +107 -10507
- package/dist/index.mjs.map +1 -1
- package/dist/utils/cn.mjs +10 -0
- package/dist/utils/cn.mjs.map +1 -0
- package/package.json +10 -4
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
const SpinnerIcon = React.forwardRef(
|
|
6
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7
|
+
"svg",
|
|
8
|
+
{
|
|
9
|
+
ref,
|
|
10
|
+
viewBox: "0 0 20 20",
|
|
11
|
+
fill: "none",
|
|
12
|
+
"aria-hidden": "true",
|
|
13
|
+
className: cn("size-5", className),
|
|
14
|
+
...props,
|
|
15
|
+
children: [
|
|
16
|
+
/* @__PURE__ */ jsx("circle", { cx: "10", cy: "10", r: "8", stroke: "currentColor", strokeOpacity: ".25", strokeWidth: "2" }),
|
|
17
|
+
/* @__PURE__ */ jsx("path", { d: "M10 2a8 8 0 0 1 8 8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
);
|
|
22
|
+
SpinnerIcon.displayName = "SpinnerIcon";
|
|
23
|
+
export {
|
|
24
|
+
SpinnerIcon
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=SpinnerIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpinnerIcon.mjs","sources":["../../../src/components/Icons/SpinnerIcon.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const SpinnerIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" strokeOpacity=\".25\" strokeWidth=\"2\" />\n <path d=\"M10 2a8 8 0 0 1 8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n ),\n);\n\nSpinnerIcon.displayName = \"SpinnerIcon\";\n"],"names":[],"mappings":";;;;AAIO,MAAM,cAAc,MAAM;AAAA,EAC/B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QACxB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,UAAU,SAAS;AAAA,MAChC,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAA,oBAAC,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,eAAc,OAAM,aAAY,KAAI;AAAA,QACxF,oBAAC,UAAK,GAAE,uBAAsB,QAAO,gBAAe,aAAY,KAAI,eAAc,QAAA,CAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhG;AAEA,YAAY,cAAc;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
const StopIcon = ({ className }) => /* @__PURE__ */ jsx(
|
|
4
|
+
"svg",
|
|
5
|
+
{
|
|
6
|
+
className,
|
|
7
|
+
"aria-hidden": "true",
|
|
8
|
+
viewBox: "0 0 40 40",
|
|
9
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
10
|
+
children: /* @__PURE__ */ jsx(
|
|
11
|
+
"path",
|
|
12
|
+
{
|
|
13
|
+
d: "M11 25.9975V13.9883C11 13.1628 11.294 12.4583 11.8821 11.875C12.4699 11.2917 13.1767 11 14.0025 11H26.0117C26.8372 11 27.5417 11.294 28.125 11.8821C28.7083 12.4699 29 13.1767 29 14.0025V26.0117C29 26.8372 28.706 27.5417 28.1179 28.125C27.5301 28.7083 26.8233 29 25.9975 29H13.9883C13.1628 29 12.4583 28.706 11.875 28.1179C11.2917 27.5301 11 26.8233 11 25.9975Z",
|
|
14
|
+
fill: "currentColor"
|
|
15
|
+
}
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
export {
|
|
20
|
+
StopIcon
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=StopIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StopIcon.mjs","sources":["../../../src/components/Icons/StopIcon.tsx"],"sourcesContent":["export const StopIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n aria-hidden=\"true\"\n viewBox=\"0 0 40 40\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11 25.9975V13.9883C11 13.1628 11.294 12.4583 11.8821 11.875C12.4699 11.2917 13.1767 11 14.0025 11H26.0117C26.8372 11 27.5417 11.294 28.125 11.8821C28.7083 12.4699 29 13.1767 29 14.0025V26.0117C29 26.8372 28.706 27.5417 28.1179 28.125C27.5301 28.7083 26.8233 29 25.9975 29H13.9883C13.1628 29 12.4583 28.706 11.875 28.1179C11.2917 27.5301 11 26.8233 11 25.9975Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n"],"names":[],"mappings":";;AAAO,MAAM,WAAW,CAAC,EAAE,UAAA,MACzB;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,eAAY;AAAA,IACZ,SAAQ;AAAA,IACR,OAAM;AAAA,IAEN,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACP;AACF;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import React__default from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
const SuccessIcon = React__default.forwardRef(
|
|
6
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7
|
+
"svg",
|
|
8
|
+
{
|
|
9
|
+
ref,
|
|
10
|
+
viewBox: "0 0 20 20",
|
|
11
|
+
fill: "currentColor",
|
|
12
|
+
"aria-hidden": "true",
|
|
13
|
+
className: cn("size-5", className),
|
|
14
|
+
...props,
|
|
15
|
+
children: /* @__PURE__ */ jsx(
|
|
16
|
+
"path",
|
|
17
|
+
{
|
|
18
|
+
fillRule: "evenodd",
|
|
19
|
+
d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",
|
|
20
|
+
clipRule: "evenodd"
|
|
21
|
+
}
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
);
|
|
26
|
+
SuccessIcon.displayName = "SuccessIcon";
|
|
27
|
+
export {
|
|
28
|
+
SuccessIcon
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=SuccessIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuccessIcon.mjs","sources":["../../../src/components/Icons/SuccessIcon.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const SuccessIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nSuccessIcon.displayName = \"SuccessIcon\";\n"],"names":["React"],"mappings":";;;;AAIO,MAAM,cAAcA,eAAM;AAAA,EAC/B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QACxB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,UAAU,SAAS;AAAA,MAChC,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,GAAE;AAAA,UACF,UAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IACX;AAAA,EAAA;AAGN;AAEA,YAAY,cAAc;"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
const VipBadgeIcon = React.forwardRef(
|
|
6
|
+
({ className, ...props }, ref) => {
|
|
7
|
+
const id = React.useId();
|
|
8
|
+
const bgId = `${id}-bg`;
|
|
9
|
+
const borderId = `${id}-border`;
|
|
10
|
+
return /* @__PURE__ */ jsxs(
|
|
11
|
+
"svg",
|
|
12
|
+
{
|
|
13
|
+
ref,
|
|
14
|
+
viewBox: "0 0 40 40",
|
|
15
|
+
fill: "none",
|
|
16
|
+
"aria-hidden": "true",
|
|
17
|
+
className: cn("size-10", className),
|
|
18
|
+
...props,
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ jsx("rect", { x: ".5", y: ".5", width: "39", height: "39", rx: "19.5", fill: `url(#${bgId})` }),
|
|
21
|
+
/* @__PURE__ */ jsx("rect", { x: ".5", y: ".5", width: "39", height: "39", rx: "19.5", stroke: `url(#${borderId})` }),
|
|
22
|
+
/* @__PURE__ */ jsx(
|
|
23
|
+
"path",
|
|
24
|
+
{
|
|
25
|
+
fillRule: "evenodd",
|
|
26
|
+
clipRule: "evenodd",
|
|
27
|
+
d: "M12.51 29.524c-.82 0-1.218-.644-1.05-1.32.217-.92 1.35-3.65.498-4.876-1.254-1.795-4.373-1.534-5.075-2.454-.506-.676-.055-1.333.645-1.718 1.571-.92 4.613-.66 7.572-2.469 1.638-.981 3.142-2.975 3.995-4.171 1.203-1.687 1.722-2.04 4.246-2.04h8.84c1.392 0 1.828 2.167-.444 2.405-.585.062-2.145.276-4.368.522-2.123.245-6.837.831-4.981 3.607 1.387 1.457 4.312 1.273 4.981 2.147.484.605.056 1.249-.47 1.558-1.588.92-4.979.819-7.937 2.614-2.006 1.227-3.637 3.957-4.306 4.877-.485.675-1.31 1.319-2.13 1.319h-.016Z",
|
|
28
|
+
fill: "#151515"
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
/* @__PURE__ */ jsxs("defs", { children: [
|
|
32
|
+
/* @__PURE__ */ jsxs(
|
|
33
|
+
"linearGradient",
|
|
34
|
+
{
|
|
35
|
+
id: bgId,
|
|
36
|
+
x1: "42.37",
|
|
37
|
+
y1: "56.63",
|
|
38
|
+
x2: "13.3",
|
|
39
|
+
y2: "3.28",
|
|
40
|
+
gradientUnits: "userSpaceOnUse",
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ jsx("stop", { stopColor: "#A8A8A6" }),
|
|
43
|
+
/* @__PURE__ */ jsx("stop", { offset: ".385", stopColor: "#696969" }),
|
|
44
|
+
/* @__PURE__ */ jsx("stop", { offset: ".665", stopColor: "#F9F8F6" }),
|
|
45
|
+
/* @__PURE__ */ jsx("stop", { offset: ".892", stopColor: "#D4D4D4" }),
|
|
46
|
+
/* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "#7F7F7F" })
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
/* @__PURE__ */ jsxs(
|
|
51
|
+
"linearGradient",
|
|
52
|
+
{
|
|
53
|
+
id: borderId,
|
|
54
|
+
x1: "6.62",
|
|
55
|
+
y1: "53.95",
|
|
56
|
+
x2: "39.76",
|
|
57
|
+
y2: "-.15",
|
|
58
|
+
gradientUnits: "userSpaceOnUse",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ jsx("stop", { stopColor: "#504F54" }),
|
|
61
|
+
/* @__PURE__ */ jsx("stop", { offset: ".203", stopColor: "#B1B1B1" }),
|
|
62
|
+
/* @__PURE__ */ jsx("stop", { offset: ".388", stopColor: "#13181C" }),
|
|
63
|
+
/* @__PURE__ */ jsx("stop", { offset: ".588", stopColor: "#C6C6C8" }),
|
|
64
|
+
/* @__PURE__ */ jsx("stop", { offset: ".693", stopColor: "#fff" }),
|
|
65
|
+
/* @__PURE__ */ jsx("stop", { offset: ".813", stopColor: "#0C0F14" }),
|
|
66
|
+
/* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "#696A6E" })
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
] })
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
VipBadgeIcon.displayName = "VipBadgeIcon";
|
|
77
|
+
export {
|
|
78
|
+
VipBadgeIcon
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=VipBadgeIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VipBadgeIcon.mjs","sources":["../../../src/components/Icons/VipBadgeIcon.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\n/** VIP badge icon with metallic gradient background and crown symbol */\nexport const VipBadgeIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => {\n const id = React.useId();\n const bgId = `${id}-bg`;\n const borderId = `${id}-border`;\n\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-10\", className)}\n {...props}\n >\n <rect x=\".5\" y=\".5\" width=\"39\" height=\"39\" rx=\"19.5\" fill={`url(#${bgId})`} />\n <rect x=\".5\" y=\".5\" width=\"39\" height=\"39\" rx=\"19.5\" stroke={`url(#${borderId})`} />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.51 29.524c-.82 0-1.218-.644-1.05-1.32.217-.92 1.35-3.65.498-4.876-1.254-1.795-4.373-1.534-5.075-2.454-.506-.676-.055-1.333.645-1.718 1.571-.92 4.613-.66 7.572-2.469 1.638-.981 3.142-2.975 3.995-4.171 1.203-1.687 1.722-2.04 4.246-2.04h8.84c1.392 0 1.828 2.167-.444 2.405-.585.062-2.145.276-4.368.522-2.123.245-6.837.831-4.981 3.607 1.387 1.457 4.312 1.273 4.981 2.147.484.605.056 1.249-.47 1.558-1.588.92-4.979.819-7.937 2.614-2.006 1.227-3.637 3.957-4.306 4.877-.485.675-1.31 1.319-2.13 1.319h-.016Z\"\n fill=\"#151515\"\n />\n <defs>\n <linearGradient\n id={bgId}\n x1=\"42.37\"\n y1=\"56.63\"\n x2=\"13.3\"\n y2=\"3.28\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#A8A8A6\" />\n <stop offset=\".385\" stopColor=\"#696969\" />\n <stop offset=\".665\" stopColor=\"#F9F8F6\" />\n <stop offset=\".892\" stopColor=\"#D4D4D4\" />\n <stop offset=\"1\" stopColor=\"#7F7F7F\" />\n </linearGradient>\n <linearGradient\n id={borderId}\n x1=\"6.62\"\n y1=\"53.95\"\n x2=\"39.76\"\n y2=\"-.15\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#504F54\" />\n <stop offset=\".203\" stopColor=\"#B1B1B1\" />\n <stop offset=\".388\" stopColor=\"#13181C\" />\n <stop offset=\".588\" stopColor=\"#C6C6C8\" />\n <stop offset=\".693\" stopColor=\"#fff\" />\n <stop offset=\".813\" stopColor=\"#0C0F14\" />\n <stop offset=\"1\" stopColor=\"#696A6E\" />\n </linearGradient>\n </defs>\n </svg>\n );\n },\n);\n\nVipBadgeIcon.displayName = \"VipBadgeIcon\";\n"],"names":[],"mappings":";;;;AAKO,MAAM,eAAe,MAAM;AAAA,EAChC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAChC,UAAM,KAAK,MAAM,MAAA;AACjB,UAAM,OAAO,GAAG,EAAE;AAClB,UAAM,WAAW,GAAG,EAAE;AAEtB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,eAAY;AAAA,QACZ,WAAW,GAAG,WAAW,SAAS;AAAA,QACjC,GAAG;AAAA,QAEJ,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,GAAE,MAAK,GAAE,MAAK,OAAM,MAAK,QAAO,MAAK,IAAG,QAAO,MAAM,QAAQ,IAAI,KAAK;AAAA,UAC5E,oBAAC,QAAA,EAAK,GAAE,MAAK,GAAE,MAAK,OAAM,MAAK,QAAO,MAAK,IAAG,QAAO,QAAQ,QAAQ,QAAQ,KAAK;AAAA,UAClF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,+BAEN,QAAA,EACC,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,eAAc;AAAA,gBAEd,UAAA;AAAA,kBAAA,oBAAC,QAAA,EAAK,WAAU,UAAA,CAAU;AAAA,kBAC1B,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,WAAU;AAAA,kBACxC,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,WAAU;AAAA,kBACxC,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,WAAU;AAAA,kBACxC,oBAAC,QAAA,EAAK,QAAO,KAAI,WAAU,UAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEvC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,eAAc;AAAA,gBAEd,UAAA;AAAA,kBAAA,oBAAC,QAAA,EAAK,WAAU,UAAA,CAAU;AAAA,kBAC1B,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,WAAU;AAAA,kBACxC,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,WAAU;AAAA,kBACxC,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,WAAU;AAAA,kBACxC,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,QAAO;AAAA,kBACrC,oBAAC,QAAA,EAAK,QAAO,QAAO,WAAU,WAAU;AAAA,kBACxC,oBAAC,QAAA,EAAK,QAAO,KAAI,WAAU,UAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACvC,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,aAAa,cAAc;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import React__default from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
const WarningIcon = React__default.forwardRef(
|
|
6
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7
|
+
"svg",
|
|
8
|
+
{
|
|
9
|
+
ref,
|
|
10
|
+
viewBox: "0 0 20 20",
|
|
11
|
+
fill: "currentColor",
|
|
12
|
+
"aria-hidden": "true",
|
|
13
|
+
className: cn("size-5", className),
|
|
14
|
+
...props,
|
|
15
|
+
children: /* @__PURE__ */ jsx(
|
|
16
|
+
"path",
|
|
17
|
+
{
|
|
18
|
+
fillRule: "evenodd",
|
|
19
|
+
d: "M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",
|
|
20
|
+
clipRule: "evenodd"
|
|
21
|
+
}
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
);
|
|
26
|
+
WarningIcon.displayName = "WarningIcon";
|
|
27
|
+
export {
|
|
28
|
+
WarningIcon
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=WarningIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WarningIcon.mjs","sources":["../../../src/components/Icons/WarningIcon.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const WarningIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nWarningIcon.displayName = \"WarningIcon\";\n"],"names":["React"],"mappings":";;;;AAIO,MAAM,cAAcA,eAAM;AAAA,EAC/B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QACxB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,UAAU,SAAS;AAAA,MAChC,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,GAAE;AAAA,UACF,UAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IACX;AAAA,EAAA;AAGN;AAEA,YAAY,cAAc;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
const WarningTriangleIcon = React.forwardRef(
|
|
6
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7
|
+
"svg",
|
|
8
|
+
{
|
|
9
|
+
ref,
|
|
10
|
+
viewBox: "0 0 20 20",
|
|
11
|
+
fill: "currentColor",
|
|
12
|
+
"aria-hidden": "true",
|
|
13
|
+
className: cn("size-5", className),
|
|
14
|
+
...props,
|
|
15
|
+
children: /* @__PURE__ */ jsx(
|
|
16
|
+
"path",
|
|
17
|
+
{
|
|
18
|
+
fillRule: "evenodd",
|
|
19
|
+
d: "M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625l6.28-10.875ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",
|
|
20
|
+
clipRule: "evenodd"
|
|
21
|
+
}
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
);
|
|
26
|
+
WarningTriangleIcon.displayName = "WarningTriangleIcon";
|
|
27
|
+
export {
|
|
28
|
+
WarningTriangleIcon
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=WarningTriangleIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WarningTriangleIcon.mjs","sources":["../../../src/components/Icons/WarningTriangleIcon.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const WarningTriangleIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625l6.28-10.875ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nWarningTriangleIcon.displayName = \"WarningTriangleIcon\";\n"],"names":[],"mappings":";;;;AAIO,MAAM,sBAAsB,MAAM;AAAA,EACvC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QACxB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,UAAU,SAAS;AAAA,MAChC,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,GAAE;AAAA,UACF,UAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IACX;AAAA,EAAA;AAGN;AAEA,oBAAoB,cAAc;"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
const getLogoColors = (color, type) => {
|
|
6
|
+
if (color === "Full colour") {
|
|
7
|
+
return {
|
|
8
|
+
icon: "var(--color-brand-green-500)",
|
|
9
|
+
iconInner: "var(--color-body-black-solid-constant)",
|
|
10
|
+
textClass: ""
|
|
11
|
+
// Uses parent's text-body-900 dark:text-body-100
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
if (color === "Decolour") {
|
|
15
|
+
return {
|
|
16
|
+
iconClass: "fill-[#151515] dark:fill-[#ffffff]",
|
|
17
|
+
iconInnerClass: "fill-[#ffffff] dark:fill-[#151515]",
|
|
18
|
+
textClass: ""
|
|
19
|
+
// Uses parent's text-body-900 dark:text-body-100
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
if (color === "White Always") {
|
|
23
|
+
return {
|
|
24
|
+
icon: type === "Icon" ? "var(--color-body-white-solid-constant)" : "var(--color-brand-green-500)",
|
|
25
|
+
iconInner: "var(--color-body-black-solid-constant)",
|
|
26
|
+
textClass: "text-body-white-solid-constant"
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (color === "Black Always") {
|
|
30
|
+
return {
|
|
31
|
+
icon: type === "Icon" ? "var(--color-body-black-solid-constant)" : "var(--color-brand-green-500)",
|
|
32
|
+
iconInner: type === "Icon" ? "var(--color-body-white-solid-constant)" : "var(--color-body-black-solid-constant)",
|
|
33
|
+
textClass: "text-body-black-solid-constant"
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
icon: "var(--color-brand-green-500)",
|
|
38
|
+
iconInner: "var(--color-body-black-solid-constant)",
|
|
39
|
+
textClass: ""
|
|
40
|
+
// Default to adaptive color
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
const WordmarkSVG = ({ className }) => {
|
|
44
|
+
return /* @__PURE__ */ jsxs(
|
|
45
|
+
"svg",
|
|
46
|
+
{
|
|
47
|
+
width: "128",
|
|
48
|
+
height: "30",
|
|
49
|
+
viewBox: "0 0 128 30",
|
|
50
|
+
fill: "none",
|
|
51
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
52
|
+
"aria-hidden": "true",
|
|
53
|
+
className,
|
|
54
|
+
"data-testid": "logo-wordmark",
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsx(
|
|
57
|
+
"path",
|
|
58
|
+
{
|
|
59
|
+
d: "M4.29144 15.2807V29.5588H10.4278V15.2807H16.0428V10.0668H10.4278V8.18181C10.4278 7.35294 10.6684 6.69786 11.1497 6.21658C11.631 5.73529 12.2861 5.49465 13.115 5.49465C13.5695 5.49465 13.9572 5.57486 14.2781 5.73529C14.6257 5.86898 14.9331 6.06951 15.2005 6.33689L19.0508 2.48663C18.3021 1.71123 17.4198 1.10963 16.4037 0.681819C15.4144 0.227273 14.2513 0 12.9144 0C11.1497 0 9.62566 0.374331 8.34224 1.12299C7.05882 1.84492 6.05615 2.84759 5.33422 4.13102C4.63903 5.3877 4.29144 6.80481 4.29144 8.38235V10.0668H0V15.2807H4.29144Z",
|
|
60
|
+
fill: "currentColor"
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
/* @__PURE__ */ jsx(
|
|
64
|
+
"path",
|
|
65
|
+
{
|
|
66
|
+
"fill-rule": "evenodd",
|
|
67
|
+
"clip-rule": "evenodd",
|
|
68
|
+
d: "M112.349 28.7166C114.006 29.5722 115.891 30 118.004 30C119.635 30 121.132 29.7193 122.496 29.1578C123.859 28.5963 125.022 27.754 125.985 26.631L122.616 23.262C122.028 23.9305 121.346 24.4385 120.571 24.7861C119.795 25.107 118.926 25.2674 117.964 25.2674C116.921 25.2674 116.012 25.0535 115.236 24.6257C114.488 24.1711 113.899 23.5428 113.472 22.7406C113.337 22.4624 113.225 22.166 113.135 21.8515L127.108 21.8182C127.215 21.3102 127.282 20.869 127.308 20.4947C127.362 20.0936 127.389 19.7193 127.389 19.3717C127.389 17.4733 126.961 15.7888 126.105 14.3182C125.276 12.8476 124.127 11.6979 122.656 10.869C121.185 10.0401 119.488 9.62568 117.562 9.62568C115.584 9.62568 113.806 10.0669 112.228 10.9492C110.651 11.8316 109.394 13.0481 108.458 14.5989C107.549 16.123 107.095 17.861 107.095 19.8128C107.095 21.7647 107.562 23.516 108.498 25.0668C109.434 26.6176 110.718 27.8342 112.349 28.7166ZM113.138 17.6391C113.218 17.3577 113.316 17.093 113.431 16.8449C113.833 16.0428 114.381 15.4278 115.076 15C115.798 14.5455 116.64 14.3182 117.603 14.3182C118.512 14.3182 119.274 14.5187 119.889 14.9198C120.53 15.2941 121.012 15.8556 121.333 16.6043C121.467 16.9061 121.575 17.243 121.658 17.615L113.138 17.6391Z",
|
|
69
|
+
fill: "currentColor"
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ jsx(
|
|
73
|
+
"path",
|
|
74
|
+
{
|
|
75
|
+
d: "M90.6482 28.9171C92.0386 29.639 93.6295 30 95.421 30C97.2124 30 98.7899 29.639 100.154 28.9171C101.517 28.1684 102.587 27.1524 103.362 25.869C104.138 24.5588 104.525 23.0481 104.525 21.3369V10.0668H98.3889V21.2968C98.3889 22.3128 98.1215 23.115 97.5867 23.7032C97.052 24.2647 96.33 24.5454 95.421 24.5454C94.7792 24.5454 94.2311 24.4118 93.7766 24.1444C93.322 23.877 92.9744 23.5027 92.7338 23.0214C92.5199 22.5401 92.4129 21.9652 92.4129 21.2968V10.0668H86.2766V21.377C86.2766 23.0615 86.6643 24.5588 87.4397 25.869C88.2151 27.1524 89.2846 28.1684 90.6482 28.9171Z",
|
|
76
|
+
fill: "currentColor"
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ jsx(
|
|
80
|
+
"path",
|
|
81
|
+
{
|
|
82
|
+
d: "M71.3524 29.5588L63.0904 10.0668H69.708L73.8792 22.1333L78.0503 10.0668H84.5476L76.2856 29.5588H71.3524Z",
|
|
83
|
+
fill: "currentColor"
|
|
84
|
+
}
|
|
85
|
+
),
|
|
86
|
+
/* @__PURE__ */ jsx(
|
|
87
|
+
"path",
|
|
88
|
+
{
|
|
89
|
+
d: "M55.1386 18.4492V29.5588H61.2749V17.0855C61.2749 15.7486 60.9541 14.5187 60.3124 13.3957C59.6707 12.2727 58.7883 11.377 57.6653 10.7085C56.5691 10.0134 55.299 9.66576 53.8552 9.66576C52.3578 9.66576 51.0076 9.98662 49.8044 10.6283C49.2874 10.8986 48.8195 11.2204 48.4006 11.5939V10.0668H42.2642V29.5588H48.4006V18.4492C48.4006 17.7807 48.5477 17.1925 48.8418 16.6845C49.1359 16.1497 49.537 15.7486 50.045 15.4813C50.553 15.1872 51.1413 15.0401 51.8097 15.0401C52.7723 15.0401 53.561 15.3609 54.176 16.0027C54.8177 16.6176 55.1386 17.4331 55.1386 18.4492Z",
|
|
90
|
+
fill: "currentColor"
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
/* @__PURE__ */ jsx(
|
|
94
|
+
"path",
|
|
95
|
+
{
|
|
96
|
+
"fill-rule": "evenodd",
|
|
97
|
+
"clip-rule": "evenodd",
|
|
98
|
+
d: "M26.5533 29.9599C24.7619 29.9599 23.1576 29.5187 21.7405 28.6363C20.3501 27.754 19.2405 26.5508 18.4116 25.0267C17.6094 23.5027 17.2084 21.7647 17.2084 19.8128C17.2084 17.8609 17.6094 16.123 18.4116 14.5989C19.2405 13.0749 20.3501 11.8716 21.7405 10.9893C23.1576 10.1069 24.7619 9.66576 26.5533 9.66576C27.8635 9.66576 29.0399 9.91977 30.0827 10.4278C30.7839 10.7608 31.3988 11.1801 31.9276 11.6855V10.0668H37.9437V29.5588H31.9276V27.9791C31.4153 28.4634 30.8137 28.8697 30.1228 29.1978C29.0533 29.7059 27.8635 29.9599 26.5533 29.9599ZM27.7966 24.4251C29.1068 24.4251 30.1629 23.9973 30.9651 23.1417C31.7672 22.2593 32.1683 21.1497 32.1683 19.8128C32.1683 18.9037 31.9811 18.1016 31.6068 17.4064C31.2592 16.7112 30.7512 16.1765 30.0827 15.8021C29.441 15.4011 28.6923 15.2005 27.8367 15.2005C26.9811 15.2005 26.2191 15.4011 25.5506 15.8021C24.9089 16.1765 24.3875 16.7112 23.9865 17.4064C23.6121 18.1016 23.425 18.9037 23.425 19.8128C23.425 20.6952 23.6121 21.4839 23.9865 22.1791C24.3608 22.8743 24.8822 23.4224 25.5506 23.8235C26.2191 24.2246 26.9677 24.4251 27.7966 24.4251Z",
|
|
99
|
+
fill: "currentColor"
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
const Logo = React.forwardRef(
|
|
107
|
+
({ className, type = "Full", color = "Full colour", ...props }, ref) => {
|
|
108
|
+
const colors = getLogoColors(color, type);
|
|
109
|
+
const showIcon = type === "Full" || type === "Icon" || type === "Portrait";
|
|
110
|
+
const showWordmark = type === "Full" || type === "Wordmark" || type === "Portrait";
|
|
111
|
+
const ariaProps = props["aria-label"] ? { role: "img" } : {};
|
|
112
|
+
return /* @__PURE__ */ jsxs(
|
|
113
|
+
"div",
|
|
114
|
+
{
|
|
115
|
+
ref,
|
|
116
|
+
"data-testid": "logo",
|
|
117
|
+
className: cn(
|
|
118
|
+
"inline-flex items-center text-body-900 dark:text-body-100",
|
|
119
|
+
type === "Portrait" ? "flex-col" : "flex-row",
|
|
120
|
+
type === "Full" && "gap-2",
|
|
121
|
+
className
|
|
122
|
+
),
|
|
123
|
+
...ariaProps,
|
|
124
|
+
...props,
|
|
125
|
+
children: [
|
|
126
|
+
showIcon && /* @__PURE__ */ jsxs(
|
|
127
|
+
"svg",
|
|
128
|
+
{
|
|
129
|
+
viewBox: "0 0 39 39",
|
|
130
|
+
fill: "none",
|
|
131
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
132
|
+
className: cn("shrink-0", type === "Icon" ? "h-10 w-10" : "h-8 w-8"),
|
|
133
|
+
"aria-hidden": "true",
|
|
134
|
+
"data-testid": "logo-icon",
|
|
135
|
+
children: [
|
|
136
|
+
/* @__PURE__ */ jsx(
|
|
137
|
+
"path",
|
|
138
|
+
{
|
|
139
|
+
d: "M0 11.2339C0 5.02957 5.02957 0 11.2339 0H27.7661C33.9704 0 39 5.02957 39 11.2339V27.7661C39 33.9704 33.9704 39 27.7661 39H11.2339C5.02957 39 0 33.9704 0 27.7661V11.2339Z",
|
|
140
|
+
...color === "Decolour" ? { className: colors.iconClass } : { fill: colors.icon }
|
|
141
|
+
}
|
|
142
|
+
),
|
|
143
|
+
/* @__PURE__ */ jsx(
|
|
144
|
+
"path",
|
|
145
|
+
{
|
|
146
|
+
fillRule: "evenodd",
|
|
147
|
+
clipRule: "evenodd",
|
|
148
|
+
d: "M12.277 30.5825C11.4418 30.5825 11.0355 29.8659 11.2059 29.1153C11.4275 28.0916 12.5838 25.0548 11.7145 23.6899C10.4361 21.6938 7.25562 21.9838 6.5397 20.9602C6.02371 20.2089 6.48355 19.478 7.19738 19.0493C8.79967 18.0257 11.902 18.3157 14.9191 16.3025C16.5895 15.2106 18.1237 12.9927 18.993 11.662C20.2203 9.78527 20.7487 9.39287 23.3226 9.39287H32.3376C33.7574 9.39287 34.202 11.8036 31.8852 12.0686C31.2886 12.1368 29.6977 12.3757 27.4306 12.6487C25.2658 12.9216 20.4589 13.5728 22.351 16.6608C23.7658 18.2816 26.7488 18.0769 27.4306 19.0493C27.9238 19.7225 27.4875 20.4384 26.9505 20.7824C25.3311 21.8061 21.8737 21.6938 18.8566 23.6899C16.8111 25.0548 15.1478 28.0916 14.4659 29.1153C13.9716 29.8659 13.1293 30.5825 12.294 30.5825H12.277Z",
|
|
149
|
+
...color === "Decolour" ? { className: colors.iconInnerClass } : { fill: colors.iconInner }
|
|
150
|
+
}
|
|
151
|
+
)
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
),
|
|
155
|
+
showWordmark && /* @__PURE__ */ jsx(WordmarkSVG, { className: cn(colors.textClass) })
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
);
|
|
161
|
+
Logo.displayName = "Logo";
|
|
162
|
+
export {
|
|
163
|
+
Logo
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=Logo.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logo.mjs","sources":["../../../src/components/Logo/Logo.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nconst getLogoColors = (color: LogoColor, type: LogoType) => {\n if (color === \"Full colour\") {\n return {\n icon: \"var(--color-brand-green-500)\",\n iconInner: \"var(--color-body-black-solid-constant)\",\n textClass: \"\", // Uses parent's text-body-900 dark:text-body-100\n };\n }\n\n if (color === \"Decolour\") {\n return {\n iconClass: \"fill-[#151515] dark:fill-[#ffffff]\",\n iconInnerClass: \"fill-[#ffffff] dark:fill-[#151515]\",\n textClass: \"\", // Uses parent's text-body-900 dark:text-body-100\n };\n }\n\n if (color === \"White Always\") {\n return {\n icon:\n type === \"Icon\" ? \"var(--color-body-white-solid-constant)\" : \"var(--color-brand-green-500)\",\n iconInner: \"var(--color-body-black-solid-constant)\",\n textClass: \"text-body-white-solid-constant\",\n };\n }\n\n if (color === \"Black Always\") {\n return {\n icon:\n type === \"Icon\" ? \"var(--color-body-black-solid-constant)\" : \"var(--color-brand-green-500)\",\n iconInner:\n type === \"Icon\"\n ? \"var(--color-body-white-solid-constant)\"\n : \"var(--color-body-black-solid-constant)\",\n textClass: \"text-body-black-solid-constant\",\n };\n }\n\n return {\n icon: \"var(--color-brand-green-500)\",\n iconInner: \"var(--color-body-black-solid-constant)\",\n textClass: \"\", // Default to adaptive color\n };\n};\n\nexport type LogoType = \"Full\" | \"Icon\" | \"Wordmark\" | \"Portrait\";\nexport type LogoColor = \"Full colour\" | \"Decolour\" | \"White Always\" | \"Black Always\";\n\nexport interface LogoProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Logo layout type (matches Figma \"Type\" property) */\n type?: LogoType;\n /** Logo color scheme (matches Figma \"Colour\" property) */\n color?: LogoColor;\n /**\n * Accessible label for the logo.\n * Required when type=\"Icon\" and used in interactive contexts (links, buttons).\n * @example \"Fanvue home\" or \"Go to homepage\"\n */\n \"aria-label\"?: string;\n}\n\nconst WordmarkSVG = ({ className }: { className?: string }) => {\n return (\n <svg\n width=\"128\"\n height=\"30\"\n viewBox=\"0 0 128 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className={className}\n data-testid=\"logo-wordmark\"\n >\n <path\n d=\"M4.29144 15.2807V29.5588H10.4278V15.2807H16.0428V10.0668H10.4278V8.18181C10.4278 7.35294 10.6684 6.69786 11.1497 6.21658C11.631 5.73529 12.2861 5.49465 13.115 5.49465C13.5695 5.49465 13.9572 5.57486 14.2781 5.73529C14.6257 5.86898 14.9331 6.06951 15.2005 6.33689L19.0508 2.48663C18.3021 1.71123 17.4198 1.10963 16.4037 0.681819C15.4144 0.227273 14.2513 0 12.9144 0C11.1497 0 9.62566 0.374331 8.34224 1.12299C7.05882 1.84492 6.05615 2.84759 5.33422 4.13102C4.63903 5.3877 4.29144 6.80481 4.29144 8.38235V10.0668H0V15.2807H4.29144Z\"\n fill=\"currentColor\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M112.349 28.7166C114.006 29.5722 115.891 30 118.004 30C119.635 30 121.132 29.7193 122.496 29.1578C123.859 28.5963 125.022 27.754 125.985 26.631L122.616 23.262C122.028 23.9305 121.346 24.4385 120.571 24.7861C119.795 25.107 118.926 25.2674 117.964 25.2674C116.921 25.2674 116.012 25.0535 115.236 24.6257C114.488 24.1711 113.899 23.5428 113.472 22.7406C113.337 22.4624 113.225 22.166 113.135 21.8515L127.108 21.8182C127.215 21.3102 127.282 20.869 127.308 20.4947C127.362 20.0936 127.389 19.7193 127.389 19.3717C127.389 17.4733 126.961 15.7888 126.105 14.3182C125.276 12.8476 124.127 11.6979 122.656 10.869C121.185 10.0401 119.488 9.62568 117.562 9.62568C115.584 9.62568 113.806 10.0669 112.228 10.9492C110.651 11.8316 109.394 13.0481 108.458 14.5989C107.549 16.123 107.095 17.861 107.095 19.8128C107.095 21.7647 107.562 23.516 108.498 25.0668C109.434 26.6176 110.718 27.8342 112.349 28.7166ZM113.138 17.6391C113.218 17.3577 113.316 17.093 113.431 16.8449C113.833 16.0428 114.381 15.4278 115.076 15C115.798 14.5455 116.64 14.3182 117.603 14.3182C118.512 14.3182 119.274 14.5187 119.889 14.9198C120.53 15.2941 121.012 15.8556 121.333 16.6043C121.467 16.9061 121.575 17.243 121.658 17.615L113.138 17.6391Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M90.6482 28.9171C92.0386 29.639 93.6295 30 95.421 30C97.2124 30 98.7899 29.639 100.154 28.9171C101.517 28.1684 102.587 27.1524 103.362 25.869C104.138 24.5588 104.525 23.0481 104.525 21.3369V10.0668H98.3889V21.2968C98.3889 22.3128 98.1215 23.115 97.5867 23.7032C97.052 24.2647 96.33 24.5454 95.421 24.5454C94.7792 24.5454 94.2311 24.4118 93.7766 24.1444C93.322 23.877 92.9744 23.5027 92.7338 23.0214C92.5199 22.5401 92.4129 21.9652 92.4129 21.2968V10.0668H86.2766V21.377C86.2766 23.0615 86.6643 24.5588 87.4397 25.869C88.2151 27.1524 89.2846 28.1684 90.6482 28.9171Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M71.3524 29.5588L63.0904 10.0668H69.708L73.8792 22.1333L78.0503 10.0668H84.5476L76.2856 29.5588H71.3524Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M55.1386 18.4492V29.5588H61.2749V17.0855C61.2749 15.7486 60.9541 14.5187 60.3124 13.3957C59.6707 12.2727 58.7883 11.377 57.6653 10.7085C56.5691 10.0134 55.299 9.66576 53.8552 9.66576C52.3578 9.66576 51.0076 9.98662 49.8044 10.6283C49.2874 10.8986 48.8195 11.2204 48.4006 11.5939V10.0668H42.2642V29.5588H48.4006V18.4492C48.4006 17.7807 48.5477 17.1925 48.8418 16.6845C49.1359 16.1497 49.537 15.7486 50.045 15.4813C50.553 15.1872 51.1413 15.0401 51.8097 15.0401C52.7723 15.0401 53.561 15.3609 54.176 16.0027C54.8177 16.6176 55.1386 17.4331 55.1386 18.4492Z\"\n fill=\"currentColor\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M26.5533 29.9599C24.7619 29.9599 23.1576 29.5187 21.7405 28.6363C20.3501 27.754 19.2405 26.5508 18.4116 25.0267C17.6094 23.5027 17.2084 21.7647 17.2084 19.8128C17.2084 17.8609 17.6094 16.123 18.4116 14.5989C19.2405 13.0749 20.3501 11.8716 21.7405 10.9893C23.1576 10.1069 24.7619 9.66576 26.5533 9.66576C27.8635 9.66576 29.0399 9.91977 30.0827 10.4278C30.7839 10.7608 31.3988 11.1801 31.9276 11.6855V10.0668H37.9437V29.5588H31.9276V27.9791C31.4153 28.4634 30.8137 28.8697 30.1228 29.1978C29.0533 29.7059 27.8635 29.9599 26.5533 29.9599ZM27.7966 24.4251C29.1068 24.4251 30.1629 23.9973 30.9651 23.1417C31.7672 22.2593 32.1683 21.1497 32.1683 19.8128C32.1683 18.9037 31.9811 18.1016 31.6068 17.4064C31.2592 16.7112 30.7512 16.1765 30.0827 15.8021C29.441 15.4011 28.6923 15.2005 27.8367 15.2005C26.9811 15.2005 26.2191 15.4011 25.5506 15.8021C24.9089 16.1765 24.3875 16.7112 23.9865 17.4064C23.6121 18.1016 23.425 18.9037 23.425 19.8128C23.425 20.6952 23.6121 21.4839 23.9865 22.1791C24.3608 22.8743 24.8822 23.4224 25.5506 23.8235C26.2191 24.2246 26.9677 24.4251 27.7966 24.4251Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport const Logo = React.forwardRef<HTMLDivElement, LogoProps>(\n ({ className, type = \"Full\", color = \"Full colour\", ...props }, ref) => {\n const colors = getLogoColors(color, type);\n const showIcon = type === \"Full\" || type === \"Icon\" || type === \"Portrait\";\n const showWordmark = type === \"Full\" || type === \"Wordmark\" || type === \"Portrait\";\n\n // When aria-label is provided, add role=\"img\" for proper accessibility\n const ariaProps = props[\"aria-label\"] ? { role: \"img\" as const } : {};\n\n return (\n <div\n ref={ref}\n data-testid=\"logo\"\n className={cn(\n \"inline-flex items-center text-body-900 dark:text-body-100\",\n type === \"Portrait\" ? \"flex-col\" : \"flex-row\",\n type === \"Full\" && \"gap-2\",\n className,\n )}\n {...ariaProps}\n {...props}\n >\n {showIcon && (\n <svg\n viewBox=\"0 0 39 39\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"shrink-0\", type === \"Icon\" ? \"h-10 w-10\" : \"h-8 w-8\")}\n aria-hidden=\"true\"\n data-testid=\"logo-icon\"\n >\n <path\n d=\"M0 11.2339C0 5.02957 5.02957 0 11.2339 0H27.7661C33.9704 0 39 5.02957 39 11.2339V27.7661C39 33.9704 33.9704 39 27.7661 39H11.2339C5.02957 39 0 33.9704 0 27.7661V11.2339Z\"\n {...(color === \"Decolour\" ? { className: colors.iconClass } : { fill: colors.icon })}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.277 30.5825C11.4418 30.5825 11.0355 29.8659 11.2059 29.1153C11.4275 28.0916 12.5838 25.0548 11.7145 23.6899C10.4361 21.6938 7.25562 21.9838 6.5397 20.9602C6.02371 20.2089 6.48355 19.478 7.19738 19.0493C8.79967 18.0257 11.902 18.3157 14.9191 16.3025C16.5895 15.2106 18.1237 12.9927 18.993 11.662C20.2203 9.78527 20.7487 9.39287 23.3226 9.39287H32.3376C33.7574 9.39287 34.202 11.8036 31.8852 12.0686C31.2886 12.1368 29.6977 12.3757 27.4306 12.6487C25.2658 12.9216 20.4589 13.5728 22.351 16.6608C23.7658 18.2816 26.7488 18.0769 27.4306 19.0493C27.9238 19.7225 27.4875 20.4384 26.9505 20.7824C25.3311 21.8061 21.8737 21.6938 18.8566 23.6899C16.8111 25.0548 15.1478 28.0916 14.4659 29.1153C13.9716 29.8659 13.1293 30.5825 12.294 30.5825H12.277Z\"\n {...(color === \"Decolour\"\n ? { className: colors.iconInnerClass }\n : { fill: colors.iconInner })}\n />\n </svg>\n )}\n {showWordmark && <WordmarkSVG className={cn(colors.textClass)} />}\n </div>\n );\n },\n);\n\nLogo.displayName = \"Logo\";\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
import { IconButton } from "../IconButton/IconButton.mjs";
|
|
6
|
+
import { ChevronLeftIcon } from "../Icons/ChevronLeftIcon.mjs";
|
|
7
|
+
import { ChevronRightIcon } from "../Icons/ChevronRightIcon.mjs";
|
|
8
|
+
function getVisiblePages(currentPage, totalPages) {
|
|
9
|
+
if (totalPages <= 7) {
|
|
10
|
+
return Array.from({ length: totalPages }, (_, i) => i + 1);
|
|
11
|
+
}
|
|
12
|
+
const pages = [1];
|
|
13
|
+
if (currentPage <= 4) {
|
|
14
|
+
pages.push(2, 3, 4, 5, "ellipsis-end");
|
|
15
|
+
} else if (currentPage >= totalPages - 3) {
|
|
16
|
+
pages.push("ellipsis-start", totalPages - 4, totalPages - 3, totalPages - 2, totalPages - 1);
|
|
17
|
+
} else {
|
|
18
|
+
pages.push("ellipsis-start", currentPage - 1, currentPage, currentPage + 1, "ellipsis-end");
|
|
19
|
+
}
|
|
20
|
+
pages.push(totalPages);
|
|
21
|
+
return pages;
|
|
22
|
+
}
|
|
23
|
+
const Pagination = React.forwardRef(
|
|
24
|
+
({
|
|
25
|
+
variant = "default",
|
|
26
|
+
totalPages,
|
|
27
|
+
currentPage,
|
|
28
|
+
onPageChange,
|
|
29
|
+
ariaLabel = "Pagination",
|
|
30
|
+
previousLabel = "Previous page",
|
|
31
|
+
nextLabel = "Next page",
|
|
32
|
+
getPageLabel = (page) => `Page ${page}`,
|
|
33
|
+
className,
|
|
34
|
+
...props
|
|
35
|
+
}, ref) => {
|
|
36
|
+
const isFirstPage = currentPage <= 1;
|
|
37
|
+
const isLastPage = currentPage >= totalPages;
|
|
38
|
+
const handlePrevious = () => {
|
|
39
|
+
if (!isFirstPage) onPageChange?.(currentPage - 1);
|
|
40
|
+
};
|
|
41
|
+
const handleNext = () => {
|
|
42
|
+
if (!isLastPage) onPageChange?.(currentPage + 1);
|
|
43
|
+
};
|
|
44
|
+
return /* @__PURE__ */ jsxs(
|
|
45
|
+
"nav",
|
|
46
|
+
{
|
|
47
|
+
ref,
|
|
48
|
+
"aria-label": ariaLabel,
|
|
49
|
+
className: cn(
|
|
50
|
+
"inline-flex items-center",
|
|
51
|
+
variant === "default" && "gap-3",
|
|
52
|
+
variant === "dots" && "gap-4",
|
|
53
|
+
className
|
|
54
|
+
),
|
|
55
|
+
...props,
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsx(
|
|
58
|
+
IconButton,
|
|
59
|
+
{
|
|
60
|
+
variant: "tertiary",
|
|
61
|
+
size: "32",
|
|
62
|
+
icon: /* @__PURE__ */ jsx(ChevronLeftIcon, {}),
|
|
63
|
+
"aria-label": previousLabel,
|
|
64
|
+
disabled: isFirstPage,
|
|
65
|
+
onClick: handlePrevious
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
variant === "default" && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: getVisiblePages(currentPage, totalPages).map(
|
|
69
|
+
(page) => typeof page === "string" ? /* @__PURE__ */ jsx(
|
|
70
|
+
"span",
|
|
71
|
+
{
|
|
72
|
+
className: "flex size-4 items-center justify-center text-body-200 text-xs",
|
|
73
|
+
"aria-hidden": "true",
|
|
74
|
+
children: "…"
|
|
75
|
+
},
|
|
76
|
+
page
|
|
77
|
+
) : /* @__PURE__ */ jsx(
|
|
78
|
+
"button",
|
|
79
|
+
{
|
|
80
|
+
type: "button",
|
|
81
|
+
"aria-label": getPageLabel(page),
|
|
82
|
+
"aria-current": page === currentPage ? "page" : void 0,
|
|
83
|
+
onClick: () => onPageChange?.(page),
|
|
84
|
+
className: cn(
|
|
85
|
+
"flex size-4 cursor-pointer items-center justify-center rounded-full text-xs transition-colors",
|
|
86
|
+
page === currentPage ? "bg-neutral-400 text-body-300" : "bg-neutral-100 text-body-100 hover:bg-neutral-200"
|
|
87
|
+
),
|
|
88
|
+
children: page
|
|
89
|
+
},
|
|
90
|
+
page
|
|
91
|
+
)
|
|
92
|
+
) }),
|
|
93
|
+
variant === "dots" && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => /* @__PURE__ */ jsx(
|
|
94
|
+
"button",
|
|
95
|
+
{
|
|
96
|
+
type: "button",
|
|
97
|
+
"aria-label": getPageLabel(page),
|
|
98
|
+
"aria-current": page === currentPage ? "page" : void 0,
|
|
99
|
+
onClick: () => onPageChange?.(page),
|
|
100
|
+
className: cn(
|
|
101
|
+
"cursor-pointer rounded-full transition-all",
|
|
102
|
+
page === currentPage ? "size-2 bg-neutral-400" : "size-1.5 bg-neutral-200 hover:bg-neutral-250"
|
|
103
|
+
)
|
|
104
|
+
},
|
|
105
|
+
page
|
|
106
|
+
)) }),
|
|
107
|
+
/* @__PURE__ */ jsx(
|
|
108
|
+
IconButton,
|
|
109
|
+
{
|
|
110
|
+
variant: "tertiary",
|
|
111
|
+
size: "32",
|
|
112
|
+
icon: /* @__PURE__ */ jsx(ChevronRightIcon, {}),
|
|
113
|
+
"aria-label": nextLabel,
|
|
114
|
+
disabled: isLastPage,
|
|
115
|
+
onClick: handleNext
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
Pagination.displayName = "Pagination";
|
|
124
|
+
export {
|
|
125
|
+
Pagination
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=Pagination.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.mjs","sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport { ChevronLeftIcon } from \"../Icons/ChevronLeftIcon\";\nimport { ChevronRightIcon } from \"../Icons/ChevronRightIcon\";\n\nexport type PaginationVariant = \"default\" | \"dots\";\n\nexport interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Visual style variant */\n variant?: PaginationVariant;\n /** Total number of pages */\n totalPages: number;\n /** Current active page (1-indexed) */\n currentPage: number;\n /** Called when the page changes */\n onPageChange?: (page: number) => void;\n /** Label for the nav landmark. @default \"Pagination\" */\n ariaLabel?: string;\n /** Label for the previous button. @default \"Previous page\" */\n previousLabel?: string;\n /** Label for the next button. @default \"Next page\" */\n nextLabel?: string;\n /** Generates the aria-label for each page button. @default (page) => \\`Page ${page}\\` */\n getPageLabel?: (page: number) => string;\n}\n\ntype PageItem = number | \"ellipsis-start\" | \"ellipsis-end\";\n\nfunction getVisiblePages(currentPage: number, totalPages: number): PageItem[] {\n if (totalPages <= 7) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: PageItem[] = [1];\n\n if (currentPage <= 4) {\n pages.push(2, 3, 4, 5, \"ellipsis-end\");\n } else if (currentPage >= totalPages - 3) {\n pages.push(\"ellipsis-start\", totalPages - 4, totalPages - 3, totalPages - 2, totalPages - 1);\n } else {\n pages.push(\"ellipsis-start\", currentPage - 1, currentPage, currentPage + 1, \"ellipsis-end\");\n }\n\n pages.push(totalPages);\n return pages;\n}\n\nexport const Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n (\n {\n variant = \"default\",\n totalPages,\n currentPage,\n onPageChange,\n ariaLabel = \"Pagination\",\n previousLabel = \"Previous page\",\n nextLabel = \"Next page\",\n getPageLabel = (page: number) => `Page ${page}`,\n className,\n ...props\n },\n ref,\n ) => {\n const isFirstPage = currentPage <= 1;\n const isLastPage = currentPage >= totalPages;\n\n const handlePrevious = () => {\n if (!isFirstPage) onPageChange?.(currentPage - 1);\n };\n\n const handleNext = () => {\n if (!isLastPage) onPageChange?.(currentPage + 1);\n };\n\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center\",\n variant === \"default\" && \"gap-3\",\n variant === \"dots\" && \"gap-4\",\n className,\n )}\n {...props}\n >\n <IconButton\n variant=\"tertiary\"\n size=\"32\"\n icon={<ChevronLeftIcon />}\n aria-label={previousLabel}\n disabled={isFirstPage}\n onClick={handlePrevious}\n />\n\n {variant === \"default\" && (\n <div className=\"flex items-center gap-3\">\n {getVisiblePages(currentPage, totalPages).map((page) =>\n typeof page === \"string\" ? (\n <span\n key={page}\n className=\"flex size-4 items-center justify-center text-body-200 text-xs\"\n aria-hidden=\"true\"\n >\n …\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n aria-label={getPageLabel(page)}\n aria-current={page === currentPage ? \"page\" : undefined}\n onClick={() => onPageChange?.(page)}\n className={cn(\n \"flex size-4 cursor-pointer items-center justify-center rounded-full text-xs transition-colors\",\n page === currentPage\n ? \"bg-neutral-400 text-body-300\"\n : \"bg-neutral-100 text-body-100 hover:bg-neutral-200\",\n )}\n >\n {page}\n </button>\n ),\n )}\n </div>\n )}\n\n {variant === \"dots\" && (\n <div className=\"flex items-center gap-2\">\n {Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => (\n <button\n key={page}\n type=\"button\"\n aria-label={getPageLabel(page)}\n aria-current={page === currentPage ? \"page\" : undefined}\n onClick={() => onPageChange?.(page)}\n className={cn(\n \"cursor-pointer rounded-full transition-all\",\n page === currentPage\n ? \"size-2 bg-neutral-400\"\n : \"size-1.5 bg-neutral-200 hover:bg-neutral-250\",\n )}\n />\n ))}\n </div>\n )}\n\n <IconButton\n variant=\"tertiary\"\n size=\"32\"\n icon={<ChevronRightIcon />}\n aria-label={nextLabel}\n disabled={isLastPage}\n onClick={handleNext}\n />\n </nav>\n );\n },\n);\n\nPagination.displayName = \"Pagination\";\n"],"names":[],"mappings":"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"}
|