beeple-toolkit 0.1.0 → 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.
Files changed (53) hide show
  1. package/dist/beeple-toolkit.css +1 -1
  2. package/dist/beeple-toolkit.es.js +10581 -83
  3. package/dist/beeple-toolkit.umd.js +5 -1
  4. package/dist/components/Avatar/Avatar.vue.d.ts +8 -0
  5. package/dist/components/Breadcrumbs/Breadcrumbs.vue.d.ts +5 -0
  6. package/dist/components/Button/Button.vue.d.ts +24 -22
  7. package/dist/components/CheckboxInput/CheckboxInput.vue.d.ts +14 -0
  8. package/dist/components/ContextCard/ContextCard.vue.d.ts +21 -0
  9. package/dist/components/DatePicker/DatePicker.vue.d.ts +53 -0
  10. package/dist/components/DatePicker/DatePickerActions.vue.d.ts +9 -0
  11. package/dist/components/DatePicker/DatePickerCalendarSection.vue.d.ts +36 -0
  12. package/dist/components/DatePicker/DatePickerHeader.vue.d.ts +20 -0
  13. package/dist/components/DatePicker/DatePickerNavigation.vue.d.ts +23 -0
  14. package/dist/components/DatePicker/DatePickerPanel.vue.d.ts +80 -0
  15. package/dist/components/DatePicker/DatePickerTimeSection.vue.d.ts +21 -0
  16. package/dist/components/DatePicker/dateUtils.d.ts +91 -0
  17. package/dist/components/DatePicker/locales.d.ts +24 -0
  18. package/dist/components/DropDown/DropDown.vue.d.ts +34 -0
  19. package/dist/components/DropDown/DropDownMenu.vue.d.ts +61 -0
  20. package/dist/components/DropDown/DropDownMenuItem.vue.d.ts +26 -0
  21. package/dist/components/DropDown/DropDownTrigger.vue.d.ts +40 -0
  22. package/dist/components/FilterButton/FilterButton.vue.d.ts +26 -0
  23. package/dist/components/FilterButton/FilterButtonTrigger.vue.d.ts +22 -0
  24. package/dist/components/Icon/Icon.vue.d.ts +8 -0
  25. package/dist/components/Input/Input.vue.d.ts +41 -0
  26. package/dist/components/KeyboardInput/KeyboardInput.vue.d.ts +13 -0
  27. package/dist/components/Label/Label.vue.d.ts +8 -0
  28. package/dist/components/Menu/Menu.vue.d.ts +24 -0
  29. package/dist/components/Modal/Modal.vue.d.ts +30 -0
  30. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +11 -0
  31. package/dist/components/ProgressBar/index.d.ts +1 -0
  32. package/dist/components/RadioInput/RadioInput.vue.d.ts +12 -0
  33. package/dist/components/Slider/Slider.vue.d.ts +17 -0
  34. package/dist/components/StatusDot/StatusDot.vue.d.ts +9 -0
  35. package/dist/components/Switch/Switch.vue.d.ts +19 -0
  36. package/dist/components/Textarea/Textarea.vue.d.ts +17 -0
  37. package/dist/components/TimeInput/TimeInput.vue.d.ts +19 -0
  38. package/dist/components/Toast/Toast.vue.d.ts +17 -0
  39. package/dist/components/{Page/Page.vue.d.ts → Toast/ToastContainer.vue.d.ts} +1 -1
  40. package/dist/components/Tooltip/Tooltip.vue.d.ts +21 -0
  41. package/dist/components/Typography/Subtitle.vue.d.ts +17 -0
  42. package/dist/components/Typography/Text.vue.d.ts +20 -0
  43. package/dist/components/Typography/Title.vue.d.ts +17 -0
  44. package/dist/components/constants.d.ts +19 -0
  45. package/dist/components/index.d.ts +31 -3
  46. package/dist/components/types.d.ts +242 -0
  47. package/dist/main.d.ts +1 -0
  48. package/dist/stores/index.d.ts +2 -0
  49. package/dist/stores/toast.d.ts +142 -0
  50. package/package.json +33 -13
  51. package/dist/components/Header/Header.vue.d.ts +0 -17
  52. package/dist/favicon.ico +0 -0
  53. package/dist/vite.svg +0 -1
