nitro_sg 3.0.1 → 3.0.2
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.
- checksums.yaml +4 -4
- data/components/Avatar/Avatar.jsx +96 -0
- data/components/Avatar/styles.scss +54 -0
- data/components/Avatar/styles.scss.flow +14 -0
- data/components/Badge/Badge.jsx +40 -0
- data/components/Badge/badges.scss +167 -0
- data/components/Badge/labels.scss +121 -0
- data/components/Badge/styles.scss +4 -0
- data/components/Badge/styles.scss.flow +38 -0
- data/components/Banner/Banner.jsx +54 -0
- data/components/Banner/styles.scss +75 -0
- data/components/Banner/styles.scss.flow +19 -0
- data/components/Button/Button.jsx +75 -0
- data/components/Card/Card.jsx +44 -0
- data/components/CircleButton/CircleButton.jsx +51 -0
- data/components/CircleButton/CircleButtonStory.jsx +25 -0
- data/components/CircleButton/styles.scss +33 -0
- data/components/CircleButton/styles.scss.flow +6 -0
- data/components/CollapsibleCard/CollapsibleCard.jsx +108 -0
- data/components/Color/Color.jsx +55 -0
- data/components/Color/styles.scss +6 -0
- data/components/Color/styles.scss.flow +5 -0
- data/components/ColorPickerInput/ColorPickerInput.jsx +99 -0
- data/components/ColorPickerInput/colorPickerInput.scss +10 -0
- data/components/ColorPickerInput/colorPickerInput.scss.flow +6 -0
- data/components/DOBInput/index.jsx +35 -0
- data/components/DOBInput/story.jsx +20 -0
- data/components/DOBInput/styles.scss +11 -0
- data/components/DOBInput/styles.scss.flow +7 -0
- data/components/DatePicker/DatePicker.jsx +156 -0
- data/components/DatePicker/styles.scss +6 -0
- data/components/DatePicker/styles.scss.flow +5 -0
- data/components/DateTimePicker/DateTimePicker.jsx +109 -0
- data/components/DateTimePicker/story-styles.scss +3 -0
- data/components/DateTimePicker/story-styles.scss.flow +5 -0
- data/components/DateTimePicker/styles.scss +1 -0
- data/components/DateTimePicker/styles.scss.flow +5 -0
- data/components/Errors/Errors.jsx +38 -0
- data/components/FileCard/FileCard.jsx +183 -0
- data/components/FileCard/styles.scss +81 -0
- data/components/FileCard/styles.scss.flow +12 -0
- data/components/Flip/Flip.jsx +50 -0
- data/components/Flip/styles.scss +41 -0
- data/components/Flip/styles.scss.flow +11 -0
- data/components/FlyoutPanel/FlyoutPanel.jsx +34 -0
- data/components/FlyoutPanel/flyout_panel.scss +33 -0
- data/components/FlyoutPanel/flyout_panel.scss.flow +11 -0
- data/components/Grade/Grade.jsx +55 -0
- data/components/Grade/grade.scss +39 -0
- data/components/Grade/grade.scss.flow +6 -0
- data/components/Highlight/Highlight.jsx +39 -0
- data/components/Highlight/styles.scss +24 -0
- data/components/Highlight/styles.scss.flow +17 -0
- data/components/Icon/Icon.jsx +54 -0
- data/components/IconToggle/IconToggle.jsx +56 -0
- data/components/Milestones/MilestoneItem.jsx +47 -0
- data/components/Milestones/Milestones.jsx +51 -0
- data/components/Milestones/milestones.scss +19 -0
- data/components/Milestones/milestones.scss.flow +7 -0
- data/components/Milestones/milestones_item.scss +157 -0
- data/components/Milestones/milestones_item.scss.flow +13 -0
- data/components/Milestones/milestones_variables.scss +11 -0
- data/components/MonogramAvatar/MonogramAvatar.jsx +91 -0
- data/components/MonogramAvatar/monogram_avatar.scss +54 -0
- data/components/MonogramAvatar/monogram_avatar.scss.flow +10 -0
- data/components/Panel/Panel.jsx +159 -0
- data/components/Panel/panel.scss +32 -0
- data/components/Panel/panel.scss.flow +12 -0
- data/components/PanelGroup/PanelGroup.jsx +121 -0
- data/components/PanelGroup/PanelGroup.scss +96 -0
- data/components/PanelGroup/PanelGroup.scss.flow +6 -0
- data/components/SearchCollectionSelect/SearchCollectionSelect.jsx +29 -0
- data/components/SearchCollectionSelect/searchCollectionSelect.scss +0 -0
- data/components/Spinner/Spinner.jsx +80 -0
- data/components/Spinner/spinner.scss +6 -0
- data/components/Spinner/spinner.scss.flow +5 -0
- data/components/StepMeter/StepMeter.jsx +75 -0
- data/components/StepMeter/step_meter.scss +120 -0
- data/components/StepMeter/step_meter.scss.flow +9 -0
- data/components/Survey/Survey.jsx +190 -0
- data/components/Survey/survey.scss +75 -0
- data/components/Survey/survey.scss.flow +11 -0
- data/components/Tab/Tab.jsx +70 -0
- data/components/Tab/tab.scss +25 -0
- data/components/Tab/tab.scss.flow +6 -0
- data/components/TabList/TabList.jsx +35 -0
- data/components/TabList/tabList.scss +5 -0
- data/components/TabList/tabList.scss.flow +5 -0
- data/components/Text/Text.jsx +53 -0
- data/components/Text/styles.scss +3 -0
- data/components/Text/styles.scss.flow +123 -0
- data/components/Text/text.scss +35 -0
- data/components/TextInput/TextInput.jsx +95 -0
- data/components/TextInput/form-control.scss +96 -0
- data/components/TextInput/styles.scss +3 -0
- data/components/TextInput/styles.scss.flow +7 -0
- data/components/TimePicker/TimePicker.jsx +218 -0
- data/components/TimePicker/styles.scss +1 -0
- data/components/TimePicker/styles.scss.flow +5 -0
- data/components/ToggleButton/ToggleButton.jsx +68 -0
- data/components/ToggleButton/toggleButton.scss +70 -0
- data/components/ToggleButton/toggleButton.scss.flow +14 -0
- data/components/UserStamp/UserStamp.jsx +40 -0
- data/components/UserStamp/styles.scss +6 -0
- data/components/UserStamp/styles.scss.flow +7 -0
- data/components/Wip/Wip.jsx +34 -0
- data/components/index.js +33 -0
- data/components/types.js +21 -0
- data/lib/nitro_sg/version.rb +1 -1
- metadata +108 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
@import "base-mixins/_all.scss";
|
|
2
|
+
@import "base-variables/_all.scss";
|
|
3
|
+
|
|
4
|
+
.flyout-panel {
|
|
5
|
+
height: 100vh;
|
|
6
|
+
position: absolute;
|
|
7
|
+
top: 0;
|
|
8
|
+
z-index: 99999;
|
|
9
|
+
transition: all ease 0.5s;
|
|
10
|
+
background-color: $white;
|
|
11
|
+
border-left: 1px solid $gray-2;
|
|
12
|
+
box-shadow: $shadow-deep;
|
|
13
|
+
|
|
14
|
+
.scroll-inner-box {
|
|
15
|
+
height: 100%;
|
|
16
|
+
overflow: auto;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.right {
|
|
20
|
+
right: -100%;
|
|
21
|
+
border-left: 1px solid $gray-2;
|
|
22
|
+
&.open {
|
|
23
|
+
right: 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
&.left {
|
|
27
|
+
left: -100%;
|
|
28
|
+
border-right: 1px solid $gray-2;
|
|
29
|
+
&.open {
|
|
30
|
+
left: 0;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
/* This file is automatically generated by css-modules-flow-types */
|
|
3
|
+
declare module.exports: {|
|
|
4
|
+
+'flyout-panel': string;
|
|
5
|
+
+'hidden-xxs': string;
|
|
6
|
+
+'left': string;
|
|
7
|
+
+'open': string;
|
|
8
|
+
+'right': string;
|
|
9
|
+
+'scroll-inner-box': string;
|
|
10
|
+
+'visible-xxs': string;
|
|
11
|
+
|};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import Icon from '../Icon/Icon'
|
|
5
|
+
import classnames from 'classnames'
|
|
6
|
+
|
|
7
|
+
import styles from './grade.scss'
|
|
8
|
+
|
|
9
|
+
type Props = {
|
|
10
|
+
className: string,
|
|
11
|
+
label: string,
|
|
12
|
+
grade: number,
|
|
13
|
+
starFullAt: number,
|
|
14
|
+
starEmptyAt: number,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const gradeToStarIconName = (grade: number, starFullAt: number, starEmptyAt: number): string => {
|
|
18
|
+
if (grade >= starFullAt) { return 'trophy-alt' }
|
|
19
|
+
if (grade <= starEmptyAt) { return 'star' }
|
|
20
|
+
|
|
21
|
+
return 'star-half'
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
class Grade extends React.Component<Props> {
|
|
25
|
+
static defaultProps = {
|
|
26
|
+
starFullAt: 10,
|
|
27
|
+
starEmptyAt: 0,
|
|
28
|
+
label: 'Grade'
|
|
29
|
+
}
|
|
30
|
+
props: Props
|
|
31
|
+
|
|
32
|
+
render() {
|
|
33
|
+
const { grade, label, starFullAt, starEmptyAt, className } = this.props
|
|
34
|
+
const classes = [
|
|
35
|
+
className,
|
|
36
|
+
styles.grade
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<div className={classnames(classes)}>
|
|
41
|
+
<Icon
|
|
42
|
+
className={styles.star}
|
|
43
|
+
label=""
|
|
44
|
+
name={gradeToStarIconName(grade, starFullAt, starEmptyAt)}
|
|
45
|
+
/>
|
|
46
|
+
<div>
|
|
47
|
+
<p>{grade}</p>
|
|
48
|
+
<label>{label}</label>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export default Grade
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
@import "base-variables/_colors.scss";
|
|
2
|
+
@import "base-variables/_spacing.sass";
|
|
3
|
+
@import "base-variables/_typography.sass";
|
|
4
|
+
|
|
5
|
+
.grade {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: row;
|
|
8
|
+
|
|
9
|
+
.star {
|
|
10
|
+
font-size: $font-largest;
|
|
11
|
+
line-height: 36px;
|
|
12
|
+
margin-right: $space-base;
|
|
13
|
+
color: $ink-lighter;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
div {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
|
|
20
|
+
p {
|
|
21
|
+
font-size: $font-large;
|
|
22
|
+
color: $ink-light;
|
|
23
|
+
font-weight: $bold;
|
|
24
|
+
margin: 0;
|
|
25
|
+
padding: 0;
|
|
26
|
+
line-height: $font-large + 2;
|
|
27
|
+
text-align: center;
|
|
28
|
+
}
|
|
29
|
+
label {
|
|
30
|
+
margin: 0;
|
|
31
|
+
padding: 0;
|
|
32
|
+
color: $ink-lightest;
|
|
33
|
+
text-transform: uppercase;
|
|
34
|
+
font-weight: $regular;
|
|
35
|
+
font-size: $font-smaller;
|
|
36
|
+
line-height: $font-smaller + 2;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
import styles from './styles.scss'
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import classnames from 'classnames'
|
|
5
|
+
|
|
6
|
+
type Props = {
|
|
7
|
+
|
|
8
|
+
side: "top" | "bottom" | "left" | "right"| null,
|
|
9
|
+
color: "power-navy" | "power-navy-darker" | "power-red" | "power-gold" | "power-blue" | "power-green" | "power-royal",
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export default class Highlight extends React.Component<Props> {
|
|
14
|
+
static defaultProps = {
|
|
15
|
+
side: "",
|
|
16
|
+
color: "",
|
|
17
|
+
}
|
|
18
|
+
props: Props
|
|
19
|
+
render() {
|
|
20
|
+
const {
|
|
21
|
+
side,
|
|
22
|
+
color,
|
|
23
|
+
} = this.props
|
|
24
|
+
|
|
25
|
+
const css = [
|
|
26
|
+
styles[`highlight-${side}`],
|
|
27
|
+
styles[`highlight-${color}`],
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<div>
|
|
32
|
+
<span className={classnames(css,'well')} >{`I'm a ${side} highlight ${color}`}</span>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
@import '../../sass-mixins/base-variables/colors';
|
|
2
|
+
@import '../../sass-mixins/base-mixins/all';
|
|
3
|
+
//highlight
|
|
4
|
+
$borderStyle: "solid";
|
|
5
|
+
$sides: "top" "right" "bottom" "left" ;
|
|
6
|
+
$borderWidth: 4px;
|
|
7
|
+
|
|
8
|
+
@mixin config-highlight-colors($prefix) {
|
|
9
|
+
@each $color in $power-colors {
|
|
10
|
+
.#{$prefix}-#{nth($color, 1)} {
|
|
11
|
+
border-color: #{nth($color,2)} !important;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@include config-highlight-colors("highlight");
|
|
17
|
+
@each $side in $sides {
|
|
18
|
+
|
|
19
|
+
.highlight-#{$side} {
|
|
20
|
+
border:0;
|
|
21
|
+
border-#{$side}-style: #{$borderStyle};
|
|
22
|
+
border-#{$side}-width: $borderWidth;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
/* This file is automatically generated by css-modules-flow-types */
|
|
3
|
+
declare module.exports: {|
|
|
4
|
+
+'hidden-xxs': string;
|
|
5
|
+
+'highlight-bottom': string;
|
|
6
|
+
+'highlight-left': string;
|
|
7
|
+
+'highlight-power-blue': string;
|
|
8
|
+
+'highlight-power-gold': string;
|
|
9
|
+
+'highlight-power-green': string;
|
|
10
|
+
+'highlight-power-navy': string;
|
|
11
|
+
+'highlight-power-navy-darker': string;
|
|
12
|
+
+'highlight-power-red': string;
|
|
13
|
+
+'highlight-power-royal': string;
|
|
14
|
+
+'highlight-right': string;
|
|
15
|
+
+'highlight-top': string;
|
|
16
|
+
+'visible-xxs': string;
|
|
17
|
+
|};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import FontAwesome from "react-fontawesome"
|
|
3
|
+
import Text from '../Text/Text'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Icon renders a FontAwesome icon followed by a label.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} name FontAwesome icon's name. For the icon 'fa-paperclip' for
|
|
9
|
+
* example, its name would be 'paperclip'.
|
|
10
|
+
* @param {string} label the text to use as a label.
|
|
11
|
+
* @param {string} size an optional FontAwesome icon size ('lg', '2x', '3x', etc).
|
|
12
|
+
* @param {func} onClick the function to be called when the React onClick event is triggered.
|
|
13
|
+
* @param {string} className class name is an option on the FontAwesome package that adds a class to the FontAwesome span.
|
|
14
|
+
* @param {string} title an optional title as a tooltip on mouse hover.
|
|
15
|
+
* @returns {ReactElement} JSX.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export default class Icon extends React.Component<Props> {
|
|
19
|
+
static defaultProps = {
|
|
20
|
+
label: "",
|
|
21
|
+
spin: false,
|
|
22
|
+
}
|
|
23
|
+
props: IconType
|
|
24
|
+
render() {
|
|
25
|
+
const {
|
|
26
|
+
name,
|
|
27
|
+
label,
|
|
28
|
+
size,
|
|
29
|
+
spin,
|
|
30
|
+
onClick,
|
|
31
|
+
className,
|
|
32
|
+
title
|
|
33
|
+
} = this.props
|
|
34
|
+
return (
|
|
35
|
+
<span
|
|
36
|
+
className="icon"
|
|
37
|
+
onClick={onClick}
|
|
38
|
+
title={title}
|
|
39
|
+
>
|
|
40
|
+
<FontAwesome
|
|
41
|
+
className={`far ${className}`}
|
|
42
|
+
name={name}
|
|
43
|
+
size={size}
|
|
44
|
+
spin={spin}
|
|
45
|
+
/>
|
|
46
|
+
<If condition={label}>
|
|
47
|
+
<span className="ml-2" >
|
|
48
|
+
{label}
|
|
49
|
+
</span>
|
|
50
|
+
</If>
|
|
51
|
+
</span>
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import Icon from '../Icon/Icon'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
type Props = {
|
|
8
|
+
children?: Array<React.Node>,
|
|
9
|
+
className?: string,
|
|
10
|
+
iconOption1?:string,
|
|
11
|
+
iconOption2?:string,
|
|
12
|
+
size:string,
|
|
13
|
+
color:string,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default class IconToggle extends React.Component<Props> {
|
|
17
|
+
|
|
18
|
+
static defaultProps = {
|
|
19
|
+
color: "text-sky",
|
|
20
|
+
className: "icon-toggle",
|
|
21
|
+
iconOption1:"minus-circle",
|
|
22
|
+
iconOption2:"plus-circle",
|
|
23
|
+
size:"text-larger",
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
props: Props
|
|
27
|
+
|
|
28
|
+
render() {
|
|
29
|
+
const{
|
|
30
|
+
className,
|
|
31
|
+
iconOption1,
|
|
32
|
+
iconOption2,
|
|
33
|
+
color,
|
|
34
|
+
size,
|
|
35
|
+
} = this.props
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<div>
|
|
40
|
+
<label className={`icon-toggle ${size} m-0`}>
|
|
41
|
+
<input className=""
|
|
42
|
+
type="checkbox"
|
|
43
|
+
/>
|
|
44
|
+
<Icon className={`${className,color}`}
|
|
45
|
+
name={iconOption1}
|
|
46
|
+
title={`icon-1`}
|
|
47
|
+
/>
|
|
48
|
+
<Icon className={`ml-4 ${className,color}`}
|
|
49
|
+
name={iconOption2}
|
|
50
|
+
title={`icon-2`}
|
|
51
|
+
/>
|
|
52
|
+
</label>
|
|
53
|
+
</div>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import classnames from 'classnames'
|
|
5
|
+
import Icon from '../Icon/Icon'
|
|
6
|
+
|
|
7
|
+
import styles from './milestones_item.scss'
|
|
8
|
+
|
|
9
|
+
type Props = {
|
|
10
|
+
className: string,
|
|
11
|
+
name: string,
|
|
12
|
+
status: string,
|
|
13
|
+
background: string,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
const statusToIconName = (status: string): string => {
|
|
18
|
+
if (status == 'done') { return 'check' }
|
|
19
|
+
if (status == 'started') { return 'dot-circle' }
|
|
20
|
+
return 'dot-circle'
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default class MilestoneItem extends React.Component<Props> {
|
|
24
|
+
static defaultProps = {
|
|
25
|
+
className: "",
|
|
26
|
+
background: "light"
|
|
27
|
+
}
|
|
28
|
+
props: Props
|
|
29
|
+
render() {
|
|
30
|
+
const {
|
|
31
|
+
className,
|
|
32
|
+
name,
|
|
33
|
+
status,
|
|
34
|
+
background,
|
|
35
|
+
} = this.props
|
|
36
|
+
const css = [
|
|
37
|
+
className,
|
|
38
|
+
styles[`milestone-item`],
|
|
39
|
+
styles[`background-${background}`],
|
|
40
|
+
styles[`status-${status}`],
|
|
41
|
+
]
|
|
42
|
+
return <li className={classnames(css)}>
|
|
43
|
+
<Icon name={statusToIconName(status)} className={styles[`icon`]}/>
|
|
44
|
+
<span className={styles[`milestone-item-label`]}>{name}</span>
|
|
45
|
+
</li>
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import classnames from 'classnames'
|
|
5
|
+
|
|
6
|
+
import MilestoneItem from './MilestoneItem'
|
|
7
|
+
import styles from './milestones.scss'
|
|
8
|
+
|
|
9
|
+
type Props = {
|
|
10
|
+
background: string,
|
|
11
|
+
className: string,
|
|
12
|
+
steps: any,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default class Milestones extends React.Component<Props> {
|
|
16
|
+
static defaultProps = {
|
|
17
|
+
className: "",
|
|
18
|
+
background: "light"
|
|
19
|
+
}
|
|
20
|
+
props: Props
|
|
21
|
+
|
|
22
|
+
render() {
|
|
23
|
+
const {
|
|
24
|
+
background,
|
|
25
|
+
className,
|
|
26
|
+
steps,
|
|
27
|
+
} = this.props
|
|
28
|
+
const css = [
|
|
29
|
+
className,
|
|
30
|
+
styles[`milestones`],
|
|
31
|
+
]
|
|
32
|
+
return (
|
|
33
|
+
<span className={classnames(css)}>
|
|
34
|
+
<ul>
|
|
35
|
+
{
|
|
36
|
+
[...steps].map((item, index) => {
|
|
37
|
+
return (
|
|
38
|
+
<MilestoneItem
|
|
39
|
+
background={background}
|
|
40
|
+
key={index}
|
|
41
|
+
name={item.name}
|
|
42
|
+
status={item.status}
|
|
43
|
+
/>
|
|
44
|
+
)
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
</ul>
|
|
48
|
+
</span>
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
}
|