move site to "app" branch

This commit is contained in:
Gil Barbara
2015-07-26 21:57:32 -03:00
parent 7664d90c1e
commit ea97cc62e2
29 changed files with 1 additions and 6836 deletions

View File

@@ -1,31 +0,0 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
# change these settings to your own preference
indent_style = space
indent_size = 4
# we recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[*.json]
indent_style = space
indent_size = 2
[{.eslintrc,.scss-lint.yml}]
indent_style = space
indent_size = 2
[*.{scss,sass}]
indent_style = space
indent_size = 2

221
.eslintrc
View File

@@ -1,221 +0,0 @@
{
"ecmaFeatures": {
"arrowFunctions": true,
"blockBindings": true,
"classes": true,
"defaultParams": true,
"destructuring": true,
"jsx": true,
"modules": true,
"objectLiteralComputedProperties": true,
"objectLiteralShorthandMethods": true,
"objectLiteralShorthandProperties": true,
"spread": true,
"templateStrings": true
},
"env": {
"amd": true,
"browser": true,
"jquery": true,
"mocha": true,
"node": true
},
"globals": {
"$": true,
"d3": true,
"Modernizr": false,
"module": false
},
"plugins": [
"react"
],
"rules": {
"strict": 0,
// Possible Errors
"comma-dangle": 2,
"no-cond-assign": 0,
"no-console": 0,
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 2,
"no-empty-class": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 1,
"no-extra-parens": 0,
"no-extra-semi": 1,
"no-inner-declarations": 1,
"no-invalid-regexp": 1,
"no-irregular-whitespace": 1,
"no-obj-calls": 2,
"no-regex-spaces": 2,
"no-reserved-keys": 1,
"no-sparse-arrays": 2,
"no-unreachable": 2,
"valid-jsdoc": [
2,
{
"prefer": {
"return": "returns"
}
}
],
"valid-typeof": 2,
// Best Practices
"block-scoped-var": 1,
"curly": 1,
"default-case": 1,
"dot-location": [1, "property"],
"dot-notation": 1,
"eqeqeq": 1,
"guard-for-in": 1,
"no-alert": 2,
"no-caller": 1,
"no-else-return": 1,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 1,
"no-floating-decimal": 2,
"no-implied-eval": 2,
"no-loop-func": 0,
"no-multi-spaces": [
1,
{
"exceptions": {
"VariableDeclarator": true
}
}
],
"no-multi-str": 1,
"no-native-reassign": 2,
"no-new": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-param-reassign": 0,
"no-redeclare": 1,
"no-self-compare": 2,
"no-sequences": 2,
"no-throw-literal": 2,
"no-unused-expressions": 1,
"no-void": 2,
"no-warning-comments": 0,
"no-with": 1,
"radix": 2,
"vars-on-top": 0,
"wrap-iife": 2,
"yoda": [2, "never", { "exceptRange": true }],
// Variables
"no-shadow": 1,
"no-undef": 1,
"no-undefined": 0,
"no-unused-vars": [
0,
{
"vars": "all",
"args": "after-used"
}
],
"no-use-before-define": 2,
// Stylistic Issues
"brace-style": [
1,
"stroustrup",
{
"allowSingleLine": true
}
],
"camelcase": 0,
"comma-spacing": 1,
"comma-style": [
1,
"last"
],
"consistent-this": [1, "self"],
"eol-last": 1,
"key-spacing": 1,
"linebreak-style": [1, "unix"],
"max-nested-callbacks": [2, 4],
"new-cap": 2,
"new-parens": 2,
"newline-after-var": 0,
"no-array-constructor": 2,
"no-continue": 2,
"no-lonely-if": 1,
"no-mixed-spaces-and-tabs": [
1,
"smart-tabs"
],
"no-multiple-empty-lines": [
1,
{
"max": 1
}
],
"no-nested-ternary": 0,
"no-spaced-func": 1,
"no-trailing-spaces": 1,
"no-underscore-dangle": 0,
"no-unneeded-ternary": 0,
"one-var": 0,
"padded-blocks": 0,
"quote-props": [
1,
"as-needed"
],
"quotes": [
1,
"single"
],
"semi": 1,
"semi-spacing": [
1,
{
"before": false,
"after": true
}
],
"space-after-keywords": 1,
"space-before-blocks": 1,
"space-before-function-paren": 1,
"space-in-brackets": [
0,
"always",
{
"singleValue": false,
"arraysInArrays": false,
"propertyName": false
}
],
"space-infix-ops": 1,
"space-return-throw-case": 1,
"space-unary-ops": 1,
// Node
"no-mixed-requires": 0,
// React
"react/jsx-quotes": [
1,
"double"
],
"react/jsx-no-undef": 1,
"react/jsx-sort-props": 0,
"react/jsx-sort-prop-types": 1,
"react/jsx-uses-react": 1,
"react/jsx-uses-vars": 1,
"react/no-did-mount-set-state": 0,
"react/no-did-update-set-state": 1,
"react/no-multi-comp": 1,
"react/no-unknown-property": 1,
"react/prop-types": 1,
"react/react-in-jsx-scope": 1,
"react/self-closing-comp": 1,
"react/wrap-multilines": 1
}
}

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.master
.publish
.tmp
dist

View File

@@ -1,172 +0,0 @@
linters:
BangFormat:
enabled: true
space_before_bang: true
space_after_bang: false
BorderZero:
enabled: true
ColorKeyword:
enabled: true
ColorVariable:
enabled: false
Comment:
enabled: false
DebugStatement:
enabled: true
DeclarationOrder:
enabled: true
DuplicateProperty:
enabled: true
ElsePlacement:
enabled: true
style: new_line # or 'same_line'
EmptyLineBetweenBlocks:
enabled: true
ignore_single_line_blocks: false
EmptyRule:
enabled: true
FinalNewline:
enabled: true
present: true
HexLength:
enabled: true
style: short # or 'long'
HexNotation:
enabled: true
style: lowercase # or 'uppercase'
HexValidation:
enabled: true
IdSelector:
enabled: false
ImportantRule:
enabled: false
ImportPath:
enabled: true
leading_underscore: false
filename_extension: false
Indentation:
enabled: true
character: space # or 'tab'
width: 2
LeadingZero:
enabled: true
style: include_zero # or 'exclude_zero'
MergeableSelector:
enabled: true
force_nesting: true
NameFormat:
enabled: true
allow_leading_underscore: false
convention: hyphenated_lowercase # or 'BEM', or a regex pattern
NestingDepth:
enabled: true
max_depth: 6
PlaceholderInExtend:
enabled: true
PropertySortOrder:
enabled: true
ignore_unspecified: false
separate_groups: true
PropertySpelling:
enabled: true
extra_properties: []
QualifyingElement:
enabled: true
allow_element_with_attribute: false
allow_element_with_class: true
allow_element_with_id: false
SelectorDepth:
enabled: true
max_depth: 6
SelectorFormat:
enabled: true
convention: hyphenated_BEM # or 'hyphenated_lowercase', or 'snake_case', or 'camel_case', or a regex pattern
Shorthand:
enabled: true
SingleLinePerProperty:
enabled: true
allow_single_line_rule_sets: false
SingleLinePerSelector:
enabled: true
SpaceAfterComma:
enabled: true
SpaceAfterPropertyColon:
enabled: true
style: one_space # or 'no_space', or 'at_least_one_space', or 'aligned'
SpaceAfterPropertyName:
enabled: true
SpaceBeforeBrace:
enabled: true
style: space
allow_single_line_padding: false
SpaceBetweenParens:
enabled: true
spaces: 0
StringQuotes:
enabled: true
style: single_quotes # or double_quotes
TrailingSemicolon:
enabled: true
TrailingZero:
enabled: true
UnnecessaryMantissa:
enabled: true
UnnecessaryParentReference:
enabled: true
UrlFormat:
enabled: true
UrlQuotes:
enabled: true
VariableForProperty:
enabled: false
VendorPrefix:
enabled: true
identifier_list: base
ZeroUnit:
enabled: true

