pallote-css 0.1.0 → 0.2.0

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 (52) hide show
  1. package/README.md +100 -43
  2. package/dist/pallote.min.css +1 -0
  3. package/dist/pallote.min.css.map +1 -0
  4. package/dist/pallote.min.js +1 -0
  5. package/dist/pallote.scss +33 -27
  6. package/dist/scripts/accordion.js +42 -0
  7. package/dist/scripts/button.js +5 -0
  8. package/dist/scripts/cookie.js +15 -0
  9. package/dist/scripts/input.js +24 -0
  10. package/dist/scripts/nav.js +22 -0
  11. package/dist/scripts/navbar.js +28 -0
  12. package/dist/scripts/tabs.js +30 -0
  13. package/dist/{common → styles/common}/_editor.scss +13 -2
  14. package/dist/{common → styles/common}/_global.scss +28 -7
  15. package/dist/{common → styles/common}/_mixins.scss +1 -1
  16. package/dist/{common → styles/common}/_variables.scss +41 -29
  17. package/dist/styles/components/_accordion.scss +130 -0
  18. package/dist/{components → styles/components}/_alert.scss +20 -16
  19. package/dist/styles/components/_breadcrumbs.scss +47 -0
  20. package/dist/{components → styles/components}/_button.scss +3 -98
  21. package/dist/{components → styles/components}/_card.scss +20 -8
  22. package/dist/{components/_nav.scss → styles/components/_detail.scss} +18 -51
  23. package/dist/styles/components/_divider.scss +51 -0
  24. package/dist/{components → styles/components}/_input.scss +2 -3
  25. package/dist/styles/components/_nav.scss +259 -0
  26. package/dist/styles/components/_navbar.scss +189 -0
  27. package/dist/{components → styles/components}/_section.scss +86 -21
  28. package/dist/styles/components/_sidebar.scss +57 -0
  29. package/dist/styles/components/_snippet.scss +82 -0
  30. package/dist/styles/components/_status.scss +58 -0
  31. package/dist/styles/components/_switch.scss +72 -0
  32. package/dist/styles/components/_tabs.scss +115 -0
  33. package/dist/{components → styles/components}/_tag.scss +3 -3
  34. package/dist/{modules → styles/modules}/_cookie.scss +7 -1
  35. package/dist/{utilities → styles/utilities}/_color.scss +6 -6
  36. package/dist/{utilities → styles/utilities}/_global.scss +1 -0
  37. package/package.json +9 -4
  38. package/dist/components/_navbar.scss +0 -207
  39. package/dist/components/_sidebar.scss +0 -27
  40. package/dist/pallote.css +0 -7666
  41. package/dist/pallote.css.map +0 -1
  42. package/dist/plugins/_highlighter-theme.scss +0 -68
  43. /package/dist/{common → styles/common}/_fontface.scss +0 -0
  44. /package/dist/{common → styles/common}/_reset.scss +0 -0
  45. /package/dist/{components → styles/components}/_buttons.scss +0 -0
  46. /package/dist/{components → styles/components}/_form.scss +0 -0
  47. /package/dist/{components → styles/components}/_grid.scss +0 -0
  48. /package/dist/{components → styles/components}/_link.scss +0 -0
  49. /package/dist/{components → styles/components}/_list.scss +0 -0
  50. /package/dist/{components → styles/components}/_page.scss +0 -0
  51. /package/dist/{components → styles/components}/_text.scss +0 -0
  52. /package/dist/{utilities → styles/utilities}/_text.scss +0 -0
