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
@@ -0,0 +1,248 @@
1
+ [role=banner] .coz-nav-apps-btns {
2
+ display: flex;
3
+ align-items: center;
4
+ font-size: 1rem;
5
+ text-decoration: none;
6
+ border: none;
7
+ background-color: transparent;
8
+ line-height: 1rem;
9
+ }
10
+
11
+ [role=banner] .coz-nav-apps-btns-main {
12
+ display: flex;
13
+ justify-content: center;
14
+ align-items: center;
15
+ height: 3rem;
16
+ margin: 0 .75rem;
17
+ padding: 0;
18
+ background-color: transparent;
19
+ border: none;
20
+ color: black;
21
+ font-size: 1rem;
22
+ }
23
+
24
+ [role=banner] .coz-nav-apps-btns-main:hover,
25
+ [role=banner] .coz-nav-apps-btns-main:focus,
26
+ [role=banner] .coz-nav-apps-btns-main:active {
27
+ cursor: pointer;
28
+ color: black;
29
+ }
30
+
31
+ [role=banner] .coz-nav-apps-btns-main[disabled]:hover,
32
+ [role=banner] .coz-nav-apps-btns-main[disabled]:focus,
33
+ [role=banner] .coz-nav-apps-btns-main[disabled]:active {
34
+ cursor: default;
35
+ }
36
+
37
+ [role=banner] .coz-nav-app-name {
38
+ margin: 0 .4rem;
39
+ font-weight: bold;
40
+ }
41
+
42
+ [role=banner] .coz-nav-apps-btns-sep {
43
+ height: 1.75rem;
44
+ background-color: #d8d8d8;
45
+ width: 1px;
46
+ }
47
+
48
+ [role=banner] .coz-nav-apps-btns-home {
49
+ height: 2rem;
50
+ margin-right: .75rem;
51
+ }
52
+
53
+ [role=banner] .coz-nav-apps-btns-home.--flagship {
54
+ background: none;
55
+ border: 0;
56
+ height: 100%;
57
+ }
58
+
59
+ [role=banner] .coz-nav-apps-btns-home-svg {
60
+ max-width: 2rem;
61
+ max-height: 2rem;
62
+ }
63
+
64
+ [role=banner] .coz-nav-apps-btns-home,
65
+ [role=banner] .coz-nav-apps-btns-home[href]:visited {
66
+ color: var(--dodgerBlue);
67
+ }
68
+
69
+ [role=banner] .coz-nav-apps-btns-home[href]:hover,
70
+ [role=banner] .coz-nav-apps-btns-home[href]:active,
71
+ [role=banner] .coz-nav-apps-btns-home[href]:focus {
72
+ color: var(--scienceBlue);
73
+ }
74
+
75
+ [role=banner] .coz-nav-apps-btns.--currentHome .coz-nav-apps-btns-main {
76
+ margin-left: 0;
77
+ }
78
+
79
+ [role=banner] .coz-nav-apps-btns.--currentHome .coz-nav-apps-btns-home {
80
+ margin-right: 0;
81
+ }
82
+
83
+ /* POP */
84
+ [role=banner] .coz-nav-pop--apps {
85
+ width: 20rem;
86
+ max-height: 20rem;
87
+ left: 3.5rem;
88
+ transform-origin: 10% 0%;
89
+ }
90
+
91
+ [role=banner] .coz-nav .--currentHome + .coz-nav-pop--apps {
92
+ left: 0;
93
+ }
94
+
95
+ /* POP CONTENT */
96
+
97
+ [role=banner] .coz-nav-pop--apps .coz-nav-pop-content {
98
+ display: flex;
99
+ flex-direction: column;
100
+ /* pop size less pop border size*/
101
+ max-height: calc(20rem - 2px);
102
+ width: 100%;
103
+ }
104
+
105
+ @media (max-height: 21rem) {
106
+ [role=banner] .coz-nav-pop--apps {
107
+ max-height: calc(100vh - 4rem)
108
+ }
109
+
110
+ [role=banner] .coz-nav-pop--apps .coz-nav-pop-content {
111
+ max-height: calc(100vh - 4rem - 2px);
112
+ }
113
+ }
114
+
115
+
116
+ [role=banner] .coz-nav-pop--apps .coz-nav-pop-content .coz-nav-group {
117
+ flex-grow: 1;
118
+ flex-shrink: 1;
119
+ overflow-y: auto;
120
+ }
121
+
122
+ [role=banner] .coz-nav-apps-item {
123
+ display: flex;
124
+ }
125
+
126
+ /* current app item */
127
+ [role=banner] .coz-nav-apps-item.--current a[role=menuitem] {
128
+ font-weight: bold;
129
+ background-color: var(--paleGrey);
130
+ border-left: 4px solid var(--dodgerBlue)
131
+ }
132
+
133
+ [role=banner] .coz-nav-apps-item [role=menuitem],
134
+ [role=banner] [role=menuitem].coz-apps-home-btn {
135
+ display: flex;
136
+ box-sizing: border-box;
137
+ justify-content: flex-start;
138
+ flex-shrink: 0;
139
+ align-items: center;
140
+ width: 100%;
141
+ height: 3rem;
142
+ /* we remove the left border from the padding */
143
+ padding: .5rem 1rem .5rem calc(1rem - 4px);
144
+ color: var(--charcoalGrey);
145
+ text-decoration: none;
146
+ outline: none;
147
+ }
148
+
149
+ [role=banner] .coz-nav-apps-item:first-of-type [role=menuitem] {
150
+ margin-top: .5rem;
151
+ }
152
+
153
+ [role=banner] .coz-nav-apps-item:last-of-type [role=menuitem] {
154
+ margin-bottom: .5rem;
155
+ }
156
+
157
+ [role=banner] .coz-nav-apps-item-icon {
158
+ margin-right: .5rem;
159
+ height: 2rem;
160
+ width: 2rem;
161
+ /* force svg inline to be 2rem */
162
+ min-width: 2rem;
163
+ }
164
+
165
+ [role=banner] .coz-nav-apps-item [role=menuitem] .coz-label {
166
+ padding-right: .5rem;
167
+ width: 100%;
168
+ overflow-x: hidden;
169
+ text-overflow: ellipsis;
170
+ white-space: nowrap;
171
+ }
172
+
173
+ [role=banner] [role=menuitem].coz-apps-home-btn {
174
+ display: flex;
175
+ margin-top: 0;
176
+ color: #5d6165;
177
+ font-weight: bold;
178
+ font-size: 14px;
179
+ justify-content: center;
180
+ align-items: center;
181
+ }
182
+
183
+ [role=banner] [role=menuitem].coz-apps-home-btn.--mobile > span {
184
+ display: flex;
185
+ justify-content: flex-start;
186
+ }
187
+ [role=banner] [role=menuitem].coz-apps-home-btn img {
188
+ width: 1rem;
189
+ height: 1rem;
190
+ margin-right: .5rem;
191
+ }
192
+
193
+ @keyframes barPlaceHolderShimmer {
194
+ 0% { background-position: -20rem 0; }
195
+ 80% { background-position: 20rem 0; }
196
+ 80.1% { background-position: -20rem 0; }
197
+ 100% { background-position: -20rem 0; }
198
+ }
199
+
200
+ [role=banner] .coz-loading-placeholder {
201
+ display: inline-block;
202
+ width: 100%;
203
+ height: 100%;
204
+ min-height: 1em;
205
+ animation: barPlaceHolderShimmer 1s linear infinite;
206
+ animation-delay: .1s;
207
+ animation-duration: 2s;
208
+ animation-iteration-count: infinite;
209
+ animation-timing-function: linear;
210
+ background-position: -20rem 0;
211
+ background-image: linear-gradient(to right, var(--silver) 0, var(--paleGrey) 50%, var(--silver) 100%);
212
+ background-size: 20rem 10rem;
213
+ background-repeat: no-repeat;
214
+ background-color: var(--silver);
215
+ border-radius: .15rem;
216
+ margin: .1rem 0;
217
+ }
218
+
219
+
220
+ [role=banner] .coz-nav-apps-item-icon.coz-loading-placeholder {
221
+ width: 2rem;
222
+ height: 2rem;
223
+ margin: 0 1rem;
224
+ display: block;
225
+ }
226
+
227
+ [role=banner] .coz-nav-apps-item [role=menuitem] .coz-label.coz-loading-placeholder {
228
+ height: 1em;
229
+ width: 7rem;
230
+ }
231
+
232
+ [role=banner] .coz-nav-apps-btns.--loading {
233
+ width: 12rem;
234
+ }
235
+
236
+ [role=banner] .coz-nav-apps-btns-home.coz-loading-placeholder {
237
+ height: 2rem;
238
+ width: 2rem;
239
+ border-radius: 2rem;
240
+ background-color: var(--silver);
241
+ flex-shrink: 0;
242
+ }
243
+
244
+ [role=banner] .coz-nav-apps-btns-main.coz-loading-placeholder {
245
+ height: 1.5rem;
246
+ margin: 0;
247
+ background-color: var(--silver);
248
+ }
@@ -0,0 +1,64 @@
1
+ @media (max-width: 63.9375rem) {
2
+ .has-banner [role=application] .o-layout-2panes:before {
3
+ height: 6rem;
4
+ }
5
+
6
+ [role=banner] .coz-bar-banner {
7
+ font-size: 14px;
8
+ transition: none;
9
+ transition-delay: none;
10
+ }
11
+
12
+ [role=banner] .coz-bar-banner-button {
13
+ max-width: 7rem;
14
+ }
15
+ }
16
+
17
+ @media (max-width: 30rem) {
18
+ .has-banner [role=application] .o-layout-2panes:before {
19
+ height: 7rem;
20
+ }
21
+
22
+ [role=banner] .coz-bar-banner {
23
+ height: auto;
24
+ font-size: 13px;
25
+ }
26
+ }
27
+
28
+ @media (max-width: 18rem) {
29
+ .has-banner [role=application] .o-layout-2panes:before {
30
+ height: 8rem;
31
+ }
32
+ }
33
+
34
+ [role=banner] .coz-bar-banner.unmounted {
35
+ height: 0;
36
+ }
37
+
38
+ [role=banner] .coz-bar-banner {
39
+ display: flex;
40
+ background: var(--dodgerBlue);
41
+ box-sizing: border-box;
42
+ width: 100%;
43
+ height: 3rem;
44
+ padding: 0 1rem 0 1rem;
45
+ justify-content: space-between;
46
+ align-items: center;
47
+ color: white;
48
+ overflow: hidden;
49
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.12), 0 0 4px 0 rgba(0, 0, 0, 0.06);
50
+ transition: height 1s;
51
+ transition-delay: 1s;
52
+ }
53
+
54
+ [role=banner] .coz-bar-banner-button,
55
+ [role=banner] .coz-bar-banner-button:hover,
56
+ [role=banner] .coz-bar-banner-button:visited
57
+ [role=banner] .coz-bar-banner-button:active
58
+ [role=banner] .coz-bar-banner-button:focus {
59
+ border-color: white!important;
60
+ min-height: 2rem;
61
+ height: 2rem;
62
+ flex-shrink: 0;
63
+ max-width: 10rem;
64
+ }
@@ -0,0 +1,106 @@
1
+ [role=banner] {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ z-index: var(--z-index-bar);
6
+ display: flex;
7
+ align-items: stretch;
8
+ flex-shrink: 0;
9
+ box-sizing: border-box;
10
+ width: 100%;
11
+ min-height: 3em;
12
+ font-family: Lato, sans-serif;
13
+ font-size: 1rem;
14
+ }
15
+
16
+ @media (min-width: 64rem) {
17
+ [role=banner] {
18
+ position: relative;
19
+ }
20
+ }
21
+
22
+ [role=banner] .coz-bar-wrapper {
23
+ display: flex;
24
+ flex-direction: column;
25
+ width: 100%;
26
+ }
27
+
28
+ [role=banner] .coz-bar-container {
29
+ display: flex;
30
+ height: 3rem;
31
+ width: 100%;
32
+ padding: 0 1.25em 0 1em;
33
+ box-sizing: border-box;
34
+ }
35
+
36
+ @media (max-width: 48em) {
37
+ [role=banner] .coz-bar-container {
38
+ padding: 0 1em 0 0;
39
+ }
40
+ }
41
+
42
+ [role=banner] .coz-bar-title {
43
+ display: flex;
44
+ margin: 0;
45
+ align-items: center;
46
+ min-width: 8em;
47
+ font-size: 1.5em;
48
+ font-weight: normal;
49
+ color: var(--charcoalGrey);
50
+ }
51
+
52
+ @media (max-width: 48em) {
53
+ [role=banner] .coz-bar-title {
54
+ font-size: 1.25em
55
+ }
56
+ }
57
+
58
+ [role=banner] .coz-bar-title img {
59
+ margin-right: .45em;
60
+ }
61
+
62
+ [role=banner] .coz-bar-title span {
63
+ margin-right: .25em;
64
+ }
65
+
66
+ [role=banner] .coz-bar-title strong {
67
+ font-weight: bold;
68
+ }
69
+
70
+ @media (max-width: 30em) {
71
+ [role=banner] .coz-bar-hide-sm {
72
+ display: none;
73
+ }
74
+
75
+ [role=banner] .coz-bar-title strong {
76
+ padding: 0;
77
+ text-transform: capitalize;
78
+ }
79
+ }
80
+
81
+ [role=banner] .coz-bar-btn {
82
+ padding: 0;
83
+ border: none;
84
+ background-color: transparent;
85
+ background-position: center;
86
+ flex: 0 0 2.5rem;
87
+ cursor: pointer;
88
+ }
89
+
90
+ [role=banner] .coz-bar-burger {
91
+ margin-right: 0.25em;
92
+ }
93
+
94
+ @media (min-width: 48.0625em) {
95
+ [role=banner] .coz-bar-burger,
96
+ [role=banner] .coz-drawer-wrapper {
97
+ display: none;
98
+ }
99
+ }
100
+
101
+
102
+ @media (max-width: 48em) {
103
+ [role=banner] .coz-bar-hide-sm {
104
+ display: none;
105
+ }
106
+ }
@@ -0,0 +1,41 @@
1
+ [role=banner] .coz-sep-flex {
2
+ margin: 0;
3
+ border: none;
4
+ flex: 1 0;
5
+ }
6
+
7
+ [role=banner] .blurry {
8
+ opacity: .5;
9
+ filter: blur(5px);
10
+ }
11
+
12
+ [role=banner] [data-icon] {
13
+ background-repeat: no-repeat;
14
+ background-position: 0 50%;
15
+ padding-left: calc(16px + .5em);
16
+ }
17
+
18
+ [role=banner] [data-icon='icon-profile'] {
19
+ background-image: url(~assets/icons/16/icon-people-16.svg);
20
+ }
21
+
22
+ [role=banner] [data-icon='icon-connectedDevices'] {
23
+ background-image: url(~assets/icons/16/icon-phone-16.svg);
24
+ }
25
+
26
+ [role=banner] [data-icon='icon-help'] {
27
+ background-image: url(~assets/icons/16/icon-question-mark-16.svg);
28
+ }
29
+
30
+ [role=banner] [data-icon='icon-logout'] {
31
+ background-image: url(~assets/icons/16/icon-logout-16.svg);
32
+ }
33
+
34
+ [role=banner] [data-icon='icon-storage'] {
35
+ background-image: url(~assets/icons/16/icon-storage-16.svg);
36
+ }
37
+
38
+ [role=banner] .u-flex-grow {
39
+ display: flex;
40
+ flex-grow: 1;
41
+ }
@@ -0,0 +1,99 @@
1
+ [role=banner] .coz-claudy {
2
+ position: fixed;
3
+ bottom: 5em;
4
+ right: 2em;
5
+ }
6
+
7
+ @media (min-width: 64em) {
8
+ [role=banner] .coz-claudy {
9
+ bottom: 2em;
10
+ }
11
+ }
12
+
13
+ [role=banner] .coz-claudy-icon {
14
+ width: 3.5em;
15
+ height: 3.5em;
16
+ border-radius: 100%;
17
+ border: none;
18
+ background-color: var(--dodgerBlue);
19
+ background-image: url('~assets/icons/32/icon-claudy.svg');
20
+ background-repeat: no-repeat;
21
+ background-size: 2em;
22
+ background-position: .75em;
23
+ box-shadow: 0 1px 3px 0 rgba(50, 54, 63, 0.19), 0 6px 18px 0 rgba(50, 54, 63, 0.39);
24
+ animation: none;
25
+ cursor: pointer;
26
+ opacity: .5;
27
+ transition: all .2s ease-out;
28
+ outline: 0;
29
+ }
30
+
31
+ [role=banner] .coz-claudy-icon:hover,
32
+ [role=banner] .coz-claudy-icon:focus,
33
+ [role=banner] .coz-claudy-icon:active,
34
+ [role=banner] .coz-claudy [data-claudy-opened=true] {
35
+ animation: none;
36
+ transform: scale(1.1);
37
+ opacity: 1;
38
+ transition: all .2s ease-out;
39
+ }
40
+
41
+ [role=banner] .coz-claudy .coz-claudy-intent-wrapper {
42
+ position: fixed;
43
+ bottom: 9.5em;
44
+ right: 2em;
45
+ width: 25em;
46
+ border-radius: .3em;
47
+ background: white;
48
+ transform-origin: 100% 100% 0;
49
+ transform: scale(0) translateY(6em);
50
+ filter: drop-shadow(0 4px 6px rgba(50, 54, 63, 0.5));
51
+ opacity: 0;
52
+ transition: .2s transform ease-in, .1s opacity ease-in;
53
+ }
54
+
55
+ [role=banner] .coz-claudy--opened .coz-claudy-intent-wrapper {
56
+ transform: scale(1) translateY(0);
57
+ opacity: 1;
58
+ transition: .2s transform cubic-bezier(0.2, 0.75, 0.3, 1.15), .1s opacity ease-in;
59
+ }
60
+
61
+ [role=banner] .coz-claudy-intent-wrapper::after {
62
+ position: fixed;
63
+ content: '';
64
+ right: 3em;
65
+ width: 0;
66
+ height: 0;
67
+ /* Make it a bit taller to avoid browser spacing issue
68
+ between it and the tooltip */
69
+ border-bottom: .8em solid transparent;
70
+ border-right: 1.5em solid white;
71
+ bottom: -.6em;
72
+ }
73
+
74
+ [role=banner] .coz-claudy .coz-claudy-intent-wrapper .coz-intent{
75
+ width: 100%;
76
+ height: 100%;
77
+ border: none;
78
+ border-radius: .3em;
79
+ }
80
+
81
+ @media (min-width: 64em) {
82
+ [role=banner] .coz-claudy .coz-claudy-intent-wrapper {
83
+ bottom: 6.5em;
84
+ }
85
+ }
86
+
87
+ @media (max-width: 48em) {
88
+ [role=banner] .coz-claudy .coz-claudy-intent-wrapper {
89
+ width: calc(100% - 2em);
90
+ height: calc(100% - 2em)!important; /* overwritte intent setSize here */
91
+ right: 1em;
92
+ top: 1em;
93
+ transform-origin: 50% 50% 0;
94
+ }
95
+
96
+ [role=banner] .coz-claudy-intent-wrapper::after {
97
+ display: none;
98
+ }
99
+ }
@@ -0,0 +1,126 @@
1
+ [role=banner] .coz-drawer-wrapper {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ width: 100vw;
6
+ height: 100%;
7
+ display: flex;
8
+ }
9
+
10
+ [role=banner] .coz-drawer-wrapper[aria-hidden=true] {
11
+ pointer-events: none;
12
+ }
13
+
14
+ [role=banner] .coz-drawer-wrapper[aria-hidden=false] {
15
+ pointer-events: auto;
16
+ }
17
+
18
+ [role=banner] .coz-drawer-wrapper::before {
19
+ content: '';
20
+ display: block;
21
+ position: absolute;
22
+ top: 0;
23
+ left: 0;
24
+ width: 100%;
25
+ height: 100%;
26
+ background-color: var(--charcoalGrey);
27
+ opacity: 0;
28
+ transition: opacity .2s ease-out .1s;
29
+ }
30
+
31
+ [role=banner] .coz-drawer-wrapper[aria-hidden=false]::before {
32
+ opacity: .5;
33
+ transition: opacity .2s ease-out;
34
+ }
35
+
36
+ [role=banner] .coz-drawer-wrapper aside {
37
+ position: absolute;
38
+ bottom: 0;
39
+ left: 0;
40
+ width: 90%;
41
+ max-width: 30em;
42
+ height: 100%;
43
+ display: flex;
44
+ flex-direction: column;
45
+ background-color: #fff;
46
+ transform: translateX(-100%);
47
+ transform-origin: 0% 0%;
48
+ }
49
+
50
+ [role=banner] .coz-drawer-wrapper aside.with-transition {
51
+ transition: transform .2s ease-out;
52
+ }
53
+
54
+ [role=banner] .coz-drawer-wrapper[aria-hidden=false] aside {
55
+ transform: translateX(0%);
56
+ }
57
+
58
+ [role=banner] .coz-drawer-wrapper[aria-hidden=false] aside.with-transition {
59
+ transition: transform .3s cubic-bezier(0.2, 0.75, 0.3, 1.0);
60
+ }
61
+
62
+ [role=banner] .coz-drawer-wrapper ul {
63
+ margin: 0;
64
+ padding: 0;
65
+ list-style-type: none;
66
+ }
67
+
68
+ [role=banner] .coz-drawer-wrapper nav hr {
69
+ margin: 0;
70
+ border: none;
71
+ border-bottom: solid 1px var(--silver);
72
+ }
73
+
74
+ [role=banner] .coz-drawer-wrapper .coz-nav-icon {
75
+ margin-right: .5em;
76
+ }
77
+
78
+ [role=banner] .coz-drawer--apps {
79
+ flex: 0 1 100%;
80
+ /* IMPORTANT: on Chrome, the `overflow-y: scroll` property on .coz-drawer--apps prevented
81
+ swipe events to be dispatched correctly ; the `touch-action: pan-y` fixes the problem
82
+ see https://greensock.com/forums/topic/17546-draggable-text-elements-with-overflow/ */
83
+ overflow-y: scroll;
84
+ touch-action: pan-y;
85
+ position: relative;
86
+ overflow-x: hidden;
87
+ }
88
+
89
+ [role=banner] .coz-drawer--apps ul li {
90
+ flex: 0 0 100%;
91
+ max-width: 100%;
92
+ }
93
+
94
+ [role=banner] .coz-drawer--apps ul:last-of-type + hr {
95
+ display: none;
96
+ }
97
+
98
+ [role=banner] .coz-drawer--apps [role=menuitem] {
99
+ display: flex;
100
+ flex-direction: row;
101
+ padding: .3em .3em .3em 1.3em;
102
+ height: 3rem;
103
+ }
104
+
105
+ [role=banner] .coz-drawer--apps .coz-nav-item img {
106
+ width: 2rem;
107
+ margin-right: .5rem;
108
+ max-height: 2rem;
109
+ }
110
+
111
+
112
+ [role=banner] .coz-drawer--apps .coz-nav-category {
113
+ font-size: 1em;
114
+ padding: 2em 2em .5em;
115
+ margin: 0;
116
+ }
117
+
118
+ [role=banner] .coz-drawer--settings {
119
+ padding-bottom: env(safe-area-inset-bottom);
120
+ }
121
+
122
+ /* /!\ Trick to prevent application from scrolling in the background when the drawer is opened */
123
+ [role=banner][data-drawer-visible=true] + [role=application] {
124
+ position: fixed;
125
+ width: 100%;
126
+ }
@@ -0,0 +1,33 @@
1
+ @import '~styles/base.css'
2
+ @import '~styles/indicators.css'
3
+ @import '~styles/bar.css'
4
+ @import '~styles/banner.css'
5
+ @import '~styles/nav.css'
6
+ @import '~styles/navigation_item.css'
7
+ @import '~styles/apps.css'
8
+ @import '~styles/settings.css'
9
+ @import '~styles/storage.css'
10
+ @import '~styles/drawer.css'
11
+ @import '~styles/claudy.css'
12
+ @import '~styles/searchbar.css'
13
+ @import '~styles/supportModal.css'
14
+
15
+ @import '~styles/theme.styl'
16
+
17
+ @import 'settings/palette'
18
+ @import 'settings/z-index'
19
+ @import 'tools/mixins'
20
+ @import 'utilities/display'
21
+ @import 'utilities/position'
22
+ @import 'utilities/dimensions'
23
+
24
+ @import 'components/button.styl'
25
+
26
+ :root {
27
+ --z-index-bar: $bar-index;
28
+ --z-index-selection: $selection-index;
29
+ --z-index-over-selection: $selection-index + 1;
30
+ }
31
+
32
+ .coz-bar-hidden
33
+ @extend $visuallyhidden