Skip to content

Commit e9c3a7c

Browse files
committed
wip; update component to handle different h tags
1 parent 578963f commit e9c3a7c

10 files changed

Lines changed: 182 additions & 1 deletion

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import React, {Component} from 'react';
2+
import HeaderTypesExamples from './Types/HeaderTypesExamples';
3+
// import HeaderStatesExamples from './States/HeaderStatesExamples';
4+
// import HeaderVariationsExamples from './Variations/HeaderVariationsExamples';
5+
6+
export default class HeaderExamples extends Component {
7+
render() {
8+
return (
9+
<div>
10+
TODO: explain semantic uses divs and h* tags and how we accomplish that with Header and HEader.H*
11+
<HeaderTypesExamples />
12+
</div>
13+
);
14+
}
15+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React, {Component} from 'react';
2+
import {Header} from 'stardust';
3+
4+
export default class HeaderContentHeadersExample extends Component {
5+
render() {
6+
return (
7+
<div>
8+
<Header className='huge'>
9+
Huge Header
10+
</Header>
11+
<Header className='large'>
12+
Large Header
13+
</Header>
14+
<Header className='medium'>
15+
Medium Header
16+
</Header>
17+
<Header className='small'>
18+
Small Header
19+
</Header>
20+
<Header className='tiny'>
21+
Tiny Header
22+
</Header>
23+
</div>
24+
);
25+
}
26+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import React, {Component} from 'react';
2+
import {Header} from 'stardust';
3+
4+
export default class HeaderContentHeadersExample extends Component {
5+
render() {
6+
return (
7+
<Header className='h2' icon='settings'>
8+
Testing
9+
</Header>
10+
);
11+
}
12+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import React, {Component} from 'react';
2+
import {Header} from 'stardust';
3+
4+
export default class HeaderPageHeadersExample extends Component {
5+
render() {
6+
return (
7+
<div>
8+
<Header.H1>
9+
h1 Test
10+
</Header.H1>
11+
</div>
12+
);
13+
}
14+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import React, {Component} from 'react';
2+
import ComponentExample from 'docs/app/Components/ComponentDoc/ComponentExample';
3+
import ExampleSection from 'docs/app/Components/ComponentDoc/ExampleSection';
4+
import {Message} from 'stardust';
5+
6+
export default class HeaderTypesExamples extends Component {
7+
render() {
8+
return (
9+
<ExampleSection title='Types'>
10+
<ComponentExample
11+
title='Page Headers'
12+
description='Headers may be oriented to give the hierarchy of a section in the context of the page'
13+
examplePath='elements/Header/Types/HeaderPageHeadersExample'
14+
>
15+
<Message>
16+
Page headings are sized using rem and are not affected by surrounding content size.
17+
</Message>
18+
</ComponentExample>
19+
<ComponentExample
20+
title='Content Headers'
21+
description='Headers may be oriented to give the importance of a section'
22+
examplePath='elements/Header/Types/HeaderContentHeadersExamples'
23+
>
24+
<Message>
25+
Content headings are sized with em and are based on the font-size of their container.
26+
</Message>
27+
</ComponentExample>
28+
<ComponentExample
29+
title='Icon Headers'
30+
description='A header can be formatted to emphasize an icon'
31+
examplePath='elements/Header/Types/HeaderIconHeadersExamples'
32+
/>
33+
</ExampleSection>
34+
);
35+
}
36+
}

src/elements/Header/H1.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import React, {Component} from 'react';
2+
import META from 'src/utils/Meta';
3+
import _Header from './_Header';
4+
5+
export default class H1 extends Component {
6+
static _meta = {
7+
library: META.library.semanticUI,
8+
name: 'H1',
9+
type: META.type.element,
10+
};
11+
12+
render() {
13+
return (
14+
<_Header {...this.props} _headerElement='h1'/>
15+
);
16+
}
17+
}

src/elements/Header/Header.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import React, {Component} from 'react';
2+
import META from 'src/utils/Meta';
3+
import _Header from './_Header';
4+
import H1 from './H1';
5+
6+
export default class Header extends Component {
7+
static _meta = {
8+
library: META.library.semanticUI,
9+
name: 'Header',
10+
type: META.type.element,
11+
};
12+
13+
static H1 = H1;
14+
15+
render() {
16+
return (
17+
<_Header {...this.props} _headerElement='div'/>
18+
);
19+
}
20+
}

src/elements/Header/_Header.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import _ from 'lodash';
2+
import React, {Component, PropTypes} from 'react';
3+
import classNames from 'classnames';
4+
import META from 'src/utils/Meta';
5+
import getUnhandledProps from 'src/utils/getUnhandledProps';
6+
7+
export default class _Header extends Component {
8+
static propTypes = {
9+
_headerElement: PropTypes.string,
10+
children: PropTypes.node,
11+
className: PropTypes.string,
12+
icon: PropTypes.node,
13+
image: PropTypes.node,
14+
};
15+
16+
static _meta = {
17+
library: META.library.stardust,
18+
name: '_Header',
19+
type: META.type.element,
20+
};
21+
22+
render() {
23+
const classes = classNames(
24+
'sd-header',
25+
'ui',
26+
this.props.className,
27+
'header'
28+
);
29+
30+
const props = getUnhandledProps(this);
31+
32+
return React.createElement(
33+
this.props._headerElement,
34+
_.assign({}, props, {className: classes}),
35+
this.props.image || this.props.icon,
36+
this.props.children,
37+
);
38+
}
39+
}

src/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Button from 'src/elements/Button/Button';
2020
import Buttons from 'src/elements/Button/Buttons';
2121
import Container from 'src/elements/Container/Container';
2222
import Divider from 'src/elements/Divider/Divider';
23+
import Header from 'src/elements/Header/Header';
2324
import Image from 'src/elements/Image/Image';
2425
import Input from 'src/elements/Input/Input';
2526
import List from 'src/elements/List/List';
@@ -61,6 +62,7 @@ export default {
6162
Buttons,
6263
Container,
6364
Divider,
65+
Header,
6466
Image,
6567
Input,
6668
List,

src/utils/Meta.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import _ from 'lodash';
77
const META = {
88
library: {
99
semanticUI: 'Semantic UI',
10-
stardust: 'Stardust'
10+
stardust: 'Stardust',
1111
},
1212

1313
type: {

0 commit comments

Comments
 (0)