@@ -0,0 +1,242 @@
1
+ import type { ButtonType, ButtonSize, EvaIconName, Size, ProgressBarSize } from './constants';
2
+ import type { DefineComponent } from 'vue';
3
+ import type { DatePickerLocale } from './DatePicker/locales';
4
+ export interface ButtonProps {
5
+ label?: string;
6
+ type?: ButtonType;
7
+ size?: ButtonSize;
8
+ iconVariant?: 'leading' | 'text' | 'trailing';
9
+ shape?: 'square' | 'round' | 'roundBorder';
10
+ disabled?: boolean;
11
+ isLoading?: boolean;
12
+ href?: string;
13
+ }
14
+ export interface IconProps {
15
+ icon?: EvaIconName | string;
16
+ color?: string;
17
+ size?: string | number;
18
+ customSvgComponent?: DefineComponent;
19
+ }
20
+ export interface CheckboxInputProps {
21
+ id?: string;
22
+ label?: string;
23
+ checked?: boolean;
24
+ disabled?: boolean;
25
+ }
26
+ export interface RadioInputProps {
27
+ id?: string;
28
+ name: string;
29
+ value: string | number;
30
+ label?: string;
31
+ checked?: boolean;
32
+ disabled?: boolean;
33
+ }
34
+ export interface InputProps {
35
+ id?: string;
36
+ label?: string;
37
+ type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
38
+ modelValue?: string;
39
+ placeholder?: string;
40
+ disabled?: boolean;
41
+ isError?: boolean;
42
+ errorMessage?: string;
43
+ clearable?: boolean;
44
+ size?: Size;
45
+ min?: number;
46
+ max?: number;
47
+ step?: number;
48
+ }
49
+ export interface SwitchProps {
50
+ id?: string;
51
+ label?: string;
52
+ checked?: boolean;
53
+ disabled?: boolean;
54
+ size?: 'small' | 'medium';
55
+ labelPosition?: 'left' | 'right';
56
+ }
57
+ export interface TitleProps {
58
+ level?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
59
+ }
60
+ export interface SubtitleProps {
61
+ size?: 'large' | 'small';
62
+ }
63
+ export interface TextProps {
64
+ size?: 'default' | 'small' | 'x-small';
65
+ tag?: 'p' | 'span' | 'div';
66
+ fontStyle?: 'normal' | 'italic' | 'oblique';
67
+ fontWeight?: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 'normal' | 'bold' | 'lighter' | 'bolder';
68
+ }
69
+ export interface DropDownOption {
70
+ label: string;
71
+ value: unknown;
72
+ disabled?: boolean;
73
+ icon?: string;
74
+ leadingIcon?: string;
75
+ trailingIcon?: string;
76
+ clickable?: boolean;
77
+ onClick?: () => void;
78
+ avatar?: {
79
+ photo?: string;
80
+ fullName?: string;
81
+ alt?: string;
82
+ };
83
+ }
84
+ export interface DropDownProps {
85
+ modelValue?: unknown | unknown[];
86
+ options: Array<string | number | DropDownOption | Record<string, unknown>>;
87
+ placeholder?: string;
88
+ label?: string;
89
+ isMulti?: boolean;
90
+ searchable?: boolean;
91
+ searchPlaceholder?: string;
92
+ disabled?: boolean;
93
+ clearable?: boolean;
94
+ size?: 'x-small' | 'small' | 'medium' | 'large';
95
+ optionLabel?: string;
96
+ optionValue?: string;
97
+ noOptionsText?: string;
98
+ maxHeight?: string;
99
+ isError?: boolean;
100
+ errorMessage?: string;
101
+ selectAllText?: string;
102
+ clearAllText?: string;
103
+ }
104
+ export interface AvatarProps {
105
+ user?: {
106
+ photo?: string;
107
+ fullName?: string;
108
+ };
109
+ alt?: string;
110
+ size?: 'xxx-small' | 'xx-small' | 'x-small' | 'small' | 'medium' | 'large';
111
+ withIcon?: string;
112
+ withColor?: string;
113
+ }
114
+ export interface FilterButtonProps {
115
+ modelValue?: unknown | unknown[];
116
+ options: Array<string | number | DropDownOption | Record<string, unknown>>;
117
+ placeholder?: string;
118
+ filterName?: string;
119
+ isMulti?: boolean;
120
+ searchable?: boolean;
121
+ searchPlaceholder?: string;
122
+ disabled?: boolean;
123
+ clearable?: boolean;
124
+ size?: ButtonSize;
125
+ optionLabel?: string;
126
+ optionValue?: string;
127
+ noOptionsText?: string;
128
+ maxHeight?: string;
129
+ buttonType?: ButtonType;
130
+ selectAllText?: string;
131
+ clearAllText?: string;
132
+ }
133
+ export interface LabelProps {
134
+ text?: string;
135
+ size?: 'small' | 'medium' | 'large';
136
+ color?: 'primary' | 'primary-faded' | 'success' | 'success-faded' | 'warning' | 'warning-faded' | 'error' | 'error-faded' | 'gray' | 'gray-faded' | 'black';
137
+ leadingIcon?: string;
138
+ trailingIcon?: string;
139
+ }
140
+ export interface TooltipProps {
141
+ title?: string;
142
+ position?: 'top-left' | 'top-middle' | 'top-right' | 'bottom-left' | 'bottom-middle' | 'bottom-right' | 'left-top' | 'left-middle' | 'left-bottom' | 'right-top' | 'right-middle' | 'right-bottom';
143
+ delay?: number;
144
+ maxWidth?: number;
145
+ }
146
+ export interface ContextCardProps {
147
+ title?: string;
148
+ position?: 'top-left' | 'top-middle' | 'top-right' | 'bottom-left' | 'bottom-middle' | 'bottom-right' | 'left-top' | 'left-middle' | 'left-bottom' | 'right-top' | 'right-middle' | 'right-bottom';
149
+ delay?: number;
150
+ color?: 'light' | 'dark';
151
+ maxWidth?: number;
152
+ }
153
+ export interface StatusDotProps {
154
+ color?: 'success' | 'warning' | 'danger' | 'primary';
155
+ label?: string;
156
+ variant?: 'label-left' | 'label-right' | 'dot-only';
157
+ isShadow?: boolean;
158
+ }
159
+ export interface BreadcrumbItem {
160
+ label: string;
161
+ href: string;
162
+ }
163
+ export interface BreadcrumbsProps {
164
+ items: BreadcrumbItem[];
165
+ }
166
+ export type DatePickerVariant = 'single' | 'single-time' | 'single-time-range' | 'range' | 'range-time';
167
+ export interface DatePickerProps {
168
+ variant?: DatePickerVariant;
169
+ modelValue?: Date | {
170
+ start: Date;
171
+ end: Date;
172
+ } | {
173
+ date: Date;
174
+ startTime: Date;
175
+ endTime: Date;
176
+ } | null;
177
+ placeholder?: string;
178
+ isExtended?: boolean;
179
+ minDate?: Date;
180
+ maxDate?: Date;
181
+ locale?: DatePickerLocale;
182
+ }
183
+ export interface MenuProps {
184
+ items: DropDownOption[];
185
+ position?: 'top' | 'bottom' | 'left' | 'right';
186
+ }
187
+ export interface TextareaProps {
188
+ id?: string;
189
+ label?: string;
190
+ modelValue?: string;
191
+ placeholder?: string;
192
+ disabled?: boolean;
193
+ isError?: boolean;
194
+ errorMessage?: string;
195
+ minRows?: number;
196
+ maxRows?: number;
197
+ }
198
+ export interface TimeInputProps {
199
+ id?: string;
200
+ label?: string;
201
+ modelValue?: string;
202
+ disabled?: boolean;
203
+ isError?: boolean;
204
+ errorMessage?: string;
205
+ size?: 'x-small' | 'small' | 'medium' | 'large';
206
+ hoursPlaceholder?: string;
207
+ minutesPlaceholder?: string;
208
+ use24Hour?: boolean;
209
+ }
210
+ export interface KeyboardInputProps {
211
+ value?: string;
212
+ theme?: 'light' | 'dark';
213
+ size?: 'small' | 'medium';
214
+ withCtrl?: boolean;
215
+ withShift?: boolean;
216
+ withAlt?: boolean;
217
+ withOption?: boolean;
218
+ }
219
+ export interface SliderProps {
220
+ variants?: 'single' | 'double';
221
+ minValue?: number;
222
+ maxValue?: number;
223
+ modelValue?: number | [number, number];
224
+ step?: number;
225
+ disabled?: boolean;
226
+ leftLabel?: string;
227
+ middleLabel?: string;
228
+ rightLabel?: string;
229
+ }
230
+ export interface ProgressBarProps {
231
+ size?: ProgressBarSize;
232
+ open: number;
233
+ confirmed?: number;
234
+ unconfirmed?: number;
235
+ }
236
+ export interface ModalProps {
237
+ modelValue?: boolean;
238
+ size?: 'ultra-small' | 'small' | 'medium' | 'large';
239
+ showCloseButton?: boolean;
240
+ titleAlign?: 'left' | 'center';
241
+ }
242
+ export type { DatePickerLocale } from './DatePicker/locales';
package/dist/main.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  import './style.css';
2
+ import './styles/variables.css';
@@ -0,0 +1,2 @@
1
+ export { useToastStore } from './toast';
2
+ export type { Toast, ToastType, ToastOptions } from './toast';
@@ -0,0 +1,142 @@
1
+ export type ToastType = 'success' | 'error' | 'warning' | 'info';
2
+ export interface Toast {
3
+ id: string;
4
+ title?: string;
5
+ message?: string;
6
+ type: ToastType;
7
+ duration: number;
8
+ persistent?: boolean;
9
+ withIcon?: boolean;
10
+ allowHtml?: boolean;
11
+ actions?: Array<{
12
+ label: string;
13
+ action: () => void;
14
+ style?: 'primary' | 'secondary';
15
+ }>;
16
+ }
17
+ export interface ToastOptions {
18
+ title?: string;
19
+ message?: string;
20
+ type?: ToastType;
21
+ duration?: number;
22
+ persistent?: boolean;
23
+ withIcon?: boolean;
24
+ allowHtml?: boolean;
25
+ actions?: Array<{
26
+ label: string;
27
+ action: () => void;
28
+ style?: 'primary' | 'secondary';
29
+ }>;
30
+ }
31
+ export declare const useToastStore: import("pinia").StoreDefinition<"toast", Pick<{
32
+ toasts: import("vue").Ref<{
33
+ id: string;
34
+ title?: string | undefined;
35
+ message?: string | undefined;
36
+ type: ToastType;
37
+ duration: number;
38
+ persistent?: boolean | undefined;
39
+ withIcon?: boolean | undefined;
40
+ allowHtml?: boolean | undefined;
41
+ actions?: {
42
+ label: string;
43
+ action: () => void;
44
+ style?: "primary" | "secondary" | undefined;
45
+ }[] | undefined;
46
+ }[], Toast[] | {
47
+ id: string;
48
+ title?: string | undefined;
49
+ message?: string | undefined;
50
+ type: ToastType;
51
+ duration: number;
52
+ persistent?: boolean | undefined;
53
+ withIcon?: boolean | undefined;
54
+ allowHtml?: boolean | undefined;
55
+ actions?: {
56
+ label: string;
57
+ action: () => void;
58
+ style?: "primary" | "secondary" | undefined;
59
+ }[] | undefined;
60
+ }[]>;
61
+ addToast: (options: ToastOptions) => string;
62
+ removeToast: (id: string) => void;
63
+ clearToasts: () => void;
64
+ success: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
65
+ error: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
66
+ warning: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
67
+ info: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
68
+ }, "toasts">, Pick<{
69
+ toasts: import("vue").Ref<{
70
+ id: string;
71
+ title?: string | undefined;
72
+ message?: string | undefined;
73
+ type: ToastType;
74
+ duration: number;
75
+ persistent?: boolean | undefined;
76
+ withIcon?: boolean | undefined;
77
+ allowHtml?: boolean | undefined;
78
+ actions?: {
79
+ label: string;
80
+ action: () => void;
81
+ style?: "primary" | "secondary" | undefined;
82
+ }[] | undefined;
83
+ }[], Toast[] | {
84
+ id: string;
85
+ title?: string | undefined;
86
+ message?: string | undefined;
87
+ type: ToastType;
88
+ duration: number;
89
+ persistent?: boolean | undefined;
90
+ withIcon?: boolean | undefined;
91
+ allowHtml?: boolean | undefined;
92
+ actions?: {
93
+ label: string;
94
+ action: () => void;
95
+ style?: "primary" | "secondary" | undefined;
96
+ }[] | undefined;
97
+ }[]>;
98
+ addToast: (options: ToastOptions) => string;
99
+ removeToast: (id: string) => void;
100
+ clearToasts: () => void;
101
+ success: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
102
+ error: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
103
+ warning: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
104
+ info: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
105
+ }, never>, Pick<{
106
+ toasts: import("vue").Ref<{
107
+ id: string;
108
+ title?: string | undefined;
109
+ message?: string | undefined;
110
+ type: ToastType;
111
+ duration: number;
112
+ persistent?: boolean | undefined;
113
+ withIcon?: boolean | undefined;
114
+ allowHtml?: boolean | undefined;
115
+ actions?: {
116
+ label: string;
117
+ action: () => void;
118
+ style?: "primary" | "secondary" | undefined;
119
+ }[] | undefined;
120
+ }[], Toast[] | {
121
+ id: string;
122
+ title?: string | undefined;
123
+ message?: string | undefined;
124
+ type: ToastType;
125
+ duration: number;
126
+ persistent?: boolean | undefined;
127
+ withIcon?: boolean | undefined;
128
+ allowHtml?: boolean | undefined;
129
+ actions?: {
130
+ label: string;
131
+ action: () => void;
132
+ style?: "primary" | "secondary" | undefined;
133
+ }[] | undefined;
134
+ }[]>;
135
+ addToast: (options: ToastOptions) => string;
136
+ removeToast: (id: string) => void;
137
+ clearToasts: () => void;
138
+ success: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
139
+ error: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
140
+ warning: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
141
+ info: (title: string, message?: string, options?: Partial<ToastOptions>) => string;
142
+ }, "success" | "warning" | "error" | "info" | "addToast" | "removeToast" | "clearToasts">>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "beeple-toolkit",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "Vue 3 component library beeple-toolkit",
5
5
  "keywords": [
6
6
  "vue",
@@ -18,13 +18,15 @@
18
18
  "types": "./dist/components/index.d.ts",
19
19
  "import": "./dist/beeple-toolkit.es.js",
20
20
  "require": "./dist/beeple-toolkit.umd.js"
21
- }
21
+ },
22
+ "./dist/beeple-toolkit.css": "./dist/beeple-toolkit.css"
22
23
  },