View File

@@ -1 +0,0 @@
svgporn.com

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -1,40 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SVG PORN</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0"/>
<meta name="description" content="A collection of svg logos for developers."/>
<meta property="og:title" content="SVG Porn"/>
<meta property="og:url" content="http://svgporn.com/"/>
<meta property="og:description" content="A collection of svg logos for developers."/>
<meta property="og:image" content="http://svgporn.com/og-image.png"/>
<meta property="og:type" content="website"/>
<meta name="google-site-verification" content="hsF0-sA8sjC3wGoPZFBV8zHSJ4w8Suk7JYv-HSwE3B4" />
<!-- build:css(.tmp) /assets/main.css -->
<link rel="stylesheet" href="assets/main.css">
<!-- endbuild -->
<!-- build:js(bower_components) /assets/modernizr.min.js -->
<script src="/bower_components/modernizr/modernizr.js"></script>
<!-- endbuild -->
</head>
<body>
<div id="react"></div>
<!-- build:js /assets/main.min.js -->
<script src="assets/main.js"></script>
<!-- endbuild -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-64685370-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="512px" height="97px" viewBox="0 0 512 97" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMinYMin meet">
<defs>
<linearGradient x1="50%" y1="28.649155%" x2="50%" y2="100%" id="linearGradient-1">
<stop stop-color="#F6900D" offset="0%"></stop>
<stop stop-color="#9F031B" offset="100%"></stop>
</linearGradient>
</defs>
<g fill="#FB0000">
<path d="M295.139752,51.5010207 C295.18389,40.6519172 297.781848,30.5337379 303.471228,21.2753655 C308.984055,12.3074207 316.920938,7.17682759 327.482262,6.11398621 C328.786979,5.98245517 330.008717,4.98317241 331.259586,4.36788966 C333.074538,3.47630345 334.797683,2.25191724 336.711503,1.74433103 C339.184993,1.08844138 341.111172,2.02769655 341.211807,4.97434483 C341.393655,10.3265103 344.434759,13.5732966 348.967724,15.7943172 C361.679448,22.0230621 367.042207,38.5297655 362.246179,51.0322759 C359.072662,59.3063724 355.041103,67.4754207 350.057048,74.7793655 C342.545655,85.7847172 331.460855,90.7837793 318.232717,87.3551448 C304.668248,83.84 297.747421,73.8904276 295.861848,60.2827034 C295.45931,57.3784276 295.371917,54.429131 295.139752,51.5010207 L295.139752,51.5010207 L295.139752,51.5010207 Z M327.363972,21.8853517 C325.761766,23.3021793 324.3776,24.3862069 323.155862,25.6308966 C315.166897,33.7619862 311.979255,43.9799172 310.381462,54.9278897 C309.278014,62.4896 311.963366,70.0398345 316.986262,72.8346483 C323.2256,76.3065379 332.136166,75.805131 337.49451,70.3435034 C345.712993,61.9678897 350.283917,51.5389793 351.289379,39.753269 C351.58069,36.3378759 349.518566,34.2739862 346.271779,33.532469 C344.565407,33.1422897 342.781352,32.7953655 341.051145,32.8704 C336.93131,33.0469517 334.074703,31.0104276 331.721269,27.9940414 C330.295614,26.1649655 329.020028,24.2193655 327.363972,21.8853517 L327.363972,21.8853517 L327.363972,21.8853517 Z M315.480276,14.5099034 C310.422952,14.4436966 301.324359,26.4112552 301.462069,33.078731 C306.082428,26.9585655 310.752221,20.7721931 315.480276,14.5099034 L315.480276,14.5099034 L315.480276,14.5099034 Z M331.373462,20.1825103 C331.530593,26.9294345 336.287779,30.8171034 342.534179,29.1230897 C340.309628,27.8686897 338.192772,27.0053517 336.495228,25.6264828 C334.642317,24.1222621 333.176055,22.1395862 331.373462,20.1825103 L331.373462,20.1825103 L331.373462,20.1825103 Z"></path>
<path d="M495.130483,71.5087448 C495.406786,68.2213517 495.723697,64.9374897 495.951448,61.6465655 C496.489048,53.8818207 497.016938,46.1161931 497.465379,38.3470345 C497.548359,36.9143172 497.618097,35.2838621 497.043421,34.0462345 C494.358069,28.2571034 495.333517,22.6295172 497.21909,16.9136552 C498.754207,12.258869 502.565959,10.2585379 507.751283,11.6232828 C511.152552,12.5192828 512.202152,15.286731 511.042207,20.2840276 C510.776497,21.4272 510.126786,22.6489379 510.328055,23.7056 C512.814786,36.7668966 505.994593,49.1078621 507.43349,62.0641103 C507.882814,66.1124414 508.462786,70.1466483 508.867972,74.1993931 C509.155752,77.0745379 509.702179,80.0300138 509.319945,82.8398345 C508.839724,86.3788138 506.61429,89.0765241 502.951724,89.9645793 C499.191172,90.8773517 496.01589,89.6706207 493.502676,86.6921931 C486.392055,78.2653793 479.289379,69.8315034 472.118731,61.4550069 C470.309959,59.3416828 468.382014,57.2910345 466.264276,55.4990345 C465.291476,54.6754207 463.332634,53.8394483 462.536386,54.2861241 C461.567117,54.8290207 460.854731,56.7375448 460.907697,58.0193103 C461.034814,61.085131 461.794869,64.1174069 462.084414,67.1832276 C462.757959,74.3265103 463.749297,81.4865655 463.662786,88.6280828 C463.63189,91.1192276 461.372028,94.5946483 459.142179,95.8119724 C455.732966,97.6745931 451.637848,96.2056828 449.233214,93.180469 C447.873766,91.4696828 447.586869,88.5486345 447.593931,86.1748966 C447.614234,79.3043862 448.147421,72.4365241 448.240993,65.565131 C448.29749,61.4585379 447.469462,57.3113379 447.80491,53.2453517 C448.622345,43.3275586 446.020855,34.3737379 441.209821,25.8718897 C439.358676,22.601269 438.587145,19.1752828 441.290152,16.0105931 C444.205903,12.5960828 448.107697,12.105269 452.181628,13.282869 C456.621021,14.5664 459.81749,17.2076138 461.60949,21.7529379 C465.26411,31.0219034 468.942566,40.3058759 473.210703,49.2994207 C477.718952,58.799669 485.967448,65.1211034 493.470014,71.9995586 C494.023503,71.8362483 494.576993,71.6720552 495.130483,71.5087448 L495.130483,71.5087448 L495.130483,71.5087448 Z M502.459145,14.2309517 C497.914703,16.3169103 496.300138,27.0918621 499.308579,32.6673655 C499.506317,29.6041931 499.456883,26.5604414 499.961821,23.6120276 C500.487945,20.5373793 501.549903,17.5545379 502.459145,14.2309517 L502.459145,14.2309517 L502.459145,14.2309517 Z M446.08,27.6788966 C444.950069,23.4292966 442.754648,19.0455172 448.034428,15.6089379 C441.550566,16.3389793 440.980303,20.834869 446.08,27.6788966 L446.08,27.6788966 L446.08,27.6788966 Z"></path>
<path d="M380.672,22.7001379 C378.584276,22.7001379 377.194814,22.9808552 375.983669,22.6356966 C374.019531,22.0777931 371.279448,21.6011034 370.504386,20.1895724 C369.550124,18.4523034 369.663117,15.5444966 370.451421,13.6033103 C371.201766,11.7548138 373.165903,10.013131 375.024993,9.06593103 C384.698262,4.14190345 394.401545,-0.48022069 405.855338,0.334565517 C415.382069,1.01252414 423.847724,6.50151724 427.3152,15.4209103 C430.102952,22.5906759 428.100855,30.5928828 422.004524,36.220469 C419.197352,38.8122483 416.240993,41.2416 413.383503,43.7804138 C411.188966,45.7304276 410.827034,47.5021241 412.190014,50.614731 C415.357352,57.8454069 420.764248,62.1479724 427.499697,65.6516414 C435.205297,69.6584828 436.673324,78.7985655 430.877131,83.9512276 C426.369766,87.9571862 421.000828,87.4425379 418.448772,82.0065103 C415.457986,75.6356414 411.703614,70.0583724 406.56331,65.2791172 C405.373352,64.1721379 404.863117,62.2415448 404.276966,60.6049103 C403.736717,59.0945103 403.716414,57.3872552 403.109076,55.9148138 C402.003862,53.2321103 400.958676,49.7408 397.244028,50.4770207 C393.434041,51.2317793 394.447448,54.9067034 394.763476,57.4305103 C395.456441,62.9548138 396.474262,68.4552828 397.683641,73.8930759 C398.88331,79.2840828 396.130869,84.6786207 391.346317,85.5790345 C386.49291,86.4926897 382.185931,82.8486621 381.944938,76.9580138 C381.7728,72.7375448 382.700579,68.4826483 382.723531,64.2409931 C382.748248,59.7477517 383.319393,54.8563862 381.790455,50.8486621 C379.477628,44.7867586 379.147476,38.9296552 379.885462,32.7335724 C380.263283,29.5618207 380.393931,26.3591724 380.672,22.7001379 L380.672,22.7001379 L380.672,22.7001379 Z M394.990345,27.0009379 C394.346814,35.0384552 394.346814,35.0384552 401.723145,37.9339034 C401.995034,38.0407172 402.318124,38.1033931 402.520276,38.2905379 C405.763531,41.3025103 408.041048,39.5078621 410.158786,36.7924966 C411.240166,35.4065655 412.554593,34.1592276 413.411752,32.6488276 C416.242759,27.6585931 418.198952,22.5147586 414.925683,16.9004138 C411.858097,11.6400552 406.798124,11.209269 401.505103,11.3390345 C400.625876,11.3602207 399.745766,11.4944 398.869186,11.4688 C395.359338,11.3664 394.2144,13.3437793 394.386538,16.4952276 C394.578979,19.9980138 394.788193,23.4990345 394.990345,27.0009379 L394.990345,27.0009379 L394.990345,27.0009379 Z M417.220855,74.8808828 C418.438179,77.7321931 419.024331,80.0379586 420.344055,81.7937655 C420.97611,82.6350345 422.994979,82.435531 424.386207,82.7065379 C423.905986,81.5059862 423.713545,80.0264828 422.881103,79.1675586 C421.497821,77.7401379 419.703172,76.7117241 417.220855,74.8808828 L417.220855,74.8808828 L417.220855,74.8808828 Z"></path>
<path d="M168.66251,20.6132966 C150.625986,16.7618207 140.342731,38.882869 142.460469,51.7949793 C143.029848,55.2642207 143.661021,58.7749517 143.693683,62.2715586 C143.829628,76.9915586 155.608276,80.0441379 165.530483,78.1382621 C168.658097,77.5379862 171.950786,76.4724966 174.516083,74.6849103 C176.531421,73.2795586 178.85131,70.3117241 178.657103,68.2637241 C178.437297,65.9473655 175.984993,63.0863448 173.741903,61.8928552 C170.319448,60.0699586 166.177545,59.6585931 162.461131,58.3159172 C157.197241,56.4153379 153.965462,51.3306483 154.806731,46.8118069 C155.660359,42.2214621 159.277903,39.1291586 165.345986,39.4363586 C172.327724,39.7894621 179.396855,40.6395586 186.171145,42.3150345 C194.588248,44.3965793 198.893462,52.0103724 196.611531,60.4168828 C193.047834,73.5417379 181.633766,89.3704828 161.611034,88.2626207 C153.404028,87.8088828 145.928828,84.8948966 140.06731,79.337931 C137.464055,76.8697379 136.229959,72.5804138 135.232441,68.886069 C133.747641,63.3856 132.56651,57.7200552 132.068634,52.0527448 C130.957241,39.4107586 132.768662,27.3090207 141.896386,17.6269241 C150.095448,8.92998621 159.650428,2.99873103 172.399228,5.78648276 C174.963641,6.34703448 177.453903,7.26686897 179.95211,8.09842759 C183.090317,9.14449655 184.260855,11.472331 183.875972,14.6273103 C183.476083,17.9067586 181.743228,20.2292966 178.3552,20.5515034 C175.297324,20.8428138 172.189131,20.6132966 168.66251,20.6132966 L168.66251,20.6132966 L168.66251,20.6132966 Z M165.663779,8.77638621 C158.411034,7.5158069 143.88171,16.1377103 141.941407,21.8235586 C150.499752,19.1373241 155.326676,9.26102069 165.663779,8.77638621 L165.663779,8.77638621 L165.663779,8.77638621 Z M165.037021,55.9201103 C163.963586,52.9081379 163.008441,49.8829241 161.786703,46.9689379 C161.300303,45.8072276 160.225986,44.8909241 159.419145,43.8625103 C158.625545,45.1072 157.271393,46.2971586 157.144276,47.6062897 C156.79029,51.2467862 160.684138,54.9570207 165.037021,55.9201103 L165.037021,55.9201103 L165.037021,55.9201103 Z"></path>
<path d="M126.37131,24.8205241 C124.15029,30.032331 122.263834,35.4206897 119.640276,40.4215172 C114.047117,51.0790621 107.993159,61.494731 102.296717,72.1001931 C100.500303,75.4449655 99.3430069,79.1278345 97.7001931,82.5644138 C96.3778207,85.3300966 94.9848276,88.111669 93.2281379,90.6072276 C90.576331,94.3757241 87.1062069,97.309131 82.1009655,96.0794483 C77.0374621,94.8356414 72.5115586,92.1096828 71.4390069,86.6701241 C69.654069,77.6209655 68.432331,68.450869 67.2467862,59.2966621 C66.3048828,52.0139034 66.0727172,44.6296276 64.9242483,37.3865931 C64.3742897,33.9226483 62.8091586,30.4542897 61.0021517,27.4043586 C59.3990621,24.6995862 57.3996138,21.8191448 60.0734897,19.5787034 C62.4075034,17.6233931 66.1424552,16.1456552 69.0334897,16.4687448 C70.9817379,16.6859034 73.7438897,20.2469517 74.0431448,22.5818483 C74.8994207,29.2519724 74.4977655,36.0730483 74.9462069,42.8111448 C75.344331,48.7944828 76.0708414,54.7672276 76.9447724,60.7020138 C77.3985103,63.7828414 79.0934069,66.1292138 82.5908966,66.5988414 C86.3426207,67.1020138 89.1197793,65.5404138 90.3424,62.1815172 C93.0974897,54.608331 95.1428414,46.7641379 98.1318621,39.292469 C100.835752,32.534069 104.397683,26.1181793 107.617986,19.5689931 C107.934897,18.9245793 108.477793,18.3781517 108.971255,17.8361379 C112.123586,14.3713103 117.537545,12.7337931 120.932634,14.1982897 C123.937545,15.4941793 125.639503,19.3227034 126.37131,24.8205241 L126.37131,24.8205241 L126.37131,24.8205241 Z M78.3827862,90.0343172 C76.6331586,84.3087448 75.0230069,79.0386759 73.4119724,73.7677241 C71.0329379,81.0451862 73.3537103,87.8212414 78.3827862,90.0343172 L78.3827862,90.0343172 L78.3827862,90.0343172 Z M106.2912,27.8210207 C109.73131,24.3544276 113.176717,20.8825379 116.871945,17.1590621 C111.839338,17.2738207 106.804966,22.7884138 106.2912,27.8210207 L106.2912,27.8210207 L106.2912,27.8210207 Z M64.4669793,19.5760552 C60.9580138,22.4926897 61.0974897,23.6305655 65.0928552,27.1307034 C65.0928552,25.0500414 65.1060966,22.8660966 65.0743172,20.6830345 C65.0707862,20.4349793 64.8147862,20.1904552 64.4669793,19.5760552 L64.4669793,19.5760552 L64.4669793,19.5760552 Z"></path>
<path d="M241.312662,17.846731 C233.135669,17.7160828 229.976276,13.6121379 232.890262,8.04104828 C233.344,7.17417931 234.039614,6.0672 234.855283,5.81208276 C248.774621,1.45037241 262.89611,-1.75668966 277.544607,1.25704828 C285.882262,2.97313103 290.808938,12.5007448 289.189959,22.2622897 C287.824331,30.5046069 283.761876,36.9222621 276.258428,40.5380414 C270.086179,43.5111724 263.454897,45.5194483 257.176717,48.2948414 C255.492414,49.0390069 253.498262,50.8230621 253.116028,52.4711724 C251.451145,59.6409379 250.426262,66.8698483 253.634207,74.0555034 C255.109297,77.3605517 256.672662,81.2376276 252.271228,83.7570207 C249.153324,85.5419586 243.843531,83.5425103 242.302234,78.9097931 C240.3072,72.9149793 238.847117,66.4293517 238.853297,60.1573517 C238.862124,51.2512 240.591448,42.3600552 241.245572,33.4380138 C241.617214,28.3577379 241.312662,23.2271448 241.312662,17.846731 L241.312662,17.846731 L241.312662,17.846731 Z M251.951669,22.3558621 C252.581959,30.6352552 252.581959,30.6352552 258.448772,33.8317241 C262.893462,36.253131 268.805297,34.2192552 271.014841,29.6306759 C272.465214,26.6187034 274.054179,23.6676414 275.701407,20.7571862 C278.3744,16.0370759 275.835586,10.8040828 270.426924,10.601931 C266.808497,10.4659862 263.040883,10.5736828 259.553986,11.4361379 C251.550014,13.4152828 251.319614,14.0420414 251.951669,22.3558621 L251.951669,22.3558621 L251.951669,22.3558621 Z M240.991338,66.2766345 C239.936441,74.0290207 244.8384,82.3384276 249.569986,81.4945103 C246.708083,76.419531 243.732303,71.1406345 240.991338,66.2766345 L240.991338,66.2766345 L240.991338,66.2766345 Z"></path>
<path d="M27.344331,90.1031724 C20.2248828,89.4896552 14.9000828,87.3789793 12.4919172,80.3584 C12.1697103,79.4182621 11.5773793,78.5001931 10.9003034,77.7648552 C8.49037241,75.1483586 8.92468966,72.3835586 11.2710621,70.4238345 C13.6139034,68.4667586 16.6170483,68.5585655 18.7118345,71.1830069 C22.2967172,75.6762483 27.0830345,76.8944552 32.4502069,76.6163862 C36.3926069,76.412469 39.5987862,75.0062345 40.7154759,70.7142621 C41.903669,66.1504 39.702069,63.2443586 35.8629517,61.5300414 C32.2630621,59.9216552 28.3453793,59.0256552 24.7410759,57.4260966 C19.1593931,54.9499586 13.0736552,52.9752276 8.3712,49.2941241 C-0.157131034,42.6169379 -0.450206897,33.1784828 2.76126897,23.5855448 C6.98615172,10.9673931 18.5547034,4.11188966 30.1638621,7.02234483 C37.065269,8.75166897 45.0701241,18.3569655 45.4038069,25.3969655 C45.5874207,29.2687448 43.8845793,32.0097103 40.0189793,32.8721655 C36.4129103,33.6763586 33.2438069,32.9931034 31.663669,29.078069 C31.1702069,27.8536828 30.6626207,26.6337103 30.1806345,25.4040276 C27.7768828,19.2697379 24.2732138,17.5748414 18.3454897,19.6872828 C13.820469,21.3000828 11.037131,27.6603586 12.7814621,32.5879172 C15.484469,40.2237793 21.8182621,43.8669241 28.7276138,46.7517793 C33.327669,48.6717793 38.0716138,50.2466207 42.6752,52.1586759 C49.6542897,55.0585379 53.090869,60.7170207 53.6011034,67.9485793 C54.1051586,75.1086345 51.3421241,81.2544 44.701131,84.3502345 C39.2139034,86.9075862 33.1511172,88.2326069 27.344331,90.1031724 L27.344331,90.1031724 L27.344331,90.1031724 Z M13.6986483,49.9614897 C10.3326897,46.0349793 6.82813793,41.9460414 3.82234483,38.4397241 C3.38361379,43.4025931 8.18493793,49.4697931 13.6986483,49.9614897 L13.6986483,49.9614897 L13.6986483,49.9614897 Z M38.1899034,29.0754207 C36.3343448,27.1774897 34.4779034,25.2795586 32.6223448,23.3816276 C32.3407448,23.6544 32.0582621,23.9280552 31.7766621,24.2017103 C33.0160552,26.697269 32.8509793,30.5522759 38.1899034,29.0754207 L38.1899034,29.0754207 L38.1899034,29.0754207 Z M16.175669,79.8208 C15.279669,77.1045517 14.3845517,74.3891862 13.2837517,71.0497103 C9.21776552,75.9154759 14.3342345,77.3861517 16.175669,79.8208 L16.175669,79.8208 L16.175669,79.8208 Z"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,91 +0,0 @@
var React = require('react'),
Header = require('./components/Header'),
Footer = require('./components/Footer'),
Loader = require('./components/Loader'),
Logo = require('./components/Logo'),
json = require('../logos.json');
var App = React.createClass({
getInitialState () {
return {
logos: json.items,
columns: 3
};
},
componentDidMount: function () {
this
.getDOMNode()
.offsetParent
.addEventListener('keypress', function (e) {
var intKey = (window.Event) ? e.which : e.keyCode;
if (intKey === 45 && this.state.columns > 1) {
this._changeColumns(this.state.columns - 1);
}
else if ((intKey === 43 || intKey === 61) && this.state.columns < 5) {
this._changeColumns(this.state.columns + 1);
}
}.bind(this));
},
_onClickChangeColumns (e) {
e.preventDefault();
var el = e.currentTarget,
col = +el.dataset.column;
this._changeColumns(this.state.columns + col);
},
_onClickTag (e) {
e.preventDefault();
var el = e.currentTarget;
console.log(el);
},
_changeColumns (num) {
this.setState({
columns: num
});
},
_filterLogos (tag) {
},
render () {
var state = this.state,
logos = [];
state.logos.forEach(function (d, i) {
d.files.forEach(function (f, j) {
logos.push(<Logo key={i + '-' + j} info={{
name: d.name,
shortname: d.shortname,
url: d.url,
image: f
}}/>);
});
});
return (
<div className="app">
<div className="container">
<Header logos={state.logos} columns={state.columns}
onClickChangeColumns={this._onClickChangeColumns}
onClickTag={this._onClickTag}/>
<main>
<ul className={'logos col-' + state.columns}>
{logos}
</ul>
</main>
<Footer />
</div>
</div>
);
}
});
module.exports = App;

