@nmorph/nmorph-ui-kit 2.2.50 → 2.2.52

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 (39) hide show
  1. package/dist/assets/icons/full-screen.svg.js +6 -6
  2. package/dist/components/data/nmorph-audio-preview/NmorphAudioPreview.css +1 -1
  3. package/dist/components/data/nmorph-audio-preview/NmorphAudioPreview.vue.js +84 -78
  4. package/dist/components/data/nmorph-file-card/NmorphFileCard.css +1 -1
  5. package/dist/components/data/nmorph-file-card/NmorphFileCard.vue.js +125 -89
  6. package/dist/components/data/nmorph-image-preview/NmorphImagePreview.css +1 -1
  7. package/dist/components/data/nmorph-image-preview/NmorphImagePreview.vue.js +183 -225
  8. package/dist/components/data/nmorph-media-gallery/NmorphMediaGallery.css +1 -0
  9. package/dist/components/data/nmorph-media-gallery/NmorphMediaGallery.vue.js +298 -0
  10. package/dist/components/data/nmorph-media-gallery/NmorphMediaGallery.vue3.js +6 -0
  11. package/dist/components/data/nmorph-preview-portal/NmorphPreviewPortal.css +1 -0
  12. package/dist/components/data/nmorph-preview-portal/NmorphPreviewPortal.vue.js +110 -0
  13. package/dist/components/data/nmorph-preview-portal/NmorphPreviewPortal.vue3.js +6 -0
  14. package/dist/components/data/nmorph-tag-list/components/nmorph-tag-item/NmorphTagItem.vue.js +57 -54
  15. package/dist/components/data/nmorph-video-preview/NmorphVideoPreview.css +1 -1
  16. package/dist/components/data/nmorph-video-preview/NmorphVideoPreview.vue.js +227 -134
  17. package/dist/index.es.js +866 -863
  18. package/dist/index.umd.js +29 -29
  19. package/dist/outside-hooks/use-nmorph-theme.js +16 -16
  20. package/dist/package.json.js +1 -1
  21. package/dist/src/components/data/index.d.ts +2 -0
  22. package/dist/src/components/data/nmorph-card/NmorphCard.vue.d.ts +1 -1
  23. package/dist/src/components/data/nmorph-file-card/types.d.ts +1 -1
  24. package/dist/src/components/data/nmorph-image-preview/NmorphImagePreview.vue.d.ts +3 -3
  25. package/dist/src/components/data/nmorph-media-gallery/NmorphMediaGallery.vue.d.ts +26 -0
  26. package/dist/src/components/data/nmorph-media-gallery/types.d.ts +34 -0
  27. package/dist/src/components/data/nmorph-media-tile/NmorphMediaTile.vue.d.ts +1 -1
  28. package/dist/src/components/data/nmorph-preview-portal/NmorphPreviewPortal.vue.d.ts +43 -0
  29. package/dist/src/components/data/nmorph-video-preview/NmorphVideoPreview.vue.d.ts +9 -2
  30. package/dist/src/components/data/nmorph-video-preview/types.d.ts +6 -0
  31. package/dist/src/components/feedback/nmorph-alert/NmorphAlert.vue.d.ts +1 -1
  32. package/dist/src/components/feedback/nmorph-drawer/NmorphDrawer.vue.d.ts +1 -1
  33. package/dist/src/components/feedback/nmorph-tooltip/NmorphTooltip.vue.d.ts +3 -3
  34. package/dist/src/components/form/nmorph-file-upload/NmorphFileUpload.vue.d.ts +2 -2
  35. package/dist/src/components/form/nmorph-select/NmorphSelect.vue.d.ts +1 -1
  36. package/dist/src/components/form/nmorph-slider/NmorphSlider.vue.d.ts +9 -9
  37. package/dist/src/components/navigation/nmorph-dropdown/NmorphDropdown.vue.d.ts +1 -1
  38. package/dist/style.css +1 -1
  39. package/package.json +24 -23
