cozy-bar 1.17.1

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.
Files changed (181) hide show
  1. package/.eslintrc.json +7 -0
  2. package/.github/auto-merge.yml +7 -0
  3. package/.nvmrc +1 -0
  4. package/.transifexrc.tpl +4 -0
  5. package/.travis.yml +28 -0
  6. package/.tx/config +8 -0
  7. package/CHANGELOG.md +493 -0
  8. package/CODEOWNERS +2 -0
  9. package/CONTRIBUTING.md +135 -0
  10. package/LICENSE +21 -0
  11. package/README.md +172 -0
  12. package/babel.config.js +3 -0
  13. package/config/aliases/globalReact.js +1 -0
  14. package/config/aliases/globalReactDOM.js +1 -0
  15. package/config/webpack.config.analyzer.js +10 -0
  16. package/config/webpack.config.base.js +61 -0
  17. package/config/webpack.config.dev.js +16 -0
  18. package/config/webpack.config.extract.js +84 -0
  19. package/config/webpack.config.inline-styles.js +82 -0
  20. package/config/webpack.config.jsx.js +14 -0
  21. package/config/webpack.config.prod.js +18 -0
  22. package/config/webpack.js +31 -0
  23. package/config/webpack.vars.js +11 -0
  24. package/dist/cozy-bar.css +9445 -0
  25. package/dist/cozy-bar.css.map +1 -0
  26. package/dist/cozy-bar.js +122668 -0
  27. package/dist/cozy-bar.js.map +1 -0
  28. package/dist/cozy-bar.min.css +9 -0
  29. package/dist/cozy-bar.min.css.map +1 -0
  30. package/dist/cozy-bar.min.js +57 -0
  31. package/dist/cozy-bar.min.js.map +1 -0
  32. package/dist/cozy-bar.mobile.js +123719 -0
  33. package/dist/cozy-bar.mobile.js.map +1 -0
  34. package/dist/cozy-bar.mobile.min.js +57 -0
  35. package/dist/cozy-bar.mobile.min.js.map +1 -0
  36. package/docs/dev.md +20 -0
  37. package/examples/Procfile +3 -0
  38. package/examples/icon.png +0 -0
  39. package/examples/index.html +7 -0
  40. package/examples/index.jsx +122 -0
  41. package/examples/logs.js +3 -0
  42. package/package.json +163 -0
  43. package/postcss.config.js +23 -0
  44. package/public/fonts/Lato-Bold.woff2 +0 -0
  45. package/public/fonts/Lato-Regular.woff2 +0 -0
  46. package/public/fonts.css +13 -0
  47. package/public/icon-type-folder-32.png +0 -0
  48. package/public/index.html +63 -0
  49. package/renovate.json +5 -0
  50. package/src/assets/icons/16/icon-claudy.svg +5 -0
  51. package/src/assets/icons/16/icon-cozy-16.svg +1 -0
  52. package/src/assets/icons/16/icon-cube-16.svg +6 -0
  53. package/src/assets/icons/16/icon-logout-16.svg +3 -0
  54. package/src/assets/icons/16/icon-magnifier-16.svg +6 -0
  55. package/src/assets/icons/16/icon-people-16.svg +3 -0
  56. package/src/assets/icons/16/icon-phone-16.svg +3 -0
  57. package/src/assets/icons/16/icon-question-mark-16.svg +3 -0
  58. package/src/assets/icons/16/icon-storage-16.svg +3 -0
  59. package/src/assets/icons/24/icon-arrow-left.svg +3 -0
  60. package/src/assets/icons/32/icon-claudy.svg +1 -0
  61. package/src/assets/icons/apps/icon-collect.svg +25 -0
  62. package/src/assets/icons/apps/icon-drive.svg +17 -0
  63. package/src/assets/icons/apps/icon-market-soon.svg +25 -0
  64. package/src/assets/icons/apps/icon-photos.svg +19 -0
  65. package/src/assets/icons/apps/icon-soon.svg +21 -0
  66. package/src/assets/icons/apps/icon-store.svg +19 -0
  67. package/src/assets/icons/claudyActions/icon-bills.svg +6 -0
  68. package/src/assets/icons/claudyActions/icon-laptop.svg +7 -0
  69. package/src/assets/icons/claudyActions/icon-phone.svg +8 -0
  70. package/src/assets/icons/claudyActions/icon-question-mark.svg +6 -0
  71. package/src/assets/icons/comingsoon/icon-bank.svg +12 -0
  72. package/src/assets/icons/comingsoon/icon-sante.svg +12 -0
  73. package/src/assets/icons/comingsoon/icon-store.svg +6 -0
  74. package/src/assets/icons/icon-cozy.svg +3 -0
  75. package/src/assets/icons/icon-shield.svg +3 -0
  76. package/src/assets/icons/spinner.svg +4 -0
  77. package/src/assets/sprites/icon-apps.svg +1 -0
  78. package/src/assets/sprites/icon-cozy-home.svg +16 -0
  79. package/src/components/Apps/AppItem.jsx +117 -0
  80. package/src/components/Apps/AppItemPlaceholder.jsx +12 -0
  81. package/src/components/Apps/AppNavButtons.jsx +88 -0
  82. package/src/components/Apps/AppsContent.jsx +89 -0
  83. package/src/components/Apps/ButtonCozyHome.jsx +30 -0
  84. package/src/components/Apps/ButtonCozyHome.spec.jsx +53 -0
  85. package/src/components/Apps/IconCozyHome.jsx +24 -0
  86. package/src/components/Apps/index.jsx +81 -0
  87. package/src/components/Banner.jsx +41 -0
  88. package/src/components/Bar.jsx +293 -0
  89. package/src/components/Bar.spec.jsx +133 -0
  90. package/src/components/Claudy.jsx +81 -0
  91. package/src/components/Drawer.jsx +227 -0
  92. package/src/components/Drawer.spec.jsx +98 -0
  93. package/src/components/SearchBar.jsx +358 -0
  94. package/src/components/Settings/SettingsContent.jsx +145 -0
  95. package/src/components/Settings/StorageData.jsx +29 -0
  96. package/src/components/Settings/helper.js +8 -0
  97. package/src/components/Settings/index.jsx +218 -0
  98. package/src/components/SupportModal.jsx +59 -0
  99. package/src/components/__snapshots__/Bar.spec.jsx.snap +302 -0
  100. package/src/config/claudyActions.yaml +14 -0
  101. package/src/config/persistWhitelist.yaml +2 -0
  102. package/src/dom.js +80 -0
  103. package/src/index.jsx +235 -0
  104. package/src/index.spec.jsx +34 -0
  105. package/src/lib/api/helpers.js +13 -0
  106. package/src/lib/api/index.jsx +145 -0
  107. package/src/lib/exceptions.js +89 -0
  108. package/src/lib/expiringMemoize.js +13 -0
  109. package/src/lib/icon.js +77 -0
  110. package/src/lib/importIcons.js +14 -0
  111. package/src/lib/intents.js +16 -0
  112. package/src/lib/logger.js +6 -0
  113. package/src/lib/middlewares/appsI18n.js +57 -0
  114. package/src/lib/realtime.js +43 -0
  115. package/src/lib/reducers/apps.js +175 -0
  116. package/src/lib/reducers/apps.spec.js +59 -0
  117. package/src/lib/reducers/content.js +50 -0
  118. package/src/lib/reducers/context.js +83 -0
  119. package/src/lib/reducers/index.js +73 -0
  120. package/src/lib/reducers/locale.js +22 -0
  121. package/src/lib/reducers/settings.js +111 -0
  122. package/src/lib/reducers/theme.js +48 -0
  123. package/src/lib/reducers/unserializable.js +26 -0
  124. package/src/lib/stack-client.js +401 -0
  125. package/src/lib/stack.js +79 -0
  126. package/src/lib/store/index.js +54 -0
  127. package/src/locales/de.json +57 -0
  128. package/src/locales/en.json +57 -0
  129. package/src/locales/es.json +57 -0
  130. package/src/locales/fr.json +57 -0
  131. package/src/locales/it.json +57 -0
  132. package/src/locales/ja.json +57 -0
  133. package/src/locales/nl_NL.json +57 -0
  134. package/src/locales/pl.json +57 -0
  135. package/src/locales/ru.json +57 -0
  136. package/src/locales/sq.json +57 -0
  137. package/src/locales/zh_CN.json +57 -0
  138. package/src/proptypes/index.js +10 -0
  139. package/src/queries/index.js +16 -0
  140. package/src/styles/apps.css +248 -0
  141. package/src/styles/banner.css +64 -0
  142. package/src/styles/bar.css +106 -0
  143. package/src/styles/base.css +41 -0
  144. package/src/styles/claudy.css +99 -0
  145. package/src/styles/drawer.css +126 -0
  146. package/src/styles/index.styl +33 -0
  147. package/src/styles/indicators.css +58 -0
  148. package/src/styles/nav.css +81 -0
  149. package/src/styles/navigation_item.css +39 -0
  150. package/src/styles/searchbar.css +158 -0
  151. package/src/styles/settings.css +44 -0
  152. package/src/styles/storage.css +22 -0
  153. package/src/styles/supportModal.css +20 -0
  154. package/src/styles/theme.styl +25 -0
  155. package/test/__mocks__/fileMock.js +3 -0
  156. package/test/__snapshots__/index.spec.js.snap +41 -0
  157. package/test/components/AppItem.spec.jsx +113 -0
  158. package/test/components/AppsContent.spec.jsx +116 -0
  159. package/test/components/Settings/helper.spec.js +23 -0
  160. package/test/components/__snapshots__/AppsContent.spec.jsx.snap +90 -0
  161. package/test/index.spec.js +24 -0
  162. package/test/jestLib/I18n.js +15 -0
  163. package/test/jestLib/setup.js +14 -0
  164. package/test/lib/__snapshots__/api.spec.jsx.snap +67 -0
  165. package/test/lib/__snapshots__/stack.spec.js.snap +3 -0
  166. package/test/lib/api.spec.jsx +142 -0
  167. package/test/lib/mockStackClient.js +7 -0
  168. package/test/lib/stack-client/stack-client.appiconprops.spec.js +65 -0
  169. package/test/lib/stack-client/stack-client.compare.spec.js +20 -0
  170. package/test/lib/stack-client/stack-client.cozyfetchjson.spec.js +46 -0
  171. package/test/lib/stack-client/stack-client.cozyurl.spec.js +29 -0
  172. package/test/lib/stack-client/stack-client.getapp.spec.js +72 -0
  173. package/test/lib/stack-client/stack-client.getapps.spec.js +72 -0
  174. package/test/lib/stack-client/stack-client.getcontext.spec.js +96 -0
  175. package/test/lib/stack-client/stack-client.getstoragedata.spec.js +85 -0
  176. package/test/lib/stack-client/stack-client.init.spec.js +56 -0
  177. package/test/lib/stack-client/stack-client.intents.spec.js +27 -0
  178. package/test/lib/stack-client/stack-client.logout.spec.js +40 -0
  179. package/test/lib/stack.spec.js +60 -0
  180. package/test/store/__snapshots__/index.spec.js.snap +14 -0
  181. package/test/store/index.spec.js +41 -0