View File

@@ -1,17 +0,0 @@
var React = require('react/addons');
var Footer = React.createClass({
mixins: [React.addons.PureRenderMixin],
render: function () {
return (
<footer>
<iframe src="https://ghbtns.com/github-btn.html?user=gilbarbara&repo=logos&type=star&count=true" frameBorder="0" scrolling="0" width="110px" height="20px"></iframe>
<iframe src="https://ghbtns.com/github-btn.html?user=gilbarbara&type=follow&count=true" frameBorder="0" scrolling="0" width="160px" height="20px"></iframe>
</footer>
);
}
});
module.exports = Footer;

View File

@@ -1,182 +0,0 @@
var React = require('react/addons'),
lodash = require('lodash'),
Colors = require('../utils/Colors'),
ScaleLog = require('../utils/ScaleLog'),
config = require('../config');
var Header = React.createClass({
mixins: [React.addons.PureRenderMixin],
propTypes: {
columns: React.PropTypes.number.isRequired,
logos: React.PropTypes.array.isRequired,
onClickChangeColumns: React.PropTypes.func.isRequired,
onClickTag: React.PropTypes.func.isRequired
},
getInitialState () {
return {
category: 'developers',
ready: false
};
},
componentDidMount () {
let tags = {},
categories = {},
fScale = {
min: 1,
max: 0,
unit: 'rem'
};
if (config.features.categories) {
this.props.logos.forEach(function (d) {
d.categories.forEach(function (t) {
if (!categories.hasOwnProperty(t)) {
categories[t] = 0;
}
categories[t]++;
});
});
categories = this._sortObject(categories, 'value');
}
if (config.features.tags) {
this.props.logos.forEach(function (d) {
d.tags.forEach(function (t) {
if (!tags.hasOwnProperty(t)) {
tags[t] = 0;
}
tags[t]++;
});
});
tags = this._sortObject(tags, 'value');
tags.forEach((t) => {
if (t.value < fScale.min) {
fScale.min = t.value;
}
if (t.value > fScale.max) {
fScale.max = t.value;
}
});
}
this.setState({
categories,
tags,
ready: true,
fontScale: new ScaleLog(fScale),
colorScale: new ScaleLog({ minSize: 12, min: fScale.min, maxSize: 70, max: fScale.max }),
color: new Colors('#ffced3')
});
},
_sortObject (obj, attr) {
var arr = [];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
arr.push({
key: prop,
value: obj[prop]
});
}
}
if (attr === 'value') {
arr.sort(function (a, b) {
return b.value - a.value;
});
}
else {
arr.sort(function (a, b) {
return a.key.toLowerCase().localeCompare(b.key.toLowerCase());
}); //use this to sort as strings
}
return arr;
},
_onClickShowCategories (e) {
e.preventDefault();
var el = e.currentTarget;
console.log(el);
},
_onClickSelectCategory (e) {
e.preventDefault();
var el = e.currentTarget;
console.log(el);
},
render () {
var props = this.props,
state = this.state,
categories = state.category,
tags,
style;
if (state.ready) {
if (config.features.tags) {
tags = (
<div className="tag-cloud">
{state.tags.map((d, i) => {
style = {
backgroundColor: state.color.hsl2hex({
h: state.color.hue(),
s: state.color.saturation(),
l: state.color.lightness() - +state.colorScale.value(d.value)
}),
fontSize: state.fontScale.value(d.value)
};
return (<a key={i} href="#" data-tag={d.key} onClick={this.props.onClickTag}
style={style}>{d.key + ' (' + d.value + ')'}</a>
);
})}
</div>
);
}
if (config.features.categories) {
categories = (
<span className="categories">
<a href="#" className="categories__toggle" onClick={this._onClickShowCategories}>{state.category}</a>
<ul className="categories__menu">
{state.categories.map((d, i) => {
return (<li key={i} data-value={d.value}><a href="#" onClick={this._onClickSelectCategory}>{d.key}</a></li>);
})}
</ul>
</span>
);
}
}
return (
<header>
<img src="media/svg-porn.svg" className="logo"/>
<h3>A collection of svg logos for {categories}</h3>
<ul className="menu">
<li><span className="title">Columns</span>
<div className="switch">
<a href="#" className={props.columns < 2 ? 'disabled' : ''} data-column="-1"
onClick={props.onClickChangeColumns}>-</a>
<a href="#" className={props.columns > 4 ? 'disabled' : ''} data-column="1"
onClick={props.onClickChangeColumns}>+</a>
</div>
<span className="keyboard">or use your keyboard</span>
</li>
</ul>
{tags}
</header>
);
}
});
module.exports = Header;

