@aotearoan/neon 23.0.2 → 23.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 (61) hide show
  1. package/dist/common/utils/NeonAlertService.cjs.js +1 -1
  2. package/dist/common/utils/NeonAlertService.cjs.js.map +1 -1
  3. package/dist/common/utils/NeonAlertService.es.js +31 -18
  4. package/dist/common/utils/NeonAlertService.es.js.map +1 -1
  5. package/dist/common/utils/NeonBannerService.cjs.js +2 -0
  6. package/dist/common/utils/NeonBannerService.cjs.js.map +1 -0
  7. package/dist/common/utils/NeonBannerService.es.js +67 -0
  8. package/dist/common/utils/NeonBannerService.es.js.map +1 -0
  9. package/dist/common/utils/NeonToastService.cjs.js +1 -1
  10. package/dist/common/utils/NeonToastService.cjs.js.map +1 -1
  11. package/dist/common/utils/NeonToastService.es.js +31 -18
  12. package/dist/common/utils/NeonToastService.es.js.map +1 -1
  13. package/dist/components/feedback/alert/NeonAlert.cjs.js +1 -1
  14. package/dist/components/feedback/alert/NeonAlert.cjs.js.map +1 -1
  15. package/dist/components/feedback/alert/NeonAlert.es.js +82 -72
  16. package/dist/components/feedback/alert/NeonAlert.es.js.map +1 -1
  17. package/dist/components/feedback/banner/NeonBanner.cjs.js +2 -0
  18. package/dist/components/feedback/banner/NeonBanner.cjs.js.map +1 -0
  19. package/dist/components/feedback/banner/NeonBanner.es.js +53 -0
  20. package/dist/components/feedback/banner/NeonBanner.es.js.map +1 -0
  21. package/dist/components/feedback/banner/NeonBanner.vue.cjs.js +2 -0
  22. package/dist/components/feedback/banner/NeonBanner.vue.cjs.js.map +1 -0
  23. package/dist/components/feedback/banner/NeonBanner.vue.es.js +36 -0
  24. package/dist/components/feedback/banner/NeonBanner.vue.es.js.map +1 -0
  25. package/dist/components/layout/page/NeonPage.cjs.js +1 -1
  26. package/dist/components/layout/page/NeonPage.cjs.js.map +1 -1
  27. package/dist/components/layout/page/NeonPage.es.js +13 -7
  28. package/dist/components/layout/page/NeonPage.es.js.map +1 -1
  29. package/dist/components/layout/page/NeonPage.vue.cjs.js +1 -1
  30. package/dist/components/layout/page/NeonPage.vue.cjs.js.map +1 -1
  31. package/dist/components/layout/page/NeonPage.vue.es.js +18 -13
  32. package/dist/components/layout/page/NeonPage.vue.es.js.map +1 -1
  33. package/dist/neon.cjs.js +1 -1
  34. package/dist/neon.es.js +217 -213
  35. package/dist/neon.es.js.map +1 -1
  36. package/dist/src/common/models/NeonAlertMessage.d.ts +4 -0
  37. package/dist/src/common/models/NeonBannerMessage.d.ts +20 -0
  38. package/dist/src/common/models/NeonToastMessage.d.ts +4 -0
  39. package/dist/src/common/utils/NeonAlertService.d.ts +7 -0
  40. package/dist/src/common/utils/NeonBannerService.d.ts +47 -0
  41. package/dist/src/common/utils/NeonToastService.d.ts +7 -0
  42. package/dist/src/components/feedback/alert/NeonAlert.d.ts +12 -0
  43. package/dist/src/components/feedback/banner/NeonBanner.d.ts +966 -0
  44. package/dist/src/components/feedback/banner/NeonBanner.vue.d.ts +2 -0
  45. package/dist/src/components/feedback/banner/NeonBannerModel.d.ts +6 -0
  46. package/dist/src/components/layout/page/NeonPage.d.ts +1433 -1
  47. package/dist/src/neon.d.ts +4 -0
  48. package/package.json +1 -1
  49. package/src/sass/components/_banner.scss +26 -0
  50. package/src/sass/components/_footer.scss +4 -22
  51. package/src/sass/components/_grid.scss +6 -20
  52. package/src/sass/components/_link.scss +1 -1
  53. package/src/sass/components/_page.scss +31 -5
  54. package/src/sass/components/_side-nav.scss +3 -3
  55. package/src/sass/components/_tabs.scss +3 -3
  56. package/src/sass/components/_top-nav.scss +1 -1
  57. package/src/sass/components/components.scss +1 -0
  58. package/src/sass/global/_base-html.scss +20 -0
  59. package/src/sass/includes/_dependencies.scss +3 -7
  60. package/src/sass/theme.scss +4 -0
  61. package/src/sass/variables.scss +27 -3
