@nxgt/material 3.55.0 → 3.57.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 (119) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +8 -4
  3. package/dist/{async-slice-yhXT9cml.js → async-slice-B3RMgJUn.js} +2 -2
  4. package/dist/{button-CD7f4KFL.js → button-hnUZpzYu.js} +1 -1
  5. package/dist/charts.js +3 -3
  6. package/dist/{chip-Cl7Wm8Pn.js → chip-kplPa8ZV.js} +2 -2
  7. package/dist/{code-editor-tOhXy6Qo.js → code-editor-Ba61Cd-g.js} +6 -6
  8. package/dist/code-editor.js +5 -5
  9. package/dist/{code-language-items-BxlY6onk.js → code-language-items-CsDC4Ky4.js} +2 -2
  10. package/dist/components/components.css +4 -0
  11. package/dist/components/ui/display/secret-card/secret-card.css +65 -0
  12. package/dist/components/ui/display/vote-tally/vote-tally.css +94 -0
  13. package/dist/{components-B58ZWZYR.js → components-BgckuX2C.js} +16870 -16252
  14. package/dist/components.js +26 -26
  15. package/dist/{dialog-BzfHcRo6.js → dialog-DS8O4Kkb.js} +4 -4
  16. package/dist/dnd.js +1 -1
  17. package/dist/{dropdown-menu-DUZF4xAJ.js → dropdown-menu-CvVQJpsn.js} +1 -1
  18. package/dist/editor.js +9 -9
  19. package/dist/{empty-state-D9o2id1p.js → empty-state-4gmbCkcw.js} +2 -2
  20. package/dist/{escape-owner-BYs2_7T5.js → escape-owner-BJvicDmr.js} +1 -1
  21. package/dist/{field-blur-r1tHwqdF.js → field-blur-Cnjk0o9A.js} +1 -1
  22. package/dist/{field-blur-context-ZsK8OTNg.js → field-blur-context-CYlx9KnB.js} +1 -1
  23. package/dist/hooks.js +28 -28
  24. package/dist/{hover-card-NfF8taLj.js → hover-card-DW4XnExA.js} +2 -2
  25. package/dist/{i18n-provider-TQAEPlJ5.js → i18n-provider-DBr59j1p.js} +1 -1
  26. package/dist/i18n.js +5 -5
  27. package/dist/{icon-badge-BlaY_a-P.js → icon-badge-4FMy66AC.js} +3 -3
  28. package/dist/{icon-button-B8tdlP6R.js → icon-button-QF7smCoV.js} +1 -1
  29. package/dist/lib/components/ui/actions/link/link.d.ts +8 -0
  30. package/dist/lib/components/ui/collections/data-table/partials/data-table-page-control.d.ts +1 -1
  31. package/dist/lib/components/ui/collections/data-table/partials/data-table-row.d.ts +1 -1
  32. package/dist/lib/components/ui/collections/data-table/partials/layouts/data-table-card.d.ts +1 -1
  33. package/dist/lib/components/ui/collections/server-table/partials/server-table-past-end.d.ts +1 -1
  34. package/dist/lib/components/ui/display/index.d.ts +2 -0
  35. package/dist/lib/components/ui/display/list-tile/partials/list-tile-line.d.ts +1 -1
  36. package/dist/lib/components/ui/display/period-cards/period-cards.d.ts +1 -1
  37. package/dist/lib/components/ui/display/secret-card/index.d.ts +2 -0
  38. package/dist/lib/components/ui/display/secret-card/secret-card.d.ts +11 -0
  39. package/dist/lib/components/ui/display/secret-card/types.d.ts +49 -0
  40. package/dist/lib/components/ui/display/secret-card/use-secret-card.d.ts +20 -0
  41. package/dist/lib/components/ui/display/vote-tally/announcer.d.ts +11 -0
  42. package/dist/lib/components/ui/display/vote-tally/index.d.ts +2 -0
  43. package/dist/lib/components/ui/display/vote-tally/partials/tally-bar.d.ts +8 -0
  44. package/dist/lib/components/ui/display/vote-tally/partials/tally-row.d.ts +9 -0
  45. package/dist/lib/components/ui/display/vote-tally/partials/tally-voters.d.ts +9 -0
  46. package/dist/lib/components/ui/display/vote-tally/types.d.ts +73 -0
  47. package/dist/lib/components/ui/display/vote-tally/use-announcement.d.ts +7 -0
  48. package/dist/lib/components/ui/display/vote-tally/use-tally-summary.d.ts +3 -0
  49. package/dist/lib/components/ui/display/vote-tally/vote-tally.d.ts +10 -0
  50. package/dist/lib/components/ui/display/vote-tally/vote-tally.utils.d.ts +18 -0
  51. package/dist/lib/components/ui/feedback/countdown-timer/countdown-ring.d.ts +7 -0
  52. package/dist/lib/components/ui/feedback/countdown-timer/countdown-timer.d.ts +7 -1
  53. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  54. package/dist/lib/components/ui/layout/account-menu/account-menu.d.ts +1 -1
  55. package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +1 -1
  56. package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +1 -1
  57. package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +1 -1
  58. package/dist/lib/components/ui/layout/pager/pager.d.ts +1 -1
  59. package/dist/lib/components/ui/layout/see-also/see-also.d.ts +1 -1
  60. package/dist/lib/components/ui/layout/toc/toc.d.ts +1 -1
  61. package/dist/lib/components/ui/primitives/index.d.ts +1 -0
  62. package/dist/lib/components/ui/primitives/link/index.d.ts +2 -0
  63. package/dist/lib/components/ui/primitives/link/link-component-provider.d.ts +26 -0
  64. package/dist/lib/components/ui/widgets/education/index.d.ts +1 -0
  65. package/dist/lib/components/ui/widgets/education/navigator/index.d.ts +2 -0
  66. package/dist/lib/components/ui/widgets/education/navigator/partials/navigator-item.d.ts +10 -0
  67. package/dist/lib/components/ui/widgets/education/navigator/question-navigator.d.ts +27 -0
  68. package/dist/lib/components/ui/widgets/education/questions/index.d.ts +1 -1
  69. package/dist/lib/components/ui/widgets/education/questions/partials/question-media.d.ts +5 -0
  70. package/dist/lib/components/ui/widgets/education/questions/partials/question-verdict.d.ts +12 -0
  71. package/dist/lib/components/ui/widgets/education/questions/question-options.d.ts +2 -2
  72. package/dist/lib/components/ui/widgets/education/questions/question-text.d.ts +1 -1
  73. package/dist/lib/components/ui/widgets/education/questions/question.d.ts +1 -1
  74. package/dist/lib/components/ui/widgets/education/questions/types.d.ts +33 -1
  75. package/dist/lib/hooks/index.d.ts +1 -0
  76. package/dist/lib/hooks/use-countdown.d.ts +18 -0
  77. package/dist/lib/i18n/resources/en/en.d.ts +32 -0
  78. package/dist/lib/i18n/resources/en/material.json.d.ts +33 -1
  79. package/dist/lib/i18n/resources/fr/fr.d.ts +32 -0
  80. package/dist/lib/i18n/resources/fr/material.json.d.ts +33 -1
  81. package/dist/lib/i18n/resources/resources.d.ts +64 -0
  82. package/dist/lib/i18n/translator.d.ts +1 -1
  83. package/dist/lib.js +1 -1
  84. package/dist/main.js +43 -43
  85. package/dist/map.js +8 -8
  86. package/dist/material.css +1 -1
  87. package/dist/pdf-reader.js +1 -1
  88. package/dist/print.js +2 -2
  89. package/dist/{public-tWgM204K.js → public-DVZJVdxD.js} +9 -9
  90. package/dist/{rich-code-block-0OcsqURY.js → rich-code-block-DL5-9JIi.js} +5 -5
  91. package/dist/{sortable-provider-DzFAlPU_.js → sortable-provider-DrpBwx75.js} +2 -2
  92. package/dist/{spinner-GKZcQmrR.js → spinner-D4XGdse6.js} +1 -1
  93. package/dist/{stored-language-B39mABN7.js → stored-language-C89mti-z.js} +66 -2
  94. package/dist/theme-picker.js +2 -2
  95. package/dist/{theme-toggle-C8idk_jQ.js → theme-toggle-BFhqLmgx.js} +1 -1
  96. package/dist/{toolbar-items-BrJI-BCs.js → toolbar-items-SZ5pyAFz.js} +4 -4
  97. package/dist/{translate-material-hUA-UAP6.js → translate-material-BkqnImND.js} +2 -2
  98. package/dist/{translator-1ql2sxrx.js → translator-B5fId5Rw.js} +1 -1
  99. package/dist/{use-chat-composer-DQpb8ZXV.js → use-chat-composer-BG5B4DGB.js} +16 -16
  100. package/dist/{use-heading-spy-vlPOI1Aj.js → use-heading-spy-51GQw8tH.js} +32 -5
  101. package/dist/{use-material-translation-B1p5y3s9.js → use-material-translation-BQOr4Oks.js} +2 -2
  102. package/docs/components/README.md +1 -1
  103. package/docs/components/buttons-and-actions.md +1 -0
  104. package/docs/components/data-display.md +147 -2
  105. package/docs/components/data-table-filter-and-lists.md +3 -3
  106. package/docs/components/feedback-and-status.md +12 -5
  107. package/docs/components/navigation-and-layout.md +4 -4
  108. package/docs/components/primitives.md +62 -0
  109. package/docs/components/rich-widgets.md +51 -0
  110. package/docs/components/selection-and-choice.md +1 -1
  111. package/docs/guides/app-shell.md +2 -2
  112. package/docs/guides/helpers.md +40 -0
  113. package/docs/previews/data-display-secretcard.webp +0 -0
  114. package/docs/previews/data-display-votetally.webp +0 -0
  115. package/lib/components/components.css +4 -0
  116. package/lib/components/ui/display/secret-card/secret-card.css +65 -0
  117. package/lib/components/ui/display/vote-tally/vote-tally.css +94 -0
  118. package/package.json +1 -1
  119. package/dist/lib/components/ui/feedback/countdown-timer/use-countdown.d.ts +0 -6
