@data-slot/popover 0.2.30 → 0.2.32
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.
- package/README.md +47 -37
- package/dist/{index.d.cts → index-C_T5GlRx.d.ts} +24 -3
- package/dist/{index.d.ts → index-uOCZ0BPG.d.cts} +24 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -47,7 +47,12 @@ import { createPopover } from "@data-slot/popover";
|
|
|
47
47
|
|
|
48
48
|
const popover = createPopover(element, {
|
|
49
49
|
defaultOpen: false,
|
|
50
|
-
|
|
50
|
+
side: "bottom",
|
|
51
|
+
align: "center",
|
|
52
|
+
sideOffset: 4,
|
|
53
|
+
alignOffset: 0,
|
|
54
|
+
avoidCollisions: true,
|
|
55
|
+
collisionPadding: 8,
|
|
51
56
|
closeOnClickOutside: true,
|
|
52
57
|
closeOnEscape: true,
|
|
53
58
|
onOpenChange: (open) => console.log(open),
|
|
@@ -59,7 +64,13 @@ const popover = createPopover(element, {
|
|
|
59
64
|
| Option | Type | Default | Description |
|
|
60
65
|
|--------|------|---------|-------------|
|
|
61
66
|
| `defaultOpen` | `boolean` | `false` | Initial open state |
|
|
62
|
-
| `
|
|
67
|
+
| `side` | `"top" \| "right" \| "bottom" \| "left"` | `"bottom"` | Preferred side relative to trigger |
|
|
68
|
+
| `align` | `"start" \| "center" \| "end"` | `"center"` | Preferred alignment on the side axis |
|
|
69
|
+
| `sideOffset` | `number` | `4` | Distance from trigger in pixels |
|
|
70
|
+
| `alignOffset` | `number` | `0` | Offset from alignment edge in pixels |
|
|
71
|
+
| `avoidCollisions` | `boolean` | `true` | Flip/shift to stay in viewport |
|
|
72
|
+
| `collisionPadding` | `number` | `8` | Viewport edge padding in pixels |
|
|
73
|
+
| `position` | `"top" \| "bottom" \| "left" \| "right"` | - | Deprecated alias for `side` |
|
|
63
74
|
| `closeOnClickOutside` | `boolean` | `true` | Close when clicking outside |
|
|
64
75
|
| `closeOnEscape` | `boolean` | `true` | Close when pressing Escape |
|
|
65
76
|
| `onOpenChange` | `(open: boolean) => void` | `undefined` | Callback when open state changes |
|
|
@@ -102,17 +113,25 @@ Options can also be set via data attributes on the root element. JS options take
|
|
|
102
113
|
| Attribute | Type | Default | Description |
|
|
103
114
|
|-----------|------|---------|-------------|
|
|
104
115
|
| `data-default-open` | boolean | `false` | Initial open state |
|
|
116
|
+
| `data-side` | string | `"bottom"` | Preferred side |
|
|
117
|
+
| `data-align` | string | `"center"` | Preferred alignment |
|
|
118
|
+
| `data-side-offset` | number | `4` | Distance from trigger (px) |
|
|
119
|
+
| `data-align-offset` | number | `0` | Offset from alignment edge (px) |
|
|
120
|
+
| `data-avoid-collisions` | boolean | `true` | Flip/shift to stay in viewport |
|
|
121
|
+
| `data-collision-padding` | number | `8` | Viewport edge padding (px) |
|
|
105
122
|
| `data-close-on-click-outside` | boolean | `true` | Close when clicking outside |
|
|
106
123
|
| `data-close-on-escape` | boolean | `true` | Close when pressing Escape |
|
|
107
124
|
|
|
108
125
|
Boolean attributes: present or `"true"` = true, `"false"` = false, absent = default.
|
|
109
126
|
|
|
110
|
-
|
|
127
|
+
Placement can be set on root or content (content takes precedence):
|
|
111
128
|
|
|
112
129
|
```html
|
|
113
|
-
<div data-slot="popover-content" data-
|
|
130
|
+
<div data-slot="popover-content" data-side="top" data-align="end">
|
|
114
131
|
```
|
|
115
132
|
|
|
133
|
+
`data-position` is still supported as a deprecated fallback alias for `data-side`.
|
|
134
|
+
|
|
116
135
|
```html
|
|
117
136
|
<!-- Popover that stays open when clicking outside -->
|
|
118
137
|
<div data-slot="popover" data-close-on-click-outside="false">
|
|
@@ -122,7 +141,8 @@ Position is set via `data-position` on the content element:
|
|
|
122
141
|
|
|
123
142
|
## Styling
|
|
124
143
|
|
|
125
|
-
|
|
144
|
+
Popover position is computed in JavaScript and applied as `position: fixed` + inline `top/left`.
|
|
145
|
+
Use `data-state`, `data-side`, and `data-align` for styling/animation:
|
|
126
146
|
|
|
127
147
|
```css
|
|
128
148
|
/* Hidden state */
|
|
@@ -130,48 +150,35 @@ Use `data-state` and `data-position` attributes:
|
|
|
130
150
|
display: none;
|
|
131
151
|
}
|
|
132
152
|
|
|
133
|
-
/* Positioning */
|
|
134
|
-
[data-slot="popover"] {
|
|
135
|
-
position: relative;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
153
|
[data-slot="popover-content"] {
|
|
139
|
-
position:
|
|
154
|
+
position: fixed;
|
|
155
|
+
transition: opacity 0.2s ease-out, transform 0.2s ease-out;
|
|
140
156
|
}
|
|
141
157
|
|
|
142
|
-
[data-slot="popover-content"][data-
|
|
143
|
-
|
|
144
|
-
left: 50%;
|
|
145
|
-
transform: translateX(-50%);
|
|
158
|
+
[data-slot="popover-content"][hidden][data-side="top"] {
|
|
159
|
+
transform: translateY(4px);
|
|
146
160
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
top: 100%;
|
|
150
|
-
left: 50%;
|
|
151
|
-
transform: translateX(-50%);
|
|
161
|
+
[data-slot="popover-content"][hidden][data-side="bottom"] {
|
|
162
|
+
transform: translateY(-4px);
|
|
152
163
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
right: 100%;
|
|
156
|
-
top: 50%;
|
|
157
|
-
transform: translateY(-50%);
|
|
164
|
+
[data-slot="popover-content"][hidden][data-side="left"] {
|
|
165
|
+
transform: translateX(4px);
|
|
158
166
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
left: 100%;
|
|
162
|
-
top: 50%;
|
|
163
|
-
transform: translateY(-50%);
|
|
167
|
+
[data-slot="popover-content"][hidden][data-side="right"] {
|
|
168
|
+
transform: translateX(-4px);
|
|
164
169
|
}
|
|
165
170
|
```
|
|
166
171
|
|
|
167
172
|
With Tailwind:
|
|
168
173
|
|
|
169
174
|
```html
|
|
170
|
-
<div data-slot="popover"
|
|
175
|
+
<div data-slot="popover">
|
|
171
176
|
<button data-slot="popover-trigger">Open</button>
|
|
172
|
-
<div
|
|
173
|
-
data-slot="popover-content"
|
|
174
|
-
|
|
177
|
+
<div
|
|
178
|
+
data-slot="popover-content"
|
|
179
|
+
data-side="bottom"
|
|
180
|
+
data-align="start"
|
|
181
|
+
class="fixed bg-white shadow-lg rounded-lg p-4 transition data-[state=closed]:opacity-0"
|
|
175
182
|
>
|
|
176
183
|
Content
|
|
177
184
|
</div>
|
|
@@ -228,7 +235,11 @@ element.dispatchEvent(
|
|
|
228
235
|
|
|
229
236
|
#### Deprecated Shapes
|
|
230
237
|
|
|
231
|
-
The following
|
|
238
|
+
The following shapes are deprecated and will be removed in the next major release:
|
|
239
|
+
|
|
240
|
+
- `popover:set` detail `{ value: boolean }` (use `{ open: boolean }`)
|
|
241
|
+
- `position` option (use `side`)
|
|
242
|
+
- `data-position` attribute (use `data-side`)
|
|
232
243
|
|
|
233
244
|
```javascript
|
|
234
245
|
// Deprecated: { value: boolean }
|
|
@@ -237,9 +248,8 @@ element.dispatchEvent(
|
|
|
237
248
|
);
|
|
238
249
|
```
|
|
239
250
|
|
|
240
|
-
Use
|
|
251
|
+
Use the replacements listed above.
|
|
241
252
|
|
|
242
253
|
## License
|
|
243
254
|
|
|
244
255
|
MIT
|
|
245
|
-
|
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
//#region src/index.d.ts
|
|
2
|
-
type
|
|
2
|
+
type PopoverSide = "top" | "right" | "bottom" | "left";
|
|
3
|
+
type PopoverAlign = "start" | "center" | "end";
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use `PopoverSide` and `side` option instead.
|
|
6
|
+
* Kept for backward compatibility and planned for removal in the next major.
|
|
7
|
+
*/
|
|
8
|
+
type PopoverPosition = PopoverSide;
|
|
3
9
|
interface PopoverOptions {
|
|
4
10
|
/** Initial open state */
|
|
5
11
|
defaultOpen?: boolean;
|
|
6
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Use `side` instead.
|
|
14
|
+
* TODO(next-major): remove `position` option support and migrate callers to `side`.
|
|
15
|
+
*/
|
|
7
16
|
position?: PopoverPosition;
|
|
17
|
+
/** The preferred side of the trigger to render against. @default "bottom" */
|
|
18
|
+
side?: PopoverSide;
|
|
19
|
+
/** The preferred alignment against the trigger. @default "center" */
|
|
20
|
+
align?: PopoverAlign;
|
|
21
|
+
/** The distance in pixels from the trigger. @default 4 */
|
|
22
|
+
sideOffset?: number;
|
|
23
|
+
/** Offset in pixels from the alignment edge. @default 0 */
|
|
24
|
+
alignOffset?: number;
|
|
25
|
+
/** When true, flips/shifts content to avoid viewport collisions. @default true */
|
|
26
|
+
avoidCollisions?: boolean;
|
|
27
|
+
/** Viewport padding used when avoiding collisions. @default 8 */
|
|
28
|
+
collisionPadding?: number;
|
|
8
29
|
/** Callback when open state changes */
|
|
9
30
|
onOpenChange?: (open: boolean) => void;
|
|
10
31
|
/** Close when clicking outside */
|
|
@@ -45,4 +66,4 @@ declare function createPopover(root: Element, options?: PopoverOptions): Popover
|
|
|
45
66
|
*/
|
|
46
67
|
declare function create(scope?: ParentNode): PopoverController[];
|
|
47
68
|
//#endregion
|
|
48
|
-
export { PopoverController, PopoverOptions, PopoverPosition, create, createPopover };
|
|
69
|
+
export { PopoverAlign, PopoverController, PopoverOptions, PopoverPosition, PopoverSide, create, createPopover };
|
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
//#region src/index.d.ts
|
|
2
|
-
type
|
|
2
|
+
type PopoverSide = "top" | "right" | "bottom" | "left";
|
|
3
|
+
type PopoverAlign = "start" | "center" | "end";
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use `PopoverSide` and `side` option instead.
|
|
6
|
+
* Kept for backward compatibility and planned for removal in the next major.
|
|
7
|
+
*/
|
|
8
|
+
type PopoverPosition = PopoverSide;
|
|
3
9
|
interface PopoverOptions {
|
|
4
10
|
/** Initial open state */
|
|
5
11
|
defaultOpen?: boolean;
|
|
6
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Use `side` instead.
|
|
14
|
+
* TODO(next-major): remove `position` option support and migrate callers to `side`.
|
|
15
|
+
*/
|
|
7
16
|
position?: PopoverPosition;
|
|
17
|
+
/** The preferred side of the trigger to render against. @default "bottom" */
|
|
18
|
+
side?: PopoverSide;
|
|
19
|
+
/** The preferred alignment against the trigger. @default "center" */
|
|
20
|
+
align?: PopoverAlign;
|
|
21
|
+
/** The distance in pixels from the trigger. @default 4 */
|
|
22
|
+
sideOffset?: number;
|
|
23
|
+
/** Offset in pixels from the alignment edge. @default 0 */
|
|
24
|
+
alignOffset?: number;
|
|
25
|
+
/** When true, flips/shifts content to avoid viewport collisions. @default true */
|
|
26
|
+
avoidCollisions?: boolean;
|
|
27
|
+
/** Viewport padding used when avoiding collisions. @default 8 */
|
|
28
|
+
collisionPadding?: number;
|
|
8
29
|
/** Callback when open state changes */
|
|
9
30
|
onOpenChange?: (open: boolean) => void;
|
|
10
31
|
/** Close when clicking outside */
|
|
@@ -45,4 +66,4 @@ declare function createPopover(root: Element, options?: PopoverOptions): Popover
|
|
|
45
66
|
*/
|
|
46
67
|
declare function create(scope?: ParentNode): PopoverController[];
|
|
47
68
|
//#endregion
|
|
48
|
-
export { PopoverController, PopoverOptions, PopoverPosition, create, createPopover };
|
|
69
|
+
export { PopoverAlign, PopoverController, PopoverOptions, PopoverPosition, PopoverSide, create, createPopover };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`top`,`right`,`bottom`,`left`],n=[`start`,`center`,`end`];function r(r,i={}){let a=(0,e.getPart)(r,`popover-trigger`),o=(0,e.getPart)(r,`popover-content`),s=(0,e.getPart)(r,`popover-close`);if(!a||!o)throw Error(`Popover requires trigger and content slots`);let c=i.defaultOpen??(0,e.getDataBool)(r,`defaultOpen`)??!1,l=i.onOpenChange,u=i.closeOnClickOutside??(0,e.getDataBool)(r,`closeOnClickOutside`)??!0,d=i.closeOnEscape??(0,e.getDataBool)(r,`closeOnEscape`)??!0,f=i.position??(0,e.getDataEnum)(o,`position`,t)??(0,e.getDataEnum)(r,`position`,t),p=i.side??(0,e.getDataEnum)(o,`side`,t)??(0,e.getDataEnum)(r,`side`,t)??f??`bottom`,m=i.align??(0,e.getDataEnum)(o,`align`,n)??(0,e.getDataEnum)(r,`align`,n)??`center`,h=i.sideOffset??(0,e.getDataNumber)(o,`sideOffset`)??(0,e.getDataNumber)(r,`sideOffset`)??4,g=i.alignOffset??(0,e.getDataNumber)(o,`alignOffset`)??(0,e.getDataNumber)(r,`alignOffset`)??0,_=i.avoidCollisions??(0,e.getDataBool)(o,`avoidCollisions`)??(0,e.getDataBool)(r,`avoidCollisions`)??!0,v=i.collisionPadding??(0,e.getDataNumber)(o,`collisionPadding`)??(0,e.getDataNumber)(r,`collisionPadding`)??8,y=c,b=[],x=null,S=!1,C=()=>{S&&=(o.removeAttribute(`tabindex`),!1)},w=()=>{let e=o.querySelector(`[autofocus]`);if(e)return e.focus();let t=o.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`);if(t)return t.focus();o.getAttribute(`tabindex`)||(o.setAttribute(`tabindex`,`-1`),S=!0),o.focus()},T=(0,e.ensureId)(o,`popover-content`);a.setAttribute(`aria-haspopup`,`dialog`),a.setAttribute(`aria-controls`,T),o.setAttribute(`data-side`,p),o.setAttribute(`data-align`,m),o.setAttribute(`data-position`,p);let E=()=>{let t=r.ownerDocument.defaultView??window,n=(0,e.computeFloatingPosition)({anchorRect:a.getBoundingClientRect(),contentRect:o.getBoundingClientRect(),side:p,align:m,sideOffset:h,alignOffset:g,avoidCollisions:_,collisionPadding:v});o.style.position=`absolute`,o.style.top=`${n.y+t.scrollY}px`,o.style.left=`${n.x+t.scrollX}px`,o.style.margin=`0`,o.setAttribute(`data-side`,n.side),o.setAttribute(`data-align`,n.align),o.setAttribute(`data-position`,n.side)},D=(0,e.createPositionSync)({observedElements:[a,o],isActive:()=>y,ancestorScroll:!1,onUpdate:E}),O=t=>{y!==t&&(t&&(x=document.activeElement),y=t,(0,e.setAria)(a,`expanded`,y),(0,e.emit)(r,`popover:change`,{open:y}),l?.(y),t?(o.hidden=!1,r.setAttribute(`data-state`,`open`),o.setAttribute(`data-state`,`open`),E(),D.start(),D.update(),requestAnimationFrame(w)):(D.stop(),o.hidden=!0,r.setAttribute(`data-state`,`closed`),o.setAttribute(`data-state`,`closed`),C(),requestAnimationFrame(()=>{x&&x.isConnected?x.focus():a.focus(),x=null})))};return(0,e.setAria)(a,`expanded`,y),o.hidden=!y,r.setAttribute(`data-state`,y?`open`:`closed`),o.setAttribute(`data-state`,y?`open`:`closed`),c&&(E(),D.start(),D.update(),requestAnimationFrame(w)),b.push((0,e.on)(a,`click`,()=>O(!y))),s&&b.push((0,e.on)(s,`click`,()=>O(!1))),b.push((0,e.createDismissLayer)({root:r,isOpen:()=>y,onDismiss:()=>O(!1),closeOnClickOutside:u,closeOnEscape:d})),b.push((0,e.on)(r,`popover:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&O(n)})),{open:()=>O(!0),close:()=>O(!1),toggle:()=>O(!y),get isOpen(){return y},destroy:()=>{D.stop(),b.forEach(e=>e()),b.length=0,C()}}}const i=new WeakSet;function a(t=document){let n=[];for(let a of(0,e.getRoots)(t,`popover`))i.has(a)||(i.add(a),n.push(r(a)));return n}exports.create=a,exports.createPopover=r;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{computeFloatingPosition as e,createDismissLayer as t,createPositionSync as n,emit as r,ensureId as i,getDataBool as a,getDataEnum as o,getDataNumber as s,getPart as c,getRoots as l,on as u,setAria as d}from"@data-slot/core";const f=[`top`,`right`,`bottom`,`left`],p=[`start`,`center`,`end`];function m(l,m={}){let h=c(l,`popover-trigger`),g=c(l,`popover-content`),_=c(l,`popover-close`);if(!h||!g)throw Error(`Popover requires trigger and content slots`);let v=m.defaultOpen??a(l,`defaultOpen`)??!1,y=m.onOpenChange,b=m.closeOnClickOutside??a(l,`closeOnClickOutside`)??!0,x=m.closeOnEscape??a(l,`closeOnEscape`)??!0,S=m.position??o(g,`position`,f)??o(l,`position`,f),C=m.side??o(g,`side`,f)??o(l,`side`,f)??S??`bottom`,w=m.align??o(g,`align`,p)??o(l,`align`,p)??`center`,T=m.sideOffset??s(g,`sideOffset`)??s(l,`sideOffset`)??4,E=m.alignOffset??s(g,`alignOffset`)??s(l,`alignOffset`)??0,D=m.avoidCollisions??a(g,`avoidCollisions`)??a(l,`avoidCollisions`)??!0,O=m.collisionPadding??s(g,`collisionPadding`)??s(l,`collisionPadding`)??8,k=v,A=[],j=null,M=!1,N=()=>{M&&=(g.removeAttribute(`tabindex`),!1)},P=()=>{let e=g.querySelector(`[autofocus]`);if(e)return e.focus();let t=g.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`);if(t)return t.focus();g.getAttribute(`tabindex`)||(g.setAttribute(`tabindex`,`-1`),M=!0),g.focus()},F=i(g,`popover-content`);h.setAttribute(`aria-haspopup`,`dialog`),h.setAttribute(`aria-controls`,F),g.setAttribute(`data-side`,C),g.setAttribute(`data-align`,w),g.setAttribute(`data-position`,C);let I=()=>{let t=l.ownerDocument.defaultView??window,n=e({anchorRect:h.getBoundingClientRect(),contentRect:g.getBoundingClientRect(),side:C,align:w,sideOffset:T,alignOffset:E,avoidCollisions:D,collisionPadding:O});g.style.position=`absolute`,g.style.top=`${n.y+t.scrollY}px`,g.style.left=`${n.x+t.scrollX}px`,g.style.margin=`0`,g.setAttribute(`data-side`,n.side),g.setAttribute(`data-align`,n.align),g.setAttribute(`data-position`,n.side)},L=n({observedElements:[h,g],isActive:()=>k,ancestorScroll:!1,onUpdate:I}),R=e=>{k!==e&&(e&&(j=document.activeElement),k=e,d(h,`expanded`,k),r(l,`popover:change`,{open:k}),y?.(k),e?(g.hidden=!1,l.setAttribute(`data-state`,`open`),g.setAttribute(`data-state`,`open`),I(),L.start(),L.update(),requestAnimationFrame(P)):(L.stop(),g.hidden=!0,l.setAttribute(`data-state`,`closed`),g.setAttribute(`data-state`,`closed`),N(),requestAnimationFrame(()=>{j&&j.isConnected?j.focus():h.focus(),j=null})))};return d(h,`expanded`,k),g.hidden=!k,l.setAttribute(`data-state`,k?`open`:`closed`),g.setAttribute(`data-state`,k?`open`:`closed`),v&&(I(),L.start(),L.update(),requestAnimationFrame(P)),A.push(u(h,`click`,()=>R(!k))),_&&A.push(u(_,`click`,()=>R(!1))),A.push(t({root:l,isOpen:()=>k,onDismiss:()=>R(!1),closeOnClickOutside:b,closeOnEscape:x})),A.push(u(l,`popover:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&R(n)})),{open:()=>R(!0),close:()=>R(!1),toggle:()=>R(!k),get isOpen(){return k},destroy:()=>{L.stop(),A.forEach(e=>e()),A.length=0,N()}}}const h=new WeakSet;function g(e=document){let t=[];for(let n of l(e,`popover`))h.has(n)||(h.add(n),t.push(m(n)));return t}export{g as create,m as createPopover};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@data-slot/popover",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.32",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -24,9 +24,6 @@
|
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "tsdown"
|
|
26
26
|
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"@data-slot/core": "workspace:*"
|
|
29
|
-
},
|
|
30
27
|
"repository": {
|
|
31
28
|
"type": "git",
|
|
32
29
|
"url": "https://github.com/bejamas/data-slot",
|
|
@@ -39,5 +36,8 @@
|
|
|
39
36
|
"vanilla",
|
|
40
37
|
"data-slot"
|
|
41
38
|
],
|
|
42
|
-
"license": "MIT"
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@data-slot/core": "workspace:*"
|
|
42
|
+
}
|
|
43
43
|
}
|