@vue-skuilder/common-ui 0.1.28 → 0.1.30
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/dist/assets/index.css +1 -1
- package/dist/common-ui.es.js +1 -1
- package/dist/common-ui.es.js.map +1 -1
- package/dist/common-ui.umd.js +1 -1
- package/dist/common-ui.umd.js.map +1 -1
- package/dist/components/StudySession.types.d.ts +6 -0
- package/dist/components/StudySession.types.d.ts.map +1 -1
- package/dist/components/StudySession.vue.d.ts +19 -1
- package/dist/components/StudySession.vue.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/components/StudySession.types.ts +8 -0
- package/src/components/StudySession.vue +98 -9
- package/src/index.ts +1 -1
|
@@ -4,4 +4,10 @@
|
|
|
4
4
|
export type StudySessionConfig = {
|
|
5
5
|
likesConfetti: boolean;
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Built-in card transition presets provided by StudySession.
|
|
9
|
+
* Consumers can also pass any custom string to use their own CSS transition classes.
|
|
10
|
+
*/
|
|
11
|
+
export type CardTransitionPreset = 'component-fade' | 'card-slide' | 'card-scale';
|
|
12
|
+
export type CardTransitionMode = 'out-in' | 'in-out' | 'default';
|
|
7
13
|
//# sourceMappingURL=StudySession.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudySession.types.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"StudySession.types.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC;AAElF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { ViewComponent } from '../composables';
|
|
|
3
3
|
import { default as CardViewer } from './cardRendering/CardViewer.vue';
|
|
4
4
|
import { CourseElo, ViewData } from '../../../common/dist/index.mjs';
|
|
5
5
|
import { CardHistory, CardRecord, ContentSourceID, CourseRegistrationDoc, DataLayerProvider, HydratedCard, ResponseResult, SessionController, StudyContentSource, StudySessionRecord, UserDBInterface } from '../../../db/dist/index.mjs';
|
|
6
|
-
import { StudySessionConfig } from './StudySession.types';
|
|
6
|
+
import { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './StudySession.types';
|
|
7
7
|
interface StudyRefs {
|
|
8
8
|
shadowWrapper: HTMLDivElement;
|
|
9
9
|
cardViewer: InstanceType<typeof CardViewer>;
|
|
@@ -46,6 +46,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
46
46
|
type: BooleanConstructor;
|
|
47
47
|
default: boolean;
|
|
48
48
|
};
|
|
49
|
+
transitionName: {
|
|
50
|
+
type: PropType<CardTransitionPreset | string>;
|
|
51
|
+
default: string;
|
|
52
|
+
};
|
|
53
|
+
transitionMode: {
|
|
54
|
+
type: PropType<CardTransitionMode>;
|
|
55
|
+
default: string;
|
|
56
|
+
};
|
|
49
57
|
}>, {}, {
|
|
50
58
|
cardID: string;
|
|
51
59
|
view: ViewComponent | null;
|
|
@@ -118,6 +126,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
118
126
|
type: BooleanConstructor;
|
|
119
127
|
default: boolean;
|
|
120
128
|
};
|
|
129
|
+
transitionName: {
|
|
130
|
+
type: PropType<CardTransitionPreset | string>;
|
|
131
|
+
default: string;
|
|
132
|
+
};
|
|
133
|
+
transitionMode: {
|
|
134
|
+
type: PropType<CardTransitionMode>;
|
|
135
|
+
default: string;
|
|
136
|
+
};
|
|
121
137
|
}>> & Readonly<{
|
|
122
138
|
"onSession-finished"?: ((...args: any[]) => any) | undefined;
|
|
123
139
|
"onSession-started"?: ((...args: any[]) => any) | undefined;
|
|
@@ -130,6 +146,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
130
146
|
frameless: boolean;
|
|
131
147
|
sessionConfig: StudySessionConfig;
|
|
132
148
|
hideFooter: boolean;
|
|
149
|
+
transitionName: string;
|
|
150
|
+
transitionMode: CardTransitionMode;
|
|
133
151
|
}, {}, {
|
|
134
152
|
CardViewer: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
135
153
|
sessionOrder: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudySession.vue.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StudySession.vue.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.vue"],"names":[],"mappings":"AA0EA;AAAA,OA0sBO,EAAE,eAAe,EAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAM/C,OAAO,UAAU,MAAM,gCAAgC,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EACL,WAAW,EACX,UAAU,EAEV,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAEjB,YAAY,EAEZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,UAAU,SAAS;IACjB,aAAa,EAAE,cAAc,CAAC;IAC9B,UAAU,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CAC7C;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG;IACxD,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;;;;;;;cAqBmB,QAAQ,CAAC,eAAe,EAAE,CAAC;;;;cAI1B,QAAQ,CAAC,eAAe,CAAC;;;;cAIzB,QAAQ,CAAC,iBAAiB,CAAC;;;;cAI3B,QAAQ,CAAC,kBAAkB,CAAC;;;;;;cAI1B,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;;;;;;;;;;;;cAY7C,QAAQ,CAAC,oBAAoB,GAAG,MAAM,CAAC;;;;cAIvC,QAAQ,CAAC,kBAAkB,CAAC;;;;;UAmB9B,aAAa,GAAG,IAAI;UACtB,QAAQ,EAAE;;;iBAGH;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;;uBAEtB,iBAAiB,CAAC,aAAa,CAAC,GAAG,IAAI;;;mBAG7C,kBAAkB,EAAE;;;;sBAIf,qBAAqB,GAAG,IAAI;2BACzB,kBAAkB,EAAE;;qBAExB,MAAM,CAAC,OAAO,GAAG,IAAI;;;;mBAOjC,kBAAkB;;uBA4Cd,MAAM,GAAG,SAAS;kCASxB,OAAO;;;;8BA2HM,MAAM,WAAW,MAAM,GAAG,MAAM;0BAI9B,aAAa,KAAK,UAAU;6BAkE/B,cAAc;;qBAsDhB,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;mBAO/C,YAAY,GAAG,IAAI;;;;;;;cA7XvB,QAAQ,CAAC,eAAe,EAAE,CAAC;;;;cAI1B,QAAQ,CAAC,eAAe,CAAC;;;;cAIzB,QAAQ,CAAC,iBAAiB,CAAC;;;;cAI3B,QAAQ,CAAC,kBAAkB,CAAC;;;;;;cAI1B,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;;;;;;;;;;;;cAY7C,QAAQ,CAAC,oBAAoB,GAAG,MAAM,CAAC;;;;cAIvC,QAAQ,CAAC,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAnDlD,wBA0bG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export * from './composables/useEntitlements';
|
|
|
19
19
|
export { default as StudySession } from './components/StudySession.vue';
|
|
20
20
|
export { default as StudySessionTimer } from './components/StudySessionTimer.vue';
|
|
21
21
|
export { default as SessionControllerDebug } from './components/SessionControllerDebug.vue';
|
|
22
|
-
export type { StudySessionConfig } from './components/StudySession.types';
|
|
22
|
+
export type { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './components/StudySession.types';
|
|
23
23
|
export * from './components/studentInputs/BaseUserInput';
|
|
24
24
|
export { default as RadioMultipleChoice } from './components/studentInputs/RadioMultipleChoice.vue';
|
|
25
25
|
export { default as MultipleChoiceOption } from './components/studentInputs/MultipleChoiceOption.vue';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAClF,cAAc,sCAAsC,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAGlF,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAM9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAC5F,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.30",
|
|
7
7
|
"main": "./dist/common-ui.umd.js",
|
|
8
8
|
"module": "./dist/common-ui.es.js",
|
|
9
9
|
"types": "./dist/index.d.ts",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@highlightjs/vue-plugin": "^2.1.2",
|
|
34
34
|
"@mdi/font": "^7.3.67",
|
|
35
35
|
"@vojtechlanka/vue-tags-input": "^3",
|
|
36
|
-
"@vue-skuilder/common": "0.1.
|
|
37
|
-
"@vue-skuilder/db": "0.1.
|
|
36
|
+
"@vue-skuilder/common": "0.1.30",
|
|
37
|
+
"@vue-skuilder/db": "0.1.30",
|
|
38
38
|
"highlight.js": "^11.0.1",
|
|
39
39
|
"marked": "^15.0.6",
|
|
40
40
|
"moment": "^2.29.4",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"vite-plugin-dts": "^4.5.3",
|
|
71
71
|
"vitest": "^4.0.15"
|
|
72
72
|
},
|
|
73
|
-
"stableVersion": "0.1.
|
|
73
|
+
"stableVersion": "0.1.30"
|
|
74
74
|
}
|
|
@@ -4,3 +4,11 @@
|
|
|
4
4
|
export type StudySessionConfig = {
|
|
5
5
|
likesConfetti: boolean;
|
|
6
6
|
};
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Built-in card transition presets provided by StudySession.
|
|
10
|
+
* Consumers can also pass any custom string to use their own CSS transition classes.
|
|
11
|
+
*/
|
|
12
|
+
export type CardTransitionPreset = 'component-fade' | 'card-slide' | 'card-scale';
|
|
13
|
+
|
|
14
|
+
export type CardTransitionMode = 'out-in' | 'in-out' | 'default';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div v-if="sessionPrepared" class="StudySession">
|
|
3
|
-
<v-row align="center">
|
|
3
|
+
<v-row v-if="!frameless" align="center">
|
|
4
4
|
<!-- <h1 class="text-h3" v-if="courseNames[courseID]">{{ courseNames[courseID] }}:</h1> -->
|
|
5
5
|
<v-spacer></v-spacer>
|
|
6
6
|
<v-progress-circular v-if="loading" color="primary" indeterminate size="32" width="4" />
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<!-- Debug Panel (only visible if window.debugMode is true) -->
|
|
10
10
|
<session-controller-debug v-if="debugMode" :session-controller="sessionController" />
|
|
11
11
|
|
|
12
|
-
<br />
|
|
12
|
+
<br v-if="!frameless" />
|
|
13
13
|
|
|
14
14
|
<div v-if="sessionFinished" class="text-h4">
|
|
15
15
|
<p>Study session finished! Great job!</p>
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
<heat-map :activity-records-getter="() => user.getActivityRecords()" />
|
|
22
22
|
</div>
|
|
23
23
|
|
|
24
|
-
<div v-else ref="shadowWrapper">
|
|
25
|
-
<transition name="
|
|
24
|
+
<div v-else ref="shadowWrapper" class="card-transition-container">
|
|
25
|
+
<transition :name="transitionName" :mode="transitionMode">
|
|
26
26
|
<card-viewer
|
|
27
27
|
ref="cardViewer"
|
|
28
28
|
:key="cardID"
|
|
@@ -40,10 +40,12 @@
|
|
|
40
40
|
</transition>
|
|
41
41
|
</div>
|
|
42
42
|
|
|
43
|
-
<
|
|
44
|
-
|
|
45
|
-
<
|
|
46
|
-
|
|
43
|
+
<template v-if="!frameless">
|
|
44
|
+
<br />
|
|
45
|
+
<div v-if="sessionController">
|
|
46
|
+
<span v-for="i in sessionController.failedCount" :key="i" class="text-h5">•</span>
|
|
47
|
+
</div>
|
|
48
|
+
</template>
|
|
47
49
|
|
|
48
50
|
<!--
|
|
49
51
|
todo: reinstate tag editing at session-time ?
|
|
@@ -101,7 +103,7 @@ import {
|
|
|
101
103
|
} from '@vue-skuilder/db';
|
|
102
104
|
import confetti from 'canvas-confetti';
|
|
103
105
|
|
|
104
|
-
import { StudySessionConfig } from './StudySession.types';
|
|
106
|
+
import { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './StudySession.types';
|
|
105
107
|
|
|
106
108
|
interface StudyRefs {
|
|
107
109
|
shadowWrapper: HTMLDivElement;
|
|
@@ -158,6 +160,14 @@ export default defineComponent({
|
|
|
158
160
|
type: Boolean,
|
|
159
161
|
default: false,
|
|
160
162
|
},
|
|
163
|
+
transitionName: {
|
|
164
|
+
type: String as PropType<CardTransitionPreset | string>,
|
|
165
|
+
default: 'component-fade',
|
|
166
|
+
},
|
|
167
|
+
transitionMode: {
|
|
168
|
+
type: String as PropType<CardTransitionMode>,
|
|
169
|
+
default: 'out-in',
|
|
170
|
+
},
|
|
161
171
|
},
|
|
162
172
|
|
|
163
173
|
emits: [
|
|
@@ -577,6 +587,24 @@ a {
|
|
|
577
587
|
text-decoration: underline;
|
|
578
588
|
}
|
|
579
589
|
|
|
590
|
+
.StudySession {
|
|
591
|
+
flex: 1;
|
|
592
|
+
display: flex;
|
|
593
|
+
flex-direction: column;
|
|
594
|
+
min-height: 0;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.card-transition-container {
|
|
598
|
+
position: relative;
|
|
599
|
+
overflow: hidden;
|
|
600
|
+
flex: 1;
|
|
601
|
+
min-height: 0;
|
|
602
|
+
display: flex;
|
|
603
|
+
flex-direction: column;
|
|
604
|
+
justify-content: center;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/* Preset: component-fade (default) — simple opacity crossfade, use with mode="out-in" */
|
|
580
608
|
.component-fade-enter-active,
|
|
581
609
|
.component-fade-leave-active {
|
|
582
610
|
transition: opacity 0.2s ease;
|
|
@@ -586,6 +614,67 @@ a {
|
|
|
586
614
|
opacity: 0;
|
|
587
615
|
}
|
|
588
616
|
|
|
617
|
+
/* Preset: card-slide — backOutLeft exit / slide-in-right enter, use with mode="default" */
|
|
618
|
+
.card-slide-leave-active {
|
|
619
|
+
animation: cardBackOutLeft 400ms cubic-bezier(0.4, 0, 0.7, 0.2) both;
|
|
620
|
+
position: absolute;
|
|
621
|
+
top: 50%;
|
|
622
|
+
left: 0;
|
|
623
|
+
right: 0;
|
|
624
|
+
will-change: transform, opacity;
|
|
625
|
+
pointer-events: none;
|
|
626
|
+
}
|
|
627
|
+
.card-slide-leave-active * {
|
|
628
|
+
animation-play-state: paused !important;
|
|
629
|
+
transition: none !important;
|
|
630
|
+
}
|
|
631
|
+
.card-slide-enter-active {
|
|
632
|
+
animation: cardSlideInRight 250ms ease-out 100ms both;
|
|
633
|
+
will-change: transform, opacity;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
@keyframes cardBackOutLeft {
|
|
637
|
+
0% {
|
|
638
|
+
transform: translateX(0) translateY(-50%) scale(1);
|
|
639
|
+
opacity: 1;
|
|
640
|
+
}
|
|
641
|
+
40% {
|
|
642
|
+
transform: translateX(0) translateY(-50%) scale(0.88);
|
|
643
|
+
opacity: 0.8;
|
|
644
|
+
}
|
|
645
|
+
100% {
|
|
646
|
+
transform: translateX(-100%) translateY(-50%) scale(0.88);
|
|
647
|
+
opacity: 0;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
@keyframes cardSlideInRight {
|
|
652
|
+
0% {
|
|
653
|
+
transform: translateX(60%);
|
|
654
|
+
opacity: 0;
|
|
655
|
+
}
|
|
656
|
+
100% {
|
|
657
|
+
transform: translateX(0);
|
|
658
|
+
opacity: 1;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
/* Preset: card-scale — scale-down exit / gentle overshoot enter, use with mode="out-in" */
|
|
663
|
+
.card-scale-leave-active {
|
|
664
|
+
transition: transform 150ms ease-in, opacity 150ms ease-in;
|
|
665
|
+
}
|
|
666
|
+
.card-scale-enter-active {
|
|
667
|
+
transition: transform 200ms cubic-bezier(0.34, 1.4, 0.64, 1), opacity 150ms ease-out;
|
|
668
|
+
}
|
|
669
|
+
.card-scale-leave-to {
|
|
670
|
+
transform: scale(0.92);
|
|
671
|
+
opacity: 0;
|
|
672
|
+
}
|
|
673
|
+
.card-scale-enter-from {
|
|
674
|
+
transform: scale(1.03);
|
|
675
|
+
opacity: 0;
|
|
676
|
+
}
|
|
677
|
+
|
|
589
678
|
@keyframes varFade {
|
|
590
679
|
0% {
|
|
591
680
|
box-shadow:
|
package/src/index.ts
CHANGED
|
@@ -36,7 +36,7 @@ export * from './composables/useEntitlements';
|
|
|
36
36
|
export { default as StudySession } from './components/StudySession.vue';
|
|
37
37
|
export { default as StudySessionTimer } from './components/StudySessionTimer.vue';
|
|
38
38
|
export { default as SessionControllerDebug } from './components/SessionControllerDebug.vue';
|
|
39
|
-
export type { StudySessionConfig } from './components/StudySession.types';
|
|
39
|
+
export type { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './components/StudySession.types';
|
|
40
40
|
|
|
41
41
|
/*
|
|
42
42
|
studentInputs
|