@symbiote-native/haptics 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.
package/README.md CHANGED
@@ -25,12 +25,12 @@ Unlike a plain RN native module, `expo-haptics`' native code is discovered by
25
25
  wiring into the native host app **once**, covering this package and every other
26
26
  `expo-modules-core` package with zero further changes:
27
27
 
28
- | Platform | Touches |
29
- |---|---|
30
- | iOS | `ios/Podfile` — add `use_expo_modules!` |
31
- | iOS | `AppDelegate.swift` — Expo's runtime-bootstrap hook |
32
- | Android | `settings.gradle` / `app/build.gradle` — resolve and include the Expo Gradle projects |
33
- | Android | `MainApplication.kt` — Expo's bootstrap hook, plus a hand-written native-module name map (there's no `expo` meta-package here to auto-generate one) |
28
+ | Platform | Touches |
29
+ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
30
+ | iOS | `ios/Podfile` — add `use_expo_modules!` |
31
+ | iOS | `AppDelegate.swift` — Expo's runtime-bootstrap hook |
32
+ | Android | `settings.gradle` / `app/build.gradle` — resolve and include the Expo Gradle projects |
33
+ | Android | `MainApplication.kt` — Expo's bootstrap hook, plus a hand-written native-module name map (there's no `expo` meta-package here to auto-generate one) |
34
34
 
35
35
  Full mechanics live in the `symbiote-expo-native-module` project skill. Reference
36
36
  implementation: `examples/expo-react/ios/Podfile` and
@@ -47,26 +47,37 @@ src/core/ notificationAsync / impactAsync / selectionAsync / performAndroidH
47
47
  plus NotificationFeedbackType / ImpactFeedbackStyle / AndroidHaptics.
48
48
  native-module.ts resolves the ExpoHaptics native module via
49
49
  expo-modules-core's requireNativeModule.
50
- src/react/ @symbiote-native/haptics/react — plain re-export of core.
51
- src/vue/ @symbiote-native/haptics/vue — plain re-export of core.
52
50
  src/angular/ @symbiote-native/haptics/angular — plain re-export of core.
53
51
  ```
54
52
 
55
53
  Upstream ships four async functions and three enums, not a subscribable sensor — there's
56
- nothing per-framework to add, so all three adapter entry points are identical re-exports of
57
- `core`.
54
+ nothing per-framework to add, so `./react`, `./vue`, and `./svelte` are `exports`-map aliases
55
+ straight onto `src/core/` (no physical per-framework file). `./angular` stays a physical
56
+ file/subpath since Angular ships through a separate `ngc`/AOT build (`build-ngc/`).
58
57
 
59
58
  ## Use it
60
59
 
61
60
  ```tsx
62
61
  // React — examples/expo-react/screens/HapticsScreen.tsx
63
- import { impactAsync, ImpactFeedbackStyle, notificationAsync, NotificationFeedbackType, selectionAsync } from '@symbiote-native/haptics';
62
+ import {
63
+ impactAsync,
64
+ ImpactFeedbackStyle,
65
+ notificationAsync,
66
+ NotificationFeedbackType,
67
+ selectionAsync,
68
+ } from '@symbiote-native/haptics';
64
69
 