View File

@@ -1,21 +0,0 @@
var React = require('react');
var Loader = React.createClass({
render: function () {
return (
<div className="loader">
<svg className="loader__svg">
<circle className="loader__circle"
cx="50"
cy="50"
r="20"
fill="none"
strokeWidth="2"
/>
</svg>
</div>
);
}
});
module.exports = Loader;

View File

@@ -1,30 +0,0 @@
var React = require('react/addons');
var Logo = React.createClass({
mixins: [React.addons.PureRenderMixin],
propTypes: {
info: React.PropTypes.object.isRequired
},
toggleInfo (e) {
var el = e.currentTarget;
el.parentNode.classList.toggle('visible');
},
render () {
var info = this.props.info;
return (
<li>
<a href={info.url} target="_blank" className="logo-item">
<img src={'../logos/' + info.image} alt={info.name} className={info.shotname}
onMouseEnter={this.toggleInfo} onMouseLeave={this.toggleInfo}/>
<span className="name">{info.name}</span>
</a>
</li>
);
}
});
module.exports = Logo;

View File

@@ -1,7 +0,0 @@
module.exports = {
features: {
categories: false,
menu: false,
tags: false
}
};

View File

@@ -1,6 +0,0 @@
var React = require('react'),
App = require('./App');
document.addEventListener('DOMContentLoaded', function () {
React.render(<App/>, document.getElementById('react'));
});

