@nxgt/material 3.54.0 → 3.56.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 (132) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +8 -3
  3. package/dist/{async-slice-DDSsekfm.js → async-slice-CORlM_wu.js} +2 -2
  4. package/dist/{button-Ct8DSLVv.js → button-CdpVEza0.js} +1 -1
  5. package/dist/charts.js +3 -3
  6. package/dist/{chip-BzoNsd-W.js → chip-C0yNYz9m.js} +2 -2
  7. package/dist/{code-editor-DsLQeiZc.js → code-editor-Bwzp2038.js} +6 -6
  8. package/dist/code-editor.js +5 -5
  9. package/dist/{code-language-items-4zXlIEZ0.js → code-language-items-nP-pF7yH.js} +2 -2
  10. package/dist/components/components.css +8 -0
  11. package/dist/components/ui/display/seat-ring/seat-ring-index.css +125 -0
  12. package/dist/components/ui/display/seat-ring/seat-ring-ring.css +87 -0
  13. package/dist/components/ui/display/seat-ring/seat-ring.css +139 -0
  14. package/dist/components/ui/display/secret-card/secret-card.css +65 -0
  15. package/dist/components/ui/display/vote-tally/vote-tally.css +94 -0
  16. package/dist/{components-DFG2mgsM.js → components-Dl2hVfzt.js} +16273 -15482
  17. package/dist/components.js +26 -26
  18. package/dist/{dialog-DwPmwmA3.js → dialog-BVgsN9Ch.js} +4 -4
  19. package/dist/dnd.js +1 -1
  20. package/dist/{dropdown-menu-CDN6Nqx6.js → dropdown-menu-C8PBmMIa.js} +1 -1
  21. package/dist/editor.js +9 -9
  22. package/dist/{empty-state-Bb9W9did.js → empty-state-C5wfbbW9.js} +2 -2
  23. package/dist/{escape-owner-DI_lg2ID.js → escape-owner-CYnfySUl.js} +1 -1
  24. package/dist/{field-blur-BcJH8H9B.js → field-blur-Nid7-bt_.js} +1 -1
  25. package/dist/{field-blur-context-Dg1nwWOV.js → field-blur-context-DxdIuHAY.js} +1 -1
  26. package/dist/hooks.js +28 -28
  27. package/dist/{hover-card-Qse4gnop.js → hover-card-C_9jiwp1.js} +2 -2
  28. package/dist/{i18n-provider-DlVPS58N.js → i18n-provider-CLVZK6tQ.js} +1 -1
  29. package/dist/i18n.js +5 -5
  30. package/dist/{icon-badge-DVPBQOKe.js → icon-badge-Dcjg_SKJ.js} +3 -3
  31. package/dist/{icon-button-C3wDxsh6.js → icon-button-Bo-VuZ2n.js} +1 -1
  32. package/dist/lib/components/ui/actions/link/link.d.ts +8 -0
  33. package/dist/lib/components/ui/collections/data-table/partials/data-table-page-control.d.ts +1 -1
  34. package/dist/lib/components/ui/collections/data-table/partials/data-table-row.d.ts +1 -1
  35. package/dist/lib/components/ui/collections/data-table/partials/layouts/data-table-card.d.ts +1 -1
  36. package/dist/lib/components/ui/collections/server-table/partials/server-table-past-end.d.ts +1 -1
  37. package/dist/lib/components/ui/display/index.d.ts +3 -0
  38. package/dist/lib/components/ui/display/list-tile/partials/list-tile-line.d.ts +1 -1
  39. package/dist/lib/components/ui/display/period-cards/period-cards.d.ts +1 -1
  40. package/dist/lib/components/ui/display/seat-ring/index.d.ts +2 -0
  41. package/dist/lib/components/ui/display/seat-ring/partials/empty-seat.d.ts +5 -0
  42. package/dist/lib/components/ui/display/seat-ring/partials/seat-body.d.ts +9 -0
  43. package/dist/lib/components/ui/display/seat-ring/partials/seat-item.d.ts +17 -0
  44. package/dist/lib/components/ui/display/seat-ring/seat-ring.d.ts +9 -0
  45. package/dist/lib/components/ui/display/seat-ring/seat-ring.utils.d.ts +9 -0
  46. package/dist/lib/components/ui/display/seat-ring/types.d.ts +67 -0
  47. package/dist/lib/components/ui/display/seat-ring/use-seat-ring.d.ts +12 -0
  48. package/dist/lib/components/ui/display/secret-card/index.d.ts +2 -0
  49. package/dist/lib/components/ui/display/secret-card/secret-card.d.ts +11 -0
  50. package/dist/lib/components/ui/display/secret-card/types.d.ts +49 -0
  51. package/dist/lib/components/ui/display/secret-card/use-secret-card.d.ts +20 -0
  52. package/dist/lib/components/ui/display/vote-tally/announcer.d.ts +11 -0
  53. package/dist/lib/components/ui/display/vote-tally/index.d.ts +2 -0
  54. package/dist/lib/components/ui/display/vote-tally/partials/tally-bar.d.ts +8 -0
  55. package/dist/lib/components/ui/display/vote-tally/partials/tally-row.d.ts +9 -0
  56. package/dist/lib/components/ui/display/vote-tally/partials/tally-voters.d.ts +9 -0
  57. package/dist/lib/components/ui/display/vote-tally/types.d.ts +73 -0
  58. package/dist/lib/components/ui/display/vote-tally/use-announcement.d.ts +7 -0
  59. package/dist/lib/components/ui/display/vote-tally/use-tally-summary.d.ts +3 -0
  60. package/dist/lib/components/ui/display/vote-tally/vote-tally.d.ts +10 -0
  61. package/dist/lib/components/ui/display/vote-tally/vote-tally.utils.d.ts +18 -0
  62. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  63. package/dist/lib/components/ui/layout/account-menu/account-menu.d.ts +1 -1
  64. package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +1 -1
  65. package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +1 -1
  66. package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +1 -1
  67. package/dist/lib/components/ui/layout/pager/pager.d.ts +1 -1
  68. package/dist/lib/components/ui/layout/see-also/see-also.d.ts +1 -1
  69. package/dist/lib/components/ui/layout/toc/toc.d.ts +1 -1
  70. package/dist/lib/components/ui/primitives/index.d.ts +1 -0
  71. package/dist/lib/components/ui/primitives/link/index.d.ts +2 -0
  72. package/dist/lib/components/ui/primitives/link/link-component-provider.d.ts +26 -0
  73. package/dist/lib/components/ui/widgets/education/index.d.ts +1 -0
  74. package/dist/lib/components/ui/widgets/education/navigator/index.d.ts +2 -0
  75. package/dist/lib/components/ui/widgets/education/navigator/partials/navigator-item.d.ts +10 -0
  76. package/dist/lib/components/ui/widgets/education/navigator/question-navigator.d.ts +27 -0
  77. package/dist/lib/components/ui/widgets/education/questions/index.d.ts +1 -1
  78. package/dist/lib/components/ui/widgets/education/questions/partials/question-media.d.ts +5 -0
  79. package/dist/lib/components/ui/widgets/education/questions/partials/question-verdict.d.ts +12 -0
  80. package/dist/lib/components/ui/widgets/education/questions/question-options.d.ts +2 -2
  81. package/dist/lib/components/ui/widgets/education/questions/question-text.d.ts +1 -1
  82. package/dist/lib/components/ui/widgets/education/questions/question.d.ts +1 -1
  83. package/dist/lib/components/ui/widgets/education/questions/types.d.ts +33 -1
  84. package/dist/lib/hooks/index.d.ts +1 -0
  85. package/dist/lib/hooks/use-countdown.d.ts +18 -0
  86. package/dist/lib/i18n/resources/en/en.d.ts +34 -0
  87. package/dist/lib/i18n/resources/en/material.json.d.ts +34 -0
  88. package/dist/lib/i18n/resources/fr/fr.d.ts +34 -0
  89. package/dist/lib/i18n/resources/fr/material.json.d.ts +34 -0
  90. package/dist/lib/i18n/resources/resources.d.ts +68 -0
  91. package/dist/lib/i18n/translator.d.ts +1 -1
  92. package/dist/lib.js +1 -1
  93. package/dist/main.js +43 -43
  94. package/dist/map.js +8 -8
  95. package/dist/material.css +1 -1
  96. package/dist/pdf-reader.js +1 -1
  97. package/dist/print.js +2 -2
  98. package/dist/{public-BoVE0ffh.js → public-BtKAthSs.js} +9 -9
  99. package/dist/{rich-code-block-DAUM7Yh_.js → rich-code-block-BZYZ6ewr.js} +5 -5
  100. package/dist/{sortable-provider-BLXsGE_0.js → sortable-provider-hUCwt69K.js} +2 -2
  101. package/dist/{spinner-Rg4PnBPH.js → spinner-BmUXTzvJ.js} +1 -1
  102. package/dist/{stored-language-B1lJMPbR.js → stored-language-_OGPBCn0.js} +64 -0
  103. package/dist/theme-picker.js +2 -2
  104. package/dist/{theme-toggle-jVdxF_mc.js → theme-toggle-DdvEafno.js} +1 -1
  105. package/dist/{toolbar-items-BFY_hns5.js → toolbar-items-DKfY_6AG.js} +4 -4
  106. package/dist/{translate-material-q-JNxP1m.js → translate-material-DzBMPErh.js} +2 -2
  107. package/dist/{translator-BU1o3_l9.js → translator-BIVSiq4X.js} +1 -1
  108. package/dist/{use-chat-composer-DGbDuIUa.js → use-chat-composer-DCQW2EJ8.js} +16 -16
  109. package/dist/{use-heading-spy-CP63sAcS.js → use-heading-spy-Cr2C_Px8.js} +32 -5
  110. package/dist/{use-material-translation-nNF8fUXz.js → use-material-translation-C_bAxfvp.js} +2 -2
  111. package/docs/components/README.md +1 -1
  112. package/docs/components/buttons-and-actions.md +1 -0
  113. package/docs/components/data-display.md +212 -2
  114. package/docs/components/data-table-filter-and-lists.md +3 -3
  115. package/docs/components/feedback-and-status.md +5 -3
  116. package/docs/components/navigation-and-layout.md +4 -4
  117. package/docs/components/primitives.md +62 -0
  118. package/docs/components/rich-widgets.md +51 -0
  119. package/docs/components/selection-and-choice.md +1 -1
  120. package/docs/guides/app-shell.md +2 -2
  121. package/docs/guides/helpers.md +40 -0
  122. package/docs/previews/data-display-seatring.webp +0 -0
  123. package/docs/previews/data-display-secretcard.webp +0 -0
  124. package/docs/previews/data-display-votetally.webp +0 -0
  125. package/lib/components/components.css +8 -0
  126. package/lib/components/ui/display/seat-ring/seat-ring-index.css +125 -0
  127. package/lib/components/ui/display/seat-ring/seat-ring-ring.css +87 -0
  128. package/lib/components/ui/display/seat-ring/seat-ring.css +139 -0
  129. package/lib/components/ui/display/secret-card/secret-card.css +65 -0
  130. package/lib/components/ui/display/vote-tally/vote-tally.css +94 -0
  131. package/package.json +1 -1
  132. 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;
