@okta/odyssey-react-mui 0.17.0 → 0.19.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 (147) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/README.md +4 -20
  3. package/dist/Banner.d.ts +47 -0
  4. package/dist/Banner.d.ts.map +1 -0
  5. package/dist/Banner.js +41 -0
  6. package/dist/Banner.js.map +1 -0
  7. package/dist/Infobox.d.ts +36 -0
  8. package/dist/Infobox.d.ts.map +1 -0
  9. package/dist/Infobox.js +36 -0
  10. package/dist/Infobox.js.map +1 -0
  11. package/dist/Link.d.ts +1 -1
  12. package/dist/Link.d.ts.map +1 -1
  13. package/dist/Link.js +16 -2
  14. package/dist/Link.js.map +1 -1
  15. package/dist/OdysseyThemeProvider.d.ts +3 -1
  16. package/dist/OdysseyThemeProvider.d.ts.map +1 -1
  17. package/dist/OdysseyThemeProvider.js +7 -4
  18. package/dist/OdysseyThemeProvider.js.map +1 -1
  19. package/dist/PasswordInput.d.ts +1 -1
  20. package/dist/PasswordInput.d.ts.map +1 -1
  21. package/dist/Radio.d.ts +19 -0
  22. package/dist/Radio.d.ts.map +1 -0
  23. package/dist/Radio.js +32 -0
  24. package/dist/Radio.js.map +1 -0
  25. package/dist/RadioGroup.d.ts +47 -0
  26. package/dist/RadioGroup.d.ts.map +1 -0
  27. package/dist/RadioGroup.js +59 -0
  28. package/dist/RadioGroup.js.map +1 -0
  29. package/dist/Status.d.ts +23 -0
  30. package/dist/Status.d.ts.map +1 -0
  31. package/dist/Status.js +25 -0
  32. package/dist/Status.js.map +1 -0
  33. package/dist/TextField.d.ts +87 -0
  34. package/dist/TextField.d.ts.map +1 -0
  35. package/dist/TextField.js +100 -0
  36. package/dist/TextField.js.map +1 -0
  37. package/dist/iconDictionary/Add.d.ts +1 -1
  38. package/dist/iconDictionary/Add.d.ts.map +1 -1
  39. package/dist/iconDictionary/AddCircle.d.ts +1 -1
  40. package/dist/iconDictionary/AddCircle.d.ts.map +1 -1
  41. package/dist/iconDictionary/AlertCircle.d.ts +1 -1
  42. package/dist/iconDictionary/AlertCircle.d.ts.map +1 -1
  43. package/dist/iconDictionary/AlertCircleFilled.d.ts +1 -1
  44. package/dist/iconDictionary/AlertCircleFilled.d.ts.map +1 -1
  45. package/dist/iconDictionary/AlertTriangleFilled.d.ts +1 -1
  46. package/dist/iconDictionary/AlertTriangleFilled.d.ts.map +1 -1
  47. package/dist/iconDictionary/Anchor.d.ts +1 -1
  48. package/dist/iconDictionary/Anchor.d.ts.map +1 -1
  49. package/dist/iconDictionary/ArrowDown.d.ts +1 -1
  50. package/dist/iconDictionary/ArrowDown.d.ts.map +1 -1
  51. package/dist/iconDictionary/ArrowLeft.d.ts +1 -1
  52. package/dist/iconDictionary/ArrowLeft.d.ts.map +1 -1
  53. package/dist/iconDictionary/ArrowRight.d.ts +1 -1
  54. package/dist/iconDictionary/ArrowRight.d.ts.map +1 -1
  55. package/dist/iconDictionary/ArrowUp.d.ts +1 -1
  56. package/dist/iconDictionary/ArrowUp.d.ts.map +1 -1
  57. package/dist/iconDictionary/ArrowUpDown.d.ts +1 -1
  58. package/dist/iconDictionary/ArrowUpDown.d.ts.map +1 -1
  59. package/dist/iconDictionary/Calendar.d.ts +1 -1
  60. package/dist/iconDictionary/Calendar.d.ts.map +1 -1
  61. package/dist/iconDictionary/Check.d.ts +1 -1
  62. package/dist/iconDictionary/Check.d.ts.map +1 -1
  63. package/dist/iconDictionary/CheckCircleFilled.d.ts +1 -1
  64. package/dist/iconDictionary/CheckCircleFilled.d.ts.map +1 -1
  65. package/dist/iconDictionary/ChevronDown.d.ts +1 -1
  66. package/dist/iconDictionary/ChevronDown.d.ts.map +1 -1
  67. package/dist/iconDictionary/ChevronUp.d.ts +1 -1
  68. package/dist/iconDictionary/ChevronUp.d.ts.map +1 -1
  69. package/dist/iconDictionary/Close.d.ts +1 -1
  70. package/dist/iconDictionary/Close.d.ts.map +1 -1
  71. package/dist/iconDictionary/CloseCircleFilled.d.ts +1 -1
  72. package/dist/iconDictionary/CloseCircleFilled.d.ts.map +1 -1
  73. package/dist/iconDictionary/Copy.d.ts +1 -1
  74. package/dist/iconDictionary/Copy.d.ts.map +1 -1
  75. package/dist/iconDictionary/Delete.d.ts +1 -1
  76. package/dist/iconDictionary/Delete.d.ts.map +1 -1
  77. package/dist/iconDictionary/Download.d.ts +1 -1
  78. package/dist/iconDictionary/Download.d.ts.map +1 -1
  79. package/dist/iconDictionary/DragHandle.d.ts +1 -1
  80. package/dist/iconDictionary/DragHandle.d.ts.map +1 -1
  81. package/dist/iconDictionary/Edit.d.ts +1 -1
  82. package/dist/iconDictionary/Edit.d.ts.map +1 -1
  83. package/dist/iconDictionary/ExternalLink.d.ts +1 -1
  84. package/dist/iconDictionary/ExternalLink.d.ts.map +1 -1
  85. package/dist/iconDictionary/Eye.d.ts +1 -1
  86. package/dist/iconDictionary/Eye.d.ts.map +1 -1
  87. package/dist/iconDictionary/EyeOff.d.ts +1 -1
  88. package/dist/iconDictionary/EyeOff.d.ts.map +1 -1
  89. package/dist/iconDictionary/Filter.d.ts +1 -1
  90. package/dist/iconDictionary/Filter.d.ts.map +1 -1
  91. package/dist/iconDictionary/Globe.d.ts +1 -1
  92. package/dist/iconDictionary/Globe.d.ts.map +1 -1
  93. package/dist/iconDictionary/Home.d.ts +1 -1
  94. package/dist/iconDictionary/Home.d.ts.map +1 -1
  95. package/dist/iconDictionary/InformationCircle.d.ts +1 -1
  96. package/dist/iconDictionary/InformationCircle.d.ts.map +1 -1
  97. package/dist/iconDictionary/InformationCircleFilled.d.ts +1 -1
  98. package/dist/iconDictionary/InformationCircleFilled.d.ts.map +1 -1
  99. package/dist/iconDictionary/Notification.d.ts +1 -1
  100. package/dist/iconDictionary/Notification.d.ts.map +1 -1
  101. package/dist/iconDictionary/OverflowVertical.d.ts +1 -1
  102. package/dist/iconDictionary/OverflowVertical.d.ts.map +1 -1
  103. package/dist/iconDictionary/QuestionCircle.d.ts +1 -1
  104. package/dist/iconDictionary/QuestionCircle.d.ts.map +1 -1
  105. package/dist/iconDictionary/QuestionCircleFilled.d.ts +1 -1
  106. package/dist/iconDictionary/QuestionCircleFilled.d.ts.map +1 -1
  107. package/dist/iconDictionary/Search.d.ts +1 -1
  108. package/dist/iconDictionary/Search.d.ts.map +1 -1
  109. package/dist/iconDictionary/Settings.d.ts +1 -1
  110. package/dist/iconDictionary/Settings.d.ts.map +1 -1
  111. package/dist/iconDictionary/Subtract.d.ts +1 -1
  112. package/dist/iconDictionary/Subtract.d.ts.map +1 -1
  113. package/dist/iconDictionary/User.d.ts +1 -1
  114. package/dist/iconDictionary/User.d.ts.map +1 -1
  115. package/dist/iconDictionary/UserGroup.d.ts +1 -1
  116. package/dist/iconDictionary/UserGroup.d.ts.map +1 -1
  117. package/dist/index.d.ts +12 -6
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +10 -4
  120. package/dist/index.js.map +1 -1
  121. package/dist/theme/components.d.ts.map +1 -1
  122. package/dist/theme/components.js +578 -179
  123. package/dist/theme/components.js.map +1 -1
  124. package/dist/theme/components.types.d.ts +5 -0
  125. package/dist/theme/components.types.d.ts.map +1 -1
  126. package/dist/theme/components.types.js.map +1 -1
  127. package/dist/theme/typography.d.ts.map +1 -1
  128. package/dist/theme/typography.js +6 -0
  129. package/dist/theme/typography.js.map +1 -1
  130. package/dist/theme/typography.types.d.ts +3 -3
  131. package/dist/theme/typography.types.d.ts.map +1 -1
  132. package/dist/theme/typography.types.js.map +1 -1
  133. package/package.json +7 -7
  134. package/src/Banner.tsx +69 -0
  135. package/src/Infobox.tsx +47 -0
  136. package/src/Link.tsx +4 -4
  137. package/src/OdysseyThemeProvider.tsx +25 -5
  138. package/src/Radio.tsx +28 -0
  139. package/src/RadioGroup.tsx +105 -0
  140. package/src/Status.tsx +29 -0
  141. package/src/TextField.tsx +220 -0
  142. package/src/index.ts +33 -15
  143. package/src/theme/components.tsx +518 -85
  144. package/src/theme/components.types.ts +7 -0
  145. package/src/theme/typography.ts +6 -0
  146. package/src/theme/typography.types.ts +3 -3
  147. package/tsconfig.json +2 -1
