cozy-bar 0.0.0-development

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 (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/cozy-bar.min.js +77 -0
  4. package/dist/cozy-bar.min.js.map +1 -0
  5. package/package.json +165 -0
  6. package/src/assets/icons/16/icon-storage-16.svg +3 -0
  7. package/src/assets/icons/24/icon-arrow-left.svg +3 -0
  8. package/src/assets/icons/32/icon-claudy.svg +1 -0
  9. package/src/assets/icons/apps/icon-collect.svg +25 -0
  10. package/src/assets/icons/apps/icon-drive.svg +17 -0
  11. package/src/assets/icons/apps/icon-market-soon.svg +25 -0
  12. package/src/assets/icons/apps/icon-photos.svg +19 -0
  13. package/src/assets/icons/apps/icon-soon.svg +21 -0
  14. package/src/assets/icons/apps/icon-store.svg +19 -0
  15. package/src/assets/icons/claudyActions/icon-bills.svg +6 -0
  16. package/src/assets/icons/claudyActions/icon-laptop.svg +7 -0
  17. package/src/assets/icons/claudyActions/icon-phone.svg +8 -0
  18. package/src/assets/icons/claudyActions/icon-question-mark.svg +6 -0
  19. package/src/assets/icons/comingsoon/icon-bank.svg +12 -0
  20. package/src/assets/icons/comingsoon/icon-sante.svg +12 -0
  21. package/src/assets/icons/comingsoon/icon-store.svg +6 -0
  22. package/src/assets/icons/icon-cozy.svg +3 -0
  23. package/src/assets/icons/icon-shield.svg +3 -0
  24. package/src/assets/icons/spinner.svg +4 -0
  25. package/src/assets/sprites/icon-apps.svg +1 -0
  26. package/src/assets/sprites/icon-cozy-home.svg +16 -0
  27. package/src/components/Apps/AppItem.jsx +117 -0
  28. package/src/components/Apps/AppItemPlaceholder.jsx +12 -0
  29. package/src/components/Apps/AppNavButtons.jsx +94 -0
  30. package/src/components/Apps/AppsContent.jsx +91 -0
  31. package/src/components/Apps/ButtonCozyHome.jsx +30 -0
  32. package/src/components/Apps/ButtonCozyHome.spec.jsx +53 -0
  33. package/src/components/Apps/IconCozyHome.jsx +38 -0
  34. package/src/components/Apps/index.jsx +72 -0
  35. package/src/components/Banner.jsx +41 -0
  36. package/src/components/Bar.jsx +295 -0
  37. package/src/components/Bar.spec.jsx +133 -0
  38. package/src/components/Claudy.jsx +81 -0
  39. package/src/components/ClaudyIcon.jsx +18 -0
  40. package/src/components/Drawer.jsx +227 -0
  41. package/src/components/Drawer.spec.jsx +98 -0
  42. package/src/components/SearchBar.jsx +358 -0
  43. package/src/components/Settings/SettingsContent.jsx +163 -0
  44. package/src/components/Settings/StorageData.jsx +29 -0
  45. package/src/components/Settings/helper.js +8 -0
  46. package/src/components/Settings/index.jsx +220 -0
  47. package/src/components/StorageIcon.jsx +16 -0
  48. package/src/components/SupportModal.jsx +59 -0
  49. package/src/components/__snapshots__/Bar.spec.jsx.snap +302 -0
  50. package/src/config/claudyActions.json +20 -0
  51. package/src/config/persistWhitelist.json +4 -0
  52. package/src/dom.js +80 -0
  53. package/src/index.jsx +242 -0
  54. package/src/index.spec.jsx +34 -0
  55. package/src/lib/api/helpers.js +13 -0
  56. package/src/lib/api/index.jsx +145 -0
  57. package/src/lib/exceptions.js +89 -0
  58. package/src/lib/expiringMemoize.js +13 -0
  59. package/src/lib/icon.js +77 -0
  60. package/src/lib/intents.js +16 -0
  61. package/src/lib/logger.js +11 -0
  62. package/src/lib/middlewares/appsI18n.js +57 -0
  63. package/src/lib/realtime.js +43 -0
  64. package/src/lib/reducers/apps.js +175 -0
  65. package/src/lib/reducers/apps.spec.js +59 -0
  66. package/src/lib/reducers/content.js +50 -0
  67. package/src/lib/reducers/context.js +86 -0
  68. package/src/lib/reducers/index.js +73 -0
  69. package/src/lib/reducers/locale.js +22 -0
  70. package/src/lib/reducers/settings.js +111 -0
  71. package/src/lib/reducers/theme.js +48 -0
  72. package/src/lib/reducers/unserializable.js +26 -0
  73. package/src/lib/stack-client.js +401 -0
  74. package/src/lib/stack.js +79 -0
  75. package/src/lib/store/index.js +44 -0
  76. package/src/locales/de.json +57 -0
  77. package/src/locales/en.json +57 -0
  78. package/src/locales/es.json +57 -0
  79. package/src/locales/fr.json +57 -0
  80. package/src/locales/it.json +57 -0
  81. package/src/locales/ja.json +57 -0
  82. package/src/locales/nl_NL.json +57 -0
  83. package/src/locales/pl.json +57 -0
  84. package/src/locales/ru.json +57 -0
  85. package/src/locales/sq.json +57 -0
  86. package/src/locales/zh_CN.json +57 -0
  87. package/src/proptypes/index.js +10 -0
  88. package/src/queries/index.js +16 -0
  89. package/src/styles/apps.css +248 -0
  90. package/src/styles/banner.css +64 -0
  91. package/src/styles/bar.css +106 -0
  92. package/src/styles/base.css +21 -0
  93. package/src/styles/claudy.css +98 -0
  94. package/src/styles/drawer.css +126 -0
  95. package/src/styles/index.styl +33 -0
  96. package/src/styles/indicators.css +58 -0
  97. package/src/styles/nav.css +81 -0
  98. package/src/styles/navigation_item.css +34 -0
  99. package/src/styles/searchbar.css +156 -0
  100. package/src/styles/settings.css +34 -0
  101. package/src/styles/storage.css +22 -0
  102. package/src/styles/supportModal.css +20 -0
  103. package/src/styles/theme.styl +25 -0
@@ -0,0 +1,58 @@
1
+ /* Spinner */
2
+ @keyframes spin {
3
+ from {
4
+ transform: rotate(0deg);
5
+ }
6
+ to {
7
+ transform: rotate(359deg);
8
+ }
9
+ }
10
+
11
+ /* Progress bar */
12
+ [role=banner] progress[value] {
13
+ /* Reset the default appearance */
14
+ appearance: none;
15
+ background-color: var(--paleGrey);
16
+ border: solid 1px var(--silver);
17
+ border-radius: 2px;
18
+ color: var(--dodgerBlue);
19
+ }
20
+
21
+ [role=banner] progress[value]::-webkit-progress-bar {
22
+ background: var(--paleGrey);
23
+ border-radius: 2px;
24
+ }
25
+
26
+ [role=banner] progress[value]::-webkit-progress-value {
27
+ background: var(--dodgerBlue);
28
+ border-radius: 1px;
29
+ }
30
+
31
+ [role=banner] progress[value]::-moz-progress-bar {
32
+ background: var(--dodgerBlue);
33
+ border-radius: 1px;
34
+ }
35
+
36
+ /* Errors */
37
+ [role=banner] .coz-nav--error {
38
+ margin: 0 0 .1em 0;
39
+ font-weight: normal;
40
+ font-size: .875em;
41
+ color: var(--pomegranate);
42
+ }
43
+
44
+ /* Claudy loading */
45
+ [role=banner] .coz-claudy [data-claudy-loading=true]::before {
46
+ position: absolute;
47
+ content: '';
48
+ width: 100%;
49
+ height: 100%;
50
+ bottom: 0;
51
+ right: 0;
52
+ background: none;
53
+ border-radius: 100%;
54
+ border: .2em solid var(--scienceBlue);
55
+ border-right: .2em solid white;
56
+ box-sizing: border-box;
57
+ animation: 1s linear infinite spin;
58
+ }
@@ -0,0 +1,81 @@
1
+ [role=banner] .coz-nav {
2
+ display: flex;
3
+ margin: 0;
4
+ padding: 0;
5
+ list-style-type: none;
6
+ position: relative;
7
+ }
8
+
9
+ @media (max-width: 48em) {
10
+ [role=banner] .coz-nav {
11
+ display: none;
12
+ }
13
+ }
14
+
15
+ [role=banner] [aria-controls][aria-busy]::after {
16
+ position: relative;
17
+ top: .12em;
18
+ margin: 0 .355em;
19
+ font-size: .875em;
20
+ }
21
+
22
+ [role=banner] [aria-controls][aria-busy=true] {
23
+ padding-right: 0;
24
+ }
25
+
26
+ [role=banner] .coz-nav [aria-controls][data-icon] {
27
+ padding-left: calc(1.25em + 16px + .5em);
28
+ background-position: 1em calc(50% - 1px);
29
+ }
30
+
31
+ /* POP */
32
+ [role=banner] .coz-nav-pop[aria-hidden=true] {
33
+ display: flex;
34
+ transform: scale(0);
35
+ opacity: 0;
36
+ transition: .2s transform ease-in, .1s opacity ease-in;
37
+ }
38
+
39
+ [role=banner] .coz-nav-pop {
40
+ position: absolute;
41
+ top: calc(100% - .25em);
42
+ box-sizing: border-box;
43
+ min-width: 100%;
44
+ max-height: calc(100vh - 4rem);
45
+ overflow-y: auto;
46
+ background-color: #fff;
47
+ border-radius: 8px;
48
+ border: solid 1px rgba(50, 54, 63, 0.12);
49
+ box-shadow: 0 1px 3px 0 rgba(50, 54, 63, 0.19), 0 6px 18px 0 rgba(50, 54, 63, 0.19);
50
+ opacity: 1;
51
+ transform: scale(1);
52
+ transform-origin: 80% 0%;
53
+ transition: .2s transform cubic-bezier(0.2, 0.75, 0.3, 1.15);
54
+ /* hide scrollbars */
55
+ -ms-overflow-style: none; /* IE 10+ */
56
+ }
57
+
58
+ [role=banner] .coz-nav-pop::-webkit-scrollbar {
59
+ display: none; /* Safari and Chrome */
60
+ }
61
+
62
+ [role=banner] .coz-nav-pop-content .coz-nav-group {
63
+ padding: 0;
64
+ margin: 0;
65
+ }
66
+
67
+ [role=banner] .coz-nav-pop-content .coz-nav-group:last-of-type {
68
+ border-radius: 0 0 8px 8px;
69
+ }
70
+
71
+ [role=banner] .coz-nav-pop-content .coz-nav-group:first-of-type {
72
+ border-radius: 8px 8px 0 0;
73
+ }
74
+
75
+ [role=banner] .coz-nav-pop .coz-nav-group {
76
+ border-bottom: solid 1px var(--silver);
77
+ }
78
+
79
+ [role=banner] .coz-nav-pop .coz-nav-group:last-child {
80
+ border: 0;
81
+ }
@@ -0,0 +1,34 @@
1
+ /* Force pointer on clickable elements*/
2
+ [role=banner] a[role=menuitem],
3
+ [role=banner] button[role=menuitem] {
4
+ cursor: pointer;
5
+ border-left: 4px solid transparent;
6
+ }
7
+
8
+ [role=banner] a[role=menuitem]:hover,
9
+ [role=banner] a[role=menuitem]:focus,
10
+ [role=banner] button[role=menuitem]:hover,
11
+ [role=banner] button[role=menuitem]:focus {
12
+ background-color: var(--paleGrey);
13
+ }
14
+
15
+ [role=banner] [role=menuitem][aria-busy=true]::after {
16
+ right: 1.5em;
17
+ top: .5em;
18
+ }
19
+
20
+ [role=banner] .coz-drawer-wrapper [role=menuitem][aria-busy=true]::after {
21
+ top: .8em;
22
+ }
23
+
24
+ /* nav group */
25
+
26
+ [role=banner] .coz-nav-group.coz-nav--error {
27
+ padding: 0.75em;
28
+ min-width: 20em;
29
+ }
30
+
31
+ [role=banner] div[role=menuitem]:not([data-icon]) {
32
+ margin: 0;
33
+ padding-left: 1.5em;
34
+ }
@@ -0,0 +1,156 @@
1
+ [role=banner] .coz-searchbar{
2
+ height: 100%;
3
+ display: flex;
4
+ justify-content: flex-start;
5
+ align-items: center;
6
+ flex-grow: 1;
7
+ padding: .3em .8em .3em .7em;
8
+ box-sizing: border-box;
9
+ position: relative;
10
+ }
11
+
12
+ [role=banner] .coz-searchbar-autosuggest-container{
13
+ position: relative;
14
+ width: 100%;
15
+ opacity: .4;
16
+ transition: all .2s ease-out;
17
+ }
18
+ [role=banner] .coz-searchbar-autosuggest-container.--focused{
19
+ opacity: 1;
20
+ }
21
+ [role=banner] .coz-searchbar-autosuggest-container:before{
22
+ content: '';
23
+ display: inline-block;
24
+ width: 1.6em;
25
+ height: 100%;
26
+ position: absolute;
27
+ left: 0;
28
+ top: 0;
29
+ }
30
+ [role=banner] .coz-searchbar-autosuggest-container.--searching:before{
31
+ padding-left: .5em;
32
+ background-size: 1em;
33
+ animation: spin 1s linear infinite;
34
+ }
35
+
36
+ [role=banner] .coz-searchbar-autosuggest-input{
37
+ box-sizing: border-box;
38
+ width: 100%;
39
+ padding: .5em;
40
+ padding-left: 2em;
41
+ border-width: 1px;
42
+ border-style: solid;
43
+ border-color: transparent;
44
+ border-radius: 4px;
45
+ transition: all .2s ease-out;
46
+ }
47
+ [role=banner] .coz-searchbar-autosuggest-input:hover{
48
+ border-color: var(--silver);
49
+ }
50
+ [role=banner] .coz-searchbar-autosuggest-input:focus,
51
+ [role=banner] .coz-searchbar-autosuggest-input-focused{
52
+ outline: none;
53
+ border-color: var(--dodgerBlue);
54
+ }
55
+
56
+ [role=banner] .coz-searchbar-autosuggest-suggestions-container {
57
+ position: absolute;
58
+ top: 100%;
59
+ margin-top: 3px;
60
+ width: 100%;
61
+ max-height: em(170px);
62
+ overflow: auto;
63
+ border-width: 1px;
64
+ border-style: solid;
65
+ border-color: var(--silver);
66
+ border-radius: 4px;
67
+ background: white;
68
+ box-shadow: 0 1px 3px 0 rgba(50, 54, 63, 0.19), 0 6px 18px 0 rgba(50, 54, 63, 0.19);
69
+ display: none;
70
+ }
71
+
72
+ [role=banner] .coz-searchbar-autosuggest-suggestions-container--open {
73
+ display: block;
74
+ }
75
+
76
+ [role=banner] .coz-searchbar-autosuggest-status-container {
77
+ position: absolute;
78
+ top: 100%;
79
+ left: 0;
80
+ right: 0;
81
+ margin: -0.3em .8em .3em;
82
+ padding: .8em .5em;
83
+ max-height: em(170px);
84
+ overflow: auto;
85
+ border-width: 1px;
86
+ border-style: solid;
87
+ border-color: var(--silver);
88
+ border-radius: 4px;
89
+ background: white;
90
+ box-shadow: 0 1px 3px 0 rgba(50, 54, 63, 0.19), 0 6px 18px 0 rgba(50, 54, 63, 0.19);
91
+ }
92
+
93
+ [role=banner] .coz-searchbar-autosuggest-suggestions-list {
94
+ margin: 0;
95
+ padding: 0;
96
+ list-style: none;
97
+ }
98
+
99
+ [role=banner] .coz-searchbar-autosuggest-suggestions-list b {
100
+ font-weight: bolder;
101
+ color: var(--scienceBlue)
102
+ }
103
+
104
+ [role=banner] .coz-searchbar-autosuggest-suggestion {
105
+ padding: .8em .5em;
106
+ border-width: 0;
107
+ border-bottom-width: 1px;
108
+ border-style: solid;
109
+ border-color: var(--silver);
110
+ cursor: pointer;
111
+ }
112
+ [role=banner] .coz-searchbar-autosuggest-suggestion:last-child {
113
+ border-bottom-width: 0;
114
+ }
115
+
116
+ [role=banner] .coz-searchbar-autosuggest-suggestion-item {
117
+ display: flex;
118
+ flex-direction: row;
119
+ justify-content: flex-start;
120
+ align-items: center;
121
+ }
122
+
123
+ [role=banner] .coz-searchbar-autosuggest-suggestion-icon {
124
+ max-height: 2rem;
125
+ min-height: 2rem;
126
+ margin-right: 1rem;
127
+ }
128
+
129
+ [role=banner] .coz-searchbar-autosuggest-suggestion-content {
130
+ flex-grow: 1;
131
+ white-space: nowrap;
132
+ overflow: hidden;
133
+ text-overflow: ellipsis;
134
+ display: flex;
135
+ flex-direction: column;
136
+ }
137
+
138
+ [role=banner] .coz-searchbar-autosuggest-suggestion-subtitle {
139
+ color: var(--coolGrey);
140
+ }
141
+
142
+ [role=banner] .coz-searchbar-autosuggest-suggestion-highlighted {
143
+ background: var(--paleGrey);
144
+ box-shadow: inset 4px 0 0 0 var(--dodgerBlue);
145
+ }
146
+
147
+ [role=banner] .coz-searchbar-autosuggest-section-title {
148
+ padding: .5em;
149
+ font-size: .8em;
150
+ }
151
+
152
+ @media (max-width: 48em) {
153
+ [role=banner] .coz-searchbar{
154
+ display: none;
155
+ }
156
+ }
@@ -0,0 +1,34 @@
1
+ [role=banner] .coz-nav-settings-btn {
2
+ color: var(--slateGrey);
3
+ }
4
+ [role=banner] .coz-nav-settings-btn:hover,
5
+ [role=banner] .coz-nav-settings-btn:focus {
6
+ background-color: var(--paleGrey);
7
+ box-shadow: inset 0 -1px 0 0 var(--silver);
8
+ color: var(--charcoalGrey);
9
+ }
10
+
11
+ [role=banner] .coz-nav-pop--settings {
12
+ right: 0;
13
+ }
14
+
15
+ [role=banner] .coz-nav-settings-item [role=menuitem] {
16
+ display: block;
17
+ box-sizing: border-box;
18
+ margin: 0;
19
+ width: 100%;
20
+ padding: 0.75rem 1rem;
21
+ border: none;
22
+ background-color: transparent;
23
+ text-align: left;
24
+ font-size: 1rem;
25
+ white-space: nowrap;
26
+ color: var(--charcoalGrey);
27
+ text-decoration: none;
28
+ outline: none;
29
+ }
30
+
31
+ [role=banner] .coz-nav-settings-item .coz-nav-settings-item-btn[role=menuitem] > span > span {
32
+ margin-right: auto;
33
+ }
34
+
@@ -0,0 +1,22 @@
1
+ [role=banner] [role=menuitem][data-icon=icon-storage] {
2
+ background-position: 1.5em calc(.8em + 1px);
3
+ }
4
+
5
+ [role=banner] .coz-nav-storage {
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: left;
9
+ padding-top: .5em;
10
+ color: var(--coolGrey);
11
+ }
12
+
13
+ [role=banner] .coz-nav-storage-text {
14
+ margin: 0 0 .1em 0;
15
+ font-weight: normal;
16
+ font-size: .875em;
17
+ }
18
+
19
+ [role=banner] .cozy-nav-storage-bar {
20
+ height: .5em;
21
+ margin: .2em 0 .1em 0;
22
+ }
@@ -0,0 +1,20 @@
1
+ [role=banner] .coz-support-modal .coz-support-modal-content {
2
+ min-height: 8em;
3
+ }
4
+
5
+ [role=banner] .coz-support-modal .coz-support-intent-wrapper .coz-intent {
6
+ width: 100%;
7
+ height: 24em;
8
+ border: none;
9
+ }
10
+
11
+ [role=banner] .coz-support-modal .coz-support-modal-close {
12
+ margin-top: .7rem;
13
+ margin-right: 1rem;
14
+ }
15
+
16
+ @media (max-width: 48em) {
17
+ [role=banner] .coz-support-modal .coz-support-intent-wrapper .coz-intent {
18
+ height: 27em;
19
+ }
20
+ }
@@ -0,0 +1,25 @@
1
+
2
+ [role=banner] .coz-bar-wrapper
3
+ box-shadow inset 0 -1px 0 0 var(--silver)
4
+ --cozBarThemePrimaryColor var(--primaryColor)
5
+ --cozBarThemePrimaryContrastTextColor var(--primaryContrastTextColor)
6
+
7
+ .coz-nav-apps-btns
8
+ color var(--slateGrey)
9
+
10
+ .coz-bar-burger
11
+ color var(--coolGrey)
12
+
13
+ @media (max-width: 64em)
14
+ [role=banner] .coz-bar-wrapper
15
+ background-color var(--white)
16
+
17
+ @media (max-width: 48em)
18
+ [role=banner] .coz-bar-wrapper
19
+ &.coz-theme-primary
20
+ box-shadow inherit
21
+ background-color var(--cozBarThemePrimaryColor)
22
+
23
+ .coz-nav-apps-btns,
24
+ .coz-bar-burger
25
+ color var(--cozBarThemePrimaryContrastTextColor)