@nexterajs/ui 0.0.1 → 0.1.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 (63) hide show
  1. package/README.md +279 -34
  2. package/fesm2022/nexterajs-ui-charts.mjs +1096 -0
  3. package/fesm2022/nexterajs-ui-charts.mjs.map +1 -0
  4. package/fesm2022/nexterajs-ui-core.mjs +835 -11
  5. package/fesm2022/nexterajs-ui-core.mjs.map +1 -1
  6. package/fesm2022/nexterajs-ui-display.mjs +1142 -0
  7. package/fesm2022/nexterajs-ui-display.mjs.map +1 -0
  8. package/fesm2022/nexterajs-ui-dropdowns.mjs +621 -69
  9. package/fesm2022/nexterajs-ui-dropdowns.mjs.map +1 -1
  10. package/fesm2022/nexterajs-ui-file-uploader.mjs +576 -11
  11. package/fesm2022/nexterajs-ui-file-uploader.mjs.map +1 -1
  12. package/fesm2022/nexterajs-ui-forms.mjs +2702 -452
  13. package/fesm2022/nexterajs-ui-forms.mjs.map +1 -1
  14. package/fesm2022/nexterajs-ui-grid.mjs +2350 -336
  15. package/fesm2022/nexterajs-ui-grid.mjs.map +1 -1
  16. package/fesm2022/nexterajs-ui-intl.mjs +117 -15
  17. package/fesm2022/nexterajs-ui-intl.mjs.map +1 -1
  18. package/fesm2022/nexterajs-ui-navigation.mjs +1054 -0
  19. package/fesm2022/nexterajs-ui-navigation.mjs.map +1 -0
  20. package/fesm2022/nexterajs-ui-notify.mjs +353 -0
  21. package/fesm2022/nexterajs-ui-notify.mjs.map +1 -0
  22. package/fesm2022/nexterajs-ui-overlay.mjs +1671 -0
  23. package/fesm2022/nexterajs-ui-overlay.mjs.map +1 -0
  24. package/fesm2022/nexterajs-ui-pivot.mjs +191 -136
  25. package/fesm2022/nexterajs-ui-pivot.mjs.map +1 -1
  26. package/fesm2022/nexterajs-ui-shell.mjs +542 -0
  27. package/fesm2022/nexterajs-ui-shell.mjs.map +1 -0
  28. package/fesm2022/nexterajs-ui-styling.mjs +568 -3
  29. package/fesm2022/nexterajs-ui-styling.mjs.map +1 -1
  30. package/fesm2022/nexterajs-ui-tree-view.mjs +150 -18
  31. package/fesm2022/nexterajs-ui-tree-view.mjs.map +1 -1
  32. package/fesm2022/nexterajs-ui-validation.mjs +283 -97
  33. package/fesm2022/nexterajs-ui-validation.mjs.map +1 -1
  34. package/fesm2022/nexterajs-ui.mjs +6 -0
  35. package/fesm2022/nexterajs-ui.mjs.map +1 -1
  36. package/package.json +37 -2
  37. package/styles/_dropdown.scss +150 -1
  38. package/styles/_editor.scss +75 -21
  39. package/styles/_icons.scss +92 -0
  40. package/styles/_mixins.scss +104 -1
  41. package/styles/_scrollbar.scss +134 -0
  42. package/styles/_status.scss +21 -0
  43. package/styles/_toast.scss +243 -0
  44. package/styles/_tokens.scss +467 -2
  45. package/styles/_widget.scss +14 -3
  46. package/styles/index.scss +10 -4
  47. package/types/nexterajs-ui-charts.d.ts +446 -0
  48. package/types/nexterajs-ui-core.d.ts +515 -30
  49. package/types/nexterajs-ui-display.d.ts +720 -0
  50. package/types/nexterajs-ui-dropdowns.d.ts +318 -57
  51. package/types/nexterajs-ui-file-uploader.d.ts +240 -8
  52. package/types/nexterajs-ui-forms.d.ts +772 -43
  53. package/types/nexterajs-ui-grid.d.ts +878 -135
  54. package/types/nexterajs-ui-intl.d.ts +39 -4
  55. package/types/nexterajs-ui-navigation.d.ts +531 -0
  56. package/types/nexterajs-ui-notify.d.ts +149 -0
  57. package/types/nexterajs-ui-overlay.d.ts +703 -0
  58. package/types/nexterajs-ui-pivot.d.ts +91 -70
  59. package/types/nexterajs-ui-shell.d.ts +294 -0
  60. package/types/nexterajs-ui-styling.d.ts +163 -3
  61. package/types/nexterajs-ui-tree-view.d.ts +56 -4
  62. package/types/nexterajs-ui-validation.d.ts +110 -22
  63. package/types/nexterajs-ui.d.ts +6 -0