@@ -3,6 +3,7 @@ export { default as NeonAlert } from './components/feedback/alert/NeonAlert.vue'
3
3
  export { default as NeonAlertContainer } from './components/feedback/alert/container/NeonAlertContainer.vue';
4
4
  export { default as NeonAnchor } from './components/navigation/anchor/NeonAnchor.vue';
5
5
  export { default as NeonBadge } from './components/presentation/badge/NeonBadge.vue';
6
+ export { default as NeonBanner } from './components/feedback/banner/NeonBanner.vue';
6
7
  export { default as NeonButton } from './components/user-input/button/NeonButton.vue';
7
8
  export { default as NeonCard } from './components/layout/card/NeonCard.vue';
8
9
  export { default as NeonCardBody } from './components/layout/card/body/NeonCardBody.vue';
@@ -98,6 +99,8 @@ export type { NeonAlertAction } from './common/models/NeonAlertAction';
98
99
  export type { NeonAlertMessage } from './common/models/NeonAlertMessage';
99
100
  export type { NeonAlertModel } from './components/feedback/alert/NeonAlertModel';
100
101
  export type { NeonAvailableSpace } from './common/models/NeonAvailableSpace';
102
+ export type { NeonBannerMessage } from './common/models/NeonBannerMessage';
103
+ export type { NeonBannerModel } from './components/feedback/banner/NeonBannerModel';
101
104
  export type { NeonCardListModel } from './common/models/NeonCardListModel';
102
105
  export type { NeonCarouselImage } from './common/models/NeonCarouselImage';
103
106
  export type { NeonContrastAccessibility } from './common/models/NeonContrastAccessibility';
@@ -121,6 +124,7 @@ export type { NeonToggleModel } from './common/models/NeonToggleModel';
121
124
  export type { NeonTreeMenuLinkModel } from './common/models/NeonTreeMenuLinkModel';
122
125
  export type { NeonTreeMenuSectionModel } from './common/models/NeonTreeMenuSectionModel';
123
126
  export { NeonAlertService } from './common/utils/NeonAlertService';
127
+ export { NeonBannerService } from './common/utils/NeonBannerService';
124
128
  export { NeonClipboardService, NeonClipboardSupport } from './common/utils/NeonClipboardService';
125
129
  export { NeonClosableUtils } from './common/utils/NeonClosableUtils';
126
130
  export { NeonDateUtils } from './common/utils/NeonDateUtils';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aotearoan/neon",
3
3
  "description": "Neon is a lightweight design library of Vue 3 components with minimal dependencies.",
4
- "version": "23.0.2",
4
+ "version": "23.2.0",
5
5
  "main": "./dist/neon.cjs.js",
6
6
  "module": "./dist/neon.es.js",
7
7
  "types": "./dist/src/neon.d.ts",
@@ -0,0 +1,26 @@
1
+ @use '../includes/responsive';
2
+
3
+ @mixin banner {
4
+ .neon-banner {
5
+ z-index: var(--neon-z-index-top);
6
+
7
+ &__action {
8
+ margin-left: auto;
9
+ }
10
+
11
+ &__message {
12
+ --neon-font-weight-strong: var(--neon-font-weight-semi-bold);
13
+ }
14
+
15
+ .neon-note__content {
16
+ width: 100%;
17
+ max-width: calc(var(--neon-max-width-page));
18
+ display: flex;
19
+ justify-content: space-between;
20
+ flex-direction: row;
21
+ align-items: center;
22
+ gap: var(--neon-space-24);
23
+ padding: 0 var(--neon-gutter);
24
+ }
25
+ }
26
+ }
@@ -8,45 +8,27 @@
8
8
  background-color: var(--neon-background-color-footer);
