@spectral_labs/ui 1.2.1 → 1.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.
@@ -12,18 +12,20 @@
12
12
  trapFocus = true,
13
13
  preventScroll = true,
14
14
  portalTo = undefined,
15
+ presentation = undefined,
15
16
  }: {
16
17
  open?: boolean
17
18
  trapFocus?: boolean
18
19
  preventScroll?: boolean
19
20
  portalTo?: HTMLElement | string
21
+ presentation?: 'dialog' | 'fullscreen-mobile' | 'fullscreen-tablet' | 'fullscreen'
20
22
  } = $props()
21
23
  </script>
22
24
 
23
25
  <DialogRoot bind:open>
24
26
  <DialogTrigger>Open Dialog</DialogTrigger>
25
27
  <DialogOverlay />
26
- <DialogContent {trapFocus} {preventScroll} {portalTo}>
28
+ <DialogContent {trapFocus} {preventScroll} {portalTo} {presentation}>
27
29
  <DialogTitle>Test Title</DialogTitle>
28
30
  <DialogDescription>Test Description</DialogDescription>
29
31
  <button data-testid="inside-button">Inside</button>
@@ -170,4 +170,15 @@ describe('dialog', () => {
170
170
  t.remove();
171
171
  }
172
172
  });
173
+ // --- Presentation prop ---
174
+ it('sets data-presentation attribute matching prop', () => {
175
+ setup({ open: true, presentation: 'fullscreen-mobile' });
176
+ const content = target.querySelector('[role="dialog"]');
177
+ expect(content?.getAttribute('data-presentation')).toBe('fullscreen-mobile');
178
+ });
179
+ it('defaults data-presentation to "dialog"', () => {
180
+ setup({ open: true });
181
+ const content = target.querySelector('[role="dialog"]');
182
+ expect(content?.getAttribute('data-presentation')).toBe('dialog');
183
+ });
173
184
  });
@@ -16,6 +16,7 @@
16
16
  onEscapeKeydown,
17
17
  onInteractOutside,
18
18
  portalTo,
19
+ presentation = 'dialog',
19
20
  class: className,
20
21
  children,
21
22
  }: DialogContentProps = $props()
@@ -91,6 +92,7 @@
91
92
  aria-labelledby={ctx.titleId}
92
93
  aria-describedby={ctx.descriptionId}
93
94
  data-state={ctx.open ? 'open' : 'closed'}
95
+ data-presentation={presentation}
94
96
  >
95
97
  {#if children}{@render children()}{/if}
96
98
  </div>
@@ -130,4 +132,59 @@
130
132
  outline: 2px solid var(--sp-sys-color-primary);
131
133
  outline-offset: 2px;
132
134
  }
135
+
136
+ /* --- Responsive fullscreen presentation --- */
137
+ /* Fills the viewport with inset:0 and neutralizes the centered-modal
138
+ geometry. Padding/background/shadow are inherited from the base rule.
139
+ Closed state is opacity-only (transform stays none), which also reads
140
+ correctly under prefers-reduced-motion. */
141
+
142
+ /* fullscreen at every breakpoint */
143
+ .sp-dialog-content[data-presentation='fullscreen'] {
144
+ inset: 0;
145
+ transform: none;
146
+ width: auto;
147
+ max-width: none;
148
+ height: auto;
149
+ max-height: none;
150
+ border-radius: 0;
151
+ }
152
+ .sp-dialog-content[data-presentation='fullscreen'][data-state='closed'] {
153
+ transform: none;
154
+ opacity: 0;
155
+ }
156
+
157
+ /* fullscreen ≤ 1023px (mobile + tablet) */
158
+ @media (max-width: 1023px) {
159
+ .sp-dialog-content[data-presentation='fullscreen-tablet'] {
160
+ inset: 0;
161
+ transform: none;
162
+ width: auto;
163
+ max-width: none;
164
+ height: auto;
165
+ max-height: none;
166
+ border-radius: 0;
167
+ }
168
+ .sp-dialog-content[data-presentation='fullscreen-tablet'][data-state='closed'] {
169
+ transform: none;
170
+ opacity: 0;
171
+ }
172
+ }
173
+
174
+ /* fullscreen ≤ 639px (phones) */
175
+ @media (max-width: 639px) {
176
+ .sp-dialog-content[data-presentation='fullscreen-mobile'] {
177
+ inset: 0;
178
+ transform: none;
179
+ width: auto;
180
+ max-width: none;
181
+ height: auto;
182
+ max-height: none;
183
+ border-radius: 0;
184
+ }
185
+ .sp-dialog-content[data-presentation='fullscreen-mobile'][data-state='closed'] {
186
+ transform: none;
187
+ opacity: 0;
188
+ }
189
+ }
133
190
  </style>
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-content.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/dialog/components/dialog-content.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAwGrD,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"dialog-content.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/dialog/components/dialog-content.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAyGrD,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -5,5 +5,5 @@ export { default as Overlay } from './components/dialog-overlay.svelte';
5
5
  export { default as Root } from './components/dialog-root.svelte';
6
6
  export { default as Title } from './components/dialog-title.svelte';
7
7
  export { default as Trigger } from './components/dialog-trigger.svelte';