View File

@@ -1,312 +0,0 @@
var _ = require('lodash'),
math = require('./Math');
/*
Color
=====
SassMe - an Arc90 Lab Project
The MIT License (MIT)
Copyright © 2012 Arc90 | http://arc90.com
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the “Software”), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Authors:
--------
Jim Nielsen
Darren Newton
Robert Petro
Matt Quintanilla
Jesse Reiner
Color algorithms:
-----------------
RGB/HSL Algorithms adapted from: http://mjijackson.com/2008/02/rgb-to-hsl-and-
rgb-to-hsv-color-model-conversion-algorithms-in-javascript
Syntactically Awesome Stylesheets:
----------------------------------
The overall structure of the SASS conversions is based on the Ruby
SASS project:
https://github.com/nex3/sass/blob/stable/lib/sass/script/color.rb
Copyright (c) 2006-2009 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein
*/
class Colors {
constructor (color) {
this.hex = color.charAt(0) === '#' ? color : '#' + color;
if (color != null) {
this.rgb = this.hex2rgb(this.hex);
}
if (this.rgb != null) {
this.hsl = this.rgb2hsl(this.rgb);
}
return this;
}
hex2rgb (color) {
if (color.charAt(0) === '#') {
color = color.substr(1);
}
return {
r: parseInt(color.charAt(0) + '' + color.charAt(1), 16),
g: parseInt(color.charAt(2) + '' + color.charAt(3), 16),
b: parseInt(color.charAt(4) + '' + color.charAt(5), 16)
};
}
rgb2hsl (rgb) {
var b, d, g, h, hsl, l, max, min, r, s, _ref;
_ref = [rgb.r, rgb.g, rgb.b];
r = _ref[0];
g = _ref[1];
b = _ref[2];
r /= 255;
g /= 255;
b /= 255;
max = Math.max(r, g, b);
min = Math.min(r, g, b);
d = max - min;
h = (function () {
switch (max) {
case min:
return 0;
case r:
return 60 * (g - b) / d;
case g:
return 60 * (b - r) / d + 120;
case b:
return 60 * (r - g) / d + 240;
default:
break;
}
}());
if (h < 0) {
h = 360 + h;
}
l = (max + min) / 2.0;
s = max === min ? 0 : l < 0.5 ? d / (2 * l) : d / (2 - 2 * l);
return {
h: Math.abs(+((h % 360).toFixed(5))),
s: +((s * 100).toFixed(5)),
l: +((l * 100).toFixed(5))
};
}
rgb2hex (rgb) {
return '#' + ((1 << 24) + (rgb.r << 16) + (rgb.g << 8) + rgb.b).toString(16).slice(1);
}
hue2rgb (p, q, t) {
if (t < 0) {
t += 1;
}
if (t > 1) {
t -= 1;
}
if (t < 1 / 6) {
return p + (q - p) * 6 * t;
}
if (t < 1 / 2) {
return q;
}
if (t < 2 / 3) {
return p + (q - p) * (2 / 3 - t) * 6;
}
return p;
}
hsl2rgb (hsl) {
var b, g, h, l, p, q, r, s, _ref;
_ref = [parseFloat(hsl.h).toFixed(5) / 360,
parseFloat(hsl.s).toFixed(5) / 100,
parseFloat(hsl.l).toFixed(5) / 100];
h = _ref[0];
s = _ref[1];
l = _ref[2];
if (s === 0) {
r = g = b = l;
}
else {
q = l < 0.5 ? l * (1 + s) : l + s - l * s;
p = 2 * l - q;
r = this.hue2rgb(p, q, h + 1 / 3);
g = this.hue2rgb(p, q, h);
b = this.hue2rgb(p, q, h - 1 / 3);
}
return {
r: Math.round(r * 255),
g: Math.round(g * 255),
b: Math.round(b * 255)
};
}
hsl2hex (hsl) {
return this.rgb2hex(this.hsl2rgb(hsl));
}
mod (attr) {
var hsl, out, rgb, type;
if ((_.intersection(_.keys(attr), ['h', 's', 'l']).length > 0) &&
(_.intersection(_.keys(attr), ['r', 'g', 'b']).length > 0)) {
return null;
}
if (_.intersection(_.keys(attr), ['r', 'g', 'b']).length > 0) {
type = 'rgb';
}
else if (_.intersection(_.keys(attr), ['h', 's', 'l']).length > 0) {
type = 'hsl';
}
else {
return null;
}
_.each(attr, function (val, key, list) {
if (val === null) {
return delete list[key];
}
});
switch (type) {
case 'rgb':
rgb = _.pick(attr, 'r', 'g', 'b');
if (_.isEmpty(rgb) === false) {
out = _.extend(_.clone(this.rgb), rgb);
}
else {
out = this.rgb;
}
break;
case 'hsl':
hsl = _.pick(attr, 'h', 's', 'l');
if (_.isEmpty(hsl) === false) {
out = _.extend(_.clone(this.hsl), hsl);
}
else {
out = this.hsl;
}
break;
default:
break;
}
return out;
}
static constrain (attr, amount, limit, direction) {
var val = math.expr(attr + direction + amount),
test = (limit[1] >= val && val >= limit[0]);
if (!test) {
if (val < limit[0]) {
val = limit[0];
}
if (val > limit[1]) {
val = limit[1];
}
}
return Math.abs(val);
}
static constrain_degrees (attr, amount) {
var val;
val = attr + amount;
if (val > 360) {
val -= 360;
}
if (val < 0) {
val += 360;
}
return Math.abs(val);
}
red () {
return this.rgb.r;
}
green () {
return this.rgb.g;
}
blue () {
return this.rgb.b;
}
hue () {
return +this.hsl.h;
}
saturation () {
return +this.hsl.s;
}
lightness () {
return +this.hsl.l;
}
lighten (percentage) {
var hsl;
hsl = this.mod({
l: this.constructor.constrain(this.lightness(), percentage, [0, 100], '+')
});
return this.rgb2hex(this.hsl2rgb(hsl));
}
darken (percentage) {
var hsl;
hsl = this.mod({
l: this.constructor.constrain(this.lightness(), percentage, [0, 100], '-')
});
return this.rgb2hex(this.hsl2rgb(hsl));
}
saturate (percentage) {
var hsl;
hsl = this.mod({
s: this.constructor.constrain(this.saturation(), percentage, [0, 100], '+')
});
return this.rgb2hex(this.hsl2rgb(hsl));
}
desaturate (percentage) {
var hsl;
hsl = this.mod({
s: this.constructor.constrain(this.saturation(), percentage, [0, 100], '-')
});
return this.rgb2hex(this.hsl2rgb(hsl));
}
adjust_hue (degrees) {
var hsl = this.mod({
h: this.constructor.constrain_degrees(this.hue(), degrees)
});
return this.rgb2hex(this.hsl2rgb(hsl));
}
}
module.exports = Colors;