9
9
  border-top: var(--neon-border-top-footer);
10
10
  color: var(--neon-color-neutral);
11
- width: 100vw;
11
+ margin: 0 calc(-1 * var(--neon-gutter));
12
12
 
13
13
  &__container {
14
14
  display: flex;
15
15
  flex-direction: row;
16
16
  justify-content: center;
17
17
  width: 100%;
18
- max-width: calc(var(--neon-max-width-page) - 2 * var(--neon-gutter-desktop));
18
+ max-width: 100%;
19
19
  line-height: var(--neon-line-height-one);
20
- margin-left: auto;
21
- margin-right: auto;
20
+ height: var(--neon-footer-height);
21
+ padding: 0 var(--neon-gutter);
22
22
 
23
23
  @include responsive.responsive(larger-than-tablet) {
24
24
  font-size: var(--neon-font-size-m);
25
- height: var(--neon-footer-height-desktop);
26
- padding: 0 var(--neon-gutter-desktop);
27
25
  max-width: var(--neon-max-width-page);
28
26
  }
29
27
 
30
28
  @include responsive.responsive(tablet) {
31
29
  font-size: var(--neon-font-size-s);
32
- height: var(--neon-footer-height-tablet);
33
- padding: 0 var(--neon-gutter-tablet);
34
30
  max-width: 100vw;
35
31
  }
36
-
37
- @include responsive.responsive(mobile-large) {
38
- font-size: var(--neon-font-size-s);
39
- height: var(--neon-footer-height-mobile);
40
- padding: 0 var(--neon-gutter-mobile);
41
- }
42
- }
43
- }
44
-
45
- .neon-page--with-side-nav .neon-footer {
46
- @include layout.side-nav-offset;
47
-
48
- .neon-footer__container {
49
- max-width: calc(var(--neon-max-width-page) - var(--neon-side-nav-width) - 2 * var(--neon-gutter-desktop));
50
32
  }
51
33
  }
52
34
  }
@@ -5,22 +5,12 @@
5
5
  .neon-grid {
6
6
  width: 100%;
7
7
  max-width: 100%;
8
- @include layout.min-height(100, 'var(--neon-footer-height-desktop)');
8
+ @include layout.min-height(100, 'var(--neon-footer-height) + var(--neon-border-width-footer)');
9
9
  display: grid;
10
-
11
- @include responsive.responsive(larger-than-tablet) {
12
- padding: var(--neon-gutter-desktop) 0;
13
- gap: var(--neon-gutter-desktop);
14
- }
15
-
16
- @include responsive.responsive(tablet) {
17
- padding: var(--neon-gutter-tablet) 0;
18
- gap: var(--neon-gutter-tablet);
19
- }
10
+ padding: var(--neon-gutter);
11
+ gap: var(--neon-gutter);
20
12
 
21
13
  @include responsive.responsive(mobile-large) {
22
- padding: var(--neon-gutter-mobile) 0;
23
- gap: var(--neon-gutter-mobile);
24
14
  display: flex;
25
15
  flex-direction: column;
26
16
  }
@@ -49,22 +39,18 @@
49
39
  }
50
40
  }
51
41
 
