base-vaul 0.0.1 → 0.0.2

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/package.json CHANGED
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "base-vaul",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
+ "type": "module",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
4
8
  "description": "Drawer component for React made with Base-UI.",
5
9
  "main": "./dist/index.js",
6
10
  "module": "./dist/index.mjs",
@@ -19,27 +23,18 @@
19
23
  "default": "./dist/index.js"
20
24
  }
21
25
  },
22
- "scripts": {
23
- "type-check": "tsc --noEmit",
24
- "build": "pnpm type-check && bunchee && pnpm copy-assets",
25
- "copy-assets": "cp -r ./src/style.css ./style.css",
26
- "dev": "bunchee --watch",
27
- "dev:test": "turbo run dev --filter=test...",
28
- "format": "prettier --write .",
29
- "test": "playwright test --ui",
30
- "test:e2e": "playwright test"
31
- },
32
26
  "keywords": [
33
27
  "react",
34
28
  "drawer",
35
29
  "dialog",
36
- "modal"
30
+ "modal",
31
+ "base-ui"
37
32
  ],
38
33
  "author": "Noé Tatoud <noe@bearstudio.fr>",
39
34
  "license": "MIT",
40
35
  "repository": {
41
36
  "type": "git",
42
- "url": "git+https://github.com/ntatoud/base-vaul.git"
37
+ "url": "https://github.com/ntatoud/base-vaul.git"
43
38
  },
