@nxgt/material 3.55.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 (117) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +7 -3
  3. package/dist/{async-slice-yhXT9cml.js → async-slice-CORlM_wu.js} +2 -2
  4. package/dist/{button-CD7f4KFL.js → button-CdpVEza0.js} +1 -1
  5. package/dist/charts.js +3 -3
  6. package/dist/{chip-Cl7Wm8Pn.js → chip-C0yNYz9m.js} +2 -2
  7. package/dist/{code-editor-tOhXy6Qo.js → code-editor-Bwzp2038.js} +6 -6
  8. package/dist/code-editor.js +5 -5
  9. package/dist/{code-language-items-BxlY6onk.js → code-language-items-nP-pF7yH.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-Dl2hVfzt.js} +16817 -16226
  14. package/dist/components.js +26 -26
  15. package/dist/{dialog-BzfHcRo6.js → dialog-BVgsN9Ch.js} +4 -4
  16. package/dist/dnd.js +1 -1
  17. package/dist/{dropdown-menu-DUZF4xAJ.js → dropdown-menu-C8PBmMIa.js} +1 -1
  18. package/dist/editor.js +9 -9
  19. package/dist/{empty-state-D9o2id1p.js → empty-state-C5wfbbW9.js} +2 -2
  20. package/dist/{escape-owner-BYs2_7T5.js → escape-owner-CYnfySUl.js} +1 -1
  21. package/dist/{field-blur-r1tHwqdF.js → field-blur-Nid7-bt_.js} +1 -1
  22. package/dist/{field-blur-context-ZsK8OTNg.js → field-blur-context-DxdIuHAY.js} +1 -1
  23. package/dist/hooks.js +28 -28
  24. package/dist/{hover-card-NfF8taLj.js → hover-card-C_9jiwp1.js} +2 -2
  25. package/dist/{i18n-provider-TQAEPlJ5.js → i18n-provider-CLVZK6tQ.js} +1 -1
  26. package/dist/i18n.js +5 -5
  27. package/dist/{icon-badge-BlaY_a-P.js → icon-badge-Dcjg_SKJ.js} +3 -3
  28. package/dist/{icon-button-B8tdlP6R.js → icon-button-Bo-VuZ2n.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/fields/contacts/placeholders.d.ts +1 -1
  52. package/dist/lib/components/ui/layout/account-menu/account-menu.d.ts +1 -1
  53. package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +1 -1
  54. package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +1 -1
  55. package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +1 -1
  56. package/dist/lib/components/ui/layout/pager/pager.d.ts +1 -1
  57. package/dist/lib/components/ui/layout/see-also/see-also.d.ts +1 -1
  58. package/dist/lib/components/ui/layout/toc/toc.d.ts +1 -1
  59. package/dist/lib/components/ui/primitives/index.d.ts +1 -0
  60. package/dist/lib/components/ui/primitives/link/index.d.ts +2 -0
  61. package/dist/lib/components/ui/primitives/link/link-component-provider.d.ts +26 -0
  62. package/dist/lib/components/ui/widgets/education/index.d.ts +1 -0
  63. package/dist/lib/components/ui/widgets/education/navigator/index.d.ts +2 -0
  64. package/dist/lib/components/ui/widgets/education/navigator/partials/navigator-item.d.ts +10 -0
  65. package/dist/lib/components/ui/widgets/education/navigator/question-navigator.d.ts +27 -0
  66. package/dist/lib/components/ui/widgets/education/questions/index.d.ts +1 -1
  67. package/dist/lib/components/ui/widgets/education/questions/partials/question-media.d.ts +5 -0
  68. package/dist/lib/components/ui/widgets/education/questions/partials/question-verdict.d.ts +12 -0
  69. package/dist/lib/components/ui/widgets/education/questions/question-options.d.ts +2 -2
  70. package/dist/lib/components/ui/widgets/education/questions/question-text.d.ts +1 -1
  71. package/dist/lib/components/ui/widgets/education/questions/question.d.ts +1 -1
  72. package/dist/lib/components/ui/widgets/education/questions/types.d.ts +33 -1
  73. package/dist/lib/hooks/index.d.ts +1 -0
  74. package/dist/lib/hooks/use-countdown.d.ts +18 -0
  75. package/dist/lib/i18n/resources/en/en.d.ts +31 -0
  76. package/dist/lib/i18n/resources/en/material.json.d.ts +31 -0
  77. package/dist/lib/i18n/resources/fr/fr.d.ts +31 -0
  78. package/dist/lib/i18n/resources/fr/material.json.d.ts +31 -0
  79. package/dist/lib/i18n/resources/resources.d.ts +62 -0
  80. package/dist/lib/i18n/translator.d.ts +1 -1
  81. package/dist/lib.js +1 -1
  82. package/dist/main.js +43 -43
  83. package/dist/map.js +8 -8
  84. package/dist/material.css +1 -1
  85. package/dist/pdf-reader.js +1 -1
  86. package/dist/print.js +2 -2
  87. package/dist/{public-tWgM204K.js → public-BtKAthSs.js} +9 -9
  88. package/dist/{rich-code-block-0OcsqURY.js → rich-code-block-BZYZ6ewr.js} +5 -5
  89. package/dist/{sortable-provider-DzFAlPU_.js → sortable-provider-hUCwt69K.js} +2 -2
  90. package/dist/{spinner-GKZcQmrR.js → spinner-BmUXTzvJ.js} +1 -1
  91. package/dist/{stored-language-B39mABN7.js → stored-language-_OGPBCn0.js} +62 -0
  92. package/dist/theme-picker.js +2 -2
  93. package/dist/{theme-toggle-C8idk_jQ.js → theme-toggle-DdvEafno.js} +1 -1
  94. package/dist/{toolbar-items-BrJI-BCs.js → toolbar-items-DKfY_6AG.js} +4 -4
  95. package/dist/{translate-material-hUA-UAP6.js → translate-material-DzBMPErh.js} +2 -2
  96. package/dist/{translator-1ql2sxrx.js → translator-BIVSiq4X.js} +1 -1
  97. package/dist/{use-chat-composer-DQpb8ZXV.js → use-chat-composer-DCQW2EJ8.js} +16 -16
  98. package/dist/{use-heading-spy-vlPOI1Aj.js → use-heading-spy-Cr2C_Px8.js} +32 -5
  99. package/dist/{use-material-translation-B1p5y3s9.js → use-material-translation-C_bAxfvp.js} +2 -2
  100. package/docs/components/README.md +1 -1
  101. package/docs/components/buttons-and-actions.md +1 -0
  102. package/docs/components/data-display.md +147 -2
  103. package/docs/components/data-table-filter-and-lists.md +3 -3
  104. package/docs/components/feedback-and-status.md +5 -3
  105. package/docs/components/navigation-and-layout.md +4 -4
  106. package/docs/components/primitives.md +62 -0
  107. package/docs/components/rich-widgets.md +51 -0
  108. package/docs/components/selection-and-choice.md +1 -1
  109. package/docs/guides/app-shell.md +2 -2
  110. package/docs/guides/helpers.md +40 -0
  111. package/docs/previews/data-display-secretcard.webp +0 -0
  112. package/docs/previews/data-display-votetally.webp +0 -0
  113. package/lib/components/components.css +4 -0
  114. package/lib/components/ui/display/secret-card/secret-card.css +65 -0
  115. package/lib/components/ui/display/vote-tally/vote-tally.css +94 -0
  116. package/package.json +1 -1
  117. 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,9 +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
+ };
1383
1409
  "seat-ring": {
1384
1410
  empty: string;
1385
1411
  };
