@aotearoan/neon 22.2.0 → 22.3.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 (38) hide show
  1. package/dist/common/enums/NeonToggleStyle.cjs.js +1 -1
  2. package/dist/common/enums/NeonToggleStyle.cjs.js.map +1 -1
  3. package/dist/common/enums/NeonToggleStyle.es.js +2 -2
  4. package/dist/common/enums/NeonToggleStyle.es.js.map +1 -1
  5. package/dist/common/utils/NeonDateUtils.cjs.js +1 -1
  6. package/dist/common/utils/NeonDateUtils.cjs.js.map +1 -1
  7. package/dist/common/utils/NeonDateUtils.es.js +45 -39
  8. package/dist/common/utils/NeonDateUtils.es.js.map +1 -1
  9. package/dist/components/navigation/stepper/NeonStepper.vue.cjs.js +1 -1
  10. package/dist/components/navigation/stepper/NeonStepper.vue.cjs.js.map +1 -1
  11. package/dist/components/navigation/stepper/NeonStepper.vue.es.js +29 -21
  12. package/dist/components/navigation/stepper/NeonStepper.vue.es.js.map +1 -1
  13. package/dist/components/presentation/image-carousel/NeonImageCarousel.cjs.js +1 -1
  14. package/dist/components/presentation/image-carousel/NeonImageCarousel.cjs.js.map +1 -1
  15. package/dist/components/presentation/image-carousel/NeonImageCarousel.es.js +44 -32
  16. package/dist/components/presentation/image-carousel/NeonImageCarousel.es.js.map +1 -1
  17. package/dist/components/presentation/image-carousel/NeonImageCarousel.vue.cjs.js +1 -1
  18. package/dist/components/presentation/image-carousel/NeonImageCarousel.vue.cjs.js.map +1 -1
  19. package/dist/components/presentation/image-carousel/NeonImageCarousel.vue.es.js +116 -86
  20. package/dist/components/presentation/image-carousel/NeonImageCarousel.vue.es.js.map +1 -1
  21. package/dist/components/user-input/toggle/NeonToggle.cjs.js +1 -1
  22. package/dist/components/user-input/toggle/NeonToggle.cjs.js.map +1 -1
  23. package/dist/components/user-input/toggle/NeonToggle.es.js +19 -18
  24. package/dist/components/user-input/toggle/NeonToggle.es.js.map +1 -1
  25. package/dist/components/user-input/toggle/NeonToggle.vue.cjs.js +1 -1
  26. package/dist/components/user-input/toggle/NeonToggle.vue.cjs.js.map +1 -1
  27. package/dist/components/user-input/toggle/NeonToggle.vue.es.js +9 -9
  28. package/dist/components/user-input/toggle/NeonToggle.vue.es.js.map +1 -1
  29. package/dist/src/common/enums/NeonToggleStyle.d.ts +3 -1
  30. package/dist/src/common/models/NeonDate.d.ts +2 -0
  31. package/dist/src/components/presentation/image-carousel/NeonImageCarousel.d.ts +35 -22
  32. package/dist/src/components/user-input/toggle/NeonToggle.d.ts +1 -0
  33. package/package.json +1 -1
  34. package/src/sass/components/_badge.scss +2 -0
  35. package/src/sass/components/_image-carousel.scss +109 -14
  36. package/src/sass/components/_stepper.scss +8 -3
  37. package/src/sass/components/_toggle.scss +29 -6
  38. package/src/sass/variables.scss +30 -2
@@ -1,5 +1,5 @@
1
1
  import g from "./NeonToggle.es.js";
2
- import { resolveComponent as b, openBlock as n, createElementBlock as o, normalizeClass as s, Fragment as u, renderList as c, withKeys as t, withModifiers as m, createElementVNode as k, mergeProps as y, createCommentVNode as d, renderSlot as h, createBlock as _, toDisplayString as f } from "vue";
2
+ import { resolveComponent as b, openBlock as n, createElementBlock as o, normalizeClass as s, Fragment as u, renderList as c, withKeys as i, withModifiers as m, createElementVNode as k, mergeProps as y, createCommentVNode as d, renderSlot as h, createBlock as _, toDisplayString as f } from "vue";
3
3
  import $ from "../../../_virtual/_plugin-vue_export-helper.es.js";