View File

@@ -1,49 +0,0 @@
module.exports = {
expr (expr) {
var chars = expr.split('');
var n = [], op = [], index = 0, oplast = true;
n[index] = '';
// Parse the expression
for (var c = 0; c < chars.length; c++) {
if (isNaN(parseInt(chars[c], 10)) && chars[c] !== '.' && !oplast) {
op[index] = chars[c];
index++;
n[index] = '';
oplast = true;
}
else {
n[index] += chars[c];
oplast = false;
}
}
// Calculate the expression
expr = parseFloat(n[0]);
for (var o = 0; o < op.length; o++) {
var num = parseFloat(n[o + 1]);
switch (op[o]) {
case '+':
expr = expr + num;
break;
case '-':
expr = expr - num;
break;
case '*':
expr = expr * num;
break;
case '/':
expr = expr / num;
break;
default:
break;
}
}
return expr;
}
};

View File

@@ -1,21 +0,0 @@
class ScaleLog {
constructor (options) {
options = options || {};
this.minSize = options.minSize || 1.2;
this.maxSize = options.maxSize || 5;
this.unit = options.unit || '';
this.min = (options.min || 1);
this.max = (options.max || 50);
this.scale = (this.max - this.min) / (this.maxSize - this.minSize);
}
value (qty) {
return (qty === this.min ? this.minSize : (qty / this.max) * (this.maxSize - this.minSize) + this.minSize).toFixed(2) + this.unit;
//Math.exp((position - this.minSize) * this.scale + this.min);
}
}
// Usage: new LogSlider({ min: 10, max: 100 });
module.exports = ScaleLog;

View File