@@ -15,7 +15,9 @@ import type {} from "@mui/lab/themeAugmentation";
15
15
  //import radioClasses from "@mui/material";
16
16
  import { chipClasses } from "@mui/material/Chip";
17
17
  import { dialogActionsClasses } from "@mui/material/DialogActions";
18
+ import { inputAdornmentClasses } from "@mui/material/InputAdornment";
18
19
  import { inputBaseClasses } from "@mui/material/InputBase";
20
+ import { svgIconClasses } from "@mui/material/SvgIcon";
19
21
  import { tableBodyClasses } from "@mui/material/TableBody";
20
22
  import { tableCellClasses } from "@mui/material/TableCell";
21
23
  import { tableHeadClasses } from "@mui/material/TableHead";
@@ -26,6 +28,7 @@ import {
26
28
  AlertTriangleFilledIcon,
27
29
  ArrowDownIcon,
28
30
  CheckCircleFilledIcon,
31
+ ChevronDownIcon,
29
32
  CloseCircleFilledIcon,
30
33
  InformationCircleFilledIcon,
31
34
  } from "../iconDictionary";
@@ -70,35 +73,28 @@ export const components: ThemeOptions["components"] = {
70
73
  borderWidth: theme.mixins.borderWidth,
71
74
  borderRadius: theme.mixins.borderRadius,
72
75
  position: "relative",
73
- alignItems: "start",
76
+ alignItems: "center",
74
77
  }),
75
78
  }),