65
70
  function HapticsScreen() {
66
71
  return (
67
72
  <>
68
- <ActionButton title="Medium" onPress={() => impactAsync(ImpactFeedbackStyle.Medium)} />
69
- <ActionButton title="Success" onPress={() => notificationAsync(NotificationFeedbackType.Success)} />
73
+ <ActionButton
74
+ title="Medium"
75
+ onPress={() => impactAsync(ImpactFeedbackStyle.Medium)}
76
+ />
77
+ <ActionButton
78
+ title="Success"
79
+ onPress={() => notificationAsync(NotificationFeedbackType.Success)}
80
+ />
70
81
  <ActionButton title="Selection" onPress={() => selectionAsync()} />
71
82
  </>
72
83
  );
@@ -76,25 +87,42 @@ function HapticsScreen() {
76
87
  ```vue
77
88
  <!-- Vue — examples/expo-vue-sfc/screens/HapticsScreen.vue -->
78
89
  <script setup lang="ts">
79
- import { impactAsync, ImpactFeedbackStyle, notificationAsync, NotificationFeedbackType, selectionAsync } from '@symbiote-native/haptics';
90
+ import {
91
+ impactAsync,
92
+ ImpactFeedbackStyle,
93
+ notificationAsync,
94
+ NotificationFeedbackType,
95
+ selectionAsync,
96
+ } from '@symbiote-native/haptics';
80
97
 
81
98
  function fireImpact(style: ImpactFeedbackStyle): void {
82
99
  void impactAsync(style);
83
100
  }
84
101
  </script>
85
102
  <template>
86
- <ActionButton title="Medium" :onPress="() => fireImpact(ImpactFeedbackStyle.Medium)" />
103
+ <ActionButton
104
+ title="Medium"
105
+ :onPress="() => fireImpact(ImpactFeedbackStyle.Medium)"
106
+ />
87
107
  </template>
88
108
  ```
89
109
 
90
110
  ```ts
91
111
  // Angular — examples/expo-angular/src/screens/HapticsScreen.ts
92
112
  import { Component } from '@angular/core';
93
- import { impactAsync, ImpactFeedbackStyle, notificationAsync, NotificationFeedbackType } from '@symbiote-native/haptics';
113
+ import {
114
+ impactAsync,
115
+ ImpactFeedbackStyle,
116
+ notificationAsync,
117
+ NotificationFeedbackType,
118
+ } from '@symbiote-native/haptics';
94
119
 
95
120
  @Component({
96
121
  selector: 'HapticsScreen',
97
- template: `<ActionButton title="Medium" (press)="handleImpact()"></ActionButton>`,
122
+ template: `<ActionButton
123
+ title="Medium"
124
+ (press)="handleImpact()"
125
+ ></ActionButton>`,
98
126
  })
99
127
  export class HapticsScreen {
100
128
  handleImpact(): void {
@@ -1,6 +1,6 @@
1
1
  import { Platform, UnavailabilityError } from 'expo-modules-core';
2
2
  import { expoHaptics } from './native-module.js';
3
- import { AndroidHaptics, ImpactFeedbackStyle, NotificationFeedbackType } from './types.js';
3
+ import { AndroidHaptics, ImpactFeedbackStyle, NotificationFeedbackType, } from './types.js';
4
4
  const NATIVE_MODULE_NAME = 'expo-haptics';
5
5
  /**
6
6
  * The kind of notification response used in the feedback. On Android it is simulated using
@@ -1,2 +1,2 @@
1
1
  export { notificationAsync, impactAsync, selectionAsync, performAndroidHapticsAsync, } from './haptics';
2
- export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics } from './types';
2
+ export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics, } from './types';
@@ -1,2 +1,2 @@
1
1
  export { notificationAsync, impactAsync, selectionAsync, performAndroidHapticsAsync, } from './haptics.js';
2
- export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics } from './types.js';
2
+ export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics, } from './types.js';
@@ -1,6 +1,6 @@
1
1
  import { Platform, UnavailabilityError } from 'expo-modules-core';
2
2
  import { expoHaptics } from './native-module';
3
- import { AndroidHaptics, ImpactFeedbackStyle, NotificationFeedbackType } from './types';
3
+ import { AndroidHaptics, ImpactFeedbackStyle, NotificationFeedbackType, } from './types';
4
4
  const NATIVE_MODULE_NAME = 'expo-haptics';
5
5
  /**
6
6
  * The kind of notification response used in the feedback. On Android it is simulated using
@@ -1 +1 @@
1
- {"version":3,"file":"haptics.js","sourceRoot":"","sources":["../../src/core/haptics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExF,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAiC,wBAAwB,CAAC,OAAO;IAEjE,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACnC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAA6B,mBAAmB,CAAC,MAAM;IAEvD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAAoB;IACnE,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACrC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"haptics.js","sourceRoot":"","sources":["../../src/core/haptics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAiC,wBAAwB,CAAC,OAAO;IAEjE,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACnC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAA6B,mBAAmB,CAAC,MAAM;IAEvD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAoB;IAEpB,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACrC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export { notificationAsync, impactAsync, selectionAsync, performAndroidHapticsAsync, } from './haptics';
2
- export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics } from './types';
2
+ export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics, } from './types';
@@ -1,3 +1,3 @@
1
1
  export { notificationAsync, impactAsync, selectionAsync, performAndroidHapticsAsync, } from './haptics';
2
- export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics } from './types';
2
+ export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics, } from './types';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-module.js","sourceRoot":"","sources":["../../src/core/native-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAgB/C,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAuB,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"native-module.js","sourceRoot":"","sources":["../../src/core/native-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOxD,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAgB/C,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAC5C,wBAAwB,CACzB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@symbiote-native/haptics",
3
- "version": "0.2.0",
4
- "description": "expo-haptics wrapped for SymbioteNative — one framework-agnostic core, built once and reachable from the React, Vue, and Angular adapters. Impact/notification/selection vibration feedback via iOS's Taptic Engine and Android's Vibrator API.",
3
+ "version": "0.3.0",
4
+ "description": "expo-haptics wrapped for SymbioteNative — one framework-agnostic core, built once and reachable from the React, Vue, Svelte, Solid, and Angular adapters. Impact/notification/selection vibration feedback via iOS's Taptic Engine and Android's Vibrator API.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -23,16 +23,20 @@
23
23
  "default": "./build/core/index.js"
24
24
  },
25
25
  "./vue": {
26
- "types": "./build/vue/index.d.ts",
27
- "default": "./build/vue/index.js"
26
+ "types": "./build/core/index.d.ts",
27
+ "default": "./build/core/index.js"
28
28
  },
29
29
  "./react": {
30
- "types": "./build/react/index.d.ts",
31
- "default": "./build/react/index.js"
30
+ "types": "./build/core/index.d.ts",
31
+ "default": "./build/core/index.js"
32
32
  },
33
33
  "./svelte": {
34
- "types": "./build/svelte/index.d.ts",
35
- "default": "./build/svelte/index.js"
34
+ "types": "./build/core/index.d.ts",
35
+ "default": "./build/core/index.js"
36
+ },
37
+ "./solid": {
38
+ "types": "./build/core/index.d.ts",
39
+ "default": "./build/core/index.js"
36
40
  },
37
41
  "./angular": {
38
42
  "types": "./build-ngc/angular/index.d.ts",
@@ -60,12 +64,14 @@
60
64
  "@symbiote-native/angular": ">=0.6.2",
61
65
  "@symbiote-native/engine": ">=0.1.7",
62
66
  "@symbiote-native/react": ">=0.2.8",
67
+ "@symbiote-native/solid": ">=0.0.1",
63
68
  "@symbiote-native/svelte": ">=0.1.0",
64
69
  "@symbiote-native/vue": ">=0.3.8",
65
70
  "@angular/core": ">=20",
66
71
  "@vue/runtime-core": "^3.5.13",
67
72
  "react": ">=19.0.0",
68
73
  "react-native": ">=0.86",
74
+ "solid-js": ">=1.9.0",
69
75
  "svelte": ">=5.56.0",
70
76
  "vue": ">=3.5.0"
71
77
  },
@@ -76,6 +82,9 @@
76
82
  "@symbiote-native/react": {
77
83
  "optional": true
78
84
  },
85
+ "@symbiote-native/solid": {
86
+ "optional": true
87
+ },
79
88
  "@symbiote-native/svelte": {
80
89
  "optional": true
81
90
  },
@@ -91,6 +100,9 @@
91
100
  "react": {
92
101
  "optional": true
93
102
  },
103
+ "solid-js": {
104
+ "optional": true
105
+ },
94
106
  "svelte": {
95
107
  "optional": true
96
108
  },
@@ -106,14 +118,16 @@
106
118
  "@types/react": "^19.2.0",
107
119
  "@vue/runtime-core": "^3.5.13",
108
120
  "react": "19.2.3",
121
+ "solid-js": "^1.9.14",
109
122
  "svelte": "^5.56.0",
110
123
  "typescript": "~6.0.0",
111
- "@symbiote-native/angular": "0.7.0",
112
- "@symbiote-native/engine": "0.2.0",
113
- "@symbiote-native/react": "0.3.0",
114
- "@symbiote-native/svelte": "0.2.0",
115
- "@symbiote-native/test-utils": "0.1.6",
116
- "@symbiote-native/vue": "0.4.0"
124
+ "@symbiote-native/angular": "0.8.0",
125
+ "@symbiote-native/engine": "0.3.0",
126
+ "@symbiote-native/react": "0.4.0",
127
+ "@symbiote-native/solid": "0.1.0",
128
+ "@symbiote-native/svelte": "0.3.0",
129
+ "@symbiote-native/test-utils": "0.2.0",
130
+ "@symbiote-native/vue": "0.5.0"
117
131
  },
118
132
  "scripts": {
119
133
  "typecheck": "tsc --build",
@@ -1,7 +1,11 @@
1
1
  import { Platform, UnavailabilityError } from 'expo-modules-core';
2
2
 
3
3
  import { expoHaptics } from './native-module';
4
- import { AndroidHaptics, ImpactFeedbackStyle, NotificationFeedbackType } from './types';
4
+ import {
5
+ AndroidHaptics,
6
+ ImpactFeedbackStyle,
7
+ NotificationFeedbackType,
8
+ } from './types';
5
9
 
6
10
  const NATIVE_MODULE_NAME = 'expo-haptics';
7
11
 
@@ -49,7 +53,9 @@ export async function selectionAsync(): Promise<void> {
49
53
  * every platform except Android.
50
54
  * @platform android
51
55
  */
52
- export async function performAndroidHapticsAsync(type: AndroidHaptics): Promise<void> {
56
+ export async function performAndroidHapticsAsync(
57
+ type: AndroidHaptics,
58
+ ): Promise<void> {
53
59
  if (Platform.OS !== 'android') {
54
60
  return;
55
61
  }
package/src/core/index.ts CHANGED
@@ -4,4 +4,8 @@ export {
4
4
  selectionAsync,
5
5
  performAndroidHapticsAsync,
6
6
  } from './haptics';
7
- export { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics } from './types';
7
+ export {
8
+ NotificationFeedbackType,
9
+ ImpactFeedbackStyle,
10
+ AndroidHaptics,
11
+ } from './types';
@@ -1,5 +1,9 @@
1
1
  import { requireNativeModule } from 'expo-modules-core';
2
- import type { AndroidHaptics, ImpactFeedbackStyle, NotificationFeedbackType } from './types';
2
+ import type {
3
+ AndroidHaptics,
4
+ ImpactFeedbackStyle,
5
+ NotificationFeedbackType,
6
+ } from './types';
3
7
 
4
8
  const EXPO_HAPTICS_MODULE_NAME = 'ExpoHaptics';
5
9
 
@@ -17,4 +21,6 @@ export type INativeHapticsModule = {
17
21
  performHapticsAsync?(type: AndroidHaptics): Promise<void>;
18
22
  };
19
23
 
20
- export const expoHaptics = requireNativeModule<INativeHapticsModule>(EXPO_HAPTICS_MODULE_NAME);
24
+ export const expoHaptics = requireNativeModule<INativeHapticsModule>(
25
+ EXPO_HAPTICS_MODULE_NAME,
26
+ );
@@ -1 +0,0 @@
1
- export * from '../core';
@@ -1,5 +0,0 @@
1
- // @symbiote-native/haptics/react: the React entry over the framework-agnostic core.
2
- // Upstream ships free async functions and three enums, no per-instance state and no event
3
- // stream (same shape as @symbiote-native/local-auth) — there is nothing for a hook to wrap, so
4
- // this is a plain re-export.
5
- export * from '../core/index.js';
@@ -1 +0,0 @@
1
- export * from '../core';
@@ -1,6 +0,0 @@
1
- // @symbiote-native/haptics/svelte: the Svelte entry over the framework-agnostic core.
2
- // Upstream ships free async functions and three enums, no per-instance state and no event
3
- // stream (same shape as @symbiote-native/local-auth) — there is nothing for a rune to wrap, so
4
- // this is a plain re-export. Svelte's lifecycle bucket is `runes/` (adapters/svelte/src/runes —
5
- // never React's `hooks` or Vue's `composables`), and this package has none to fill.
6
- export * from '../core/index.js';
@@ -1 +0,0 @@
1
- export * from '../core';
@@ -1,4 +0,0 @@
1
- // @symbiote-native/haptics/vue: the Vue entry over the framework-agnostic core. Same reasoning
2
- // as the React entry — no per-instance state or event stream to wire onto Vue's reactivity, so
3
- // this is a plain re-export.
4
- export * from '../core/index.js';
@@ -1,5 +0,0 @@
1
- // @symbiote-native/haptics/react: the React entry over the framework-agnostic core.
2
- // Upstream ships free async functions and three enums, no per-instance state and no event
3
- // stream (same shape as @symbiote-native/local-auth) — there is nothing for a hook to wrap, so
4
- // this is a plain re-export.
5
- export * from '../core';
@@ -1,6 +0,0 @@
1
- // @symbiote-native/haptics/svelte: the Svelte entry over the framework-agnostic core.
2
- // Upstream ships free async functions and three enums, no per-instance state and no event
3
- // stream (same shape as @symbiote-native/local-auth) — there is nothing for a rune to wrap, so
4
- // this is a plain re-export. Svelte's lifecycle bucket is `runes/` (adapters/svelte/src/runes —
5
- // never React's `hooks` or Vue's `composables`), and this package has none to fill.
6
- export * from '../core';
package/src/vue/index.ts DELETED
@@ -1,4 +0,0 @@
1
- // @symbiote-native/haptics/vue: the Vue entry over the framework-agnostic core. Same reasoning
2
- // as the React entry — no per-instance state or event stream to wire onto Vue's reactivity, so
3
- // this is a plain re-export.
4
- export * from '../core';