@@ -1,129 +0,0 @@
@mixin background-image-retina($file, $type, $width, $height) {
background-image: url($file + '.' + $type);
background-size: $width $height;
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 144dpi) {
background-image: url($file + '@2x.' + $type);
}
}
@mixin background-image-svg($name, $width, $height) {
background-image: url('#{$name}.png'); // IE8 & below
background-image: none, url('#{$name}.svg');
background-size: $width $height;
}
@mixin truncate($width: 100%) {
text-overflow: ellipsis;
overflow: hidden;
width: $width;
white-space: nowrap;
}
@mixin vertical-align {
position: relative;
top: 50%;
transform: translateY(-50%);
}
@mixin media-query($media-query) {
@if $media-query == outdated {
@media (max-height: 540px) { @content; }
}
@if $media-query == xs-only {
@media (max-width: $screen-xs - 1) { @content; }
}
@if $media-query == sm {
@media (min-width: $screen-xs) { @content; }
}
@if $media-query == sm-only {
@media (max-width: $screen-sm - 1) { @content; }
}
@if $media-query == md {
@media (min-width: $screen-sm) { @content; }
}
@if $media-query == md-only {
@media (max-width: $screen-md - 1) { @content; }
}
@if $media-query == lg {
@media (min-width: $screen-md) { @content; }
}
@if $media-query == xl {
@media (min-width: $screen-lg) { @content; }
}
@if $media-query == retina {
@media (min--moz-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 2/1), (-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2) { @content; }
}
@if $media-query == landscape {
@media (orientation: landscape) { @content; }
}
}
// Just mqs helpers...
@mixin outdated {
@include media-query(outdated) { @content }
}
@mixin xs {
@include media-query(xs) { @content }
}
@mixin xxs-only {
@include media-query(xxs-only) { @content }
}
@mixin xs-only {
@include media-query(xs-only) { @content }
}
@mixin smt {
@include media-query(smt) { @content }
}
@mixin smt-only {
@include media-query(smt-only) { @content }
}
@mixin sm {
@include media-query(sm) { @content }
}
@mixin sm-only {
@include media-query(sm-only) { @content }
}
@mixin md {
@include media-query(md) { @content }
}
@mixin md-only {
@include media-query(md-only) { @content }
}
@mixin lg {
@include media-query(lg) { @content }
}
@mixin xl {
@include media-query(xl) { @content }
}
@mixin retina {
@include media-query(retina) { @content }
}
@mixin landscape {
@include media-query(landscape) { @content }
}

View File