@@ -0,0 +1,2 @@
1
+ export type { QuestionNavigatorProps } from './question-navigator.js';
2
+ export { QuestionNavigator } from './question-navigator.js';
@@ -0,0 +1,10 @@
1
+ export type NavigatorItemProps = {
2
+ n: number;
3
+ current: boolean;
4
+ answered: boolean;
5
+ flagged: boolean;
6
+ onSelect?: (n: number) => void;
7
+ href?: string;
8
+ };
9
+ /** One numbered target: a link, a button or a plain mark. */
10
+ export declare function NavigatorItem({ n, current, answered, flagged, onSelect, href, }: NavigatorItemProps): import("react").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { ComponentProps } from 'react';
2
+ type NumberSet = ReadonlyArray<number> | ReadonlySet<number>;
3
+ export type QuestionNavigatorProps = {
4
+ /** How many questions. */
5
+ count: number;
6
+ /** The current question, from 1. */
7
+ current: number;
8
+ /** The answered questions, from 1. */
9
+ answered?: NumberSet;
10
+ /** The questions marked for review, from 1. */
11
+ flagged?: NumberSet;
12
+ /** Makes each number a button; receives the question number, from 1. */
13
+ onSelect?: (n: number) => void;
14
+ /** Makes each number a link (a URL-driven player); wins over `onSelect`. */
15
+ getHref?: (n: number) => string;
16
+ /** The list's name; "Questions" by default. */
17
+ label?: string;
18
+ } & Omit<ComponentProps<'nav'>, 'onSelect'>;
19
+ /**
20
+ * The numbered questions of a quiz or exam: jump to one, see the current one
21
+ * and which are answered or flagged. One scrolling row that keeps the current
22
+ * number in view, so 20 or 100 questions stay compact on a 360px phone. Each
23
+ * target is at least 44px; answered and flagged show an icon and are named in
24
+ * the accessible label, never by colour alone. Questions are numbered from 1.
25
+ */
26
+ export declare function QuestionNavigator({ count, current, answered, flagged, onSelect, getHref, label, className, ...props }: QuestionNavigatorProps): import("react").JSX.Element;
27
+ export {};
@@ -1,3 +1,3 @@
1
1
  export { QuestionCard } from './question.js';
