@aotearoan/neon 28.3.0 → 28.4.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 (64) hide show
  1. package/dist/components/feedback/alert/NeonAlert.cjs.js +1 -1
  2. package/dist/components/feedback/alert/NeonAlert.cjs.js.map +1 -1
  3. package/dist/components/feedback/alert/NeonAlert.es.js +1 -1
  4. package/dist/components/feedback/alert/NeonAlert.es.js.map +1 -1
  5. package/dist/components/feedback/splash-loader/NeonSplashLoader.vue.cjs.js +1 -1
  6. package/dist/components/feedback/splash-loader/NeonSplashLoader.vue.cjs.js.map +1 -1
  7. package/dist/components/feedback/splash-loader/NeonSplashLoader.vue.es.js +15 -15
  8. package/dist/components/feedback/splash-loader/NeonSplashLoader.vue.es.js.map +1 -1
  9. package/dist/components/layout/card-list/NeonCardList.cjs.js +1 -1
  10. package/dist/components/layout/card-list/NeonCardList.cjs.js.map +1 -1
  11. package/dist/components/layout/card-list/NeonCardList.es.js +32 -26
  12. package/dist/components/layout/card-list/NeonCardList.es.js.map +1 -1
  13. package/dist/components/layout/card-list/NeonCardList.vue.cjs.js +1 -1
  14. package/dist/components/layout/card-list/NeonCardList.vue.cjs.js.map +1 -1
  15. package/dist/components/layout/card-list/NeonCardList.vue.es.js +57 -61
  16. package/dist/components/layout/card-list/NeonCardList.vue.es.js.map +1 -1
  17. package/dist/components/layout/list-layout/NeonListLayout.cjs.js +2 -0
  18. package/dist/components/layout/list-layout/NeonListLayout.cjs.js.map +1 -0
  19. package/dist/components/layout/list-layout/NeonListLayout.es.js +99 -0
  20. package/dist/components/layout/list-layout/NeonListLayout.es.js.map +1 -0
  21. package/dist/components/layout/list-layout/NeonListLayout.vue.cjs.js +2 -0
  22. package/dist/components/layout/list-layout/NeonListLayout.vue.cjs.js.map +1 -0
  23. package/dist/components/layout/list-layout/NeonListLayout.vue.es.js +58 -0
  24. package/dist/components/layout/list-layout/NeonListLayout.vue.es.js.map +1 -0
  25. package/dist/components/presentation/empty-state/NeonEmptyState.cjs.js +2 -0
  26. package/dist/components/presentation/empty-state/NeonEmptyState.cjs.js.map +1 -0
  27. package/dist/components/presentation/empty-state/NeonEmptyState.es.js +62 -0
  28. package/dist/components/presentation/empty-state/NeonEmptyState.es.js.map +1 -0
  29. package/dist/components/presentation/empty-state/NeonEmptyState.vue.cjs.js +2 -0
  30. package/dist/components/presentation/empty-state/NeonEmptyState.vue.cjs.js.map +1 -0
  31. package/dist/components/presentation/empty-state/NeonEmptyState.vue.es.js +54 -0
  32. package/dist/components/presentation/empty-state/NeonEmptyState.vue.es.js.map +1 -0
  33. package/dist/model/presentation/empty-state/NeonEmptyStateType.cjs.js +2 -0
  34. package/dist/model/presentation/empty-state/NeonEmptyStateType.cjs.js.map +1 -0
  35. package/dist/model/presentation/empty-state/NeonEmptyStateType.es.js +5 -0
  36. package/dist/model/presentation/empty-state/NeonEmptyStateType.es.js.map +1 -0
  37. package/dist/neon.cjs.js +1 -1
  38. package/dist/neon.es.js +229 -223
  39. package/dist/neon.es.js.map +1 -1
  40. package/dist/src/components/layout/card-list/NeonCardList.d.ts +128 -7
  41. package/dist/src/components/layout/drawer/NeonDrawer.d.ts +1 -1
  42. package/dist/src/components/layout/list-layout/NeonListLayout.d.ts +2764 -0
  43. package/dist/src/components/layout/list-layout/NeonListLayout.vue.d.ts +2 -0
  44. package/dist/src/components/presentation/empty-state/NeonEmptyState.d.ts +613 -0
  45. package/dist/src/components/presentation/empty-state/NeonEmptyState.vue.d.ts +2 -0
  46. package/dist/src/model/presentation/empty-state/NeonEmptyStateType.d.ts +9 -0
  47. package/dist/src/model/user-input/button/NeonButtonModel.d.ts +19 -0
  48. package/dist/src/neon.d.ts +4 -0
  49. package/package.json +1 -1
  50. package/src/sass/components/_card-list.scss +19 -0
  51. package/src/sass/components/_empty-state.scss +47 -0
  52. package/src/sass/components/_header.scss +2 -0
  53. package/src/sass/components/_list-layout.scss +37 -0
  54. package/src/sass/components/_page-container.scss +1 -0
  55. package/src/sass/components/components.scss +2 -0
  56. package/src/sass/core/_transitions.scss +15 -0
  57. package/src/sass/global/base-html.scss +0 -4
  58. package/src/sass/includes/_dependencies.scss +2 -0
  59. package/src/sass/theme.scss +8 -0
  60. package/src/sass/variables-global.scss +7 -0
  61. package/dist/components/feedback/alert/container/NeonDialogContainer.cjs2.js +0 -2
  62. package/dist/components/feedback/alert/container/NeonDialogContainer.cjs2.js.map +0 -1
  63. package/dist/components/feedback/alert/container/NeonDialogContainer.es2.js +0 -25
  64. package/dist/components/feedback/alert/container/NeonDialogContainer.es2.js.map +0 -1
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": "28.3.0",
4
+ "version": "28.4.0",
5
5
  "main": "./dist/neon.cjs.js",
