Skip to content

Commit d222c9f

Browse files
committed
Use shared data for Badge and add util for handling related URLs
1 parent a12aacb commit d222c9f

File tree

7 files changed

+195
-80
lines changed

7 files changed

+195
-80
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"@babel/node": "^7.8.7",
3535
"@changesets/changelog-github": "^0.4.7",
3636
"@changesets/cli": "^2.25.2",
37+
"@rollup/plugin-replace": "^6.0.1",
3738
"@shopify/babel-preset": "^24.1.0",
3839
"@shopify/browserslist-config": "^3.0.0",
3940
"@shopify/eslint-plugin": "^42.0.0",
@@ -44,10 +45,9 @@
4445
"@shopify/loom-plugin-eslint": "^2.0.0",
4546
"@shopify/loom-plugin-prettier": "^2.0.0",
4647
"@shopify/typescript-configs": "^5.1.0",
47-
"@rollup/plugin-replace": "^6.0.1",
4848
"eslint": "^8.28.0",
4949
"nodemon": "^2.0.4",
50-
"prettier": "^2.8.0",
50+
"prettier": "^2.8.8",
5151
"typescript": "^4.9.0"
5252
},
5353
"packageManager": "[email protected]+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
export {default as Abbreviation} from './Abbreviation';
2+
export {default as Badge} from './Badge';
3+
export {default as Banner} from './Banner';
4+
export {default as Box} from './Box';
5+
export {default as Button} from './Button';
6+
export {default as Checkbox} from './Checkbox';
7+
export {default as ChoiceList} from './ChoiceList';
8+
export {default as Clickable} from './Clickable';
9+
export {default as ClipboardItem} from './ClipboardItem';
10+
export {default as DatePicker} from './DatePicker';
11+
export {default as Divider} from './Divider';
12+
export {default as DropZone} from './DropZone';
13+
export {default as EmailField} from './EmailField';
14+
export {default as Form} from './Form';
15+
export {default as Grid} from './Grid';
16+
export {default as Heading} from './Heading';
17+
export {default as Icon} from './Icon';
18+
export {default as Image} from './Image';
19+
export {default as Link} from './Link';
20+
export {default as ListItem} from './ListItem';
21+
export {default as MoneyField} from './MoneyField';
22+
export {default as NumberField} from './NumberField';
23+
export {default as OrderedList} from './OrderedList';
24+
export {default as Paragraph} from './Paragraph';
25+
export {default as PasswordField} from './PasswordField';
26+
export {default as PaymentIcon} from './PaymentIcon';
27+
export {default as Progress} from './Progress';
28+
export {default as QRCode} from './QRCode';
29+
export {default as SearchField} from './SearchField';
30+
export {default as Section} from './Section';
31+
export {default as Select} from './Select';
32+
export {default as Spinner} from './Spinner';
33+
export {default as Stack} from './Stack';
34+
export {default as Switch} from './Switch';
35+
export {default as Table} from './Table';
36+
export {default as Text} from './Text';
37+
export {default as TextArea} from './TextArea';
38+
export {default as Time} from './Time';
39+
export {default as UnorderedList} from './UnorderedList';
40+
export {default as URLField} from './URLField';
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import {AdminReferenceEntityTemplateSchema} from '../../docs-types';
2+
import {setRelatedUrl} from '../../uitls';
3+
4+
import globalShared from '../../../../docs/shared/components/Badge';
25
import shared from './shared';
36

47
const data: AdminReferenceEntityTemplateSchema = {
8+
...setRelatedUrl(globalShared, 'app-home'),
59
...shared,
6-
category: 'Polaris web components',
710
};
811

912
export default data;
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import {AdminReferenceEntityTemplateSchema} from '../../docs-types';
2+
import {setRelatedUrl} from '../../uitls';
3+
4+
import globalShared from '../../../../docs/shared/components/Badge';
25
import shared from './shared';
36

47
const data: AdminReferenceEntityTemplateSchema = {
8+
...setRelatedUrl(globalShared, 'admin-extensions'),
59
...shared,
6-
category: 'Polaris web components',
710
};
811

912
export default data;

packages/ui-extensions/src/surfaces/admin/components/Badge/shared.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
const shared = {
2-
name: 'Badge',
3-
description:
4-
"Use `s-badge` to inform merchants of the status of an object or of an action that's been taken.",
52
thumbnail: '/assets/templated-apis-screenshots/admin/components/badge.png',
63
isVisualComponent: true,
74
definitions: [
@@ -11,19 +8,6 @@ const shared = {
118
type: 'Badge',
129
},
1310
],
14-
subCategory: 'Titles and text',
15-
related: [
16-
{
17-
type: 'component',
18-
name: 'Banner',
19-
url: '/docs/api/admin-extensions/polaris-web-components/feedback/banner',
20-
},
21-
{
22-
type: 'component',
23-
name: 'Text',
24-
url: '/docs/api/admin-extensions/polaris-web-components/titles-and-text/text',
25-
},
26-
],
2711
defaultExample: {
2812
image: 'badge-default.png',
2913
codeblock: {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import type {ReferenceEntityTemplateSchema} from '@shopify/generate-docs';
2+
3+
import * as components from '../../docs/shared/components';
4+
5+
export function setRelatedUrl<T extends Partial<ReferenceEntityTemplateSchema>>(
6+
shared: T,
7+
type: 'admin-extensions' | 'app-home' = 'admin-extensions',
8+
) {
9+
shared.related = shared.related?.map((item) => {
10+
const component = (components as Record<string, any>)[item.name];
11+
12+
if (!component) {
13+
return item;
14+
}
15+
16+
const path = [component.category, component.subCategory]
17+
.map(kebabCase)
18+
.filter(Boolean)
19+
.join('/');
20+
21+
return {
22+
...item,
23+
url: `/docs/api/${type}/${path}/${item.url}`,
24+
};
25+
});
26+
27+
return shared;
28+
}
29+
30+
function kebabCase(str = '') {
31+
return str
32+
.replace(/([a-z])([A-Z])/g, '$1-$2')
33+
.replace(/\s+/g, '-')
34+
.toLowerCase();
35+
}

0 commit comments

Comments
 (0)