@hapticjs/core 0.2.0 → 0.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.
@@ -3,15 +3,15 @@ var ui = {
3
3
  /** Light button tap */
4
4
  tap: {
5
5
  name: "ui.tap",
6
- steps: [{ type: "vibrate", duration: 10, intensity: 0.6 }]
6
+ steps: [{ type: "vibrate", duration: 30, intensity: 0.6 }]
7
7
  },
8
8
  /** Double tap */
9
9
  doubleTap: {
10
10
  name: "ui.doubleTap",
11
11
  steps: [
12
- { type: "vibrate", duration: 10, intensity: 0.6 },
12
+ { type: "vibrate", duration: 25, intensity: 0.6 },
13
13
  { type: "pause", duration: 80, intensity: 0 },
14
- { type: "vibrate", duration: 10, intensity: 0.6 }
14
+ { type: "vibrate", duration: 25, intensity: 0.6 }
15
15
  ]
16
16
  },
17
17
  /** Long press acknowledgment */
@@ -22,58 +22,58 @@ var ui = {
22
22
  /** Toggle switch on */
23
23
  toggleOn: {
24
24
  name: "ui.toggleOn",
25
- steps: [{ type: "vibrate", duration: 15, intensity: 0.6 }]
25
+ steps: [{ type: "vibrate", duration: 30, intensity: 0.6 }]
26
26
  },
27
27
  /** Toggle switch off */
28
28
  toggleOff: {
29
29
  name: "ui.toggleOff",
30
- steps: [{ type: "vibrate", duration: 10, intensity: 0.3 }]
30
+ steps: [{ type: "vibrate", duration: 25, intensity: 0.4 }]
31
31
  },
32
32
  /** Slider snap to value */
33
33
  sliderSnap: {
34
34
  name: "ui.sliderSnap",
35
- steps: [{ type: "vibrate", duration: 5, intensity: 0.4 }]
35
+ steps: [{ type: "vibrate", duration: 25, intensity: 0.5 }]
36
36
  },
37
37
  /** Selection changed */
38
38
  selection: {
39
39
  name: "ui.selection",
40
- steps: [{ type: "vibrate", duration: 8, intensity: 0.4 }]
40
+ steps: [{ type: "vibrate", duration: 25, intensity: 0.5 }]
41
41
  },
42
42
  /** Pull to refresh threshold reached */
43
43
  pullToRefresh: {
44
44
  name: "ui.pullToRefresh",
45
45
  steps: [
46
- { type: "vibrate", duration: 20, intensity: 0.5 },
46
+ { type: "vibrate", duration: 30, intensity: 0.5 },
47
47
  { type: "pause", duration: 40, intensity: 0 },
48
- { type: "vibrate", duration: 30, intensity: 0.7 }
48
+ { type: "vibrate", duration: 40, intensity: 0.7 }
49
49
  ]
50
50
  },
51
51
  /** Swipe action triggered */
52
52
  swipe: {
53
53
  name: "ui.swipe",
54
54
  steps: [
55
- { type: "vibrate", duration: 12, intensity: 0.4 },
55
+ { type: "vibrate", duration: 30, intensity: 0.5 },
56
56
  { type: "pause", duration: 30, intensity: 0 },
57
- { type: "vibrate", duration: 8, intensity: 0.3 }
57
+ { type: "vibrate", duration: 25, intensity: 0.4 }
58
58
  ]
59
59
  },
60
60
  /** Context menu appearance */
61
61
  contextMenu: {
62
62
  name: "ui.contextMenu",
63
- steps: [{ type: "vibrate", duration: 20, intensity: 0.7 }]
63
+ steps: [{ type: "vibrate", duration: 35, intensity: 0.7 }]
64
64
  },
65
65
  /** Drag start */
66
66
  dragStart: {
67
67
  name: "ui.dragStart",
68
- steps: [{ type: "vibrate", duration: 12, intensity: 0.5 }]
68
+ steps: [{ type: "vibrate", duration: 30, intensity: 0.5 }]
69
69
  },
70
70
  /** Drag drop */
71
71
  drop: {
72
72
  name: "ui.drop",
73
73
  steps: [
74
- { type: "vibrate", duration: 20, intensity: 0.8 },
74
+ { type: "vibrate", duration: 30, intensity: 0.8 },
75
75
  { type: "pause", duration: 30, intensity: 0 },
76
- { type: "vibrate", duration: 10, intensity: 0.4 }
76
+ { type: "vibrate", duration: 25, intensity: 0.5 }
77
77
  ]
78
78
  }
79
79
  };
@@ -84,9 +84,9 @@ var notifications = {
84
84
  success: {
85
85
  name: "notifications.success",
86
86
  steps: [
87
- { type: "vibrate", duration: 30, intensity: 0.5 },
87
+ { type: "vibrate", duration: 35, intensity: 0.5 },
88
88
  { type: "pause", duration: 60, intensity: 0 },
89
- { type: "vibrate", duration: 40, intensity: 0.8 }
89
+ { type: "vibrate", duration: 45, intensity: 0.8 }
90
90
  ]
91
91
  },
92
92
  /** Warning — three even pulses */
@@ -113,16 +113,16 @@ var notifications = {
113
113
  info: {
114
114
  name: "notifications.info",
115
115
  steps: [
116
- { type: "vibrate", duration: 20, intensity: 0.4 }
116
+ { type: "vibrate", duration: 35, intensity: 0.5 }
117
117
  ]
118
118
  },
119
119
  /** Message received */
120
120
  messageReceived: {
121
121
  name: "notifications.messageReceived",
122
122
  steps: [
123
- { type: "vibrate", duration: 15, intensity: 0.5 },
123
+ { type: "vibrate", duration: 30, intensity: 0.5 },
124
124
  { type: "pause", duration: 100, intensity: 0 },
125
- { type: "vibrate", duration: 15, intensity: 0.5 }
125
+ { type: "vibrate", duration: 30, intensity: 0.5 }
126
126
  ]
127
127
  },
128
128
  /** Alarm — urgent repeating pattern */
@@ -146,9 +146,9 @@ var notifications = {
146
146
  reminder: {
147
147
  name: "notifications.reminder",
148
148
  steps: [
149
- { type: "vibrate", duration: 25, intensity: 0.5 },
149
+ { type: "vibrate", duration: 30, intensity: 0.5 },
150
150
  { type: "pause", duration: 150, intensity: 0 },
151
- { type: "vibrate", duration: 25, intensity: 0.5 }
151
+ { type: "vibrate", duration: 30, intensity: 0.5 }
152
152
  ]
153
153
  }
154
154
  };
@@ -162,26 +162,25 @@ var gaming = {
162
162
  { type: "vibrate", duration: 100, intensity: 1 },
163
163
  { type: "vibrate", duration: 80, intensity: 0.8 },
164
164
  { type: "vibrate", duration: 60, intensity: 0.5 },
165
- { type: "vibrate", duration: 40, intensity: 0.3 },
166
- { type: "vibrate", duration: 30, intensity: 0.1 }
165
+ { type: "vibrate", duration: 40, intensity: 0.3 }
167
166
  ]
168
167
  },
169
168
  /** Collision — sharp impact */
170
169
  collision: {
171
170
  name: "gaming.collision",
172
171
  steps: [
173
- { type: "vibrate", duration: 30, intensity: 1 },
174
- { type: "pause", duration: 20, intensity: 0 },
175
- { type: "vibrate", duration: 15, intensity: 0.5 }
172
+ { type: "vibrate", duration: 40, intensity: 1 },
173
+ { type: "pause", duration: 30, intensity: 0 },
174
+ { type: "vibrate", duration: 25, intensity: 0.5 }
176
175
  ]
177
176
  },
178
177
  /** Heartbeat — rhythmic pulse */
179
178
  heartbeat: {
180
179
  name: "gaming.heartbeat",
181
180
  steps: [
182
- { type: "vibrate", duration: 20, intensity: 0.8 },
181
+ { type: "vibrate", duration: 30, intensity: 0.8 },
183
182
  { type: "pause", duration: 80, intensity: 0 },
184
- { type: "vibrate", duration: 30, intensity: 1 },
183
+ { type: "vibrate", duration: 40, intensity: 1 },
185
184
  { type: "pause", duration: 400, intensity: 0 }
186
185
  ]
187
186
  },
@@ -189,17 +188,17 @@ var gaming = {
189
188
  gunshot: {
190
189
  name: "gaming.gunshot",
191
190
  steps: [
192
- { type: "vibrate", duration: 15, intensity: 1 },
193
- { type: "vibrate", duration: 30, intensity: 0.4 }
191
+ { type: "vibrate", duration: 30, intensity: 1 },
192
+ { type: "vibrate", duration: 40, intensity: 0.4 }
194
193
  ]
195
194
  },
196
195
  /** Sword clash — metallic ring */
197
196
  swordClash: {
198
197
  name: "gaming.swordClash",
199
198
  steps: [
200
- { type: "vibrate", duration: 10, intensity: 1 },
201
- { type: "pause", duration: 10, intensity: 0 },
202
- { type: "vibrate", duration: 30, intensity: 0.6 },
199
+ { type: "vibrate", duration: 25, intensity: 1 },
200
+ { type: "pause", duration: 20, intensity: 0 },
201
+ { type: "vibrate", duration: 40, intensity: 0.6 },
203
202
  { type: "vibrate", duration: 50, intensity: 0.3 }
204
203
  ]
205
204
  },
@@ -207,10 +206,10 @@ var gaming = {
207
206
  powerUp: {
208
207
  name: "gaming.powerUp",
209
208
  steps: [
210
- { type: "vibrate", duration: 40, intensity: 0.2 },
211
- { type: "vibrate", duration: 40, intensity: 0.4 },
212
- { type: "vibrate", duration: 40, intensity: 0.6 },
213
- { type: "vibrate", duration: 40, intensity: 0.8 },
209
+ { type: "vibrate", duration: 40, intensity: 0.3 },
210
+ { type: "vibrate", duration: 40, intensity: 0.5 },
211
+ { type: "vibrate", duration: 40, intensity: 0.7 },
212
+ { type: "vibrate", duration: 40, intensity: 0.9 },
214
213
  { type: "vibrate", duration: 60, intensity: 1 }
215
214
  ]
216
215
  },
@@ -218,46 +217,46 @@ var gaming = {
218
217
  damage: {
219
218
  name: "gaming.damage",
220
219
  steps: [
221
- { type: "vibrate", duration: 40, intensity: 0.9 },
222
- { type: "pause", duration: 20, intensity: 0 },
223
- { type: "vibrate", duration: 30, intensity: 0.6 },
224
- { type: "pause", duration: 20, intensity: 0 },
225
- { type: "vibrate", duration: 20, intensity: 0.3 }
220
+ { type: "vibrate", duration: 50, intensity: 0.9 },
221
+ { type: "pause", duration: 25, intensity: 0 },
222
+ { type: "vibrate", duration: 40, intensity: 0.6 },
223
+ { type: "pause", duration: 25, intensity: 0 },
224
+ { type: "vibrate", duration: 30, intensity: 0.4 }
226
225
  ]
227
226
  },
228
227
  /** Item pickup — light cheerful */
229
228
  pickup: {
230
229
  name: "gaming.pickup",
231
230
  steps: [
232
- { type: "vibrate", duration: 10, intensity: 0.3 },
231
+ { type: "vibrate", duration: 25, intensity: 0.4 },
233
232
  { type: "pause", duration: 40, intensity: 0 },
234
- { type: "vibrate", duration: 15, intensity: 0.6 }
233
+ { type: "vibrate", duration: 30, intensity: 0.7 }
235
234
  ]
236
235
  },
237
236
  /** Level complete — celebratory */
238
237
  levelComplete: {
239
238
  name: "gaming.levelComplete",
240
239
  steps: [
241
- { type: "vibrate", duration: 20, intensity: 0.5 },
240
+ { type: "vibrate", duration: 30, intensity: 0.5 },
242
241
  { type: "pause", duration: 60, intensity: 0 },
243
- { type: "vibrate", duration: 20, intensity: 0.5 },
242
+ { type: "vibrate", duration: 30, intensity: 0.5 },
244
243
  { type: "pause", duration: 60, intensity: 0 },
245
- { type: "vibrate", duration: 30, intensity: 0.7 },
244
+ { type: "vibrate", duration: 40, intensity: 0.7 },
246
245
  { type: "pause", duration: 60, intensity: 0 },
247
- { type: "vibrate", duration: 50, intensity: 1 }
246
+ { type: "vibrate", duration: 60, intensity: 1 }
248
247
  ]
249
248
  },
250
249
  /** Engine rumble — continuous vibration */
251
250
  engineRumble: {
252
251
  name: "gaming.engineRumble",
253
252
  steps: [
254
- { type: "vibrate", duration: 30, intensity: 0.4 },
255
- { type: "pause", duration: 10, intensity: 0 },
256
- { type: "vibrate", duration: 30, intensity: 0.5 },
257
- { type: "pause", duration: 10, intensity: 0 },
258
- { type: "vibrate", duration: 30, intensity: 0.4 },
259
- { type: "pause", duration: 10, intensity: 0 },
260
- { type: "vibrate", duration: 30, intensity: 0.5 }
253
+ { type: "vibrate", duration: 40, intensity: 0.5 },
254
+ { type: "pause", duration: 15, intensity: 0 },
255
+ { type: "vibrate", duration: 40, intensity: 0.6 },
256
+ { type: "pause", duration: 15, intensity: 0 },
257
+ { type: "vibrate", duration: 40, intensity: 0.5 },
258
+ { type: "pause", duration: 15, intensity: 0 },
259
+ { type: "vibrate", duration: 40, intensity: 0.6 }
261
260
  ]
262
261
  }
263
262
  };
@@ -268,9 +267,9 @@ var accessibility = {
268
267
  confirm: {
269
268
  name: "accessibility.confirm",
270
269
  steps: [
271
- { type: "vibrate", duration: 30, intensity: 0.7 },
270
+ { type: "vibrate", duration: 35, intensity: 0.7 },
272
271
  { type: "pause", duration: 100, intensity: 0 },
273
- { type: "vibrate", duration: 30, intensity: 0.7 }
272
+ { type: "vibrate", duration: 35, intensity: 0.7 }
274
273
  ]
275
274
  },
276
275
  /** Deny/reject — long single buzz */
@@ -284,41 +283,41 @@ var accessibility = {
284
283
  boundary: {
285
284
  name: "accessibility.boundary",
286
285
  steps: [
287
- { type: "vibrate", duration: 15, intensity: 1 }
286
+ { type: "vibrate", duration: 30, intensity: 1 }
288
287
  ]
289
288
  },
290
289
  /** Focus change — subtle tick */
291
290
  focusChange: {
292
291
  name: "accessibility.focusChange",
293
292
  steps: [
294
- { type: "vibrate", duration: 5, intensity: 0.3 }
293
+ { type: "vibrate", duration: 25, intensity: 0.5 }
295
294
  ]
296
295
  },
297
296
  /** Counting rhythm — one tick per count */
298
297
  countTick: {
299
298
  name: "accessibility.countTick",
300
299
  steps: [
301
- { type: "vibrate", duration: 8, intensity: 0.5 }
300
+ { type: "vibrate", duration: 25, intensity: 0.5 }
302
301
  ]
303
302
  },
304
303
  /** Navigation landmark reached */
305
304
  landmark: {
306
305
  name: "accessibility.landmark",
307
306
  steps: [
308
- { type: "vibrate", duration: 15, intensity: 0.6 },
307
+ { type: "vibrate", duration: 25, intensity: 0.6 },
309
308
  { type: "pause", duration: 40, intensity: 0 },
310
- { type: "vibrate", duration: 15, intensity: 0.6 },
309
+ { type: "vibrate", duration: 25, intensity: 0.6 },
311
310
  { type: "pause", duration: 40, intensity: 0 },
312
- { type: "vibrate", duration: 15, intensity: 0.6 }
311
+ { type: "vibrate", duration: 25, intensity: 0.6 }
313
312
  ]
314
313
  },
315
314
  /** Progress checkpoint — escalating feedback */
316
315
  progressCheckpoint: {
317
316
  name: "accessibility.progressCheckpoint",
318
317
  steps: [
319
- { type: "vibrate", duration: 20, intensity: 0.4 },
318
+ { type: "vibrate", duration: 30, intensity: 0.5 },
320
319
  { type: "pause", duration: 60, intensity: 0 },
321
- { type: "vibrate", duration: 25, intensity: 0.7 }
320
+ { type: "vibrate", duration: 35, intensity: 0.7 }
322
321
  ]
323
322
  }
324
323
  };
@@ -328,51 +327,229 @@ var system = {
328
327
  /** Keyboard key press */
329
328
  keyPress: {
330
329
  name: "system.keyPress",
331
- steps: [{ type: "vibrate", duration: 5, intensity: 0.3 }]
330
+ steps: [{ type: "vibrate", duration: 25, intensity: 0.5 }]
332
331
  },
333
332
  /** Scroll tick (detent-like) */
334
333
  scrollTick: {
335
334
  name: "system.scrollTick",
336
- steps: [{ type: "vibrate", duration: 3, intensity: 0.2 }]
335
+ steps: [{ type: "vibrate", duration: 20, intensity: 0.4 }]
337
336
  },
338
337
  /** Scroll boundary reached */
339
338
  scrollBounce: {
340
339
  name: "system.scrollBounce",
341
340
  steps: [
342
- { type: "vibrate", duration: 10, intensity: 0.5 },
343
- { type: "vibrate", duration: 20, intensity: 0.3 }
341
+ { type: "vibrate", duration: 25, intensity: 0.6 },
342
+ { type: "vibrate", duration: 30, intensity: 0.4 }
344
343
  ]
345
344
  },
346
345
  /** Delete action */
347
346
  delete: {
348
347
  name: "system.delete",
349
348
  steps: [
350
- { type: "vibrate", duration: 15, intensity: 0.5 },
349
+ { type: "vibrate", duration: 30, intensity: 0.5 },
351
350
  { type: "pause", duration: 50, intensity: 0 },
352
- { type: "vibrate", duration: 25, intensity: 0.8 }
351
+ { type: "vibrate", duration: 40, intensity: 0.8 }
353
352
  ]
354
353
  },
355
354
  /** Undo action */
356
355
  undo: {
357
356
  name: "system.undo",
358
357
  steps: [
359
- { type: "vibrate", duration: 20, intensity: 0.5 },
358
+ { type: "vibrate", duration: 30, intensity: 0.5 },
360
359
  { type: "pause", duration: 80, intensity: 0 },
361
- { type: "vibrate", duration: 10, intensity: 0.3 }
360
+ { type: "vibrate", duration: 25, intensity: 0.4 }
362
361
  ]
363
362
  },
364
363
  /** Copy to clipboard */
365
364
  copy: {
366
365
  name: "system.copy",
367
- steps: [{ type: "vibrate", duration: 12, intensity: 0.4 }]
366
+ steps: [{ type: "vibrate", duration: 30, intensity: 0.5 }]
368
367
  },
369
368
  /** Paste from clipboard */
370
369
  paste: {
371
370
  name: "system.paste",
372
371
  steps: [
373
- { type: "vibrate", duration: 8, intensity: 0.3 },
372
+ { type: "vibrate", duration: 25, intensity: 0.4 },
373
+ { type: "pause", duration: 30, intensity: 0 },
374
+ { type: "vibrate", duration: 30, intensity: 0.6 }
375
+ ]
376
+ }
377
+ };
378
+
379
+ // src/presets/emotions.ts
380
+ var emotions = {
381
+ /** Excited — fast, energetic pulses building up */
382
+ excited: {
383
+ name: "emotions.excited",
384
+ steps: [
385
+ { type: "vibrate", duration: 30, intensity: 0.5 },
386
+ { type: "pause", duration: 30, intensity: 0 },
387
+ { type: "vibrate", duration: 30, intensity: 0.6 },
388
+ { type: "pause", duration: 25, intensity: 0 },
389
+ { type: "vibrate", duration: 35, intensity: 0.7 },
390
+ { type: "pause", duration: 25, intensity: 0 },
391
+ { type: "vibrate", duration: 35, intensity: 0.8 },
392
+ { type: "pause", duration: 25, intensity: 0 },
393
+ { type: "vibrate", duration: 40, intensity: 0.9 },
394
+ { type: "vibrate", duration: 50, intensity: 1 }
395
+ ]
396
+ },
397
+ /** Calm — slow, gentle wave with soft sustained vibrations */
398
+ calm: {
399
+ name: "emotions.calm",
400
+ steps: [
401
+ { type: "vibrate", duration: 80, intensity: 0.2 },
402
+ { type: "pause", duration: 200, intensity: 0 },
403
+ { type: "vibrate", duration: 100, intensity: 0.25 },
404
+ { type: "pause", duration: 250, intensity: 0 },
405
+ { type: "vibrate", duration: 80, intensity: 0.2 },
406
+ { type: "pause", duration: 200, intensity: 0 },
407
+ { type: "vibrate", duration: 100, intensity: 0.15 }
408
+ ]
409
+ },
410
+ /** Tense — tight, irregular short heavy bursts */
411
+ tense: {
412
+ name: "emotions.tense",
413
+ steps: [
414
+ { type: "vibrate", duration: 35, intensity: 0.8 },
415
+ { type: "pause", duration: 40, intensity: 0 },
416
+ { type: "vibrate", duration: 30, intensity: 0.9 },
417
+ { type: "pause", duration: 30, intensity: 0 },
418
+ { type: "vibrate", duration: 40, intensity: 0.85 },
419
+ { type: "pause", duration: 35, intensity: 0 },
420
+ { type: "vibrate", duration: 30, intensity: 0.9 },
421
+ { type: "pause", duration: 45, intensity: 0 },
422
+ { type: "vibrate", duration: 35, intensity: 0.8 }
423
+ ]
424
+ },
425
+ /** Happy — bouncy, playful ascending rhythm */
426
+ happy: {
427
+ name: "emotions.happy",
428
+ steps: [
429
+ { type: "vibrate", duration: 30, intensity: 0.4 },
430
+ { type: "pause", duration: 50, intensity: 0 },
431
+ { type: "vibrate", duration: 35, intensity: 0.5 },
432
+ { type: "pause", duration: 50, intensity: 0 },
433
+ { type: "vibrate", duration: 35, intensity: 0.6 },
434
+ { type: "pause", duration: 40, intensity: 0 },
435
+ { type: "vibrate", duration: 40, intensity: 0.7 },
436
+ { type: "pause", duration: 40, intensity: 0 },
437
+ { type: "vibrate", duration: 45, intensity: 0.8 }
438
+ ]
439
+ },
440
+ /** Sad — slow, heavy, descending vibrations that fade */
441
+ sad: {
442
+ name: "emotions.sad",
443
+ steps: [
444
+ { type: "vibrate", duration: 100, intensity: 0.8 },
445
+ { type: "pause", duration: 120, intensity: 0 },
446
+ { type: "vibrate", duration: 90, intensity: 0.6 },
447
+ { type: "pause", duration: 140, intensity: 0 },
448
+ { type: "vibrate", duration: 80, intensity: 0.4 },
449
+ { type: "pause", duration: 160, intensity: 0 },
450
+ { type: "vibrate", duration: 70, intensity: 0.25 }
451
+ ]
452
+ },
453
+ /** Angry — aggressive, chaotic heavy rapid hits */
454
+ angry: {
455
+ name: "emotions.angry",
456
+ steps: [
457
+ { type: "vibrate", duration: 40, intensity: 1 },
458
+ { type: "pause", duration: 25, intensity: 0 },
459
+ { type: "vibrate", duration: 35, intensity: 0.9 },
460
+ { type: "pause", duration: 25, intensity: 0 },
461
+ { type: "vibrate", duration: 45, intensity: 1 },
374
462
  { type: "pause", duration: 30, intensity: 0 },
375
- { type: "vibrate", duration: 12, intensity: 0.5 }
463
+ { type: "vibrate", duration: 40, intensity: 0.95 },
464
+ { type: "vibrate", duration: 50, intensity: 1 },
465
+ { type: "pause", duration: 25, intensity: 0 },
466
+ { type: "vibrate", duration: 45, intensity: 0.9 }
467
+ ]
468
+ },
469
+ /** Surprised — sharp sudden hit, silence, then lighter hit */
470
+ surprised: {
471
+ name: "emotions.surprised",
472
+ steps: [
473
+ { type: "vibrate", duration: 40, intensity: 1 },
474
+ { type: "pause", duration: 200, intensity: 0 },
475
+ { type: "vibrate", duration: 30, intensity: 0.4 }
476
+ ]
477
+ },
478
+ /** Anxious — fast irregular heartbeat with inconsistent spacing */
479
+ anxious: {
480
+ name: "emotions.anxious",
481
+ steps: [
482
+ { type: "vibrate", duration: 30, intensity: 0.7 },
483
+ { type: "pause", duration: 60, intensity: 0 },
484
+ { type: "vibrate", duration: 35, intensity: 0.8 },
485
+ { type: "pause", duration: 40, intensity: 0 },
486
+ { type: "vibrate", duration: 25, intensity: 0.6 },
487
+ { type: "pause", duration: 80, intensity: 0 },
488
+ { type: "vibrate", duration: 30, intensity: 0.75 },
489
+ { type: "pause", duration: 50, intensity: 0 },
490
+ { type: "vibrate", duration: 35, intensity: 0.85 },
491
+ { type: "pause", duration: 35, intensity: 0 },
492
+ { type: "vibrate", duration: 30, intensity: 0.7 }
493
+ ]
494
+ },
495
+ /** Confident — strong, steady, measured even pulses */
496
+ confident: {
497
+ name: "emotions.confident",
498
+ steps: [
499
+ { type: "vibrate", duration: 50, intensity: 0.8 },
500
+ { type: "pause", duration: 80, intensity: 0 },
501
+ { type: "vibrate", duration: 50, intensity: 0.8 },
502
+ { type: "pause", duration: 80, intensity: 0 },
503
+ { type: "vibrate", duration: 50, intensity: 0.8 },
504
+ { type: "pause", duration: 80, intensity: 0 },
505
+ { type: "vibrate", duration: 50, intensity: 0.8 }
506
+ ]
507
+ },
508
+ /** Playful — alternating light-heavy in bouncy rhythm */
509
+ playful: {
510
+ name: "emotions.playful",
511
+ steps: [
512
+ { type: "vibrate", duration: 25, intensity: 0.3 },
513
+ { type: "pause", duration: 40, intensity: 0 },
514
+ { type: "vibrate", duration: 40, intensity: 0.7 },
515
+ { type: "pause", duration: 50, intensity: 0 },
516
+ { type: "vibrate", duration: 25, intensity: 0.35 },
517
+ { type: "pause", duration: 40, intensity: 0 },
518
+ { type: "vibrate", duration: 40, intensity: 0.75 },
519
+ { type: "pause", duration: 50, intensity: 0 },
520
+ { type: "vibrate", duration: 25, intensity: 0.3 },
521
+ { type: "pause", duration: 40, intensity: 0 },
522
+ { type: "vibrate", duration: 45, intensity: 0.8 }
523
+ ]
524
+ },
525
+ /** Romantic — gentle heartbeat rhythm, two soft pulses, long pause, repeat */
526
+ romantic: {
527
+ name: "emotions.romantic",
528
+ steps: [
529
+ { type: "vibrate", duration: 35, intensity: 0.4 },
530
+ { type: "pause", duration: 60, intensity: 0 },
531
+ { type: "vibrate", duration: 45, intensity: 0.5 },
532
+ { type: "pause", duration: 300, intensity: 0 },
533
+ { type: "vibrate", duration: 35, intensity: 0.4 },
534
+ { type: "pause", duration: 60, intensity: 0 },
535
+ { type: "vibrate", duration: 45, intensity: 0.5 },
536
+ { type: "pause", duration: 300, intensity: 0 },
537
+ { type: "vibrate", duration: 35, intensity: 0.4 },
538
+ { type: "pause", duration: 60, intensity: 0 },
539
+ { type: "vibrate", duration: 45, intensity: 0.5 }
540
+ ]
541
+ },
542
+ /** Peaceful — very subtle, barely-there ultra-light slow pulses */
543
+ peaceful: {
544
+ name: "emotions.peaceful",
545
+ steps: [
546
+ { type: "vibrate", duration: 60, intensity: 0.1 },
547
+ { type: "pause", duration: 300, intensity: 0 },
548
+ { type: "vibrate", duration: 70, intensity: 0.12 },
549
+ { type: "pause", duration: 350, intensity: 0 },
550
+ { type: "vibrate", duration: 60, intensity: 0.1 },
551
+ { type: "pause", duration: 300, intensity: 0 },
552
+ { type: "vibrate", duration: 70, intensity: 0.08 }
376
553
  ]
377
554
  }
378
555
  };
@@ -383,9 +560,10 @@ var presets = {
383
560
  notifications,
384
561
  gaming,
385
562
  accessibility,
386
- system
563
+ system,
564
+ emotions
387
565
  };
388
566
 
389
- export { accessibility, gaming, notifications, presets, system, ui };
567
+ export { accessibility, emotions, gaming, notifications, presets, system, ui };
390
568
  //# sourceMappingURL=index.js.map
391
569
  //# sourceMappingURL=index.js.map