2
2
  export { answerParts, isAnswerCorrect, isAnswered, parseAnswerNumber, } from './question.utils.js';
3
- export type { Question, QuestionAnswer, QuestionImage, QuestionKind, QuestionOption, QuestionProps, } from './types.js';
3
+ export type { Question, QuestionAnswer, QuestionImage, QuestionKind, QuestionMedia, QuestionMediaKind, QuestionOption, QuestionPoints, QuestionProps, QuestionVerdict, } from './types.js';
@@ -0,0 +1,5 @@
1
+ import { QuestionMedia as Media } from '../types.js';
2
+ /** What goes with the prompt: a picture, an audio clip or a document link. */
3
+ export declare function QuestionMedia({ media }: {
4
+ media: Media;
5
+ }): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { Question, QuestionPoints, QuestionVerdict as Verdict } from '../types.js';
2
+ /**
3
+ * The verdict the server gave, as given: the word and an icon (never colour
4
+ * alone), the points, the grader's remark, the correct answer when one is
5
+ * passed and the answer was wrong, and the explanation.
6
+ */
7
+ export declare function QuestionVerdict({ question, verdict, points, feedback, }: {
8
+ question: Question;
9
+ verdict: Verdict;
10
+ points?: QuestionPoints;
11
+ feedback?: string;
12
+ }): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { Question, QuestionOption, QuestionProps } from './types.js';
2
- type QuestionOptionsProps = Pick<QuestionProps, 'revealed' | 'disabled' | 'density' | 'showShortcuts'> & {
2
+ type QuestionOptionsProps = Pick<QuestionProps, 'revealed' | 'verdict' | 'disabled' | 'density' | 'showShortcuts'> & {
3
3
  question: Question;
4
4
  options: QuestionOption[];
5
5
  value: string[];
@@ -7,5 +7,5 @@ type QuestionOptionsProps = Pick<QuestionProps, 'revealed' | 'disabled' | 'densi
7
7
  labelledBy?: string;
8
8
  onToggle: (id: string) => void;
9
9
  };
10
- export declare function QuestionOptions({ question, options, value, multiple, revealed, disabled, density, showShortcuts, labelledBy, onToggle, }: QuestionOptionsProps): import("react").JSX.Element;
10
+ export declare function QuestionOptions({ question, options, value, multiple, revealed, verdict, disabled, density, showShortcuts, labelledBy, onToggle, }: QuestionOptionsProps): import("react").JSX.Element;
11
11
  export {};
@@ -1,3 +1,3 @@
1
1
  import { QuestionProps } from './types.js';
2
2
  /** A typed answer: `text`, or `number` (a decimal keypad, an optional unit). */
3
- export declare function QuestionText({ question, value, onValueChange, revealed, disabled, showFeedback, }: QuestionProps): import("react").JSX.Element;
3
+ export declare function QuestionText({ question, value, onValueChange, revealed, verdict, disabled, showFeedback, }: QuestionProps): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { QuestionProps } from './types.js';
2
- export declare function QuestionCard({ question, value, onValueChange, revealed, disabled, className, variant, density, showShortcuts, number, showFeedback, }: QuestionProps): import("react").JSX.Element;
2
+ export declare function QuestionCard({ question, value, onValueChange, revealed: revealedProp, verdict, points, feedback, disabled, className, variant, density, showShortcuts, number, showFeedback, }: QuestionProps): import("react").JSX.Element;
@@ -4,6 +4,27 @@ export type QuestionImage = {
4
4
  src: string;
5
5
  alt?: string;
6
6
  };
7
+ /** What kind of file a question's `media` is. */
8
+ export type QuestionMediaKind = 'image' | 'audio' | 'document';
9
+ /**
10
+ * A file shown with the prompt: a picture (the default), an audio clip
11
+ * (`AudioPlayer`) or a document link (`FilePreview`). The kind comes from
12
+ * `kind`, else from the MIME `type`, else it is an image.
13
+ */
14
+ export type QuestionMedia = QuestionImage & {
15
+ kind?: QuestionMediaKind;
16
+ /** MIME type (`audio/mpeg`, `application/pdf`): picks the kind and the player. */
17
+ type?: string;
18
+ /** The audio's title or the document's file name, its text alternative; `alt` is the fallback. */
19
+ name?: string;
20
+ };
21
+ /** The server's verdict on an answer: shown as given, never recomputed. */
22
+ export type QuestionVerdict = 'correct' | 'incorrect' | 'pending';
23
+ /** Points earned out of the points the question is worth. */
24
+ export type QuestionPoints = {
25
+ awarded: number;
26
+ possible: number;
27
+ };
7
28
  export type QuestionOption = {
8
29
  id: string;
9
30
  label: ReactNode;
@@ -25,7 +46,7 @@ export type Question = {
25
46
  placeholder?: string;
26
47
  exact?: boolean;
27
48
  /** A picture shown with the prompt; give it an `alt` unless decorative. */
28
- media?: QuestionImage;
49
+ media?: QuestionMedia;
29
50
  /** Shown on demand, behind a "Show hint" button. */
30
51
  hint?: string;
31
52
  /** `number`: how far off an answer may be and still count (default 0). */
@@ -38,6 +59,17 @@ export type QuestionProps = {
38
59
  value?: QuestionAnswer;
39
60
  onValueChange?: (value: QuestionAnswer) => void;
40
61
  revealed?: boolean;
62
+ /**
63
+ * The verdict the server gave, shown as given (no comparison with
64
+ * `question.correct` in the browser). It reveals the card; `pending` is a
65
+ * free answer still waiting for a grader. `question.correct` may still
66
+ * be passed to highlight the correct choices.
67
+ */
68
+ verdict?: QuestionVerdict;
69
+ /** Points earned, shown in the verdict banner (needs `verdict`). */
70
+ points?: QuestionPoints;
71
+ /** A grader's remark, shown in the verdict banner (needs `verdict`). */
72
+ feedback?: string;
41
73
  disabled?: boolean;
42
74
  className?: string;
43
75
  /** `card` (the default) is framed; `plain` sits inside another surface. */
@@ -1,5 +1,6 @@
1
1
  export * from './resolve-theme.js';
2
2
  export * from './use-allowed-transitions.js';
3
+ export * from './use-countdown.js';
3
4
  export { useCspNonce } from './use-csp-nonce.js';
4
5
  export * from './use-focus-on-mount.js';
5
6
  export * from './use-formatters.js';
@@ -0,0 +1,18 @@
1
+ export type UseCountdownOptions = {
2
+ /** Holds the clock where it is; it carries on from there when it turns false. */
3
+ paused?: boolean;
4
+ /** Runs once, when the clock reaches zero. */
5
+ onExpire?: () => void;
6
+ /**
7
+ * Starts the clock over from `duration` whenever it changes, even for the
8
+ * same duration: a second refusal that answers "retry in 30 s" again.
9
+ */
10
+ key?: string | number;
11
+ };
12
+ /**
13
+ * Seconds left of `duration`, ticking on the client only (the server and the
14
+ * first render show the full time). Pausing keeps what is left; a new
15
+ * `duration`, or a new `key`, starts over. `onExpire` runs once, when it
16
+ * reaches zero.
17
+ */
18
+ export declare function useCountdown(duration: number, { paused, onExpire, key }?: UseCountdownOptions): number;
@@ -333,6 +333,10 @@ export declare const en: {
333
333
  correct: string;
334
334
  incorrect: string;
335
335
  unanswered: string;
336
+ pending: string;
337
+ "points-of": string;
338
+ audio: string;
339
+ document: string;
336
340
  "correct-answer": string;
337
341
  "your-answer": string;
338
342
  streak: string;
@@ -352,6 +356,14 @@ export declare const en: {
352
356
  "retry-wrong": string;
353
357
  retrying: string;
354
358
  };
359
+ "question-navigator": {
360
+ label: string;
361
+ item: string;
362
+ answered: string;
363
+ unanswered: string;
364
+ flagged: string;
365
+ current: string;
366
+ };
355
367
  "step-dots": {
356
368
  label: string;
357
369
  step: string;
@@ -365,6 +377,7 @@ export declare const en: {
365
377
  label: string;
366
378
  left: string;
367
379
  expired: string;
380
+ warning: string;
368
381
  };
369
382
  "option-tile": {
370
383
  correct: string;
@@ -1380,9 +1393,28 @@ export declare const en: {
1380
1393
  busy: string;
1381
1394
  active: string;
1382
1395
  };
1396
+ "vote-tally": {
1397
+ votes: string;
1398
+ share: string;
1399
+ leader: string;
1400
+ tie: string;
1401
+ selected: string;
1402
+ empty: string;
1403
+ more: string;
1404
+ "voters-of": string;
1405
+ abstained: string;
1406
+ cast: string;
1407
+ leads: string;
1408
+ "tied-between": string;
1409
+ };
1383
1410
  "seat-ring": {
1384
1411
  empty: string;
1385
1412
  };
1413
+ "secret-card": {
1414
+ reveal: string;
1415
+ revealed: string;
1416
+ hidden: string;
1417
+ };
1386
1418
  "country-field": {
1387
1419
  placeholder: string;
1388
1420
  };
@@ -323,6 +323,10 @@ declare const _default: {
323
323
  "correct": "Correct!",
324
324
  "incorrect": "Not quite",
325
325
  "unanswered": "Not answered",
326
+ "pending": "Awaiting grading",
327
+ "points-of": "{awarded} / {possible} points",
328
+ "audio": "Audio for this question",
329
+ "document": "Document for this question",
326
330
  "correct-answer": "Correct answer: {answer}",
327
331
  "your-answer": "Your answer: {answer}",
328
332
  "streak": "{count} in a row",
@@ -342,6 +346,14 @@ declare const _default: {
342
346
  "retry-wrong": "{count, plural, one {Retry # question} other {Retry # questions}}",
343
347
  "retrying": "Retry round: {count, plural, one {# question} other {# questions}}"
344
348
  },
349
+ "question-navigator": {
350
+ "label": "Questions",
351
+ "item": "Question {number}",
352
+ "answered": "answered",
353
+ "unanswered": "not answered",
354
+ "flagged": "flagged",
355
+ "current": "current"
356
+ },
345
357
  "step-dots": {
346
358
  "label": "Progress",
347
359
  "step": "Step {current} of {total}",
@@ -354,7 +366,8 @@ declare const _default: {
354
366
  "countdown-timer": {
355
367
  "label": "Time remaining",
356
368
  "left": "{time} left",
357
- "expired": "Time is up"
369
+ "expired": "Time is up",
370
+ "warning": "Little time left"
358
371
  },
359
372
  "option-tile": {
360
373
  "correct": "correct answer",
@@ -1370,9 +1383,28 @@ declare const _default: {
1370
1383
  "busy": "Busy",
1371
1384
  "active": "Active"
1372
1385
  },
1386
+ "vote-tally": {
1387
+ "votes": "{count, plural, one {# vote} other {# votes}}",
1388
+ "share": "{percent}%",
1389
+ "leader": "Leader",
1390
+ "tie": "Tie",
1391
+ "selected": "Your vote",
1392
+ "empty": "No votes yet",
1393
+ "more": "+{count} more",
1394
+ "voters-of": "Voters for {label}",
1395
+ "abstained": "{count, plural, one {# abstention} other {# abstentions}}",
1396
+ "cast": "{count, plural, one {# vote cast} other {# votes cast}}",
1397
+ "leads": "{names} leads with {votes}",
1398
+ "tied-between": "Tie between {names}, {votes} each"
1399
+ },
1373
1400
  "seat-ring": {
1374
1401
  "empty": "Empty seat"
1375
1402
  },
1403
+ "secret-card": {
1404
+ "reveal": "Show secret",
1405
+ "revealed": "Secret revealed",
1406
+ "hidden": "Secret hidden"
1407
+ },
1376
1408
  "country-field": {
1377
1409
  "placeholder": "Country"
1378
1410
  },
@@ -333,6 +333,10 @@ export declare const fr: {
333
333
  correct: string;
334
334
  incorrect: string;
335
335
  unanswered: string;
336
+ pending: string;
337
+ "points-of": string;
338
+ audio: string;
339
+ document: string;
336
340
  "correct-answer": string;
337
341
  "your-answer": string;
338
342
  streak: string;
@@ -352,6 +356,14 @@ export declare const fr: {
352
356
  "retry-wrong": string;
353
357
  retrying: string;
354
358
  };
359
+ "question-navigator": {
360
+ label: string;
361
+ item: string;
362
+ answered: string;
363
+ unanswered: string;
364
+ flagged: string;
365
+ current: string;
366
+ };
355
367
  "step-dots": {
356
368
  label: string;
357
369
  step: string;
@@ -365,6 +377,7 @@ export declare const fr: {
365
377
  label: string;
366
378
  left: string;
367
379
  expired: string;
380
+ warning: string;
368
381
  };
369
382
  "option-tile": {
370
383
  correct: string;
@@ -1380,9 +1393,28 @@ export declare const fr: {
1380
1393
  busy: string;
1381
1394
  active: string;
1382
1395
  };
1396
+ "vote-tally": {
1397
+ votes: string;
1398
+ share: string;
1399
+ leader: string;
1400
+ tie: string;
1401
+ selected: string;
1402
+ empty: string;
1403
+ more: string;
1404
+ "voters-of": string;
1405
+ abstained: string;
1406
+ cast: string;
1407
+ leads: string;
1408
+ "tied-between": string;
1409
+ };
1383
1410
  "seat-ring": {
1384
1411
  empty: string;
1385
1412
  };
1413
+ "secret-card": {
1414
+ reveal: string;
1415
+ revealed: string;
1416
+ hidden: string;
1417
+ };
1386
1418
  "country-field": {
1387
1419
  placeholder: string;
1388
1420
  };
@@ -323,6 +323,10 @@ declare const _default: {
323
323
  "correct": "Bonne réponse !",
324
324
  "incorrect": "Pas tout à fait",
325
325
  "unanswered": "Sans réponse",
326
+ "pending": "En attente de correction",
327
+ "points-of": "{awarded} / {possible} points",
328
+ "audio": "Audio de cette question",
329
+ "document": "Document de cette question",
326
330
  "correct-answer": "Bonne réponse : {answer}",
327
331
  "your-answer": "Votre réponse : {answer}",
328
332
  "streak": "{count} d’affilée",
@@ -342,6 +346,14 @@ declare const _default: {
342
346
  "retry-wrong": "{count, plural, one {Refaire # question} other {Refaire # questions}}",
343
347
  "retrying": "Nouvel essai : {count, plural, one {# question} other {# questions}}"
344
348
  },
349
+ "question-navigator": {
350
+ "label": "Questions",
351
+ "item": "Question {number}",
352
+ "answered": "répondue",
353
+ "unanswered": "sans réponse",
354
+ "flagged": "marquée",
355
+ "current": "en cours"
356
+ },
345
357
  "step-dots": {
346
358
  "label": "Progression",
347
359
  "step": "Étape {current} sur {total}",
@@ -354,7 +366,8 @@ declare const _default: {
354
366
  "countdown-timer": {
355
367
  "label": "Temps restant",
356
368
  "left": "Plus que {time}",
357
- "expired": "Temps écoulé"
369
+ "expired": "Temps écoulé",
370
+ "warning": "Il reste peu de temps"
358
371
  },
359
372
  "option-tile": {
360
373
  "correct": "bonne réponse",
@@ -1370,9 +1383,28 @@ declare const _default: {
1370
1383
  "busy": "Occupé",
1371
1384
  "active": "Actif"
1372
1385
  },
1386
+ "vote-tally": {
1387
+ "votes": "{count, plural, one {# vote} other {# votes}}",
1388
+ "share": "{percent} %",
1389
+ "leader": "En tête",
1390
+ "tie": "Égalité",
1391
+ "selected": "Votre vote",
1392
+ "empty": "Aucun vote pour l'instant",
1393
+ "more": "+{count} de plus",
1394
+ "voters-of": "Votants pour {label}",
1395
+ "abstained": "{count, plural, one {# abstention} other {# abstentions}}",
1396
+ "cast": "{count, plural, one {# vote exprimé} other {# votes exprimés}}",
1397
+ "leads": "{names} est en tête avec {votes}",
1398
+ "tied-between": "Égalité entre {names}, {votes} chacun"
1399
+ },
1373
1400
  "seat-ring": {
1374
1401
  "empty": "Place libre"
1375
1402
  },
1403
+ "secret-card": {
1404
+ "reveal": "Afficher le secret",
1405
+ "revealed": "Secret révélé",
1406
+ "hidden": "Secret masqué"
1407
+ },
1376
1408
  "country-field": {
1377
1409
  "placeholder": "Pays"
1378
1410
  },
@@ -331,6 +331,10 @@ export declare const resources: {
331
331
  correct: string;
332
332
  incorrect: string;
333
333
  unanswered: string;
334
+ pending: string;
335
+ "points-of": string;
336
+ audio: string;
337
+ document: string;
334
338
  "correct-answer": string;
335
339
  "your-answer": string;
336
340
  streak: string;
@@ -350,6 +354,14 @@ export declare const resources: {
350
354
  "retry-wrong": string;
351
355
  retrying: string;
352
356
  };
357
+ "question-navigator": {
358
+ label: string;
359
+ item: string;
360
+ answered: string;
361
+ unanswered: string;
362
+ flagged: string;
363
+ current: string;
364
+ };
353
365
  "step-dots": {
354
366
  label: string;
355
367
  step: string;
@@ -363,6 +375,7 @@ export declare const resources: {
363
375
  label: string;
364
376
  left: string;
365
377
  expired: string;
378
+ warning: string;
366
379
  };
367
380
  "option-tile": {
368
381
  correct: string;
@@ -1378,9 +1391,28 @@ export declare const resources: {
1378
1391
  busy: string;
1379
1392
  active: string;
1380
1393
  };
1394
+ "vote-tally": {
1395
+ votes: string;
1396
+ share: string;
1397
+ leader: string;
1398
+ tie: string;
1399
+ selected: string;
1400
+ empty: string;
1401
+ more: string;
1402
+ "voters-of": string;
1403
+ abstained: string;
1404
+ cast: string;
1405
+ leads: string;
1406
+ "tied-between": string;
1407
+ };
1381
1408
  "seat-ring": {
1382
1409
  empty: string;
1383
1410
  };
1411
+ "secret-card": {
1412
+ reveal: string;
1413
+ revealed: string;
1414
+ hidden: string;
1415
+ };
1384
1416
  "country-field": {
1385
1417
  placeholder: string;
1386
1418
  };
@@ -3242,6 +3274,10 @@ export declare const resources: {
3242
3274
  correct: string;
3243
3275
  incorrect: string;
3244
3276
  unanswered: string;
3277
+ pending: string;
3278
+ "points-of": string;
3279
+ audio: string;
3280
+ document: string;
3245
3281
  "correct-answer": string;
3246
3282
  "your-answer": string;
3247
3283
  streak: string;
@@ -3261,6 +3297,14 @@ export declare const resources: {
3261
3297
  "retry-wrong": string;
3262
3298
  retrying: string;
3263
3299
  };
3300
+ "question-navigator": {
3301
+ label: string;
3302
+ item: string;
3303
+ answered: string;
3304
+ unanswered: string;
3305
+ flagged: string;
3306
+ current: string;
3307
+ };
3264
3308
  "step-dots": {
3265
3309
  label: string;
3266
3310
  step: string;
@@ -3274,6 +3318,7 @@ export declare const resources: {
3274
3318
  label: string;
3275
3319
  left: string;
3276
3320
  expired: string;
3321
+ warning: string;
3277
3322
  };
3278
3323
  "option-tile": {
3279
3324
  correct: string;
@@ -4289,9 +4334,28 @@ export declare const resources: {
4289
4334
  busy: string;
4290
4335
  active: string;
4291
4336
  };
4337
+ "vote-tally": {
4338
+ votes: string;
4339
+ share: string;
4340
+ leader: string;
4341
+ tie: string;
4342
+ selected: string;
4343
+ empty: string;
4344
+ more: string;
4345
+ "voters-of": string;
4346
+ abstained: string;
4347
+ cast: string;
4348
+ leads: string;
4349
+ "tied-between": string;
4350
+ };
4292
4351
  "seat-ring": {
4293
4352
  empty: string;
4294
4353
  };
4354
+ "secret-card": {
4355
+ reveal: string;
4356
+ revealed: string;
4357
+ hidden: string;
4358
+ };
4295
4359
  "country-field": {
4296
4360
  placeholder: string;
4297
4361
  };