package/docs/dev.md ADDED
@@ -0,0 +1,20 @@
1
+ ## How to develop on cozy-bar
2
+
3
+ In the `cozy-bar` directory:
4
+
5
+ ```bash
6
+ $ yarn link
7
+ $ yarn watch
8
+ ```
9
+
10
+ In the app directory:
11
+
12
+ ```bash
13
+ $ yarn link cozy-bar
14
+ ```
15
+
16
+ ## Run tests
17
+
18
+ ```
19
+ yarn test
20
+ ```
@@ -0,0 +1,3 @@
1
+ build-bar: yarn watch:mobile
2
+ serve-bar: cd dist; python3 -m http.server 8000
3
+ serve-example: yarn parcel examples/index.html --port 1234
Binary file
@@ -0,0 +1,7 @@
1
+ <!doctype html>
2
+ <div role='application' id='app'></div>
3
+ <!-- First thing is to configure minilog so that it is bound to window -->
4
+ <script src='./logs.js'></script>
5
+ <!-- Serves the bar from a server so that it is not processed by parcel -->
6
+ <script src='http://localhost:8000/cozy-bar.mobile.js'></script>
7
+ <script src='./index.jsx'></script>
@@ -0,0 +1,122 @@
1
+ /* global cozy */
2
+
3
+ import React from 'react'
4
+ import ReactDOM from 'react-dom'
5
+ import { Layout, Main } from 'cozy-ui/transpiled/react/Layout'
6
+ import CozyClient, { CozyProvider, withClient } from 'cozy-client'
7
+ import { Route, hashHistory } from 'react-router'
8
+ import { MobileRouter } from 'cozy-authentication'
9
+ import 'cozy-ui/transpiled/react/stylesheet.css'
10
+ import appIcon from './icon.png'
11
+
12
+ const minilog = window.minilog
13
+ minilog.enable()
14
+ minilog.suggest.allow('cozy-realtime', 'debug')
15
+
16
+ // TODO ui: AppLinker should not fail so loudly without lampa.startapp plugin
17
+ window.startApp = {
18
+ set: function() {
19
+ return this
20
+ },
21
+ check: () => Promise.resolve(false),
22
+ start: resolve => resolve()
23
+ }
24
+
25
+ const isInitializedWithCozyClient = () => {
26
+ const v = localStorage.getItem('init-without-cozy-client')
27
+ return v === 'true' || v === null
28
+ }
29
+
30
+ const toggleCozyClientInitialization = () => {
31
+ const v = isInitializedWithCozyClient()
32
+ localStorage.setItem('init-without-cozy-client', v ? 'false' : 'true')
33
+ window.location.reload()
34
+ }
35
+
36
+ const Index = withClient(({ client }) => {
37
+ return (
38
+ <Layout>
39
+ <Main>
40
+ <div className="u-m-1">
41
+ Initialized with CozyClient:{' '}
42
+ {isInitializedWithCozyClient() ? 'yes' : 'no'}
43
+ <button onClick={toggleCozyClientInitialization}>toggle</button>
44
+ <br />
45
+ You are logged in on {client.stackClient.uri} !<br />
46
+ Client options: <pre>{JSON.stringify(client.options, null, 2)}</pre>
47
+ </div>
48
+ </Main>
49
+ </Layout>
50
+ )
51
+ })
52
+
53
+ const appInfo = {
54
+ name: 'Example bar',
55
+ slug: 'example-bar',
56
+ softwareID: 'io.cozy.example',
57
+ redirectURI: 'http://localhost:1234/auth',
58
+ protocol: 'cozyexample://',
59
+ universalLinkDomain: 'https://links.cozyexample.com'
60
+ }
61
+
62
+ const client = new CozyClient({
63
+ scope: ['io.cozy.apps', 'io.cozy.konnectors'],
64
+ // TODO client: All the oauth information could come from the manifest
65
+ oauth: {
66
+ clientName: appInfo.name,
67
+ softwareID: appInfo.softwareID,
68
+ redirectURI: appInfo.redirectURI
69
+ }
70
+ })
71
+
72
+ // TODO bar: should only need a correctly configured client
73
+ client.on('login', () => {
74
+ const oldOptions = {
75
+ token: client.stackClient.token.accessToken,
76
+ cozyURL: client.stackClient.uri
77
+ }
78
+ const newOptions = {
79
+ cozyClient: client
80
+ }
81
+ cozy.bar.init({
82
+ appNamePrefix: 'Cozy',
83
+ appName: appInfo.name,
84
+ appEditor: appInfo.editor,
85
+ appSlug: appInfo.slug,
86
+ iconPath: appIcon,
87
+ lang: 'en',
88
+ replaceTitleOnMobile: true,
89
+ ...(isInitializedWithCozyClient() ? newOptions : oldOptions),
90
+ // This should be done automatically
91
+ onLogOut: async () => {
92
+ await client.logout()
93
+ }
94
+ })
95
+ })
96
+
97
+ // TODO bar: This should be done automatically
98
+ client.on('logout', () => {
99
+ if (document.getElementById('coz-bar')) {
100
+ document.getElementById('coz-bar').remove()
101
+ document.body.setAttribute('style', '')
102
+ }
103
+ })
104
+
105
+ const App = function() {
106
+ return (
107
+ <CozyProvider client={client}>
108
+ <MobileRouter
109
+ history={hashHistory}
110
+ appTitle={appInfo.name}
111
+ appSlug={appInfo.slug}
112
+ appIcon={appIcon}
113
+ protocol={appInfo.protocol}
114
+ universalLinkDomain={appInfo.universalLinkDomain}
115
+ >
116
+ <Route path="/" component={Index} />
117
+ </MobileRouter>
118
+ </CozyProvider>
119
+ )
120
+ }
121
+
122
+ ReactDOM.render(<App />, document.querySelector('#app'))
@@ -0,0 +1,3 @@
1
+ import minilog from 'minilog'
2
+
3
+ window.minilog = minilog
package/package.json ADDED
@@ -0,0 +1,163 @@
1
+ {
2
+ "name": "cozy-bar",
3
+ "version": "1.17.1",
4
+ "description": "cozy-bar.js library, a small lib provided by cozy-stack to inject the Cozy-bar component into each app",
5
+ "main": "dist/cozy-bar.js",
6
+ "author": "Cozy Cloud <contact@cozycloud.cc> (https://cozy.io/)",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/cozy/cozy-bar.git"
10
+ },
11
+ "homepage": "https://github.com/cozy/cozy-bar",
12
+ "bugs": {
13
+ "url": "https://github.com/cozy/cozy-bar/issues"
14
+ },
15
+ "license": "MIT",
16
+ "scripts": {
17
+ "prepublishOnly": "yarn build",
18
+ "build": "npm-run-all --parallel 'build:*' 'build:*:*'",
19
+ "webpack": "webpack --config ./config/webpack.js",
20
+ "build:browser": "yarn run webpack",
21
+ "build:mobile": "yarn run webpack --env.target=mobile",
22
+ "build:browser:min": "yarn run webpack --env.production",
23
+ "build:mobile:min": "yarn run webpack --env.production --env.target=mobile",
24
+ "watch": "yarn run webpack --watch --display-chunks",
25
+ "watch:mobile": "yarn run watch --env.target=mobile",
26
+ "clean": "rm -rf ./dist/*",
27
+ "lint": "eslint '{config,src,examples,test}/**/*.{js,jsx}'",
28
+ "prebuild": "npm-run-all lint clean",
29
+ "prewatch": "npm-run-all clean",
30
+ "tx": "tx pull --all || true",
31
+ "postbuild": "yarn shasum",
32
+ "shasum": "shasum -a 256 dist/cozy-bar.min.js && shasum -a 256 dist/cozy-bar.min.css",
33
+ "test": "jest",
34
+ "posttest": "bundlesize",
35
+ "travis-deploy-once": "travis-deploy-once",
36
+ "semantic-release": "semantic-release",
37
+ "example": "env USE_REACT=true nf -j examples/Procfile start"
38
+ },
39
+ "devDependencies": {
40
+ "@babel/core": "7.6.2",
41
+ "@babel/polyfill": "^7.10.4",
42
+ "@testing-library/react": "^10.2.1",
43
+ "autoprefixer": "9.6.0",
44
+ "babel-jest": "24.9.0",
45
+ "babel-loader": "^8.1.0",
46
+ "babel-preset-cozy-app": "^1.9.0",
47
+ "bundlesize": "0.18.0",
48
+ "cozy-authentication": "1.19.1",
49
+ "cozy-intent": "^1.7.0",
50
+ "css-loader": "1.0.1",
51
+ "css-mqpacker": "7.0.0",
52
+ "cssnano-preset-advanced": "4.0.7",
53
+ "csswring": "7.0.0",
54
+ "deep-equal": "1.1.0",
55
+ "enzyme": "3.10.0",
56
+ "enzyme-adapter-react-16": "1.3",
57
+ "eslint": "4.19.1",
58
+ "eslint-config-cozy-app": "1.3.3",
59
+ "eslint-plugin-prettier": "3.1.0",
60
+ "eslint-plugin-react": "7.16.0",
61
+ "file-loader": "2.0.0",
62
+ "foreman": "3.0.1",
63
+ "identity-obj-proxy": "3.0.0",
64
+ "jest": "24.9.0",
65
+ "jest-fetch-mock": "^3.0.3",
66
+ "json-loader": "0.5.7",
67
+ "mini-css-extract-plugin": "0.8.0",
68
+ "my-react": "npm:react@16.13.1",
69
+ "my-react-dom": "npm:react-dom@16.13.1",
70
+ "npm-run-all": "4.1.5",
71
+ "parcel": "1.12.3",
72
+ "postcss": "7.0.21",
73
+ "postcss-discard-duplicates": "4.0.2",
74
+ "postcss-discard-empty": "4.0.1",
75
+ "postcss-import": "12.0.1",
76
+ "postcss-loader": "3.0.0",
77
+ "react": "16.10.1",
78
+ "react-dom": "16.10.1",
79
+ "react-router": "3.2.4",
80
+ "redux-logger": "3.0.6",
81
+ "semantic-release": "15.13.24",
82
+ "style-loader": "0.23.1",
83
+ "stylus": "0.54.7",
84
+ "stylus-loader": "3.0.2",
85
+ "svg-sprite-loader": "4.1.6",
86
+ "url-loader": "1.1.2",
87
+ "webpack": "4.39.2",
88
+ "webpack-bundle-analyzer": "3.5.0",
89
+ "webpack-cli": "3.3.9",
90
+ "webpack-merge": "4.2.2",
91
+ "yaml-jest": "1.0.5",
92
+ "yaml-loader": "0.5.0"
93
+ },
94
+ "dependencies": {
95
+ "@cozy/minilog": "^1.0.0",
96
+ "cozy-client": "^27.14.4",
97
+ "cozy-device-helper": "^1.16.1",
98
+ "cozy-interapp": "0.4.9",
99
+ "cozy-realtime": "3.2.1",
100
+ "cozy-ui": "35.22.0",
101
+ "enzyme-to-json": "3.3.5",
102
+ "hammerjs": "2.0.8",
103
+ "lerna-changelog": "0.8.2",
104
+ "localforage": "1.7.3",
105
+ "lodash.debounce": "4.0.8",
106
+ "lodash.unionwith": "4.6.0",
107
+ "piwik-react-router": "0.12.1",
108
+ "prop-types": "15.7.2",
109
+ "react-autosuggest": "9.4.3",
110
+ "react-redux": "5.1.1",
111
+ "redux": "3.7.2",
112
+ "redux-persist": "5.10.0",
113
+ "redux-thunk": "2.3.0",
114
+ "semver-compare": "^1.0.0"
115
+ },
116
+ "peerDependencies": {
117
+ "cozy-client": "*",
118
+ "cozy-intent": ">=1.7.0"
119
+ },
120
+ "bundlesize": [
121
+ {
122
+ "path": "./dist/cozy-bar.min.js",
123
+ "maxSize": "300 KB"
124
+ }
125
+ ],
126
+ "jest": {
127
+ "moduleFileExtensions": [
128
+ "js",
129
+ "jsx",
130
+ "json",
131
+ "styl",
132
+ "yaml"
133
+ ],
134
+ "setupFiles": [
135
+ "<rootDir>/test/jestLib/setup.js"
136
+ ],
137
+ "moduleDirectories": [
138
+ "node_modules",
139
+ "src"
140
+ ],
141
+ "transform": {
142
+ "\\.yaml$": "yaml-jest",
143
+ "\\.(js|jsx)$": "babel-jest"
144
+ },
145
+ "moduleNameMapper": {
146
+ "^config/(.*)": "<rootDir>/src/config/$1",
147
+ "^react$": "<rootDir>/config/aliases/globalReact",
148
+ "^(react-dom|react-dom/(.*))$": "<rootDir>/config/aliases/globalReactDOM",
149
+ "\\.(png|gif|jpe?g|svg)$": "<rootDir>/test/__mocks__/fileMock.js",
150
+ "\\.styl$": "identity-obj-proxy"
151
+ },
152
+ "browser": true,
153
+ "transformIgnorePatterns": [
154
+ "node_modules/(?!cozy-ui)"
155
+ ],
156
+ "globals": {
157
+ "__ALLOW_HTTP__": false,
158
+ "__SENTRY_TOKEN__": "token",
159
+ "__DEVELOPMENT__": false,
160
+ "__VERSION__": "4.5.0"
161
+ }
162
+ }
163
+ }
@@ -0,0 +1,23 @@
1
+ const path = require('path')
2
+
3
+ module.exports = ({ options }) => {
4
+ let plugins = [
5
+ require('postcss-import')({
6
+ path: [path.resolve(__dirname, 'src/styles/')]
7
+ }),
8
+ require('autoprefixer')(['last 2 versions', 'not dead', 'not ie <= 11'])
9
+ ]
10
+
11
+ if (options.env === 'production') {
12
+ plugins = plugins.concat([
13
+ require('postcss-discard-empty'),
14
+ require('postcss-discard-duplicates'),
15
+ require('css-mqpacker'),
16
+ require('csswring')({
17
+ removeAllComments: true
18
+ })
19
+ ])
20
+ }
21
+
22
+ return { plugins }
23
+ }
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ @font-face {
2
+ font-family: Lato;
3
+ font-style: normal;
4
+ font-weight: normal;
5
+ src: url('fonts/Lato-Regular.woff2') format('woff2');
6
+ }
7
+
8
+ @font-face {
9
+ font-family: Lato;
10
+ font-style: normal;
11
+ font-weight: bold;
12
+ src: url('fonts/Lato-Bold.woff2') format('woff2');
13
+ }
Binary file
@@ -0,0 +1,63 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <title>Cozy Bar test</title>
4
+ <link rel="icon" href="./icon-type-folder-32.png" sizes="32x32">
5
+ <link rel="stylesheet" href="./fonts.css">
6
+ <script src="./cozy-bar.standalone.js" defer></script>
7
+ <script>
8
+ document.addEventListener('DOMContentLoaded', ()=> {
9
+ const btnNode = document.querySelector('button')
10
+ btnNode.addEventListener('click', ()=> {
11
+ cozy.bar.init({
12
+ appName: 'Test App'
13
+ })
14
+ })
15
+ })
16
+ </script>
17
+ <style>
18
+ body {
19
+ margin: 0;
20
+ padding: 0;
21
+ }
22
+
23
+ [role=application] {
24
+ box-sizing: border-box;
25
+ display: flex;
26
+ flex-direction: column;
27
+ justify-content: center;
28
+ width: 100vw;
29
+ height: 100vh;
30
+ padding: 0 1em;
31
+ background-color: #fcfcfc
32
+ }
33
+
34
+ [role=application] p:first-child {
35
+ margin-top: auto;
36
+ }
37
+
38
+ [role=application] p:last-child {
39
+ margin-bottom: auto;
40
+ }
41
+
42
+ [role=application] button {
43
+ margin: 1em 0;
44
+ }
45
+
46
+ kbd,
47
+ code {
48
+ padding: .3em;
49
+ border: 1px solid #999;
50
+ border-radius: 3px;
51
+ background-color: #eee;
52
+ }
53
+ </style>
54
+ <div role="application">
55
+ <p>
56
+ This is a fake app used to test the CozyBar injection
57
+ </p>
58
+ <p>
59
+ <button>Click Me to inject it :]</button>
60
+ <br />
61
+ <small>or press <kbd>F12</kbd> to open the devtools, go to your console, and type <code>cozy.bar.init({appName: 'Test App'})</code></small>
62
+ </p>
63
+ </div>
package/renovate.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": [
3
+ "cozy"
4
+ ]
5
+ }
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 32 32">
2
+ <g fill="none" fill-rule="evenodd">
3
+ <path fill="#5D6165" d="M18.9066431,17.1462727 C17.9763901,17.8877605 16.8651586,18.3 15.7727858,18.3 C14.6537785,18.3 13.5144376,17.8667465 12.5706392,17.0900009 C12.6440913,16.8889099 12.6928189,16.6740783 12.7137146,16.4522347 C12.7396102,16.1773092 12.5377315,15.9334456 12.262806,15.90755 C11.9878805,15.8816545 11.7440168,16.0835332 11.7181213,16.3584587 C11.6794479,16.7690433 11.488749,17.1218365 11.232038,17.2963029 C11.0036483,17.4515214 10.9443314,17.7624972 11.0995499,17.9908868 C11.2547684,18.2192765 11.5657443,18.2785934 11.7941339,18.1233749 C11.8762072,18.0675961 11.9537871,18.0048462 12.0264893,17.9359576 C13.1270193,18.8099853 14.4519321,19.3 15.7727858,19.3 C17.0747477,19.3 18.380232,18.8244958 19.4713113,17.9744579 C19.5317222,18.0283807 19.5952893,18.0781673 19.661808,18.1233749 C19.8901977,18.2785934 20.2011735,18.2192765 20.356392,17.9908868 C20.5116105,17.7624972 20.4522936,17.4515214 20.223904,17.2963029 C19.9671929,17.1218365 19.7764941,16.7690433 19.7378206,16.3584587 C19.7119251,16.0835332 19.4680615,15.8816545 19.1931359,15.90755 C18.9182104,15.9334456 18.7163318,16.1773092 18.7422273,16.4522347 C18.7650849,16.694907 18.821246,16.9291888 18.9066431,17.1462727 Z M8.47324304,26.5052632 C3.80002801,26.5052632 0,22.6800357 0,17.9778048 C0,15.73543 0.857823034,13.6172385 2.41662832,12.0144392 C3.78210335,10.6117485 5.55088323,9.73860575 7.46434073,9.51147279 C7.69031948,7.58566862 8.55710485,5.80528099 9.95202753,4.43154495 C11.5447616,2.86220435 13.6489887,2 15.8774081,2 C18.1051873,2 20.2100546,2.86220435 21.8027887,4.43090151 C23.1919499,5.79884662 24.0561746,7.56958272 24.2879149,9.48509196 C28.6045572,9.87437074 32,13.5348787 32,17.9784482 C32,22.6800357 28.1974113,26.5052632 23.5261168,26.5052632 L8.47324304,26.5052632 Z"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1 @@
1
+ <svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path fill="#5D6165" d="M164 261a4 4 0 1 1 8 0 4 4 0 1 1 0 8h-8a4 4 0 1 1 0-8zm1.146 3.854c.155.154.423.368.793.58.618.353 1.31.566 2.061.566.75 0 1.443-.213 2.06-.566.371-.212.64-.426.794-.58a.5.5 0 1 0-.708-.708 2.934 2.934 0 0 1-.582.42A3.136 3.136 0 0 1 168 265a3.136 3.136 0 0 1-1.564-.434 2.934 2.934 0 0 1-.582-.42.5.5 0 1 0-.708.708z" id="a"/></defs><g fill="none" fill-rule="evenodd" transform="translate(-160 -255)"><use fill="#000" xlink:href="#a"/></g></svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <g fill="#95999D" fill-rule="evenodd" transform="translate(-288 -32)">
3
+ <path d="M289,43.0086296 C289,43.5586732 289.396407,44.2310899 289.872401,44.5030868 L295.127599,47.5060566 C295.609413,47.7813789 296,47.557873 296,47.0086296 L296,41.5005138 C296,40.9504702 295.603593,40.2780535 295.127599,40.0060566 L289.872401,37.0030868 C289.390587,36.7277645 289,36.9512704 289,37.5005138 L289,43.0086296 Z M304,43.0086296 C304,43.5586732 303.603593,44.2310899 303.127599,44.5030868 L297.872401,47.5060566 C297.390587,47.7813789 297,47.557873 297,47.0086296 L297,41.5005138 C297,40.9504702 297.396407,40.2780535 297.872401,40.0060566 L303.127599,37.0030868 C303.609413,36.7277645 304,36.9512704 304,37.5005138 L304,43.0086296 Z M297.349761,38.9816416 C296.880451,39.2704479 296.112861,39.2663324 295.650239,38.9816416 L290.849761,36.0275018 C290.380451,35.7386955 290.387139,35.2961123 290.876619,35.0325461 L295.623381,32.4765973 C296.107524,32.2159048 296.887139,32.2130311 297.376619,32.4765973 L302.123381,35.0325461 C302.607524,35.2932387 302.612861,35.742811 302.150239,36.0275018 L297.349761,38.9816416 Z"/>
4
+ <path d="M289,43.0086296 C289,43.5586732 289.396407,44.2310899 289.872401,44.5030868 L295.127599,47.5060566 C295.609413,47.7813789 296,47.557873 296,47.0086296 L296,41.5005138 C296,40.9504702 295.603593,40.2780535 295.127599,40.0060566 L289.872401,37.0030868 C289.390587,36.7277645 289,36.9512704 289,37.5005138 L289,43.0086296 Z M304,43.0086296 C304,43.5586732 303.603593,44.2310899 303.127599,44.5030868 L297.872401,47.5060566 C297.390587,47.7813789 297,47.557873 297,47.0086296 L297,41.5005138 C297,40.9504702 297.396407,40.2780535 297.872401,40.0060566 L303.127599,37.0030868 C303.609413,36.7277645 304,36.9512704 304,37.5005138 L304,43.0086296 Z M297.349761,38.9816416 C296.880451,39.2704479 296.112861,39.2663324 295.650239,38.9816416 L290.849761,36.0275018 C290.380451,35.7386955 290.387139,35.2961123 290.876619,35.0325461 L295.623381,32.4765973 C296.107524,32.2159048 296.887139,32.2130311 297.376619,32.4765973 L302.123381,35.0325461 C302.607524,35.2932387 302.612861,35.742811 302.150239,36.0275018 L297.349761,38.9816416 Z"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <path fill="#5D6165" fill-rule="evenodd" d="M327,99.4142136 L325.707107,100.707107 C325.316582,101.097631 324.683418,101.097631 324.292893,100.707107 C323.902369,100.316582 323.902369,99.6834175 324.292893,99.2928932 L327.292893,96.2928932 C327.683418,95.9023689 328.316582,95.9023689 328.707107,96.2928932 L331.707107,99.2928932 C332.097631,99.6834175 332.097631,100.316582 331.707107,100.707107 C331.316582,101.097631 330.683418,101.097631 330.292893,100.707107 L329,99.4142136 L329,107 C329,107.552285 328.552285,108 328,108 C327.447715,108 327,107.552285 327,107 L327,99.4142136 Z M321,112 L335,112 C335.552285,112 336,111.552285 336,111 C336,110.447715 335.552285,110 335,110 L321,110 C320.447715,110 320,110.447715 320,111 C320,111.552285 320.447715,112 321,112 Z" transform="rotate(90 216 -104)"/>
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <g fill="none" fill-rule="evenodd" transform="translate(-320 -32)">
3
+ <path fill="#95999D" d="M330.472213,42 L331.5,42 L334.794088,45.2940879 C335.186127,45.6861267 335.183879,46.3161215 334.793923,46.706077 L334.706077,46.793923 C334.318111,47.1818886 333.683952,47.1839524 333.294088,46.7940879 L330,43.5 L330,42.472213 C328.938487,43.4222929 327.536709,44 326,44 C322.686292,44 320,41.3137085 320,38 C320,34.6862915 322.686292,32 326,32 C329.313708,32 332,34.6862915 332,38 C332,39.5367089 331.422293,40.938487 330.472213,42 Z M326,42 C328.209139,42 330,40.209139 330,38 C330,35.790861 328.209139,34 326,34 C323.790861,34 322,35.790861 322,38 C322,40.209139 323.790861,42 326,42 Z"/>
4
+ <path fill="#95999D" d="M330.472213,42 L331.5,42 L334.794088,45.2940879 C335.186127,45.6861267 335.183879,46.3161215 334.793923,46.706077 L334.706077,46.793923 C334.318111,47.1818886 333.683952,47.1839524 333.294088,46.7940879 L330,43.5 L330,42.472213 C328.938487,43.4222929 327.536709,44 326,44 C322.686292,44 320,41.3137085 320,38 C320,34.6862915 322.686292,32 326,32 C329.313708,32 332,34.6862915 332,38 C332,39.5367089 331.422293,40.938487 330.472213,42 Z M326,42 C328.209139,42 330,40.209139 330,38 C330,35.790861 328.209139,34 326,34 C323.790861,34 322,35.790861 322,38 C322,40.209139 323.790861,42 326,42 Z"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <path fill="#5D6165" fill-rule="evenodd" d="M136,73 C138.209139,73 140,70.9852814 140,68.5 C140,66.0147186 138.209139,64 136,64 C133.790861,64 132,66.0147186 132,68.5 C132,70.9852814 133.790861,73 136,73 Z M128,78 C128,77 130,74 132,74 C134,74 133,75 136,75 C139,75 138,74 140,74 C142,74 144,77 144,78 C144,79 144,80 143,80 L129,80 C128,80 128,79 128,78 Z" transform="translate(-128 -64)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <path fill="#5D6165" fill-rule="evenodd" d="M162,65.0008717 C162,64.4481055 162.455761,64 163.002473,64 L172.997527,64 C173.551177,64 174,64.4446309 174,65.0008717 L174,78.9991283 C174,79.5518945 173.544239,80 172.997527,80 L163.002473,80 C162.448823,80 162,79.5553691 162,78.9991283 L162,65.0008717 Z M164,66 L172,66 L172,76 L164,76 L164,66 Z M168,79 C168.552285,79 169,78.5522847 169,78 C169,77.4477153 168.552285,77 168,77 C167.447715,77 167,77.4477153 167,78 C167,78.5522847 167.447715,79 168,79 Z" transform="translate(-160 -64)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <path fill="#5D6165" fill-rule="evenodd" d="M296,80 C300.418278,80 304,76.418278 304,72 C304,67.581722 300.418278,64 296,64 C291.581722,64 288,67.581722 288,72 C288,76.418278 291.581722,80 296,80 Z M297,72.802113 C298.121809,72.3545568 299,71.2089946 299,70 C299,68.4477153 297.552285,67 296,67 C294.447715,67 293,68.4477153 293,70 L295,70 C295,69.5522847 295.552285,69 296,69 C296.447715,69 297,69.5522847 297,70 C297,70.4477153 296.447715,71 296,71 C295.447715,71 295,71.4477153 295,72 L295,74 L297,74 L297,72.802113 Z M295,75 L297,75 L297,77 L295,77 L295,75 Z" transform="translate(-288 -64)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <path fill="#5D6165" fill-rule="evenodd" d="M225,68 L239,68 L239,78.0044225 C239,78.5542648 238.550051,79 237.993155,79 L226.006845,79 C225.45078,79 225,78.555163 225,78.0044225 L225,68 Z M224,66 C224,65.4477153 224.444631,65 225.000872,65 L238.999128,65 C239.551894,65 240,65.4438648 240,66 L240,67 L224,67 L224,66 Z M229,70 L235,70 L235,72 L229,72 L229,70 Z" transform="translate(-224 -64)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
2
+ <path fill="#95999D" d="M35.5708019,45.0000059 L45.6757246,54.2628518 C46.0828436,54.6360442 46.1103465,55.2686115 45.7371541,55.6757305 C45.3639617,56.0828495 44.7313944,56.1103524 44.3242754,55.73716 L32.3270117,44.7396683 C32.1261015,44.5567619 32,44.2931102 32,44.0000059 C32,43.7069016 32.1261015,43.4432499 32.3270117,43.2603435 L44.3242754,32.2628518 C44.7313944,31.8896593 45.3639617,31.9171623 45.7371541,32.3242813 C46.1103465,32.7314003 46.0828436,33.3639676 45.6757246,33.73716 L35.5708019,43.0000059 L55,43.0000059 C55.5522847,43.0000059 56,43.4477211 56,44.0000059 C56,44.5522906 55.5522847,45.0000059 55,45.0000059 L35.5708019,45.0000059 Z" transform="translate(-32 -32)"/>
3
+ </svg>
@@ -0,0 +1 @@
1
+ <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.st0{fill:none}</style><path class="st0" d="M22 12h-7c-.6 0-1 .4-1 1s.4 1 1 1h7c.6 0 1-.4 1-1s-.4-1-1-1zM25 7H15c-.5 0-1 .4-1 1s.4 1 1 1h10c.5 0 1-.4 1-1s-.4-1-1-1z"/><path fill="#FFFFFF" d="M31 1H9c-.6 0-1 .5-1 1v15c2.2 0 4.1 1.2 5.2 3H18v1.9c0 .6.4.7.8.4l3.3-2.3H31c.6 0 1-.5 1-1V2c0-.6-.4-1-1-1zm-9 13h-7c-.6 0-1-.4-1-1s.4-1 1-1h7c.6 0 1 .4 1 1s-.4 1-1 1zm3-5H15c-.6 0-1-.4-1-1s.5-1 1-1h10c.6 0 1 .4 1 1s-.5 1-1 1z"/><path fill="#FFFFFF" id="path-3_1_" d="M10.4 26.7c0 .1-.7 1.3-2.4 1.3-1.8 0-2.4-1.2-2.4-1.3-.1-.2 0-.5.2-.7.2-.1.5 0 .7.2 0 0 .4.7 1.6.7 1.1 0 1.5-.7 1.6-.7.1-.2.4-.3.7-.2.1.2.2.5 0 .7M12 23c0-2.2-1.8-4-4-4s-4 1.8-4 4c-2.2 0-4 1.8-4 4s1.8 4 4 4h8c2.2 0 4-1.8 4-4s-1.8-4-4-4"/></svg>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="44px" height="48px" viewBox="0 0 44 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
4
+ <title>cozy data connect</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="3402-app-Drive---menu-default" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-186.000000, -68.000000)">
8
+ <g id="nav-apps">
9
+ <g id="cozy-collect" transform="translate(168.000000, 60.000000)">
10
+ <g id="cozy-data-connect" transform="translate(18.000000, 8.000000)">
11
+ <path d="M21.75,13.0364061 C26.6091006,13.0364061 30.548291,17.0538035 30.548291,22.0091966 C30.548291,26.9645896 26.6091006,30.981987 21.75,30.981987 C16.8908994,30.981987 12.951709,26.9645896 12.951709,22.0091966 C12.951709,17.0538035 16.8908994,13.0364061 21.75,13.0364061 Z M21.75,44.2087512 C16.4803125,44.2087512 11.703818,42.0590354 8.25,38.5910424 C11.1309515,35.7926971 16.1005196,33.9440784 21.75,33.9440784 C27.3994804,33.9440784 32.3690485,35.7926971 35.25,38.5910424 C31.796182,42.0590354 27.0196875,44.2087512 21.75,44.2087512 Z" id="Shape" fill="#855CEA" fill-rule="nonzero"></path>
12
+ <g id="Group">
13
+ <circle id="Oval" stroke="#C2ADF4" stroke-width="2" cx="21.75" cy="24" r="20.75"></circle>
14
+ <circle id="Oval-2" fill="#C2ADF4" cx="21.75" cy="4.5" r="4.5"></circle>
15
+ <circle id="Oval-2-Copy" fill="#C2ADF4" cx="21.75" cy="43.5" r="4.5"></circle>
16
+ <circle id="Oval-2-Copy-2" fill="#C2ADF4" cx="39" cy="35.25" r="4.5"></circle>
17
+ <circle id="Oval-2-Copy-4" fill="#C2ADF4" cx="4.5" cy="35.25" r="4.5"></circle>
18
+ <circle id="Oval-2-Copy-3" fill="#C2ADF4" cx="39" cy="13.5" r="4.5"></circle>
19
+ <circle id="Oval-2-Copy-5" fill="#C2ADF4" cx="4.5" cy="13.5" r="4.5"></circle>
20
+ </g>
21
+ </g>
22
+ </g>
23
+ </g>
24
+ </g>
25
+ </svg>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="48px" height="42px" viewBox="0 0 48 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
4
+ <title>folder 02</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="3402-app-Drive---menu-default" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-104.000000, -175.000000)">
8
+ <g id="nav-apps">
9
+ <g id="cozy-drive" transform="translate(88.000000, 164.000000)">
10
+ <g id="folder-02" transform="translate(16.000000, 11.000000)">
11
+ <rect id="Rectangle-6" fill="#B2D3FF" x="0" y="3" width="48" height="39" rx="4"></rect>
12
+ <path d="M0,1.9973917 C0,0.894262725 0.90234375,0 1.99456145,0 L19.0054385,0 C20.1070044,0 21.6362228,0.636222839 22.4121541,1.41215408 L22.5878459,1.58784592 C23.3677571,2.36775708 24.8970262,3 26.0049466,3 L45.0089096,3 C46.6608432,3 48,4.34205759 48,6 L48,6 L26.0049466,6 C24.8976452,6 23.3637772,6.63622284 22.5878459,7.41215408 L22.4121541,7.58784592 C21.6322429,8.36775708 20.0976563,9 19.0054385,9 L1.99456145,9 C0.892995579,9 0,8.10414219 0,7.0026083 L0,1.9973917 Z" id="Rectangle-7" fill="#197BFF"></path>
13
+ </g>
14
+ </g>
15
+ </g>
16
+ </g>
17
+ </svg>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="64px" height="51px" viewBox="0 0 64 51" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
4
+ <title>Group 3</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="3402-app-Drive---menu-default" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-264.000000, -172.000000)">
8
+ <g id="nav-apps">
9
+ <g id="cozy-store" transform="translate(248.000000, 164.000000)">
10
+ <g id="Group-3" transform="translate(16.000000, 8.000000)">
11
+ <g id="store" opacity="0.5" fill="#F52D2D">
12
+ <path d="M3,42.5066023 L3,25.5 L9,25.5 L9,37.5 L24,37.5 L24,25.5 L45,25.5 L45,42.5066023 C45,43.0550537 44.5528686,43.5 44.0013041,43.5 L41.4986959,43.5 C40.9479289,43.5 40.5,43.0490115 40.5,42.4926891 L40.5,27 L30,27 L30,42.4926891 C30,43.0586649 29.5554342,43.5 29.0070346,43.5 L3.99296544,43.5 C3.44610862,43.5 3,43.0552407 3,42.5066023 Z M3,0.997544646 C3,0.446615951 3.44326177,0 3.99678245,0 L44.0032175,0 C44.5537253,0 45,0.446311399 45,0.997544646 L45,9 L3,9 L3,0.997544646 Z" id="Path-15" fill-opacity="0.2"></path>
13
+ <path d="M0,25.0020869 C0,26.1055038 0.894938439,27 2.00138927,27 L45.9986107,27 C47.1039475,27 48,26.1017394 48,25.0020869 L48,21.990778 C48,21.4435864 47.9035824,20.5661208 47.7842474,20.0291133 L45,7.5 L3,7.5 L0.215752602,20.0291133 C0.09659573,20.5653192 0,21.4509752 0,21.990778 L0,25.0020869 Z" id="Path"></path>
14
+ </g>
15
+ <g id="a-venir" transform="translate(16.000000, 35.000000)">
16
+ <rect id="Rectangle-8" fill="#297EF1" x="0" y="0" width="48" height="16" rx="2"></rect>
17
+ <text id="À-VENIR" font-family="Lato-Bold, Lato" font-size="10" font-weight="bold" fill="#FFFFFF">
18
+ <tspan x="3.9475" y="12">À VENIR</tspan>
19
+ </text>
20
+ </g>
21
+ </g>
22
+ </g>
23
+ </g>
24
+ </g>
25
+ </svg>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="48px" height="39px" viewBox="0 0 48 39" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
4
+ <title>images 02</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="3402-app-Drive---menu-default" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-184.000000, -177.000000)">
8
+ <g id="nav-apps">
9
+ <g id="cozy-photos" transform="translate(168.000000, 164.000000)">
10
+ <g id="images-02" transform="translate(16.000000, 13.000000)">
11
+ <rect id="Rectangle-5" fill="#1EC737" x="0" y="0" width="48" height="39" rx="4"></rect>
12
+ <path d="M0,29.9768414 L9.08392328,20.8929181 C9.86600086,20.1108405 11.1307648,20.1076062 11.9143185,20.8911599 L16.5,25.4768414 L28.5807792,13.3960622 C29.3645932,12.6122482 30.6300752,12.6069166 31.4124298,13.3892712 L48,29.9768414 L48,34.9768981 C48,37.1860057 46.2059475,38.9768414 43.9901068,38.9768414 L4.00989318,38.9768414 C1.79529033,38.9768414 0,37.1771879 0,34.9768981 L0,29.9768414 Z" id="Path-8" fill="#23A636"></path>
13
+ <circle id="Oval-1" fill="#FFFFFF" cx="12" cy="10.5" r="4.5"></circle>
14
+ <path d="M16.8,24.3 L8.4,32.7 L16.8,24.3 Z" id="Path-3" stroke="#1EC737" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
15
+ </g>
16
+ </g>
17
+ </g>
18
+ </g>
19
+ </svg>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="48px" height="16px" viewBox="0 0 48 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
4
+ <title>a venir</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="3402-app-Drive---menu-default" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-280.000000, -207.000000)">
8
+ <g id="nav-apps">
9
+ <g id="cozy-store" transform="translate(248.000000, 164.000000)">
10
+ <g id="Group-3" transform="translate(16.000000, 8.000000)">
11
+ <g id="a-venir" transform="translate(16.000000, 35.000000)">
12
+ <rect id="Rectangle-8" fill="#297EF1" x="0" y="0" width="48" height="16" rx="2"></rect>
13
+ <text id="À-VENIR" font-family="Lato-Bold, Lato" font-size="10" font-weight="bold" fill="#FFFFFF">
14
+ <tspan x="3.9475" y="12">À VENIR</tspan>
15
+ </text>
16
+ </g>
17
+ </g>
18
+ </g>
19
+ </g>
20
+ </g>
21
+ </svg>