@hapticjs/core 0.1.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.
@@ -0,0 +1,950 @@
1
+ /** UI interaction presets */
2
+ declare const ui: {
3
+ /** Light button tap */
4
+ tap: {
5
+ name: string;
6
+ steps: {
7
+ type: "vibrate";
8
+ duration: number;
9
+ intensity: number;
10
+ }[];
11
+ };
12
+ /** Double tap */
13
+ doubleTap: {
14
+ name: string;
15
+ steps: ({
16
+ type: "vibrate";
17
+ duration: number;
18
+ intensity: number;
19
+ } | {
20
+ type: "pause";
21
+ duration: number;
22
+ intensity: number;
23
+ })[];
24
+ };
25
+ /** Long press acknowledgment */
26
+ longPress: {
27
+ name: string;
28
+ steps: {
29
+ type: "vibrate";
30
+ duration: number;
31
+ intensity: number;
32
+ }[];
33
+ };
34
+ /** Toggle switch on */
35
+ toggleOn: {
36
+ name: string;
37
+ steps: {
38
+ type: "vibrate";
39
+ duration: number;
40
+ intensity: number;
41
+ }[];
42
+ };
43
+ /** Toggle switch off */
44
+ toggleOff: {
45
+ name: string;
46
+ steps: {
47
+ type: "vibrate";
48
+ duration: number;
49
+ intensity: number;
50
+ }[];
51
+ };
52
+ /** Slider snap to value */
53
+ sliderSnap: {
54
+ name: string;
55
+ steps: {
56
+ type: "vibrate";
57
+ duration: number;
58
+ intensity: number;
59
+ }[];
60
+ };
61
+ /** Selection changed */
62
+ selection: {
63
+ name: string;
64
+ steps: {
65
+ type: "vibrate";
66
+ duration: number;
67
+ intensity: number;
68
+ }[];
69
+ };
70
+ /** Pull to refresh threshold reached */
71
+ pullToRefresh: {
72
+ name: string;
73
+ steps: ({
74
+ type: "vibrate";
75
+ duration: number;
76
+ intensity: number;
77
+ } | {
78
+ type: "pause";
79
+ duration: number;
80
+ intensity: number;
81
+ })[];
82
+ };
83
+ /** Swipe action triggered */
84
+ swipe: {
85
+ name: string;
86
+ steps: ({
87
+ type: "vibrate";
88
+ duration: number;
89
+ intensity: number;
90
+ } | {
91
+ type: "pause";
92
+ duration: number;
93
+ intensity: number;
94
+ })[];
95
+ };
96
+ /** Context menu appearance */
97
+ contextMenu: {
98
+ name: string;
99
+ steps: {
100
+ type: "vibrate";
101
+ duration: number;
102
+ intensity: number;
103
+ }[];
104
+ };
105
+ /** Drag start */
106
+ dragStart: {
107
+ name: string;
108
+ steps: {
109
+ type: "vibrate";
110
+ duration: number;
111
+ intensity: number;
112
+ }[];
113
+ };
114
+ /** Drag drop */
115
+ drop: {
116
+ name: string;
117
+ steps: ({
118
+ type: "vibrate";
119
+ duration: number;
120
+ intensity: number;
121
+ } | {
122
+ type: "pause";
123
+ duration: number;
124
+ intensity: number;
125
+ })[];
126
+ };
127
+ };
128
+
129
+ /** Notification feedback presets */
130
+ declare const notifications: {
131
+ /** Success — two ascending pulses */
132
+ success: {
133
+ name: string;
134
+ steps: ({
135
+ type: "vibrate";
136
+ duration: number;
137
+ intensity: number;
138
+ } | {
139
+ type: "pause";
140
+ duration: number;
141
+ intensity: number;
142
+ })[];
143
+ };
144
+ /** Warning — three even pulses */
145
+ warning: {
146
+ name: string;
147
+ steps: ({
148
+ type: "vibrate";
149
+ duration: number;
150
+ intensity: number;
151
+ } | {
152
+ type: "pause";
153
+ duration: number;
154
+ intensity: number;
155
+ })[];
156
+ };
157
+ /** Error — two heavy pulses */
158
+ error: {
159
+ name: string;
160
+ steps: ({
161
+ type: "vibrate";
162
+ duration: number;
163
+ intensity: number;
164
+ } | {
165
+ type: "pause";
166
+ duration: number;
167
+ intensity: number;
168
+ })[];
169
+ };
170
+ /** Info — soft single pulse */
171
+ info: {
172
+ name: string;
173
+ steps: {
174
+ type: "vibrate";
175
+ duration: number;
176
+ intensity: number;
177
+ }[];
178
+ };
179
+ /** Message received */
180
+ messageReceived: {
181
+ name: string;
182
+ steps: ({
183
+ type: "vibrate";
184
+ duration: number;
185
+ intensity: number;
186
+ } | {
187
+ type: "pause";
188
+ duration: number;
189
+ intensity: number;
190
+ })[];
191
+ };
192
+ /** Alarm — urgent repeating pattern */
193
+ alarm: {
194
+ name: string;
195
+ steps: ({
196
+ type: "vibrate";
197
+ duration: number;
198
+ intensity: number;
199
+ } | {
200
+ type: "pause";
201
+ duration: number;
202
+ intensity: number;
203
+ })[];
204
+ };
205
+ /** Reminder — gentle nudge */
206
+ reminder: {
207
+ name: string;
208
+ steps: ({
209
+ type: "vibrate";
210
+ duration: number;
211
+ intensity: number;
212
+ } | {
213
+ type: "pause";
214
+ duration: number;
215
+ intensity: number;
216
+ })[];
217
+ };
218
+ };
219
+
220
+ /** Gaming haptic presets */
221
+ declare const gaming: {
222
+ /** Explosion — heavy descending */
223
+ explosion: {
224
+ name: string;
225
+ steps: {
226
+ type: "vibrate";
227
+ duration: number;
228
+ intensity: number;
229
+ }[];
230
+ };
231
+ /** Collision — sharp impact */
232
+ collision: {
233
+ name: string;
234
+ steps: ({
235
+ type: "vibrate";
236
+ duration: number;
237
+ intensity: number;
238
+ } | {
239
+ type: "pause";
240
+ duration: number;
241
+ intensity: number;
242
+ })[];
243
+ };
244
+ /** Heartbeat — rhythmic pulse */
245
+ heartbeat: {
246
+ name: string;
247
+ steps: ({
248
+ type: "vibrate";
249
+ duration: number;
250
+ intensity: number;
251
+ } | {
252
+ type: "pause";
253
+ duration: number;
254
+ intensity: number;
255
+ })[];
256
+ };
257
+ /** Gunshot — sharp burst */
258
+ gunshot: {
259
+ name: string;
260
+ steps: {
261
+ type: "vibrate";
262
+ duration: number;
263
+ intensity: number;
264
+ }[];
265
+ };
266
+ /** Sword clash — metallic ring */
267
+ swordClash: {
268
+ name: string;
269
+ steps: ({
270
+ type: "vibrate";
271
+ duration: number;
272
+ intensity: number;
273
+ } | {
274
+ type: "pause";
275
+ duration: number;
276
+ intensity: number;
277
+ })[];
278
+ };
279
+ /** Power up — ascending intensity */
280
+ powerUp: {
281
+ name: string;
282
+ steps: {
283
+ type: "vibrate";
284
+ duration: number;
285
+ intensity: number;
286
+ }[];
287
+ };
288
+ /** Damage taken — heavy stutter */
289
+ damage: {
290
+ name: string;
291
+ steps: ({
292
+ type: "vibrate";
293
+ duration: number;
294
+ intensity: number;
295
+ } | {
296
+ type: "pause";
297
+ duration: number;
298
+ intensity: number;
299
+ })[];
300
+ };
301
+ /** Item pickup — light cheerful */
302
+ pickup: {
303
+ name: string;
304
+ steps: ({
305
+ type: "vibrate";
306
+ duration: number;
307
+ intensity: number;
308
+ } | {
309
+ type: "pause";
310
+ duration: number;
311
+ intensity: number;
312
+ })[];
313
+ };
314
+ /** Level complete — celebratory */
315
+ levelComplete: {
316
+ name: string;
317
+ steps: ({
318
+ type: "vibrate";
319
+ duration: number;
320
+ intensity: number;
321
+ } | {
322
+ type: "pause";
323
+ duration: number;
324
+ intensity: number;
325
+ })[];
326
+ };
327
+ /** Engine rumble — continuous vibration */
328
+ engineRumble: {
329
+ name: string;
330
+ steps: ({
331
+ type: "vibrate";
332
+ duration: number;
333
+ intensity: number;
334
+ } | {
335
+ type: "pause";
336
+ duration: number;
337
+ intensity: number;
338
+ })[];
339
+ };
340
+ };
341
+
342
+ /** Accessibility-focused haptic presets — rhythmic patterns for non-visual feedback */
343
+ declare const accessibility: {
344
+ /** Confirm action — clear double pulse */
345
+ confirm: {
346
+ name: string;
347
+ steps: ({
348
+ type: "vibrate";
349
+ duration: number;
350
+ intensity: number;
351
+ } | {
352
+ type: "pause";
353
+ duration: number;
354
+ intensity: number;
355
+ })[];
356
+ };
357
+ /** Deny/reject — long single buzz */
358
+ deny: {
359
+ name: string;
360
+ steps: {
361
+ type: "vibrate";
362
+ duration: number;
363
+ intensity: number;
364
+ }[];
365
+ };
366
+ /** Boundary reached (e.g., scroll limit, min/max value) */
367
+ boundary: {
368
+ name: string;
369
+ steps: {
370
+ type: "vibrate";
371
+ duration: number;
372
+ intensity: number;
373
+ }[];
374
+ };
375
+ /** Focus change — subtle tick */
376
+ focusChange: {
377
+ name: string;
378
+ steps: {
379
+ type: "vibrate";
380
+ duration: number;
381
+ intensity: number;
382
+ }[];
383
+ };
384
+ /** Counting rhythm — one tick per count */
385
+ countTick: {
386
+ name: string;
387
+ steps: {
388
+ type: "vibrate";
389
+ duration: number;
390
+ intensity: number;
391
+ }[];
392
+ };
393
+ /** Navigation landmark reached */
394
+ landmark: {
395
+ name: string;
396
+ steps: ({
397
+ type: "vibrate";
398
+ duration: number;
399
+ intensity: number;
400
+ } | {
401
+ type: "pause";
402
+ duration: number;
403
+ intensity: number;
404
+ })[];
405
+ };
406
+ /** Progress checkpoint — escalating feedback */
407
+ progressCheckpoint: {
408
+ name: string;
409
+ steps: ({
410
+ type: "vibrate";
411
+ duration: number;
412
+ intensity: number;
413
+ } | {
414
+ type: "pause";
415
+ duration: number;
416
+ intensity: number;
417
+ })[];
418
+ };
419
+ };
420
+
421
+ /** System-level haptic presets */
422
+ declare const system: {
423
+ /** Keyboard key press */
424
+ keyPress: {
425
+ name: string;
426
+ steps: {
427
+ type: "vibrate";
428
+ duration: number;
429
+ intensity: number;
430
+ }[];
431
+ };
432
+ /** Scroll tick (detent-like) */
433
+ scrollTick: {
434
+ name: string;
435
+ steps: {
436
+ type: "vibrate";
437
+ duration: number;
438
+ intensity: number;
439
+ }[];
440
+ };
441
+ /** Scroll boundary reached */
442
+ scrollBounce: {
443
+ name: string;
444
+ steps: {
445
+ type: "vibrate";
446
+ duration: number;
447
+ intensity: number;
448
+ }[];
449
+ };
450
+ /** Delete action */
451
+ delete: {
452
+ name: string;
453
+ steps: ({
454
+ type: "vibrate";
455
+ duration: number;
456
+ intensity: number;
457
+ } | {
458
+ type: "pause";
459
+ duration: number;
460
+ intensity: number;
461
+ })[];
462
+ };
463
+ /** Undo action */
464
+ undo: {
465
+ name: string;
466
+ steps: ({
467
+ type: "vibrate";
468
+ duration: number;
469
+ intensity: number;
470
+ } | {
471
+ type: "pause";
472
+ duration: number;
473
+ intensity: number;
474
+ })[];
475
+ };
476
+ /** Copy to clipboard */
477
+ copy: {
478
+ name: string;
479
+ steps: {
480
+ type: "vibrate";
481
+ duration: number;
482
+ intensity: number;
483
+ }[];
484
+ };
485
+ /** Paste from clipboard */
486
+ paste: {
487
+ name: string;
488
+ steps: ({
489
+ type: "vibrate";
490
+ duration: number;
491
+ intensity: number;
492
+ } | {
493
+ type: "pause";
494
+ duration: number;
495
+ intensity: number;
496
+ })[];
497
+ };
498
+ };
499
+
500
+ /** All presets grouped by category */
501
+ declare const presets: {
502
+ readonly ui: {
503
+ tap: {
504
+ name: string;
505
+ steps: {
506
+ type: "vibrate";
507
+ duration: number;
508
+ intensity: number;
509
+ }[];
510
+ };
511
+ doubleTap: {
512
+ name: string;
513
+ steps: ({
514
+ type: "vibrate";
515
+ duration: number;
516
+ intensity: number;
517
+ } | {
518
+ type: "pause";
519
+ duration: number;
520
+ intensity: number;
521
+ })[];
522
+ };
523
+ longPress: {
524
+ name: string;
525
+ steps: {
526
+ type: "vibrate";
527
+ duration: number;
528
+ intensity: number;
529
+ }[];
530
+ };
531
+ toggleOn: {
532
+ name: string;
533
+ steps: {
534
+ type: "vibrate";
535
+ duration: number;
536
+ intensity: number;
537
+ }[];
538
+ };
539
+ toggleOff: {
540
+ name: string;
541
+ steps: {
542
+ type: "vibrate";
543
+ duration: number;
544
+ intensity: number;
545
+ }[];
546
+ };
547
+ sliderSnap: {
548
+ name: string;
549
+ steps: {
550
+ type: "vibrate";
551
+ duration: number;
552
+ intensity: number;
553
+ }[];
554
+ };
555
+ selection: {
556
+ name: string;
557
+ steps: {
558
+ type: "vibrate";
559
+ duration: number;
560
+ intensity: number;
561
+ }[];
562
+ };
563
+ pullToRefresh: {
564
+ name: string;
565
+ steps: ({
566
+ type: "vibrate";
567
+ duration: number;
568
+ intensity: number;
569
+ } | {
570
+ type: "pause";
571
+ duration: number;
572
+ intensity: number;
573
+ })[];
574
+ };
575
+ swipe: {
576
+ name: string;
577
+ steps: ({
578
+ type: "vibrate";
579
+ duration: number;
580
+ intensity: number;
581
+ } | {
582
+ type: "pause";
583
+ duration: number;
584
+ intensity: number;
585
+ })[];
586
+ };
587
+ contextMenu: {
588
+ name: string;
589
+ steps: {
590
+ type: "vibrate";
591
+ duration: number;
592
+ intensity: number;
593
+ }[];
594
+ };
595
+ dragStart: {
596
+ name: string;
597
+ steps: {
598
+ type: "vibrate";
599
+ duration: number;
600
+ intensity: number;
601
+ }[];
602
+ };
603
+ drop: {
604
+ name: string;
605
+ steps: ({
606
+ type: "vibrate";
607
+ duration: number;
608
+ intensity: number;
609
+ } | {
610
+ type: "pause";
611
+ duration: number;
612
+ intensity: number;
613
+ })[];
614
+ };
615
+ };
616
+ readonly notifications: {
617
+ success: {
618
+ name: string;
619
+ steps: ({
620
+ type: "vibrate";
621
+ duration: number;
622
+ intensity: number;
623
+ } | {
624
+ type: "pause";
625
+ duration: number;
626
+ intensity: number;
627
+ })[];
628
+ };
629
+ warning: {
630
+ name: string;
631
+ steps: ({
632
+ type: "vibrate";
633
+ duration: number;
634
+ intensity: number;
635
+ } | {
636
+ type: "pause";
637
+ duration: number;
638
+ intensity: number;
639
+ })[];
640
+ };
641
+ error: {
642
+ name: string;
643
+ steps: ({
644
+ type: "vibrate";
645
+ duration: number;
646
+ intensity: number;
647
+ } | {
648
+ type: "pause";
649
+ duration: number;
650
+ intensity: number;
651
+ })[];
652
+ };
653
+ info: {
654
+ name: string;
655
+ steps: {
656
+ type: "vibrate";
657
+ duration: number;
658
+ intensity: number;
659
+ }[];
660
+ };
661
+ messageReceived: {
662
+ name: string;
663
+ steps: ({
664
+ type: "vibrate";
665
+ duration: number;
666
+ intensity: number;
667
+ } | {
668
+ type: "pause";
669
+ duration: number;
670
+ intensity: number;
671
+ })[];
672
+ };
673
+ alarm: {
674
+ name: string;
675
+ steps: ({
676
+ type: "vibrate";
677
+ duration: number;
678
+ intensity: number;
679
+ } | {
680
+ type: "pause";
681
+ duration: number;
682
+ intensity: number;
683
+ })[];
684
+ };
685
+ reminder: {
686
+ name: string;
687
+ steps: ({
688
+ type: "vibrate";
689
+ duration: number;
690
+ intensity: number;
691
+ } | {
692
+ type: "pause";
693
+ duration: number;
694
+ intensity: number;
695
+ })[];
696
+ };
697
+ };
698
+ readonly gaming: {
699
+ explosion: {
700
+ name: string;
701
+ steps: {
702
+ type: "vibrate";
703
+ duration: number;
704
+ intensity: number;
705
+ }[];
706
+ };
707
+ collision: {
708
+ name: string;
709
+ steps: ({
710
+ type: "vibrate";
711
+ duration: number;
712
+ intensity: number;
713
+ } | {
714
+ type: "pause";
715
+ duration: number;
716
+ intensity: number;
717
+ })[];
718
+ };
719
+ heartbeat: {
720
+ name: string;
721
+ steps: ({
722
+ type: "vibrate";
723
+ duration: number;
724
+ intensity: number;
725
+ } | {
726
+ type: "pause";
727
+ duration: number;
728
+ intensity: number;
729
+ })[];
730
+ };
731
+ gunshot: {
732
+ name: string;
733
+ steps: {
734
+ type: "vibrate";
735
+ duration: number;
736
+ intensity: number;
737
+ }[];
738
+ };
739
+ swordClash: {
740
+ name: string;
741
+ steps: ({
742
+ type: "vibrate";
743
+ duration: number;
744
+ intensity: number;
745
+ } | {
746
+ type: "pause";
747
+ duration: number;
748
+ intensity: number;
749
+ })[];
750
+ };
751
+ powerUp: {
752
+ name: string;
753
+ steps: {
754
+ type: "vibrate";
755
+ duration: number;
756
+ intensity: number;
757
+ }[];
758
+ };
759
+ damage: {
760
+ name: string;
761
+ steps: ({
762
+ type: "vibrate";
763
+ duration: number;
764
+ intensity: number;
765
+ } | {
766
+ type: "pause";
767
+ duration: number;
768
+ intensity: number;
769
+ })[];
770
+ };
771
+ pickup: {
772
+ name: string;
773
+ steps: ({
774
+ type: "vibrate";
775
+ duration: number;
776
+ intensity: number;
777
+ } | {
778
+ type: "pause";
779
+ duration: number;
780
+ intensity: number;
781
+ })[];
782
+ };
783
+ levelComplete: {
784
+ name: string;
785
+ steps: ({
786
+ type: "vibrate";
787
+ duration: number;
788
+ intensity: number;
789
+ } | {
790
+ type: "pause";
791
+ duration: number;
792
+ intensity: number;
793
+ })[];
794
+ };
795
+ engineRumble: {
796
+ name: string;
797
+ steps: ({
798
+ type: "vibrate";
799
+ duration: number;
800
+ intensity: number;
801
+ } | {
802
+ type: "pause";
803
+ duration: number;
804
+ intensity: number;
805
+ })[];
806
+ };
807
+ };
808
+ readonly accessibility: {
809
+ confirm: {
810
+ name: string;
811
+ steps: ({
812
+ type: "vibrate";
813
+ duration: number;
814
+ intensity: number;
815
+ } | {
816
+ type: "pause";
817
+ duration: number;
818
+ intensity: number;
819
+ })[];
820
+ };
821
+ deny: {
822
+ name: string;
823
+ steps: {
824
+ type: "vibrate";
825
+ duration: number;
826
+ intensity: number;
827
+ }[];
828
+ };
829
+ boundary: {
830
+ name: string;
831
+ steps: {
832
+ type: "vibrate";
833
+ duration: number;
834
+ intensity: number;
835
+ }[];
836
+ };
837
+ focusChange: {
838
+ name: string;
839
+ steps: {
840
+ type: "vibrate";
841
+ duration: number;
842
+ intensity: number;
843
+ }[];
844
+ };
845
+ countTick: {
846
+ name: string;
847
+ steps: {
848
+ type: "vibrate";
849
+ duration: number;
850
+ intensity: number;
851
+ }[];
852
+ };
853
+ landmark: {
854
+ name: string;
855
+ steps: ({
856
+ type: "vibrate";
857
+ duration: number;
858
+ intensity: number;
859
+ } | {
860
+ type: "pause";
861
+ duration: number;
862
+ intensity: number;
863
+ })[];
864
+ };
865
+ progressCheckpoint: {
866
+ name: string;
867
+ steps: ({
868
+ type: "vibrate";
869
+ duration: number;
870
+ intensity: number;
871
+ } | {
872
+ type: "pause";
873
+ duration: number;
874
+ intensity: number;
875
+ })[];
876
+ };
877
+ };
878
+ readonly system: {
879
+ keyPress: {
880
+ name: string;
881
+ steps: {
882
+ type: "vibrate";
883
+ duration: number;
884
+ intensity: number;
885
+ }[];
886
+ };
887
+ scrollTick: {
888
+ name: string;
889
+ steps: {
890
+ type: "vibrate";
891
+ duration: number;
892
+ intensity: number;
893
+ }[];
894
+ };
895
+ scrollBounce: {
896
+ name: string;
897
+ steps: {
898
+ type: "vibrate";
899
+ duration: number;
900
+ intensity: number;
901
+ }[];
902
+ };
903
+ delete: {
904
+ name: string;
905
+ steps: ({
906
+ type: "vibrate";
907
+ duration: number;
908
+ intensity: number;
909
+ } | {
910
+ type: "pause";
911
+ duration: number;
912
+ intensity: number;
913
+ })[];
914
+ };
915
+ undo: {
916
+ name: string;
917
+ steps: ({
918
+ type: "vibrate";
919
+ duration: number;
920
+ intensity: number;
921
+ } | {
922
+ type: "pause";
923
+ duration: number;
924
+ intensity: number;
925
+ })[];
926
+ };
927
+ copy: {
928
+ name: string;
929
+ steps: {
930
+ type: "vibrate";
931
+ duration: number;
932
+ intensity: number;
933
+ }[];
934
+ };
935
+ paste: {
936
+ name: string;
937
+ steps: ({
938
+ type: "vibrate";
939
+ duration: number;
940
+ intensity: number;
941
+ } | {
942
+ type: "pause";
943
+ duration: number;
944
+ intensity: number;
945
+ })[];
946
+ };
947
+ };
948
+ };
949
+
950
+ export { accessibility, gaming, notifications, presets, system, ui };