@@ -0,0 +1,259 @@
1
+ // —————————————————————————————————————————————————————————————————
2
+ // elements
3
+ // active
4
+ // show
5
+ // direction
6
+ // dense
7
+ // navbar
8
+ // —————————————————————————————————————————————————————————————————
9
+
10
+ // —————————————————————————————————————————————————————————————————
11
+ // elements
12
+ // —————————————————————————————————————————————————————————————————
13
+
14
+ .nav ul,
15
+ .nav__target {
16
+ list-style: none;
17
+ }
18
+
19
+ .nav {
20
+ width: fit-content;
21
+
22
+ &__container,
23
+ &__group {
24
+ display: flex;
25
+ }
26
+
27
+ &__item,
28
+ &__trigger {
29
+ border-radius: $border-radius-md;
30
+ }
31
+
32
+ &__item {
33
+ margin: 0;
34
+ position: relative;
35
+
36
+ &:not(:first-child) {
37
+ margin-left: $spacing-xs;
38
+ padding-top: 0;
39
+ }
40
+
41
+ &--dropdown {
42
+ display: flex;
43
+ flex-direction: column;
44
+ }
45
+ }
46
+
47
+ &__trigger {
48
+ @extend %caption;
49
+ font-weight: $font-bold;
50
+ white-space: nowrap;
51
+ cursor: pointer;
52
+ height: $nav-item*2;
53
+ padding: $nav-item*0.5 $nav-item;
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: space-between;
57
+
58
+ &:hover {
59
+ background-color: $hover;
60
+ }
61
+
62
+ .nav__item--dropdown > & {
63
+
64
+ &:after {
65
+ content: '';
66
+ border: solid $text;
67
+ border-width: 0 $spacing-xxs $spacing-xxs 0;
68
+ padding: $spacing-xxs;
69
+ transform: rotate(45deg);
70
+ margin-left: $nav-item*0.5;
71
+ }
72
+ }
73
+ }
74
+
75
+ &__target {
76
+ display: none;
77
+ flex-direction: column;
78
+ padding: $nav-item*0.25 $nav-item*0.5 $nav-item*0.5 $nav-item*0.5;
79
+
80
+ .nav {
81
+
82
+ &__item {
83
+
84
+ &:not(:first-child) {
85
+ margin-top: $spacing-xs;
86
+ margin-left: 0;
87
+ }
88
+ }
89
+
90
+ &__trigger {
91
+ padding-right: $nav-item*0.5;
92
+ padding-left: $nav-item*0.5;
93
+ border-radius: $border-radius-sm;
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ // —————————————————————————————————————————————————————————————————
100
+ // active
101
+ // —————————————————————————————————————————————————————————————————
102
+
103
+ .nav__trigger--active {
104
+ color: $primary;
105
+ background-color: $hover;
106
+
107
+ .nav__item--dropdown &:after {
108
+ border-color: $primary;
109
+ }
110
+ }
111
+
112
+ // —————————————————————————————————————————————————————————————————
113
+ // show
114
+ // —————————————————————————————————————————————————————————————————
115
+
116
+ .nav__item--dropdown.js-show {
117
+ height: auto;
118
+ background-color: $hover;
119
+
120
+ > .nav {
121
+
122
+ &__trigger--active,
123
+ &__trigger:hover {
124
+ background-color: transparent;
125
+ }
126
+
127
+ &__target {
128
+ display: flex;
129
+ }
130
+ }
131
+ }
132
+
133
+ // —————————————————————————————————————————————————————————————————
134
+ // direction
135
+ // —————————————————————————————————————————————————————————————————
136
+
137
+ .nav--portrait {
138
+ width: 100%;
139
+ flex-direction: column;
140
+
141
+ .nav {
142
+
143
+ &__item:not(:first-child) {
144
+ margin-left: 0;
145
+ margin-top: $spacing-xs;
146
+ }
147
+
148
+ &__group {
149
+ display: flex;
150
+ flex-direction: column;
151
+ align-items: stretch;
152
+
153
+ &:not(:first-child) {
154
+ margin-top: $nav-item;
155
+ }
156
+ }
157
+ }
158
+ }
159
+
160
+ // —————————————————————————————————————————————————————————————————
161
+ // dense
162
+ // —————————————————————————————————————————————————————————————————
163
+
164
+ .nav--dense {
165
+
166
+ &.nav--portrait .nav__item:not(:first-child) {
167
+ margin-top: $spacing-xxs;
168
+ }
169
+
170
+ .nav {
171
+
172
+ &__item,
173
+ &__trigger {
174
+ border-radius: $border-radius-sm;
175
+ }
176
+
177
+ &__trigger {
178
+ padding: $nav-item*0.25 $nav-item*0.5;
179
+ height: $nav-item*1.5;
180
+ }
181
+
182
+ &__item--dropdown {
183
+
184
+ .nav__target {
185
+ padding: 0 $nav-item*0.25 $nav-item*0.25 $nav-item*0.25;
186
+
187
+ .nav__trigger {
188
+ padding-right: $nav-item*0.25;
189
+ padding-left: $nav-item*0.25;
190
+ }
191
+ }
192
+ }
193
+ }
194
+ }
195
+
196
+ // —————————————————————————————————————————————————————————————————
197
+ // navbar
198
+ // —————————————————————————————————————————————————————————————————
199
+
200
+ .navbar {
201
+
202
+ .nav {
203
+
204
+ @include responsive(up, tablet) { height: 100%; }
205
+ @include responsive(down, tablet) { width: 100%; }
206
+
207
+ &__container {
208
+
209
+ @include responsive(up, tablet) {
210
+ height: 100%;
211
+ align-items: center;
212
+ }
213
+
214
+ @include responsive(down, tablet) {
215
+ @include calc(max-height, '100vh - '$spacing-xl*3);
216
+ align-items: stretch;
217
+ overflow: scroll;
218
+ width: 100%;
219
+ margin-top: $nav-item;
220
+ margin-bottom: $nav-item;
221
+ flex-direction: column;
222
+ width: 100%;
223
+ }
224
+ }
225
+
226
+ &__item:not(:first-child) {
227
+
228
+ @include responsive(down, tablet) {
229
+ margin-top: $spacing-xs;
230
+ margin-left: 0;
231
+ }
232
+ }
233
+
234
+ &__item--dropdown {
235
+
236
+ @include responsive(up, tablet) {
237
+
238
+ .nav__target {
239
+ @include calc(top, '100% +' $nav-item*0.5);
240
+ position: absolute;
241
+ left: 0;
242
+ width: $spacing-xl*2.5;
243
+ padding: $nav-item*0.5;
244
+ border-radius: $border-radius-md;
245
+ border: $border;
246
+ z-index: 1;
247
+ background-color: $background-paper;
248
+ }
249
+ }
250
+ }
251
+
252
+ &__trigger {
253
+
254
+ @include responsive(down, tablet) {
255
+ height: auto;
256
+ }
257
+ }
258
+ }
259
+ }
@@ -0,0 +1,189 @@
1
+ // —————————————————————————————————————————————————————————————————
2
+ // elements
3
+ // alignement
4
+ // —————————————————————————————————————————————————————————————————
5
+
6
+ // button apparition
7
+ @include keyframes(button-menu-opacity) {
8
+ 0% { opacity: 0; }
9
+ 50% { opacity: 0; }
10
+ 100% { opacity: 100%; }
11
+ }
12
+
13
+ // lines > close
14
+ @include keyframes(button-menu-open-before) {
15
+ 0% { transform: translateY($spacing-xs*1.5); }
16
+ 50% { transform: translateY(0);
17
+ transform: rotate(0); }
18
+ 100% { transform: rotate(45deg); }
19
+ }
20
+ @include keyframes(button-menu-open-after) {
21
+ 0% { transform: translateY(-$spacing-xs*1.5); }
22
+ 50% { transform: translateY(0);
23
+ transform: rotate(0); }
24
+ 100% { transform: rotate(-45deg); }
25
+ }
26
+
27
+ // close > lines
28
+ @include keyframes(button-menu-close-before) {
29
+ 0% { transform: rotate(45deg); }
30
+ 50% { transform: rotate(0);
31
+ transform: translateY(0); }
32
+ 100% { transform: translateY($spacing-xs*1.5); }
33
+ }
34
+ @include keyframes(button-menu-close-after) {
35
+ 0% { transform: rotate(-45deg); }
36
+ 50% { transform: rotate(0);
37
+ transform: translateY(0); }
38
+ 100% { transform: translateY(-$spacing-xs*1.5); }
39
+ }
40
+
41
+ // —————————————————————————————————————————————————————————————————
42
+ // elements
43
+ // —————————————————————————————————————————————————————————————————
44
+
45
+ .navbar {
46
+ top: 0;
47
+ left: 0;
48
+ width: 100%;
49
+ background-color: $background-paper;
50
+ border-bottom: $border;
51
+ z-index: 13;
52
+
53
+ @include responsive(up, tablet) {
54
+ height: $navbar-height;
55
+ }
56
+
57
+ @include responsive(down, tablet) {
58
+ z-index: 11;
59
+ }
60
+
61
+ &.section {
62
+ overflow: visible;
63
+ position: sticky;
64
+ }
65
+
66
+ .section__container {
67
+ display: flex;
68
+ flex-direction: row;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ padding-top: 0;
72
+ padding-bottom: 0;
73
+
74
+ @include responsive(up, tablet) {
75
+ height: 100%;
76
+ }
77
+
78
+ @include responsive(down, tablet) {
79
+ flex-direction: column;
80
+ align-items: stretch;
81
+ padding-top: 0;
82
+ }
83
+ }
84
+
85
+ &__main {
86
+ display: flex;
87
+ align-items: center;
88
+
89
+ @include responsive(down, tablet) {
90
+ height: $navbar-height-sm;
91
+ }
92
+ }
93
+
94
+ &__logo {
95
+ display: flex;
96
+ align-items: baseline;
97
+ font-weight: $font-bold;
98
+ flex-grow: 1;
99
+
100
+ > * {
101
+ margin-right: $spacing-xs;
102
+ }
103
+ }
104
+
105
+ &__button {
106
+ @include transition($transition-md, opacity);
107
+ animation: button-menu-opacity $transition-lg;
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: center;
111
+ cursor: pointer;
112
+ position: relative;
113
+ width: $spacing-md;
114
+ height: $spacing-md;
115
+
116
+ @include responsive(up, tablet) {
117
+ display: none;
118
+ }
119
+
120
+ &:before,
121
+ &:after,
122
+ span {
123
+ background-color: $text;
124
+ border-radius: 0.15rem;
125
+ }
126
+
127
+ &:before,
128
+ &:after {
129
+ @include pseudo-element('', auto, auto, auto, auto, $spacing-md, 2px);
130
+ @include transition($transition-md, transform);
131
+ }
132
+
133
+ &:before {
134
+ transform: translateY($spacing-xs*1.5);
135
+ animation: button-menu-close-before $transition-lg;
136
+ }
137
+
138
+ &:after {
139
+ transform: translateY(-$spacing-xs*1.5);
140
+ animation: button-menu-close-after $transition-lg;
141
+ }
142
+
143
+ span {
144
+ @include transition($transition-md, opacity);
145
+ position: absolute;
146
+ width: $spacing-md;
147
+ height: 2px;
148
+ }
149
+
150
+ &.js-opened {
151
+
152
+ &:before { animation: button-menu-open-before $transition-lg forwards; }
153
+ &:after { animation: button-menu-open-after $transition-lg forwards; }
154
+ span { opacity: 0; }
155
+ }
156
+ }
157
+
158
+ &__nav {
159
+
160
+ @include responsive(down, tablet) {
161
+ @include transition($transition-md, max-height);
162
+ align-items: flex-start;
163
+ max-height: 0;
164
+ overflow: hidden;
165
+
166
+ .js-opened & {
167
+ max-height: 80vh;
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ // —————————————————————————————————————————————————————————————————
174
+ // alignement
175
+ // —————————————————————————————————————————————————————————————————
176
+
177
+ .navbar--right {
178
+
179
+ .section__container {
180
+
181
+ @include responsive(up, tablet) {
182
+ flex-direction: row-reverse;
183
+ }
184
+ }
185
+
186
+ .navbar__main {
187
+ flex-direction: row-reverse;
188
+ }
189
+ }
@@ -1,9 +1,12 @@
1
1
  // —————————————————————————————————————————————————————————————————
2
2
  // elements
3
3
  // alignement
4
- // color
4
+ // direction
5
+ // fill
5
6
  // size
6
- // variants
7
+ // landing (website title on homepage)
8
+ // header (page title)
9
+ // dense
7
10
  // overrides
8
11
  // —————————————————————————————————————————————————————————————————
9
12
 
@@ -14,6 +17,7 @@
14
17
  .section {
15
18
  @include clamp(padding-right, $spacing-md, 4vw, $spacing-xl);
16
19
  @include clamp(padding-left, $spacing-md, 4vw, $spacing-xl);
20
+ width: 100%;
17
21
  overflow: hidden; // prevent horizontal scroll on mobile
18
22
  position: relative;
19
23
  display: flex;
@@ -55,11 +59,6 @@
55
59
  .section__label + & {
56
60
  margin-top: $spacing-sm;
57
61
  }
58
-
59
- .section__header--dense & {
60
- color: inherit;
61
- @extend %h4;
62
- }
63
62
  }
64
63
 
65
64
  &__subtitle {
@@ -88,18 +87,50 @@
88
87
  // alignement
89
88
  // —————————————————————————————————————————————————————————————————
90
89
 
91
- .section {
90
+ .section__container {
91
+ align-items: flex-start;
92
+ text-align: left;
92
93
 
93
- &--left { align-items: flex-start; text-align: left; }
94
- &--center { align-items: center; text-align: center; }
95
- &--right { align-items: flex-end; text-align: right; }
94
+ .section--center & { align-items: center; text-align: center; }
95
+ .section--right & { align-items: flex-end; text-align: right; }
96
96
  }
97
97
 
98
98
  // —————————————————————————————————————————————————————————————————
99
- // color
99
+ // direction
100
100
  // —————————————————————————————————————————————————————————————————
101
101
 
102
- @mixin color($background-color, $color-title: $primary, $color: $text) {
102
+ .section--landscape {
103
+
104
+ .section {
105
+
106
+ &__container {
107
+ display: flex;
108
+ flex-direction: row;
109
+ gap: $spacing-xl;
110
+ }
111
+
112
+ &__header {
113
+ flex-basis: 40%;
114
+ }
115
+
116
+ &__content {
117
+ padding-top: 0;
118
+ flex-basis: 60%;
119
+ }
120
+ }
121
+ }
122
+
123
+ // —————————————————————————————————————————————————————————————————
124
+ // fill
125
+ // —————————————————————————————————————————————————————————————————
126
+
127
+ @mixin fill(
128
+ $background-color,
129
+ $title-color: $primary,
130
+ $color: $text,
131
+ $paper-color: $background-paper,
132
+ $border-color: $border-color
133
+ ) {
103
134
  background-color: $background-color;
104
135
  color: $color;
105
136
 
@@ -110,16 +141,30 @@
110
141
  }
111
142
  }
112
143
 
113
- .section__title { color: $color-title; }
144
+ .section__title { color: $title-color; }
114
145
  .button--stroke { color: $color; }
146
+ .snippet {
147
+ border-color: $border-color;
148
+ }
115
149
  }
116
150
 
117
151
  .section {
118
-
119
152
  &--default { @include color($background-default); }
120
- &--paper { @include color($background-paper); }
121
- &--primary { @include color($primary, $primary-text, $primary-text); }
122
- &--primaryLight { @include color($primary-light); }
153
+ &--paper { @include fill($background-paper); }
154
+ &--primary { @include fill(
155
+ $primary, // background-color
156
+ $primary-contrast, // title-color
157
+ $primary-contrast, // color
158
+ $hover-contrast, // paper-color
159
+ $border-color-contrast // border-color
160
+ );}
161
+ &--primaryLight { @include fill(
162
+ $primary-light, // background-color
163
+ $text-contrast, // title-color
164
+ $text-contrast, // color
165
+ $hover-contrast, // paper-color
166
+ $border-color-contrast // border-color
167
+ );}
123
168
  }
124
169
 
125
170
  // —————————————————————————————————————————————————————————————————
@@ -132,23 +177,43 @@
132
177
  }
133
178
 
134
179
  // —————————————————————————————————————————————————————————————————
135
- // variants
180
+ // landing (website title on homepage)
136
181
  // —————————————————————————————————————————————————————————————————
137
182
 
138
183
  .section--landing {
139
- align-items: center;
140
184
 
185
+ .section__container {
186
+ @include clamp(padding-top, $spacing-lg, 10vw, $spacing-xxl);
187
+ @include clamp(padding-bottom, $spacing-lg, 10vw, $spacing-xxl);
188
+ }
141
189
  .section__title { @extend %h1; max-width: $desktop*0.5; }
142
190
  .section__subtitle { @extend %h5; }
191
+ .section__title + .section__subtitle { margin-top: $spacing-lg; }
143
192
  }
144
193
 
145
- // first section of the page for page title
194
+ // —————————————————————————————————————————————————————————————————
195
+ // header (page title)
196
+ // —————————————————————————————————————————————————————————————————
197
+
146
198
  .section--header {
147
199
 
148
200
  .section__title { @extend %h2; }
149
201
  .section__subtitle { @extend %subtitle; }
202
+ .section__title + .section__subtitle { margin-top: $spacing-lg; }
150
203
  }
151
204
 
205
+ // —————————————————————————————————————————————————————————————————
206
+ // dense
207
+ // —————————————————————————————————————————————————————————————————
208
+
209
+ .section__header--dense {
210
+
211
+ .section {
212
+
213
+ &__label { @extend %caption; font-weight: $font-bold; }
214
+ &__title { color: inherit; @extend %h4; }
215
+ }
216
+ }
152
217
  // —————————————————————————————————————————————————————————————————
153
218
  // overrides
154
219
  // —————————————————————————————————————————————————————————————————
@@ -0,0 +1,57 @@
1
+ $sidebar-width: 200px;
2
+
3
+ .sidebar {
4
+ transition: left $transition-md;
5
+ @include calc(height, '100vh - '$navbar-height);
6
+ position: sticky;
7
+ flex-shrink: 0;
8
+ border-right: $border;
9
+ width: $sidebar-width;
10
+ top: $navbar-height;
11
+ padding: $spacing-md;
12
+ overflow-y: scroll;
13
+ scrollbar-color: light;
14
+ z-index: 11;
15
+ background-color: $background-paper;
16
+
17
+ &.js-opened {
18
+ left: 0;
19
+ }
20
+
21
+ @include responsive(down, tablet) {
22
+ position: fixed;
23
+ height: 100vh;
24
+ top: 0;
25
+ left: -$sidebar-width;
26
+ padding-top: $navbar-height-sm;
27
+ z-index: 13;
28
+ }
29
+
30
+ &__button {
31
+ content: '';
32
+ border: solid $text;
33
+ border-width: 0 2px 2px 0;
34
+ padding: 4px;
35
+ transform: rotate(-45deg);
36
+ margin-right: $spacing-md;
37
+ display: none;
38
+
39
+ .page--withSidebar & { display: initial; }
40
+ @include responsive(up, tablet) { display: none !important; }
41
+
42
+ &--close {
43
+ position: absolute;
44
+ top: $navbar-height-sm*0.5;
45
+ left: $navbar-height-sm*0.5;
46
+ transform: translateY(-50%) rotate(135deg);
47
+ }
48
+ }
49
+
50
+ &__title {
51
+ @extend %overline;
52
+ color: $text-alt;
53
+ font-weight: $font-bold;
54
+ margin-bottom: $spacing-xs;
55
+ margin-left: 0;
56
+ }
57
+ }