@@ -1380,6 +1392,28 @@ export declare const en: {
1380
1392
  busy: string;
1381
1393
  active: string;
1382
1394
  };
1395
+ "vote-tally": {
1396
+ votes: string;
1397
+ share: string;
1398
+ leader: string;
1399
+ tie: string;
1400
+ selected: string;
1401
+ empty: string;
1402
+ more: string;
1403
+ "voters-of": string;
1404
+ abstained: string;
1405
+ cast: string;
1406
+ leads: string;
1407
+ "tied-between": string;
1408
+ };
1409
+ "seat-ring": {
1410
+ empty: string;
1411
+ };
1412
+ "secret-card": {
1413
+ reveal: string;
1414
+ revealed: string;
1415
+ hidden: string;
1416
+ };
1383
1417
  "country-field": {
1384
1418
  placeholder: string;
1385
1419
  };
@@ -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}",
@@ -1370,6 +1382,28 @@ declare const _default: {
1370
1382
  "busy": "Busy",
1371
1383
  "active": "Active"
1372
1384
  },
1385
+ "vote-tally": {
1386
+ "votes": "{count, plural, one {# vote} other {# votes}}",
1387
+ "share": "{percent}%",
1388
+ "leader": "Leader",
1389
+ "tie": "Tie",
1390
+ "selected": "Your vote",
1391
+ "empty": "No votes yet",
1392
+ "more": "+{count} more",
1393
+ "voters-of": "Voters for {label}",
1394
+ "abstained": "{count, plural, one {# abstention} other {# abstentions}}",
1395
+ "cast": "{count, plural, one {# vote cast} other {# votes cast}}",
1396
+ "leads": "{names} leads with {votes}",
1397
+ "tied-between": "Tie between {names}, {votes} each"
1398
+ },
1399
+ "seat-ring": {
1400
+ "empty": "Empty seat"
1401
+ },
1402
+ "secret-card": {
1403
+ "reveal": "Show secret",
1404
+ "revealed": "Secret revealed",
1405
+ "hidden": "Secret hidden"
1406
+ },
1373
1407
  "country-field": {
1374
1408
  "placeholder": "Country"
1375
1409
  },
