@turtleclub/ui 0.3.0-beta.8 → 0.3.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/.prettierrc.json +4 -0
- package/.turbo/turbo-build.log +152 -26
- package/CHANGELOG.md +338 -0
- package/dist/index.cjs +178 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +25526 -4757
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/components/features/data-table.d.ts +9 -0
- package/dist/types/components/features/data-table.d.ts.map +1 -0
- package/dist/types/components/features/index.d.ts +5 -0
- package/dist/types/components/features/index.d.ts.map +1 -0
- package/dist/types/components/features/page-heading.d.ts +10 -0
- package/dist/types/components/features/page-heading.d.ts.map +1 -0
- package/dist/types/components/features/search-bar.d.ts +10 -0
- package/dist/types/components/features/search-bar.d.ts.map +1 -0
- package/dist/types/components/features/segmented-navigation.d.ts +7 -0
- package/dist/types/components/features/segmented-navigation.d.ts.map +1 -0
- package/dist/types/components/features/sidebar-layout.d.ts +36 -0
- package/dist/types/components/features/sidebar-layout.d.ts.map +1 -0
- package/dist/types/components/icons/arrow.d.ts +4 -0
- package/dist/types/components/icons/arrow.d.ts.map +1 -0
- package/dist/types/components/icons/beta.d.ts +4 -0
- package/dist/types/components/icons/beta.d.ts.map +1 -0
- package/dist/types/components/icons/dot.d.ts +4 -0
- package/dist/types/components/icons/dot.d.ts.map +1 -0
- package/dist/types/components/icons/index.d.ts +8 -0
- package/dist/types/components/icons/index.d.ts.map +1 -0
- package/dist/types/components/icons/issue.d.ts +4 -0
- package/dist/types/components/icons/issue.d.ts.map +1 -0
- package/dist/types/components/icons/turtle.d.ts +4 -0
- package/dist/types/components/icons/turtle.d.ts.map +1 -0
- package/dist/types/components/icons/update.d.ts +4 -0
- package/dist/types/components/icons/update.d.ts.map +1 -0
- package/dist/types/components/icons/warning.d.ts +4 -0
- package/dist/types/components/icons/warning.d.ts.map +1 -0
- package/dist/types/components/molecules/index.d.ts +2 -0
- package/dist/types/components/molecules/index.d.ts.map +1 -1
- package/dist/types/components/molecules/opportunity/index.d.ts +3 -1
- package/dist/types/components/molecules/opportunity/index.d.ts.map +1 -1
- package/dist/types/components/molecules/opportunity/opportunity-apr.d.ts +8 -3
- package/dist/types/components/molecules/opportunity/opportunity-apr.d.ts.map +1 -1
- package/dist/types/components/molecules/opportunity/opportunity-disclaimer.d.ts +1 -2
- package/dist/types/components/molecules/opportunity/opportunity-disclaimer.d.ts.map +1 -1
- package/dist/types/components/molecules/opportunity/opportunity-list/hooks/index.d.ts +3 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/hooks/index.d.ts.map +1 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/hooks/use-opportunity-filtering.d.ts +11 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/hooks/use-opportunity-filtering.d.ts.map +1 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/hooks/use-opportunity-grouping.d.ts +9 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/hooks/use-opportunity-grouping.d.ts.map +1 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/index.d.ts +2 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/index.d.ts.map +1 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/opportunity-list.d.ts +22 -0
- package/dist/types/components/molecules/opportunity/opportunity-list/opportunity-list.d.ts.map +1 -0
- package/dist/types/components/molecules/opportunity/opportunity-rate-estimator.d.ts +1 -2
- package/dist/types/components/molecules/opportunity/opportunity-rate-estimator.d.ts.map +1 -1
- package/dist/types/components/molecules/opportunity/opportunity-section.d.ts +4 -0
- package/dist/types/components/molecules/opportunity/opportunity-section.d.ts.map +1 -1
- package/dist/types/components/molecules/opportunity/opportunity-selector.d.ts +1 -2
- package/dist/types/components/molecules/opportunity/opportunity-selector.d.ts.map +1 -1
- package/dist/types/components/molecules/opportunity/opportunity-type.d.ts +1 -2
- package/dist/types/components/molecules/opportunity/opportunity-type.d.ts.map +1 -1
- package/dist/types/components/molecules/route-details.d.ts +1 -1
- package/dist/types/components/molecules/route-details.d.ts.map +1 -1
- package/dist/types/components/molecules/slippage-selector.d.ts +1 -2
- package/dist/types/components/molecules/slippage-selector.d.ts.map +1 -1
- package/dist/types/components/molecules/swap-details.d.ts.map +1 -1
- package/dist/types/components/molecules/swap-input.d.ts +5 -1
- package/dist/types/components/molecules/swap-input.d.ts.map +1 -1
- package/dist/types/components/molecules/tabs.d.ts +18 -0
- package/dist/types/components/molecules/tabs.d.ts.map +1 -0
- package/dist/types/components/molecules/token-selector.d.ts +1 -1
- package/dist/types/components/molecules/token-selector.d.ts.map +1 -1
- package/dist/types/components/molecules/tx-status.d.ts.map +1 -1
- package/dist/types/components/molecules/widget/asset-list/asset-filters.d.ts +20 -0
- package/dist/types/components/molecules/widget/asset-list/asset-filters.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/asset-list/asset-list.d.ts +35 -0
- package/dist/types/components/molecules/widget/asset-list/asset-list.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/asset-list/asset-row.d.ts +12 -0
- package/dist/types/components/molecules/widget/asset-list/asset-row.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/asset-list/hooks/index.d.ts +3 -0
- package/dist/types/components/molecules/widget/asset-list/hooks/index.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/asset-list/hooks/use-asset-filtering.d.ts +10 -0
- package/dist/types/components/molecules/widget/asset-list/hooks/use-asset-filtering.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/asset-list/hooks/use-asset-grouping.d.ts +9 -0
- package/dist/types/components/molecules/widget/asset-list/hooks/use-asset-grouping.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/asset-list/index.d.ts +4 -0
- package/dist/types/components/molecules/widget/asset-list/index.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/base-selector.d.ts +17 -0
- package/dist/types/components/molecules/widget/base-selector.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/campaign-item.d.ts +20 -0
- package/dist/types/components/molecules/widget/campaign-item.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/deal-item.d.ts +20 -0
- package/dist/types/components/molecules/widget/deal-item.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/index.d.ts +14 -0
- package/dist/types/components/molecules/widget/index.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/opportunity-item.d.ts +33 -0
- package/dist/types/components/molecules/widget/opportunity-item.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/widget-item-stats.d.ts +14 -0
- package/dist/types/components/molecules/widget/widget-item-stats.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/widget-item.d.ts +26 -0
- package/dist/types/components/molecules/widget/widget-item.d.ts.map +1 -0
- package/dist/types/components/molecules/widget/widget-list-items.d.ts +20 -0
- package/dist/types/components/molecules/widget/widget-list-items.d.ts.map +1 -0
- package/dist/types/components/ui/alert-dialog.d.ts +15 -0
- package/dist/types/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/types/components/ui/animated-background/animated-background.d.ts +9 -0
- package/dist/types/components/ui/animated-background/animated-background.d.ts.map +1 -0
- package/dist/types/components/ui/animated-background/index.d.ts +2 -0
- package/dist/types/components/ui/animated-background/index.d.ts.map +1 -0
- package/dist/types/components/ui/avatar.d.ts +18 -4
- package/dist/types/components/ui/avatar.d.ts.map +1 -1
- package/dist/types/components/ui/badge.d.ts +5 -4
- package/dist/types/components/ui/badge.d.ts.map +1 -1
- package/dist/types/components/ui/banner.d.ts +7 -0
- package/dist/types/components/ui/banner.d.ts.map +1 -0
- package/dist/types/components/ui/button.d.ts +8 -6
- package/dist/types/components/ui/button.d.ts.map +1 -1
- package/dist/types/components/ui/card.d.ts +10 -11
- package/dist/types/components/ui/card.d.ts.map +1 -1
- package/dist/types/components/ui/checkbox.d.ts +5 -0
- package/dist/types/components/ui/checkbox.d.ts.map +1 -0
- package/dist/types/components/ui/chip.d.ts +1 -1
- package/dist/types/components/ui/chip.d.ts.map +1 -1
- package/dist/types/components/ui/collapsible.d.ts +7 -0
- package/dist/types/components/ui/collapsible.d.ts.map +1 -0
- package/dist/types/components/ui/combobox.d.ts +148 -0
- package/dist/types/components/ui/combobox.d.ts.map +1 -0
- package/dist/types/components/ui/command.d.ts +19 -0
- package/dist/types/components/ui/command.d.ts.map +1 -0
- package/dist/types/components/ui/dialog.d.ts +10 -10
- package/dist/types/components/ui/dialog.d.ts.map +1 -1
- package/dist/types/components/ui/dropdown.d.ts +30 -0
- package/dist/types/components/ui/dropdown.d.ts.map +1 -0
- package/dist/types/components/ui/field.d.ts +26 -0
- package/dist/types/components/ui/field.d.ts.map +1 -0
- package/dist/types/components/ui/heading.d.ts +12 -0
- package/dist/types/components/ui/heading.d.ts.map +1 -0
- package/dist/types/components/ui/hover-card.d.ts +7 -7
- package/dist/types/components/ui/hover-card.d.ts.map +1 -1
- package/dist/types/components/ui/icon-animation.d.ts +1 -1
- package/dist/types/components/ui/icon-animation.d.ts.map +1 -1
- package/dist/types/components/ui/icon-list.d.ts +17 -0
- package/dist/types/components/ui/icon-list.d.ts.map +1 -0
- package/dist/types/components/ui/index.d.ts +28 -8
- package/dist/types/components/ui/index.d.ts.map +1 -1
- package/dist/types/components/ui/info-card.d.ts +4 -4
- package/dist/types/components/ui/info-card.d.ts.map +1 -1
- package/dist/types/components/ui/input-group.d.ts +17 -0
- package/dist/types/components/ui/input-group.d.ts.map +1 -0
- package/dist/types/components/ui/input.d.ts +1 -3
- package/dist/types/components/ui/input.d.ts.map +1 -1
- package/dist/types/components/ui/label-with-icon.d.ts +3 -3
- package/dist/types/components/ui/label-with-icon.d.ts.map +1 -1
- package/dist/types/components/ui/label.d.ts +1 -1
- package/dist/types/components/ui/label.d.ts.map +1 -1
- package/dist/types/components/ui/multi-select.d.ts +192 -0
- package/dist/types/components/ui/multi-select.d.ts.map +1 -0
- package/dist/types/components/ui/navigation-bar.d.ts +2 -2
- package/dist/types/components/ui/navigation-bar.d.ts.map +1 -1
- package/dist/types/components/ui/navigation-menu.d.ts +15 -0
- package/dist/types/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/types/components/ui/opportunity-details-v1.d.ts +1 -1
- package/dist/types/components/ui/opportunity-details-v1.d.ts.map +1 -1
- package/dist/types/components/ui/popover.d.ts +8 -0
- package/dist/types/components/ui/popover.d.ts.map +1 -0
- package/dist/types/components/ui/scroll-area.d.ts +2 -2
- package/dist/types/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/types/components/ui/segment-control.d.ts +19 -0
- package/dist/types/components/ui/segment-control.d.ts.map +1 -0
- package/dist/types/components/ui/select.d.ts +14 -13
- package/dist/types/components/ui/select.d.ts.map +1 -1
- package/dist/types/components/ui/separator.d.ts +1 -1
- package/dist/types/components/ui/separator.d.ts.map +1 -1
- package/dist/types/components/ui/sheet.d.ts +14 -0
- package/dist/types/components/ui/sheet.d.ts.map +1 -0
- package/dist/types/components/ui/sidebar.d.ts +69 -0
- package/dist/types/components/ui/sidebar.d.ts.map +1 -0
- package/dist/types/components/ui/skeleton.d.ts +4 -0
- package/dist/types/components/ui/skeleton.d.ts.map +1 -0
- package/dist/types/components/ui/slider.d.ts +5 -0
- package/dist/types/components/ui/slider.d.ts.map +1 -0
- package/dist/types/components/ui/sonner.d.ts +1 -2
- package/dist/types/components/ui/sonner.d.ts.map +1 -1
- package/dist/types/components/ui/switch.d.ts +1 -1
- package/dist/types/components/ui/switch.d.ts.map +1 -1
- package/dist/types/components/ui/table-shadcn.d.ts +11 -0
- package/dist/types/components/ui/table-shadcn.d.ts.map +1 -0
- package/dist/types/components/ui/table.d.ts +2 -2
- package/dist/types/components/ui/table.d.ts.map +1 -1
- package/dist/types/components/ui/textarea.d.ts +4 -0
- package/dist/types/components/ui/textarea.d.ts.map +1 -0
- package/dist/types/components/ui/toggle-group.d.ts +2 -2
- package/dist/types/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/types/components/ui/toggle.d.ts +2 -2
- package/dist/types/components/ui/toggle.d.ts.map +1 -1
- package/dist/types/components/ui/tooltip.d.ts +7 -4
- package/dist/types/components/ui/tooltip.d.ts.map +1 -1
- package/dist/types/hooks/useIsMobile.d.ts +7 -0
- package/dist/types/hooks/useIsMobile.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +39 -28
- package/src/components/features/data-table.tsx +96 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/page-heading.tsx +22 -0
- package/src/components/features/search-bar.tsx +50 -0
- package/src/components/features/segmented-navigation.tsx +18 -0
- package/src/components/features/sidebar-layout.tsx +190 -0
- package/src/components/icons/arrow.tsx +23 -0
- package/src/components/icons/beta.tsx +86 -0
- package/src/components/icons/dot.tsx +89 -0
- package/src/components/icons/index.ts +7 -0
- package/src/components/icons/issue.tsx +97 -0
- package/src/components/icons/turtle.tsx +143 -0
- package/src/components/icons/update.tsx +108 -0
- package/src/components/icons/warning.tsx +86 -0
- package/src/components/molecules/index.ts +2 -1
- package/src/components/molecules/opportunity/index.ts +5 -1
- package/src/components/molecules/opportunity/opportunity-apr.tsx +99 -16
- package/src/components/molecules/opportunity/opportunity-list/hooks/index.ts +2 -0
- package/src/components/molecules/opportunity/opportunity-list/hooks/use-opportunity-filtering.ts +45 -0
- package/src/components/molecules/opportunity/opportunity-list/hooks/use-opportunity-grouping.ts +81 -0
- package/src/components/molecules/opportunity/opportunity-list/index.ts +1 -0
- package/src/components/molecules/opportunity/opportunity-list/opportunity-list.tsx +136 -0
- package/src/components/molecules/opportunity/opportunity-rate-estimator.tsx +4 -1
- package/src/components/molecules/opportunity/opportunity-section.tsx +37 -19
- package/src/components/molecules/opportunity/opportunity-selector.tsx +2 -3
- package/src/components/molecules/route-details.tsx +48 -37
- package/src/components/molecules/swap-details.tsx +2 -4
- package/src/components/molecules/swap-input.tsx +56 -21
- package/src/components/molecules/tabs.tsx +67 -0
- package/src/components/molecules/token-selector.tsx +2 -2
- package/src/components/molecules/tx-status.tsx +1 -5
- package/src/components/molecules/widget/asset-list/asset-filters.tsx +111 -0
- package/src/components/molecules/widget/asset-list/asset-list.tsx +171 -0
- package/src/components/molecules/widget/asset-list/asset-row.tsx +45 -0
- package/src/components/molecules/widget/asset-list/hooks/index.ts +2 -0
- package/src/components/molecules/widget/asset-list/hooks/use-asset-filtering.ts +42 -0
- package/src/components/molecules/widget/asset-list/hooks/use-asset-grouping.ts +78 -0
- package/src/components/molecules/widget/asset-list/index.ts +3 -0
- package/src/components/molecules/widget/base-selector.tsx +104 -0
- package/src/components/molecules/widget/campaign-item.tsx +76 -0
- package/src/components/molecules/widget/deal-item.tsx +80 -0
- package/src/components/molecules/widget/index.ts +33 -0
- package/src/components/molecules/widget/opportunity-item.tsx +91 -0
- package/src/components/molecules/widget/widget-item-stats.tsx +50 -0
- package/src/components/molecules/widget/widget-item.tsx +138 -0
- package/src/components/molecules/widget/widget-list-items.tsx +86 -0
- package/src/components/ui/alert-dialog.tsx +146 -0
- package/src/components/ui/animated-background/animated-background.tsx +174 -0
- package/src/components/ui/animated-background/index.ts +1 -0
- package/src/components/ui/avatar.tsx +34 -19
- package/src/components/ui/badge.tsx +18 -8
- package/src/components/ui/banner.tsx +78 -0
- package/src/components/ui/button.tsx +51 -21
- package/src/components/ui/card.tsx +21 -61
- package/src/components/ui/checkbox.tsx +29 -0
- package/src/components/ui/collapsible.tsx +22 -0
- package/src/components/ui/combobox.tsx +617 -0
- package/src/components/ui/command.tsx +164 -0
- package/src/components/ui/dialog.tsx +5 -9
- package/src/components/ui/dropdown.tsx +263 -0
- package/src/components/ui/field.tsx +232 -0
- package/src/components/ui/heading.tsx +49 -0
- package/src/components/ui/hover-card.tsx +10 -10
- package/src/components/ui/icon-list.tsx +141 -0
- package/src/components/ui/index.ts +29 -9
- package/src/components/ui/info-card.tsx +1 -1
- package/src/components/ui/input-group.tsx +158 -0
- package/src/components/ui/input.tsx +17 -25
- package/src/components/ui/label-with-icon.tsx +40 -30
- package/src/components/ui/label.tsx +8 -9
- package/src/components/ui/multi-select.tsx +1000 -0
- package/src/components/ui/navigation-menu.tsx +181 -0
- package/src/components/ui/opportunity-details-v1.tsx +2 -2
- package/src/components/ui/popover.tsx +42 -0
- package/src/components/ui/scroll-area.tsx +11 -11
- package/src/components/ui/segment-control.tsx +140 -0
- package/src/components/ui/select.tsx +26 -31
- package/src/components/ui/sheet.tsx +130 -0
- package/src/components/ui/sidebar.tsx +693 -0
- package/src/components/ui/skeleton.tsx +14 -0
- package/src/components/ui/slider.tsx +58 -0
- package/src/components/ui/switch.tsx +8 -11
- package/src/components/ui/{table-shad.tsx → table-shadcn.tsx} +25 -39
- package/src/components/ui/table.tsx +3 -2
- package/src/components/ui/textarea.tsx +22 -0
- package/src/components/ui/tooltip.tsx +11 -7
- package/src/hooks/useIsMobile.ts +74 -0
- package/src/index.ts +2 -0
- package/src/styles/globals.css +87 -20
- package/src/styles/themes/semantic.css +11 -5
- package/src/styles/tokens/colors.css +64 -53
- package/src/styles/tokens/radius.css +3 -34
- package/tsconfig.json +11 -15
- package/vite.config.js +41 -57
- package/dist/types/components/molecules/opportunity/opportunity-item.d.ts +0 -15
- package/dist/types/components/molecules/opportunity/opportunity-item.d.ts.map +0 -1
- package/dist/types/components/ui/table-shad.d.ts +0 -11
- package/dist/types/components/ui/table-shad.d.ts.map +0 -1
- package/src/components/molecules/opportunity/opportunity-item.tsx +0 -93
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Input, InputProps } from "../ui";
|
|
3
|
+
import { Search } from "lucide-react";
|
|
4
|
+
|
|
5
|
+
type Props = {
|
|
6
|
+
value: string;
|
|
7
|
+
onChange: (value: string) => void;
|
|
8
|
+
debounce?: number;
|
|
9
|
+
} & Omit<InputProps, "onChange">;
|
|
10
|
+
|
|
11
|
+
export const SearchBar: React.FC<Props> = ({
|
|
12
|
+
value: initialValue,
|
|
13
|
+
onChange,
|
|
14
|
+
debounce = 300,
|
|
15
|
+
...props
|
|
16
|
+
}) => {
|
|
17
|
+
const [value, setValue] = React.useState<string>(initialValue);
|
|
18
|
+
|
|
19
|
+
const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) =>
|
|
20
|
+
setValue(event.target.value);
|
|
21
|
+
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
setValue(initialValue);
|
|
24
|
+
}, [initialValue]);
|
|
25
|
+
|
|
26
|
+
React.useEffect(() => {
|
|
27
|
+
const timeout = setTimeout(() => {
|
|
28
|
+
onChange(value);
|
|
29
|
+
}, debounce);
|
|
30
|
+
|
|
31
|
+
return () => clearTimeout(timeout);
|
|
32
|
+
}, [value]);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div className="border-border relative rounded-full border">
|
|
36
|
+
<Input
|
|
37
|
+
value={value}
|
|
38
|
+
onChange={handleInputChange}
|
|
39
|
+
className="-my-px h-9 max-w-sm md:max-w-md"
|
|
40
|
+
{...props}
|
|
41
|
+
/>
|
|
42
|
+
<button
|
|
43
|
+
type="button"
|
|
44
|
+
className="bg-border border-border absolute inset-y-0 right-0 flex aspect-square h-full items-center justify-center rounded rounded-full"
|
|
45
|
+
>
|
|
46
|
+
<Search className="text-primary size-3" />
|
|
47
|
+
</button>
|
|
48
|
+
</div>
|
|
49
|
+
);
|
|
50
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { SegmentControl, SegmentControlProps } from "../ui";
|
|
3
|
+
|
|
4
|
+
type SegmentedNavigationProps<T extends string> = SegmentControlProps<T> & {
|
|
5
|
+
shouldMobileSelect: boolean;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export function SegmentedNavigation<T extends string>({
|
|
9
|
+
value,
|
|
10
|
+
onChange,
|
|
11
|
+
items,
|
|
12
|
+
}: SegmentedNavigationProps<T>) {
|
|
13
|
+
return (
|
|
14
|
+
<div className="">
|
|
15
|
+
<SegmentControl value={value} onChange={onChange} items={items} />
|
|
16
|
+
</div>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ChevronRight } from "lucide-react";
|
|
3
|
+
import {
|
|
4
|
+
Sidebar,
|
|
5
|
+
SidebarProvider,
|
|
6
|
+
SidebarHeader,
|
|
7
|
+
SidebarContent,
|
|
8
|
+
SidebarGroup,
|
|
9
|
+
SidebarGroupContent,
|
|
10
|
+
SidebarMenu,
|
|
11
|
+
SidebarMenuItem,
|
|
12
|
+
SidebarMenuButton,
|
|
13
|
+
SidebarMenuSub,
|
|
14
|
+
SidebarMenuSubItem,
|
|
15
|
+
SidebarMenuSubButton,
|
|
16
|
+
Collapsible,
|
|
17
|
+
CollapsibleTrigger,
|
|
18
|
+
CollapsibleContent,
|
|
19
|
+
SidebarFooter,
|
|
20
|
+
useSidebar,
|
|
21
|
+
SidebarTrigger,
|
|
22
|
+
} from "../ui";
|
|
23
|
+
import { cn } from "@/lib/utils";
|
|
24
|
+
import { DotIcon, TurtleIcon } from "../icons";
|
|
25
|
+
|
|
26
|
+
type SidebarItemBase = {
|
|
27
|
+
title: string;
|
|
28
|
+
icon?: any;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Item with a URL (no children)
|
|
32
|
+
type SidebarLink = SidebarItemBase & {
|
|
33
|
+
url: string;
|
|
34
|
+
isActive: boolean;
|
|
35
|
+
children?: never;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// Item with children (no URL)
|
|
39
|
+
type SidebarGroupBase = SidebarItemBase & {
|
|
40
|
+
children: SidebarItem[];
|
|
41
|
+
url?: never;
|
|
42
|
+
isActive?: never;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export type SidebarItem = SidebarLink | SidebarGroupBase;
|
|
46
|
+
|
|
47
|
+
export function TurtleSidebarLayout({
|
|
48
|
+
children,
|
|
49
|
+
sidebarSlot,
|
|
50
|
+
sidebarFooter,
|
|
51
|
+
topSlot,
|
|
52
|
+
items,
|
|
53
|
+
linkComponent,
|
|
54
|
+
}: {
|
|
55
|
+
children: React.ReactNode;
|
|
56
|
+
sidebarSlot?: React.ReactNode;
|
|
57
|
+
sidebarFooter?: React.ReactNode;
|
|
58
|
+
topSlot?: React.ReactNode;
|
|
59
|
+
items: SidebarItem[];
|
|
60
|
+
linkComponent: any;
|
|
61
|
+
}) {
|
|
62
|
+
return (
|
|
63
|
+
<SidebarProvider>
|
|
64
|
+
<TurtleSidebar
|
|
65
|
+
items={items}
|
|
66
|
+
sidebarFooter={sidebarFooter}
|
|
67
|
+
sidebarSlot={sidebarSlot}
|
|
68
|
+
linkComponent={linkComponent}
|
|
69
|
+
/>
|
|
70
|
+
<TurtleContainer topSlot={topSlot} children={children} />
|
|
71
|
+
</SidebarProvider>
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function TurtleSidebar({
|
|
76
|
+
items,
|
|
77
|
+
sidebarSlot,
|
|
78
|
+
sidebarFooter,
|
|
79
|
+
linkComponent: Comp = "a",
|
|
80
|
+
}: {
|
|
81
|
+
items: SidebarItem[];
|
|
82
|
+
sidebarSlot?: React.ReactNode;
|
|
83
|
+
sidebarFooter?: React.ReactNode;
|
|
84
|
+
linkComponent: any;
|
|
85
|
+
}) {
|
|
86
|
+
return (
|
|
87
|
+
<Sidebar>
|
|
88
|
+
<SidebarHeader>
|
|
89
|
+
<div className="border-gradient-white border-opacity-20 relative h-[72px] w-full rounded-full shadow">
|
|
90
|
+
<TurtleIcon className="absolute -top-2 -left-2 aspect-square h-[86px]" />
|
|
91
|
+
|
|
92
|
+
<div className="text-primary mt-2 -space-y-1.5 pl-20">
|
|
93
|
+
<div className="text-3xl leading-tight font-bold">Turtle</div>
|
|
94
|
+
<div className="pl-1 text-sm font-medium">Partner Portal</div>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</SidebarHeader>
|
|
98
|
+
<SidebarContent>
|
|
99
|
+
<SidebarGroup>
|
|
100
|
+
<SidebarGroupContent>
|
|
101
|
+
<SidebarMenu>
|
|
102
|
+
{items.map((item) => {
|
|
103
|
+
if (item?.children?.length) {
|
|
104
|
+
return (
|
|
105
|
+
<Collapsible className="group/collapsible">
|
|
106
|
+
<SidebarMenuItem>
|
|
107
|
+
<CollapsibleTrigger asChild>
|
|
108
|
+
<SidebarMenuButton>
|
|
109
|
+
{item.icon && <item.icon />}
|
|
110
|
+
<span className="grow">{item.title}</span>
|
|
111
|
+
<ChevronRight className="transition-all group-data-[state=open]/collapsible:rotate-90" />
|
|
112
|
+
</SidebarMenuButton>
|
|
113
|
+
</CollapsibleTrigger>
|
|
114
|
+
<CollapsibleContent>
|
|
115
|
+
<SidebarMenuSub>
|
|
116
|
+
{item.children.map((child) => (
|
|
117
|
+
<SidebarMenuSubItem key={child.title}>
|
|
118
|
+
<SidebarMenuSubButton asChild isActive={child.isActive}>
|
|
119
|
+
<Comp href={child.url}>
|
|
120
|
+
{child.icon && <child.icon />}
|
|
121
|
+
<span className="grow">{child.title}</span>
|
|
122
|
+
|
|
123
|
+
<div className="relative size-[18px] shrink-0 group-data-[active=false]/menu-sub-button:hidden">
|
|
124
|
+
<DotIcon className="text-primary absolute top-[-15px] left-[-15px] size-12" />
|
|
125
|
+
</div>
|
|
126
|
+
</Comp>
|
|
127
|
+
</SidebarMenuSubButton>
|
|
128
|
+
</SidebarMenuSubItem>
|
|
129
|
+
))}
|
|
130
|
+
</SidebarMenuSub>
|
|
131
|
+
</CollapsibleContent>
|
|
132
|
+
</SidebarMenuItem>
|
|
133
|
+
</Collapsible>
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
return (
|
|
137
|
+
<SidebarMenuItem key={item.title}>
|
|
138
|
+
<SidebarMenuButton asChild isActive={item.isActive}>
|
|
139
|
+
<Comp href={item.url}>
|
|
140
|
+
{item.icon && <item.icon />}
|
|
141
|
+
<span className="grow">{item.title}</span>
|
|
142
|
+
<div className="relative size-[18px] shrink-0 group-data-[active=false]/menu-button:hidden">
|
|
143
|
+
<DotIcon className="text-primary absolute top-[-15px] left-[-15px] size-12" />
|
|
144
|
+
</div>
|
|
145
|
+
</Comp>
|
|
146
|
+
</SidebarMenuButton>
|
|
147
|
+
</SidebarMenuItem>
|
|
148
|
+
);
|
|
149
|
+
})}
|
|
150
|
+
</SidebarMenu>
|
|
151
|
+
</SidebarGroupContent>
|
|
152
|
+
</SidebarGroup>
|
|
153
|
+
<span className="grow" />
|
|
154
|
+
<SidebarGroup>{sidebarSlot}</SidebarGroup>
|
|
155
|
+
</SidebarContent>
|
|
156
|
+
<SidebarFooter>{sidebarFooter}</SidebarFooter>
|
|
157
|
+
</Sidebar>
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export function TurtleContainer({
|
|
162
|
+
children,
|
|
163
|
+
topSlot,
|
|
164
|
+
}: {
|
|
165
|
+
children: React.ReactNode;
|
|
166
|
+
topSlot?: React.ReactNode;
|
|
167
|
+
}) {
|
|
168
|
+
const { state, isMobile } = useSidebar();
|
|
169
|
+
return (
|
|
170
|
+
<div
|
|
171
|
+
className={cn(
|
|
172
|
+
"fixed inset-0 flex h-svh flex-col items-stretch gap-1 py-2 pr-2",
|
|
173
|
+
state === "collapsed" || isMobile ? "pl-2" : "left-64"
|
|
174
|
+
)}
|
|
175
|
+
>
|
|
176
|
+
<div className="flex gap-1">
|
|
177
|
+
<SidebarTrigger className="bg-background border-border !rounded-sm" />
|
|
178
|
+
{topSlot}
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<main
|
|
182
|
+
className={cn(
|
|
183
|
+
"bg-background border-border max-h-[96svh] grow overflow-y-auto rounded-lg border p-6"
|
|
184
|
+
)}
|
|
185
|
+
>
|
|
186
|
+
{children}
|
|
187
|
+
</main>
|
|
188
|
+
</div>
|
|
189
|
+
);
|
|
190
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const ArrowIcon = ({ className }: { className?: string }) => (
|
|
2
|
+
<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
width="13"
|
|
5
|
+
height="14"
|
|
6
|
+
viewBox="0 0 13 14"
|
|
7
|
+
fill="none"
|
|
8
|
+
className={className}
|
|
9
|
+
>
|
|
10
|
+
<path
|
|
11
|
+
d="M3.65174 10.4506L3.05176 9.85059L9.05161 3.85073L9.6516 4.45072L3.65174 10.4506Z"
|
|
12
|
+
fill="currentColor"
|
|
13
|
+
/>
|
|
14
|
+
<path
|
|
15
|
+
d="M9.68168 4.66626L3.31787 4.66626V3.81775L9.68168 3.81775V4.66626Z"
|
|
16
|
+
fill="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
<path
|
|
19
|
+
d="M9.68249 10.1821H8.83398L8.83398 3.81832H9.68249L9.68249 10.1821Z"
|
|
20
|
+
fill="currentColor"
|
|
21
|
+
/>
|
|
22
|
+
</svg>
|
|
23
|
+
);
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export const BetaIcon = ({ className }: { className?: string }) => (
|
|
2
|
+
<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
width="25"
|
|
5
|
+
height="24"
|
|
6
|
+
viewBox="0 0 25 24"
|
|
7
|
+
fill="none"
|
|
8
|
+
className={className}
|
|
9
|
+
>
|
|
10
|
+
<g filter="url(#filter0_i_11400_35580)">
|
|
11
|
+
<rect
|
|
12
|
+
x="0.135742"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
rx="12"
|
|
16
|
+
fill="url(#paint0_linear_11400_35580)"
|
|
17
|
+
fill-opacity="0.6"
|
|
18
|
+
/>
|
|
19
|
+
<rect
|
|
20
|
+
x="0.424196"
|
|
21
|
+
y="0.288454"
|
|
22
|
+
width="23.4231"
|
|
23
|
+
height="23.4231"
|
|
24
|
+
rx="11.7115"
|
|
25
|
+
stroke="url(#paint1_linear_11400_35580)"
|
|
26
|
+
stroke-width="0.576907"
|
|
27
|
+
/>
|
|
28
|
+
<path
|
|
29
|
+
d="M19.0287 14.9918C18.8952 14.9752 17.1068 14.709 16.5278 12.4321C16.4566 12.15 16.1725 11.9799 15.8933 12.0518C15.701 12.1016 15.5607 12.2537 15.5155 12.4355C14.9132 14.7941 13.0125 14.9918 13.007 14.9925C12.7203 15.0264 12.5149 15.2898 12.5485 15.5795C12.5779 15.8305 12.7764 16.0193 13.0146 16.0435C13.148 16.0601 14.9371 16.3263 15.5162 18.6032C15.5873 18.8853 15.8714 19.0554 16.1506 18.9835C16.343 18.9337 16.4833 18.7816 16.5284 18.5998C17.13 16.2406 19.0314 16.0435 19.0369 16.0428C19.3236 16.0089 19.529 15.7455 19.4954 15.4558C19.466 15.2048 19.2675 15.016 19.0287 14.9918ZM16.022 13.9775C16.4456 14.7297 16.9945 15.211 17.5003 15.518C16.9945 15.8243 16.4456 16.3056 16.022 17.0585C15.5983 16.3056 15.0494 15.8243 14.5436 15.518C15.0494 15.2117 15.5983 14.7304 16.022 13.9775ZM14.2904 8.61183C14.1247 8.59178 11.0989 8.18106 10.1359 4.39678C10.0647 4.11467 9.78065 3.94457 9.5014 4.01648C9.3084 4.06626 9.16877 4.21838 9.1236 4.40023C8.1346 8.2827 4.97185 8.61183 4.96295 8.61252C4.67618 8.64571 4.47016 8.90777 4.50233 9.19749C4.53108 9.44986 4.73025 9.63932 4.97048 9.66352C5.13612 9.68357 8.16197 10.0943 9.12497 13.8786C9.19615 14.1607 9.48019 14.3308 9.75943 14.2589C9.95176 14.2091 10.0921 14.057 10.1372 13.8744C11.1262 9.99196 14.289 9.66283 14.2979 9.66214C14.5847 9.62895 14.7907 9.36689 14.7585 9.07717C14.7298 8.82549 14.5306 8.63603 14.2904 8.61183ZM9.63076 6.0922C10.4076 7.7655 11.5862 8.66162 12.5485 9.13802C11.5855 9.61374 10.4076 10.5105 9.63076 12.1838C8.85393 10.5105 7.67603 9.61374 6.71304 9.13802C7.67603 8.66162 8.85393 7.7655 9.63076 6.0922Z"
|
|
30
|
+
fill="#AAF1D5"
|
|
31
|
+
/>
|
|
32
|
+
</g>
|
|
33
|
+
<defs>
|
|
34
|
+
<filter
|
|
35
|
+
id="filter0_i_11400_35580"
|
|
36
|
+
x="0.135742"
|
|
37
|
+
y="0"
|
|
38
|
+
width="24"
|
|
39
|
+
height="24"
|
|
40
|
+
filterUnits="userSpaceOnUse"
|
|
41
|
+
color-interpolation-filters="sRGB"
|
|
42
|
+
>
|
|
43
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix" />
|
|
44
|
+
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
|
|
45
|
+
<feColorMatrix
|
|
46
|
+
in="SourceAlpha"
|
|
47
|
+
type="matrix"
|
|
48
|
+
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
|
49
|
+
result="hardAlpha"
|
|
50
|
+
/>
|
|
51
|
+
<feOffset />
|
|
52
|
+
<feGaussianBlur stdDeviation="1.24267" />
|
|
53
|
+
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1" />
|
|
54
|
+
<feColorMatrix
|
|
55
|
+
type="matrix"
|
|
56
|
+
values="0 0 0 0 0.666667 0 0 0 0 0.945098 0 0 0 0 0.835294 0 0 0 1 0"
|
|
57
|
+
/>
|
|
58
|
+
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11400_35580" />
|
|
59
|
+
</filter>
|
|
60
|
+
<linearGradient
|
|
61
|
+
id="paint0_linear_11400_35580"
|
|
62
|
+
x1="0.135742"
|
|
63
|
+
y1="12"
|
|
64
|
+
x2="24.1357"
|
|
65
|
+
y2="12"
|
|
66
|
+
gradientUnits="userSpaceOnUse"
|
|
67
|
+
>
|
|
68
|
+
<stop stop-color="#121312" />
|
|
69
|
+
<stop offset="1" stop-color="#AAF1D5" stop-opacity="0" />
|
|
70
|
+
</linearGradient>
|
|
71
|
+
<linearGradient
|
|
72
|
+
id="paint1_linear_11400_35580"
|
|
73
|
+
x1="1.81706"
|
|
74
|
+
y1="-5.32127e-06"
|
|
75
|
+
x2="13.2516"
|
|
76
|
+
y2="26.324"
|
|
77
|
+
gradientUnits="userSpaceOnUse"
|
|
78
|
+
>
|
|
79
|
+
<stop stop-color="white" stop-opacity="0.4" />
|
|
80
|
+
<stop offset="0.405687" stop-color="white" stop-opacity="0.01" />
|
|
81
|
+
<stop offset="0.574372" stop-color="white" stop-opacity="0.01" />
|
|
82
|
+
<stop offset="1" stop-color="white" stop-opacity="0.1" />
|
|
83
|
+
</linearGradient>
|
|
84
|
+
</defs>
|
|
85
|
+
</svg>
|
|
86
|
+
);
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
export const DotIcon = ({ className }: { className?: string }) => {
|
|
4
|
+
return (
|
|
5
|
+
<svg viewBox="0 0 92 92" fill="none" xmlns="http://www.w3.org/2000/svg" className={className}>
|
|
6
|
+
<g clip-path="url(#clip0_134_41)">
|
|
7
|
+
<g filter="url(#filter0_d_134_41)">
|
|
8
|
+
<path
|
|
9
|
+
d="M46.0792 51.8986C49.2934 51.8986 51.899 49.293 51.899 46.0788C51.899 42.8646 49.2934 40.259 46.0792 40.259C42.865 40.259 40.2594 42.8646 40.2594 46.0788C40.2594 49.293 42.865 51.8986 46.0792 51.8986Z"
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
/>
|
|
12
|
+
</g>
|
|
13
|
+
<g opacity="0.6" filter="url(#filter1_d_134_41)">
|
|
14
|
+
<path
|
|
15
|
+
d="M46.0789 54.6578C50.8169 54.6578 54.6578 50.8169 54.6578 46.0789C54.6578 41.3409 50.8169 37.5 46.0789 37.5C41.3409 37.5 37.5 41.3409 37.5 46.0789C37.5 50.8169 41.3409 54.6578 46.0789 54.6578Z"
|
|
16
|
+
stroke="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
</g>
|
|
19
|
+
</g>
|
|
20
|
+
<defs>
|
|
21
|
+
<filter
|
|
22
|
+
id="filter0_d_134_41"
|
|
23
|
+
x="0.259361"
|
|
24
|
+
y="0.258961"
|
|
25
|
+
width="91.6397"
|
|
26
|
+
height="91.6397"
|
|
27
|
+
filterUnits="userSpaceOnUse"
|
|
28
|
+
color-interpolation-filters="sRGB"
|
|
29
|
+
>
|
|
30
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix" />
|
|
31
|
+
<feColorMatrix
|
|
32
|
+
in="SourceAlpha"
|
|
33
|
+
type="matrix"
|
|
34
|
+
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
|
35
|
+
result="hardAlpha"
|
|
36
|
+
/>
|
|
37
|
+
<feOffset />
|
|
38
|
+
<feGaussianBlur stdDeviation="20" />
|
|
39
|
+
<feComposite in2="hardAlpha" operator="out" />
|
|
40
|
+
<feColorMatrix
|
|
41
|
+
type="matrix"
|
|
42
|
+
values="0 0 0 0 0.45098 0 0 0 0 0.952941 0 0 0 0 0.423529 0 0 0 1 0"
|
|
43
|
+
/>
|
|
44
|
+
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_134_41" />
|
|
45
|
+
<feBlend
|
|
46
|
+
mode="normal"
|
|
47
|
+
in="SourceGraphic"
|
|
48
|
+
in2="effect1_dropShadow_134_41"
|
|
49
|
+
result="shape"
|
|
50
|
+
/>
|
|
51
|
+
</filter>
|
|
52
|
+
<filter
|
|
53
|
+
id="filter1_d_134_41"
|
|
54
|
+
x="27"
|
|
55
|
+
y="31"
|
|
56
|
+
width="38.1579"
|
|
57
|
+
height="38.1579"
|
|
58
|
+
filterUnits="userSpaceOnUse"
|
|
59
|
+
color-interpolation-filters="sRGB"
|
|
60
|
+
>
|
|
61
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix" />
|
|
62
|
+
<feColorMatrix
|
|
63
|
+
in="SourceAlpha"
|
|
64
|
+
type="matrix"
|
|
65
|
+
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
|
66
|
+
result="hardAlpha"
|
|
67
|
+
/>
|
|
68
|
+
<feOffset dy="4" />
|
|
69
|
+
<feGaussianBlur stdDeviation="5" />
|
|
70
|
+
<feComposite in2="hardAlpha" operator="out" />
|
|
71
|
+
<feColorMatrix
|
|
72
|
+
type="matrix"
|
|
73
|
+
values="0 0 0 0 0.45098 0 0 0 0 0.952941 0 0 0 0 0.423529 0 0 0 1 0"
|
|
74
|
+
/>
|
|
75
|
+
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_134_41" />
|
|
76
|
+
<feBlend
|
|
77
|
+
mode="normal"
|
|
78
|
+
in="SourceGraphic"
|
|
79
|
+
in2="effect1_dropShadow_134_41"
|
|
80
|
+
result="shape"
|
|
81
|
+
/>
|
|
82
|
+
</filter>
|
|
83
|
+
<clipPath id="clip0_134_41">
|
|
84
|
+
<rect width="92" height="92" fill="white" />
|
|
85
|
+
</clipPath>
|
|
86
|
+
</defs>
|
|
87
|
+
</svg>
|
|
88
|
+
);
|
|
89
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export const IssueIcon = ({ className }: { className?: string }) => (
|
|
2
|
+
<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
width="25"
|
|
5
|
+
height="24"
|
|
6
|
+
viewBox="0 0 25 24"
|
|
7
|
+
fill="none"
|
|
8
|
+
className={className}
|
|
9
|
+
>
|
|
10
|
+
<g filter="url(#filter0_i_11400_35599)">
|
|
11
|
+
<rect
|
|
12
|
+
x="0.135742"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
rx="12"
|
|
16
|
+
fill="url(#paint0_linear_11400_35599)"
|
|
17
|
+
fill-opacity="0.6"
|
|
18
|
+
/>
|
|
19
|
+
<rect
|
|
20
|
+
x="0.424196"
|
|
21
|
+
y="0.288454"
|
|
22
|
+
width="23.4231"
|
|
23
|
+
height="23.4231"
|
|
24
|
+
rx="11.7115"
|
|
25
|
+
stroke="url(#paint1_linear_11400_35599)"
|
|
26
|
+
stroke-width="0.576907"
|
|
27
|
+
/>
|
|
28
|
+
<path
|
|
29
|
+
d="M17.8164 12C17.8164 11.9282 17.8144 11.8565 17.8109 11.7881C17.8075 11.6637 17.7973 11.5359 17.7809 11.3998L19.5001 9.846L19.4666 9.74073C19.349 9.37842 19.2007 9.01817 19.0223 8.66953L18.9717 8.57177L16.6618 8.68935C16.4834 8.46514 16.2838 8.2539 16.0685 8.05907L16.0111 8.00643C15.9393 7.94354 15.873 7.88749 15.8101 7.8369L15.929 5.52706L15.8313 5.47647C15.4833 5.29806 15.1224 5.14766 14.7601 5.03213L14.6541 5L13.1017 6.71856C12.7202 6.67481 12.3053 6.6714 11.8992 6.72061L10.3461 5L10.2408 5.0335C9.87851 5.15108 9.51825 5.29941 9.16961 5.47785L9.07186 5.52843L9.18944 7.84177C8.8743 8.09061 8.58924 8.37567 8.3404 8.69081L6.02706 8.57323L5.97648 8.67098C5.79806 9.01894 5.64767 9.37988 5.53213 9.74218L5.5 9.84609L7.21857 11.3985C7.19601 11.5947 7.1837 11.7978 7.1837 12.0008C7.1837 12.2072 7.19601 12.4082 7.2172 12.603L5.5 14.1541L5.5335 14.2594C5.65108 14.6217 5.79941 14.982 5.97784 15.3306L6.02843 15.4284L8.33827 15.3094C8.39227 15.3778 8.45038 15.4441 8.5078 15.5104L8.56044 15.5678C8.75458 15.7831 8.96445 15.9807 9.19072 16.1612L9.07314 18.471L9.1709 18.5216C9.51885 18.7 9.87979 18.8504 10.2421 18.9659L10.3474 18.9994L11.9012 17.2809C12.0379 17.2966 12.1671 17.3055 12.2881 17.3109C12.5643 17.3246 12.8445 17.313 13.1036 17.2829L14.654 19.0001L14.7593 18.9666C15.1216 18.849 15.4819 18.7007 15.8305 18.5223L15.9283 18.4717L15.8107 16.1597C15.877 16.1071 15.9331 16.0599 15.9857 16.0128C16.1744 15.8501 16.3535 15.673 16.5127 15.4857C16.5599 15.4317 16.6091 15.3736 16.6618 15.3087L18.9737 15.4263L19.0243 15.3285C19.2027 14.9805 19.3531 14.6196 19.4686 14.2573L19.5021 14.152L17.7836 12.5996C17.8041 12.4075 17.8164 12.2065 17.8164 12ZM19.1084 14.2572C19.0141 14.5334 18.8999 14.8068 18.7687 15.0748L16.4991 14.9592L16.4451 15.031C16.3856 15.1096 16.3227 15.1869 16.2564 15.2621C16.106 15.4391 15.9399 15.6032 15.7615 15.757C15.6876 15.8219 15.6111 15.8848 15.5325 15.9443L15.4607 15.9983L15.5762 18.2679C15.3083 18.3991 15.0334 18.5147 14.7586 18.6076L13.2342 16.9205L13.1447 16.9328C12.8801 16.9697 12.6005 16.9855 12.2997 16.9697C12.1617 16.9643 12.0113 16.952 11.8533 16.9328L11.7658 16.9226L10.2414 18.6076C9.96526 18.5133 9.69182 18.3991 9.42384 18.2679L9.53937 16.0018L9.46964 15.9478C9.21603 15.7516 8.9795 15.5294 8.76623 15.2861L8.72248 15.2369C8.66506 15.1706 8.609 15.1022 8.55431 15.0304L8.50031 14.9607L6.23212 15.0762C6.10087 14.8083 5.98533 14.5355 5.89237 14.2586L7.57949 12.7342L7.56718 12.6447C7.53915 12.4396 7.52548 12.2229 7.52548 11.9987C7.52548 11.7888 7.53915 11.5803 7.56581 11.3793C7.56581 11.3759 7.56787 11.3725 7.56581 11.3725L7.59042 11.2727L5.89305 9.73937C5.98739 9.4632 6.10155 9.18976 6.2328 8.92178L8.50431 9.03731L8.55832 8.96553C8.81877 8.62237 9.12502 8.31612 9.47023 8.05362L9.54201 7.99962L9.42648 5.7281C9.69444 5.59685 9.9672 5.48132 10.2441 5.38835L11.709 7.01053L11.7664 7.08914L11.8909 7.06111C12.3058 7.00711 12.7536 7.01053 13.1494 7.06453L13.2389 7.07684L14.7633 5.38972C15.0395 5.48406 15.3129 5.59822 15.5809 5.72947L15.4661 7.86973L15.4606 7.99893L15.5303 8.05294C15.5987 8.10557 15.6636 8.15821 15.7279 8.21427L15.7853 8.2669C16.0287 8.47881 16.2509 8.71671 16.447 8.97032L16.501 9.04005L18.7671 8.92452C18.8984 9.19248 19.0139 9.46524 19.1069 9.74211L17.4218 11.2665L17.4321 11.354C17.4512 11.5113 17.4656 11.6623 17.469 11.8038C17.4724 11.8688 17.4744 11.9351 17.4744 12.0014C17.4744 12.2236 17.4608 12.4409 17.4327 12.6474L17.4204 12.7369L19.1084 14.2572Z"
|
|
30
|
+
fill="#FF0608"
|
|
31
|
+
fill-opacity="0.8"
|
|
32
|
+
/>
|
|
33
|
+
<path
|
|
34
|
+
d="M12.5007 8.69019C10.6754 8.69019 9.19141 10.1743 9.19141 11.9995C9.19141 13.8246 10.6755 15.3087 12.5007 15.3087C14.3259 15.3087 15.81 13.8246 15.81 11.9995C15.81 10.1743 14.3259 8.69019 12.5007 8.69019ZM12.5007 14.9691C10.8628 14.9691 9.53108 13.6374 9.53108 11.9995C9.53108 10.3615 10.8627 9.02986 12.5007 9.02986C14.1386 9.02986 15.4703 10.3615 15.4703 11.9995C15.4703 13.6374 14.1386 14.9691 12.5007 14.9691Z"
|
|
35
|
+
fill="#FF0608"
|
|
36
|
+
fill-opacity="0.8"
|
|
37
|
+
/>
|
|
38
|
+
<path
|
|
39
|
+
d="M12.6759 13.4678C12.6759 13.5823 12.6119 13.6851 12.5138 13.7289C12.4157 13.7728 12.3028 13.7484 12.2277 13.6678C12.1529 13.5869 12.1302 13.4653 12.1709 13.3597C12.2116 13.254 12.3071 13.1851 12.4134 13.1851C12.4829 13.1851 12.5499 13.2148 12.5991 13.2678C12.6483 13.3208 12.6759 13.3929 12.6759 13.4678ZM12.6759 10.3581V12.337C12.6759 12.4932 12.5584 12.6197 12.4134 12.6197C12.2683 12.6197 12.1509 12.4932 12.1509 12.337V10.3581C12.1509 10.2019 12.2683 10.0754 12.4134 10.0754C12.5584 10.0754 12.6759 10.2019 12.6759 10.3581Z"
|
|
40
|
+
fill="#FF0608"
|
|
41
|
+
fill-opacity="0.8"
|
|
42
|
+
/>
|
|
43
|
+
</g>
|
|
44
|
+
<defs>
|
|
45
|
+
<filter
|
|
46
|
+
id="filter0_i_11400_35599"
|
|
47
|
+
x="0.135742"
|
|
48
|
+
y="0"
|
|
49
|
+
width="24"
|
|
50
|
+
height="24"
|
|
51
|
+
filterUnits="userSpaceOnUse"
|
|
52
|
+
color-interpolation-filters="sRGB"
|
|
53
|
+
>
|
|
54
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix" />
|
|
55
|
+
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
|
|
56
|
+
<feColorMatrix
|
|
57
|
+
in="SourceAlpha"
|
|
58
|
+
type="matrix"
|
|
59
|
+
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
|
60
|
+
result="hardAlpha"
|
|
61
|
+
/>
|
|
62
|
+
<feOffset />
|
|
63
|
+
<feGaussianBlur stdDeviation="1.24267" />
|
|
64
|
+
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1" />
|
|
65
|
+
<feColorMatrix
|
|
66
|
+
type="matrix"
|
|
67
|
+
values="0 0 0 0 1 0 0 0 0 0.0235294 0 0 0 0 0.0313726 0 0 0 0.8 0"
|
|
68
|
+
/>
|
|
69
|
+
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11400_35599" />
|
|
70
|
+
</filter>
|
|
71
|
+
<linearGradient
|
|
72
|
+
id="paint0_linear_11400_35599"
|
|
73
|
+
x1="0.135742"
|
|
74
|
+
y1="12"
|
|
75
|
+
x2="24.1357"
|
|
76
|
+
y2="12"
|
|
77
|
+
gradientUnits="userSpaceOnUse"
|
|
78
|
+
>
|
|
79
|
+
<stop stop-color="#121312" />
|
|
80
|
+
<stop offset="1" stop-color="#FF0608" stop-opacity="0" />
|
|
81
|
+
</linearGradient>
|
|
82
|
+
<linearGradient
|
|
83
|
+
id="paint1_linear_11400_35599"
|
|
84
|
+
x1="1.81706"
|
|
85
|
+
y1="-5.32127e-06"
|
|
86
|
+
x2="13.2516"
|
|
87
|
+
y2="26.324"
|
|
88
|
+
gradientUnits="userSpaceOnUse"
|
|
89
|
+
>
|
|
90
|
+
<stop stop-color="white" stop-opacity="0.4" />
|
|
91
|
+
<stop offset="0.405687" stop-color="white" stop-opacity="0.01" />
|
|
92
|
+
<stop offset="0.574372" stop-color="white" stop-opacity="0.01" />
|
|
93
|
+
<stop offset="1" stop-color="white" stop-opacity="0.1" />
|
|
94
|
+
</linearGradient>
|
|
95
|
+
</defs>
|
|
96
|
+
</svg>
|
|
97
|
+
);
|