@codecademy/gamut

68.3.068.3.1-alpha.0b3b4f.0
dist/Modals/Dialog.js
~dist/Modals/Dialog.jsModified
+6−2
Index: package/dist/Modals/Dialog.js
===================================================================
--- package/dist/Modals/Dialog.js
+++ package/dist/Modals/Dialog.js
@@ -1,10 +1,12 @@
 import { MiniDeleteIcon } from '@codecademy/gamut-icons';
+import { useId } from 'react';
 import * as React from 'react';
 import { Box } from '../Box';
 import { FillButton, IconButton, TextButton } from '../Button';
 import { Overlay } from '../Overlay';
 import { Text } from '../Typography';
+import { isNullish } from '../utils/nullish';
 import { ModalContainer } from './elements';
 import { ImageContainer } from './ImageContainer';
 import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
 export const Dialog = ({
@@ -25,8 +27,9 @@
   containerFocusRef,
   size = 'small',
   ...rest
 }) => {
+  const titleId = useId();
   const onConfirm = e => {
     onRequestClose();
     confirmCta.onClick?.(e);
   };
@@ -39,10 +42,10 @@
     onRequestClose: onCancel,
     ...rest,
     children: /*#__PURE__*/_jsxs(ModalContainer, {
       "aria-hidden": "false",
-      "aria-label": "dialog",
-      "aria-labelledby": String(title),
+      "aria-label": isNullish(title) ? 'dialog' : undefined,
+      "aria-labelledby": !isNullish(title) ? titleId : undefined,
       "aria-modal": "true",
       "data-autofocus": true,
       layout: "dialog",
       ref: containerFocusRef,
@@ -52,8 +55,9 @@
       children: [/*#__PURE__*/_jsx(Text, {
         as: "h2",
         fontSize: 20,
         gridArea: "title",
+        id: !isNullish(title) ? titleId : undefined,
         lineHeight: "base",
         children: title
       }), !hideCloseButton && /*#__PURE__*/_jsx(Box, {
         gridArea: "close",