diff --git a/src/components/filter.js b/src/components/filter.js
new file mode 100644
index 0000000..58e2bca
--- /dev/null
+++ b/src/components/filter.js
@@ -0,0 +1,56 @@
+import React,{Component} from 'react'
+import {Icons} from './icon'
+
+export default class Filter extends Component {
+ static defaultProps = {
+ dataSource:[],
+ onClick:new Function
+ }
+ constructor(props){
+ super(props)
+ this.state = {
+ dataSource:{
+ "free":{},
+ "hot":{},
+ "recommended":{},
+ "must-have":{},
+ "app-store":{},
+ "open-source":{},
+ },
+ onClick:this.props.onClick,
+ selector:"",
+ }
+ }
+ renderListItem(source,onClick){
+ let elms = [];
+ for(let i in source){
+ elms.push(
+
{
+ }}>
+
+
+ )
+ }
+ return elms
+ }
+ render(){
+ return (
+
+ {this.renderListItem(this.state.dataSource,this.props.onClick)}
+
+ )
+ }
+ componentDidMount(){
+ this.setState({dataSource:this.state.dataSource})
+ }
+}
+
+
+var styles = {
+ active:{
+ backgroundColor:"rgba(255, 255, 255, 0.11)"
+ },
+ cancel:{
+ backgroundColor:"transparent"
+ }
+}
\ No newline at end of file
diff --git a/src/components/icon.js b/src/components/icon.js
index 64e0b75..b7eb066 100644
--- a/src/components/icon.js
+++ b/src/components/icon.js
@@ -16,15 +16,95 @@ class Icons extends Component {
let tp = this.props.type
if(!tp) return (
);
+ if(tp === 'free') return (
+
+ )
+ if(tp === 'hot') return (
+
+ )
+ if(tp === 'recommended') return (
+
+ )
+ if(tp === 'must-have') return (
+
+ )
+ if(tp === 'app-store') return (
+
+ )
+ if(tp === 'open-source') return (
+
+ )
+
if(tp === 'editors-and-ide') return (