4
4
  const v = ["aria-checked", "aria-disabled", "tabindex", "onKeydown"], w = ["checked", "disabled", "name", "value", "onClick"], p = {
5
5
  key: 0,
@@ -8,8 +8,8 @@ const v = ["aria-checked", "aria-disabled", "tabindex", "onKeydown"], w = ["chec
8
8
  key: 0,
9
9
  class: "neon-toggle__radio-button-indicator"
10
10
  }, C = { key: 1 };
11
- function S(e, z, B, K, N, E) {
12
- const i = b("neon-icon");
11
+ function S(e, N, z, B, K, T) {
12
+ const t = b("neon-icon");
13
13
  return n(), o("div", {
14
14
  class: s([[
15
15
  `neon-toggle--${e.toggleStyle}`,
@@ -34,8 +34,8 @@ function S(e, z, B, K, N, E) {
34
34
  tabindex: !e.disabled && !l.disabled ? 0 : void 0,
35
35
  role: "radio",
36
36
  onKeydown: [
37
- t((a) => e.selectOption(l), ["enter"]),
38
- t(m((a) => e.selectOption(l), ["prevent"]), ["space"])
37
+ i((a) => e.selectOption(l), ["enter"]),
38
+ i(m((a) => e.selectOption(l), ["prevent"]), ["space"])
39
39
  ]
40
40
  }, [
41
41
  k("input", y({
@@ -49,14 +49,14 @@ function S(e, z, B, K, N, E) {
49
49
  }, { ref_for: !0 }, e.sanitizedAttributes, {
50
50
  onClick: (a) => e.onInput(l)
51
51
  }), null, 16, w),
52
- e.toggleStyle === "radio-buttons" ? (n(), o("div", p, [
52
+ e.toggleStyle !== e.NeonToggleStyle.Toggle ? (n(), o("div", p, [
53
53
  l.key === e.modelValue ? (n(), o("div", V)) : d("", !0)
54
54
  ])) : d("", !0),
55
55
  h(e.$slots, "option", {
56
56
  index: r,
57
57
  option: l
58
58
  }, () => [
59
- l.icon ? (n(), _(i, {
59
+ l.icon ? (n(), _(t, {
60
60
  key: 0,
61
61
  disabled: e.disabled || l.disabled,
62
62
  name: l.icon
@@ -66,8 +66,8 @@ function S(e, z, B, K, N, E) {
66
66
  ], 42, v))), 128))
67
67
  ], 2);
68
68
  }
69
- const F = /* @__PURE__ */ $(g, [["render", S]]);
69
+ const D = /* @__PURE__ */ $(g, [["render", S]]);
70
70
  export {
71
- F as default
71
+ D as default
72
72
  };
73
73
  //# sourceMappingURL=NeonToggle.vue.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeonToggle.vue.es.js","sources":["../../../../src/components/user-input/toggle/NeonToggle.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n `neon-toggle--${toggleStyle}`,\n `neon-toggle--${disabled ? 'low-contrast' : color}`,\n `neon-toggle--${orientation}`,\n `neon-toggle--${size}`,\n { 'neon-toggle--disabled': disabled },\n ]\"\n class=\"neon-toggle\"\n role=\"radiogroup\"\n >\n <label\n v-for=\"(option, index) in model\"\n :key=\"option.key\"\n :aria-checked=\"option.key === modelValue\"\n :aria-disabled=\"disabled || option.disabled\"\n :class=\"{\n 'neon-toggle__label--disabled': disabled || option.disabled,\n 'neon-toggle__label--checked': option.key === modelValue,\n 'neon-toggle__label--with-icon': option.icon,\n 'neon-toggle__label--with-slot-override': slots.option,\n 'neon-toggle__label--with-text': option.label,\n }\"\n :tabindex=\"!disabled && !option.disabled ? 0 : undefined\"\n class=\"neon-toggle__label no-style\"\n role=\"radio\"\n @keydown.enter=\"selectOption(option)\"\n @keydown.space.prevent=\"selectOption(option)\"\n >\n <input\n :checked=\"option.key === modelValue\"\n :disabled=\"disabled || option.disabled\"\n :name=\"name\"\n :tabindex=\"-1\"\n :value=\"option.key\"\n class=\"neon-toggle__input\"\n type=\"radio\"\n v-bind=\"sanitizedAttributes\"\n @click=\"onInput(option)\"\n />\n <div v-if=\"toggleStyle === 'radio-buttons'\" class=\"neon-toggle__radio-button\">\n <div v-if=\"option.key === modelValue\" class=\"neon-toggle__radio-button-indicator\"></div>\n </div>\n <!-- @slot This slot is for overriding the option rendering, it is passed two arguments, <em>option</em> - the option model & <em>index</em> -->\n <slot :index=\"index\" :option=\"option\" name=\"option\">\n <neon-icon v-if=\"option.icon\" :disabled=\"disabled || option.disabled\" :name=\"option.icon\" />\n <span v-if=\"option.label\">{{ option.label }}</span>\n </slot>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\" src=\"./NeonToggle.ts\" />\n"],"names":["_createElementBlock","_normalizeClass","_ctx","_openBlock","_Fragment","_renderList","option","index","_withKeys","$event","_withModifiers","_createElementVNode","_mergeProps","_hoisted_3","_hoisted_4","_renderSlot","_createBlock","_component_neon_icon","_hoisted_5","_toDisplayString"],"mappings":";;;;;EAyCkD,OAAM;;;EACV,OAAM;;;;cAzClDA,EAiDM,OAAA;AAAA,IAhDH,OAAKC,EAAA,CAAA;AAAA,sBAA0BC,EAAA,WAAW;AAAA,MAA0B,gBAAAA,EAAA,4BAA4BA,EAAA,KAAK;AAAA,sBAA0BA,EAAA,WAAW;AAAA,sBAA0BA,EAAA,IAAI;AAAA,iCAAqCA,EAAA,SAAQ;AAAA,OAOhN,aAAa,CAAA;AAAA,IACnB,MAAK;AAAA;KAELC,EAAA,EAAA,GAAAH,EAqCQI,GAAA,MAAAC,EApCoBH,EAAA,OAAK,CAAvBI,GAAQC,YADlBP,EAqCQ,SAAA;AAAA,MAnCL,KAAKM,EAAO;AAAA,MACZ,gBAAcA,EAAO,QAAQJ,EAAA;AAAA,MAC7B,iBAAeA,EAAA,YAAYI,EAAO;AAAA,MAClC,OAAKL,EAAA,CAAA;AAAA,wCAA4CC,EAAA,YAAYI,EAAO;AAAA,uCAAiDA,EAAO,QAAQJ,EAAA;AAAA,QAAqD,iCAAAI,EAAO;AAAA,QAAwD,0CAAAJ,EAAA,MAAM;AAAA,QAAiD,iCAAAI,EAAO;AAAA,SAQjT,6BAA6B,CAAA;AAAA,MADlC,WAAWJ,EAAA,YAAQ,CAAKI,EAAO,eAAe;AAAA,MAE/C,MAAK;AAAA,MACJ,WAAO;AAAA,QAAQE,EAAA,CAAAC,MAAAP,EAAA,aAAaI,CAAM,GAAA,CAAA,OAAA,CAAA;AAAA,QACXE,EAAAE,EAAA,CAAAD,MAAAP,EAAA,aAAaI,CAAM,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA;;MAE3CK,EAUE,SAVFC,EAUE;AAAA,QATC,SAASN,EAAO,QAAQJ,EAAA;AAAA,QACxB,UAAUA,EAAA,YAAYI,EAAO;AAAA,QAC7B,MAAMJ,EAAA;AAAA,QACN,UAAU;AAAA,QACV,OAAOI,EAAO;AAAA,QACf,OAAM;AAAA,QACN,MAAK;AAAA,0BACGJ,EAAA,qBAAmB;AAAA,QAC1B,SAAK,CAAAO,MAAEP,EAAA,QAAQI,CAAM;AAAA;MAEbJ,EAAA,gBAAW,mBAAtBC,KAAAH,EAEM,OAFNa,GAEM;AAAA,QADOP,EAAO,QAAQJ,EAAA,cAA1BC,KAAAH,EAAwF,OAAxFc,CAAwF;;MAG1FC,EAGOb,EAAA,QAAA,UAAA;AAAA,QAHA,OAAOK;AAAA,QAAQ,QAAQD;AAAA,SAA9B,MAGO;AAAA,QAFYA,EAAO,aAAxBU,EAA4FC,GAAA;AAAA;UAA7D,UAAUf,EAAA,YAAYI,EAAO;AAAA,UAAW,MAAMA,EAAO;AAAA;QACxEA,EAAO,cAAnBN,EAAmD,QAAAkB,GAAAC,EAAtBb,EAAO,KAAK,GAAA,CAAA;;;;;;"}
1
+ {"version":3,"file":"NeonToggle.vue.es.js","sources":["../../../../src/components/user-input/toggle/NeonToggle.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n `neon-toggle--${toggleStyle}`,\n `neon-toggle--${disabled ? 'low-contrast' : color}`,\n `neon-toggle--${orientation}`,\n `neon-toggle--${size}`,\n { 'neon-toggle--disabled': disabled },\n ]\"\n class=\"neon-toggle\"\n role=\"radiogroup\"\n >\n <label\n v-for=\"(option, index) in model\"\n :key=\"option.key\"\n :aria-checked=\"option.key === modelValue\"\n :aria-disabled=\"disabled || option.disabled\"\n :class=\"{\n 'neon-toggle__label--disabled': disabled || option.disabled,\n 'neon-toggle__label--checked': option.key === modelValue,\n 'neon-toggle__label--with-icon': option.icon,\n 'neon-toggle__label--with-slot-override': slots.option,\n 'neon-toggle__label--with-text': option.label,\n }\"\n :tabindex=\"!disabled && !option.disabled ? 0 : undefined\"\n class=\"neon-toggle__label no-style\"\n role=\"radio\"\n @keydown.enter=\"selectOption(option)\"\n @keydown.space.prevent=\"selectOption(option)\"\n >\n <input\n :checked=\"option.key === modelValue\"\n :disabled=\"disabled || option.disabled\"\n :name=\"name\"\n :tabindex=\"-1\"\n :value=\"option.key\"\n class=\"neon-toggle__input\"\n type=\"radio\"\n v-bind=\"sanitizedAttributes\"\n @click=\"onInput(option)\"\n />\n <div v-if=\"toggleStyle !== NeonToggleStyle.Toggle\" class=\"neon-toggle__radio-button\">\n <div v-if=\"option.key === modelValue\" class=\"neon-toggle__radio-button-indicator\"></div>\n </div>\n <!-- @slot This slot is for overriding the option rendering, it is passed two arguments, <em>option</em> - the option model & <em>index</em> -->\n <slot :index=\"index\" :option=\"option\" name=\"option\">\n <neon-icon v-if=\"option.icon\" :disabled=\"disabled || option.disabled\" :name=\"option.icon\" />\n <span v-if=\"option.label\">{{ option.label }}</span>\n </slot>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\" src=\"./NeonToggle.ts\" />\n"],"names":["_createElementBlock","_normalizeClass","_ctx","_openBlock","_Fragment","_renderList","option","index","_withKeys","$event","_withModifiers","_createElementVNode","_mergeProps","_hoisted_3","_hoisted_4","_renderSlot","_createBlock","_component_neon_icon","_hoisted_5","_toDisplayString"],"mappings":";;;;;EAyCyD,OAAM;;;EACjB,OAAM;;;;cAzClDA,EAiDM,OAAA;AAAA,IAhDH,OAAKC,EAAA,CAAA;AAAA,sBAA0BC,EAAA,WAAW;AAAA,MAA0B,gBAAAA,EAAA,4BAA4BA,EAAA,KAAK;AAAA,sBAA0BA,EAAA,WAAW;AAAA,sBAA0BA,EAAA,IAAI;AAAA,iCAAqCA,EAAA,SAAQ;AAAA,OAOhN,aAAa,CAAA;AAAA,IACnB,MAAK;AAAA;KAELC,EAAA,EAAA,GAAAH,EAqCQI,GAAA,MAAAC,EApCoBH,EAAA,OAAK,CAAvBI,GAAQC,YADlBP,EAqCQ,SAAA;AAAA,MAnCL,KAAKM,EAAO;AAAA,MACZ,gBAAcA,EAAO,QAAQJ,EAAA;AAAA,MAC7B,iBAAeA,EAAA,YAAYI,EAAO;AAAA,MAClC,OAAKL,EAAA,CAAA;AAAA,wCAA4CC,EAAA,YAAYI,EAAO;AAAA,uCAAiDA,EAAO,QAAQJ,EAAA;AAAA,QAAqD,iCAAAI,EAAO;AAAA,QAAwD,0CAAAJ,EAAA,MAAM;AAAA,QAAiD,iCAAAI,EAAO;AAAA,SAQjT,6BAA6B,CAAA;AAAA,MADlC,WAAWJ,EAAA,YAAQ,CAAKI,EAAO,eAAe;AAAA,MAE/C,MAAK;AAAA,MACJ,WAAO;AAAA,QAAQE,EAAA,CAAAC,MAAAP,EAAA,aAAaI,CAAM,GAAA,CAAA,OAAA,CAAA;AAAA,QACXE,EAAAE,EAAA,CAAAD,MAAAP,EAAA,aAAaI,CAAM,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA;;MAE3CK,EAUE,SAVFC,EAUE;AAAA,QATC,SAASN,EAAO,QAAQJ,EAAA;AAAA,QACxB,UAAUA,EAAA,YAAYI,EAAO;AAAA,QAC7B,MAAMJ,EAAA;AAAA,QACN,UAAU;AAAA,QACV,OAAOI,EAAO;AAAA,QACf,OAAM;AAAA,QACN,MAAK;AAAA,0BACGJ,EAAA,qBAAmB;AAAA,QAC1B,SAAK,CAAAO,MAAEP,EAAA,QAAQI,CAAM;AAAA;MAEbJ,EAAA,gBAAgBA,EAAA,gBAAgB,UAA3CC,KAAAH,EAEM,OAFNa,GAEM;AAAA,QADOP,EAAO,QAAQJ,EAAA,cAA1BC,KAAAH,EAAwF,OAAxFc,CAAwF;;MAG1FC,EAGOb,EAAA,QAAA,UAAA;AAAA,QAHA,OAAOK;AAAA,QAAQ,QAAQD;AAAA,SAA9B,MAGO;AAAA,QAFYA,EAAO,aAAxBU,EAA4FC,GAAA;AAAA;UAA7D,UAAUf,EAAA,YAAYI,EAAO;AAAA,UAAW,MAAMA,EAAO;AAAA;QACxEA,EAAO,cAAnBN,EAAmD,QAAAkB,GAAAC,EAAtBb,EAAO,KAAK,GAAA,CAAA;;;;;;"}
@@ -5,5 +5,7 @@ export declare enum NeonToggleStyle {
5
5
  /** Toggle style which is a horizontal group of connected buttons with one active member. */
6
6
  Toggle = "toggle",
7
7
  /** Traditional HTML radio button input style. */
8
- RadioButtons = "radio-buttons"
8
+ RadioButtons = "radio-buttons",
9
+ /** Card style radio buttons for more detailed content */
10
+ Card = "card"
9
11
  }
@@ -19,4 +19,6 @@ export interface NeonDate {
19
19
  dayFormatted: string;
20
20
  /** Time string in the <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO-8601 format</a>. */
21
21
  time?: string;
22
+ /** Time string in the <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO-8601 format</a> without seconds. */
23
+ timeShort?: string;
22
24
  }
@@ -30,6 +30,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
30
30
  type: BooleanConstructor;
31
31
  default: boolean;
32
32
  };
33
+ /**
34
+ * Provide an alternative label for the Previous button.
35
+ */
36
+ closeLabel: {
37
+ type: StringConstructor;
38
+ default: string;
39
+ };
33
40
  /**
34
41
  * Provide an alternative label for the Previous button.
35
42
  */
@@ -50,6 +57,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
50
57
  carouselItem: import("vue").Ref<HTMLLIElement[], HTMLLIElement[]>;
51
58
  carouselItems: import("vue").Ref<HTMLUListElement | null, HTMLUListElement | null>;
52
59
  initialised: import("vue").Ref<boolean, boolean>;
60
+ expanded: import("vue").Ref<boolean, boolean>;
53
61
  next: () => void;
54
62
  previous: () => void;
55
63
  scrollTo: (index: number) => void;
@@ -76,6 +84,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
76
84
  type: BooleanConstructor;
77
85
  default: boolean;
78
86
  };
87
+ /**
88
+ * Provide an alternative label for the Previous button.
89
+ */
90
+ closeLabel: {
91
+ type: StringConstructor;
92
+ default: string;
93
+ };
79
94
  /**
80
95
  * Provide an alternative label for the Previous button.
81
96
  */
@@ -95,6 +110,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
95
110
  }>, {
96
111
  imageCountLabel: string;
97
112
  hideLabel: boolean;
113
+ closeLabel: string;
98
114
  previousLabel: string;
99
115
  nextLabel: string;
100
116
  }, {}, {
@@ -109,20 +125,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
109
125
  };
110
126
  size: {
111
127
  type: () => import("../../../neon").NeonButtonSize;
112
- default: import("../../../neon").NeonButtonSize; /**
113
- * Provide an alternative label for the Next button.
114
- */
115
- }; /**
116
- * Provide an alternative label for the Next button.
117
- */
128
+ default: import("../../../neon").NeonButtonSize;
129
+ };
118
130
  color: {
119
131
  type: () => import("../../../neon").NeonFunctionalColor;
120
132
  default: import("../../../neon").NeonFunctionalColor;
121
- }; /**
122
- * The index of the currently visible image.
123
- *
124
- * @type {number}
125
- */
133
+ };
126
134
  inverse: {
127
135
  type: BooleanConstructor;
128
136
  default: boolean;
@@ -216,20 +224,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
216
224
  };
217
225
  size: {
218
226
  type: () => import("../../../neon").NeonButtonSize;
219
- default: import("../../../neon").NeonButtonSize; /**
220
- * Provide an alternative label for the Next button.
221
- */
222
- }; /**
223
- * Provide an alternative label for the Next button.
224
- */
227
+ default: import("../../../neon").NeonButtonSize;
228
+ };
225
229
  color: {
226
230
  type: () => import("../../../neon").NeonFunctionalColor;
227
231
  default: import("../../../neon").NeonFunctionalColor;
228
- }; /**
229
- * The index of the currently visible image.
230
- *
231
- * @type {number}
232
- */
232
+ };
233
233
  inverse: {
234
234
  type: BooleanConstructor;
235
235
  default: boolean;
@@ -588,5 +588,18 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
588
588
  inverse: boolean;
589
589
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
590
590
  }, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
591
+ NeonStack: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
592
+ gap: {
593
+ type: () => import("../../../neon").NeonSize;
594
+ default: () => import("../../../neon").NeonSize;
595
+ };
596
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
597
+ gap: {
598
+ type: () => import("../../../neon").NeonSize;
599
+ default: () => import("../../../neon").NeonSize;
600
+ };
601
+ }>> & Readonly<{}>, {
602
+ gap: import("../../../neon").NeonSize;
603
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
591
604
  }, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
592
605
  export default _default;
@@ -72,6 +72,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
72
72
  slots: Readonly<{
73
73
  [name: string]: import("vue").Slot<any> | undefined;
74
74
  }>;
75
+ NeonToggleStyle: typeof NeonToggleStyle;
75
76
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
76
77
  /**
77
78
  * The name of the radio button group.
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": "22.2.0",
4
+ "version": "22.3.0",
5
5
  "main": "./dist/neon.cjs.js",
6
6
  "module": "./dist/neon.es.js",
7
7
  "types": "./dist/src/neon.d.ts",
@@ -121,7 +121,9 @@
121
121
  &,
122
122
  .neon-badge__image {
123
123
  width: var(--neon-size-#{$badge-size}-badge);
124
+ min-width: var(--neon-size-#{$badge-size}-badge);
124
125
  height: var(--neon-size-#{$badge-size}-badge);
126
+ min-height: var(--neon-size-#{$badge-size}-badge);
125
127
  object-fit: cover;
126
128
  }
127
129
 
@@ -1,12 +1,17 @@
1
+ @use '../includes/layout';
1
2
  @use '../includes/outline';
2
3
  @use '../includes/responsive';
3
4
  @use '../includes/scrollbars';
5
+ @use '../includes/svg';
4
6
 
5
7
  @mixin image-carousel {
6
8
  .neon-image-carousel {
7
9
  user-select: none;
10
+ transition: backdrop-filter ease-in-out var(--neon-animation-speed-fast);
11
+ width: 100%;
12
+ height: 100%;
8
13
 
9
- &:focus {
14
+ &:focus-visible {
10
15
  outline: none;
11
16
  @include outline.box-shadow-outline(var(--neon-rgb-high-contrast));
12
17
  }
@@ -14,10 +19,11 @@
14
19
  .neon-image-carousel__container {
15
20
  flex-direction: row;
16
21
  align-items: center;
22
+ flex: 1 1 auto;
17
23
  gap: var(--neon-space-16);
18
- height: calc(100% - 60rem);
24
+ min-height: 0;
19
25
 
20
- &:focus {
26
+ &:focus-visible {
21
27
  outline: none;
22
28
  }
23
29
  }
@@ -25,20 +31,24 @@
25
31
  .neon-image-carousel__items {
26
32
  display: flex;
27
33
  flex-direction: row;
28
- max-height: 100%;
34
+ width: 100%;
35
+ height: 100%;
29
36
  overflow-x: auto;
30
37
  scroll-snap-type: x mandatory;
31
38
  overscroll-behavior-x: contain;
32
39
 
33
40
  @include scrollbars.hide-scrollbars();
34
41
 
35
- &:focus {
42
+ &:focus-visible {
36
43
  outline: none;
37
44
  }
38
45
  }
39
46
 
40
47
  .neon-image-carousel__item {
41
48
  display: flex;
49
+ flex-direction: column;
50
+ gap: var(--neon-space-8);
51
+ justify-content: center;
42
52
  min-width: 100%;
43
53
  padding: var(--neon-space-2);
44
54
  scroll-snap-align: start;
@@ -46,21 +56,29 @@
46
56
  opacity: 0;
47
57
  transition: opacity ease-in-out var(--neon-animation-speed-fast);
48
58
 
49
- &-wrapper {
50
- width: 100%;
51
- height: 100%;
59
+ &-title {
60
+ text-align: center;
61
+ font-weight: var(--neon-font-weight-normal);
62
+ font-size: var(--neon-font-size-m);
63
+ font-style: italic;
64
+ color: var(--neon-color-image-carousel-expanded-button);
65
+ margin-left: auto;
66
+ margin-right: auto;
67
+ padding: 0 var(--neon-space-16);
68
+ text-shadow: var(--neon-text-shadow-image-carousel-expanded);
52
69
  }
53
70
  }
54
71
 
55
72
  .neon-image-carousel__image {
56
- margin: auto;
57
- min-width: 100%;
58
- max-height: 100%;
59
73
  object-fit: contain;
74
+ cursor: pointer;
75
+ max-width: 100%;
76
+ max-height: 100%;
77
+ min-height: 0;
60
78
  }
61
79
 
62
80
  .neon-image-carousel__nav {
63
- padding-top: var(--neon-space-24);
81
+ padding-top: var(--neon-space-12);
64
82
 
65
83
  flex-direction: row;
66
84
  flex-wrap: wrap;
@@ -90,11 +108,11 @@
90
108
  margin-left: var(--neon-image-carousel-swipe-distance);
91
109
  }
92
110
 
93
- &:focus {
111
+ &:focus-visible {
94
112
  outline: none;
95
113
  }
96
114
 
97
- &-link:focus {
115
+ &-link:focus-visible {
98
116
  outline: none;
99
117
 
100
118
  .neon-image-carousel__nav-item-indicator {
@@ -119,6 +137,83 @@
119
137
  display: none;
120
138
  }
121
139
  }
140
+
141
+ &.neon-image-carousel--expanded {
142
+ position: fixed;
143
+ top: 0;
144
+ left: 0;
145
+ width: 100vw;
146
+ @include layout.height(100);
147
+ max-width: 100%;
148
+ max-height: 100%;
149
+ background-color: var(--neon-background-color-overlay);
150
+ z-index: var(--neon-z-index-top);
151
+ -webkit-backdrop-filter: blur(var(--neon-blur-radius-image-carousel));
152
+ backdrop-filter: blur(var(--neon-blur-radius-image-carousel));
153
+ gap: var(--neon-space-8);
154
+
155
+ .neon-image-carousel__container {
156
+ padding-top: var(--neon-gutter);
157
+ max-height: 100%;
158
+ min-height: 0;
159
+ height: 100%;
160
+
161
+ .neon-button {
162
+ &:not(:disabled) {
163
+ @include svg.color-with-svg(var(--neon-color-image-carousel-expanded-button));
164
+
165
+ &:hover,
166
+ &:focus-visible {
167
+ background-color: var(--neon-background-color-image-carousel-expanded-button);
168
+ }
169
+ }
170
+
171
+ &:disabled {
172
+ @include svg.color-with-svg(var(--neon-color-image-carousel-expanded-button-disabled));
173
+ }
174
+ }
175
+ }
176
+
177
+ .neon-image-carousel__image {
178
+ cursor: default;
179
+ }
180
+
181
+ .neon-image-carousel__close {
182
+ position: absolute;
183
+ top: 0;
184
+ right: 0;
185
+ border-radius: 0;
186
+ }
187
+
188
+ .neon-image-carousel__label {
189
+ font-size: var(--neon-font-size-m);
190
+ line-height: var(--neon-line-height-ratio);
191
+ color: var(--neon-color-image-carousel-expanded-label);
192
+ text-shadow: var(--neon-text-shadow-image-carousel-expanded);
193
+ }
194
+
195
+ .neon-image-carousel__nav-container {
196
+ padding-bottom: var(--neon-gutter);
197
+
198
+ }
199
+
200
+ .neon-image-carousel__nav-item {
201
+ width: 24rem;
202
+ height: 24rem;
203
+
204
+ &-indicator {
205
+ width: 12rem;
206
+ height: 12rem;
207
+ border-color: var(--neon-color-image-carousel-expanded-button);
208
+ }
209
+
210
+ &--active {
211
+ .neon-image-carousel__nav-item-indicator {
212
+ background-color: var(--neon-color-image-carousel-expanded-button);
213
+ }
214
+ }
215
+ }
216
+ }
122
217
  }
123
218
 
124
219
  .neon-image-carousel--initialised {
@@ -1,4 +1,5 @@
1
1
  @use '../includes/palettes';
2
+ @use '../includes/outline';
2
3
 
3
4
  @mixin stepper {
4
5
  .neon-stepper {
@@ -60,12 +61,11 @@
60
61
  height: var(--neon-space-10);
61
62
 
62
63
  svg {
63
- path,
64
- circle {
64
+ .neon-svg--fill {
65
65
  fill: var(--neon-color-stepper-indicator);
66
66
  }
67
67
 
68
- circle {
68
+ .neon-svg--stroke {
69
69
  stroke: var(--neon-color-stepper-indicator);
70
70
  }
71
71
  }
@@ -113,6 +113,11 @@
113
113
  .neon-stepper__step--has-value {
114
114
  .neon-stepper__step-indicator {
115
115
  background: var(--neon-color-#{$color});
116
+
117
+ &:focus {
118
+ outline: none;
119
+ @include outline.box-shadow-outline(var(--neon-rgb-#{$color}));
120
+ }
116
121
  }
117
122
  }
118
123
 
@@ -19,7 +19,7 @@
19
19
  justify-content: center;
20
20
  white-space: nowrap;
21
21
 
22
- &:focus {
22
+ &:focus-visible {
23
23
  outline: none;
24
24
  }
25
25
 
@@ -75,6 +75,7 @@
75
75
  }
76
76
  }
77
77
 
78
+ &--card,
78
79
  &--radio-buttons {
79
80
  align-items: flex-start;
80
81
 
@@ -89,22 +90,22 @@
89
90
 
90
91
  .neon-toggle__label:not(.neon-toggle__label--disabled) {
91
92
  .neon-toggle__radio-button {
92
- border: var(--neon-border-radio-button);
93
+ border: var(--neon-border-width) var(--neon-border-style) var(--neon-color-#{$color});
93
94
  background: var(--neon-background-radio-button);
94
95
  }
95
96
 
96
97
  color: var(--neon-color-radio-button-label);
97
98
 
98
99
  &:hover,
99
- &:focus {
100
+ &:focus-visible {
100
101
  &:not(.neon-toggle__label--checked) {
101
102
  .neon-toggle__radio-button {
102
- background: var(--neon-color-radio-button-bg-active);
103
+ background: rgba(var(--neon-rgb-#{$color}), 0.125);
103
104
  }
104
105
  }
105
106
  }
106
107
 
107
- &:focus {
108
+ &:focus-visible {
108
109
  border-bottom-color: var(--neon-color-#{$color});
109
110
  }
110
111
 
@@ -124,6 +125,16 @@
124
125
  }
125
126
  }
126
127
 
128
+ &.neon-toggle--card {
129
+ .neon-toggle__label {
130
+ &.neon-toggle__label--checked,
131
+ &.neon-toggle__label:hover,
132
+ &.neon-toggle__label:focus-visible {
133
+ border-color: var(--neon-color-#{$color});
134
+ }
135
+ }
136
+ }
137
+
127
138
  &.neon-toggle--disabled .neon-toggle__label,
128
139
  .neon-toggle__label--disabled {
129
140
  color: var(--neon-color-disabled-text);
@@ -140,12 +151,24 @@
140
151
  }
141
152
  }
142
153
 
154
+ &--card {
155
+ gap: var(--neon-space-16);
156
+
157
+ .neon-toggle__label {
158
+ padding: var(--neon-space-16);
159
+ border: var(--neon-border-width-input) var(--neon-border-style) var(--neon-border-color-input);
160
+ width: 100%;
161
+ border-radius: var(--neon-border-radius-input);
162
+ }
163
+ }
164
+
143
165
  &--horizontal {
144
166
  flex-direction: row;
145
167
  gap: var(--neon-space-24);
146
168
  }
147
169
 
148
- &--disabled {
170
+ &--disabled,
171
+ &--disabled .neon-toggle__label {
149
172
  cursor: not-allowed;
150
173
  }
151
174
  }
@@ -1,3 +1,4 @@
1
+ @use './includes/responsive';
1
2
  @import './palette';
2
3
  @import './color-variables';
3
4
 
@@ -18,6 +19,18 @@
18
19
  --neon-gutter-tablet: 24rem;
19
20
  --neon-gutter-mobile: 16rem;
20
21
 
22
+ @include responsive.responsive(larger-than-tablet) {
23
+ --neon-gutter: var(--neon-gutter-desktop);
24
+ }
25
+
26
+ @include responsive.responsive(tablet) {
27
+ --neon-gutter: var(--neon-gutter-tablet);
28
+ }
29
+
30
+ @include responsive.responsive(mobile-large) {
31
+ --neon-gutter: var(--neon-gutter-mobile);
32
+ }
33
+
21
34
  /* spacings */
22
35
  --neon-space-1: calc(0.25 * var(--neon-base-space));
23
36
  --neon-space-2: calc(0.5 * var(--neon-base-space));
@@ -349,6 +362,9 @@
349
362
  /* card list */
350
363
  --neon-border-radius-card-list: calc(1.5 * var(--neon-base-space));
351
364
 
365
+ /* image carousel */
366
+ --neon-blur-radius-image-carousel: 5px;
367
+
352
368
  /**********************
353
369
  * DARK THEME VARIABLES
354
370
  **********************/
@@ -533,7 +549,6 @@
533
549
 
534
550
  /* radio buttons */
535
551
  --neon-background-radio-button: none;
536
- --neon-border-radio-button: var(--neon-border-width) var(--neon-border-style) var(--neon-color-neutral-d2);
537
552
  --neon-color-radio-button-bg-active: rgba(var(--neon-rgb-neutral-l3), 0.125);
538
553
  --neon-color-radio-button-label: var(--neon-color-label);
539
554
 
@@ -653,6 +668,13 @@
653
668
  --neon-background-color-swiper: var(--neon-background-color-card);
654
669
  }
655
670
 
671
+ /* image carousel */
672
+ --neon-color-image-carousel-expanded-button: var(--neon-color-text-primary);
673
+ --neon-color-image-carousel-expanded-button-disabled: var(--neon-color-low-contrast-d4);
674
+ --neon-background-color-image-carousel-expanded-button: var(--neon-color-low-contrast-d5);
675
+ --neon-color-image-carousel-expanded-label: var(--neon-color-text-tertiary);
676
+ --neon-text-shadow-image-carousel-expanded: 1px 1px 2px var(--neon-color-inverse);
677
+
656
678
  /*********************
657
679
  * LIGHT THEME VARIABLES
658
680
  *********************/
@@ -840,7 +862,6 @@
840
862
 
841
863
  /* radio buttons */
842
864
  --neon-background-radio-button: none;
843
- --neon-border-radio-button: var(--neon-border-width) var(--neon-border-style) var(--neon-color-neutral-l3);
844
865
  --neon-color-radio-button-bg-active: rgba(var(--neon-rgb-neutral-l3), 0.25);
845
866
  --neon-color-radio-button-label: var(--neon-color-label);
846
867
 
@@ -959,5 +980,12 @@
959
980
 
960
981
  /* swiper */
961
982
  --neon-background-color-swiper: var(--neon-background-color-card);
983
+
984
+ /* image carousel */
985
+ --neon-color-image-carousel-expanded-button: var(--neon-color-inverse);
986
+ --neon-color-image-carousel-expanded-button-disabled: var(--neon-color-low-contrast-d2);
987
+ --neon-background-color-image-carousel-expanded-button: var(--neon-color-low-contrast-d3);
988
+ --neon-color-image-carousel-expanded-label: var(--neon-color-text-tertiary-dark);
989
+ --neon-text-shadow-image-carousel-expanded: 1px 1px 2px var(--neon-color-text-primary);
962
990
  }
963
991
  }