diff --git a/packages/canon/docs/Home.mdx b/packages/canon/docs/Home.mdx index e0530ce9063e2..3a00de5d070da 100644 --- a/packages/canon/docs/Home.mdx +++ b/packages/canon/docs/Home.mdx @@ -1,5 +1,13 @@ import { Unstyled } from '@storybook/blocks'; -import { Columns, Text, ComponentStatus, Banner, Title } from './components'; +import { + Columns, + Text, + ComponentStatus, + Banner, + Title, + Roadmap, +} from './components'; +import { list } from './components/Roadmap/list'; @@ -19,7 +27,7 @@ import { Columns, Text, ComponentStatus, Banner, Title } from './components'; - Project Status + Component Status We are still in the process of documenting the API and building the @@ -29,51 +37,45 @@ import { Columns, Text, ComponentStatus, Banner, Title } from './components'; - - - - - - - - - - - - + + + + + + + + + + Roadmap + + + + diff --git a/packages/canon/docs/components/Columns/columns.css.ts b/packages/canon/docs/components/Columns/columns.css.ts index 6efe97c34960b..0b5ec18aef879 100644 --- a/packages/canon/docs/components/Columns/columns.css.ts +++ b/packages/canon/docs/components/Columns/columns.css.ts @@ -18,7 +18,7 @@ import { style } from '@vanilla-extract/css'; export const styles = style({ display: 'grid', - gridTemplateColumns: 'repeat(2, 1fr)', + gridTemplateColumns: 'repeat(3, 1fr)', rowGap: '20px', columnGap: '80px', }); diff --git a/packages/canon/docs/components/ComponentStatus/component-status.css.ts b/packages/canon/docs/components/ComponentStatus/component-status.css.ts index 80d222132dd90..5cce5adb5da42 100644 --- a/packages/canon/docs/components/ComponentStatus/component-status.css.ts +++ b/packages/canon/docs/components/ComponentStatus/component-status.css.ts @@ -57,12 +57,17 @@ export const pill = recipe({ borderColor: '#FFD000', color: '#D79927', }, - review: { + alpha: { backgroundColor: '#D7F9D7', borderColor: '#4ED14A', color: '#3A9837', }, - done: { + beta: { + backgroundColor: '#D7F9D7', + borderColor: '#4ED14A', + color: '#3A9837', + }, + stable: { backgroundColor: '#D7F9D7', borderColor: '#4ED14A', color: '#3A9837', diff --git a/packages/canon/docs/components/ComponentStatus/index.tsx b/packages/canon/docs/components/ComponentStatus/index.tsx index fde52e3b37d33..64d552ea97914 100644 --- a/packages/canon/docs/components/ComponentStatus/index.tsx +++ b/packages/canon/docs/components/ComponentStatus/index.tsx @@ -24,7 +24,7 @@ export const ComponentStatus = ({ link, }: { name: string; - status: 'notStarted' | 'inProgress' | 'review' | 'done'; + status: 'notStarted' | 'inProgress' | 'alpha' | 'beta' | 'stable'; style?: React.CSSProperties; link?: string; }) => { @@ -40,8 +40,9 @@ export const ComponentStatus = ({ {status === 'notStarted' && 'Not Started'} {status === 'inProgress' && 'In Progress'} - {status === 'review' && 'Ready for Review'} - {status === 'done' && 'Done'} + {status === 'alpha' && 'Alpha'} + {status === 'beta' && 'Beta'} + {status === 'stable' && 'Stable'} ); diff --git a/packages/canon/docs/components/Roadmap/index.tsx b/packages/canon/docs/components/Roadmap/index.tsx new file mode 100644 index 0000000000000..2177ea558f8ed --- /dev/null +++ b/packages/canon/docs/components/Roadmap/index.tsx @@ -0,0 +1,53 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { RoadmapItem } from './list'; + +export const Roadmap = ({ list }: { list: RoadmapItem[] }) => { + const orderList = ['inProgress', 'notStarted', 'completed']; + return ( +
+ {list + .sort( + (a, b) => orderList.indexOf(a.status) - orderList.indexOf(b.status), + ) + .map(Item)} +
+ ); +}; + +const Item = ({ + title, + status = 'notStarted', +}: { + title: string; + status: 'notStarted' | 'inProgress' | 'inReview' | 'completed'; +}) => { + return ( +
+
+
+
{title}
+
+ + {status === 'notStarted' && 'Not Started'} + {status === 'inProgress' && 'In Progress'} + {status === 'inReview' && 'Ready for Review'} + {status === 'completed' && 'Completed'} + +
+ ); +}; diff --git a/packages/canon/docs/components/Roadmap/list.ts b/packages/canon/docs/components/Roadmap/list.ts new file mode 100644 index 0000000000000..f854a65b8d8d9 --- /dev/null +++ b/packages/canon/docs/components/Roadmap/list.ts @@ -0,0 +1,58 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export type RoadmapItem = { + title: string; + status: 'notStarted' | 'inProgress' | 'inReview' | 'completed'; +}; + +export const list: RoadmapItem[] = [ + { + title: 'Add collapsing across breakpoints for the Inline component', + status: 'notStarted', + }, + { + title: 'Add reversing the order for the Inline component', + status: 'notStarted', + }, + { + title: 'Set up Storybook', + status: 'completed', + }, + { + title: 'Set up iconography', + status: 'completed', + }, + { + title: 'Set up global tokens', + status: 'inProgress', + }, + { + title: 'Set up theming system', + status: 'inProgress', + }, + { + title: 'Create first pass at box component', + status: 'completed', + }, + { + title: 'Create first pass at stack component', + status: 'completed', + }, + { + title: 'Create first pass at inline component', + status: 'completed', + }, +]; diff --git a/packages/canon/docs/components/Roadmap/styles.css b/packages/canon/docs/components/Roadmap/styles.css new file mode 100644 index 0000000000000..e47aecf7faa6a --- /dev/null +++ b/packages/canon/docs/components/Roadmap/styles.css @@ -0,0 +1,102 @@ +.roadmap { + display: flex; + flex-direction: column; +} + +.roadmap .roadmap-item { + font-family: 'Geist', sans-serif; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #e0e0e0; + padding: 8px 0px; +} + +.roadmap .roadmap-item .left { + display: flex; + align-items: center; + padding-left: 12px; + gap: 12px; +} + +.roadmap .roadmap-item .dot { + width: 8px; + height: 8px; + border-radius: 50%; + background-color: #e0e0e0; +} + +.roadmap .roadmap-item.notStarted { + color: #000; +} + +.roadmap .roadmap-item.inProgress { + color: #000; +} + +.roadmap .roadmap-item.inReview { + color: #000; +} + +.roadmap .roadmap-item.completed .title { + color: #a2a2a2; + text-decoration: line-through; +} + +.roadmap .roadmap-item.notStarted .dot { + background-color: #d1d1d1; +} + +.roadmap .roadmap-item.inProgress .dot { + background-color: #ffd000; +} + +.roadmap .roadmap-item.inReview .dot { + background-color: #4ed14a; +} + +.roadmap .roadmap-item.completed .dot { + background-color: #4ed14a; +} + +.roadmap .roadmap-item .title { + font-weight: 300; + font-size: 16px; +} + +.roadmap .roadmap-item .pill { + display: inline-flex; + align-items: center; + height: 24px; + padding: 0px 8px; + border-radius: 40px; + font-size: 12px; + font-weight: 600; + margin-left: 8px; + border-style: solid; + border-width: 1px; +} + +.roadmap .roadmap-item.notStarted .pill { + background-color: #f2f2f2; + border-color: #cdcdcd; + color: #888888; +} + +.roadmap .roadmap-item.inProgress .pill { + background-color: #fff2b9; + border-color: #ffd000; + color: #d79927; +} + +.roadmap .roadmap-item.inReview .pill { + background-color: #d7f9d7; + border-color: #4ed14a; + color: #3a9837; +} + +.roadmap .roadmap-item.completed .pill { + background-color: #d7f9d7; + border-color: #4ed14a; + color: #3a9837; +} diff --git a/packages/canon/docs/components/index.ts b/packages/canon/docs/components/index.ts index 88a8cb0391af5..7ad07bec6a70f 100644 --- a/packages/canon/docs/components/index.ts +++ b/packages/canon/docs/components/index.ts @@ -23,3 +23,4 @@ export * from './ComponentStatus'; export * from './LayoutComponents'; export * from './Banner'; export * from './IconLibrary'; +export * from './Roadmap'; diff --git a/packages/canon/docs/components/styles.css b/packages/canon/docs/components/styles.css index 63df6016094a3..698085ad19338 100644 --- a/packages/canon/docs/components/styles.css +++ b/packages/canon/docs/components/styles.css @@ -1 +1,2 @@ @import './IconLibrary/styles.css'; +@import './Roadmap/styles.css';