timeback 0.0.0-alpha.2 → 0.1.1

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.
Files changed (113) hide show
  1. package/README.md +378 -7
  2. package/dist/client/adapters/react/SignInButton.d.ts +60 -0
  3. package/dist/client/adapters/react/SignInButton.d.ts.map +1 -0
  4. package/dist/client/adapters/react/index.d.ts +43 -0
  5. package/dist/client/adapters/react/index.d.ts.map +1 -0
  6. package/dist/client/adapters/react/index.js +478 -0
  7. package/dist/client/adapters/react/provider.d.ts +74 -0
  8. package/dist/client/adapters/react/provider.d.ts.map +1 -0
  9. package/dist/client/adapters/solid/SignInButton.d.ts +52 -0
  10. package/dist/client/adapters/solid/SignInButton.d.ts.map +1 -0
  11. package/dist/client/adapters/solid/SignInButton.tsx +321 -0
  12. package/dist/client/adapters/solid/context.d.ts +73 -0
  13. package/dist/client/adapters/solid/context.d.ts.map +1 -0
  14. package/dist/client/adapters/solid/context.tsx +91 -0
  15. package/dist/client/adapters/solid/index.d.ts +42 -0
  16. package/dist/client/adapters/solid/index.d.ts.map +1 -0
  17. package/dist/client/adapters/solid/index.ts +46 -0
  18. package/dist/client/adapters/svelte/SignInButton.svelte +234 -0
  19. package/dist/client/adapters/svelte/SignInButton.svelte.d.ts +24 -0
  20. package/dist/client/adapters/svelte/index.d.ts +33 -0
  21. package/dist/client/adapters/svelte/index.d.ts.map +1 -0
  22. package/dist/client/adapters/svelte/index.ts +38 -0
  23. package/dist/client/adapters/svelte/stores.d.ts +62 -0
  24. package/dist/client/adapters/svelte/stores.d.ts.map +1 -0
  25. package/dist/client/adapters/svelte/stores.ts +139 -0
  26. package/dist/client/adapters/vue/SignInButton.vue +260 -0
  27. package/dist/client/adapters/vue/SignInButton.vue.d.ts +53 -0
  28. package/dist/client/adapters/vue/index.d.ts +43 -0
  29. package/dist/client/adapters/vue/index.d.ts.map +1 -0
  30. package/dist/client/adapters/vue/index.ts +48 -0
  31. package/dist/client/adapters/vue/provider.d.ts +94 -0
  32. package/dist/client/adapters/vue/provider.d.ts.map +1 -0
  33. package/dist/client/adapters/vue/provider.ts +147 -0
  34. package/dist/client/index.d.ts +9 -0
  35. package/dist/client/index.d.ts.map +1 -0
  36. package/dist/client/lib/activity/activity.class.d.ts +73 -0
  37. package/dist/client/lib/activity/activity.class.d.ts.map +1 -0
  38. package/dist/client/lib/activity/activity.d.ts +16 -0
  39. package/dist/client/lib/activity/activity.d.ts.map +1 -0
  40. package/dist/client/lib/activity/index.d.ts +6 -0
  41. package/dist/client/lib/activity/index.d.ts.map +1 -0
  42. package/dist/client/lib/utils.d.ts +20 -0
  43. package/dist/client/lib/utils.d.ts.map +1 -0
  44. package/dist/client/namespaces/activity.d.ts +37 -0
  45. package/dist/client/namespaces/activity.d.ts.map +1 -0
  46. package/dist/client/namespaces/auth.d.ts +33 -0
  47. package/dist/client/namespaces/auth.d.ts.map +1 -0
  48. package/dist/client/namespaces/index.d.ts +7 -0
  49. package/dist/client/namespaces/index.d.ts.map +1 -0
  50. package/dist/client/namespaces/user.d.ts +29 -0
  51. package/dist/client/namespaces/user.d.ts.map +1 -0
  52. package/dist/client/timeback-client.class.d.ts +37 -0
  53. package/dist/client/timeback-client.class.d.ts.map +1 -0
  54. package/dist/client/timeback-client.d.ts +29 -0
  55. package/dist/client/timeback-client.d.ts.map +1 -0
  56. package/dist/client.d.ts +30 -0
  57. package/dist/client.d.ts.map +1 -0
  58. package/dist/client.js +198 -0
  59. package/dist/index.d.ts +27 -14
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1373 -11
  62. package/dist/server/adapters/express.d.ts +62 -0
  63. package/dist/server/adapters/express.d.ts.map +1 -0
  64. package/dist/server/adapters/express.js +565 -0
  65. package/dist/server/adapters/native.d.ts +45 -0
  66. package/dist/server/adapters/native.d.ts.map +1 -0
  67. package/dist/server/adapters/native.js +509 -0
  68. package/dist/server/adapters/nextjs.d.ts +30 -0
  69. package/dist/server/adapters/nextjs.d.ts.map +1 -0
  70. package/dist/server/adapters/nextjs.js +521 -0
  71. package/dist/server/adapters/nuxt.d.ts +96 -0
  72. package/dist/server/adapters/nuxt.d.ts.map +1 -0
  73. package/dist/server/adapters/nuxt.js +663 -0
  74. package/dist/server/adapters/solid-start.d.ts +61 -0
  75. package/dist/server/adapters/solid-start.d.ts.map +1 -0
  76. package/dist/server/adapters/solid-start.js +551 -0
  77. package/dist/server/adapters/svelte-kit.d.ts +82 -0
  78. package/dist/server/adapters/svelte-kit.d.ts.map +1 -0
  79. package/dist/server/adapters/svelte-kit.js +572 -0
  80. package/dist/server/adapters/tanstack-start.d.ts +40 -0
  81. package/dist/server/adapters/tanstack-start.d.ts.map +1 -0
  82. package/dist/server/adapters/tanstack-start.js +522 -0
  83. package/dist/server/adapters/types.d.ts +280 -0
  84. package/dist/server/adapters/types.d.ts.map +1 -0
  85. package/dist/server/adapters/utils.d.ts +15 -0
  86. package/dist/server/adapters/utils.d.ts.map +1 -0
  87. package/dist/server/handlers/activity.d.ts +28 -0
  88. package/dist/server/handlers/activity.d.ts.map +1 -0
  89. package/dist/server/handlers/identity.d.ts +24 -0
  90. package/dist/server/handlers/identity.d.ts.map +1 -0
  91. package/dist/server/handlers/index.d.ts +9 -0
  92. package/dist/server/handlers/index.d.ts.map +1 -0
  93. package/dist/server/handlers/user.d.ts +30 -0
  94. package/dist/server/handlers/user.d.ts.map +1 -0
  95. package/dist/server/index.d.ts +10 -0
  96. package/dist/server/index.d.ts.map +1 -0
  97. package/dist/server/lib/index.d.ts +9 -0
  98. package/dist/server/lib/index.d.ts.map +1 -0
  99. package/dist/server/lib/logger.d.ts +21 -0
  100. package/dist/server/lib/logger.d.ts.map +1 -0
  101. package/dist/server/lib/oidc.d.ts +76 -0
  102. package/dist/server/lib/oidc.d.ts.map +1 -0
  103. package/dist/server/lib/utils.d.ts +39 -0
  104. package/dist/server/lib/utils.d.ts.map +1 -0
  105. package/dist/server/timeback.d.ts +48 -0
  106. package/dist/server/timeback.d.ts.map +1 -0
  107. package/dist/server/types.d.ts +300 -0
  108. package/dist/server/types.d.ts.map +1 -0
  109. package/dist/shared/constants.d.ts +18 -0
  110. package/dist/shared/constants.d.ts.map +1 -0
  111. package/dist/shared/types.d.ts +100 -0
  112. package/dist/shared/types.d.ts.map +1 -0
  113. package/package.json +104 -28
