@sonic-equipment/ui 0.0.11 → 0.0.13
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 +46 -18
- package/dist/badges/tag/tag.d.ts +5 -0
- package/dist/badges/tag/tag.stories.d.ts +18 -0
- package/dist/base.css +18 -0
- package/dist/buttons/button/button.d.ts +13 -8
- package/dist/buttons/button/button.stories.d.ts +11 -6
- package/dist/buttons/favorite/favorite-button.d.ts +2 -2
- package/dist/buttons/favorite/favorite-button.stories.d.ts +6 -6
- package/dist/buttons/icon-button/icon-button.d.ts +9 -7
- package/dist/buttons/icon-button/icon-button.stories.d.ts +6 -6
- package/dist/cards/product-card/product-card.d.ts +9 -9
- package/dist/cards/product-card/product-card.stories.d.ts +3 -3
- package/dist/display/product-price/product-price.d.ts +11 -0
- package/dist/display/product-price/product-price.stories.d.ts +15 -0
- package/dist/display/product-sku/product-sku.d.ts +4 -0
- package/dist/display/product-sku/product-sku.stories.d.ts +13 -0
- package/dist/fonts.css +96 -49
- package/dist/icons/arrows/left-arrow-filled-icon.d.ts +2 -0
- package/dist/icons/arrows/right-arrow-filled-icon.d.ts +2 -0
- package/dist/icons/cart/cart-filled-icon.d.ts +2 -0
- package/dist/icons/cart/cart-outlined-icon.d.ts +2 -0
- package/dist/index.d.ts +89 -45
- package/dist/index.js +72 -31
- package/dist/inputs/checkbox/checkbox.d.ts +11 -4
- package/dist/inputs/checkbox/checkbox.stories.d.ts +8 -6
- package/dist/product-listing/filters/colors/color-filter.d.ts +5 -5
- package/dist/product-listing/filters/filter/filter.d.ts +4 -4
- package/dist/product-listing/product-listing.d.ts +16 -13
- package/dist/product-listing/product-listing.stories.d.ts +7 -7
- package/dist/product-listing/search-params.d.ts +3 -3
- package/dist/shared/types/product.d.ts +4 -0
- package/dist/styles.css +296 -89
- package/dist/tokens/tokens.d.ts +2 -0
- package/dist/typography/heading/heading.d.ts +17 -0
- package/dist/typography/heading/heading.stories.d.ts +37 -0
- package/package.json +50 -30
- package/dist/reset.css +0 -384
- /package/dist/icons/favorite/{favorite-outline-icon.d.ts → favorite-outlined-icon.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -26,32 +26,23 @@ npm install @sonic-equipment/ui
|
|
|
26
26
|
#### Import styles
|
|
27
27
|
|
|
28
28
|
```css
|
|
29
|
-
@import
|
|
30
|
-
@import
|
|
31
|
-
@import "@sonic-equipment/ui/styles.css";
|
|
29
|
+
@import '@sonic-equipment/ui/fonts.css';
|
|
30
|
+
@import '@sonic-equipment/ui/styles.css';
|
|
32
31
|
```
|
|
33
32
|
|
|
34
33
|
Or within your App.tsx
|
|
35
34
|
|
|
36
35
|
```tsx
|
|
37
|
-
import
|
|
38
|
-
import
|
|
39
|
-
import "@sonic-equipment/ui/styles.css";
|
|
36
|
+
import '@sonic-equipment/ui/fonts.css'
|
|
37
|
+
import '@sonic-equipment/ui/styles.css'
|
|
40
38
|
```
|
|
41
39
|
|
|
42
40
|
#### Apply base styles
|
|
43
41
|
|
|
42
|
+
Use the following import to apply the base styles to your project or copy the content of `base.css` into your project's global styles:
|
|
43
|
+
|
|
44
44
|
```css
|
|
45
|
-
|
|
46
|
-
font-family: var(--font-family-sonic);
|
|
47
|
-
font-size: var(--font-size-base);
|
|
48
|
-
text-size-adjust: none;
|
|
49
|
-
|
|
50
|
-
font-synthesis: none;
|
|
51
|
-
text-rendering: optimizeLegibility;
|
|
52
|
-
-webkit-font-smoothing: antialiased;
|
|
53
|
-
-moz-osx-font-smoothing: grayscale;
|
|
54
|
-
}
|
|
45
|
+
import '@sonic-equipment/ui/base.css'
|
|
55
46
|
```
|
|
56
47
|
|
|
57
48
|
### Usage
|
|
@@ -59,13 +50,13 @@ html {
|
|
|
59
50
|
Import and use a component from the library like so:
|
|
60
51
|
|
|
61
52
|
```jsx
|
|
62
|
-
import { Button } from
|
|
53
|
+
import { Button } from '@sonic-equipment/ui'
|
|
63
54
|
|
|
64
55
|
const App = () => (
|
|
65
56
|
<Button variant="solid" color="primary">
|
|
66
57
|
Click Me
|
|
67
58
|
</Button>
|
|
68
|
-
)
|
|
59
|
+
)
|
|
69
60
|
```
|
|
70
61
|
|
|
71
62
|
## Styling
|
|
@@ -189,3 +180,40 @@ Publishing is handled via a private npm registry. Ensure you have the necessary
|
|
|
189
180
|
```bash
|
|
190
181
|
pnpm publish
|
|
191
182
|
```
|
|
183
|
+
|
|
184
|
+
## Best practices
|
|
185
|
+
|
|
186
|
+
### TypeScript - Types vs Interfaces
|
|
187
|
+
|
|
188
|
+
When defining types for prefer interfaces to describe data types / object structures and use types for union types, tuples, and other types.
|
|
189
|
+
|
|
190
|
+
Examples for interfaces:
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
interface ButtonProps {
|
|
194
|
+
variant: 'solid' | 'outline' | 'ghost'
|
|
195
|
+
color: 'primary' | 'secondary' | 'tertiary'
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
interface CheckboxProps extends ExternalLibraryCheckboxProps {
|
|
199
|
+
checked: boolean
|
|
200
|
+
onChange: (checked: boolean) => void
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
interface Product {
|
|
204
|
+
id: string
|
|
205
|
+
name: string
|
|
206
|
+
price: number
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Examples for types:
|
|
211
|
+
|
|
212
|
+
```ts
|
|
213
|
+
type ButtonVariant = 'solid' | 'outline' | 'ghost'
|
|
214
|
+
type ButtonColor = 'primary' | 'secondary' | 'tertiary'
|
|
215
|
+
|
|
216
|
+
type OnClickHandler = (event: MouseEvent) => void
|
|
217
|
+
|
|
218
|
+
type Key = string | number
|
|
219
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import { Tag } from './tag';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
args: {
|
|
5
|
+
children: string;
|
|
6
|
+
};
|
|
7
|
+
component: typeof Tag;
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: string;
|
|
10
|
+
};
|
|
11
|
+
tags: string[];
|
|
12
|
+
title: string;
|
|
13
|
+
};
|
|
14
|
+
export default meta;
|
|
15
|
+
type Story = StoryObj<typeof meta>;
|
|
16
|
+
export declare const Default: Story;
|
|
17
|
+
export declare const LongText: Story;
|
|
18
|
+
export declare const NoText: Story;
|
package/dist/base.css
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*********************************************************
|
|
2
|
+
*
|
|
3
|
+
* Base styling for the entire application
|
|
4
|
+
*
|
|
5
|
+
*********************************************************/
|
|
6
|
+
|
|
7
|
+
html {
|
|
8
|
+
font-family: var(--font-family-sonic);
|
|
9
|
+
font-size: var(--font-size-base);
|
|
10
|
+
-webkit-text-size-adjust: none;
|
|
11
|
+
-moz-text-size-adjust: none;
|
|
12
|
+
text-size-adjust: none;
|
|
13
|
+
|
|
14
|
+
font-synthesis: none;
|
|
15
|
+
text-rendering: optimizeLegibility;
|
|
16
|
+
-webkit-font-smoothing: antialiased;
|
|
17
|
+
-moz-osx-font-smoothing: grayscale;
|
|
18
|
+
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
color?:
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface ButtonProps {
|
|
3
|
+
_pseudo?: 'none' | 'focus' | 'hover' | 'active';
|
|
4
|
+
children: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
color?: 'primary' | 'secondary';
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
isDisabled?: boolean;
|
|
9
|
+
onPress?: VoidFunction;
|
|
10
|
+
size?: 'md' | 'lg';
|
|
11
|
+
variant?: 'solid' | 'outline' | 'ghost';
|
|
7
12
|
withArrow?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare function Button({ children,
|
|
13
|
+
}
|
|
14
|
+
export declare function Button({ _pseudo, children, className, color, icon, isDisabled, onPress, size, variant, withArrow, }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
import type { StoryObj } from
|
|
2
|
-
import { Button } from
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import { Button } from './button';
|
|
3
3
|
declare const meta: {
|
|
4
|
-
|
|
4
|
+
args: {
|
|
5
|
+
onPress: import("@vitest/spy").Mock<[], void>;
|
|
6
|
+
};
|
|
5
7
|
component: typeof Button;
|
|
6
8
|
parameters: {
|
|
7
9
|
layout: string;
|
|
8
10
|
};
|
|
9
11
|
tags: string[];
|
|
10
|
-
|
|
11
|
-
onPress: import("@storybook/test").Mock<[e: import("react-aria-components").PressEvent], void>;
|
|
12
|
-
};
|
|
12
|
+
title: string;
|
|
13
13
|
};
|
|
14
14
|
export default meta;
|
|
15
15
|
type Story = StoryObj<typeof meta>;
|
|
16
16
|
export declare const Solid: Story;
|
|
17
|
+
export declare const PrimaryActive: Story;
|
|
18
|
+
export declare const PrimaryDisabled: Story;
|
|
19
|
+
export declare const IconOnly: Story;
|
|
20
|
+
export declare const WithArrow: Story;
|
|
17
21
|
export declare const Outlined: Story;
|
|
22
|
+
export declare const SecondaryActive: Story;
|
|
18
23
|
export declare const Ghost: Story;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { StoryObj } from
|
|
2
|
-
import { FavoriteButton } from
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { FavoriteButton } from './favorite-button';
|
|
3
3
|
declare const meta: {
|
|
4
|
-
|
|
4
|
+
args: {
|
|
5
|
+
onPress: import("@vitest/spy").Mock<[], void>;
|
|
6
|
+
};
|
|
5
7
|
component: typeof FavoriteButton;
|
|
6
8
|
parameters: {
|
|
7
9
|
layout: string;
|
|
8
10
|
};
|
|
9
11
|
tags: string[];
|
|
10
|
-
|
|
11
|
-
onPress: import("@storybook/test").Mock<[], void>;
|
|
12
|
-
};
|
|
12
|
+
title: string;
|
|
13
13
|
};
|
|
14
14
|
export default meta;
|
|
15
15
|
type Story = StoryObj<typeof meta>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
color?:
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface IconButtonProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
color?: 'primary' | 'secondary';
|
|
6
|
+
onPress?: VoidFunction;
|
|
7
|
+
size?: 'md' | 'lg';
|
|
8
|
+
}
|
|
9
|
+
export declare function IconButton({ children, className, color, onPress, size, }: IconButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import type { StoryObj } from
|
|
2
|
-
import { IconButton } from
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import { IconButton } from './icon-button';
|
|
3
3
|
declare const meta: {
|
|
4
|
-
|
|
4
|
+
args: {
|
|
5
|
+
onPress: import("@vitest/spy").Mock<[], void>;
|
|
6
|
+
};
|
|
5
7
|
component: typeof IconButton;
|
|
6
8
|
parameters: {
|
|
7
9
|
layout: string;
|
|
8
10
|
};
|
|
9
11
|
tags: string[];
|
|
10
|
-
|
|
11
|
-
onPress: import("@storybook/test").Mock<[e: import("react-aria-components").PressEvent], void>;
|
|
12
|
-
};
|
|
12
|
+
title: string;
|
|
13
13
|
};
|
|
14
14
|
export default meta;
|
|
15
15
|
type Story = StoryObj<typeof meta>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ComponentType } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export declare function ProductCard({
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
import type { Product } from 'shared/types/product';
|
|
3
|
+
export interface ProductCardProps {
|
|
4
|
+
favoriteButton: ComponentType<{
|
|
5
|
+
productId: string;
|
|
6
|
+
}>;
|
|
7
|
+
product: Product;
|
|
8
|
+
}
|
|
9
|
+
export declare function ProductCard({ favoriteButton: FavoriteButton, product, }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { StoryObj } from
|
|
2
|
-
import { ProductCard } from
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { ProductCard } from './product-card';
|
|
3
3
|
declare const meta: {
|
|
4
|
-
title: string;
|
|
5
4
|
component: typeof ProductCard;
|
|
6
5
|
parameters: {
|
|
7
6
|
layout: string;
|
|
8
7
|
};
|
|
9
8
|
tags: string[];
|
|
9
|
+
title: string;
|
|
10
10
|
};
|
|
11
11
|
export default meta;
|
|
12
12
|
type Story = StoryObj<typeof meta>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface Price {
|
|
2
|
+
exclVat: number;
|
|
3
|
+
inclVat: number;
|
|
4
|
+
}
|
|
5
|
+
export interface ProductPriceProps {
|
|
6
|
+
current: Price;
|
|
7
|
+
includeVat?: boolean;
|
|
8
|
+
original?: Price;
|
|
9
|
+
}
|
|
10
|
+
export declare function ProductPrice({ current, includeVat, original, }: ProductPriceProps): import("react/jsx-runtime").JSX.Element | undefined;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import { ProductPrice } from './product-price';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
component: typeof ProductPrice;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
tags: string[];
|
|
9
|
+
title: string;
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const InclVat: Story;
|
|
14
|
+
export declare const ExclVat: Story;
|
|
15
|
+
export declare const WithoutOriginalPrice: Story;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import { ProductSku } from './product-sku';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
component: typeof ProductSku;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
tags: string[];
|
|
9
|
+
title: string;
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Default: Story;
|
package/dist/fonts.css
CHANGED
|
@@ -6,145 +6,192 @@
|
|
|
6
6
|
|
|
7
7
|
@font-face {
|
|
8
8
|
font-display: swap;
|
|
9
|
-
font-family:
|
|
10
|
-
src:
|
|
11
|
-
|
|
9
|
+
font-family: 'Pancetta';
|
|
10
|
+
src:
|
|
11
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100022/fonts/pancetta/pancettapro-thin-webfont.woff2')
|
|
12
|
+
format('woff2'),
|
|
13
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100018/fonts/pancetta/pancettapro-thin-webfont.woff')
|
|
14
|
+
format('woff');
|
|
12
15
|
font-weight: 100;
|
|
13
16
|
font-style: normal;
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
@font-face {
|
|
17
20
|
font-display: swap;
|
|
18
|
-
font-family:
|
|
19
|
-
src:
|
|
20
|
-
|
|
21
|
+
font-family: 'Pancetta';
|
|
22
|
+
src:
|
|
23
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100030/fonts/pancetta/pancettapro-thinitalic-webfont.woff2')
|
|
24
|
+
format('woff2'),
|
|
25
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100042/fonts/pancetta/pancettapro-thinitalic-webfont.woff')
|
|
26
|
+
format('woff');
|
|
21
27
|
font-weight: 100;
|
|
22
28
|
font-style: italic;
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
@font-face {
|
|
26
32
|
font-display: swap;
|
|
27
|
-
font-family:
|
|
28
|
-
src:
|
|
29
|
-
|
|
33
|
+
font-family: 'Pancetta';
|
|
34
|
+
src:
|
|
35
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099957/fonts/pancetta/pancettapro-extralight-webfont.woff2')
|
|
36
|
+
format('woff2'),
|
|
37
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099944/fonts/pancetta/pancettapro-extralight-webfont.woff')
|
|
38
|
+
format('woff');
|
|
30
39
|
font-weight: 200;
|
|
31
40
|
font-style: normal;
|
|
32
41
|
}
|
|
33
42
|
|
|
34
43
|
@font-face {
|
|
35
44
|
font-display: swap;
|
|
36
|
-
font-family:
|
|
37
|
-
src:
|
|
38
|
-
|
|
45
|
+
font-family: 'Pancetta';
|
|
46
|
+
src:
|
|
47
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099964/fonts/pancetta/pancettapro-extralightitalic-webfont.woff2')
|
|
48
|
+
format('woff2'),
|
|
49
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099960/fonts/pancetta/pancettapro-extralightitalic-webfont.woff')
|
|
50
|
+
format('woff');
|
|
39
51
|
font-weight: 200;
|
|
40
52
|
font-style: italic;
|
|
41
53
|
}
|
|
42
54
|
|
|
43
|
-
|
|
44
55
|
@font-face {
|
|
45
56
|
font-display: swap;
|
|
46
|
-
font-family:
|
|
47
|
-
src:
|
|
48
|
-
|
|
57
|
+
font-family: 'Pancetta';
|
|
58
|
+
src:
|
|
59
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099985/fonts/pancetta/pancettapro-light-webfont.woff2')
|
|
60
|
+
format('woff2'),
|
|
61
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099977/fonts/pancetta/pancettapro-light-webfont.woff')
|
|
62
|
+
format('woff');
|
|
49
63
|
font-weight: 300;
|
|
50
64
|
font-style: normal;
|
|
51
65
|
}
|
|
52
66
|
|
|
53
67
|
@font-face {
|
|
54
68
|
font-display: swap;
|
|
55
|
-
font-family:
|
|
56
|
-
src:
|
|
57
|
-
|
|
69
|
+
font-family: 'Pancetta';
|
|
70
|
+
src:
|
|
71
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100009/fonts/pancetta/pancettapro-lightitalic-webfont.woff2')
|
|
72
|
+
format('woff2'),
|
|
73
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099989/fonts/pancetta/pancettapro-lightitalic-webfont.woff')
|
|
74
|
+
format('woff');
|
|
58
75
|
font-weight: 300;
|
|
59
76
|
font-style: italic;
|
|
60
77
|
}
|
|
61
78
|
|
|
62
79
|
@font-face {
|
|
63
80
|
font-display: swap;
|
|
64
|
-
font-family:
|
|
65
|
-
src:
|
|
66
|
-
|
|
81
|
+
font-family: 'Pancetta';
|
|
82
|
+
src:
|
|
83
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100013/fonts/pancetta/pancettapro-regular-webfont.woff2')
|
|
84
|
+
format('woff2'),
|
|
85
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100005/fonts/pancetta/pancettapro-regular-webfont.woff')
|
|
86
|
+
format('woff');
|
|
67
87
|
font-weight: 400;
|
|
68
88
|
font-style: normal;
|
|
69
89
|
}
|
|
70
90
|
|
|
71
91
|
@font-face {
|
|
72
92
|
font-display: swap;
|
|
73
|
-
font-family:
|
|
74
|
-
src:
|
|
75
|
-
|
|
93
|
+
font-family: 'Pancetta';
|
|
94
|
+
src:
|
|
95
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099973/fonts/pancetta/pancettapro-italic-webfont.woff2')
|
|
96
|
+
format('woff2'),
|
|
97
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099969/fonts/pancetta/pancettapro-italic-webfont.woff')
|
|
98
|
+
format('woff');
|
|
76
99
|
font-weight: 400;
|
|
77
100
|
font-style: italic;
|
|
78
101
|
}
|
|
79
102
|
|
|
80
103
|
@font-face {
|
|
81
104
|
font-display: swap;
|
|
82
|
-
font-family:
|
|
83
|
-
src:
|
|
84
|
-
|
|
105
|
+
font-family: 'Pancetta';
|
|
106
|
+
src:
|
|
107
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099997/fonts/pancetta/pancettapro-medium-webfont.woff2')
|
|
108
|
+
format('woff2'),
|
|
109
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099981/fonts/pancetta/pancettapro-medium-webfont.woff')
|
|
110
|
+
format('woff');
|
|
85
111
|
font-weight: 500;
|
|
86
112
|
font-style: normal;
|
|
87
113
|
}
|
|
88
114
|
|
|
89
115
|
@font-face {
|
|
90
116
|
font-display: swap;
|
|
91
|
-
font-family:
|
|
92
|
-
src:
|
|
93
|
-
|
|
117
|
+
font-family: 'Pancetta';
|
|
118
|
+
src:
|
|
119
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100001/fonts/pancetta/pancettapro-mediumitalic-webfont.woff2')
|
|
120
|
+
format('woff2'),
|
|
121
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099993/fonts/pancetta/pancettapro-mediumitalic-webfont.woff')
|
|
122
|
+
format('woff');
|
|
94
123
|
font-weight: 500;
|
|
95
124
|
font-style: italic;
|
|
96
125
|
}
|
|
97
126
|
|
|
98
127
|
@font-face {
|
|
99
128
|
font-display: swap;
|
|
100
|
-
font-family:
|
|
101
|
-
src:
|
|
102
|
-
|
|
129
|
+
font-family: 'Pancetta';
|
|
130
|
+
src:
|
|
131
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100038/fonts/pancetta/pancettapro-semibold-webfont.woff2')
|
|
132
|
+
format('woff2'),
|
|
133
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100034/fonts/pancetta/pancettapro-semibold-webfont.woff')
|
|
134
|
+
format('woff');
|
|
103
135
|
font-weight: 600;
|
|
104
136
|
font-style: normal;
|
|
105
137
|
}
|
|
106
138
|
|
|
107
139
|
@font-face {
|
|
108
140
|
font-display: swap;
|
|
109
|
-
font-family:
|
|
110
|
-
src:
|
|
111
|
-
|
|
141
|
+
font-family: 'Pancetta';
|
|
142
|
+
src:
|
|
143
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100026/fonts/pancetta/pancettapro-semibolditalic-webfont.woff2')
|
|
144
|
+
format('woff2'),
|
|
145
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711100047/fonts/pancetta/pancettapro-semibolditalic-webfont.woff')
|
|
146
|
+
format('woff');
|
|
112
147
|
font-weight: 600;
|
|
113
148
|
font-style: italic;
|
|
114
149
|
}
|
|
115
150
|
|
|
116
151
|
@font-face {
|
|
117
152
|
font-display: swap;
|
|
118
|
-
font-family:
|
|
119
|
-
src:
|
|
120
|
-
|
|
153
|
+
font-family: 'Pancetta';
|
|
154
|
+
src:
|
|
155
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099948/fonts/pancetta/pancettapro-bold-webfont.woff2')
|
|
156
|
+
format('woff2'),
|
|
157
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099932/fonts/pancetta/pancettapro-bold-webfont.woff')
|
|
158
|
+
format('woff');
|
|
121
159
|
font-weight: 700;
|
|
122
160
|
font-style: normal;
|
|
123
161
|
}
|
|
124
162
|
|
|
125
163
|
@font-face {
|
|
126
164
|
font-display: swap;
|
|
127
|
-
font-family:
|
|
128
|
-
src:
|
|
129
|
-
|
|
165
|
+
font-family: 'Pancetta';
|
|
166
|
+
src:
|
|
167
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099952/fonts/pancetta/pancettapro-bolditalic-webfont.woff2')
|
|
168
|
+
format('woff2'),
|
|
169
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099936/fonts/pancetta/pancettapro-bolditalic-webfont.woff')
|
|
170
|
+
format('woff');
|
|
130
171
|
font-weight: 700;
|
|
131
172
|
font-style: italic;
|
|
132
173
|
}
|
|
133
174
|
|
|
134
175
|
@font-face {
|
|
135
176
|
font-display: swap;
|
|
136
|
-
font-family:
|
|
137
|
-
src:
|
|
138
|
-
|
|
177
|
+
font-family: 'Pancetta';
|
|
178
|
+
src:
|
|
179
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099929/fonts/pancetta/pancettapro-black-webfont.woff2')
|
|
180
|
+
format('woff2'),
|
|
181
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099921/fonts/pancetta/pancettapro-black-webfont.woff')
|
|
182
|
+
format('woff');
|
|
139
183
|
font-weight: 900;
|
|
140
184
|
font-style: normal;
|
|
141
185
|
}
|
|
142
186
|
|
|
143
187
|
@font-face {
|
|
144
188
|
font-display: swap;
|
|
145
|
-
font-family:
|
|
146
|
-
src:
|
|
147
|
-
|
|
189
|
+
font-family: 'Pancetta';
|
|
190
|
+
src:
|
|
191
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099941/fonts/pancetta/pancettapro-blackitalic-webfont.woff2')
|
|
192
|
+
format('woff2'),
|
|
193
|
+
url('https://res.cloudinary.com/dkz9eknwh/raw/upload/v1711099924/fonts/pancetta/pancettapro-blackitalic-webfont.woff')
|
|
194
|
+
format('woff');
|
|
148
195
|
font-weight: 900;
|
|
149
196
|
font-style: italic;
|
|
150
197
|
}
|