Repository navigation
Expand file tree
/
Copy pathusers.tsx
More file actions
157 lines (142 loc) Β· 4.84 KB
/
Copy pathusers.tsx
File metadata and controls
157 lines (142 loc) Β· 4.84 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/* eslint-disable global-require */
import {translate} from '@docusaurus/Translate';
import {sortBy} from '@site/src/utils/jsUtils';
/*
* ADD YOUR SITE TO THE DOCUSAURUS SHOWCASE
*
* Please don't submit a PR yourself: use the Github Discussion instead:
* https://github.com/facebook/docusaurus/discussions/7826
*
* Instructions for maintainers:
* - Add the site in the json array below
* - `title` is the project's name (no need for the "Docs" suffix)
* - A short (β€120 characters) description of the project
* - Use relevant tags to categorize the site (read the tag descriptions on the
* https://docusaurus.io/showcase page and some further clarifications below)
* - Add a local image preview (decent screenshot of the Docusaurus site)
* - The image MUST be added to the GitHub repository, and use `require("img")`
* - The image has to have minimum width 640 and an aspect of no wider than 2:1
* - If a website is open-source, add a source link. The link should open
* to a directory containing the `docusaurus.config.js` file
* - Resize images: node admin/scripts/resizeImage.js
* - Run optimizt manually (see resize image script comment)
* - Open a PR and check for reported CI errors
*
* Example PR: https://github.com/facebook/docusaurus/pull/7620
*/
// LIST OF AVAILABLE TAGS
// Available tags to assign to a showcase site
// Please choose all tags that you think might apply.
// We'll remove inappropriate tags, but it's less likely that we add tags.
export type TagType =
// For open-source sites, a link to the source code is required.
// The source should be the *website's* source, not the project's source!
| 'opensource'
// Platform
| 'web'
| 'mobile'
| 'console'
| 'bot';
// Add sites to this list
// prettier-ignore
const Users: User[] = [
{
title: 'SkyBridge',
description: 'The bridge/proxy that allows you to use Mastodon apps with Bluesky.',
preview: require('./showcase/SkyBridge.png'),
website: 'https://github.com/videah/SkyBridge',
source: 'https://github.com/videah/SkyBridge',
tags: ['opensource', 'console'],
},
{
title: 'SkyFeed',
description: 'The real-time client for Bluesky Social. Hashtags are supported and advanced features related to custom feeds are implemented.',
preview: require('./showcase/SkyFeed.png'),
website: 'https://skyfeed.app',
source: 'https://github.com/skyfeed-dev',
tags: ['opensource', 'web'],
},
{
title: 'APOD BOT',
description: 'Unofficial APOD BOT that uses the NASA API to post APOD images to Bluesky at scheduled times.',
preview: require('./showcase/APOD_BOT.png'),
website: 'https://bsky.app/profile/apod.shinyakato.dev',
source: 'https://github.com/myConsciousness/bluesky-apod-bot',
tags: ['opensource', 'bot'],
},
/*
Pro Tip: add your site in alphabetical order.
Appending your site here (at the end) is more likely to produce Git conflicts.
*/
];
export type User = {
title: string;
description: string;
preview: string | null; // null = use our serverless screenshot service
website: string;
source: string | null;
tags: TagType[];
};
export type Tag = {
label: string;
description: string;
color: string;
};
export const Tags: {[type in TagType]: Tag} = {
opensource: {
label: translate({message: 'Open-Source'}),
description: translate({
message: 'Open-Source AT Protocol and Bluesky related services using atproto.dart!',
id: 'showcase.tag.opensource.description',
}),
color: '#39ca30',
},
web: {
label: translate({message: 'Web-App'}),
description: translate({
message: 'Web App using atproto.dart!',
id: 'showcase.tag.web.description',
}),
color: '#dfd545',
},
mobile: {
label: translate({message: 'Mobile-App'}),
description: translate({
message: 'Mobile App using atproto.dart!',
id: 'showcase.tag.mobile.description',
}),
color: '#127f82',
},
console: {
label: translate({message: 'Console-App'}),
description: translate({
message: 'Console App using atproto.dart!',
id: 'showcase.tag.console.description',
}),
color: '#ffcfc3',
},
bot: {
label: translate({message: 'BOT'}),
description: translate({
message: 'BOT using atproto.dart!',
id: 'showcase.tag.bot.description',
}),
color: '#a44fb7',
},
};
export const TagList = Object.keys(Tags) as TagType[];
function sortUsers() {
let result = Users;
// Sort by site name
result = sortBy(result, (user) => user.title.toLowerCase());
// Sort by favorite tag, favorites first
result = sortBy(result, (user) => !user.tags.includes('favorite'));
return result;
}
export const sortedUsers = sortUsers();