52
- .neon-page--with-side-nav .neon-grid {
53
- @include layout.side-nav-offset;
54
- }
55
-
56
42
  .neon-page--with-top-nav .neon-page__container {
57
43
  .neon-grid {
58
44
  @include responsive.responsive(larger-than-tablet) {
59
- @include layout.min-height(100, 'var(--neon-top-nav-height-desktop) + var(--neon-footer-height-desktop)');
45
+ @include layout.min-height(100, 'var(--neon-top-nav-height) + var(--neon-border-width-top-nav) + var(--neon-footer-height)');
60
46
  }
61
47
 
62
48
  @include responsive.responsive(tablet) {
63
- @include layout.min-height(100, 'var(--neon-top-nav-height-tablet) + var(--neon-footer-height-tablet)');
49
+ @include layout.min-height(100, 'var(--neon-top-nav-height) + var(--neon-border-width-top-nav) + var(--neon-footer-height)');
64
50
  }
65
51
 
66
52
  @include responsive.responsive(mobile-large) {
67
- @include layout.min-height(100, 'var(--neon-top-nav-height-mobile) + var(--neon-footer-height-mobile)');
53
+ @include layout.min-height(100, 'var(--neon-top-nav-height) + var(--neon-border-width-top-nav) + var(--neon-footer-height)');
68
54
  }
69
55
  }
70
56
  }
@@ -36,7 +36,7 @@
36
36
  }
37
37
  }
38
38
 