@@ -1,36 +1,42 @@
1
1
  import './NmorphFileCard.css';
2
- import { defineComponent as O, useSlots as W, computed as r, openBlock as a, createElementBlock as t, normalizeClass as K, createElementVNode as v, createBlock as c, unref as n, withCtx as m, createVNode as l, resolveDynamicComponent as j, createCommentVNode as i, toDisplayString as h, renderSlot as G } from "vue";
3
- import { useModifiers as q } from "../../../utils/create-modifiers.js";
4
- import { getFileExtension as J, getPlainFileType as Q, getTypeCandidates as U, isKnownFileType as d } from "../../../utils/file-types.js";
5
- import { NmorphImageResolution as X, NmorphAudioResolution as Y, NmorphVideoResolution as Z, NmorphArchiveResolution as ee, NmorphDocResolution as oe } from "../../form/nmorph-file-upload/types.js";
6
- import re from "../nmorph-audio-preview/NmorphAudioPreview.vue.js";
2
+ import { defineComponent as K, useSlots as j, computed as a, openBlock as r, createElementBlock as i, normalizeClass as G, createVNode as n, unref as l, withCtx as m, createBlock as T, resolveDynamicComponent as U, createCommentVNode as t, createElementVNode as g, toDisplayString as d, Fragment as q, renderSlot as J } from "vue";
3
+ import { useModifiers as Q } from "../../../utils/create-modifiers.js";
4
+ import { getFileExtension as X, getPlainFileType as Y, getTypeCandidates as Z, isKnownFileType as u } from "../../../utils/file-types.js";
5
+ import { NmorphImageResolution as ee, NmorphAudioResolution as oe, NmorphVideoResolution as ae, NmorphArchiveResolution as re, NmorphDocResolution as ie } from "../../form/nmorph-file-upload/types.js";
6
+ import te from "../nmorph-audio-preview/NmorphAudioPreview.vue.js";
7
7
  /* empty css */
8
- import ae from "../nmorph-video-preview/NmorphVideoPreview.vue.js";
8
+ import ne from "../nmorph-video-preview/NmorphVideoPreview.vue.js";
9
9
  /* empty css */
10
- import ne from "../../../assets/icons/image.svg.js";
11
- import te from "../../../assets/icons/archive.svg.js";
12
- import A from "../../../assets/icons/doc.svg.js";
10
+ import le from "../../../assets/icons/image.svg.js";
11
+ import se from "../../../assets/icons/archive.svg.js";
12
+ import H from "../../../assets/icons/doc.svg.js";
13
13
  import p from "../../basic/nmorph-icon/NmorphIcon.vue.js";
14
14
  /* empty css */