44
39
  "bugs": {
45
40
  "url": "https://github.com/ntatoud/base-vaul/issues"
@@ -47,22 +42,32 @@
47
42
  "devDependencies": {
48
43
  "@playwright/test": "1.57.0",
49
44
  "@types/node": "20.5.7",
50
- "@types/react": "18.2.55",
51
- "@types/react-dom": "18.2.18",
45
+ "@types/react": "^19.2.7",
46
+ "@types/react-dom": "^19.2.3",
52
47
  "bunchee": "^5.1.5",
53
- "eslint": "^7.32.0",
48
+ "eslint": "9.39.1",
54
49
  "prettier": "^2.5.1",
55
- "react": "^18.2.0",
56
- "react-dom": "^18.2.0",
57
- "turbo": "1.6",
58
- "typescript": "5.2.2"
50
+ "react": "^19.2.2",
51
+ "react-dom": "^19.2.2",
52
+ "turbo": "2.6.3",
53
+ "typescript": "5.9.2",
54
+ "@repo/typescript-config": "0.0.0",
55
+ "@repo/eslint-config": "0.0.1"
59
56
  },
60
57
  "peerDependencies": {
61
58
  "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
62
59
  "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc"
63
60
  },
64
- "packageManager": "pnpm@10.25.0",
65
61
  "dependencies": {
66
62
  "@base-ui/react": "1.0.0"
63
+ },
64
+ "scripts": {
65
+ "build": "pnpm run lint && bunchee && pnpm copy-assets",
66
+ "copy-assets": "cp -r ./src/style.css ./style.css",
67
+ "dev": "bunchee --watch",
68
+ "format": "prettier --write .",
69
+ "lint": "pnpm run --parallel --stream '/^lint:/'",
70
+ "lint:ts": "tsc --noEmit",
71
+ "lint:eslint": "eslint src/"
67
72
  }
68
- }
73
+ }
package/style.css ADDED
@@ -0,0 +1,254 @@
1
+ [data-vaul-drawer] {
2
+ touch-action: none;
3
+ will-change: transform;
4
+ transition: transform 0.5s cubic-bezier(0.32, 0.72, 0, 1);
5
+ animation-duration: 0.5s;
6
+ animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
7
+ }
8
+
9
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='bottom'][data-open] {
10
+ animation-name: slideFromBottom;
11
+ }
12
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='bottom'][data-closed] {
13
+ animation-name: slideToBottom;
14
+ }
15
+
16
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='top'][data-open] {
17
+ animation-name: slideFromTop;
18
+ }
19
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='top'][data-closed] {
20
+ animation-name: slideToTop;
21
+ }
22
+
23
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='left'][data-open] {
24
+ animation-name: slideFromLeft;
25
+ }
26
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='left'][data-closed] {
27
+ animation-name: slideToLeft;
28
+ }
29
+
30
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='right'][data-open] {
31
+ animation-name: slideFromRight;
32
+ }
33
+ [data-vaul-drawer][data-vaul-snap-points='false'][data-vaul-drawer-direction='right'][data-closed] {
34
+ animation-name: slideToRight;
35
+ }
36
+
37
+ [data-vaul-drawer][data-vaul-snap-points='true'][data-vaul-drawer-direction='bottom'] {
38
+ transform: translate3d(0, var(--initial-transform, 100%), 0);
39
+ }
40
+
41
+ [data-vaul-drawer][data-vaul-snap-points='true'][data-vaul-drawer-direction='top'] {
42
+ transform: translate3d(0, calc(var(--initial-transform, 100%) * -1), 0);
43
+ }
44
+
45
+ [data-vaul-drawer][data-vaul-snap-points='true'][data-vaul-drawer-direction='left'] {
46
+ transform: translate3d(calc(var(--initial-transform, 100%) * -1), 0, 0);
47
+ }
48
+
49
+ [data-vaul-drawer][data-vaul-snap-points='true'][data-vaul-drawer-direction='right'] {
50
+ transform: translate3d(var(--initial-transform, 100%), 0, 0);
51
+ }
52
+
53
+ [data-vaul-drawer][data-vaul-delayed-snap-points='true'][data-vaul-drawer-direction='top'] {
54
+ transform: translate3d(0, var(--snap-point-height, 0), 0);
55
+ }
56
+
57
+ [data-vaul-drawer][data-vaul-delayed-snap-points='true'][data-vaul-drawer-direction='bottom'] {
58
+ transform: translate3d(0, var(--snap-point-height, 0), 0);
59
+ }
60
+
61
+ [data-vaul-drawer][data-vaul-delayed-snap-points='true'][data-vaul-drawer-direction='left'] {
62
+ transform: translate3d(var(--snap-point-height, 0), 0, 0);
63
+ }
64
+
65
+ [data-vaul-drawer][data-vaul-delayed-snap-points='true'][data-vaul-drawer-direction='right'] {
66
+ transform: translate3d(var(--snap-point-height, 0), 0, 0);
67
+ }
68
+
69
+ [data-vaul-overlay][data-vaul-snap-points='false'] {
70
+ animation-duration: 0.5s;
71
+ animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
72
+ }
73
+ [data-vaul-overlay][data-vaul-snap-points='false'][data-open] {
74
+ animation-name: fadeIn;
75
+ }
76
+ [data-vaul-overlay][data-closed] {
77
+ animation-name: fadeOut;
78
+ }
79
+
80
+ [data-vaul-animate='false'] {
81
+ animation: none !important;
82
+ }
83
+
84
+ [data-vaul-overlay][data-vaul-snap-points='true'] {
85
+ opacity: 0;
86
+ transition: opacity 0.5s cubic-bezier(0.32, 0.72, 0, 1);
87
+ }
88
+
89
+ [data-vaul-overlay][data-vaul-snap-points='true'] {
90
+ opacity: 1;
91
+ }
92
+
93
+ [data-vaul-drawer]:not([data-vaul-custom-container='true'])::after {
94
+ content: '';
95
+ position: absolute;
96
+ background: inherit;
97
+ background-color: inherit;
98
+ }
99
+
100
+ [data-vaul-drawer][data-vaul-drawer-direction='top']::after {
101
+ top: initial;
102
+ bottom: 100%;
103
+ left: 0;
104
+ right: 0;
105
+ height: 200%;
106
+ }
107
+
108
+ [data-vaul-drawer][data-vaul-drawer-direction='bottom']::after {
109
+ top: 100%;
110
+ bottom: initial;
111
+ left: 0;
112
+ right: 0;
113
+ height: 200%;
114
+ }
115
+
116
+ [data-vaul-drawer][data-vaul-drawer-direction='left']::after {
117
+ left: initial;
118
+ right: 100%;
119
+ top: 0;
120
+ bottom: 0;
121
+ width: 200%;
122
+ }
123
+
124
+ [data-vaul-drawer][data-vaul-drawer-direction='right']::after {
125
+ left: 100%;
126
+ right: initial;
127
+ top: 0;
128
+ bottom: 0;
129
+ width: 200%;
130
+ }
131
+
132
+ [data-vaul-overlay][data-vaul-snap-points='true']:not([data-vaul-snap-points-overlay='true']):not([data-closed]) {
133
+ opacity: 0;
134
+ }
135
+
136
+ [data-vaul-overlay][data-vaul-snap-points-overlay='true'] {
137
+ opacity: 1;
138
+ }
139
+
140
+ [data-vaul-handle] {
141
+ display: block;
142
+ position: relative;
143
+ opacity: 0.7;
144
+ background: #e2e2e4;
145
+ margin-left: auto;
146
+ margin-right: auto;
147
+ height: 5px;
148
+ width: 32px;
149
+ border-radius: 1rem;
150
+ touch-action: pan-y;
151
+ }
152
+
153
+ [data-vaul-handle]:hover,
154
+ [data-vaul-handle]:active {
155
+ opacity: 1;
156
+ }
157
+
158
+ [data-vaul-handle-hitarea] {
159
+ position: absolute;
160
+ left: 50%;
161
+ top: 50%;
162
+ transform: translate(-50%, -50%);
163
+ width: max(100%, 2.75rem); /* 44px */
164
+ height: max(100%, 2.75rem); /* 44px */
165
+ touch-action: inherit;
166
+ }
167
+
168
+ @media (hover: hover) and (pointer: fine) {
169
+ [data-vaul-drawer] {
170
+ user-select: none;
171
+ }
172
+ }
173
+
174
+ @media (pointer: fine) {
175
+ [data-vaul-handle-hitarea]: {
176
+ width: 100%;
177
+ height: 100%;
178
+ }
179
+ }
180
+
181
+ @keyframes fadeIn {
182
+ from {
183
+ opacity: 0;
184
+ }
185
+ to {
186
+ opacity: 1;
187
+ }
188
+ }
189
+
190
+ @keyframes fadeOut {
191
+ to {
192
+ opacity: 0;
193
+ }
194
+ }
195
+
196
+ @keyframes slideFromBottom {
197
+ from {
198
+ transform: translate3d(0, var(--initial-transform, 100%), 0);
199
+ }
200
+ to {
201
+ transform: translate3d(0, 0, 0);
202
+ }
203
+ }
204
+
205
+ @keyframes slideToBottom {
206
+ to {
207
+ transform: translate3d(0, var(--initial-transform, 100%), 0);
208
+ }
209
+ }
210
+
211
+ @keyframes slideFromTop {
212
+ from {
213
+ transform: translate3d(0, calc(var(--initial-transform, 100%) * -1), 0);
214
+ }
215
+ to {
216
+ transform: translate3d(0, 0, 0);
217
+ }
218
+ }
219
+
220
+ @keyframes slideToTop {
221
+ to {
222
+ transform: translate3d(0, calc(var(--initial-transform, 100%) * -1), 0);
223
+ }
224
+ }
225
+
226
+ @keyframes slideFromLeft {
227
+ from {
228
+ transform: translate3d(calc(var(--initial-transform, 100%) * -1), 0, 0);
229
+ }
230
+ to {
231
+ transform: translate3d(0, 0, 0);
232
+ }
233
+ }
234
+
235
+ @keyframes slideToLeft {
236
+ to {
237
+ transform: translate3d(calc(var(--initial-transform, 100%) * -1), 0, 0);
238
+ }
239
+ }
240
+
241
+ @keyframes slideFromRight {
242
+ from {
243
+ transform: translate3d(var(--initial-transform, 100%), 0, 0);
244
+ }
245
+ to {
246
+ transform: translate3d(0, 0, 0);
247
+ }
248
+ }
249
+
250
+ @keyframes slideToRight {
251
+ to {
252
+ transform: translate3d(var(--initial-transform, 100%), 0, 0);
253
+ }
254
+ }