39
- &.neon-link--no-style {
39
+ &.neon-link--no-style:not(.neon-button) {
40
40
  text-decoration: none;
41
41
 
42
42
  &,
@@ -11,20 +11,24 @@
11
11
  &--with-top-nav .neon-page__container {
12
12
  @include responsive.responsive(larger-than-tablet) {
13
13
  padding-top: var(--neon-top-nav-height-desktop);
14
- @include layout.min-height(100, 'var(--neon-footer-height-desktop) + var(--neon-border-width-footer)');
14
+ @include layout.min-height(100, 'var(--neon-top-nav-height) + var(--neon-border-width-top-nav) + var(--neon-footer-height) + var(--neon-border-width-footer)');
15
15
  }
16
16
 
17
17
  @include responsive.responsive(tablet) {
18
18
  padding-top: var(--neon-top-nav-height-tablet);
19
- @include layout.min-height(100, 'var(--neon-footer-height-tablet) + var(--neon-border-width-footer)');
19
+ @include layout.min-height(100, 'var(--neon-top-nav-height) + var(--neon-border-width-top-nav) + var(--neon-footer-height) + var(--neon-border-width-footer)');
20
20
  }
21
21
 
22
22
  @include responsive.responsive(mobile-large) {
23
23
  padding-top: var(--neon-top-nav-height-mobile);
24
- @include layout.min-height(100, 'var(--neon-footer-height-mobile) + var(--neon-border-width-footer)');
24
+ @include layout.min-height(100, 'var(--neon-top-nav-height) + var(--neon-border-width-top-nav) + var(--neon-footer-height) + var(--neon-border-width-footer)');
25
25
  }
26
26
  }
27
27
 
28
+ .neon-page__content-wrapper {
29
+ flex-direction: row;
30
+ }
31
+
28
32
  .neon-page__container {
29
33
  @include responsive.responsive(larger-than-tablet) {
30
34
  padding-left: var(--neon-gutter-desktop);
@@ -48,9 +52,31 @@
48
52
 
49
53
  &--left {
50
54
  &.neon-page--with-side-nav {
51
- .neon-page__container {
52
- @include responsive.responsive(larger-than-tablet) {
55
+ @include responsive.responsive(larger-than-tablet) {
56
+ .neon-page__container {
53
57
  padding-left: 0;
58
+ padding-right: 0;
59
+ }
60
+
61
+ .neon-footer {
62
+ margin: 0;
63
+ position: relative;
64
+ border-top: none;
65
+
66
+ &__container {
67
+ z-index: var(--neon-z-index-above);
68
+ }
69
+
70
+ &:before {
71
+ content: '';
72
+ position: absolute;
73
+ top: 0;
74
+ left: 0;
75
+ height: var(--neon-footer-height);
76
+ width: calc(100vw - var(--neon-side-nav-width));
77
+ border-top: var(--neon-border-color) var(--neon-border-style) var(--neon-border-width-footer);
78
+ background-color: var(--neon-background-color-footer);
79
+ }
54
80
  }
55
81
  }
56
82
  }
@@ -4,14 +4,14 @@
4
4
 
5
5
  @mixin side-nav {
6
6
  .neon-side-nav {
7
- position: fixed;
8
- bottom: 0;
9
- left: 0;
7
+ position: sticky;
8
+ top: 0;
10
9
  background-color: var(--neon-background-color-side-nav);
11
10
  border-right: var(--neon-border);
12
11
 
13
12
  @include responsive.responsive(larger-than-tablet) {
14
13
  width: var(--neon-side-nav-width);
14
+ min-width: var(--neon-side-nav-width);
15
15
  @include layout.min-height(100);
16
16
  @include layout.height(100);
17
17
  }
@@ -137,9 +137,9 @@
137
137
 
138
138
  .neon-tabs__menu-items--full-width-mobile {
139
139
  @include responsive.responsive(mobile-large) {
140
- margin: 0 calc(-1 * var(--neon-gutter-mobile));
141
- max-width: calc(100% + 2 * var(--neon-gutter-mobile));
142
- width: calc(100% + 2 * var(--neon-gutter-mobile));
140
+ margin: 0 calc(-2 * var(--neon-gutter-mobile));
141
+ max-width: calc(100% + 4 * var(--neon-gutter-mobile));
142
+ width: calc(100% + 4 * var(--neon-gutter-mobile));
143
143
  }
144
144
  }
145
145
 
@@ -4,7 +4,7 @@
4
4
  @mixin top-nav {
5
5
  .neon-top-nav {
6
6
  width: 100%;
7
- position: fixed;
7
+ position: sticky;
8
8
  top: 0;
9
9
  left: 0;
10
10
  display: flex;
@@ -57,3 +57,4 @@
57
57
  @forward './swiper';
58
58
  @forward './mobile-menu';
59
59
  @forward './page-container';
60
+ @forward './banner';
@@ -186,4 +186,24 @@
186
186
  .neon-color-error {
187
187
  color: var(--neon-color-error);
188
188
  }
189
+
190
+ .neon-background-color-disabled-background {
191
+ background-color: var(--neon-color-disabled-background);
192
+ }
193
+
194
+ .neon-color-disabled-background {
195
+ color: var(--neon-color-disabled-background);
196
+ }
197
+
198
+ .neon-border-color-disabled-border {
199
+ border-color: var(--neon-color-disabled-border);
200
+ }
201
+
202
+ .neon-color-disabled-border {
203
+ color: var(--neon-color-disabled-border);
204
+ }
205
+
206
+ .neon-color-disabled-text {
207
+ color: var(--neon-color-disabled-text);
208
+ }
189
209
  }
@@ -5,11 +5,7 @@
5
5
  $neon-component-dependencies: (
6
6
  NeonActionMenu: [NeonLink,
7
7
  NeonIcon],
8
- NeonAlert: [NeonIcon,
9
- NeonLink,
10
- NeonToastContainer,
11
- NeonIcon,
12
- NeonLink],
8
+ NeonAlert: [NeonToastContainer, NeonIcon, NeonLink],
13
9
  NeonAnchor: [],
14
10
  NeonBadge: [NeonIcon, NeonFile, NeonButton, NeonInput, NeonList, NeonExpansionIndicator, NeonIcon, NeonLink],
15
11
  NeonButton: [NeonExpansionIndicator,
@@ -77,7 +73,6 @@
77
73
  NeonNote: [NeonButton,
78
74
  NeonIcon,
79
75
  NeonExpansionIndicator,
80
- NeonIcon,
81
76
  NeonLink, NeonInline, NeonStack],
82
77
  NeonNotificationCounter: [],
83
78
  NeonNumber: [NeonButton,
@@ -87,7 +82,7 @@
87
82
  NeonIcon,
88
83
  NeonLink],
89
84
  NeonLinearProgress: [NeonIcon],
90
- NeonPage: [],
85
+ NeonPage: [NeonBanner, NeonButton, NeonNote, NeonIcon, NeonLink, NeonExpansionIndicator, NeonAlert],
91
86
  NeonPassword: [NeonInput,
92
87
  NeonIcon],
93
88
  NeonRangeSlider: [NeonSlider],
@@ -130,6 +125,7 @@
130
125
  NeonSwiper: [],
131
126
  NeonMobileMenu: [NeonIcon, NeonLink],
132
127
  NeonPageContainer: [NeonIcon],
128
+ NeonBanner: [NeonButton, NeonNote, NeonIcon, NeonLink, NeonExpansionIndicator],
133
129
  );
134
130
 
135
131
  $neon-flattened-components: [];
@@ -270,4 +270,8 @@ $neon-components: null !default;
270
270
  @if index($neon-flattened-components, NeonPageContainer) {
271
271
  @include components.page-container;
272
272
  }
273
+
274
+ @if index($neon-flattened-components, NeonBanner) {
275
+ @include components.banner;
276
+ }
273
277
  }
@@ -199,12 +199,36 @@
199
199
  --neon-top-nav-height-desktop: calc(var(--neon-size-l) + var(--neon-space-32));
200
200
  --neon-border-width-top-nav: 1rem;
201
201
 
202
+ @include responsive.responsive(larger-than-tablet) {
203
+ --neon-top-nav-height: var(--neon-top-nav-height-desktop);
204
+ }
205
+
206
+ @include responsive.responsive(tablet) {
207
+ --neon-top-nav-height: var(--neon-top-nav-height-tablet);
208
+ }
209
+
210
+ @include responsive.responsive(mobile-large) {
211
+ --neon-top-nav-height: var(--neon-top-nav-height-mobile);
212
+ }
213
+
202
214
  /* footer */
203
215
  --neon-footer-height-mobile: calc(var(--neon-font-size-s) + var(--neon-space-32));
204
216
  --neon-footer-height-tablet: calc(var(--neon-font-size-s) + var(--neon-space-32));
205
217
  --neon-footer-height-desktop: calc(var(--neon-base-font-size) + var(--neon-space-48));
206
218
  --neon-border-width-footer: 1rem;
207
219
 
220
+ @include responsive.responsive(larger-than-tablet) {
221
+ --neon-footer-height: var(--neon-footer-height-desktop);
222
+ }
223
+
224
+ @include responsive.responsive(tablet) {
225
+ --neon-footer-height: var(--neon-footer-height-tablet);
226
+ }
227
+
228
+ @include responsive.responsive(mobile-large) {
229
+ --neon-footer-height: var(--neon-footer-height-mobile);
230
+ }
231
+
208
232
  /* side nav */
209
233
  --neon-side-nav-width: calc(80 * var(--neon-space-4));
210
234
 
@@ -312,7 +336,7 @@
312
336
  --neon-border-width-drawer: 0;
313
337
  --neon-border-radius-drawer: 16rem;
314
338
  --neon-height-drawer: auto;
315
- --neon-width-drawer: --neon-side-nav-width;
339
+ --neon-width-drawer: var(--neon-side-nav-width);
316
340
 
317
341
  /* radio buttons */
318
342
  --neon-border-radius-radio-button: 50%;
@@ -615,7 +639,7 @@
615
639
  --neon-background-color-drawer: var(--neon-background-color-card);
616
640
 
617
641
  /* input */
618
- --neon-color-input: var(--neon-color-text);
642
+ --neon-color-input: var(--neon-color-text-secondary);
619
643
  --neon-border-color-input: var(--neon-color-neutral-d2);
620
644
  --neon-background-color-input: rgba(var(--neon-rgb-neutral-d5), 0.5);
621
645
  --neon-color-placeholder: var(--neon-color-low-contrast-d3);
@@ -932,7 +956,7 @@
932
956
  --neon-color-radio-button-label: var(--neon-color-label);
933
957
 
934
958
  /* input */
935
- --neon-color-input: var(--neon-color-text);
959
+ --neon-color-input: var(--neon-color-text-secondary);
936
960
  --neon-border-color-input: var(--neon-color-neutral-l3);
937
961
  --neon-background-color-input: var(--neon-color-high-contrast-l5);
938
962
  --neon-color-placeholder: var(--neon-color-low-contrast-l3);