@@ -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;
@@ -1380,6 +1392,28 @@ export declare const fr: {
1380
1392
  busy: string;
1381
1393
  active: string;
1382
1394
  };
1395
+ "vote-tally": {
1396
+ votes: string;
1397
+ share: string;
1398
+ leader: string;
1399
+ tie: string;
1400
+ selected: string;
1401
+ empty: string;
1402
+ more: string;
1403
+ "voters-of": string;
1404
+ abstained: string;
1405
+ cast: string;
1406
+ leads: string;
1407
+ "tied-between": string;
1408
+ };
1409
+ "seat-ring": {
1410
+ empty: string;
1411
+ };
1412
+ "secret-card": {
1413
+ reveal: string;
1414
+ revealed: string;
1415
+ hidden: string;
1416
+ };
1383
1417
  "country-field": {
1384
1418
  placeholder: string;
1385
1419
  };
@@ -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}",
@@ -1370,6 +1382,28 @@ declare const _default: {
1370
1382
  "busy": "Occupé",
1371
1383
  "active": "Actif"
1372
1384
  },
1385
+ "vote-tally": {
1386
+ "votes": "{count, plural, one {# vote} other {# votes}}",
1387
+ "share": "{percent} %",
1388
+ "leader": "En tête",
1389
+ "tie": "Égalité",
1390
+ "selected": "Votre vote",
1391
+ "empty": "Aucun vote pour l'instant",
1392
+ "more": "+{count} de plus",
1393
+ "voters-of": "Votants pour {label}",
1394
+ "abstained": "{count, plural, one {# abstention} other {# abstentions}}",
1395
+ "cast": "{count, plural, one {# vote exprimé} other {# votes exprimés}}",
1396
+ "leads": "{names} est en tête avec {votes}",
1397
+ "tied-between": "Égalité entre {names}, {votes} chacun"
1398
+ },
1399
+ "seat-ring": {
1400
+ "empty": "Place libre"
1401
+ },
1402
+ "secret-card": {
1403
+ "reveal": "Afficher le secret",
1404
+ "revealed": "Secret révélé",
1405
+ "hidden": "Secret masqué"
1406
+ },
1373
1407
  "country-field": {
1374
1408
  "placeholder": "Pays"
1375
1409
  },
