@latte-macchiat-io/latte-vanilla-components 0.0.187 → 0.0.189
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/package.json +2 -1
- package/src/components/Actions/Actions.css.ts +1 -1
- package/src/components/Button/Button.css.ts +1 -1
- package/src/components/Button/stories.tsx +9 -17
- package/src/components/Carousel/Carousel.css.ts +1 -1
- package/src/components/Columns/Columns.css.ts +1 -1
- package/src/components/ConsentCookie/ConsentCookie.css.ts +1 -1
- package/src/components/Footer/Footer.css.ts +1 -1
- package/src/components/Form/Form.css.ts +1 -1
- package/src/components/Form/Row/Row.css.ts +1 -1
- package/src/components/Form/TextField/Input/Input.css.ts +1 -1
- package/src/components/Form/TextField/Label/Label.css.ts +1 -1
- package/src/components/Form/TextField/TextField.css.ts +1 -1
- package/src/components/Form/TextField/Textarea/Textarea.css.ts +1 -1
- package/src/components/Header/Header.css.ts +1 -1
- package/src/components/Header/HeaderOverlay/index.tsx +1 -1
- package/src/components/Header/HeaderOverlay/styles.css.ts +7 -7
- package/src/components/Header/ToggleNav/index.tsx +2 -5
- package/src/components/Icon/Icon.css.ts +0 -1
- package/src/components/KeyNumber/KeyNumber.css.ts +1 -1
- package/src/components/LanguageSwitcher/LanguageSwitcher.css.ts +1 -1
- package/src/components/Logo/Logo.css.ts +1 -1
- package/src/components/Main/Main.css.ts +1 -1
- package/src/components/Modal/Modal.css.ts +1 -1
- package/src/components/Modal/stories.tsx +54 -89
- package/src/components/Nav/Nav.css.ts +1 -1
- package/src/components/Nav/Nav.tsx +1 -0
- package/src/components/NavLegal/NavLegal.css.ts +1 -1
- package/src/components/NavSocial/NavSocial.css.ts +1 -1
- package/src/components/Section/Section.css.ts +1 -1
- package/src/components/Section/stories.tsx +60 -61
- package/src/components/Video/Video.css.ts +1 -1
- package/src/components/VideoFullWidth/VideoFullWidth.css.ts +1 -1
- package/src/index.ts +5 -22
- package/src/styles/sprinkles.css.ts +1 -1
- package/src/themes/createTheme.ts +65 -0
- package/src/types/withClassName.ts +1 -0
- package/src/assets/styles/default-theme.ts +0 -312
- package/src/assets/styles/mediaqueries.tsx +0 -24
- package/src/components/ToRemove/ToRemove.tsx +0 -3
- package/src/theme/index.ts +0 -6
- package/src/theme/utils.ts +0 -76
- package/src/themes/dark.css.ts +0 -19
- package/src/themes/light.css.ts +0 -19
- package/src/types/theme.ts +0 -295
- package/src/utils/quickTheme.ts +0 -38
- package/src/utils/theme.ts +0 -131
- /package/src/{theme → themes}/baseThemeValues.ts +0 -0
- /package/src/{theme → themes}/contract.css.ts +0 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@latte-macchiat-io/latte-vanilla-components",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.189",
|
4
4
|
"description": "Beautiful components for amazing projects, with a touch of Vanilla 🥤",
|
5
5
|
"type": "module",
|
6
6
|
"main": "./src/index.ts",
|
@@ -47,6 +47,7 @@
|
|
47
47
|
"clsx": "^2.1.1",
|
48
48
|
"eslint": "^9.15.0",
|
49
49
|
"eslint-config-prettier": "^10.0.1",
|
50
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
50
51
|
"eslint-plugin-import": "^2.31.0",
|
51
52
|
"eslint-plugin-jsx-a11y": "^6.6.1",
|
52
53
|
"eslint-plugin-storybook": "^9.1.5",
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../theme';
|
4
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const actionsBase = style({
|
7
7
|
display: 'flex',
|
@@ -81,18 +81,11 @@ export const Ghost: Story = {
|
|
81
81
|
},
|
82
82
|
};
|
83
83
|
|
84
|
-
export const Destructive: Story = {
|
85
|
-
args: {
|
86
|
-
variant: 'destructive',
|
87
|
-
children: 'Destructive Button',
|
88
|
-
},
|
89
|
-
};
|
90
|
-
|
91
84
|
// Size Variants
|
92
85
|
export const Small: Story = {
|
93
86
|
args: {
|
94
87
|
variant: 'primary',
|
95
|
-
size: '
|
88
|
+
size: 'sm',
|
96
89
|
children: 'Small Button',
|
97
90
|
},
|
98
91
|
};
|
@@ -100,7 +93,7 @@ export const Small: Story = {
|
|
100
93
|
export const Medium: Story = {
|
101
94
|
args: {
|
102
95
|
variant: 'primary',
|
103
|
-
size: '
|
96
|
+
size: 'md',
|
104
97
|
children: 'Medium Button',
|
105
98
|
},
|
106
99
|
};
|
@@ -108,7 +101,7 @@ export const Medium: Story = {
|
|
108
101
|
export const Large: Story = {
|
109
102
|
args: {
|
110
103
|
variant: 'primary',
|
111
|
-
size: '
|
104
|
+
size: 'lg',
|
112
105
|
children: 'Large Button',
|
113
106
|
},
|
114
107
|
};
|
@@ -149,7 +142,6 @@ export const AllVariants: Story = {
|
|
149
142
|
<Button variant="primary">Primary</Button>
|
150
143
|
<Button variant="secondary">Secondary</Button>
|
151
144
|
<Button variant="ghost">Ghost</Button>
|
152
|
-
<Button variant="destructive">Destructive</Button>
|
153
145
|
</div>
|
154
146
|
</Section>
|
155
147
|
),
|
@@ -167,13 +159,13 @@ export const AllSizes: Story = {
|
|
167
159
|
render: () => (
|
168
160
|
<Section>
|
169
161
|
<div style={{ display: 'flex', gap: '1rem', alignItems: 'center' }}>
|
170
|
-
<Button variant="primary" size="
|
162
|
+
<Button variant="primary" size="sm">
|
171
163
|
Small
|
172
164
|
</Button>
|
173
|
-
<Button variant="primary" size="
|
165
|
+
<Button variant="primary" size="md">
|
174
166
|
Medium
|
175
167
|
</Button>
|
176
|
-
<Button variant="primary" size="
|
168
|
+
<Button variant="primary" size="lg">
|
177
169
|
Large
|
178
170
|
</Button>
|
179
171
|
</div>
|
@@ -196,10 +188,10 @@ export const InteractiveExample: Story = {
|
|
196
188
|
<div>
|
197
189
|
<h3>Call to Action</h3>
|
198
190
|
<div style={{ display: 'flex', gap: '1rem' }}>
|
199
|
-
<Button variant="primary" size="
|
191
|
+
<Button variant="primary" size="lg">
|
200
192
|
Get Started
|
201
193
|
</Button>
|
202
|
-
<Button variant="secondary" size="
|
194
|
+
<Button variant="secondary" size="lg">
|
203
195
|
Learn More
|
204
196
|
</Button>
|
205
197
|
</div>
|
@@ -210,7 +202,7 @@ export const InteractiveExample: Story = {
|
|
210
202
|
<div style={{ display: 'flex', gap: '0.5rem' }}>
|
211
203
|
<Button variant="primary">Save</Button>
|
212
204
|
<Button variant="secondary">Cancel</Button>
|
213
|
-
<Button variant="
|
205
|
+
<Button variant="danger">Delete</Button>
|
214
206
|
</div>
|
215
207
|
</div>
|
216
208
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { keyframes, style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
keyframes({
|
6
6
|
'0%': { transform: 'translateX(0)' },
|
7
7
|
'100%': { transform: 'translateX(var(--slide-offset))' },
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const columnsBase = style({
|
7
7
|
display: 'flex',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { keyframes, style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const fadeIn = keyframes({
|
7
7
|
from: { opacity: '0' },
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const footerBase = style({
|
7
7
|
display: 'flex',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../
|
3
|
+
import { themeContract } from '../../themes/contract.css';
|
4
4
|
|
5
5
|
const formBase = style({
|
6
6
|
width: '100%',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../../
|
3
|
+
import { themeContract } from '../../../themes/contract.css';
|
4
4
|
|
5
5
|
const rowBase = style({
|
6
6
|
display: 'flex',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../../../
|
3
|
+
import { themeContract } from '../../../../themes/contract.css';
|
4
4
|
|
5
5
|
const inputBase = style({
|
6
6
|
appearance: 'none',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../../../
|
3
|
+
import { themeContract } from '../../../../themes/contract.css';
|
4
4
|
|
5
5
|
const labelBase = style({
|
6
6
|
fontFamily: themeContract.fonts.body,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../../
|
3
|
+
import { themeContract } from '../../../themes/contract.css';
|
4
4
|
|
5
5
|
const textFieldBase = style({
|
6
6
|
display: 'flex',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../../../
|
3
|
+
import { themeContract } from '../../../../themes/contract.css';
|
4
4
|
|
5
5
|
const textareaBase = style({
|
6
6
|
appearance: 'none',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const headerBase = style({
|
7
7
|
display: 'flex',
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
2
2
|
import { useEffect } from 'react';
|
3
|
-
import { WithClassName } from '@/types/withClassName';
|
4
3
|
|
5
4
|
import { headerOverlayStyle, vars } from './styles.css';
|
5
|
+
import { WithClassName } from '../../../types/withClassName';
|
6
6
|
|
7
7
|
export interface HeaderOverlayProps {
|
8
8
|
isOpen: boolean;
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import { createVar, style
|
2
|
-
import { mq } from '../../../assets/styles/mediaqueries';
|
1
|
+
import { createVar, style } from '@vanilla-extract/css';
|
3
2
|
|
4
3
|
export const vars = {
|
5
4
|
overlayBottom: createVar(),
|
@@ -25,9 +24,10 @@ export const headerOverlayStyle = style({
|
|
25
24
|
transform: vars.overlayTransform,
|
26
25
|
transition: 'transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0)',
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
},
|
27
|
+
// TODO responsive with sprinkles
|
28
|
+
// '@media': {
|
29
|
+
// [mq[0]]: { gap: 'var(--overlayGap0, 20px)' },
|
30
|
+
// [mq[1]]: { gap: 'var(--overlayGap1, 30px)' },
|
31
|
+
// [mq[2]]: { gap: 'var(--overlayGap2, 40px)' },
|
32
|
+
// },
|
33
33
|
});
|
@@ -1,17 +1,14 @@
|
|
1
1
|
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
2
|
-
import { Theme } from '@/types/theme';
|
3
|
-
import { WithClassName } from '@/types/withClassName';
|
4
2
|
import { toggleNavBarStyle, toggleNavStyle, vars } from './styles.css';
|
5
|
-
import {
|
3
|
+
import { WithClassName } from '../../../types/withClassName';
|
6
4
|
|
7
5
|
export type ToggleNavProps = {
|
8
|
-
theme?: Theme;
|
9
6
|
isNavOpen: boolean;
|
10
7
|
onToggleNav: () => void;
|
11
8
|
displayOnDesktop: boolean;
|
12
9
|
};
|
13
10
|
|
14
|
-
export const ToggleNav = ({
|
11
|
+
export const ToggleNav = ({ isNavOpen = false, onToggleNav, displayOnDesktop, className }: ToggleNavProps & WithClassName) => {
|
15
12
|
const handleClick = () => {
|
16
13
|
window.scrollTo({ top: 0, behavior: 'smooth' });
|
17
14
|
onToggleNav();
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const keyNumberBase = style({
|
7
7
|
display: 'flex',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../
|
3
|
+
import { themeContract } from '../../themes/contract.css';
|
4
4
|
|
5
5
|
const languageSwitcherBase = style({
|
6
6
|
position: 'relative',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../
|
3
|
+
import { themeContract } from '../../themes/contract.css';
|
4
4
|
|
5
5
|
const logoBase = style({
|
6
6
|
display: 'inline-block',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../
|
3
|
+
import { themeContract } from '../../themes/contract.css';
|
4
4
|
|
5
5
|
const mainBase = style({
|
6
6
|
display: 'flex',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { keyframes, style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const fadeIn = keyframes({
|
7
7
|
from: { opacity: '0' },
|
@@ -77,13 +77,7 @@ const InteractiveModal = ({ size = 'medium', centered = true, ...args }: any) =>
|
|
77
77
|
<Button variant="primary" onClick={() => setIsOpen(true)}>
|
78
78
|
Open Modal
|
79
79
|
</Button>
|
80
|
-
<Modal
|
81
|
-
isOpen={isOpen}
|
82
|
-
onClose={() => setIsOpen(false)}
|
83
|
-
size={size}
|
84
|
-
centered={centered}
|
85
|
-
{...args}
|
86
|
-
>
|
80
|
+
<Modal isOpen={isOpen} onClose={() => setIsOpen(false)} size={size} centered={centered} {...args}>
|
87
81
|
<div style={{ padding: '2rem' }}>
|
88
82
|
<h2>Modal Title</h2>
|
89
83
|
<p>This is the modal content. You can put any React components here.</p>
|
@@ -104,7 +98,7 @@ const InteractiveModal = ({ size = 'medium', centered = true, ...args }: any) =>
|
|
104
98
|
export const Default: Story = {
|
105
99
|
render: (args) => <InteractiveModal {...args} />,
|
106
100
|
args: {
|
107
|
-
size: '
|
101
|
+
size: 'md',
|
108
102
|
centered: true,
|
109
103
|
showCloseButton: true,
|
110
104
|
closeOnBackdropClick: true,
|
@@ -195,24 +189,15 @@ export const ConfirmationDialog: Story = {
|
|
195
189
|
|
196
190
|
return (
|
197
191
|
<Section>
|
198
|
-
<Button variant="
|
192
|
+
<Button variant="danger" onClick={() => setIsOpen(true)}>
|
199
193
|
Delete Item
|
200
194
|
</Button>
|
201
|
-
<Modal
|
202
|
-
isOpen={isOpen}
|
203
|
-
onClose={() => setIsOpen(false)}
|
204
|
-
size="small"
|
205
|
-
centered={true}
|
206
|
-
>
|
195
|
+
<Modal isOpen={isOpen} onClose={() => setIsOpen(false)} size="sm" centered={true}>
|
207
196
|
<div style={{ padding: '2rem', textAlign: 'center' }}>
|
208
|
-
<h3 style={{ color: 'var(--latte-colors-error)', marginBottom: '1rem' }}>
|
209
|
-
|
210
|
-
</h3>
|
211
|
-
<p style={{ marginBottom: '2rem' }}>
|
212
|
-
Are you sure you want to delete this item? This action cannot be undone.
|
213
|
-
</p>
|
197
|
+
<h3 style={{ color: 'var(--latte-colors-error)', marginBottom: '1rem' }}>Delete Confirmation</h3>
|
198
|
+
<p style={{ marginBottom: '2rem' }}>Are you sure you want to delete this item? This action cannot be undone.</p>
|
214
199
|
<div style={{ display: 'flex', gap: '1rem', justifyContent: 'center' }}>
|
215
|
-
<Button variant="
|
200
|
+
<Button variant="danger" onClick={() => setIsOpen(false)}>
|
216
201
|
Delete
|
217
202
|
</Button>
|
218
203
|
<Button variant="secondary" onClick={() => setIsOpen(false)}>
|
@@ -242,58 +227,46 @@ export const FormModal: Story = {
|
|
242
227
|
<Button variant="primary" onClick={() => setIsOpen(true)}>
|
243
228
|
Add New User
|
244
229
|
</Button>
|
245
|
-
<Modal
|
246
|
-
isOpen={isOpen}
|
247
|
-
onClose={() => setIsOpen(false)}
|
248
|
-
size="medium"
|
249
|
-
centered={true}
|
250
|
-
>
|
230
|
+
<Modal isOpen={isOpen} onClose={() => setIsOpen(false)} size="md" centered={true}>
|
251
231
|
<div style={{ padding: '2rem' }}>
|
252
232
|
<h2 style={{ marginBottom: '2rem' }}>Add New User</h2>
|
253
233
|
<form style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
|
254
234
|
<div>
|
255
|
-
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: '500' }}>
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
width: '100%',
|
262
|
-
padding: '0.75rem',
|
235
|
+
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: '500' }}>Name</label>
|
236
|
+
<input
|
237
|
+
type="text"
|
238
|
+
style={{
|
239
|
+
width: '100%',
|
240
|
+
padding: '0.75rem',
|
263
241
|
border: '1px solid var(--latte-colors-border)',
|
264
242
|
borderRadius: 'var(--latte-radii-md)',
|
265
|
-
fontSize: 'var(--latte-fontSizes-md)'
|
266
|
-
}}
|
243
|
+
fontSize: 'var(--latte-fontSizes-md)',
|
244
|
+
}}
|
267
245
|
/>
|
268
246
|
</div>
|
269
247
|
<div>
|
270
|
-
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: '500' }}>
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
width: '100%',
|
277
|
-
padding: '0.75rem',
|
248
|
+
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: '500' }}>Email</label>
|
249
|
+
<input
|
250
|
+
type="email"
|
251
|
+
style={{
|
252
|
+
width: '100%',
|
253
|
+
padding: '0.75rem',
|
278
254
|
border: '1px solid var(--latte-colors-border)',
|
279
255
|
borderRadius: 'var(--latte-radii-md)',
|
280
|
-
fontSize: 'var(--latte-fontSizes-md)'
|
281
|
-
}}
|
256
|
+
fontSize: 'var(--latte-fontSizes-md)',
|
257
|
+
}}
|
282
258
|
/>
|
283
259
|
</div>
|
284
260
|
<div>
|
285
|
-
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: '500' }}>
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
width: '100%',
|
291
|
-
padding: '0.75rem',
|
261
|
+
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: '500' }}>Role</label>
|
262
|
+
<select
|
263
|
+
style={{
|
264
|
+
width: '100%',
|
265
|
+
padding: '0.75rem',
|
292
266
|
border: '1px solid var(--latte-colors-border)',
|
293
267
|
borderRadius: 'var(--latte-radii-md)',
|
294
|
-
fontSize: 'var(--latte-fontSizes-md)'
|
295
|
-
}}
|
296
|
-
>
|
268
|
+
fontSize: 'var(--latte-fontSizes-md)',
|
269
|
+
}}>
|
297
270
|
<option>User</option>
|
298
271
|
<option>Admin</option>
|
299
272
|
<option>Moderator</option>
|
@@ -347,50 +320,42 @@ export const ImageGallery: Story = {
|
|
347
320
|
key={index}
|
348
321
|
src={src}
|
349
322
|
alt={`Gallery ${index + 1}`}
|
350
|
-
style={{
|
351
|
-
width: '100%',
|
352
|
-
height: '150px',
|
353
|
-
objectFit: 'cover',
|
323
|
+
style={{
|
324
|
+
width: '100%',
|
325
|
+
height: '150px',
|
326
|
+
objectFit: 'cover',
|
354
327
|
borderRadius: 'var(--latte-radii-md)',
|
355
|
-
cursor: 'pointer'
|
328
|
+
cursor: 'pointer',
|
356
329
|
}}
|
357
330
|
onClick={() => openImage(index)}
|
358
331
|
/>
|
359
332
|
))}
|
360
333
|
</div>
|
361
|
-
<Modal
|
362
|
-
isOpen={isOpen}
|
363
|
-
onClose={() => setIsOpen(false)}
|
364
|
-
size="large"
|
365
|
-
centered={true}
|
366
|
-
>
|
334
|
+
<Modal isOpen={isOpen} onClose={() => setIsOpen(false)} size="lg" centered={true}>
|
367
335
|
<div style={{ padding: '1rem' }}>
|
368
336
|
<img
|
369
337
|
src={images[selectedImage]}
|
370
338
|
alt={`Gallery ${selectedImage + 1}`}
|
371
|
-
style={{
|
372
|
-
width: '100%',
|
373
|
-
height: 'auto',
|
374
|
-
borderRadius: 'var(--latte-radii-md)'
|
339
|
+
style={{
|
340
|
+
width: '100%',
|
341
|
+
height: 'auto',
|
342
|
+
borderRadius: 'var(--latte-radii-md)',
|
375
343
|
}}
|
376
344
|
/>
|
377
|
-
<div
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
onClick={() => setSelectedImage((prev) => (prev > 0 ? prev - 1 : images.length - 1))}
|
386
|
-
>
|
345
|
+
<div
|
346
|
+
style={{
|
347
|
+
marginTop: '1rem',
|
348
|
+
display: 'flex',
|
349
|
+
justifyContent: 'space-between',
|
350
|
+
alignItems: 'center',
|
351
|
+
}}>
|
352
|
+
<Button variant="ghost" onClick={() => setSelectedImage((prev) => (prev > 0 ? prev - 1 : images.length - 1))}>
|
387
353
|
← Previous
|
388
354
|
</Button>
|
389
|
-
<span>
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
>
|
355
|
+
<span>
|
356
|
+
Image {selectedImage + 1} of {images.length}
|
357
|
+
</span>
|
358
|
+
<Button variant="ghost" onClick={() => setSelectedImage((prev) => (prev < images.length - 1 ? prev + 1 : 0))}>
|
394
359
|
Next →
|
395
360
|
</Button>
|
396
361
|
</div>
|
@@ -406,4 +371,4 @@ export const ImageGallery: Story = {
|
|
406
371
|
},
|
407
372
|
},
|
408
373
|
},
|
409
|
-
};
|
374
|
+
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const navBase = style({
|
7
7
|
display: 'flex',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const navLegalBase = style({
|
7
7
|
display: 'flex',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
3
|
import { queries } from '../../styles/mediaqueries';
|
4
|
-
import { themeContract } from '../../
|
4
|
+
import { themeContract } from '../../themes/contract.css';
|
5
5
|
|
6
6
|
const navSocialBase = style({
|
7
7
|
display: 'flex',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
2
2
|
import { recipe, RecipeVariants } from '@vanilla-extract/recipes';
|
3
|
-
import { themeContract } from '../../
|
3
|
+
import { themeContract } from '../../themes/contract.css';
|
4
4
|
|
5
5
|
const sectionBase = style({
|
6
6
|
width: '100%',
|