1412
+ "secret-card": {
1413
+ reveal: string;
1414
+ revealed: string;
1415
+ hidden: string;
1416
+ };
1386
1417
  "country-field": {
1387
1418
  placeholder: string;
1388
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,9 +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
+ },
1373
1399
  "seat-ring": {
1374
1400
  "empty": "Empty seat"
1375
1401
  },
1402
+ "secret-card": {
1403
+ "reveal": "Show secret",
1404
+ "revealed": "Secret revealed",
1405
+ "hidden": "Secret hidden"
1406
+ },
1376
1407
  "country-field": {
1377
1408
  "placeholder": "Country"
1378
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,9 +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
+ };
1383
1409
  "seat-ring": {
1384
1410
  empty: string;
1385
1411
  };
1412
+ "secret-card": {
1413
+ reveal: string;
1414
+ revealed: string;
1415
+ hidden: string;
1416
+ };
1386
1417
  "country-field": {
1387
1418
  placeholder: string;
1388
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,9 +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
+ },
1373
1399
  "seat-ring": {
1374
1400
  "empty": "Place libre"
1375
1401
  },
1402
+ "secret-card": {
1403
+ "reveal": "Afficher le secret",
1404
+ "revealed": "Secret révélé",
1405
+ "hidden": "Secret masqué"
1406
+ },
1376
1407
  "country-field": {
1377
1408
  "placeholder": "Pays"
1378
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,9 +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
+ };
1381
1407
  "seat-ring": {
1382
1408
  empty: string;
1383
1409
  };
1410
+ "secret-card": {
1411
+ reveal: string;
1412
+ revealed: string;
1413
+ hidden: string;
1414
+ };
1384
1415
  "country-field": {
1385
1416
  placeholder: string;
1386
1417
  };
@@ -3242,6 +3273,10 @@ export declare const resources: {
3242
3273
  correct: string;
3243
3274
  incorrect: string;
3244
3275
  unanswered: string;
3276
+ pending: string;
3277
+ "points-of": string;
3278
+ audio: string;
3279
+ document: string;
3245
3280
  "correct-answer": string;
3246
3281
  "your-answer": string;
3247
3282
  streak: string;
@@ -3261,6 +3296,14 @@ export declare const resources: {
3261
3296
  "retry-wrong": string;
3262
3297
  retrying: string;
3263
3298
  };
3299
+ "question-navigator": {
3300
+ label: string;
3301
+ item: string;
3302
+ answered: string;
3303
+ unanswered: string;
3304
+ flagged: string;
3305
+ current: string;
3306
+ };
3264
3307
  "step-dots": {
3265
3308
  label: string;
3266
3309
  step: string;
@@ -4289,9 +4332,28 @@ export declare const resources: {
4289
4332
  busy: string;
4290
4333
  active: string;
4291
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
+ };
4292
4349
  "seat-ring": {
4293
4350
  empty: string;
4294
4351
  };
4352
+ "secret-card": {
4353
+ reveal: string;
4354
+ revealed: string;
4355
+ hidden: string;
4356
+ };
4295
4357
  "country-field": {
4296
4358
  placeholder: string;
4297
4359
  };