8
- export type { DialogCloseProps, DialogContentProps, DialogDescriptionProps, DialogOverlayProps, DialogProps, DialogTitleProps, DialogTriggerProps, } from './types.js';
8
+ export type { DialogCloseProps, DialogContentProps, DialogDescriptionProps, DialogOverlayProps, DialogPresentation, DialogProps, DialogTitleProps, DialogTriggerProps, } from './types.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/dialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAA;AACvE,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/dialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAA;AACvE,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAA"}
@@ -1,4 +1,6 @@
1
1
  import type { Snippet } from 'svelte';
2
+ /** How a Dialog surface is presented. See DialogContentProps.presentation. */
3
+ export type DialogPresentation = 'dialog' | 'fullscreen-mobile' | 'fullscreen-tablet' | 'fullscreen';
2
4
  export interface DialogProps {
3
5
  /** Whether the dialog is open. */
4
6
  open?: boolean;
@@ -36,6 +38,16 @@ export interface DialogContentProps {
36
38
  * Pass an HTMLElement, CSS selector, or undefined to use document.body.
37
39
  */
38
40
  portalTo?: HTMLElement | string;
41
+ /**
42
+ * How the dialog surface is presented. Affects only the surface
43
+ * (position / size / border-radius); the standard dialog padding is
44
+ * preserved and no full-bleed content layout is imposed.
45
+ * - `'dialog'` (default): centered modal at every breakpoint.
46
+ * - `'fullscreen-mobile'`: fullscreen ≤ 639px, centered modal above.
47
+ * - `'fullscreen-tablet'`: fullscreen ≤ 1023px (mobile + tablet), centered modal above.
48
+ * - `'fullscreen'`: fullscreen at every breakpoint.
49
+ */
50
+ presentation?: DialogPresentation;
39
51
  class?: string;
40
52
  children?: Snippet;
41
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/dialog/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,6FAA6F;IAC7F,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,kCAAkC;IAClC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAChD,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACjD;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/dialog/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,YAAY,CAAA;AAEpG,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,6FAA6F;IAC7F,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,kCAAkC;IAClC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAChD,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACjD;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC/B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
@@ -9,6 +9,7 @@
9
9
  cancelText = 'Cancel',
10
10
  onConfirm,
11
11
  onCancel,
12
+ presentation = undefined,
12
13
  }: {
13
14
  open?: boolean
14
15
  title?: string
@@ -17,13 +18,23 @@
17
18
  cancelText?: string
18
19
  onConfirm?: () => void
19
20
  onCancel?: () => void
21
+ presentation?: 'dialog' | 'fullscreen-mobile' | 'fullscreen-tablet' | 'fullscreen'
20
22
  } = $props()
21
23
  </script>
22
24
 
23
25
  <div data-testid="harness">
24
26
  <button type="button" data-testid="toggle" onclick={() => (open = !open)}>Toggle</button>
25
27
 
26
- <SimpleDialog {open} {title} {description} {confirmText} {cancelText} {onConfirm} {onCancel}>
28
+ <SimpleDialog
29
+ {open}
30
+ {title}
31
+ {description}
32
+ {confirmText}
33
+ {cancelText}
34
+ {onConfirm}
35
+ {onCancel}
36
+ {presentation}
37
+ >
27
38
  <p data-testid="body">dialog body content</p>
28
39
  </SimpleDialog>
29
40
  </div>
@@ -42,4 +42,9 @@ describe('simpleDialog', () => {
42
42
  expect(body).toBeTruthy();
43
43
  expect(body?.textContent).toContain('dialog body content');
44
44
  });
45
+ it('forwards presentation to Dialog.Content', () => {
46
+ setup({ open: true, presentation: 'fullscreen' });
47
+ const dialog = document.body.querySelector('[role="dialog"]');
48
+ expect(dialog?.getAttribute('data-presentation')).toBe('fullscreen');
49
+ });
45
50
  });
@@ -16,6 +16,7 @@
16
16
  onCancel,
17
17
  class: className,
18
18
  portalTo,
19
+ presentation,
19
20
  children,
20
21
  }: SimpleDialogProps = $props()
21
22
 
@@ -32,7 +33,7 @@
32
33
 
33
34
  <DialogRoot bind:open>
34
35
  <DialogOverlay />
35
- <DialogContent class={className} {portalTo}>
36
+ <DialogContent class={className} {portalTo} {presentation}>
36
37
  <DialogTitle>{title}</DialogTitle>
37
38
  {#if description}
38
39
  <DialogDescription>{description}</DialogDescription>
@@ -1 +1 @@
1
- {"version":3,"file":"simple-dialog.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/simple-dialog/simple-dialog.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA4DnD,QAAA,MAAM,YAAY,2DAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"simple-dialog.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/simple-dialog/simple-dialog.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA6DnD,QAAA,MAAM,YAAY,2DAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { Snippet } from 'svelte';
2
+ import type { DialogPresentation } from '../dialog/types.js';
2
3
  export interface SimpleDialogProps {
3
4
  /** Whether the dialog is open. */
4
5
  open?: boolean;
@@ -18,6 +19,8 @@ export interface SimpleDialogProps {
18
19
  class?: string;
19
20
  /** Portal target for dialog content. */
20
21
  portalTo?: HTMLElement | string | undefined;
22
+ /** How the dialog surface is presented (forwarded to Dialog.Content). */
23
+ presentation?: DialogPresentation;
21
24
  children?: Snippet;
22
25
  }
23
26
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/simple-dialog/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/simple-dialog/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;IAC3C,yEAAyE;IACzE,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spectral_labs/ui",
3
3
  "type": "module",
4
- "version": "1.2.1",
4
+ "version": "1.3.0",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org",
7
7
  "access": "public"