76
79
  action: ({ ownerState, theme }) => ({
77
80
  ...(ownerState.variant === "banner" && {
78
81
  padding: 0,
79
- marginRight: 0,
82
+ marginInlineEnd: 0,
80
83
  top: "50%",
81
84
  right: theme.spacing(4),
82
85
  position: "absolute",
83
86
  transform: "translateY(-50%)",
84
87
  }),
85
88
  ...(ownerState.variant === "toast" && {
86
- position: "absolute",
87
- top: `calc(${theme.spacing(4)} - ${theme.spacing(1)} + ${
88
- theme.mixins.borderWidth
89
- })`,
90
- right: `calc(${theme.spacing(4)} - ${theme.spacing(1)} + ${
91
- theme.mixins.borderWidth
92
- })`,
93
89
  padding: 0,
94
- marginLeft: 0,
95
- marginRight: 0,
90
+ marginInlineStart: 0,
91
+ marginInlineEnd: 0,
96
92
  }),
97
93
  }),
98
94
  icon: ({ ownerState, theme }) => ({
99
- marginRight: 0,
95
+ marginInlineEnd: 0,
100
96
  padding: 0,
101
- fontSize: "1.429rem",
97
+ fontSize: "inherit",
102
98
  opacity: 1,
103
99
  ...(ownerState.severity && {
104
100
  color: theme.palette[ownerState.severity].main,
@@ -106,6 +102,10 @@ export const components: ThemeOptions["components"] = {
106
102
  ...(ownerState.severity === "warning" && {
107
103
  color: theme.palette[ownerState.severity].dark,
108
104
  }),
105
+
106
+ [`& .${svgIconClasses.root}`]: {
107
+ fontSize: "1.429rem",
108
+ },
109
109
  }),
110
110
  message: ({ ownerState, theme }) => ({
111
111
  padding: 0,
@@ -130,14 +130,22 @@ export const components: ThemeOptions["components"] = {
130
130
  lineHeight: theme.typography.h6.lineHeight,
131
131
  fontSize: theme.typography.h6.fontSize,
132
132
  fontWeight: theme.typography.fontWeightBold,
133
+
134
+ "&:last-child": {
135
+ marginBlockEnd: 0,
136
+ },
133
137
  }),
134
138
  },
135
139
  },
136
140
  MuiBackdrop: {
137
141
  styleOverrides: {
138
- root: {
142
+ root: ({ ownerState }) => ({
139
143
  backgroundColor: "rgba(29,29,33,0.75)",
140
- },
144
+
145
+ ...(ownerState.invisible === true && {
146
+ backgroundColor: "transparent",
147
+ }),
148
+ }),
141
149
  },
142
150
  },
143
151
  MuiButton: {
@@ -228,7 +236,7 @@ export const components: ThemeOptions["components"] = {
228
236
  {
229
237
  props: { variant: "floating" },
230
238
  style: ({ theme }) => ({
231
- backgroundColor: theme.palette.common.white,
239
+ backgroundColor: "transparent",
232
240
  color: theme.palette.text.primary,
233
241
  borderColor: "transparent",
234
242
 
@@ -254,7 +262,7 @@ export const components: ThemeOptions["components"] = {
254
262
  props: { size: "s" },
255
263
  style: ({ theme }) => ({
256
264
  paddingBlock: `calc(${theme.spacing(2)} - 1px)`,
257
- paddingInline: `calc(${theme.spacing(3)} - 1px)`,
265
+ paddingInline: `calc(${theme.spacing(2)} - 1px)`,
258
266
  fontSize: "1rem",
259
267
  }),
260
268
  },
@@ -309,7 +317,7 @@ export const components: ThemeOptions["components"] = {
309
317
  outlineColor: "transparent",
310
318
  outlineOffset: "0",
311
319
  fontSize: theme.typography.body1.fontSize,
312
- lineHeight: "1.14285714",
320
+ lineHeight: theme.typography.ui.lineHeight,
313
321
  whiteSpace: "nowrap",
314
322
 
315
323
  ".MuiButton-root + &": {
@@ -328,13 +336,17 @@ export const components: ThemeOptions["components"] = {
328
336
  },
329
337
 
330
338
  ".MuiButton-startIcon > *:nth-of-type(1)": {
331
- fontSize: "1.14285714em",
339
+ fontSize: `${theme.typography.ui.lineHeight}em`,
332
340
  },
333
341
  }),
334
342
  startIcon: ({ theme }) => ({
335
343
  display: "inline-flex",
336
344
  margin: 0,
337
345
  marginInlineEnd: theme.spacing(2),
346
+
347
+ "&:only-child": {
348
+ margin: 0,
349
+ },
338
350
  }),
339
351
  },
340
352
  },
@@ -343,13 +355,6 @@ export const components: ThemeOptions["components"] = {
343
355
  disableRipple: true,
344
356
  },
345
357
  },
346
- MuiCssBaseline: {
347
- styleOverrides: {
348
- boxSizing: "border-box",
349
- fontFeatureSettings: "'lnum','pnum'",
350
- fontVariant: "normal",
351
- },
352
- },
353
358
  MuiCheckbox: {
354
359
  defaultProps: {
355
360
  size: "small",
@@ -391,7 +396,7 @@ export const components: ThemeOptions["components"] = {
391
396
  paddingBlock: theme.spacing(2),
392
397
  paddingInline: theme.spacing(3),
393
398
  fontSize: theme.typography.body1.fontSize,
394
- lineHeight: "1.14285714",
399
+ lineHeight: theme.typography.ui.lineHeight,
395
400
  borderRadius: "1.5em",
396
401
  backgroundColor: theme.palette.grey[100],
397
402
 
@@ -435,6 +440,41 @@ export const components: ThemeOptions["components"] = {
435
440
  backgroundColor: theme.palette.grey[300],
436
441
  },
437
442
  }),
443
+
444
+ ...(ownerState.variant === "status" && {
445
+ paddingBlock: 0,
446
+ paddingInline: 0,
447
+ borderRadius: 0,
448
+ backgroundColor: "transparent",
449
+ color: theme.palette.text.primary,
450
+
451
+ "&::before": {
452
+ content: "''",
453
+ width: ".57em",
454
+ height: ".57em",
455
+ marginInlineEnd: theme.spacing(2),
456
+ borderRadius: "100%",
457
+ backgroundColor: theme.palette.text.secondary,
458
+ },
459
+
460
+ [`&.${chipClasses.colorError}`]: {
461
+ "&::before": {
462
+ backgroundColor: theme.palette.error.main,
463
+ },
464
+ },
465
+
466
+ [`&.${chipClasses.colorSuccess}`]: {
467
+ "&::before": {
468
+ backgroundColor: theme.palette.success.main,
469
+ },
470
+ },
471
+
472
+ [`&.${chipClasses.colorWarning}`]: {
473
+ "&::before": {
474
+ backgroundColor: theme.palette.warning.main,
475
+ },
476
+ },
477
+ }),
438
478
  }),
439
479
  label: {
440
480
  padding: 0,
@@ -443,7 +483,7 @@ export const components: ThemeOptions["components"] = {
443
483
  },
444
484
  MuiCircularProgress: {
445
485
  defaultProps: {
446
- // TODO: defaultProps cannot take a theme object; needs workaround
486
+ // TODO: defaultProps cannot take a theme object; matches theme.typography.ui.lineHeight
447
487
  size: "1.14285714rem",
448
488
  thickness: 8,
449
489
  color: "primary",
@@ -463,6 +503,331 @@ export const components: ThemeOptions["components"] = {
463
503
  }),
464
504
  },
465
505
  },
506
+ MuiCssBaseline: {
507
+ styleOverrides: (themeParam) => `
508
+ html {
509
+ font-size: calc((${themeParam.typography.fontSize} / 16) * 100%);
510
+ }
511
+ `,
512
+ },
513
+ MuiScopedCssBaseline: {
514
+ styleOverrides: {
515
+ root: ({ theme }) => ({
516
+ abbr: {
517
+ borderBottomWidth: "1px",
518
+ borderBottomStyle: "dashed",
519
+ borderBottomColor: theme.palette.primary.dark,
520
+ textDecoration: "none",
521
+ },
522
+
523
+ address: {
524
+ maxWidth: theme.mixins.maxWidth,
525
+ marginBlockStart: 0,
526
+ marginBlockEnd: theme.spacing(4),
527
+ marginInline: 0,
528
+
529
+ "&:last-child": {
530
+ marginBlockEnd: 0,
531
+ },
532
+ },
533
+
534
+ blockquote: {
535
+ maxWidth: theme.mixins.maxWidth,
536
+ marginBlockStart: 0,
537
+ marginBlockEnd: theme.spacing(4),
538
+ marginInline: 0,
539
+ paddingBlock: 0,
540
+ paddingInlineStart: theme.spacing(2),
541
+ paddingInlineEnd: 0,
542
+ borderInlineStartWidth: "3px",
543
+ borderInlineStartStyle: "solid",
544
+ borderInlineStartColor: theme.palette.grey[200],
545
+
546
+ "&:last-child": {
547
+ marginBlockEnd: 0,
548
+ },
549
+ },
550
+
551
+ cite: {
552
+ fontStyle: "italic",
553
+ },
554
+
555
+ code: {
556
+ fontFamily:
557
+ "'Inconsolata', 'SFMono-Regular', 'Consolas', 'Liberation Mono', 'Menlo', 'Courier', monospace",
558
+ },
559
+
560
+ del: {
561
+ display: "inline-block",
562
+ backgroundColor: theme.palette.error.light,
563
+
564
+ "&::before, &::after": {
565
+ clip: "rect(0 0 0 0)",
566
+ clipPath: "inset(50%)",
567
+ height: "1px",
568
+ overflow: "hidden",
569
+ position: "absolute",
570
+ whiteSpace: "nowrap",
571
+ width: "1px",
572
+ },
573
+
574
+ "&::before": {
575
+ content: "attr(data-a11y-start)",
576
+ },
577
+
578
+ "&::after": {
579
+ content: "attr(data-a11y-end)",
580
+ },
581
+ },
582
+
583
+ details: {
584
+ fontSize: theme.typography.body1.fontSize,
585
+ },
586
+
587
+ dfn: {
588
+ fontStyle: "italic",
589
+ },
590
+
591
+ dl: {
592
+ display: "grid",
593
+ gridGap: `${theme.spacing(2)} ${theme.spacing(4)}`,
594
+ gridTemplateColumns: "repeat(2, minmax(min-content, max-content))",
595
+ maxWidth: theme.mixins.maxWidth,
596
+ marginBlockStart: 0,
597
+ marginBlockEnd: theme.spacing(4),
598
+ marginInline: 0,
599
+ padding: 0,
600
+
601
+ "&:last-child": {
602
+ marginBlockEnd: 0,
603
+ },
604
+
605
+ dt: {
606
+ gridColumn: 1,
607
+ fontWeight: 600,
608
+ },
609
+
610
+ dd: {
611
+ gridColumn: 2,
612
+ fontWeight: 400,
613
+ },
614
+ },
615
+
616
+ em: {
617
+ fontStyle: "italic",
618
+
619
+ "& > em": {
620
+ textDecoration: "underline",
621
+ },
622
+ },
623
+
624
+ figure: {
625
+ display: "grid",
626
+ gridGap: theme.spacing(2),
627
+ gridTemplateColumns: "minmax(min-content, max-content)",
628
+ justifyContent: "start",
629
+ justifyItems: "start",
630
+ marginBlockStart: 0,
631
+ marginBlockEnd: theme.spacing(4),
632
+ marginInline: 0,
633
+
634
+ "&:last-child": {
635
+ marginBlockEnd: 0,
636
+ },
637
+ },
638
+
639
+ "figcaption:not([class])": {
640
+ color: theme.palette.text.secondary,
641
+ fontSize: theme.typography.body1.fontSize,
642
+ },
643
+
644
+ hr: {
645
+ marginBlock: theme.spacing(2),
646
+ marginInline: 0,
647
+ borderWidth: "1px",
648
+ borderStyle: "solid",
649
+ borderColor: theme.palette.grey[200],
650
+ },
651
+
652
+ ins: {
653
+ display: "inline-block",
654
+ backgroundColor: theme.palette.success.light,
655
+
656
+ "&::before, &::after": {
657
+ clip: "rect(0 0 0 0)",
658
+ clipPath: "inset(50%)",
659
+ height: "1px",
660
+ overflow: "hidden",
661
+ position: "absolute",
662
+ whiteSpace: "nowrap",
663
+ width: "1px",
664
+ },
665
+
666
+ "&::before": {
667
+ content: "attr(data-a11y-start)",
668
+ },
669
+
670
+ "&::after": {
671
+ content: "attr(data-a11y-end)",
672
+ },
673
+ },
674
+
675
+ kbd: {
676
+ display: "inline-block",
677
+ minWidth: `calc(${theme.typography.subtitle1.fontSize} * ${theme.typography.h5.lineHeight})`,
678
+ borderStyle: theme.mixins.borderStyle,
679
+ borderWidth: theme.mixins.borderWidth,
680
+ borderRadius: theme.mixins.borderRadius,
681
+ borderColor: theme.palette.grey[200],
682
+ backgroundColor: theme.palette.grey[50],
683
+ padding: `calc(${theme.spacing(1)} / 2) ${theme.spacing(1)}`,
684
+ fontFamily:
685
+ "'Inconsolata', 'SFMono-Regular', 'Consolas', 'Liberation Mono', 'Menlo', 'Courier', monospace",
686
+ fontSize: theme.typography.subtitle1.fontSize,
687
+ fontWeight: theme.typography.fontWeightRegular,
688
+ lineHeight: theme.typography.h5.lineHeight,
689
+ boxShadow: `0 1px 1px 0 hsla(240, 6%, 12%, 0.05)`,
690
+ },
691
+
692
+ mark: {
693
+ backgroundColor: theme.palette.warning.light,
694
+
695
+ "&::before, &::after": {
696
+ clip: "rect(0 0 0 0)",
697
+ clipPath: "inset(50%)",
698
+ height: "1px",
699
+ overflow: "hidden",
700
+ position: "absolute",
701
+ whiteSpace: "nowrap",
702
+ width: "1px",
703
+ },
704
+
705
+ "&::before": {
706
+ content: "attr(data-a11y-start)",
707
+ },
708
+
709
+ "&::after": {
710
+ content: "attr(data-a11y-end)",
711
+ },
712
+ },
713
+
714
+ p: {
715
+ maxWidth: theme.mixins.maxWidth,
716
+ marginBlockStart: 0,
717
+ marginBlockEnd: theme.spacing(4),
718
+
719
+ "&:last-child": {
720
+ marginBlockEnd: 0,
721
+ },
722
+ },
723
+
724
+ pre: {
725
+ marginInline: 0,
726
+ marginBlockStart: 0,
727
+ marginBlockEnd: theme.spacing(4),
728
+ fontFamily:
729
+ "'Inconsolata', 'SFMono-Regular', 'Consolas', 'Liberation Mono', 'Menlo', 'Courier', monospace",
730
+ whiteSpace: "pre-wrap",
731
+ tabSize: 2,
732
+
733
+ "&:last-child": {
734
+ marginBlockEnd: 0,
735
+ },
736
+ },
737
+
738
+ "ul, ol": {
739
+ maxWidth: theme.mixins.maxWidth,
740
+ marginBlockStart: 0,
741
+ marginBlockEnd: theme.spacing(4),
742
+ // Unique padding to get desire appearance with "outside" position
743
+ paddingInlineStart: "2ch",
744
+
745
+ ol: {
746
+ listStyleType: "lower-alpha",
747
+
748
+ ol: {
749
+ listStyleType: "lower-roman",
750
+ },
751
+ },
752
+
753
+ "&:last-child": {
754
+ marginBlockEnd: 0,
755
+ },
756
+ },
757
+
758
+ li: {
759
+ marginBlockEnd: theme.spacing(2),
760
+ paddingInlineStart: theme.spacing(1),
761
+
762
+ "ul, ol": {
763
+ marginBlockStart: theme.spacing(2),
764
+ marginInlineStart: `calc(${theme.spacing(6)} - 2ch)`,
765
+ },
766
+ },
767
+
768
+ q: {
769
+ quotes: `'"' '"' "'" "'"`,
770
+
771
+ "&::before": {
772
+ content: "open-quote",
773
+ },
774
+
775
+ "&::after": {
776
+ content: "close-quote",
777
+ },
778
+ },
779
+
780
+ s: {
781
+ textDecoration: "line-through",
782
+ },
783
+
784
+ samp: {
785
+ padding: "0 0.5ch",
786
+ backgroundColor: theme.palette.grey[50],
787
+ boxShadow: `0 1px 0 ${theme.palette.grey[50]}`,
788
+ fontSize: theme.typography.body1.fontSize,
789
+
790
+ kbd: {
791
+ background: theme.palette.common.white,
792
+ },
793
+ },
794
+
795
+ small: {
796
+ fontSize: theme.typography.caption.fontSize,
797
+ },
798
+
799
+ sub: {
800
+ fontSize: theme.typography.caption.fontSize,
801
+ lineHeight: 1,
802
+ verticalAlign: "sub",
803
+ },
804
+
805
+ summary: {
806
+ fontSize: theme.typography.body1.fontSize,
807
+ fontWeight: theme.typography.fontWeightBold,
808
+ cursor: "default",
809
+
810
+ "&:focus-visible": {
811
+ outlineColor: theme.palette.primary.main,
812
+ outlineOffset: "2px",
813
+ outlineStyle: "solid",
814
+ outlineWidth: "2px",
815
+ },
816
+ },
817
+
818
+ sup: {
819
+ fontSize: theme.typography.caption.fontSize,
820
+ lineHeight: 1,
821
+ verticalAlign: "super",
822
+ },
823
+
824
+ var: {
825
+ fontStyle: "italic",
826
+ fontWeight: theme.typography.fontWeightBold,
827
+ },
828
+ }),
829
+ },
830
+ },
466
831
  MuiDialog: {
467
832
  defaultProps: {
468
833
  scroll: "paper",
@@ -564,17 +929,17 @@ export const components: ThemeOptions["components"] = {
564
929
  styleOverrides: {
565
930
  root: ({ theme, ownerState }) => ({
566
931
  gap: theme.spacing(2),
567
- marginLeft: 0,
568
- marginRight: 0, // used for row presentation of radio/checkbox
932
+ marginInlineStart: 0,
933
+ marginInlineEnd: 0, // used for row presentation of radio/checkbox
569
934
  ...(ownerState.labelPlacement === "start" && {
570
- marginLeft: 0, // used for row presentation of radio/checkbox
571
- marginRight: 0,
935
+ marginInlineStart: 0, // used for row presentation of radio/checkbox
936
+ marginInlineEnd: 0,
572
937
  }),
573
938
  ...(ownerState.labelPlacement === "top" && {
574
- marginLeft: 0,
939
+ marginInlineStart: 0,
575
940
  }),
576
941
  ...(ownerState.labelPlacement === "bottom" && {
577
- marginLeft: 0,
942
+ marginInlineStart: 0,
578
943
  }),
579
944
  "&:not(:last-child)": {
580
945
  marginBottom: theme.spacing(2),
@@ -620,6 +985,7 @@ export const components: ThemeOptions["components"] = {
620
985
  "&:last-child": {
621
986
  marginBottom: 0,
622
987
  },
988
+ textAlign: "start",
623
989
  }),
624
990
  },
625
991
  },
@@ -627,7 +993,7 @@ export const components: ThemeOptions["components"] = {
627
993
  styleOverrides: {
628
994
  root: ({ theme }) => ({
629
995
  color: theme.palette.text.primary,
630
- lineHeight: "1.14285714",
996
+ lineHeight: theme.typography.ui.lineHeight,
631
997
  fontSize: "1rem",
632
998
  fontWeight: 600,
633
999
  marginBottom: theme.spacing(2),
@@ -639,6 +1005,9 @@ export const components: ThemeOptions["components"] = {
639
1005
  },
640
1006
  MuiIconButton: {
641
1007
  styleOverrides: {
1008
+ edgeEnd: ({ theme }) => ({
1009
+ marginInlineEnd: theme.spacing(1),
1010
+ }),
642
1011
  root: ({ theme }) => ({
643
1012
  padding: theme.spacing(1),
644
1013
  fontSize: theme.typography.body1.fontSize,
@@ -685,16 +1054,17 @@ export const components: ThemeOptions["components"] = {
685
1054
  styleOverrides: {
686
1055
  root: ({ theme, ownerState }) => ({
687
1056
  display: "flex",
688
- minWidth: "1em",
1057
+ minWidth: "1.25em",
689
1058
  maxHeight: "unset",
1059
+ margin: 0,
690
1060
  alignItems: "center",
691
1061
  whiteSpace: "nowrap",
692
1062
  color: theme.palette.action.active,
693
1063
  ...(ownerState.position === "start" && {
694
- marginInlineEnd: theme.spacing(2),
1064
+ marginInlineStart: theme.spacing(2),
695
1065
  }),
696
1066
  ...(ownerState.position === "end" && {
697
- marginInlineStart: theme.spacing(2),
1067
+ marginInlineEnd: theme.spacing(2),
698
1068
  }),
699
1069
  ...(ownerState.disablePointerEvents === true && {
700
1070
  pointerEvents: "none",
@@ -713,22 +1083,11 @@ export const components: ThemeOptions["components"] = {
713
1083
  flex: "1",
714
1084
  width: "auto",
715
1085
  color: theme.palette.text.primary,
716
- lineHeight: "1.14285714",
1086
+ lineHeight: theme.typography.ui.lineHeight,
717
1087
  borderWidth: theme.mixins.borderWidth,
718
1088
  borderStyle: theme.mixins.borderStyle,
719
1089
  borderRadius: theme.mixins.borderRadius,
720
1090
  borderColor: theme.palette.grey[500],
721
- paddingBlock: `calc(${theme.spacing(3)} - ${theme.mixins.borderWidth})`,
722
- paddingInline: theme.spacing(3),
723
-
724
- ...(ownerState.multiline && {
725
- paddingBlock: theme.spacing(3),
726
- paddingInline: theme.spacing(3),
727
- ...(ownerState.size === "small" && {
728
- paddingBlock: theme.spacing(3),
729
- paddingInline: theme.spacing(3),
730
- }),
731
- }),
732
1091
 
733
1092
  ...(ownerState.fullWidth && {
734
1093
  width: "100%",
@@ -774,14 +1133,19 @@ export const components: ThemeOptions["components"] = {
774
1133
  input: ({ theme }) => ({
775
1134
  boxSizing: "border-box",
776
1135
  height: "auto",
777
- paddingBlock: 0,
778
- paddingInline: 0,
1136
+ paddingBlock: `calc(${theme.spacing(3)} - ${theme.mixins.borderWidth})`,
1137
+ paddingInline: theme.spacing(3),
1138
+ boxShadow: "none",
779
1139
 
780
1140
  [`.${inputBaseClasses.disabled} &`]: {
781
1141
  pointerEvents: "auto",
782
1142
  cursor: "not-allowed",
783
1143
  },
784
1144
 
1145
+ [`.${inputAdornmentClasses.root} + &`]: {
1146
+ paddingInlineStart: theme.spacing(2),
1147
+ },
1148
+
785
1149
  [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {
786
1150
  "&::placeholder": {
787
1151
  color: theme.palette.text.secondary,
@@ -820,10 +1184,10 @@ export const components: ThemeOptions["components"] = {
820
1184
  styleOverrides: {
821
1185
  root: ({ theme }) => ({
822
1186
  color: theme.palette.primary.main,
823
- textDecoration: "none",
1187
+ textDecoration: "underline",
824
1188
 
825
1189
  "&:hover": {
826
- color: theme.palette.primary.main,
1190
+ color: theme.palette.primary.dark,
827
1191
  textDecoration: "underline",
828
1192
  },
829
1193
 
@@ -886,16 +1250,65 @@ export const components: ThemeOptions["components"] = {
886
1250
  },
887
1251
  ],
888
1252
  },
1253
+ MuiListItem: {
1254
+ styleOverrides: {
1255
+ root: {
1256
+ textAlign: "start",
1257
+ },
1258
+ },
1259
+ },
1260
+ MuiListSubheader: {
1261
+ styleOverrides: {
1262
+ root: ({ theme }) => ({
1263
+ paddingBlock: theme.spacing(2),
1264
+ paddingInline: theme.spacing(4),
1265
+ fontSize: theme.typography.caption.fontSize,
1266
+ lineHeight: theme.typography.caption.lineHeight,
1267
+ color: theme.palette.text.secondary,
1268
+ textTransform: "uppercase",
1269
+ }),
1270
+ },
1271
+ },
1272
+ MuiMenuItem: {
1273
+ styleOverrides: {
1274
+ root: ({ theme }) => ({
1275
+ justifyContent: "space-between",
1276
+ gap: theme.spacing(2),
1277
+
1278
+ "&.Mui-selected": {
1279
+ backgroundColor: "transparent",
1280
+ color: theme.palette.primary.main,
1281
+
1282
+ "&:hover": {
1283
+ backgroundColor: theme.palette.primary.lighter,
1284
+ },
1285
+ },
1286
+ }),
1287
+ },
1288
+ },
889
1289
  MuiNativeSelect: {
890
1290
  defaultProps: {
891
1291
  variant: "standard",
892
1292
  },
893
1293
  styleOverrides: {
1294
+ select: {
1295
+ "&:focus": {
1296
+ backgroundColor: "transparent",
1297
+ },
1298
+ },
894
1299
  icon: ({ theme }) => ({
1300
+ insetInlineEnd: theme.spacing(3),
895
1301
  color: theme.palette.text.primary,
896
1302
  }),
897
1303
  },
898
1304
  },
1305
+ MuiPopover: {
1306
+ styleOverrides: {
1307
+ paper: ({ theme }) => ({
1308
+ marginBlockStart: theme.spacing(1),
1309
+ }),
1310
+ },
1311
+ },
899
1312
  MuiRadio: {
900
1313
  defaultProps: {
901
1314
  size: "small",
@@ -932,9 +1345,27 @@ export const components: ThemeOptions["components"] = {
932
1345
  MuiSelect: {
933
1346
  defaultProps: {
934
1347
  variant: "standard",
1348
+ IconComponent: ChevronDownIcon,
935
1349
  },
936
1350
  styleOverrides: {
1351
+ select: ({ theme }) => ({
1352
+ paddingBlock: `calc(${theme.spacing(3)} - ${theme.mixins.borderWidth})`,
1353
+ paddingInline: theme.spacing(3),
1354
+
1355
+ "&:focus": {
1356
+ backgroundColor: "transparent",
1357
+ },
1358
+
1359
+ ".MuiBox-root": {
1360
+ display: "flex",
1361
+ flexWrap: "wrap",
1362
+ gap: theme.spacing(1),
1363
+ marginBlock: `-${theme.spacing(2)}`,
1364
+ marginInline: `-${theme.spacing(2)}`,
1365
+ },
1366
+ }),
937
1367
  icon: ({ theme }) => ({
1368
+ insetInlineEnd: theme.spacing(3),
938
1369
  color: theme.palette.text.primary,
939
1370
  }),
940
1371
  },
@@ -944,6 +1375,11 @@ export const components: ThemeOptions["components"] = {
944
1375
  fontSize: "inherit",
945
1376
  color: "inherit",
946
1377
  },
1378
+ styleOverrides: {
1379
+ root: ({ theme }) => ({
1380
+ fontSize: `${theme.typography.ui.lineHeight}rem`,
1381
+ }),
1382
+ },
947
1383
  },
948
1384
  MuiTab: {
949
1385
  defaultProps: {
@@ -1018,7 +1454,7 @@ export const components: ThemeOptions["components"] = {
1018
1454
  borderRadius: theme.mixins.borderRadius,
1019
1455
  marginBlock: theme.spacing(0),
1020
1456
  marginInline: theme.spacing(0),
1021
- lineHeight: "1.14285714",
1457
+ lineHeight: theme.typography.ui.lineHeight,
1022
1458
 
1023
1459
  "&:only-child": {
1024
1460
  marginBlockEnd: 0,
@@ -1027,6 +1463,16 @@ export const components: ThemeOptions["components"] = {
1027
1463
  ...(ownerState.stickyHeader && {
1028
1464
  borderCollapse: "separate",
1029
1465
  }),
1466
+
1467
+ caption: {
1468
+ clip: "rect(0 0 0 0)",
1469
+ clipPath: "inset(50%)",
1470
+ height: "1px",
1471
+ overflow: "hidden",
1472
+ position: "absolute",
1473
+ whiteSpace: "nowrap",
1474
+ width: "1px",
1475
+ },
1030
1476
  }),
1031
1477
  },
1032
1478
  },
@@ -1090,7 +1536,7 @@ export const components: ThemeOptions["components"] = {
1090
1536
  }),
1091
1537
 
1092
1538
  ...(ownerState.variant === "number" && {
1093
- textAlign: "right",
1539
+ textAlign: "end",
1094
1540
  fontFeatureSettings: '"lnum", "tnum"',
1095
1541
  }),
1096
1542
 
@@ -1104,7 +1550,7 @@ export const components: ThemeOptions["components"] = {
1104
1550
  }),
1105
1551
 
1106
1552
  ...(ownerState.align === "left" && {
1107
- textAlign: "left",
1553
+ textAlign: "start",
1108
1554
  }),
1109
1555
 
1110
1556
  ...(ownerState.align === "center" && {
@@ -1112,7 +1558,7 @@ export const components: ThemeOptions["components"] = {
1112
1558
  }),
1113
1559
 
1114
1560
  ...(ownerState.align === "right" && {
1115
- textAlign: "right",
1561
+ textAlign: "end",
1116
1562
  flexDirection: "row-reverse",
1117
1563
  }),
1118
1564
 
@@ -1123,6 +1569,10 @@ export const components: ThemeOptions["components"] = {
1123
1569
  },
1124
1570
  },
1125
1571
  MuiTableContainer: {
1572
+ defaultProps: {
1573
+ // @ts-expect-error valid prop and value; MUI TS bug
1574
+ component: "figure",
1575
+ },
1126
1576
  styleOverrides: {
1127
1577
  root: ({ theme }) => ({
1128
1578
  width: "unset",
@@ -1188,8 +1638,8 @@ export const components: ThemeOptions["components"] = {
1188
1638
  }),
1189
1639
  icon: ({ theme, ownerState }) => ({
1190
1640
  fontSize: "inherit",
1191
- marginRight: 0,
1192
- marginLeft: 0,
1641
+ marginInlineEnd: 0,
1642
+ marginInlineStart: 0,
1193
1643
  opacity: 0,
1194
1644
  color: "inherit",
1195
1645
  transition: theme.transitions.create(["opacity", "transform"], {
@@ -1253,15 +1703,15 @@ export const components: ThemeOptions["components"] = {
1253
1703
  transformOrigin: "right center",
1254
1704
  ...(ownerState.isRtl
1255
1705
  ? {
1256
- marginLeft: theme.spacing(3),
1706
+ marginInlineStart: theme.spacing(3),
1257
1707
  ...(ownerState.touch === true && {
1258
- marginLeft: theme.spacing(4),
1708
+ marginInlineStart: theme.spacing(4),
1259
1709
  }),
1260
1710
  }
1261
1711
  : {
1262
- marginRight: theme.spacing(3),
1712
+ marginInlineEnd: theme.spacing(3),
1263
1713
  ...(ownerState.touch === true && {
1264
- marginRight: theme.spacing(4),
1714
+ marginInlineEnd: theme.spacing(4),
1265
1715
  }),
1266
1716
  }),
1267
1717
  },
@@ -1269,15 +1719,15 @@ export const components: ThemeOptions["components"] = {
1269
1719
  transformOrigin: "left center",
1270
1720
  ...(ownerState.isRtl
1271
1721
  ? {
1272
- marginRight: theme.spacing(3),
1722
+ marginInlineEnd: theme.spacing(3),
1273
1723
  ...(ownerState.touch === true && {
1274
- marginRight: theme.spacing(4),
1724
+ marginInlineEnd: theme.spacing(4),
1275
1725
  }),
1276
1726
  }
1277
1727
  : {
1278
- marginLeft: theme.spacing(3),
1728
+ marginInlineStart: theme.spacing(3),
1279
1729
  ...(ownerState.touch === true && {
1280
- marginLeft: theme.spacing(4),
1730
+ marginInlineStart: theme.spacing(4),
1281
1731
  }),
1282
1732
  }),
1283
1733
  },
@@ -1337,7 +1787,6 @@ export const components: ThemeOptions["components"] = {
1337
1787
  subtitle1: "p",
1338
1788
  body1: "p",
1339
1789
  inherit: "p",
1340
- kbd: "kbd",
1341
1790
  legend: "legend",
1342
1791
  },
1343
1792
  },
@@ -1345,22 +1794,6 @@ export const components: ThemeOptions["components"] = {
1345
1794
  paragraph: ({ theme }) => ({
1346
1795
  marginBottom: theme.spacing(4),
1347
1796
  }),
1348
- root: ({ theme, ownerState }) => ({
1349
- ...(ownerState.variant === "kbd" && {
1350
- display: "inline-block",
1351
- minWidth: `calc(${theme.typography.subtitle1.fontSize} * ${theme.typography.h5.lineHeight})`,
1352
- borderStyle: theme.mixins.borderStyle,
1353
- borderWidth: theme.mixins.borderWidth,
1354
- borderRadius: theme.mixins.borderRadius,
1355
- borderColor: theme.palette.grey[200],
1356
- backgroundColor: theme.palette.grey[50],
1357
- padding: `calc(${theme.spacing(1)} / 2) ${theme.spacing(1)}`,
1358
- fontSize: theme.typography.subtitle1.fontSize,
1359
- fontWeight: theme.typography.fontWeightRegular,
1360
- lineHeight: theme.typography.h5.lineHeight,
1361
- boxShadow: `0 1px 1px 0 hsla(240, 6%, 12%, 0.05)`,
1362
- }),
1363
- }),
1364
1797
  },
1365
1798
  },
1366
1799
  };