@shipfox/react-ui 0.24.0 → 0.26.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/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/modal/modal.d.ts +2 -1
- package/dist/components/modal/modal.js +3 -2
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/index.js +3 -0
- package/dist/components/slider/slider.d.ts +10 -0
- package/dist/components/slider/slider.js +38 -0
- package/dist/components/table/data-table.js +57 -22
- package/dist/components/table/table.js +2 -1
- package/dist/components/table/table.stories.data.js +1 -1
- package/dist/styles.css +1 -1
- package/package.json +5 -5
- package/dist/colors.stories.js +0 -61
- package/dist/components/alert/alert.stories.js +0 -227
- package/dist/components/avatar/avatar.stories.js +0 -267
- package/dist/components/badge/badge.stories.js +0 -802
- package/dist/components/button/button-link.stories.js +0 -127
- package/dist/components/button/button.stories.js +0 -187
- package/dist/components/button/icon-button.stories.js +0 -344
- package/dist/components/button-group/button-group.stories.js +0 -644
- package/dist/components/card/card.stories.js +0 -216
- package/dist/components/checkbox/checkbox.stories.js +0 -566
- package/dist/components/code-block/code-block.stories.js +0 -341
- package/dist/components/combobox/combobox.stories.js +0 -191
- package/dist/components/command/command.stories.js +0 -228
- package/dist/components/confetti/confetti.stories.js +0 -41
- package/dist/components/count-up/count-up.stories.js +0 -568
- package/dist/components/dashboard/components/charts/bar-chart.stories.js +0 -287
- package/dist/components/dashboard/components/charts/line-chart.stories.js +0 -257
- package/dist/components/dashboard/dashboard.stories.js +0 -23
- package/dist/components/date-picker/date-picker.stories.js +0 -349
- package/dist/components/dropdown-input/dropdown-input.stories.js +0 -240
- package/dist/components/dropdown-menu/dropdown-menu.stories.js +0 -462
- package/dist/components/dynamic-item/dynamic-item.stories.js +0 -385
- package/dist/components/empty-state/empty-state.stories.js +0 -74
- package/dist/components/form/form.stories.js +0 -587
- package/dist/components/icon/icon.stories.js +0 -38
- package/dist/components/inline-tips/inline-tips.stories.js +0 -219
- package/dist/components/input/input.stories.js +0 -265
- package/dist/components/interval-selector/interval-selector.stories.js +0 -232
- package/dist/components/item/item.stories.js +0 -239
- package/dist/components/kbd/kbd.stories.js +0 -119
- package/dist/components/label/label.stories.js +0 -105
- package/dist/components/modal/modal.stories.js +0 -566
- package/dist/components/search/search.stories.js +0 -630
- package/dist/components/select/select.stories.js +0 -393
- package/dist/components/sheet/sheet.stories.js +0 -368
- package/dist/components/skeleton/skeleton.stories.js +0 -345
- package/dist/components/table/table.stories.js +0 -302
- package/dist/components/tabs/tabs.stories.js +0 -179
- package/dist/components/textarea/textarea.stories.js +0 -339
- package/dist/components/toast/toast.stories.js +0 -326
- package/dist/components/tooltip/tooltip.stories.js +0 -560
- package/dist/components/typography/code.stories.js +0 -54
- package/dist/components/typography/header.stories.js +0 -34
- package/dist/components/typography/text.stories.js +0 -105
- package/dist/onboarding/sign-in.stories.js +0 -101
|
@@ -1,566 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { argosScreenshot } from '@argos-ci/storybook/vitest';
|
|
3
|
-
import { screen, within } from '@testing-library/react';
|
|
4
|
-
import userEvent from '@testing-library/user-event';
|
|
5
|
-
import { Button, ButtonLink } from '../../components/button/index.js';
|
|
6
|
-
import { CodeBlock, CodeBlockBody, CodeBlockContent, CodeBlockCopyButton, CodeBlockFilename, CodeBlockFiles, CodeBlockFooter, CodeBlockHeader, CodeBlockItem } from '../../components/code-block/index.js';
|
|
7
|
-
import { Confetti } from '../../components/confetti/index.js';
|
|
8
|
-
import { DatePicker } from '../../components/date-picker/index.js';
|
|
9
|
-
import { DynamicItem } from '../../components/dynamic-item/index.js';
|
|
10
|
-
import { Icon } from '../../components/icon/index.js';
|
|
11
|
-
import { Input } from '../../components/input/index.js';
|
|
12
|
-
import { ItemTitle } from '../../components/item/index.js';
|
|
13
|
-
import { Label } from '../../components/label/index.js';
|
|
14
|
-
import { MovingBorder } from '../../components/moving-border/index.js';
|
|
15
|
-
import { Text } from '../../components/typography/index.js';
|
|
16
|
-
import { useEffect, useRef, useState } from 'react';
|
|
17
|
-
import { cn } from '../../utils/cn.js';
|
|
18
|
-
import illustration2 from '../../assets/illustration-2.svg';
|
|
19
|
-
import illustrationBg from '../../assets/illustration-gradient.svg';
|
|
20
|
-
import { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, ModalTitle, ModalTrigger } from './modal.js';
|
|
21
|
-
const OPEN_MODAL_REGEX = /open modal/i;
|
|
22
|
-
const IMPORT_JOBS_REGEX = /import past jobs from github/i;
|
|
23
|
-
const GITHUB_ACTIONS_REGEX = /run github actions on shipfox/i;
|
|
24
|
-
const DEFAULT_START_DATE = new Date('2025-12-06T00:00:00.000Z');
|
|
25
|
-
const meta = {
|
|
26
|
-
title: 'Components/Modal',
|
|
27
|
-
component: Modal,
|
|
28
|
-
tags: [
|
|
29
|
-
'autodocs'
|
|
30
|
-
],
|
|
31
|
-
parameters: {
|
|
32
|
-
layout: 'centered'
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
export default meta;
|
|
36
|
-
export const Default = {
|
|
37
|
-
play: async (ctx)=>{
|
|
38
|
-
const { canvasElement, step } = ctx;
|
|
39
|
-
const canvas = within(canvasElement);
|
|
40
|
-
const user = userEvent.setup();
|
|
41
|
-
await step('Open the modal', async ()=>{
|
|
42
|
-
const triggerButton = canvas.getByRole('button', {
|
|
43
|
-
name: OPEN_MODAL_REGEX
|
|
44
|
-
});
|
|
45
|
-
await user.click(triggerButton);
|
|
46
|
-
});
|
|
47
|
-
await step('Wait for dialog to appear and render', async ()=>{
|
|
48
|
-
await screen.findByRole('dialog');
|
|
49
|
-
await new Promise((resolve)=>setTimeout(resolve, 100));
|
|
50
|
-
});
|
|
51
|
-
await argosScreenshot(ctx, 'Default Modal Open');
|
|
52
|
-
},
|
|
53
|
-
render: ()=>{
|
|
54
|
-
const [open, setOpen] = useState(false);
|
|
55
|
-
return /*#__PURE__*/ _jsx("div", {
|
|
56
|
-
className: "flex h-[calc(100vh/2)] w-[calc(100vw/2)] items-center justify-center rounded-16 bg-background-subtle-base shadow-tooltip",
|
|
57
|
-
children: /*#__PURE__*/ _jsxs(Modal, {
|
|
58
|
-
open: open,
|
|
59
|
-
onOpenChange: setOpen,
|
|
60
|
-
children: [
|
|
61
|
-
/*#__PURE__*/ _jsx(ModalTrigger, {
|
|
62
|
-
asChild: true,
|
|
63
|
-
children: /*#__PURE__*/ _jsx(Button, {
|
|
64
|
-
children: "Open Modal"
|
|
65
|
-
})
|
|
66
|
-
}),
|
|
67
|
-
/*#__PURE__*/ _jsxs(ModalContent, {
|
|
68
|
-
"aria-describedby": undefined,
|
|
69
|
-
children: [
|
|
70
|
-
/*#__PURE__*/ _jsx(ModalTitle, {
|
|
71
|
-
className: "sr-only",
|
|
72
|
-
children: "Modal Title"
|
|
73
|
-
}),
|
|
74
|
-
/*#__PURE__*/ _jsx(ModalHeader, {
|
|
75
|
-
children: /*#__PURE__*/ _jsx(Text, {
|
|
76
|
-
size: "lg",
|
|
77
|
-
className: "flex-1 overflow-ellipsis overflow-hidden whitespace-nowrap",
|
|
78
|
-
children: "Modal Title"
|
|
79
|
-
})
|
|
80
|
-
}),
|
|
81
|
-
/*#__PURE__*/ _jsx(ModalBody, {
|
|
82
|
-
children: /*#__PURE__*/ _jsx(Text, {
|
|
83
|
-
size: "sm",
|
|
84
|
-
className: "text-foreground-neutral-subtle w-full",
|
|
85
|
-
children: "This modal automatically adapts between dialog (desktop) and drawer (mobile) based on screen size. Try resizing your browser window!"
|
|
86
|
-
})
|
|
87
|
-
}),
|
|
88
|
-
/*#__PURE__*/ _jsxs(ModalFooter, {
|
|
89
|
-
children: [
|
|
90
|
-
/*#__PURE__*/ _jsx(Button, {
|
|
91
|
-
variant: "transparent",
|
|
92
|
-
onClick: ()=>setOpen(false),
|
|
93
|
-
children: "Cancel"
|
|
94
|
-
}),
|
|
95
|
-
/*#__PURE__*/ _jsx(Button, {
|
|
96
|
-
variant: "primary",
|
|
97
|
-
onClick: ()=>setOpen(false),
|
|
98
|
-
children: "Confirm"
|
|
99
|
-
})
|
|
100
|
-
]
|
|
101
|
-
})
|
|
102
|
-
]
|
|
103
|
-
})
|
|
104
|
-
]
|
|
105
|
-
})
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
export const ImportForm = {
|
|
110
|
-
play: async (ctx)=>{
|
|
111
|
-
const { canvasElement, step } = ctx;
|
|
112
|
-
const canvas = within(canvasElement);
|
|
113
|
-
const user = userEvent.setup();
|
|
114
|
-
await step('Open the modal', async ()=>{
|
|
115
|
-
const triggerButton = canvas.getByRole('button', {
|
|
116
|
-
name: IMPORT_JOBS_REGEX
|
|
117
|
-
});
|
|
118
|
-
await user.click(triggerButton);
|
|
119
|
-
});
|
|
120
|
-
await step('Wait for dialog to appear and render', async ()=>{
|
|
121
|
-
await screen.findByRole('dialog');
|
|
122
|
-
await new Promise((resolve)=>setTimeout(resolve, 100));
|
|
123
|
-
});
|
|
124
|
-
await argosScreenshot(ctx, 'Import Form Modal Open');
|
|
125
|
-
},
|
|
126
|
-
render: ()=>{
|
|
127
|
-
const [open, setOpen] = useState(false);
|
|
128
|
-
const [date, setDate] = useState(DEFAULT_START_DATE);
|
|
129
|
-
return /*#__PURE__*/ _jsx("div", {
|
|
130
|
-
className: "flex h-[calc(100vh/2)] w-[calc(100vw/2)] items-center justify-center rounded-16 bg-background-subtle-base shadow-tooltip",
|
|
131
|
-
children: /*#__PURE__*/ _jsxs(Modal, {
|
|
132
|
-
open: open,
|
|
133
|
-
onOpenChange: setOpen,
|
|
134
|
-
children: [
|
|
135
|
-
/*#__PURE__*/ _jsx(ModalTrigger, {
|
|
136
|
-
asChild: true,
|
|
137
|
-
children: /*#__PURE__*/ _jsx(Button, {
|
|
138
|
-
children: "Import past jobs from GitHub"
|
|
139
|
-
})
|
|
140
|
-
}),
|
|
141
|
-
/*#__PURE__*/ _jsxs(ModalContent, {
|
|
142
|
-
"aria-describedby": undefined,
|
|
143
|
-
overlayClassName: "bg-background-modal-overlay",
|
|
144
|
-
children: [
|
|
145
|
-
/*#__PURE__*/ _jsx(ModalTitle, {
|
|
146
|
-
className: "sr-only",
|
|
147
|
-
children: "Import past jobs from GitHub"
|
|
148
|
-
}),
|
|
149
|
-
/*#__PURE__*/ _jsx(ModalHeader, {
|
|
150
|
-
title: "Import past jobs from GitHub"
|
|
151
|
-
}),
|
|
152
|
-
/*#__PURE__*/ _jsxs(ModalBody, {
|
|
153
|
-
className: "gap-20",
|
|
154
|
-
children: [
|
|
155
|
-
/*#__PURE__*/ _jsx(Text, {
|
|
156
|
-
size: "sm",
|
|
157
|
-
className: "text-foreground-neutral-subtle w-full",
|
|
158
|
-
children: "Backfill your CI history by importing past runs from your GitHub repo. We'll handle the rest by creating a background task to import the data for you."
|
|
159
|
-
}),
|
|
160
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
161
|
-
className: "flex flex-col gap-20 w-full",
|
|
162
|
-
children: [
|
|
163
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
164
|
-
className: "flex flex-col gap-8 w-full",
|
|
165
|
-
children: [
|
|
166
|
-
/*#__PURE__*/ _jsx(Label, {
|
|
167
|
-
children: "Repository owner"
|
|
168
|
-
}),
|
|
169
|
-
/*#__PURE__*/ _jsx(Input, {
|
|
170
|
-
placeholder: "apache"
|
|
171
|
-
})
|
|
172
|
-
]
|
|
173
|
-
}),
|
|
174
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
175
|
-
className: "flex flex-col gap-8 w-full",
|
|
176
|
-
children: [
|
|
177
|
-
/*#__PURE__*/ _jsx(Label, {
|
|
178
|
-
children: "Repository name"
|
|
179
|
-
}),
|
|
180
|
-
/*#__PURE__*/ _jsx(Input, {
|
|
181
|
-
placeholder: "kafka"
|
|
182
|
-
})
|
|
183
|
-
]
|
|
184
|
-
}),
|
|
185
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
186
|
-
className: "flex flex-col gap-8 w-full",
|
|
187
|
-
children: [
|
|
188
|
-
/*#__PURE__*/ _jsx(Label, {
|
|
189
|
-
htmlFor: "start-date",
|
|
190
|
-
children: "Start date"
|
|
191
|
-
}),
|
|
192
|
-
/*#__PURE__*/ _jsx(DatePicker, {
|
|
193
|
-
id: "start-date",
|
|
194
|
-
date: date,
|
|
195
|
-
onDateSelect: setDate,
|
|
196
|
-
onClear: ()=>setDate(undefined),
|
|
197
|
-
placeholder: "DD/MM/YYYY"
|
|
198
|
-
})
|
|
199
|
-
]
|
|
200
|
-
})
|
|
201
|
-
]
|
|
202
|
-
})
|
|
203
|
-
]
|
|
204
|
-
}),
|
|
205
|
-
/*#__PURE__*/ _jsxs(ModalFooter, {
|
|
206
|
-
children: [
|
|
207
|
-
/*#__PURE__*/ _jsx(Button, {
|
|
208
|
-
variant: "transparent",
|
|
209
|
-
onClick: ()=>setOpen(false),
|
|
210
|
-
children: "Cancel"
|
|
211
|
-
}),
|
|
212
|
-
/*#__PURE__*/ _jsx(Button, {
|
|
213
|
-
variant: "primary",
|
|
214
|
-
onClick: ()=>setOpen(false),
|
|
215
|
-
children: "Import"
|
|
216
|
-
})
|
|
217
|
-
]
|
|
218
|
-
})
|
|
219
|
-
]
|
|
220
|
-
})
|
|
221
|
-
]
|
|
222
|
-
})
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
const diffCode = `jobs:
|
|
227
|
-
build:
|
|
228
|
-
- runs-on: ubuntu-latest
|
|
229
|
-
+ runs-on: shipfox-2vcpu-ubuntu-2404`;
|
|
230
|
-
export const GithubActions = {
|
|
231
|
-
parameters: {
|
|
232
|
-
viewport: {
|
|
233
|
-
defaultViewport: 'large'
|
|
234
|
-
}
|
|
235
|
-
},
|
|
236
|
-
play: async (ctx)=>{
|
|
237
|
-
const { canvasElement, step } = ctx;
|
|
238
|
-
const canvas = within(canvasElement);
|
|
239
|
-
const user = userEvent.setup();
|
|
240
|
-
await step('Open the modal', async ()=>{
|
|
241
|
-
const triggerButton = canvas.getByRole('button', {
|
|
242
|
-
name: GITHUB_ACTIONS_REGEX
|
|
243
|
-
});
|
|
244
|
-
await user.click(triggerButton);
|
|
245
|
-
});
|
|
246
|
-
await step('Wait for dialog to appear and render', async ()=>{
|
|
247
|
-
await screen.findByRole('dialog');
|
|
248
|
-
await new Promise((resolve)=>setTimeout(resolve, 100));
|
|
249
|
-
});
|
|
250
|
-
await argosScreenshot(ctx, 'Github Actions Modal Open');
|
|
251
|
-
},
|
|
252
|
-
render: ()=>{
|
|
253
|
-
const [open, setOpen] = useState(false);
|
|
254
|
-
const [footerState, setFooterState] = useState('running');
|
|
255
|
-
const confettiRef = useRef(null);
|
|
256
|
-
useEffect(()=>{
|
|
257
|
-
if (open && footerState === 'running') {
|
|
258
|
-
const timer = setTimeout(()=>{
|
|
259
|
-
setFooterState('done');
|
|
260
|
-
}, 3000);
|
|
261
|
-
return ()=>{
|
|
262
|
-
clearTimeout(timer);
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
}, [
|
|
266
|
-
open,
|
|
267
|
-
footerState
|
|
268
|
-
]);
|
|
269
|
-
useEffect(()=>{
|
|
270
|
-
if (footerState === 'done' && open) {
|
|
271
|
-
const timer = setTimeout(()=>{
|
|
272
|
-
if (confettiRef.current) {
|
|
273
|
-
void confettiRef.current.fire();
|
|
274
|
-
}
|
|
275
|
-
}, 200);
|
|
276
|
-
return ()=>{
|
|
277
|
-
clearTimeout(timer);
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
}, [
|
|
281
|
-
footerState,
|
|
282
|
-
open
|
|
283
|
-
]);
|
|
284
|
-
useEffect(()=>{
|
|
285
|
-
if (!open) {
|
|
286
|
-
setFooterState('running');
|
|
287
|
-
}
|
|
288
|
-
}, [
|
|
289
|
-
open
|
|
290
|
-
]);
|
|
291
|
-
return /*#__PURE__*/ _jsxs("div", {
|
|
292
|
-
className: "flex h-[50vh] w-[calc(100vw/2)] items-center justify-center rounded-16 bg-background-subtle-base shadow-tooltip",
|
|
293
|
-
children: [
|
|
294
|
-
/*#__PURE__*/ _jsx(Confetti, {
|
|
295
|
-
ref: confettiRef,
|
|
296
|
-
manualstart: true,
|
|
297
|
-
options: {
|
|
298
|
-
particleCount: 200,
|
|
299
|
-
spread: 100,
|
|
300
|
-
colors: [
|
|
301
|
-
'#ff6b6b',
|
|
302
|
-
'#4ecdc4',
|
|
303
|
-
'#ffe66d',
|
|
304
|
-
'#95e1d3'
|
|
305
|
-
]
|
|
306
|
-
},
|
|
307
|
-
className: "fixed inset-0 pointer-events-none z-100",
|
|
308
|
-
style: {
|
|
309
|
-
width: '100%',
|
|
310
|
-
height: '100%'
|
|
311
|
-
}
|
|
312
|
-
}),
|
|
313
|
-
/*#__PURE__*/ _jsxs(Modal, {
|
|
314
|
-
open: open,
|
|
315
|
-
onOpenChange: setOpen,
|
|
316
|
-
children: [
|
|
317
|
-
/*#__PURE__*/ _jsx(ModalTrigger, {
|
|
318
|
-
asChild: true,
|
|
319
|
-
children: /*#__PURE__*/ _jsx(Button, {
|
|
320
|
-
children: "Run GitHub Actions on Shipfox"
|
|
321
|
-
})
|
|
322
|
-
}),
|
|
323
|
-
/*#__PURE__*/ _jsxs(ModalContent, {
|
|
324
|
-
"aria-describedby": undefined,
|
|
325
|
-
overlayClassName: "bg-background-modal-overlay",
|
|
326
|
-
children: [
|
|
327
|
-
/*#__PURE__*/ _jsx(ModalTitle, {
|
|
328
|
-
className: "sr-only",
|
|
329
|
-
children: "Run GitHub Actions on Shipfox"
|
|
330
|
-
}),
|
|
331
|
-
/*#__PURE__*/ _jsx(ModalHeader, {
|
|
332
|
-
title: "Run GitHub Actions on Shipfox"
|
|
333
|
-
}),
|
|
334
|
-
/*#__PURE__*/ _jsxs(ModalBody, {
|
|
335
|
-
className: "gap-32",
|
|
336
|
-
children: [
|
|
337
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
338
|
-
className: "flex flex-col gap-20 w-full",
|
|
339
|
-
children: [
|
|
340
|
-
/*#__PURE__*/ _jsx(Text, {
|
|
341
|
-
size: "sm",
|
|
342
|
-
className: "text-foreground-neutral-subtle w-full",
|
|
343
|
-
children: "This will run your jobs on Shipfox's optimized infrastructure. Giving you faster builds, and dedicated resources."
|
|
344
|
-
}),
|
|
345
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
346
|
-
className: "relative",
|
|
347
|
-
children: [
|
|
348
|
-
/*#__PURE__*/ _jsx("img", {
|
|
349
|
-
src: illustration2,
|
|
350
|
-
alt: "illustration-2",
|
|
351
|
-
className: "hidden sm:block absolute overflow-clip right-2 top-1/2 -translate-y-1/2 translate-x-8 w-fit object-contain z-50"
|
|
352
|
-
}),
|
|
353
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
354
|
-
className: cn('relative overflow-hidden bg-transparent p-1 rounded-8'),
|
|
355
|
-
children: [
|
|
356
|
-
/*#__PURE__*/ _jsx("div", {
|
|
357
|
-
className: "absolute inset-0",
|
|
358
|
-
style: {
|
|
359
|
-
borderRadius: 'calc(0.5rem * 0.96)'
|
|
360
|
-
},
|
|
361
|
-
children: /*#__PURE__*/ _jsx(MovingBorder, {
|
|
362
|
-
duration: 6000,
|
|
363
|
-
rx: "30%",
|
|
364
|
-
ry: "30%",
|
|
365
|
-
children: /*#__PURE__*/ _jsx("div", {
|
|
366
|
-
className: "h-100 w-200 bg-[radial-gradient(#ff9e7a_40%,transparent_60%)]"
|
|
367
|
-
})
|
|
368
|
-
})
|
|
369
|
-
}),
|
|
370
|
-
/*#__PURE__*/ _jsx("div", {
|
|
371
|
-
className: "relative",
|
|
372
|
-
style: {
|
|
373
|
-
borderRadius: 'calc(0.5rem * 0.96)'
|
|
374
|
-
},
|
|
375
|
-
children: /*#__PURE__*/ _jsx(DynamicItem, {
|
|
376
|
-
variant: "default",
|
|
377
|
-
title: /*#__PURE__*/ _jsxs("div", {
|
|
378
|
-
className: "flex items-center gap-6",
|
|
379
|
-
children: [
|
|
380
|
-
/*#__PURE__*/ _jsx("span", {
|
|
381
|
-
className: "flex shrink-0 items-center justify-center text-tag-success-icon w-16 h-16",
|
|
382
|
-
children: /*#__PURE__*/ _jsx(Icon, {
|
|
383
|
-
name: "money",
|
|
384
|
-
size: "sm",
|
|
385
|
-
color: "var(--foreground-neutral-subtle, #a1a1aa)"
|
|
386
|
-
})
|
|
387
|
-
}),
|
|
388
|
-
/*#__PURE__*/ _jsx(ItemTitle, {
|
|
389
|
-
children: "6000 free credits/month to run your jobs"
|
|
390
|
-
})
|
|
391
|
-
]
|
|
392
|
-
}),
|
|
393
|
-
description: "~500 builds/month. No payment required.",
|
|
394
|
-
rightElement: /*#__PURE__*/ _jsx("img", {
|
|
395
|
-
src: illustrationBg,
|
|
396
|
-
alt: "illustration-bg",
|
|
397
|
-
className: "hidden sm:block absolute overflow-clip right-4 w-fit object-contain scale-105"
|
|
398
|
-
})
|
|
399
|
-
})
|
|
400
|
-
})
|
|
401
|
-
]
|
|
402
|
-
})
|
|
403
|
-
]
|
|
404
|
-
})
|
|
405
|
-
]
|
|
406
|
-
}),
|
|
407
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
408
|
-
className: "flex flex-col gap-20 w-full",
|
|
409
|
-
children: [
|
|
410
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
411
|
-
className: "flex flex-col gap-6",
|
|
412
|
-
children: [
|
|
413
|
-
/*#__PURE__*/ _jsxs("div", {
|
|
414
|
-
className: "flex items-center justify-center w-full",
|
|
415
|
-
children: [
|
|
416
|
-
/*#__PURE__*/ _jsx(Text, {
|
|
417
|
-
className: "flex-1 font-semibold text-foreground-neutral-base overflow-ellipsis overflow-hidden whitespace-nowrap",
|
|
418
|
-
children: "Update your GitHub Actions workflow"
|
|
419
|
-
}),
|
|
420
|
-
/*#__PURE__*/ _jsx(ButtonLink, {
|
|
421
|
-
variant: "base",
|
|
422
|
-
size: "sm",
|
|
423
|
-
href: "#",
|
|
424
|
-
iconRight: "bookOpen",
|
|
425
|
-
children: "See docs"
|
|
426
|
-
})
|
|
427
|
-
]
|
|
428
|
-
}),
|
|
429
|
-
/*#__PURE__*/ _jsx(Text, {
|
|
430
|
-
size: "sm",
|
|
431
|
-
className: "text-foreground-neutral-subtle w-full",
|
|
432
|
-
children: "Replace the runs-on line in your workflow file to use Shipfox runners."
|
|
433
|
-
})
|
|
434
|
-
]
|
|
435
|
-
}),
|
|
436
|
-
/*#__PURE__*/ _jsxs(CodeBlock, {
|
|
437
|
-
data: [
|
|
438
|
-
{
|
|
439
|
-
language: 'yaml',
|
|
440
|
-
filename: '.github/workflows/<workflow-name>.yml',
|
|
441
|
-
code: diffCode
|
|
442
|
-
}
|
|
443
|
-
],
|
|
444
|
-
defaultValue: "yaml",
|
|
445
|
-
children: [
|
|
446
|
-
/*#__PURE__*/ _jsxs(CodeBlockHeader, {
|
|
447
|
-
children: [
|
|
448
|
-
/*#__PURE__*/ _jsx(CodeBlockFiles, {
|
|
449
|
-
children: (item)=>/*#__PURE__*/ _jsx(CodeBlockFilename, {
|
|
450
|
-
value: item.language,
|
|
451
|
-
children: item.filename
|
|
452
|
-
})
|
|
453
|
-
}),
|
|
454
|
-
/*#__PURE__*/ _jsx(CodeBlockCopyButton, {})
|
|
455
|
-
]
|
|
456
|
-
}),
|
|
457
|
-
/*#__PURE__*/ _jsx(CodeBlockBody, {
|
|
458
|
-
children: (item)=>/*#__PURE__*/ _jsx(CodeBlockItem, {
|
|
459
|
-
value: item.language,
|
|
460
|
-
children: /*#__PURE__*/ _jsx(CodeBlockContent, {
|
|
461
|
-
language: item.language,
|
|
462
|
-
children: item.code
|
|
463
|
-
})
|
|
464
|
-
})
|
|
465
|
-
}),
|
|
466
|
-
/*#__PURE__*/ _jsx(CodeBlockFooter, {
|
|
467
|
-
state: footerState,
|
|
468
|
-
message: footerState === 'running' ? 'Waiting for Shipfox runner event…' : 'Runners connected!',
|
|
469
|
-
description: footerState === 'running' ? 'This usually takes 30-60 seconds after you commit the workflow file.' : ''
|
|
470
|
-
})
|
|
471
|
-
]
|
|
472
|
-
})
|
|
473
|
-
]
|
|
474
|
-
})
|
|
475
|
-
]
|
|
476
|
-
}),
|
|
477
|
-
/*#__PURE__*/ _jsx(ModalFooter, {
|
|
478
|
-
children: /*#__PURE__*/ _jsx(Button, {
|
|
479
|
-
variant: "primary",
|
|
480
|
-
onClick: ()=>setOpen(false),
|
|
481
|
-
children: "Got it"
|
|
482
|
-
})
|
|
483
|
-
})
|
|
484
|
-
]
|
|
485
|
-
})
|
|
486
|
-
]
|
|
487
|
-
})
|
|
488
|
-
]
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
};
|
|
492
|
-
export const OpenedModal = {
|
|
493
|
-
play: async (ctx)=>{
|
|
494
|
-
const { canvasElement, step } = ctx;
|
|
495
|
-
const canvas = within(canvasElement);
|
|
496
|
-
const user = userEvent.setup();
|
|
497
|
-
await step('Open the modal', async ()=>{
|
|
498
|
-
const triggerButton = canvas.getByRole('button', {
|
|
499
|
-
name: OPEN_MODAL_REGEX
|
|
500
|
-
});
|
|
501
|
-
await user.click(triggerButton);
|
|
502
|
-
});
|
|
503
|
-
await step('Wait for dialog to appear and render', async ()=>{
|
|
504
|
-
await screen.findByRole('dialog');
|
|
505
|
-
await new Promise((resolve)=>setTimeout(resolve, 100));
|
|
506
|
-
});
|
|
507
|
-
await argosScreenshot(ctx, 'Opened Modal State');
|
|
508
|
-
},
|
|
509
|
-
render: ()=>{
|
|
510
|
-
const [open, setOpen] = useState(false);
|
|
511
|
-
return /*#__PURE__*/ _jsx("div", {
|
|
512
|
-
className: "flex h-[calc(100vh/2)] w-[calc(100vw/2)] items-center justify-center rounded-16 bg-background-subtle-base shadow-tooltip",
|
|
513
|
-
children: /*#__PURE__*/ _jsxs(Modal, {
|
|
514
|
-
open: open,
|
|
515
|
-
onOpenChange: setOpen,
|
|
516
|
-
children: [
|
|
517
|
-
/*#__PURE__*/ _jsx(ModalTrigger, {
|
|
518
|
-
asChild: true,
|
|
519
|
-
children: /*#__PURE__*/ _jsx(Button, {
|
|
520
|
-
children: "Open Modal"
|
|
521
|
-
})
|
|
522
|
-
}),
|
|
523
|
-
/*#__PURE__*/ _jsxs(ModalContent, {
|
|
524
|
-
"aria-describedby": undefined,
|
|
525
|
-
children: [
|
|
526
|
-
/*#__PURE__*/ _jsx(ModalTitle, {
|
|
527
|
-
className: "sr-only",
|
|
528
|
-
children: "Modal Title"
|
|
529
|
-
}),
|
|
530
|
-
/*#__PURE__*/ _jsx(ModalHeader, {
|
|
531
|
-
children: /*#__PURE__*/ _jsx(Text, {
|
|
532
|
-
size: "lg",
|
|
533
|
-
className: "flex-1 overflow-ellipsis overflow-hidden whitespace-nowrap",
|
|
534
|
-
children: "Modal Title"
|
|
535
|
-
})
|
|
536
|
-
}),
|
|
537
|
-
/*#__PURE__*/ _jsx(ModalBody, {
|
|
538
|
-
children: /*#__PURE__*/ _jsx(Text, {
|
|
539
|
-
size: "sm",
|
|
540
|
-
className: "text-foreground-neutral-subtle w-full",
|
|
541
|
-
children: "This modal automatically adapts between dialog (desktop) and drawer (mobile) based on screen size. Try resizing your browser window!"
|
|
542
|
-
})
|
|
543
|
-
}),
|
|
544
|
-
/*#__PURE__*/ _jsxs(ModalFooter, {
|
|
545
|
-
children: [
|
|
546
|
-
/*#__PURE__*/ _jsx(Button, {
|
|
547
|
-
variant: "transparent",
|
|
548
|
-
onClick: ()=>setOpen(false),
|
|
549
|
-
children: "Cancel"
|
|
550
|
-
}),
|
|
551
|
-
/*#__PURE__*/ _jsx(Button, {
|
|
552
|
-
variant: "primary",
|
|
553
|
-
onClick: ()=>setOpen(false),
|
|
554
|
-
children: "Confirm"
|
|
555
|
-
})
|
|
556
|
-
]
|
|
557
|
-
})
|
|
558
|
-
]
|
|
559
|
-
})
|
|
560
|
-
]
|
|
561
|
-
})
|
|
562
|
-
});
|
|
563
|
-
}
|
|
564
|
-
};
|
|
565
|
-
|
|
566
|
-
//# sourceMappingURL=modal.stories.js.map
|