@@ -1,7 +0,0 @@
$bg-color: #fff9f2;
$link-color: lighten(#f70017, 15%);
$screen-xs: 480px;
$screen-sm: 768px;
$screen-md: 1024px;
$screen-lg: 1280px;

View File

@@ -1,171 +0,0 @@
header {
padding-top: 3rem;
text-align: center;
@include md {
padding-top: 4rem;
}
.logo {
width: 95%;
@include md {
width: 70%;
}
@include lg {
width: 50%;
}
}
h3 {
font-size: 1.8rem;
margin: 1.5rem 3rem 0.5rem;
@include sm {
font-size: 2rem;
margin-left: auto;
margin-right: auto;
}
@include md {
font-size: 2.5rem;
margin-top: 2rem;
max-width: 80%;
}
@include lg {
max-width: 60%;
}
}
.categories {
display: inline-block;
position: relative;
width: 165px;
&__toggle {
padding: 0 26px 0 8px;
position: relative;
text-decoration: none;
&:before {
border-top: 1px dashed $link-color;
bottom: -5px;
content: '';
height: 2px;
left: 0;
position: absolute;
width: 100%;
}
&:after {
border-color: $link-color transparent transparent;
border-radius: 3px;
border-style: solid;
border-width: 12px 8px 0;
content: '';
position: absolute;
right: 3px;
top: 10px;
}
}
&__menu {
left: 0;
list-style: none;
margin: 0;
padding: 0;
position: absolute;
right: 0;
top: -4px;
width: 100%;
z-index: 100;
> li {
a {
background-color: rgba($link-color, 0.5);
color: #fff;
display: block;
padding: 5px 8px;
text-align: left;
}
}
}
}
.menu {
display: flex;
justify-content: space-around;
list-style: none;
margin: 2rem auto 0;
padding: 0;
width: 50%;
@include md-only {
display: none;
}
> li {
text-align: center;
width: 100%;
.title {
color: lighten($link-color, 10%);
font-size: 2rem;
text-transform: uppercase;
}
.keyboard {
color: lighten($link-color, 15%);
display: block;
margin-top: 0.2rem;
vertical-align: middle;
}
}
}
.switch {
background-color: lighten($link-color, 10%);
border-radius: 5px;
display: inline-flex;
margin-left: 1rem;
> a {
color: #fff;
display: flex;
font-size: 2rem;
line-height: 1;
padding: 0.2rem 1.3rem;
text-decoration: none !important;
&:last-of-type {
border-left: 1px solid $bg-color;
}
&.disabled {
color: lighten($link-color, 20%);
pointer-events: none;
}
}
}
.tag-cloud {
align-items: center;
display: flex;
flex-flow: wrap;
justify-content: space-around;
margin-top: 2rem;
a {
background-color: $link-color;
border-radius: 5px;
color: #fff;
display: inline-block;
margin: 1rem;
padding: 0.5rem 1rem;
text-decoration: none;
}
}
}

View File

@@ -1,115 +0,0 @@
.logos {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
list-style: none;
margin: 0 0 3rem;
padding: 0;
> li {
align-items: center;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
padding: 8vh 1vh;
position: relative;
text-align: center;
width: 100%;
@include md {
width: 50%;
}
@include lg {
width: percentage(1/3);
}
a {
display: block;
outline: none;
transition: all 0.2s;
width: 100%;
&.visible {
.name {
color: #444;
}
}
}
.name {
bottom: 0;
color: $bg-color;
font-size: 2rem;
font-weight: bold;
left: 0;
position: absolute;
right: 0;
text-decoration: none;
transition: color 0.3s;
}
img {
display: block;
margin: 0 auto;
max-width: 100%;
transition: all 0.4s;
}
}
&.col-1 {
> li {
@include md {
width: 100% !important;
}
a {
margin-bottom: 5rem;
margin-top: 5rem;
}
img {
max-height: 60vh;
max-width: none;
width: 70%;
}
}
}
&.col-2 {
> li {
@include md {
width: percentage(1/2) !important;
}
a {
margin-bottom: 3rem;
margin-top: 3rem;
}
img {
max-height: 50vh;
max-width: none;
width: 90%;
}
}
}
&.col-4 {
> li {
@include md {
padding: 8vh 3vh;
width: percentage(1/4) !important;
}
}
}
&.col-5 {
> li {
@include md {
padding: 8vh 5vh;
width: percentage(1/5) !important;
}
}
}
}

View File

@@ -1,51 +0,0 @@
@import 'base/variables';
@import 'base/utils';
@import url(http://fonts.googleapis.com/css?family=Lato:400,400italic|Varela+Round);
@import 'components/header';
@import 'components/logos';
html {
font-size: 62.5%;
height: 100%;
}
body {
background-color: $bg-color;
font-family: Lato, sans-serif;
font-size: 1.4rem;
margin: 0;
min-height: 100%;
padding: 0;
}
* {
box-sizing: border-box;
}
a {
color: $link-color;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'Varela Round', sans-serif;
}
.container {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
footer {
border-top: 1px solid #ccc;
display: flex;
justify-content: space-between;
margin: -1.5rem;
padding: 1.5rem;
}

View File

@@ -1,31 +0,0 @@
SVG Logos
====================
#### A collection of svg vector logos for developers.
[View All](http://svgporn.com)
The logos are optimized (removed duplicated paths / excessive groups / empty defs, linting, etc).
Some were recreated from rastered images.
## Tips for working with SVGs
• Always convert borders to paths. They use a fixed size and behave strangely when resized.
• Join all the paths into one and use it as a background/mask. Or at least overlap your paths.
## Contributing
Since I optimize all the files manually I won't accept pull requests with new logos.
Please add your requests in the issues preferably with links to the vector files.
*All logos appearing on the site are the property of their respective owners.*
---
{{#each this}}
## <a href="{{url}}" target="_blank">{{name}}</a>{{#if converted}} *{{/if}}
{{#each files}}
![{{../shortname}}](http://svgporn.com/logos/{{this}})
{{/each}}
{{/each}}
---
* Converted from raster image, svg font or adapted from complex AI files.

View File

@@ -1,9 +0,0 @@
{
"name": "logos",
"version": "0.2.0",
"dependencies": {
"jquery": "~2",
"modernizr": "~2",
"bootstrap-sass": "~3"
}
}

View File

@@ -1,257 +0,0 @@
var gulp = require('gulp'),
$ = require('gulp-load-plugins')(),
browserify = require('browserify'),
buffer = require('vinyl-buffer'),
browserSync = require('browser-sync'),
del = require('del'),
fs = require('fs'),
historyApiFallback = require('connect-history-api-fallback'),
merge = require('merge-stream'),
path = require('path'),
runSequence = require('run-sequence'),
source = require('vinyl-source-stream'),
watchify = require('watchify');
var isProduction = function () {
return process.env.NODE_ENV === 'production';
},
target = function () {
return (isProduction() ? 'dist' : '.tmp');
},
middleware = historyApiFallback({});
function watchifyTask (options) {
var bundler, rebundle, iteration = 0;
bundler = browserify({
entries: path.join(__dirname, '/app/scripts/main.js'),
insertGlobals: true,
cache: {},
//debug: options.watch,
packageCache: {},
fullPaths: options.watch, //options.watch
extensions: ['.jsx'],
transform: [
['babelify', { ignore: /bower_components/ }]
]
});
if (options.watch) {
bundler = watchify(bundler);
}
rebundle = function () {
var stream = bundler.bundle();
if (options.watch) {
stream.on('error', function (err) {
console.log(err);
});
}
stream
.pipe(source($.if(options.watch, 'main.js', 'main.min.js')))
.pipe(buffer())
.pipe($.if(!options.watch, $.uglify()))
.pipe(gulp.dest(target() + '/assets'))
.pipe($.tap(function () {
if (iteration === 0 && options.cb) {
options.cb();
}
iteration++;
}));
};
bundler.on('update', rebundle);
return rebundle();
}
// Scripts
gulp.task('scripts', function (cb) {
return watchifyTask({
watch: !isProduction(),
cb: cb
});
});
gulp.task('lint', function () {
return gulp.src('app/scripts/**/*')
.pipe($.eslint({
useEslintrc: true
}))
.pipe($.eslint.format())
.pipe($.eslint.failOnError());
});
gulp.task('styles', function () {
return gulp.src('app/styles/main.scss')
.pipe($.plumber())
.pipe($.sass.sync({
precision: 4
}).on('error', $.sass.logError))
.pipe($.plumber.stop())
.pipe($.autoprefixer({
browsers: ['last 4 versions']
}))
.pipe(gulp.dest('.tmp/assets'));
});
gulp.task('media', function () {
return gulp.src(['**/*.{jpg,gif,png}'], { cwd: 'app/media/' })
.pipe($.imagemin({
verbose: true
}, {
progressive: true,
interlaced: true
}))
.pipe(gulp.dest('dist/media'))
.pipe($.size({
title: 'Media'
}));
});
gulp.task('readme', function () {
var json = JSON.parse(fs.readFileSync('./app/logos.json'));
return gulp.src('app/templates/README.handlebars')
.pipe($.compileHandlebars(json.items, {
batch: ['./app/templates']
}))
.pipe($.rename('README.md'))
.pipe(gulp.dest('./'));
});
gulp.task('copy', function () {
return gulp.src('app/media/**/*')
.pipe(gulp.dest('.tmp'));
});
gulp.task('bundle', function () {
var html,
vendor,
extras,
media,
logos,
assets = $.useref.assets();
html = gulp.src('app/*.html')
.pipe(assets)
.pipe($.if('*.css', $.cssmin()))
.pipe(assets.restore())
.pipe($.useref())
.pipe(gulp.dest('dist'))
.pipe($.size({
title: 'HTML'
}));
vendor = gulp.src('bower_components/modernizr/modernizr.js')
.pipe($.uglify())
.pipe($.rename('modernizr.min.js'))
.pipe(gulp.dest('dist/assets'))
.pipe($.size({
title: 'Vendor'
}));
extras = gulp.src([
'app/CNAME',
'app/favicon.ico'
])
.pipe(gulp.dest('dist'))
.pipe($.size({
title: 'Extras'
}));
media = gulp.src([
'app/media/*.svg'
])
.pipe(gulp.dest('dist/media'))
.pipe($.size({
title: 'Media'
}));
logos = gulp.src([
'logos/*.svg'
])
.pipe(gulp.dest('dist/logos'))
.pipe($.size({
title: 'Logos'
}));
return merge(html, vendor, extras, media, logos);
});
gulp.task('sizer', function () {
return gulp.src(target() + '/**/*')
.pipe($.size({
title: 'Build',
gzip: true
}));
});
gulp.task('assets', function (cb) {
runSequence('styles', 'scripts', cb); //, 'fonts'
});
gulp.task('clean', function (cb) {
del([target() + '/*'], cb);
});
gulp.task('gh-pages', function () {
return gulp.src(['dist/**/*'], {
dot: true
})
.pipe($.ghPages({
force: true
}));
});
gulp.task('serve', ['assets'], function () {
browserSync({
notify: true,
logPrefix: 'logos',
files: ['app/*.html', '.tmp/assets/**/*.*', 'app/media/**/*', 'app/logos.json'],
server: {
baseDir: ['.tmp', 'app', './'],
middleware: [middleware],
routes: {
'/bower_components': './bower_components'
}
}
});
gulp.watch('app/styles/**/*.scss', function (e) {
if (e.type === 'changed') {
gulp.start('styles');
}
});
gulp.watch('app/logos.json', ['readme']);
});
gulp.task('build', function (cb) {
process.env.NODE_ENV = 'production';
runSequence('clean', 'lint', 'readme', 'assets', ['media', 'bundle'], 'sizer', cb);
});
gulp.task('deploy', function (cb) {
runSequence('build', ['gh-pages'], cb);
});
gulp.task('deploy-old', ['build'], function () {
return gulp.src([
'logos/*.svg',
'.tmp/*.html',
'.tmp/main.css',
'.tmp/main.js',
'app/media/**/*',
'app/CNAME',
'*.md'
])
.pipe($.ghPages({
force: true
}));
});
gulp.task('default', ['serve']);

View File

@@ -1,54 +0,0 @@
{
"name": "logos",
"version": "0.2.0",
"author": "Gil Barbara <gilbarbara@gmail.com>",
"repository": {
"type": "git",
"url": "https://github.com/gilbarbara/logos"
},
"license": "CC0-1.0",
"homepage": "http://gilbarbara.github.io/logos/",
"dependencies": {
"react": "^0.13"
},
"devDependencies": {
"babelify": "^6.1",
"browser-sync": "^2.8",
"browserify": "^11.0",
"connect": "^3.4",
"connect-history-api-fallback": "^1.1",
"del": "^1.2",
"eslint": "^0.24",
"eslint-plugin-react": "^2.7",
"gulp": "^3.9",
"gulp-autoprefixer": "^2.3",
"gulp-cache": "^0.2",
"gulp-changed": "^1.2",
"gulp-compile-handlebars": "^0.5",
"gulp-cssmin": "^0.1",
"gulp-eslint": "^0.15",
"gulp-filter": "^2.0",
"gulp-flatten": "^0.1",
"gulp-gh-pages": "^0.5",
"gulp-if": "^1.2",
"gulp-imagemin": "^2.3",
"gulp-load-plugins": "^0.10",
"gulp-plumber": "^1.0",
"gulp-rename": "^1.2",
"gulp-sass": "^2.0",
"gulp-size": "^1.2",
"gulp-tap": "^0.1",
"gulp-uglify": "^1.2",
"gulp-useref": "^1.2",
"gulp-util": "^3.0",
"lodash": "^3.10.0",
"merge-stream": "^0.1",
"run-sequence": "^1.1",
"vinyl-buffer": "^1.0",
"vinyl-source-stream": "^1.1",
"watchify": "^3.3"
},
"engines": {
"node": ">=0.10.0"
}
}