@intellectif/lk-react 15.0.0 → 16.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.
Files changed (129) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +3 -3
  3. package/dist/{WrittenResponse-BPbhERgk.d.cts → WrittenResponse-6tSj6U3G.d.cts} +1 -1
  4. package/dist/{WrittenResponse-ZAxLR_AU.d.ts → WrittenResponse-xJ7I_5yq.d.ts} +1 -1
  5. package/dist/{chunk-53YOZOGN.cjs → chunk-2S3MK4VX.cjs} +5 -5
  6. package/dist/{chunk-53YOZOGN.cjs.map → chunk-2S3MK4VX.cjs.map} +1 -1
  7. package/dist/{chunk-4H3JTX74.cjs → chunk-2TFNDHJ5.cjs} +13 -13
  8. package/dist/{chunk-4H3JTX74.cjs.map → chunk-2TFNDHJ5.cjs.map} +1 -1
  9. package/dist/{chunk-AF72QUBI.js → chunk-2XNCPLHU.js} +5 -5
  10. package/dist/{chunk-AF72QUBI.js.map → chunk-2XNCPLHU.js.map} +1 -1
  11. package/dist/{chunk-RT5FTHUU.js → chunk-3UXRX4KU.js} +5 -5
  12. package/dist/{chunk-RT5FTHUU.js.map → chunk-3UXRX4KU.js.map} +1 -1
  13. package/dist/{chunk-CE6OGJE6.js → chunk-5QHVYOME.js} +5 -5
  14. package/dist/{chunk-CE6OGJE6.js.map → chunk-5QHVYOME.js.map} +1 -1
  15. package/dist/{chunk-EKBEKDWO.cjs → chunk-B6S5ADHR.cjs} +13 -13
  16. package/dist/{chunk-EKBEKDWO.cjs.map → chunk-B6S5ADHR.cjs.map} +1 -1
  17. package/dist/{chunk-QM4AV6EG.js → chunk-BI547RIA.js} +4 -4
  18. package/dist/{chunk-QM4AV6EG.js.map → chunk-BI547RIA.js.map} +1 -1
  19. package/dist/{chunk-WKOV25NP.cjs → chunk-DFMBVA7D.cjs} +8 -8
  20. package/dist/{chunk-WKOV25NP.cjs.map → chunk-DFMBVA7D.cjs.map} +1 -1
  21. package/dist/{chunk-ZJMTHPHY.js → chunk-DKZWUIQD.js} +3 -3
  22. package/dist/{chunk-ZJMTHPHY.js.map → chunk-DKZWUIQD.js.map} +1 -1
  23. package/dist/{chunk-2HAEQDHQ.js → chunk-DVOPHC2Q.js} +755 -201
  24. package/dist/chunk-DVOPHC2Q.js.map +1 -0
  25. package/dist/{chunk-DQ3VVU5T.cjs → chunk-FZWWVJE4.cjs} +24 -24
  26. package/dist/{chunk-DQ3VVU5T.cjs.map → chunk-FZWWVJE4.cjs.map} +1 -1
  27. package/dist/{chunk-I2QGW4GD.js → chunk-GDMM2WEG.js} +11 -11
  28. package/dist/{chunk-I2QGW4GD.js.map → chunk-GDMM2WEG.js.map} +1 -1
  29. package/dist/{chunk-QEB6O6GU.js → chunk-GUPBIEUA.js} +6 -6
  30. package/dist/{chunk-QEB6O6GU.js.map → chunk-GUPBIEUA.js.map} +1 -1
  31. package/dist/{chunk-33BQNWAQ.js → chunk-IQI5I2X5.js} +5 -5
  32. package/dist/{chunk-33BQNWAQ.js.map → chunk-IQI5I2X5.js.map} +1 -1
  33. package/dist/{chunk-YWQH35VO.js → chunk-JPDR6TTA.js} +4 -4
  34. package/dist/{chunk-YWQH35VO.js.map → chunk-JPDR6TTA.js.map} +1 -1
  35. package/dist/{chunk-UCKA22ZJ.cjs → chunk-K63VPFOV.cjs} +9 -2
  36. package/dist/chunk-K63VPFOV.cjs.map +1 -0
  37. package/dist/{chunk-52GXJNQ3.js → chunk-KSAINXRG.js} +9 -2
  38. package/dist/chunk-KSAINXRG.js.map +1 -0
  39. package/dist/{chunk-ZH5WT2IE.cjs → chunk-ML6L4LJH.cjs} +25 -25
  40. package/dist/{chunk-ZH5WT2IE.cjs.map → chunk-ML6L4LJH.cjs.map} +1 -1
  41. package/dist/{chunk-Z6TVOAO5.cjs → chunk-MQAZJQRE.cjs} +9 -2
  42. package/dist/chunk-MQAZJQRE.cjs.map +1 -0
  43. package/dist/{chunk-UAYWLYFW.cjs → chunk-OO24JGYH.cjs} +18 -18
  44. package/dist/{chunk-UAYWLYFW.cjs.map → chunk-OO24JGYH.cjs.map} +1 -1
  45. package/dist/{chunk-26GQO5I2.cjs → chunk-PTJTC6A3.cjs} +12 -12
  46. package/dist/{chunk-26GQO5I2.cjs.map → chunk-PTJTC6A3.cjs.map} +1 -1
  47. package/dist/{chunk-DP3DM7FR.cjs → chunk-PXGJHZKJ.cjs} +6 -6
  48. package/dist/{chunk-DP3DM7FR.cjs.map → chunk-PXGJHZKJ.cjs.map} +1 -1
  49. package/dist/{chunk-XMJE34FY.cjs → chunk-RSQFGF5W.cjs} +13 -13
  50. package/dist/{chunk-XMJE34FY.cjs.map → chunk-RSQFGF5W.cjs.map} +1 -1
  51. package/dist/{chunk-FKGUKFC7.cjs → chunk-TRP5Z3XW.cjs} +5 -5
  52. package/dist/{chunk-FKGUKFC7.cjs.map → chunk-TRP5Z3XW.cjs.map} +1 -1
  53. package/dist/{chunk-EVBYEWHO.js → chunk-UHKZXOXD.js} +9 -2
  54. package/dist/chunk-UHKZXOXD.js.map +1 -0
  55. package/dist/{chunk-IE5ZNCWN.js → chunk-VC2MPB2Y.js} +5 -5
  56. package/dist/{chunk-IE5ZNCWN.js.map → chunk-VC2MPB2Y.js.map} +1 -1
  57. package/dist/{chunk-SRD4KVAP.cjs → chunk-WOYCT5M6.cjs} +764 -209
  58. package/dist/chunk-WOYCT5M6.cjs.map +1 -0
  59. package/dist/{chunk-H6I2JDNW.js → chunk-ZEDMFTKD.js} +10 -10
  60. package/dist/{chunk-H6I2JDNW.js.map → chunk-ZEDMFTKD.js.map} +1 -1
  61. package/dist/{chunk-HA3VRF6E.js → chunk-ZPCO3CEB.js} +3 -3
  62. package/dist/{chunk-HA3VRF6E.js.map → chunk-ZPCO3CEB.js.map} +1 -1
  63. package/dist/{chunk-L7NE7PR4.cjs → chunk-ZSY4VANQ.cjs} +13 -13
  64. package/dist/{chunk-L7NE7PR4.cjs.map → chunk-ZSY4VANQ.cjs.map} +1 -1
  65. package/dist/components/ActivityPreview.cjs +12 -12
  66. package/dist/components/ActivityPreview.d.cts +2 -2
  67. package/dist/components/ActivityPreview.d.ts +2 -2
  68. package/dist/components/ActivityPreview.js +11 -11
  69. package/dist/components/ActivitySequence.cjs +13 -13
  70. package/dist/components/ActivitySequence.d.cts +2 -2
  71. package/dist/components/ActivitySequence.d.ts +2 -2
  72. package/dist/components/ActivitySequence.js +12 -12
  73. package/dist/components/Dictation.cjs +5 -5
  74. package/dist/components/Dictation.d.cts +1 -1
  75. package/dist/components/Dictation.d.ts +1 -1
  76. package/dist/components/Dictation.js +4 -4
  77. package/dist/components/FillInTheBlanks.cjs +5 -5
  78. package/dist/components/FillInTheBlanks.d.cts +1 -1
  79. package/dist/components/FillInTheBlanks.d.ts +1 -1
  80. package/dist/components/FillInTheBlanks.js +4 -4
  81. package/dist/components/GapSelect.cjs +5 -5
  82. package/dist/components/GapSelect.d.cts +1 -1
  83. package/dist/components/GapSelect.d.ts +1 -1
  84. package/dist/components/GapSelect.js +4 -4
  85. package/dist/components/InteractiveVideo.cjs +15 -11
  86. package/dist/components/InteractiveVideo.d.cts +164 -7
  87. package/dist/components/InteractiveVideo.d.ts +164 -7
  88. package/dist/components/InteractiveVideo.js +10 -10
  89. package/dist/components/MultipleChoice.cjs +5 -5
  90. package/dist/components/MultipleChoice.d.cts +1 -1
  91. package/dist/components/MultipleChoice.d.ts +1 -1
  92. package/dist/components/MultipleChoice.js +4 -4
  93. package/dist/components/PronunciationFeedback.cjs +4 -4
  94. package/dist/components/PronunciationFeedback.d.cts +1 -1
  95. package/dist/components/PronunciationFeedback.d.ts +1 -1
  96. package/dist/components/PronunciationFeedback.js +3 -3
  97. package/dist/components/ReadAloud.cjs +6 -6
  98. package/dist/components/ReadAloud.d.cts +2 -2
  99. package/dist/components/ReadAloud.d.ts +2 -2
  100. package/dist/components/ReadAloud.js +5 -5
  101. package/dist/components/StimulusPanel.cjs +4 -4
  102. package/dist/components/StimulusPanel.d.cts +1 -1
  103. package/dist/components/StimulusPanel.d.ts +1 -1
  104. package/dist/components/StimulusPanel.js +3 -3
  105. package/dist/components/WrittenResponse.cjs +5 -5
  106. package/dist/components/WrittenResponse.d.cts +3 -3
  107. package/dist/components/WrittenResponse.d.ts +3 -3
  108. package/dist/components/WrittenResponse.js +4 -4
  109. package/dist/i18n/LkIntlProvider.cjs +7 -7
  110. package/dist/i18n/LkIntlProvider.d.cts +2 -2
  111. package/dist/i18n/LkIntlProvider.d.ts +2 -2
  112. package/dist/i18n/LkIntlProvider.js +1 -1
  113. package/dist/index.cjs +41 -37
  114. package/dist/index.d.cts +3 -3
  115. package/dist/index.d.ts +3 -3
  116. package/dist/index.js +15 -15
  117. package/dist/{strings-5588Q4Te.d.cts → strings-C6wM5aUQ.d.cts} +23 -2
  118. package/dist/{strings-D0IWcsUm.d.ts → strings-Cd_2F-Bw.d.ts} +23 -2
  119. package/dist/theme/ThemeProvider.cjs +6 -6
  120. package/dist/theme/ThemeProvider.js +1 -1
  121. package/dist/theme/defaults.css +7 -0
  122. package/dist/theme/skin.css +60 -6
  123. package/package.json +3 -3
  124. package/dist/chunk-2HAEQDHQ.js.map +0 -1
  125. package/dist/chunk-52GXJNQ3.js.map +0 -1
  126. package/dist/chunk-EVBYEWHO.js.map +0 -1
  127. package/dist/chunk-SRD4KVAP.cjs.map +0 -1
  128. package/dist/chunk-UCKA22ZJ.cjs.map +0 -1
  129. package/dist/chunk-Z6TVOAO5.cjs.map +0 -1