package/README.md CHANGED
@@ -1,15 +1,386 @@
1
- # timeback
1
+ # Timeback SDK
2
2
 
3
- To install dependencies:
3
+ TypeScript SDK for integrating Timeback into your application. Provides server-side route handlers and client-side components for activity tracking and SSO authentication.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Installation](#installation)
8
+ - [Quick Start](#quick-start)
9
+ - [Server Adapters](#server-adapters)
10
+ - [Next.js](#nextjs)
11
+ - [Nuxt](#nuxt)
12
+ - [SvelteKit](#sveltekit)
13
+ - [SolidStart](#solidstart)
14
+ - [TanStack Start](#tanstack-start)
15
+ - [Express](#express)
16
+ - [Client Adapters](#client-adapters)
17
+ - [React](#react)
18
+ - [Vue](#vue)
19
+ - [Svelte](#svelte)
20
+ - [Solid](#solid)
21
+ - [Identity Modes](#identity-modes)
22
+ - [Activity Tracking](#activity-tracking)
23
+
24
+ ## Installation
4
25
 
5
26
  ```bash
6
- bun install
27
+ npm install timeback
28
+ # or
29
+ bun add timeback
7
30
  ```
8
31
 
9
- To run:
32
+ ## Quick Start
10
33
 
11
- ```bash
12
- bun run index.ts
34
+ 1. Create a server instance with your credentials
35
+ 2. Mount the route handlers for your framework
36
+ 3. Wrap your app with the client provider
37
+ 4. Use hooks/composables to track activities
38
+
39
+ ## Server Adapters
40
+
41
+ All server adapters use the same core configuration:
42
+
43
+ ```typescript
44
+ // lib/timeback.ts
45
+ import { createServer } from 'timeback'
46
+
47
+ export const timeback = await createServer({
48
+ env: 'staging', // 'development' | 'staging' | 'production'
49
+ api: {
50
+ clientId: process.env.TIMEBACK_API_CLIENT_ID!,
51
+ clientSecret: process.env.TIMEBACK_API_CLIENT_SECRET!,
52
+ },
53
+ identity: {
54
+ mode: 'sso',
55
+ clientId: process.env.AWS_COGNITO_CLIENT_ID!,
56
+ clientSecret: process.env.AWS_COGNITO_CLIENT_SECRET!,
57
+ redirectUri: 'http://localhost:3000/api/auth/sso/callback/timeback',
58
+ onCallbackSuccess: ({ user, redirect }) => {
59
+ // Set session, then redirect
60
+ return redirect('/')
61
+ },
62
+ onCallbackError: ({ error, redirect }) => {
63
+ console.error('SSO Error:', error)
64
+ return redirect('/?error=sso_failed')
65
+ },
66
+ getUser: () => getSession(), // Return current user or undefined
67
+ },
68
+ })
69
+ ```
70
+
71
+ ### Next.js
72
+
73
+ ```typescript
74
+ // app/api/timeback/[...timeback]/route.ts
75
+ import { toNextjsHandler } from 'timeback/nextjs'
76
+
77
+ import { timeback } from '@/lib/timeback'
78
+
79
+ export const { GET, POST } = toNextjsHandler(timeback)
80
+ ```
81
+
82
+ ### Nuxt
83
+
84
+ ```typescript
85
+ // server/middleware/timeback.ts
86
+ import { nuxtHandler } from 'timeback/nuxt'
87
+
88
+ import { timeback } from '../lib/timeback'
89
+
90
+ export default defineEventHandler(async event => {
91
+ const response = await nuxtHandler({
92
+ timeback,
93
+ event,
94
+ })
95
+ if (response) return response
96
+ })
97
+ ```
98
+
99
+ ### SvelteKit
100
+
101
+ ```typescript
102
+ // src/hooks.server.ts
103
+ import { building } from '$app/environment'
104
+ import { timeback } from '$lib/timeback'
105
+ import { svelteKitHandler } from 'timeback/svelte-kit'
106
+
107
+ import type { Handle } from '@sveltejs/kit'
108
+
109
+ export const handle: Handle = ({ event, resolve }) => {
110
+ return svelteKitHandler({
111
+ timeback,
112
+ event,
113
+ resolve,
114
+ building,
115
+ })
116
+ }
117
+ ```
118
+
119
+ ### SolidStart
120
+
121
+ ```typescript
122
+ // src/middleware.ts
123
+ import { createMiddleware } from '@solidjs/start/middleware'
124
+ import { timeback } from '~/lib/timeback'
125
+ import { solidStartHandler } from 'timeback/solid-start'
126
+
127
+ export default createMiddleware({
128
+ onRequest: [
129
+ async event => {
130
+ const response = await solidStartHandler({
131
+ timeback,
132
+ event,
133
+ })
134
+ if (response) return response
135
+ },
136
+ ],
137
+ })
138
+ ```
139
+
140
+ ### TanStack Start
141
+
142
+ ```typescript
143
+ // src/routes/api/timeback/$.ts
144
+ import { createFileRoute } from '@tanstack/react-router'
145
+ import { toTanStackStartHandler } from 'timeback/tanstack-start'
146
+
147
+ import { timeback } from '@/lib/timeback'
148
+
149
+ const handlers = toTanStackStartHandler(timeback)
150
+
151
+ export const Route = createFileRoute('/api/timeback/$')({
152
+ server: { handlers },
153
+ })
154
+ ```
155
+
156
+ ### Express
157
+
158
+ ```typescript
159
+ // server.ts
160
+ import express from 'express'
161
+ import { toExpressMiddleware } from 'timeback/express'
162
+
163
+ import { timeback } from './lib/timeback'
164
+
165
+ const app = express()
166
+ app.use(express.json())
167
+ app.use('/api/timeback', toExpressMiddleware(timeback))
168
+ ```
169
+
170
+ ## Client Adapters
171
+
172
+ ### React
173
+
174
+ ```tsx
175
+ // app/providers.tsx
176
+ 'use client'
177
+
178
+ import { TimebackProvider } from 'timeback/react'
179
+
180
+ export function Providers({ children }: { children: React.ReactNode }) {
181
+ return <TimebackProvider>{children}</TimebackProvider>
182
+ }
183
+ ```
184
+
185
+ ```tsx
186
+ // components/ActivityTracker.tsx
187
+ import { useEffect } from 'react'
188
+ import { SignInButton, useTimeback } from 'timeback/react'
189
+
190
+ function MyComponent() {
191
+ const timeback = useTimeback()
192
+
193
+ useEffect(() => {
194
+ if (!timeback) return
195
+
196
+ const activity = timeback.activity
197
+ .new({ id: 'lesson-1', name: 'Intro', courseCode: 'MATH-101' })
198
+ .start()
199
+
200
+ return () => {
201
+ activity.end()
202
+ }
203
+ }, [timeback])
204
+
205
+ return <SignInButton size="lg" />
206
+ }
207
+ ```
208
+
209
+ ### Vue
210
+
211
+ ```vue
212
+ <!-- app.vue -->
213
+ <script setup>
214
+ import { TimebackProvider } from 'timeback/vue'
215
+ </script>
216
+
217
+ <template>
218
+ <TimebackProvider>
219
+ <NuxtPage />
220
+ </TimebackProvider>
221
+ </template>
222
+ ```
223
+
224
+ ```vue
225
+ <!-- components/ActivityTracker.vue -->
226
+ <script setup>
227
+ import { SignInButton, useTimeback } from 'timeback/vue'
228
+ import { onMounted, onUnmounted } from 'vue'
229
+
230
+ const timeback = useTimeback()
231
+ let activity
232
+
233
+ onMounted(() => {
234
+ if (timeback.value) {
235
+ activity = timeback.value.activity
236
+ .new({ id: 'lesson-1', name: 'Intro', courseCode: 'MATH-101' })
237
+ .start()
238
+ }
239
+ })
240
+
241
+ onUnmounted(() => activity?.end())
242
+ </script>
243
+
244
+ <template>
245
+ <SignInButton size="lg" />
246
+ </template>
247
+ ```
248
+
249
+ ### Svelte
250
+
251
+ ```svelte
252
+ <!-- +layout.svelte -->
253
+ <script>
254
+ import { initTimeback } from 'timeback/svelte'
255
+
256
+ initTimeback()
257
+
258
+ let { children } = $props()
259
+ </script>
260
+
261
+ {@render children()}
262
+ ```
263
+
264
+ ```svelte
265
+ <!-- +page.svelte -->
266
+ <script>
267
+ import { onMount, onDestroy } from 'svelte'
268
+ import { SignInButton, timeback } from 'timeback/svelte'
269
+
270
+ let activity
271
+
272
+ onMount(() => {
273
+ if ($timeback) {
274
+ activity = $timeback.activity
275
+ .new({ id: 'lesson-1', name: 'Intro', courseCode: 'MATH-101' })
276
+ .start()
277
+ }
278
+ })
279
+
280
+ onDestroy(() => activity?.end())
281
+ </script>
282
+
283
+ <SignInButton size="lg" />
284
+ ```
285
+
286
+ ### Solid
287
+
288
+ ```tsx
289
+ // app.tsx
290
+ import { TimebackProvider } from 'timeback/solid'
291
+
292
+ export default function App() {
293
+ return (
294
+ <TimebackProvider>
295
+ <Router root={props => <Suspense>{props.children}</Suspense>}>
296
+ <FileRoutes />
297
+ </Router>
298
+ </TimebackProvider>
299
+ )
300
+ }
301
+ ```
302
+
303
+ ```tsx
304
+ // components/ActivityTracker.tsx
305
+ import { onCleanup, onMount } from 'solid-js'
306
+ import { SignInButton, useTimeback } from 'timeback/solid'
307
+
308
+ function MyComponent() {
309
+ const timeback = useTimeback()
310
+ let activity
311
+
312
+ onMount(() => {
313
+ if (!timeback) return
314
+
315
+ activity = timeback.activity
316
+ .new({ id: 'lesson-1', name: 'Intro', courseCode: 'MATH-101' })
317
+ .start()
318
+ })
319
+
320
+ onCleanup(() => activity?.end())
321
+
322
+ return <SignInButton size="lg" />
323
+ }
324
+ ```
325
+
326
+ ## Identity Modes
327
+
328
+ ### SSO Mode
329
+
330
+ Uses Timeback as the identity provider via OIDC:
331
+
332
+ ```typescript
333
+ identity: {
334
+ mode: 'sso',
335
+ clientId: process.env.AWS_COGNITO_CLIENT_ID!,
336
+ clientSecret: process.env.AWS_COGNITO_CLIENT_SECRET!,
337
+ redirectUri: 'http://localhost:3000/api/auth/sso/callback/timeback',
338
+ onCallbackSuccess: ({ user, state, redirect }) => redirect('/'),
339
+ onCallbackError: ({ error, redirect }) => redirect('/?error=sso_failed'),
340
+ getUser: () => getCurrentSession(),
341
+ }
342
+ ```
343
+
344
+ ### Custom Mode
345
+
346
+ For apps with existing auth (Clerk, Auth0, Supabase, etc.):
347
+
348
+ ```typescript
349
+ identity: {
350
+ mode: 'custom',
351
+ getUser: async (req) => {
352
+ const session = await getSession(req)
353
+ if (!session) return undefined
354
+ return { id: session.userId, email: session.email, name: session.name }
355
+ },
356
+ }
357
+ ```
358
+
359
+ ## Activity Tracking
360
+
361
+ Activities track time spent on learning content:
362
+
363
+ ```typescript
364
+ // Start an activity
365
+ const activity = timeback.activity
366
+ .new({
367
+ id: 'lesson-123',
368
+ name: 'Introduction to Fractions',
369
+ courseCode: 'MATH-101',
370
+ })
371
+ .start()
372
+
373
+ // Pause/resume
374
+ activity.pause()
375
+ activity.resume()
376
+
377
+ // End with metrics
378
+ await activity.end({
379
+ totalQuestions: 10,
380
+ correctQuestions: 8,
381
+ xpEarned: 80,
382
+ masteredUnits: 1,
383
+ })
13
384
  ```
14
385
 
15
- This project was created using `bun init` in bun v1.3.2. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.
386
+ The SDK automatically sends activity data to your server, which forwards it to the Timeback API.
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Sign In with Timeback Button
3
+ *
4
+ * A pre-styled button for Timeback SSO authentication.
5
+ * Fully customizable via CSS variables.
6
+ */
7
+ import * as React from 'react';
8
+ /**
9
+ * Props for SignInButton component.
10
+ */
11
+ export interface SignInButtonProps {
12
+ /** Button text (default: "Sign in with Timeback") */
13
+ children?: React.ReactNode;
14
+ /** Additional CSS class names */
15
+ className?: string;
16
+ /** Inline styles */
17
+ style?: React.CSSProperties;
18
+ /** Disabled state */
19
+ disabled?: boolean;
20
+ /** Show loading spinner when clicked */
21
+ showLoading?: boolean;
22
+ /** Called before redirect (can prevent with e.preventDefault()) */
23
+ onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
24
+ /** Button variant */
25
+ variant?: 'default' | 'outline' | 'minimal';
26
+ /** Button size */
27
+ size?: 'sm' | 'md' | 'lg';
28
+ /** Show Timeback logo */
29
+ showLogo?: boolean;
30
+ }
31
+ /**
32
+ * Sign In with Timeback button component.
33
+ *
34
+ * Triggers SSO authentication flow when clicked.
35
+ *
36
+ * @param props - Component props
37
+ * @returns Button element
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * // Basic usage
42
+ * <SignInButton />
43
+ *
44
+ * // Custom text
45
+ * <SignInButton>Continue with Timeback</SignInButton>
46
+ *
47
+ * // Outline variant
48
+ * <SignInButton variant="outline" />
49
+ *
50
+ * // Custom styling via CSS variables
51
+ * <SignInButton
52
+ * style={{
53
+ * '--tb-btn-bg': '#6366f1',
54
+ * '--tb-btn-bg-hover': '#4f46e5',
55
+ * } as React.CSSProperties}
56
+ * />
57
+ * ```
58
+ */
59
+ export declare function SignInButton(props: SignInButtonProps): React.ReactElement;
60
+ //# sourceMappingURL=SignInButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignInButton.d.ts","sourceRoot":"","sources":["../../../../src/client/adapters/react/SignInButton.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;IAC1D,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IAC3C,kBAAkB;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AA8MD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA4DzE"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * React Client Module
3
+ *
4
+ * React-specific exports for Timeback SDK.
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * import { TimebackProvider, useTimeback, SignInButton } from 'timeback/react'
9
+ *
10
+ * function App() {
11
+ * return (
12
+ * <TimebackProvider>
13
+ * <MyComponent />
14
+ * </TimebackProvider>
15
+ * )
16
+ * }
17
+ *
18
+ * function MyComponent() {
19
+ * const timeback = useTimeback()
20
+ *
21
+ * const handleSignIn = () => timeback?.auth.signIn()
22
+ *
23
+ * const handleFetchProfile = async () => {
24
+ * const profile = await timeback?.user.fetch()
25
+ * }
26
+ *
27
+ * const handleStartActivity = () => {
28
+ * const activity = timeback?.activity.new({ id: 'lesson-1', name: 'Intro', courseCode: 'MATH' })
29
+ * activity?.start()
30
+ * }
31
+ *
32
+ * return <SignInButton />
33
+ * }
34
+ * ```
35
+ */
36
+ export { createClient } from '../../timeback-client';
37
+ export { TimebackClient } from '../../timeback-client.class';
38
+ export { Activity } from '../../lib/activity';
39
+ export { TimebackProvider, useTimeback } from './provider';
40
+ export { SignInButton } from './SignInButton';
41
+ export type { SignInButtonProps } from './SignInButton';
42
+ export type { TimebackUser, ActivityParams, ActivityMetrics } from '../../../shared/types';
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/adapters/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGvD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}