@@ -0,0 +1,134 @@
1
+ // @nexterajs/ui — [nxeScrollbar] chrome.
2
+ //
3
+ // A value-for-value port of `perfect-scrollbar.css`, which this replaces. Applications style these
4
+ // rails heavily, so every number and easing is copied rather than chosen — the selector names are
5
+ // the only thing that changed, one-for-one:
6
+ //
7
+ // .ps -> .nxe-scrollbar .ps__rail-x -> .nxe-scrollbar__rail-x
8
+ // .ps--active-x -> .nxe-scrollbar--active-x .ps__thumb-x -> .nxe-scrollbar__thumb-x
9
+ // .ps--focus -> .nxe-scrollbar--focus .ps--clicking -> .nxe-scrollbar--clicking
10
+ // .ps--scrolling-x -> .nxe-scrollbar--scrolling-x (and the -y twins of each)
11
+ //
12
+ // Load this where `perfect-scrollbar/css/perfect-scrollbar.css` used to sit in the cascade —
13
+ // BEFORE the application's own rail overrides — or those overrides stop winning.
14
+
15
+ //
16
+ // Container style
17
+ //
18
+ // The original set `overflow: hidden !important` and drove scrolling entirely from JavaScript:
19
+ // wheel, touch, keyboard and momentum were all reimplemented. This keeps `overflow: auto` and
20
+ // merely hides the native bar, so the browser still does the scrolling — which is more faithful
21
+ // on touch and with a trackpad, and is why the directive needs no input handling of its own.
22
+ // Layout is unchanged either way: a hidden native scrollbar occupies no width, exactly as the
23
+ // simulated rails did.
24
+ .nxe-scrollbar {
25
+ overflow: auto;
26
+ overflow-anchor: none;
27
+ touch-action: auto;
28
+ position: relative;
29
+
30
+ scrollbar-width: none;
31
+ -ms-overflow-style: none;
32
+
33
+ &::-webkit-scrollbar {
34
+ width: 0;
35
+ height: 0;
36
+ }
37
+ }
38
+
39
+ //
40
+ // Scrollbar rail styles
41
+ //
42
+ .nxe-scrollbar__rail-x {
43
+ display: none;
44
+ opacity: 0;
45
+ transition:
46
+ background-color 0.2s linear,
47
+ opacity 0.2s linear;
48
+ height: 15px;
49
+ // there must be 'bottom' or 'top' for the x rail
50
+ bottom: 0px;
51
+ // please don't change 'position'
52
+ position: absolute;
53
+ }
54
+
55
+ .nxe-scrollbar__rail-y {
56
+ display: none;
57
+ opacity: 0;
58
+ transition:
59
+ background-color 0.2s linear,
60
+ opacity 0.2s linear;
61
+ width: 15px;
62
+ // there must be 'right' or 'left' for the y rail
63
+ right: 0;
64
+ // please don't change 'position'
65
+ position: absolute;
66
+ }
67
+
68
+ .nxe-scrollbar--active-x > .nxe-scrollbar__rail-x,
69
+ .nxe-scrollbar--active-y > .nxe-scrollbar__rail-y {
70
+ display: block;
71
+ background-color: transparent;
72
+ }
73
+
74
+ .nxe-scrollbar:hover > .nxe-scrollbar__rail-x,
75
+ .nxe-scrollbar:hover > .nxe-scrollbar__rail-y,
76
+ .nxe-scrollbar--focus > .nxe-scrollbar__rail-x,
77
+ .nxe-scrollbar--focus > .nxe-scrollbar__rail-y,
78
+ .nxe-scrollbar--scrolling-x > .nxe-scrollbar__rail-x,
79
+ .nxe-scrollbar--scrolling-y > .nxe-scrollbar__rail-y {
80
+ opacity: 0.6;
81
+ }
82
+
83
+ .nxe-scrollbar .nxe-scrollbar__rail-x:hover,
84
+ .nxe-scrollbar .nxe-scrollbar__rail-y:hover,
85
+ .nxe-scrollbar .nxe-scrollbar__rail-x:focus,
86
+ .nxe-scrollbar .nxe-scrollbar__rail-y:focus,
87
+ .nxe-scrollbar .nxe-scrollbar__rail-x.nxe-scrollbar--clicking,
88
+ .nxe-scrollbar .nxe-scrollbar__rail-y.nxe-scrollbar--clicking {
89
+ background-color: var(--nxe-ui-neutral-110, #eee);
90
+ opacity: 0.9;
91
+ }
92
+
93
+ //
94
+ // Scrollbar thumb styles
95
+ //
96
+ .nxe-scrollbar__thumb-x {
97
+ background-color: var(--nxe-ui-neutral-400, #aaa);
98
+ border-radius: 6px;
99
+ transition:
100
+ background-color 0.2s linear,
101
+ height 0.2s ease-in-out;
102
+ height: 6px;
103
+ // there must be 'bottom' for the x thumb
104
+ bottom: 2px;
105
+ // please don't change 'position'
106
+ position: absolute;
107
+ }
108
+
109
+ .nxe-scrollbar__thumb-y {
110
+ background-color: var(--nxe-ui-neutral-400, #aaa);
111
+ border-radius: 6px;
112
+ transition:
113
+ background-color 0.2s linear,
114
+ width 0.2s ease-in-out;
115
+ width: 6px;
116
+ // there must be 'right' for the y thumb
117
+ right: 2px;
118
+ // please don't change 'position'
119
+ position: absolute;
120
+ }
121
+
122
+ .nxe-scrollbar__rail-x:hover > .nxe-scrollbar__thumb-x,
123
+ .nxe-scrollbar__rail-x:focus > .nxe-scrollbar__thumb-x,
124
+ .nxe-scrollbar__rail-x.nxe-scrollbar--clicking .nxe-scrollbar__thumb-x {
125
+ background-color: var(--nxe-ui-text-muted, #999);
126
+ height: 11px;
127
+ }
128
+
129
+ .nxe-scrollbar__rail-y:hover > .nxe-scrollbar__thumb-y,
130
+ .nxe-scrollbar__rail-y:focus > .nxe-scrollbar__thumb-y,
131
+ .nxe-scrollbar__rail-y.nxe-scrollbar--clicking .nxe-scrollbar__thumb-y {
132
+ background-color: var(--nxe-ui-text-muted, #999);
133
+ width: 11px;
134
+ }
@@ -0,0 +1,21 @@
1
+ // Status families (docs/TOKENS.md, "Status families"). `nxe-tag` and `nxe-badge` read the same six
2
+ // families, so the family -> token wiring lives here once: `@include status.families('.nxe-tag')`
3
+ // emits `.nxe-tag-<family>` classes that set the private `--nxe-status-{fg,bg,border}` triple the
4
+ // component's own rules then use. Colours come only from `--nxe-ui-status-*` tokens.
5
+
6
+ $families: neutral, info, attention, success, danger, muted;
7
+
8
+ @mixin families($prefix) {
9
+ @each $family in $families {
10
+ #{$prefix}-#{$family} {
11
+ --nxe-status-fg: var(--nxe-ui-status-#{$family}-fg);
12
+ --nxe-status-bg: var(--nxe-ui-status-#{$family}-bg);
13
+ --nxe-status-border: var(--nxe-ui-status-#{$family}-border);
14
+ }
15
+ }
16
+
17
+ // `muted` is the one family that is also drawn differently: a dashed edge says "no longer live".
18
+ #{$prefix}-muted {
19
+ --nxe-status-border-style: dashed;
20
+ }
21
+ }
@@ -0,0 +1,243 @@
1
+ // @nexterajs/ui — NxeToastService chrome.
2
+ //
3
+ // A value-for-value port of ngx-toastr's `toastr.css`, which this replaces. Every number, colour
4
+ // and easing here is copied deliberately rather than chosen: applications were pinned to that
5
+ // rendering, and "close enough" on a toast is a visible regression nothing tests.
6
+ //
7
+ // Load this where `ngx-toastr/toastr.css` used to sit in the cascade — BEFORE the application's
8
+ // own overrides — or a rule like `width: 350px` on a position class stops winning.
9
+
10
+ /* position */
11
+ .nxe-toast-center-center {
12
+ top: 50%;
13
+ left: 50%;
14
+ transform: translate(-50%, -50%);
15
+ }
16
+
17
+ .toast-top-center {
18
+ top: 0;
19
+ right: 0;
20
+ width: 100%;
21
+ }
22
+
23
+ .toast-bottom-center {
24
+ bottom: 0;
25
+ right: 0;
26
+ width: 100%;
27
+ }
28
+
29
+ .toast-top-full-width {
30
+ top: 0;
31
+ right: 0;
32
+ width: 100%;
33
+ }
34
+
35
+ .toast-bottom-full-width {
36
+ bottom: 0;
37
+ right: 0;
38
+ width: 100%;
39
+ }
40
+
41
+ .toast-top-left {
42
+ top: 12px;
43
+ left: 12px;
44
+ }
45
+
46
+ .toast-top-right {
47
+ top: 12px;
48
+ right: 12px;
49
+ }
50
+
51
+ .toast-bottom-right {
52
+ right: 12px;
53
+ bottom: 12px;
54
+ }
55
+
56
+ .toast-bottom-left {
57
+ bottom: 12px;
58
+ left: 12px;
59
+ }
60
+
61
+ /* toast styles */
62
+ .nxe-toast-title {
63
+ font-weight: bold;
64
+ }
65
+
66
+ .nxe-toast-message {
67
+ word-wrap: break-word;
68
+ }
69
+
70
+ .nxe-toast-message a,
71
+ .nxe-toast-message label {
72
+ color: var(--nxe-ui-toast-fg, #ffffff);
73
+ }
74
+
75
+ .nxe-toast-message a:hover {
76
+ color: var(--nxe-ui-toast-fg-muted, #cccccc);
77
+ text-decoration: none;
78
+ }
79
+
80
+ .nxe-toast-close {
81
+ position: relative;
82
+ right: -0.3em;
83
+ top: -0.3em;
84
+ float: right;
85
+ font-size: 20px;
86
+ font-weight: bold;
87
+ color: var(--nxe-ui-toast-fg, #ffffff);
88
+ text-shadow: 0 1px 0 var(--nxe-ui-toast-fg, #ffffff);
89
+ }
90
+
91
+ .nxe-toast-close:hover,
92
+ .nxe-toast-close:focus {
93
+ color: var(--nxe-ui-toast-ink, #000000);
94
+ text-decoration: none;
95
+ cursor: pointer;
96
+ opacity: 0.4;
97
+ }
98
+
99
+ button.nxe-toast-close {
100
+ padding: 0;
101
+ cursor: pointer;
102
+ background: transparent;
103
+ border: 0;
104
+ }
105
+
106
+ .nxe-toast-container {
107
+ pointer-events: none;
108
+ position: fixed;
109
+ z-index: 999999;
110
+ }
111
+
112
+ .nxe-toast-container * {
113
+ box-sizing: border-box;
114
+ }
115
+
116
+ .nxe-toast-container .nxe-toast {
117
+ position: relative;
118
+ overflow: hidden;
119
+ margin: 0 0 6px;
120
+ padding: 15px 15px 15px 50px;
121
+ width: 300px;
122
+ border-radius: 3px 3px 3px 3px;
123
+ background-position: 15px center;
124
+ background-repeat: no-repeat;
125
+ background-size: 24px;
126
+ box-shadow: 0 0 12px var(--nxe-ui-toast-shadow-hover, #999999);
127
+ color: var(--nxe-ui-toast-fg, #ffffff);
128
+ }
129
+
130
+ .nxe-toast-container .nxe-toast:hover {
131
+ box-shadow: 0 0 12px var(--nxe-ui-toast-ink, #000000);
132
+ opacity: 1;
133
+ cursor: pointer;
134
+ }
135
+
136
+ /* The four icons, as shipped: Font Awesome info-circle, times-circle, check and
137
+ exclamation-triangle, inlined so the toast needs no icon font and no network request. */
138
+ .nxe-toast-info {
139
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6Jy8+PC9zdmc+");
140
+ }
141
+
142
+ .nxe-toast-error {
143
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTEyMS42IDMxMy4xYzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMzggMzc3LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyNTYgMzEybC02NS4xIDY1LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwxMzQuNCAzMzhjLTQuNy00LjctNC43LTEyLjMgMC0xN2w2NS42LTY1LTY1LjYtNjUuMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDM5LjYtMzkuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsNjUgNjUuNyA2NS4xLTY1LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDM5LjYgMzkuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzEyIDI1Nmw2NS42IDY1LjF6Jy8+PC9zdmc+");
144
+ }
145
+
146
+ .nxe-toast-success {
147
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxeicvPjwvc3ZnPg==");
148
+ }
149
+
150
+ .nxe-toast-warning {
151
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1NzYgNTEyJyB3aWR0aD0nNTc2JyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTU2OS41MTcgNDQwLjAxM0M1ODcuOTc1IDQ3Mi4wMDcgNTY0LjgwNiA1MTIgNTI3Ljk0IDUxMkg0OC4wNTRjLTM2LjkzNyAwLTU5Ljk5OS00MC4wNTUtNDEuNTc3LTcxLjk4N0wyNDYuNDIzIDIzLjk4NWMxOC40NjctMzIuMDA5IDY0LjcyLTMxLjk1MSA4My4xNTQgMGwyMzkuOTQgNDE2LjAyOHpNMjg4IDM1NGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0eicvPjwvc3ZnPg==");
152
+ }
153
+
154
+ .nxe-toast-container.toast-top-center .nxe-toast,
155
+ .nxe-toast-container.toast-bottom-center .nxe-toast {
156
+ width: 300px;
157
+ margin-left: auto;
158
+ margin-right: auto;
159
+ }
160
+
161
+ .nxe-toast-container.toast-top-full-width .nxe-toast,
162
+ .nxe-toast-container.toast-bottom-full-width .nxe-toast {
163
+ width: 96%;
164
+ margin-left: auto;
165
+ margin-right: auto;
166
+ }
167
+
168
+ .nxe-toast {
169
+ // Required for parity, not a change to it. The original toast was a <div>; this one is a
170
+ // custom element, and an unknown element is `display: inline` by default — which would make
171
+ // the `width`, `padding` and `margin` above do nothing at all, silently.
172
+ display: block;
173
+
174
+ background-color: var(--nxe-ui-toast-bg, #030303);
175
+ pointer-events: auto;
176
+
177
+ // ngx-toastr animated between `inactive`/`active`/`removed` states that differ only in
178
+ // opacity, over 300ms ease-in. No movement — matching that exactly, not improving on it.
179
+ opacity: 1;
180
+ transition: opacity 300ms ease-in;
181
+ }
182
+
183
+ .nxe-toast-entering,
184
+ .nxe-toast-leaving {
185
+ opacity: 0;
186
+ }
187
+
188
+ .nxe-toast-success {
189
+ background-color: var(--nxe-ui-toast-success-bg, #51a351);
190
+ }
191
+
192
+ .nxe-toast-error {
193
+ background-color: var(--nxe-ui-toast-error-bg, #bd362f);
194
+ }
195
+
196
+ .nxe-toast-info {
197
+ background-color: var(--nxe-ui-toast-info-bg, #2f96b4);
198
+ }
199
+
200
+ .nxe-toast-warning {
201
+ background-color: var(--nxe-ui-toast-warning-bg, #f89406);
202
+ }
203
+
204
+ .nxe-toast-progress {
205
+ position: absolute;
206
+ left: 0;
207
+ bottom: 0;
208
+ height: 4px;
209
+ background-color: var(--nxe-ui-toast-ink, #000000);
210
+ opacity: 0.4;
211
+ }
212
+
213
+ /* Responsive Design */
214
+ @media all and (max-width: 240px) {
215
+ .nxe-toast-container .nxe-toast.div {
216
+ padding: 8px 8px 8px 50px;
217
+ width: 11em;
218
+ }
219
+
220
+ .nxe-toast-container .nxe-toast-close {
221
+ right: -0.2em;
222
+ top: -0.2em;
223
+ }
224
+ }
225
+
226
+ @media all and (min-width: 241px) and (max-width: 480px) {
227
+ .nxe-toast-container .nxe-toast.div {
228
+ padding: 8px 8px 8px 50px;
229
+ width: 18em;
230
+ }
231
+
232
+ .nxe-toast-container .nxe-toast-close {
233
+ right: -0.2em;
234
+ top: -0.2em;
235
+ }
236
+ }
237
+
238
+ @media all and (min-width: 481px) and (max-width: 768px) {
239
+ .nxe-toast-container .nxe-toast.div {
240
+ padding: 15px 15px 15px 50px;
241
+ width: 25em;
242
+ }
243
+ }