@@ -2101,11 +2101,19 @@
2101
2101
 
2102
2102
  /* ── Captions ──────────────────────────────────────────────────────────
2103
2103
  Drawn by the player, sized to the player (not the page), and lifted
2104
- clear of the controls while they show. */
2105
- .lk-iv-caption {
2104
+ clear of the controls while they show. One line, or two: the first
2105
+ language, and under it the second — smaller and in its own colour, so it
2106
+ differs by position and size as well as colour (WCAG 1.4.1). The
2107
+ container is what sits over the video and rises with the controls; the
2108
+ lines stack inside it and share its width. */
2109
+ .lk-iv-captions {
2106
2110
  z-index: 1;
2107
2111
  align-self: end;
2108
2112
  justify-self: center;
2113
+ display: flex;
2114
+ flex-direction: column;
2115
+ align-items: center;
2116
+ gap: var(--lk-iv-caption-gap);
2109
2117
  max-inline-size: min(88%, 42em);
2110
2118
  margin-block-end: max(16px, 4cqw);
2111
2119
  font-size: clamp(14px, 2.4cqw, 30px);
@@ -2115,22 +2123,30 @@
2115
2123
  transition: margin-block-end var(--lk-transition-base);
2116
2124
  }
2117
2125
 
2118
- .lk-iv-caption[data-size="small"] {
2126
+ .lk-iv-captions[data-size="small"] {
2119
2127
  font-size: clamp(12px, 1.9cqw, 24px);
2120
2128
  }
2121
2129
 
2122
- .lk-iv-caption[data-size="large"] {
2130
+ .lk-iv-captions[data-size="large"] {
2123
2131
  font-size: clamp(16px, 3.1cqw, 38px);
2124
2132
  }
2125
2133
 
2126
- .lk-iv[data-chrome="shown"] .lk-iv-caption {
2134
+ .lk-iv[data-chrome="shown"] .lk-iv-captions {
2127
2135
  margin-block-end: 84px;
2128
2136
  }
2129
2137
 
2138
+ .lk-iv-caption {
2139
+ max-inline-size: 100%;
2140
+ }
2141
+
2142
+ .lk-iv-caption[data-role="secondary"] {
2143
+ font-size: calc(var(--lk-iv-caption-secondary-scale) * 1em);
2144
+ }
2145
+
2130
2146
  .lk-iv-caption span {
2131
2147
  padding: 0.1em 0.4em;
2132
2148
  border-radius: 4px;
2133
- color: #fff;
2149
+ color: var(--lk-iv-caption-color);
2134
2150
  text-shadow:
2135
2151
  0 0 4px rgb(0 0 0 / 0.9),
2136
2152
  0 1px 2px #000;
@@ -2138,6 +2154,10 @@
2138
2154
  box-decoration-break: clone;
2139
2155
  }
2140
2156
 
2157
+ .lk-iv-caption[data-role="secondary"] span {
2158
+ color: var(--lk-iv-caption-secondary-color);
2159
+ }
2160
+
2141
2161
  .lk-iv-caption[data-background] span {
2142
2162
  background: rgb(0 0 0 / 0.75);
2143
2163
  text-shadow: none;
@@ -2855,6 +2875,13 @@
2855
2875
  color: var(--lk-color-text-muted);
2856
2876
  }
2857
2877
 
2878
+ /* Why Finish waits: an answer is still being stored or graded. */
2879
+ .lk-iv-end-pending {
2880
+ margin: 0;
2881
+ color: var(--lk-color-text-muted);
2882
+ font-size: var(--lk-font-size-sm);
2883
+ }
2884
+
2858
2885
  .lk-iv-end-list,
2859
2886
  .lk-iv-contents {
2860
2887
  margin: 0;
@@ -3062,6 +3089,24 @@
3062
3089
  color: inherit;
3063
3090
  }
3064
3091
 
3092
+ /* With a second language chosen, its words sit under the first language's
3093
+ in each row: smaller, set in from the start, and in the theme's muted
3094
+ text colour. Not the caption colour — that one is chosen for the dark
3095
+ caption box over the video, and on this panel it would fail contrast. */
3096
+ .lk-iv-line-text {
3097
+ display: flex;
3098
+ flex-direction: column;
3099
+ gap: 2px;
3100
+ min-inline-size: 0;
3101
+ }
3102
+
3103
+ .lk-iv-line-secondary {
3104
+ padding-inline-start: 8px;
3105
+ border-inline-start: 2px solid var(--lk-color-border);
3106
+ color: var(--lk-color-text-muted);
3107
+ font-size: calc(var(--lk-iv-caption-secondary-scale) * 1em);
3108
+ }
3109
+
3065
3110
  .lk-iv-empty {
3066
3111
  margin: 0;
3067
3112
  padding: var(--lk-spacing-md);
@@ -3069,6 +3114,15 @@
3069
3114
  font-size: var(--lk-font-size-sm);
3070
3115
  }
3071
3116
 
3117
+ /* A host question's popovers (`portalContainer`). Out of the flow, so it
3118
+ adds no gap to the player, and left at its static place in the shell,
3119
+ which is inside every scroller the player is; last in the shell and
3120
+ lifted, so it paints above the stage and the quiz on it. */
3121
+ .lk-iv-portal {
3122
+ position: absolute;
3123
+ z-index: 1;
3124
+ }
3125
+
3072
3126
  .lk-iv-live {
3073
3127
  position: absolute;
3074
3128
  inline-size: 1px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intellectif/lk-react",
3
- "version": "15.0.0",
3
+ "version": "16.1.0",
4
4
  "description": "Accessible React 19 assessment components — multiple choice, fill-in-the-blanks, written response — with a resumable exam/review pager, theming, and xAPI delivery.",
5
5
  "keywords": [
6
6
  "react",
@@ -217,7 +217,7 @@
217
217
  "peerDependencies": {
218
218
  "react": "^19",
219
219
  "react-dom": "^19",
220
- "@intellectif/lk-core": "^0.15.0"
220
+ "@intellectif/lk-core": "^0.16.0"
221
221
  },
222
222
  "devDependencies": {
223
223
  "@axe-core/react": "^4.10.0",
@@ -236,7 +236,7 @@
236
236
  "tsup": "^8.3.0",
237
237
  "vitest": "^4.1.6",
238
238
  "vitest-axe": "^0.1.0",
239
- "@intellectif/lk-core": "0.15.0"
239
+ "@intellectif/lk-core": "0.16.0"
240
240
  },
241
241
  "license": "MIT",
242
242
  "engines": {