-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathform.tsx
More file actions
56 lines (53 loc) · 1.7 KB
/
form.tsx
File metadata and controls
56 lines (53 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { GitRepository } from "mobx-github";
import { i18n, topicStore } from "@/models/example";
import { BadgeBar } from "@/registry/new-york/blocks/badge-bar/badge-bar";
import { Field } from "@/registry/new-york/blocks/rest-form/rest-form";
import { Column } from "@/registry/new-york/blocks/rest-table/rest-table";
import { SearchableInput } from "@/registry/new-york/blocks/searchable-input/searchable-input";
export const columns: Column<GitRepository>[] = [
{
key: "full_name",
renderHead: "Repository Name",
renderBody: ({ html_url, full_name }) => (
<a target="_blank" href={html_url} rel="noreferrer">
{full_name}
</a>
),
required: true,
minLength: 3,
invalidMessage: "Input 3 characters at least",
},
{ key: "homepage", type: "url", renderHead: "Home Page" },
{ key: "language", renderHead: "Programming Language" },
{
key: "topics",
renderHead: "Topic",
renderBody: ({ topics }) => (
<BadgeBar
list={(topics || []).map((text) => ({
text,
link: `https://github.com/topics/${text}`,
}))}
/>
),
renderInput: ({ topics }) => (
<SearchableInput
translator={i18n}
store={topicStore}
labelKey="name"
valueKey="name"
placeholder="search GitHub topics"
multiple
defaultValue={topics?.map((value) => ({ value, label: value }))}
/>
),
},
{ key: "stargazers_count", type: "number", renderHead: "Star Count" },
{ key: "description", renderHead: "Description", rows: 3 },
];
export const fields: Field<GitRepository>[] = columns.map(
({ renderHead, renderBody, ...meta }) => ({
...meta,
renderLabel: renderHead,
})
);