6
6
  "module": "./dist/neon.es.js",
7
7
  "types": "./dist/src/neon.d.ts",
@@ -21,7 +21,14 @@
21
21
 
22
22
  &__header {
23
23
  align-items: center;
24
+ user-select: none;
24
25
  margin-bottom: var(--neon-space-16);
26
+ font-size: var(--neon-font-size-xs);
27
+ color: var(--neon-color-text-primary);
28
+
29
+ @include responsive.responsive(mobile-large) {
30
+ display: none;
31
+ }
25
32
  }
26
33
 
27
34
  &__total {
@@ -36,6 +43,18 @@
36
43
 
37
44
  &__cards {
38
45
  border-top: var(--neon-border);
46
+ position: relative;
47
+
48
+ .neon-splash-loader {
49
+ position: absolute;
50
+ width: 100%;
51
+ height: 100%;
52
+ top: 0;
53
+ left: 0;
54
+ right: 0;
55
+ bottom: 0;
56
+ z-index: var(--neon-z-index-above);
57
+ }
39
58
  }
40
59
 
41
60
  .neon-card-list__card {
@@ -0,0 +1,47 @@
1
+ @use '../includes/responsive';
2
+
3
+ @mixin empty-state {
4
+ .neon-empty-state {
5
+ margin-left: auto;
6
+ margin-right: auto;
7
+ margin-top: var(--neon-space-32);
8
+ width: 100%;
9
+ height: 100%;
10
+ max-width: var(--neon-max-width-empty-state);
11
+ text-align: center;
12
+
13
+ .neon-empty-state__title {
14
+ padding-top: 0;
15
+ }
16
+
17
+ .neon-empty-state__illustration {
18
+ width: 100%;
19
+ }
20
+
21
+ .neon-empty-state__ctas {
22
+ justify-content: center;
23
+ }
24
+
25
+ .neon-empty-state__cta {
26
+ margin-bottom: var(--neon-space-8);
27
+ }
28
+
29
+ &.neon-empty-state--error {
30
+ .neon-empty-state__title {
31
+ color: var(--neon-color-disabled-text);
32
+ }
33
+
34
+ .neon-empty-state__subtitle {
35
+ font-size: var(--neon-h1-size);
36
+ }
37
+ }
38
+
39
+ @include responsive.responsive(larger-than-mobile-large) {
40
+ align-items: center;
41
+
42
+ .neon-empty-state__title {
43
+ align-content: center;
44
+ }
45
+ }
46
+ }
47
+ }
@@ -3,6 +3,8 @@
3
3
 
4
4
  @mixin header {
5
5
  .neon-header {
6
+ margin-top: var(--neon-space-24);
7
+ margin-bottom: var(--neon-space-40);
6
8
  gap: var(--neon-space-24);
7
9
 
8
10
  &__content {
@@ -0,0 +1,37 @@
1
+ @use '../includes/responsive';
2
+
3
+ @mixin list-layout {
4
+ .neon-list-layout {
5
+ position: relative;
6
+ padding-bottom: calc(var(--neon-space-20) + var(--neon-height-mobile-menu) + var(--neon-border-width));
7
+ gap: 0;
8
+ width: 100%;
9
+ max-width: 100%;
10
+ flex: 1 0 auto;
11
+ }
12
+
13
+ /* All min-height logic */
14
+ @include responsive.responsive(larger-than-mobile-large) {
15
+ .neon-page--with-footer {
16
+ .neon-list-layout {
17
+ min-height: calc(100% - (var(--neon-footer-height) + var(--neon-border-width-footer) + var(--neon-top-nav-height)));
18
+ }
19
+ }
20
+ }
21
+
22
+ @include responsive.responsive(tablet) {
23
+ .neon-list-layout {
24
+ max-width: 100%;
25
+ }
26
+ }
27
+
28
+ .neon-page--left.neon-page--with-side-nav {
29
+ @include responsive.responsive(larger-than-tablet) {
30
+ .neon-list-layout {
31
+ max-width: calc(100% - 2 * var(--neon-gutter));
32
+ margin-left: var(--neon-gutter);
33
+ margin-right: var(--neon-gutter);
34
+ }
35
+ }
36
+ }
37
+ }
@@ -4,6 +4,7 @@
4
4
 
5
5
  @mixin page-container {
6
6
  .neon-page-container {
7
+ position: relative;
7
8
  padding-bottom: calc(var(--neon-space-20) + var(--neon-height-mobile-menu) + var(--neon-border-width));
8
9
  gap: var(--neon-gutter);
9
10
  width: 100%;
@@ -66,3 +66,5 @@
66
66
  @forward './filter';
67
67
  @forward './search-filter';
68
68
  @forward './filter-bar';
69
+ @forward './empty-state';
70
+ @forward './list-layout';
@@ -10,4 +10,19 @@
10
10
  opacity: 0;
11
11
  }
12
12
  }
13
+
14
+ .neon-splash-transition {
15
+ &-enter-active {
16
+ transition: opacity ease-in-out var(--neon-animation-speed-fast);
17
+ }
18
+
19
+ &-leave-active {
20
+ transition: opacity ease-in-out var(--neon-animation-speed-slowest);
21
+ }
22
+
23
+ &-enter-from,
24
+ &-leave-to {
25
+ opacity: 0;
26
+ }
27
+ }
13
28
  }
@@ -21,10 +21,6 @@
21
21
  line-height: var(--neon-line-height-ratio);
22
22
 
23
23
  @include layout.min-height(100);
24
-
25
- @include responsive.responsive(mobile-large) {
26
- font-size: 17px; // don't use rems here - body font must be defined in pixels
27
- }
28
24
  }
29
25
 
30
26
  .neon-closable--open {
@@ -141,6 +141,8 @@
141
141
  NeonFilter: [NeonButton, NeonInput, NeonLink, NeonStack, NeonSwitch, NeonExpansionIndicator, NeonIcon, NeonLink, NeonFieldGroup, NeonDropdown, NeonBadge],
142
142
  NeonSearchFilter: [NeonButton, NeonInput, NeonLink, NeonStack, NeonSwitch, NeonExpansionIndicator, NeonIcon, NeonLink, NeonFieldGroup, NeonDropdown, NeonBadge],
143
143
  NeonFilterBar: [NeonInline, NeonSwiper],
144
+ NeonEmptyState: [NeonButton, NeonIcon, NeonInline, NeonStack, NeonExpansionIndicator, NeonLink],
145
+ NeonListLayout: [NeonBreadcrumbs, NeonButton, NeonCard, NeonCardBody, NeonCardHeader, NeonCardList, NeonEmptyState, NeonExpansionIndicator, NeonHeader, NeonIcon, NeonInline, NeonLink, NeonNote, NeonPagination, NeonSelectableCard, NeonStack, NeonSwiper, NeonSwitch],
144
146
  );
145
147
 
146
148
  $neon-flattened-components: [];
@@ -312,4 +312,12 @@ $neon-components: null !default;
312
312
  @if index($neon-flattened-components, NeonFilterBar) {
313
313
  @include components.filter-bar;
314
314
  }
315
+
316
+ @if index($neon-flattened-components, NeonEmptyState) {
317
+ @include components.empty-state;
318
+ }
319
+
320
+ @if index($neon-flattened-components, NeonListLayout) {
321
+ @include components.list-layout;
322
+ }
315
323
  }
@@ -1396,4 +1396,11 @@
1396
1396
  * Width of the filter content when open
1397
1397
  */
1398
1398
  --neon-width-filter-content: 250rem;
1399
+
1400
+ /* empty state */
1401
+ /**
1402
+ * @component NeonEmptyState
1403
+ * Max width of the empty state content
1404
+ */
1405
+ --neon-max-width-empty-state: 416rem;
1399
1406
  }
@@ -1,2 +0,0 @@
1
- "use strict";const o=require("../../../../utils/feedback/dialog/NeonDialogService.cjs.js"),l=require("vue"),a=require("../../dialog/NeonDialog.vue.cjs.js"),i=l.defineComponent({name:"NeonDialogContainer",components:{NeonDialog:a},props:{modelValue:{type:Object}},setup(n,{emit:e}){return{onButtonClick:t=>{e("update:modelValue",{...n.modelValue,open:!1}),setTimeout(()=>{e("update:modelValue",o.NeonDialogService.defaultDialogMessage)},1e3),o.NeonDialogService.resolve(t)}}}});module.exports=i;
2
- //# sourceMappingURL=NeonDialogContainer.cjs2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NeonDialogContainer.cjs2.js","sources":["../../../../../src/components/feedback/alert/container/NeonDialogContainer.ts"],"sourcesContent":["import type { NeonDialogMessage } from '@/model/feedback/dialog/NeonDialogMessage';\nimport { NeonDialogService } from '@/utils/feedback/dialog/NeonDialogService';\nimport { defineComponent } from 'vue';\nimport NeonDialog from '../../dialog/NeonDialog.vue';\n\n/**\n * This is an internal component for rendering alerts.\n */\nexport default defineComponent({\n name: 'NeonDialogContainer',\n components: {\n NeonDialog,\n },\n props: {\n modelValue: { type: Object as () => NeonDialogMessage },\n },\n setup(props, { emit }) {\n const onButtonClick = (choice: boolean) => {\n emit('update:modelValue', { ...props.modelValue, open: false });\n setTimeout(() => {\n emit('update:modelValue', NeonDialogService.defaultDialogMessage);\n }, 1000);\n NeonDialogService.resolve(choice);\n };\n\n return {\n onButtonClick,\n };\n },\n});\n"],"names":["NeonDialogContainer","defineComponent","NeonDialog","props","emit","choice","NeonDialogService"],"mappings":"4JAQAA,EAAeC,kBAAgB,CAC7B,KAAM,sBACN,WAAY,CACV,WAAAC,CAAA,EAEF,MAAO,CACL,WAAY,CAAE,KAAM,MAAA,CAAkC,EAExD,MAAMC,EAAO,CAAE,KAAAC,GAAQ,CASrB,MAAO,CACL,cATqBC,GAAoB,CACzCD,EAAK,oBAAqB,CAAE,GAAGD,EAAM,WAAY,KAAM,GAAO,EAC9D,WAAW,IAAM,CACfC,EAAK,oBAAqBE,EAAAA,kBAAkB,oBAAoB,CAClE,EAAG,GAAI,EACPA,EAAAA,kBAAkB,QAAQD,CAAM,CAClC,CAGE,CAEJ,CACF,CAAC"}
@@ -1,25 +0,0 @@
1
- import { NeonDialogService as o } from "../../../../utils/feedback/dialog/NeonDialogService.es.js";
2
- import { defineComponent as a } from "vue";
3
- import l from "../../dialog/NeonDialog.vue.es.js";
4
- const u = a({
5
- name: "NeonDialogContainer",
6
- components: {
7
- NeonDialog: l
8
- },
9
- props: {
10
- modelValue: { type: Object }
11
- },
12
- setup(t, { emit: e }) {
13
- return {
14
- onButtonClick: (n) => {
15
- e("update:modelValue", { ...t.modelValue, open: !1 }), setTimeout(() => {
16
- e("update:modelValue", o.defaultDialogMessage);
17
- }, 1e3), o.resolve(n);
18
- }
19
- };
20
- }
21
- });
22
- export {
23
- u as default
24
- };
25
- //# sourceMappingURL=NeonDialogContainer.es2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NeonDialogContainer.es2.js","sources":["../../../../../src/components/feedback/alert/container/NeonDialogContainer.ts"],"sourcesContent":["import type { NeonDialogMessage } from '@/model/feedback/dialog/NeonDialogMessage';\nimport { NeonDialogService } from '@/utils/feedback/dialog/NeonDialogService';\nimport { defineComponent } from 'vue';\nimport NeonDialog from '../../dialog/NeonDialog.vue';\n\n/**\n * This is an internal component for rendering alerts.\n */\nexport default defineComponent({\n name: 'NeonDialogContainer',\n components: {\n NeonDialog,\n },\n props: {\n modelValue: { type: Object as () => NeonDialogMessage },\n },\n setup(props, { emit }) {\n const onButtonClick = (choice: boolean) => {\n emit('update:modelValue', { ...props.modelValue, open: false });\n setTimeout(() => {\n emit('update:modelValue', NeonDialogService.defaultDialogMessage);\n }, 1000);\n NeonDialogService.resolve(choice);\n };\n\n return {\n onButtonClick,\n };\n },\n});\n"],"names":["NeonDialogContainer","defineComponent","NeonDialog","props","emit","choice","NeonDialogService"],"mappings":";;;AAQA,MAAAA,IAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,YAAAC;AAAA,EAAA;AAAA,EAEF,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,OAAA;AAAA,EAAkC;AAAA,EAExD,MAAMC,GAAO,EAAE,MAAAC,KAAQ;AASrB,WAAO;AAAA,MACL,eAToB,CAACC,MAAoB;AACzC,QAAAD,EAAK,qBAAqB,EAAE,GAAGD,EAAM,YAAY,MAAM,IAAO,GAC9D,WAAW,MAAM;AACf,UAAAC,EAAK,qBAAqBE,EAAkB,oBAAoB;AAAA,QAClE,GAAG,GAAI,GACPA,EAAkB,QAAQD,CAAM;AAAA,MAClC;AAAA,IAGE;AAAA,EAEJ;AACF,CAAC;"}