@@ -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;
@@ -1378,6 +1390,28 @@ export declare const resources: {
1378
1390
  busy: string;
1379
1391
  active: string;
1380
1392
  };
1393
+ "vote-tally": {
1394
+ votes: string;
1395
+ share: string;
1396
+ leader: string;
1397
+ tie: string;
1398
+ selected: string;
1399
+ empty: string;
1400
+ more: string;
1401
+ "voters-of": string;
1402
+ abstained: string;
1403
+ cast: string;
1404
+ leads: string;
1405
+ "tied-between": string;
1406
+ };
1407
+ "seat-ring": {
1408
+ empty: string;
1409
+ };
1410
+ "secret-card": {
1411
+ reveal: string;
1412
+ revealed: string;
1413
+ hidden: string;
1414
+ };
1381
1415
  "country-field": {
1382
1416
  placeholder: string;
1383
1417
  };
@@ -3239,6 +3273,10 @@ export declare const resources: {
3239
3273
  correct: string;
3240
3274
  incorrect: string;
3241
3275
  unanswered: string;
3276
+ pending: string;
3277
+ "points-of": string;
3278
+ audio: string;
3279
+ document: string;
3242
3280
  "correct-answer": string;
3243
3281
  "your-answer": string;
3244
3282
  streak: string;
@@ -3258,6 +3296,14 @@ export declare const resources: {
3258
3296
  "retry-wrong": string;
3259
3297
  retrying: string;
3260
3298
  };
3299
+ "question-navigator": {
3300
+ label: string;
3301
+ item: string;
3302
+ answered: string;
3303
+ unanswered: string;
3304
+ flagged: string;
3305
+ current: string;
3306
+ };
3261
3307
  "step-dots": {
3262
3308
  label: string;
3263
3309
  step: string;
@@ -4286,6 +4332,28 @@ export declare const resources: {
4286
4332
  busy: string;
4287
4333
  active: string;
4288
4334
  };
4335
+ "vote-tally": {
4336
+ votes: string;
4337
+ share: string;
4338
+ leader: string;
4339
+ tie: string;
4340
+ selected: string;
4341
+ empty: string;
4342
+ more: string;
4343
+ "voters-of": string;
4344
+ abstained: string;
4345
+ cast: string;
4346
+ leads: string;
4347
+ "tied-between": string;
4348
+ };
4349
+ "seat-ring": {
4350
+ empty: string;
4351
+ };
4352
+ "secret-card": {
4353
+ reveal: string;
4354
+ revealed: string;
4355
+ hidden: string;
4356
+ };
4289
4357
  "country-field": {
4290
4358
  placeholder: string;
4291
4359
  };