15
- import ie from "../../../assets/icons/eye.svg.js";
16
- import le from "../../../assets/icons/audio.svg.js";
17
- import se from "../../../assets/icons/video.svg.js";
18
- import ce from "../../../assets/icons/loading.svg.js";
19
- import me from "../../../assets/icons/open.svg.js";
20
- import de from "../../../assets/icons/download.svg.js";
21
- const pe = { class: "nmorph-file-card__icon" }, ue = ["href", "aria-label"], fe = { class: "nmorph-file-card__body" }, ve = { class: "nmorph-file-card__info" }, he = { class: "nmorph-file-card__name" }, _e = {
15
+ import ce from "../../../assets/icons/audio.svg.js";
16
+ import me from "../../../assets/icons/video.svg.js";
17
+ import de from "../../../assets/icons/eye.svg.js";
18
+ import ue from "../../../assets/icons/loading.svg.js";
19
+ import pe from "../../../assets/icons/open.svg.js";
20
+ import fe from "../../../assets/icons/download.svg.js";
21
+ const ve = {
22
+ key: 0,
23
+ class: "nmorph-file-card__icon"
24
+ }, he = ["href", "aria-label"], _e = { class: "nmorph-file-card__body" }, we = ["title"], ge = { class: "nmorph-file-card__name" }, ye = {
22
25
  key: 0,
23
26
  class: "nmorph-file-card__error"
24
- }, we = {
27
+ }, be = {
25
28
  key: 1,
26
29
  class: "nmorph-file-card__meta"
27
- }, ye = {
28
- key: 0,
29
- class: "nmorph-file-card__badge"
30
- }, ge = {
30
+ }, ke = ["title", "aria-label"], Ne = ["src", "alt"], Be = {
31
31
  key: 1,
32
+ class: "nmorph-file-card__visual-size"
33
+ }, Ce = {
34
+ key: 2,
35
+ class: "nmorph-file-card__badge"
36
+ }, Se = {
37
+ key: 3,
32
38
  class: "nmorph-file-card__actions"
33
- }, Be = ["href", "aria-label"], Ne = ["href", "download", "aria-label"], Oe = /* @__PURE__ */ O({
39
+ }, Te = ["aria-label"], xe = ["href", "aria-label"], Pe = ["href", "download", "aria-label"], Ae = "var(--nmorph-contrast-text-color)", Qe = /* @__PURE__ */ K({
34
40
  __name: "NmorphFileCard",
35
41
  props: {
36
42
  name: {},
@@ -50,75 +56,76 @@ const pe = { class: "nmorph-file-card__icon" }, ue = ["href", "aria-label"], fe
50
56
  showDefaultActions: { type: Boolean, default: !0 }
51
57
  },
52
58
  emits: ["open", "download", "error"],
53
- setup(P, { emit: H }) {
54
- const e = P, _ = H, D = W(), u = r(() => (e.extension || J(e.name) || Q(e.mimeType)).toLowerCase()), s = r(() => U(e.mimeType, e.name)), $ = r(() => e.mimeType.toLowerCase().startsWith("image/") || s.value.some((o) => d(o, X)) ? ne : e.mimeType.toLowerCase().startsWith("audio/") || s.value.some((o) => d(o, Y)) ? le : e.mimeType.toLowerCase().startsWith("video/") || s.value.some((o) => d(o, Z)) ? se : s.value.some((o) => d(o, ee)) ? te : s.value.some((o) => d(o, oe)) ? A : A), E = (o) => {
59
+ setup(D, { emit: E }) {
60
+ const e = D, y = E, L = j(), f = a(() => (e.extension || X(e.name) || Y(e.mimeType)).toLowerCase()), s = a(() => Z(e.mimeType, e.name)), M = a(() => e.mimeType.toLowerCase().startsWith("image/") || s.value.some((o) => u(o, ee)) ? le : e.mimeType.toLowerCase().startsWith("audio/") || s.value.some((o) => u(o, oe)) ? ce : e.mimeType.toLowerCase().startsWith("video/") || s.value.some((o) => u(o, ae)) ? me : s.value.some((o) => u(o, re)) ? se : s.value.some((o) => u(o, ie)) ? H : H), O = (o) => {
55
61
  if (o === void 0 || Number.isNaN(o) || o < 0) return "";
56
62
  if (o === 0) return "0 B";
57
- const B = ["B", "KB", "MB", "GB", "TB"], N = Math.min(Math.floor(Math.log(o) / Math.log(1024)), B.length - 1), k = o / 1024 ** N, V = k >= 10 || N === 0 || Number.isInteger(k) ? 0 : 1;
58
- return `${k.toFixed(V)} ${B[N]}`;
59
- }, L = r(() => E(e.size)), M = r(() => u.value || e.mimeType), b = r(() => [M.value, L.value].filter(Boolean).join(" · ")), w = r(() => e.mediaPreview === "audio" && !!e.previewSrc && !e.loading && !e.error), y = r(() => e.mediaPreview === "video" && !!e.previewSrc && !e.loading && !e.error), f = r(() => w.value || y.value), z = r(() => e.compact ? "96px" : "120px"), S = r(() => e.mimeType.toLowerCase() === "application/pdf" || u.value === "pdf"), x = r(() => S.value ? e.previewSrc || e.downloadHref : ""), g = r(
60
- () => e.showDefaultActions && !!x.value && !f.value && S.value
61
- ), C = r(
62
- () => !!D.actions || e.showDefaultActions && (e.previewSrc && !f.value && !g.value || e.downloadHref)
63
- ), F = r(
64
- () => q({
63
+ const B = ["B", "KB", "MB", "GB", "TB"], C = Math.min(Math.floor(Math.log(o) / Math.log(1024)), B.length - 1), S = o / 1024 ** C, W = S >= 10 || C === 0 || Number.isInteger(S) ? 0 : 1;
64
+ return `${S.toFixed(W)} ${B[C]}`;
65
+ }, b = a(() => O(e.size)), R = a(() => f.value || e.mimeType), x = a(() => [R.value, b.value].filter(Boolean).join(" · ")), k = a(() => e.mediaPreview === "audio" && !!e.previewSrc && !e.loading && !e.error), v = a(() => e.mediaPreview === "video" && !!e.previewSrc && !e.loading && !e.error), h = a(() => e.mediaPreview === "image" && !!e.previewSrc && !e.loading && !e.error), _ = a(
66
+ () => k.value || v.value || h.value
67
+ ), c = a(() => v.value || h.value), z = a(() => e.compact ? "96px" : "120px"), P = a(() => e.mimeType.toLowerCase() === "application/pdf" || f.value === "pdf"), A = a(() => P.value ? e.previewSrc || e.downloadHref : ""), N = a(
68
+ () => e.showDefaultActions && !!A.value && !_.value && P.value
69
+ ), I = a(
70
+ () => !!L.actions || e.showDefaultActions && (e.loading || e.previewSrc && !_.value && !N.value || e.downloadHref)
71
+ ), F = a(
72
+ () => Q({
65
73
  "nmorph-file-card": [
66
74
  e.surface,
67
75
  e.compact && "compact",
68
76
  e.loading && "loading",
69
77
  e.error && "error",
70
- f.value && "media",
71
- w.value && "media-audio",
72
- y.value && "media-video",
78
+ _.value && "media",
79
+ k.value && "media-audio",
80
+ v.value && "media-video",
81
+ h.value && "media-image",
82
+ c.value && "media-visual",
73
83
  !e.iconSurface && "icon-plain",
74
- !C.value && "no-actions"
84
+ !I.value && "no-actions"
75
85
  ]
76
86
  })
77
- ), T = () => _("open"), R = () => _("download"), I = () => _("error");
78
- return (o, B) => (a(), t("div", {
79
- class: K(F.value)
87
+ ), w = () => y("open"), V = () => y("download"), $ = () => y("error");
88
+ return (o, B) => (r(), i("div", {
89
+ class: G(F.value)
80
90
  }, [
81
- v("div", pe, [
82
- e.loading ? (a(), c(n(p), {
83
- key: 0,
84
- size: "medium"
85
- }, {
86
- default: m(() => [
87
- l(n(ce))
88
- ]),
89
- _: 1
90
- })) : (a(), c(n(p), {
91
- key: 1,
92
- size: "medium"
93
- }, {
91
+ c.value ? t("", !0) : (r(), i("div", ve, [
92
+ n(l(p), { size: "medium" }, {
94
93
  default: m(() => [
95
- (a(), c(j($.value)))
94
+ (r(), T(U(M.value)))
96
95
  ]),
97
96
  _: 1
98
- })),
99
- g.value && !e.loading && !e.error ? (a(), t("a", {
100
- key: 2,
101
- href: x.value,
97
+ }),
98
+ N.value && !e.loading && !e.error ? (r(), i("a", {
99
+ key: 0,
100
+ href: A.value,
102
101
  target: "_blank",
103
102
  rel: "noopener noreferrer",
104
103
  class: "nmorph-file-card__icon-action",
105
104
  "aria-label": `Preview ${e.name}`,
106
- onClick: T
105
+ onClick: w
107
106
  }, [
108
- l(n(p), { size: "small" }, {
107
+ n(l(p), {
108
+ size: "small",
109
+ color: Ae
110
+ }, {
109
111
  default: m(() => [
110
- l(n(ie))
112
+ n(l(de))
111
113
  ]),
112
114
  _: 1
113
115
  })
114
- ], 8, ue)) : i("", !0)
115
- ]),
116
- v("div", fe, [
117
- v("div", ve, [
118
- v("span", he, h(e.name), 1),
119
- e.error && e.errorText ? (a(), t("span", _e, h(e.errorText), 1)) : b.value ? (a(), t("span", we, h(b.value), 1)) : i("", !0)
120
- ]),
121
- w.value ? (a(), c(re, {
116
+ ], 8, he)) : t("", !0)
117
+ ])),
118
+ g("div", _e, [
119
+ g("div", {
120
+ class: "nmorph-file-card__info",
121
+ title: e.name
122
+ }, [
123
+ g("span", ge, d(e.name), 1),
124
+ c.value ? t("", !0) : (r(), i(q, { key: 0 }, [
125
+ e.error && e.errorText ? (r(), i("span", ye, d(e.errorText), 1)) : x.value ? (r(), i("span", be, d(x.value), 1)) : t("", !0)
126
+ ], 64))
127
+ ], 8, we),
128
+ k.value ? (r(), T(te, {
122
129
  key: 0,
123
130
  class: "nmorph-file-card__audio-preview",
124
131
  src: e.previewSrc,
@@ -129,9 +136,9 @@ const pe = { class: "nmorph-file-card__icon" }, ue = ["href", "aria-label"], fe
129
136
  "show-icon": !1,
130
137
  "show-header": !1,
131
138
  "show-default-actions": !1,
132
- onError: I
133
- }, null, 8, ["src", "name"])) : i("", !0),
134
- y.value ? (a(), c(ae, {
139
+ onError: $
140
+ }, null, 8, ["src", "name"])) : t("", !0),
141
+ v.value ? (r(), T(ne, {
135
142
  key: 1,
136
143
  class: "nmorph-file-card__video-preview",
137
144
  src: e.previewSrc,
@@ -143,48 +150,77 @@ const pe = { class: "nmorph-file-card__icon" }, ue = ["href", "aria-label"], fe
143
150
  controls: !1,
144
151
  "show-meta": !1,
145
152
  "show-default-actions": !1,
146
- onError: I
147
- }, null, 8, ["src", "name", "height"])) : i("", !0)
153
+ "preview-mode": "emit",
154
+ onError: $,
155
+ onPreview: w
156
+ }, null, 8, ["src", "name", "height"])) : t("", !0),
157
+ h.value ? (r(), i("button", {
158
+ key: 2,
159
+ class: "nmorph-file-card__image-preview",
160
+ type: "button",
161
+ title: e.name,
162
+ "aria-label": `Preview ${e.name}`,
163
+ onClick: w
164
+ }, [
165
+ g("img", {
166
+ class: "nmorph-file-card__image",
167
+ src: e.previewSrc,
168
+ alt: e.name
169
+ }, null, 8, Ne)
170
+ ], 8, ke)) : t("", !0)
148
171
  ]),
149
- e.showExtensionBadge && u.value ? (a(), t("span", ye, h(u.value), 1)) : i("", !0),
150
- C.value ? (a(), t("div", ge, [
151
- G(o.$slots, "actions", {}, () => [
152
- e.previewSrc && !f.value && !g.value ? (a(), t("a", {
172
+ c.value && b.value ? (r(), i("span", Be, d(b.value), 1)) : t("", !0),
173
+ e.showExtensionBadge && f.value && !c.value ? (r(), i("span", Ce, d(f.value), 1)) : t("", !0),
174
+ I.value ? (r(), i("div", Se, [
175
+ J(o.$slots, "actions", {}, () => [
176
+ e.loading ? (r(), i("span", {
153
177
  key: 0,
178
+ class: "nmorph-file-card__action-loader",
179
+ role: "status",
180
+ "aria-label": `Uploading ${e.name}`
181
+ }, [
182
+ n(l(p), { size: "small" }, {
183
+ default: m(() => [
184
+ n(l(ue))
185
+ ]),
186
+ _: 1
187
+ })
188
+ ], 8, Te)) : e.previewSrc && !_.value && !N.value ? (r(), i("a", {
189
+ key: 1,
154
190
  href: e.previewSrc,
155
191
  target: "_blank",
156
192
  rel: "noopener noreferrer",
157
193
  class: "nmorph-file-card__action-link",
158
194
  "aria-label": `Open ${e.name}`,
159
- onClick: T
195
+ onClick: w
160
196
  }, [
161
- l(n(p), { size: "small" }, {
197
+ n(l(p), { size: "small" }, {
162
198
  default: m(() => [
163
- l(n(me))
199
+ n(l(pe))
164
200
  ]),
165
201
  _: 1
166
202
  })
167
- ], 8, Be)) : i("", !0),
168
- e.downloadHref ? (a(), t("a", {
169
- key: 1,
203
+ ], 8, xe)) : t("", !0),
204
+ !e.loading && e.downloadHref ? (r(), i("a", {
205
+ key: 2,
170
206
  href: e.downloadHref,
171
207
  download: e.name,
172
208
  class: "nmorph-file-card__action-link",
173
209
  "aria-label": `Download ${e.name}`,
174
- onClick: R
210
+ onClick: V
175
211
  }, [
176
- l(n(p), { size: "small" }, {
212
+ n(l(p), { size: "small" }, {
177
213
  default: m(() => [
178
- l(n(de))
214
+ n(l(fe))
179
215
  ]),
180
216
  _: 1
181
217
  })
182
- ], 8, Ne)) : i("", !0)
218
+ ], 8, Pe)) : t("", !0)
183
219
  ])
184
- ])) : i("", !0)
220
+ ])) : t("", !0)
185
221
  ], 2));
186
222
  }
187
223
  });
188
224
  export {
189
- Oe as default
225
+ Qe as default
190
226
  };
@@ -1 +1 @@
1
- .nmorph-image-preview{--width: 50px;--height: 50px;--nmorph-image-preview-radius: var(--default-border-radius);width:var(--width);height:var(--height);overflow:hidden;border-radius:var(--nmorph-image-preview-radius)}.nmorph-image-preview .nmorph-image-preview__trigger{position:relative;width:100%;height:100%;cursor:pointer}.nmorph-image-preview .nmorph-image-preview__trigger:hover{filter:brightness(.8)}.nmorph-image-preview .nmorph-image-preview__trigger .nmorph-image{width:100%;height:100%}.nmorph-image-preview.nmorph-image-preview--gallery-trigger{width:auto;height:auto;overflow:visible}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger{display:flex;flex-wrap:wrap;gap:var(--nmorph-image-preview-trigger-gap, 8px);width:auto;height:auto}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger:hover{filter:none}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-item{position:relative;display:block;width:var(--width);height:var(--height);padding:0;overflow:hidden;color:inherit;font:inherit;background:transparent;border:0;border-radius:var(--nmorph-image-preview-radius);cursor:pointer}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-item:hover{filter:brightness(.8)}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-item .nmorph-image{width:100%;height:100%}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-more{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;color:var(--nmorph-white-color);font-weight:600;line-height:var(--line-height-regular);background:color-mix(in srgb,var(--nmorph-black-color) 60%,transparent);pointer-events:none}.nmorph-image-preview__portal{display:contents}.nmorph-image-preview__portal .nmorph-image-preview__content{--nmorph-image-preview-content-width: min( calc(100vw - 96px) , 960px);--nmorph-image-preview-content-height: min( calc(100vh - 180px) , 720px);position:absolute;top:50%;left:50%;display:flex;justify-content:center;align-items:center;width:var(--nmorph-image-preview-content-width);height:var(--nmorph-image-preview-content-height);transform:translate(-50%,-50%);transition:var(--transition-04) opacity ease-in-out;pointer-events:none}.nmorph-image-preview__portal .nmorph-image-preview__content .nmorph-image{width:100%;height:100%;pointer-events:none}.nmorph-image-preview__portal .nmorph-image-preview__content .nmorph-image img{display:block;width:auto;max-width:100%;height:auto;max-height:100%;object-fit:contain;pointer-events:auto}.nmorph-image-preview__portal .nmorph-image-preview__actions{position:absolute;bottom:-50px;left:50%;z-index:2;display:flex;height:0;transform:translate(-50%);transition:ease-in-out bottom var(--transition-03)}.nmorph-image-preview__portal .nmorph-image-preview__action-element{margin-right:var(--indentation-03)}.nmorph-image-preview__portal .nmorph-button__content{box-shadow:none}.nmorph-image-preview__portal .nmorph-image-preview__left,.nmorph-image-preview__portal .nmorph-image-preview__right{z-index:2}.nmorph-image-preview__portal .nmorph-image-preview__left{position:absolute;top:50%;left:-100%;transform:rotate(90deg) translate(-50%);transition:ease-in-out left var(--transition-03)}.nmorph-image-preview__portal .nmorph-image-preview__right{position:absolute;top:50%;right:-100%;transform:rotate(270deg) translate(50%);transition:ease-in-out right var(--transition-03)}.nmorph-image-preview__portal.nmorph-image-preview--opened .nmorph-image-preview__actions{bottom:50px}.nmorph-image-preview__portal.nmorph-image-preview--opened{--nmorph-image-preview-btn-margin: 20px}.nmorph-image-preview__portal.nmorph-image-preview--opened .nmorph-image-preview__left{left:var(--nmorph-image-preview-btn-margin)}.nmorph-image-preview__portal.nmorph-image-preview--opened .nmorph-image-preview__right{right:var(--nmorph-image-preview-btn-margin)}
1
+ .nmorph-image-preview{--width: 50px;--height: 50px;--nmorph-image-preview-radius: var(--default-border-radius);width:var(--width);height:var(--height);overflow:hidden;border-radius:var(--nmorph-image-preview-radius)}.nmorph-image-preview .nmorph-image-preview__trigger{position:relative;width:100%;height:100%;cursor:pointer}.nmorph-image-preview .nmorph-image-preview__trigger:hover{filter:brightness(.8)}.nmorph-image-preview .nmorph-image-preview__trigger .nmorph-image{width:100%;height:100%}.nmorph-image-preview.nmorph-image-preview--gallery-trigger{width:auto;height:auto;overflow:visible}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger{display:flex;flex-wrap:wrap;gap:var(--nmorph-image-preview-trigger-gap, 8px);width:auto;height:auto}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger:hover{filter:none}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-item{position:relative;display:block;width:var(--width);height:var(--height);padding:0;overflow:hidden;color:inherit;font:inherit;background:transparent;border:0;border-radius:var(--nmorph-image-preview-radius);cursor:pointer}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-item:hover{filter:brightness(.8)}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-item .nmorph-image{width:100%;height:100%}.nmorph-image-preview.nmorph-image-preview--gallery-trigger .nmorph-image-preview__trigger-more{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;color:var(--nmorph-white-color);font-weight:600;line-height:var(--line-height-regular);background:color-mix(in srgb,var(--nmorph-black-color) 60%,transparent);pointer-events:none}.nmorph-image-preview__portal{display:contents}.nmorph-image-preview__portal .nmorph-image-preview__content .nmorph-image{width:100%;height:100%;pointer-events:none}.nmorph-image-preview__portal .nmorph-image-preview__content .nmorph-image img{display:block;width:auto;max-width:100%;height:auto;max-height:100%;object-fit:contain;pointer-events:auto}.nmorph-image-preview__portal .nmorph-image-preview__action-element{margin-right:var(--indentation-03)}