23
24
  "files": [
24
25
  "dist",
25
26
  "README.md"
26
27
  ],
27
28
  "scripts": {
29
+ "dev": "vite --port 4000",
28
30
  "storybook": "storybook dev -p 6006",
29
31
  "build-storybook": "storybook build",
30
32
  "build": "rimraf dist && vite build",
@@ -32,30 +34,48 @@
32
34
  "prepublishOnly": "npm run build && npm run build:types",
33
35
  "test": "vitest run",
34
36
  "test:watch": "vitest",
35
- "test:ui": "vitest --ui"
37
+ "test:ui": "vitest --ui",
38
+ "lint": "eslint . --ext .vue,.js,.ts",
39
+ "lint:fix": "eslint . --ext .vue,.js,.ts --fix",
40
+ "format": "prettier --write .",
41
+ "format:check": "prettier --check ."
36
42
  },
37
- "peerDependencies": {
38
- "vue": "^3.5.0"
43
+ "dependencies": {
44
+ "date-fns": "^4.1.0",
45
+ "eva-icons": "^1.1.3",
46
+ "pinia": "^3.0.3",
47
+ "vue": "^3.5.22"
39
48
  },
40
49
  "devDependencies": {
41
- "@chromatic-com/storybook": "^4.1.1",
42
- "@storybook/addon-a11y": "^9.1.8",
43
- "@storybook/addon-docs": "^9.1.8",
44
- "@storybook/addon-vitest": "^9.1.8",
45
- "@storybook/vue3-vite": "^9.1.8",
50
+ "@chromatic-com/storybook": "^5.0.1",
51
+ "@eslint/js": "^9.37.0",
52
+ "@storybook/addon-a11y": "^10.2.8",
53
+ "@storybook/addon-docs": "^10.2.8",
54
+ "@storybook/addon-vitest": "^10.2.8",
55
+ "@storybook/vue3-vite": "^10.2.8",
56
+ "@types/eslint__js": "^8.42.3",
46
57
  "@types/node": "^24.5.2",
47
58
  "@vitejs/plugin-vue": "^6.0.1",
48
59
  "@vitest/browser": "^3.2.4",
49
60
  "@vitest/coverage-v8": "^3.2.4",
61
+ "@vue/eslint-config-typescript": "^14.6.0",
50
62
  "@vue/test-utils": "^2.4.6",
51
63
  "@vue/tsconfig": "^0.8.1",
52
- "happy-dom": "^19.0.2",
64
+ "eslint": "^9.37.0",
65
+ "eslint-config-prettier": "^10.1.8",
66
+ "eslint-plugin-prettier": "^5.5.4",
67
+ "eslint-plugin-storybook": "^10.2.8",
68
+ "eslint-plugin-vue": "^10.5.0",
69
+ "happy-dom": "^20.0.0",
53
70
  "jsdom": "^27.0.0",
54
71
  "playwright": "^1.55.1",
72
+ "prettier": "^3.6.2",
55
73
  "rimraf": "^6.0.1",
56
- "storybook": "^9.1.8",
74
+ "storybook": "^10.2.8",
57
75
  "typescript": "~5.8.3",
76
+ "typescript-eslint": "^8.46.0",
58
77
  "vite": "^7.1.7",
78
+ "vite-svg-loader": "^5.1.0",
59
79
  "vitest": "^3.2.4",
60
80
  "vue": "^3.5.22",
61
81
  "vue-tsc": "^3.0.7"
@@ -65,4 +85,4 @@
65
85
  "url": "git@git.beeple.eu:beeple/beeple-toolkit.git"
66
86
  },
67
87
  "license": "ISC"
68
- }
88
+ }
@@ -1,17 +0,0 @@
1
- import './header.css';
2
- type __VLS_Props = {
3
- user: {
4
- name: string;
5
- } | null;
6
- };
7
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
8
- createAccount: () => any;
9
- login: () => any;
10
- logout: () => any;
11
- }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
- onCreateAccount?: (() => any) | undefined;
13
- onLogin?: (() => any) | undefined;
14
- onLogout?: (() => any) | undefined;
15
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
- declare const _default: typeof __VLS_export;
17
- export default _default;
package/dist/favicon.ico DELETED
Binary file
package/dist/vite.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>