@nypl/design-system-react-components 1.0.7 → 1.0.8

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.
@@ -1,4 +1,4 @@
1
- import { chakra, useStyleConfig, Icon as Icon$2, Box, Accordion as Accordion$2, AccordionPanel, AccordionItem, AccordionButton, Breadcrumb as Breadcrumb$1, BreadcrumbItem, BreadcrumbLink, Button as Button$2, useMediaQuery, Stack, Heading as Heading$2, useMultiStyleConfig, useMergeRefs, LinkBox, LinkOverlay, Text as Text$2, Checkbox as Checkbox$2, CheckboxGroup as CheckboxGroup$2, SimpleGrid as SimpleGrid$1, TableCaption, Thead, Tr, Th, Table as Table$1, Tbody, Td, Input, Textarea, extendTheme, ChakraProvider, useDisclosure, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, CircularProgress, CircularProgressLabel, Progress, Radio as Radio$2, RadioGroup as RadioGroup$2, Select as Select$2, Skeleton as Skeleton$1, RangeSlider, RangeSliderTrack, RangeSliderFilledTrack, RangeSliderThumb, Slider as Slider$1, SliderTrack, SliderFilledTrack, SliderThumb, Tabs as Tabs$1, Tab, TabPanel, TabList, TabPanels, Switch as Switch$1, useTheme } from '@chakra-ui/react';
1
+ import { chakra, useStyleConfig, Icon as Icon$2, Box, Accordion as Accordion$2, AccordionPanel, AccordionItem, AccordionButton, Breadcrumb as Breadcrumb$1, BreadcrumbItem, BreadcrumbLink, Button as Button$2, useMediaQuery, Stack, Heading as Heading$2, useMultiStyleConfig, useMergeRefs, LinkBox, LinkOverlay, Text as Text$2, Checkbox as Checkbox$2, CheckboxGroup as CheckboxGroup$2, SimpleGrid as SimpleGrid$1, TableCaption, Thead, Tr, Th, Table as Table$1, Tbody, Td, useTheme, Input, Textarea, extendTheme, ChakraProvider, useDisclosure, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, CircularProgress, CircularProgressLabel, Progress, Radio as Radio$2, RadioGroup as RadioGroup$2, Select as Select$2, Skeleton as Skeleton$1, RangeSlider, RangeSliderTrack, RangeSliderFilledTrack, RangeSliderThumb, Slider as Slider$1, SliderTrack, SliderFilledTrack, SliderThumb, Tabs as Tabs$1, Tab, TabPanel, TabList, TabPanels, Switch as Switch$1 } from '@chakra-ui/react';
2
2
  export { Box, Center, Circle, ColorModeScript, Flex, Grid, GridItem, HStack, Spacer, Square, Stack, Tab, TabList, TabPanel, TabPanels, VStack, cookieStorageManager, localStorageManager, useColorMode, useColorModeValue } from '@chakra-ui/react';
3
3
  import React__default, { createElement, forwardRef, useState, useEffect, Fragment, useRef } from 'react';
4
4
  import useNativeLazyLoading from '@charlietango/use-native-lazy-loading';
@@ -1720,7 +1720,7 @@ var Icon = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, ref) {
1720
1720
  }
1721
1721
  });
1722
1722
 
1723
- var _excluded$R = ["accordionData", "id", "isDefaultOpen"];
1723
+ var _excluded$R = ["accordionData", "id", "isDefaultOpen", "panelMaxHeight"];
1724
1724
  /**
1725
1725
  * Get the minus or plus icon depending on whether the accordion
1726
1726
  * is open or closed.
@@ -1745,7 +1745,7 @@ var getIcon = function getIcon(isExpanded, index, id) {
1745
1745
  */
1746
1746
 
1747
1747
 
1748
- var getElementsFromData = function getElementsFromData(data, id) {
1748
+ var getElementsFromData = function getElementsFromData(data, id, panelMaxHeight) {
1749
1749
  var _data, _data2;
1750
1750
 
1751
1751
  if (data === void 0) {
@@ -1768,10 +1768,14 @@ var getElementsFromData = function getElementsFromData(data, id) {
1768
1768
  key: index,
1769
1769
  dangerouslySetInnerHTML: {
1770
1770
  __html: content.panel
1771
- }
1771
+ },
1772
+ maxHeight: panelMaxHeight,
1773
+ overflow: "auto"
1772
1774
  }) : React__default.createElement(AccordionPanel, {
1773
1775
  id: id + "-panel-" + index,
1774
- key: index
1776
+ key: index,
1777
+ maxHeight: panelMaxHeight,
1778
+ overflow: "auto"
1775
1779
  }, content.panel);
1776
1780
  return React__default.createElement(AccordionItem, {
1777
1781
  id: id + "-item-" + index,
@@ -1796,7 +1800,7 @@ var getElementsFromData = function getElementsFromData(data, id) {
1796
1800
  flex: "1",
1797
1801
  fontSize: multipleFontSize,
1798
1802
  textAlign: "left"
1799
- }, content.label), getIcon(isExpanded, index, id)), panel);
1803
+ }, content.label), getIcon(isExpanded, index, id)), isExpanded && panel);
1800
1804
  });
1801
1805
  });
1802
1806
  };
@@ -1811,6 +1815,7 @@ var Accordion = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, re
1811
1815
  id = props.id,
1812
1816
  _props$isDefaultOpen = props.isDefaultOpen,
1813
1817
  isDefaultOpen = _props$isDefaultOpen === void 0 ? false : _props$isDefaultOpen,
1818
+ panelMaxHeight = props.panelMaxHeight,
1814
1819
  rest = _objectWithoutPropertiesLoose(props, _excluded$R); // Pass `0` to open the first accordion in the 0-index based array.
1815
1820
 
1816
1821
 
@@ -1820,7 +1825,7 @@ var Accordion = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, re
1820
1825
  defaultIndex: openFirstAccordion,
1821
1826
  id: id,
1822
1827
  ref: ref
1823
- }, rest), getElementsFromData(accordionData, id));
1828
+ }, rest), getElementsFromData(accordionData, id, panelMaxHeight));
1824
1829
  }));
1825
1830
 
1826
1831
  var _excluded$S = ["breadcrumbsData", "breadcrumbsType", "className", "id"];
@@ -2352,19 +2357,19 @@ var Image = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, ref) {
2352
2357
  loading: isLazy ? "lazy" : undefined
2353
2358
  }, srcProp, {
2354
2359
  __css: _extends({}, styles.img, additionalImageStyles)
2355
- }));
2360
+ }, rest));
2356
2361
  var finalImage = useImageWrapper ? React__default.createElement(ImageWrapper, Object.assign({
2357
2362
  additionalWrapperStyles: additionalWrapperStyles,
2358
2363
  aspectRatio: aspectRatio,
2359
2364
  className: className,
2360
2365
  size: size
2361
2366
  }, caption || credit ? {} : rest), imageComponent) : imageComponent;
2362
- return React__default.createElement(Box, Object.assign({
2367
+ return React__default.createElement(Box, {
2363
2368
  ref: finalRefs
2364
- }, rest), caption || credit ? React__default.createElement(Box, Object.assign({
2369
+ }, caption || credit ? React__default.createElement(Box, {
2365
2370
  as: "figure",
2366
2371
  __css: _extends({}, styles.figure, additionalFigureStyles)
2367
- }, rest), finalImage, React__default.createElement(Box, {
2372
+ }, finalImage, React__default.createElement(Box, {
2368
2373
  as: "figcaption",
2369
2374
  __css: styles.figcaption
2370
2375
  }, caption && React__default.createElement(Box, {
@@ -3305,14 +3310,119 @@ var Table = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, ref) {
3305
3310
  }, rest), tableCaption, columnHeadersElems, tableBodyElems());
3306
3311
  }));
3307
3312
 
3313
+ /**
3314
+ * A custom hook that returns the Chakra-based NYPL theme object. This must be
3315
+ * used inside a component that is wrapped in the `DSProvider` component, so
3316
+ * that the theme object can be available to use.
3317
+ */
3318
+
3319
+ function useNYPLTheme() {
3320
+ var theme = useTheme();
3321
+
3322
+ if (!theme || Object.keys(theme).length === 0) {
3323
+ console.warn("NYPL Reservoir useNYPLTheme: hook must be used inside of `<DSProvider />`.");
3324
+ return {};
3325
+ } // Chakra provides a lot of their own styles but
3326
+ // only NYPL styles should be exported.
3327
+
3328
+
3329
+ return {
3330
+ // base, sm, md, lg, xl, 2xl
3331
+ breakpoints: theme.breakpoints,
3332
+ colors: {
3333
+ // primary, secondary
3334
+ brand: theme.colors.brand,
3335
+ // dark mode colors:
3336
+ // ui.disabled, ui.error, ui.focus, ui.link,
3337
+ // ui.status, ui.success, ui.test, ui.warning,
3338
+ // ui.bg, ui.border, ui.typography
3339
+ dark: theme.colors.dark,
3340
+ // blogs, books-and-more, education, locations,
3341
+ // research, research-library, whats-on
3342
+ section: theme.colors.section,
3343
+ transparent: theme.colors.transparent,
3344
+ // black, white, gray, disabled, error, focus, link,
3345
+ // status, success, test, warning, bg, border, typography
3346
+ ui: theme.colors.ui
3347
+ },
3348
+ fontSizes: {
3349
+ "-3": theme.fontSizes["-3"],
3350
+ "-2": theme.fontSizes["-2"],
3351
+ "-1": theme.fontSizes["-1"],
3352
+ "0": theme.fontSizes["0"],
3353
+ "1": theme.fontSizes["1"],
3354
+ "2": theme.fontSizes["2"],
3355
+ "3": theme.fontSizes["3"],
3356
+ "4": theme.fontSizes["4"],
3357
+ // default
3358
+ breadcrumbs: theme.fontSizes.breadcrumbs,
3359
+ // default
3360
+ button: theme.fontSizes.button,
3361
+ // primary, secondary, tertiary, callout
3362
+ heading: theme.fontSizes.heading,
3363
+ // default
3364
+ helper: theme.fontSizes.helper,
3365
+ // default, secondary
3366
+ label: theme.fontSizes.label,
3367
+ // default, caption, tag, mini
3368
+ text: theme.fontSizes.text
3369
+ },
3370
+ fontWeights: {
3371
+ light: theme.fontWeights.light,
3372
+ regular: theme.fontWeights.regular,
3373
+ medium: theme.fontWeights.medium,
3374
+ bold: theme.fontWeights.bold,
3375
+ // default, lastChild
3376
+ breadcrumbs: theme.fontWeights.breadcrumbs,
3377
+ // default
3378
+ button: theme.fontWeights.button,
3379
+ // primary, secondary, tertiary, callout
3380
+ heading: theme.fontWeights.heading,
3381
+ // default
3382
+ helper: theme.fontWeights.helper,
3383
+ // default
3384
+ label: theme.fontWeights.label,
3385
+ // default, caption, tag, mini
3386
+ text: theme.fontWeights.text
3387
+ },
3388
+ fonts: {
3389
+ body: theme.fonts.body,
3390
+ heading: theme.fonts.heading
3391
+ },
3392
+ radii: theme.radii,
3393
+ space: {
3394
+ xxs: theme.space.xxs,
3395
+ xs: theme.space.xs,
3396
+ s: theme.space.s,
3397
+ m: theme.space.m,
3398
+ l: theme.space.l,
3399
+ xl: theme.space.xl,
3400
+ xxl: theme.space.xxl,
3401
+ xxxl: theme.space.xxxl
3402
+ }
3403
+ };
3404
+ }
3405
+
3308
3406
  var DataTable = function DataTable(props) {
3309
- var _props$dataBlack = props.dataBlack,
3310
- dataBlack = _props$dataBlack === void 0 ? ["--", "--", "--"] : _props$dataBlack,
3311
- _props$dataWhite = props.dataWhite,
3312
- dataWhite = _props$dataWhite === void 0 ? ["--", "--", "--"] : _props$dataWhite,
3407
+ var dataBgPageColor = props.dataBgPageColor,
3408
+ dataBgDefaultColor = props.dataBgDefaultColor,
3409
+ _props$dataBlackColor = props.dataBlackColor,
3410
+ dataBlackColor = _props$dataBlackColor === void 0 ? ["--", "--", "--"] : _props$dataBlackColor,
3411
+ dataHeadingColor = props.dataHeadingColor,
3412
+ dataBodyColor = props.dataBodyColor,
3413
+ _props$dataWhiteColor = props.dataWhiteColor,
3414
+ dataWhiteColor = _props$dataWhiteColor === void 0 ? ["--", "--", "--"] : _props$dataWhiteColor,
3313
3415
  _props$textColor = props.textColor,
3314
3416
  textColor = _props$textColor === void 0 ? "ui.white" : _props$textColor;
3315
3417
 
3418
+ var _useNYPLTheme = useNYPLTheme(),
3419
+ ui = _useNYPLTheme.colors.ui;
3420
+
3421
+ var grayxxxxDark = ui.gray["xxxx-dark"];
3422
+ var grayxxxDark = ui.gray["xxx-dark"];
3423
+ var grayLightCool = ui.gray["light-cool"];
3424
+ var grayMedium = ui.gray.medium;
3425
+
3316
3426
  var SuccessIcon = function SuccessIcon() {
3317
3427
  return createElement(Icon, {
3318
3428
  color: textColor,
@@ -3325,24 +3435,44 @@ var DataTable = function DataTable(props) {
3325
3435
  });
3326
3436
  };
3327
3437
 
3328
- var columnHeaders = ["Color", "Ratio", "16px", "36px"];
3329
- var whiteSmallTextSuccess = (dataWhite[1] === "AA" || dataWhite[1] === "AAA") && createElement(SuccessIcon, null);
3330
- var whiteLargeTextSuccess = (dataWhite[2] === "AA" || dataWhite[2] === "AAA") && createElement(SuccessIcon, null);
3331
- var blackSmallTextSuccess = (dataBlack[1] === "AA" || dataBlack[1] === "AAA") && createElement(SuccessIcon, null);
3332
- var blackLargeTextSuccess = (dataBlack[2] === "AA" || dataBlack[2] === "AAA") && createElement(SuccessIcon, null);
3438
+ var successfulContrast = function successfulContrast(dataColor, textSize) {
3439
+ if (textSize === void 0) {
3440
+ textSize = "small";
3441
+ }
3442
+
3443
+ var dataTextIndex = textSize === "small" ? 1 : 2;
3444
+ return (dataColor[dataTextIndex] === "AA" || dataColor[dataTextIndex] === "AAA") && createElement(SuccessIcon, null);
3445
+ };
3446
+
3447
+ var columnHeaders = ["Color", "Ratio", "16px", "36px"]; // All color data have the following two rows.
3448
+
3449
+ var whiteSmallTextSuccess = successfulContrast(dataWhiteColor);
3450
+ var whiteLargeTextSuccess = successfulContrast(dataWhiteColor, "large");
3451
+ var blackSmallTextSuccess = successfulContrast(dataBlackColor);
3452
+ var blackLargeTextSuccess = successfulContrast(dataBlackColor, "large"); // The dark theme colors might have the following color contrast information.
3453
+
3454
+ var bgPageSmallTextSuccess = dataBgPageColor && successfulContrast(dataBgPageColor);
3455
+ var bgPageLargeTextSuccess = dataBgPageColor && successfulContrast(dataBgPageColor, "large");
3456
+ var bgDefaultSmallTextSuccess = dataBgDefaultColor && successfulContrast(dataBgDefaultColor);
3457
+ var bgDefaultLargeTextSuccess = dataBgDefaultColor && successfulContrast(dataBgDefaultColor, "large");
3458
+ var headingSmallTextSuccess = dataHeadingColor && successfulContrast(dataHeadingColor);
3459
+ var headingLargeTextSuccess = dataHeadingColor && successfulContrast(dataHeadingColor, "large");
3460
+ var textSmallTextSuccess = dataBodyColor && successfulContrast(dataBodyColor);
3461
+ var textLargeTextSuccess = dataBodyColor && successfulContrast(dataBodyColor, "large"); // All ColorCards have these two rows.
3462
+
3333
3463
  var tableData = [[createElement("span", {
3334
3464
  key: "colorUiWhite",
3335
3465
  style: {
3336
3466
  color: "white",
3337
3467
  padding: 0
3338
3468
  }
3339
- }, "ui.white"), dataWhite[0] + ":1", createElement(Fragment, null, dataWhite[1], whiteSmallTextSuccess), createElement(Fragment, null, dataWhite[2], whiteLargeTextSuccess)], [createElement("span", {
3469
+ }, "ui.white"), dataWhiteColor[0] + ":1", createElement(Fragment, null, dataWhiteColor[1], whiteSmallTextSuccess), createElement(Fragment, null, dataWhiteColor[2], whiteLargeTextSuccess)], [createElement("span", {
3340
3470
  key: "colorUiBlack",
3341
3471
  style: {
3342
3472
  color: "black",
3343
3473
  padding: 0
3344
3474
  }
3345
- }, "ui.black"), dataBlack[0] + ":1", createElement(Fragment, null, dataBlack[1], blackSmallTextSuccess), createElement(Fragment, null, dataBlack[2], blackLargeTextSuccess)]];
3475
+ }, "ui.black"), dataBlackColor[0] + ":1", createElement(Fragment, null, dataBlackColor[1], blackSmallTextSuccess), createElement(Fragment, null, dataBlackColor[2], blackLargeTextSuccess)]];
3346
3476
  var cellStyles = {
3347
3477
  borderColor: textColor === "ui.white" ? "white !important" : "black !important",
3348
3478
  fontWeight: "medium",
@@ -3364,7 +3494,48 @@ var DataTable = function DataTable(props) {
3364
3494
  fontSize: "text.tag"
3365
3495
  }, cellStyles)
3366
3496
  }
3367
- };
3497
+ }; // For dark mode `ColorCard`s, there are four extra rows.
3498
+
3499
+ if (dataBgPageColor && dataBgPageColor.length > 0) {
3500
+ tableData.push([createElement("span", {
3501
+ key: "colorBgPage",
3502
+ style: {
3503
+ color: grayxxxxDark,
3504
+ padding: 0
3505
+ }
3506
+ }, "bg page"), dataBgPageColor[0] + ":1", createElement(Fragment, null, dataBgPageColor[1], bgPageSmallTextSuccess), createElement(Fragment, null, dataBgPageColor[2], bgPageLargeTextSuccess)]);
3507
+ }
3508
+
3509
+ if (dataBgDefaultColor && dataBgDefaultColor.length > 0) {
3510
+ tableData.push([createElement("span", {
3511
+ key: "colorBgDefault",
3512
+ style: {
3513
+ color: grayxxxDark,
3514
+ padding: 0
3515
+ }
3516
+ }, "bg default"), dataBgDefaultColor[0] + ":1", createElement(Fragment, null, dataBgDefaultColor[1], bgDefaultSmallTextSuccess), createElement(Fragment, null, dataBgDefaultColor[2], bgDefaultLargeTextSuccess)]);
3517
+ }
3518
+
3519
+ if (dataHeadingColor && dataHeadingColor.length > 0) {
3520
+ tableData.push([createElement("span", {
3521
+ key: "colorHeading",
3522
+ style: {
3523
+ color: grayLightCool,
3524
+ padding: 0
3525
+ }
3526
+ }, "heading"), dataHeadingColor[0] + ":1", createElement(Fragment, null, dataHeadingColor[1], headingSmallTextSuccess), createElement(Fragment, null, dataHeadingColor[2], headingLargeTextSuccess)]);
3527
+ }
3528
+
3529
+ if (dataBodyColor && dataBodyColor.length > 0) {
3530
+ tableData.push([createElement("span", {
3531
+ key: "colorText",
3532
+ style: {
3533
+ color: grayMedium,
3534
+ padding: 0
3535
+ }
3536
+ }, "body"), dataBodyColor[0] + ":1", createElement(Fragment, null, dataBodyColor[1], textSmallTextSuccess), createElement(Fragment, null, dataBodyColor[2], textLargeTextSuccess)]);
3537
+ }
3538
+
3368
3539
  return createElement(Table, {
3369
3540
  columnHeaders: columnHeaders,
3370
3541
  showRowDividers: true,
@@ -3375,13 +3546,17 @@ var DataTable = function DataTable(props) {
3375
3546
  };
3376
3547
  var ColorCard = function ColorCard(props) {
3377
3548
  var backgroundColor = props.backgroundColor,
3549
+ dataBgPageColor = props.dataBgPageColor,
3550
+ dataBgDefaultColor = props.dataBgDefaultColor,
3378
3551
  _props$colorName = props.colorName,
3379
3552
  colorName = _props$colorName === void 0 ? "" : _props$colorName,
3380
3553
  colorSource = props.colorSource,
3381
- _props$dataBlack2 = props.dataBlack,
3382
- dataBlack = _props$dataBlack2 === void 0 ? ["--", "--", "--"] : _props$dataBlack2,
3383
- _props$dataWhite2 = props.dataWhite,
3384
- dataWhite = _props$dataWhite2 === void 0 ? ["--", "--", "--"] : _props$dataWhite2,
3554
+ _props$dataBlackColor2 = props.dataBlackColor,
3555
+ dataBlackColor = _props$dataBlackColor2 === void 0 ? ["--", "--", "--"] : _props$dataBlackColor2,
3556
+ dataHeadingColor = props.dataHeadingColor,
3557
+ dataBodyColor = props.dataBodyColor,
3558
+ _props$dataWhiteColor2 = props.dataWhiteColor,
3559
+ dataWhiteColor = _props$dataWhiteColor2 === void 0 ? ["--", "--", "--"] : _props$dataWhiteColor2,
3385
3560
  _props$textColor2 = props.textColor,
3386
3561
  textColor = _props$textColor2 === void 0 ? "ui.white" : _props$textColor2;
3387
3562
  var cssVarName = "--nypl-colors-" + colorName.replace(/\./g, "-");
@@ -3406,9 +3581,13 @@ var ColorCard = function ColorCard(props) {
3406
3581
  fontWeight: "medium",
3407
3582
  noSpace: true,
3408
3583
  size: "tag"
3409
- }, "Base: ", colorSource)), createElement(DataTable, {
3410
- dataBlack: dataBlack,
3411
- dataWhite: dataWhite,
3584
+ }, "Source: ", colorSource)), createElement(DataTable, {
3585
+ dataBgPageColor: dataBgPageColor,
3586
+ dataBgDefaultColor: dataBgDefaultColor,
3587
+ dataBlackColor: dataBlackColor,
3588
+ dataHeadingColor: dataHeadingColor,
3589
+ dataBodyColor: dataBodyColor,
3590
+ dataWhiteColor: dataWhiteColor,
3412
3591
  textColor: textColor
3413
3592
  })));
3414
3593
  };
@@ -4171,21 +4350,32 @@ var breakpoints = /*#__PURE__*/createBreakpoints({
4171
4350
  * All colors can be found in Storybook:
4172
4351
  * https://nypl.github.io/nypl-design-system/reservoir/v1/?path=/docs/style-guide-colors--page
4173
4352
  *
4174
- * All UI colors can be found in Figma:
4353
+ * All UI Fills colors can be found in Figma:
4175
4354
  * https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=47083%3A27674
4176
4355
  *
4177
- * All Brand colors can be found in Figma:
4356
+ * All Brand Fills colors can be found in Figma:
4178
4357
  * https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=15454%3A47007
4179
4358
  *
4359
+ * All Dark Mode UI Fills colors can be found in Figma:
4360
+ * https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=61991%3A45315
4361
+ *
4180
4362
  * At the end of this file, there are objects that extend Chakra's default
4181
4363
  * color shade palette for individual colors. WE DO NOT RECOMMEND to use them
4182
4364
  * and only recommend to use the colors defined by the Design System such as the
4183
4365
  * following "ui", "brand", and "section" colors below.
4184
4366
  */
4185
4367
  // Reusable variables:
4368
+ var black = "#000";
4369
+ var white = "#fff";
4370
+ var grayDark = "#616161";
4371
+ var grayxxxxDark = "#121212";
4372
+ var grayxxxDark = "#191919";
4373
+ var grayxxDark = "#212121";
4374
+ var grayxDark = "#424242";
4375
+ var grayMedium = "#BDBDBD";
4186
4376
  var grayLightCool = "#E9E9E9";
4377
+ var grayxLightCool = "#F5F5F5";
4187
4378
  var grayxxLightCool = "#FAFAFA";
4188
- var grayMedium = "#BDBDBD";
4189
4379
  var brandPrimary = "#C60917";
4190
4380
  var brandSecondary = "#760000";
4191
4381
  var brandObj = {
@@ -4196,8 +4386,8 @@ var colors = {
4196
4386
  transparent: "transparent",
4197
4387
  // ui fills
4198
4388
  ui: {
4199
- black: "#000",
4200
- white: "#fff",
4389
+ black: black,
4390
+ white: white,
4201
4391
  /// State and link utilities
4202
4392
  disabled: {
4203
4393
  primary: grayLightCool,
@@ -4225,18 +4415,81 @@ var colors = {
4225
4415
  primary: "#F0974E",
4226
4416
  secondary: "#EC7B1F"
4227
4417
  },
4418
+ // Semantic colors
4419
+ bg: {
4420
+ "default": grayxLightCool,
4421
+ hover: grayLightCool,
4422
+ active: grayMedium
4423
+ },
4424
+ border: {
4425
+ "default": grayMedium,
4426
+ hover: grayDark
4427
+ },
4428
+ typography: {
4429
+ heading: black,
4430
+ body: black
4431
+ },
4228
4432
  // Grayscale
4229
4433
  gray: {
4230
- "xx-dark": "#212121",
4231
- "x-dark": "#424242",
4232
- xdark: "#424242",
4233
- dark: "#616161",
4434
+ "xxxx-dark": grayxxxxDark,
4435
+ "xxx-dark": grayxxxDark,
4436
+ "xx-dark": grayxxDark,
4437
+ "x-dark": grayxDark,
4438
+ dark: grayDark,
4234
4439
  medium: grayMedium,
4235
4440
  "light-cool": grayLightCool,
4441
+ "x-light-cool": grayxLightCool,
4442
+ "xx-light-cool": grayxxLightCool,
4443
+ // Gray Alts
4236
4444
  "light-warm": "#EFEDEB",
4237
- "x-light-cool": "#F5F5F5",
4238
- "x-light-warm": "#F8F8F7",
4239
- "xx-light-cool": grayxxLightCool
4445
+ "x-light-warm": "#F8F8F7"
4446
+ }
4447
+ },
4448
+ // dark mode ui fills
4449
+ dark: {
4450
+ ui: {
4451
+ /// State and link utilities
4452
+ disabled: {
4453
+ primary: grayxDark,
4454
+ secondary: grayxxDark
4455
+ },
4456
+ error: {
4457
+ primary: "#E1454C",
4458
+ secondary: "#F67C82"
4459
+ },
4460
+ focus: "#5181D4",
4461
+ link: {
4462
+ primary: "#2085D8",
4463
+ secondary: "#50A0E1"
4464
+ },
4465
+ status: {
4466
+ primary: "#6F6544",
4467
+ secondary: "#6F6765"
4468
+ },
4469
+ success: {
4470
+ primary: "#0E3B15",
4471
+ secondary: "#0F2912"
4472
+ },
4473
+ test: "#592B22",
4474
+ warning: {
4475
+ primary: "#493320",
4476
+ secondary: "#482C15"
4477
+ },
4478
+ // Semantic colors
4479
+ bg: {
4480
+ page: grayxxxxDark,
4481
+ "default": grayxxxDark,
4482
+ hover: grayxxDark,
4483
+ active: grayxDark
4484
+ },
4485
+ border: {
4486
+ "default": grayxDark,
4487
+ hover: grayMedium
4488
+ },
4489
+ typography: {
4490
+ heading: grayLightCool,
4491
+ body: grayMedium
4492
+ }
4240
4493
  }
4241
4494
  },
4242
4495
 
@@ -4268,21 +4521,21 @@ var colors = {
4268
4521
 
4269
4522
  /** Research is used for the Research Catalog and SCC. */
4270
4523
  research: {
4271
- primary: "#00838a",
4524
+ primary: "#00838A",
4272
4525
  secondary: "#006166"
4273
4526
  },
4274
4527
 
4275
4528
  /** Research libraries with specific brand colors to adhere to. */
4276
4529
  "research-library": {
4277
- lpa: "#005d53",
4278
- schomburg: "#a03e31",
4530
+ lpa: "#005D53",
4531
+ schomburg: "#A03E31",
4279
4532
  schwartzman: brandSecondary
4280
4533
  },
4281
4534
 
4282
4535
  /** What's On is used for Exhibitions & Events. */
4283
4536
  "whats-on": {
4284
4537
  primary: "#242424",
4285
- secondary: "#000000"
4538
+ secondary: black
4286
4539
  }
4287
4540
  },
4288
4541
 
@@ -6477,11 +6730,11 @@ var SkipNavigation = {
6477
6730
  width: "1px",
6478
6731
  // Only display when the user focuses on the links.
6479
6732
  _focus: {
6480
- border: "1px solid var(—nypl-colors-ui-gray-dark)",
6481
6733
  height: "auto",
6482
- left: "2rem",
6483
- padding: "var(--nypl-space-inset-extranarrow) var(--nypl-space-inset-narrow)",
6484
- top: "3rem",
6734
+ left: "1rem",
6735
+ paddingX: "inset.extranarrow",
6736
+ paddingY: "inset.extranarrow",
6737
+ top: "1rem",
6485
6738
  width: "auto"
6486
6739
  }
6487
6740
  }
@@ -7073,87 +7326,72 @@ var CustomTabs = {
7073
7326
  }
7074
7327
  };
7075
7328
 
7076
- // From @mixin breakout:
7077
- // Used for elements that should be edge-to-edge.
7078
- var breakout = {
7079
- marginEnd: "calc(-50vw + 50%)",
7080
- marginStart: "calc(-50vw + 50%)"
7081
- }; // From the `wrapper` SCSS mixin.
7082
- // TODO: Eventually we may be able to put shared JS style objects
7083
- // into a utils file for other mixins that are shared.
7084
-
7085
- var wrapperStyles$1 = {
7086
- marginY: 0,
7087
- marginX: "auto",
7088
- maxWidth: "1280px",
7089
- paddingTop: 0,
7090
- paddingBottom: 0,
7091
- paddingEnd: "s",
7092
- paddingStart: "s",
7093
- width: "100%"
7094
- };
7329
+ /**
7330
+ * Grid layout based on https://www.joshwcomeau.com/css/full-bleed/
7331
+ */
7095
7332
  var Template = {
7096
7333
  baseStyle: {
7097
7334
  boxSizing: "border-box",
7098
7335
  color: "ui.black",
7099
- // Users with non-overlay scrollbars have a small horizontal scrollbar from
7100
- // our breakout mixin. Fix identified here: https://cloudfour.com/thinks/breaking-out-with-viewport-units-and-calc/#one-big-dumb-caveat
7101
- overflowX: "hidden",
7102
- "*": {
7103
- boxSizing: "inherit"
7104
- },
7105
- "*::after": {
7106
- boxSizing: "inherit"
7107
- },
7108
- "*::before": {
7109
- boxSizing: "inherit"
7110
- }
7336
+ display: "grid",
7337
+ gridTemplateColumns: "\n 1fr\n min(1280px, 100%)\n 1fr",
7338
+ rowGap: "grid.l"
7111
7339
  },
7112
7340
  sizes: {},
7113
7341
  defaultProps: {}
7114
- };
7115
- var TemplateHeader = {
7342
+ }; // Elements that need to breakout will span outside
7343
+ // the center 1280px grid column.
7344
+
7345
+ var TemplateBreakout = {
7116
7346
  baseStyle: {
7117
- marginBottom: "page.hstack"
7347
+ width: "100%",
7348
+ // This could be "1 / 4" and it would mean the same. This is
7349
+ // "future-proof" the grid column assignment to the last column.
7350
+ gridColumn: "1 / -1"
7118
7351
  }
7119
7352
  };
7120
- var TemplateBreakout = {
7121
- baseStyle: /*#__PURE__*/_extends({}, breakout, {
7122
- width: "100vw",
7123
- marginBottom: "page.hstack"
7124
- })
7125
- };
7126
7353
  var TemplateContent = {
7127
- baseStyle: /*#__PURE__*/_extends({}, wrapperStyles$1, {
7128
- display: "block",
7129
- marginBottom: "page.hstack"
7130
- }),
7354
+ baseStyle: {
7355
+ // Set this element to start on the second 1280px grid column.
7356
+ gridColumn: "2",
7357
+ // But this element also contains its own grid system within.
7358
+ display: "grid",
7359
+ gridTemplateColumns: "1fr",
7360
+ paddingY: 0,
7361
+ paddingX: "s",
7362
+ gap: "grid.l"
7363
+ },
7364
+ // With left or right sidebars, we need to set two grid columns and
7365
+ // the column for the sidebar is max 255px width.
7131
7366
  variants: {
7132
- sidebar: {
7133
- display: "flex",
7134
- flexFlow: {
7135
- base: "column nowrap",
7136
- md: "row wrap"
7367
+ left: {
7368
+ gridTemplateColumns: {
7369
+ md: "255px 1fr"
7370
+ }
7371
+ },
7372
+ right: {
7373
+ gridTemplateColumns: {
7374
+ md: "1fr 255px"
7137
7375
  }
7138
7376
  }
7139
7377
  }
7140
7378
  };
7141
- var TemplateContentTop = {
7379
+ var TemplateContentTopBottom = {
7142
7380
  baseStyle: {
7143
- flex: "1 0 100%",
7144
- marginBottom: "page.hstack"
7381
+ gridColumn: {
7382
+ base: "1",
7383
+ md: "1 / span 2"
7384
+ },
7385
+ height: "100%"
7145
7386
  }
7146
7387
  };
7147
7388
  var TemplateContentPrimary = {
7148
- baseStyle: {
7149
- flex: "1 1",
7150
- marginBottom: "page.hstack"
7151
- },
7152
7389
  variants: {
7153
7390
  left: {
7154
- display: "flex",
7155
- flexFlow: "column nowrap",
7156
- order: "1",
7391
+ gridColumn: {
7392
+ base: "1",
7393
+ md: "2"
7394
+ },
7157
7395
  marginEnd: {
7158
7396
  md: 0
7159
7397
  },
@@ -7164,37 +7402,23 @@ var TemplateContentPrimary = {
7164
7402
  }
7165
7403
  };
7166
7404
  var TemplateContentSidebar = {
7167
- baseStyle: {
7168
- flex: {
7169
- base: "0 0 auto",
7170
- md: "0 0 255px"
7171
- },
7172
- order: {
7173
- md: "page.vstack"
7174
- },
7175
- marginBottom: "page.hstack"
7176
- },
7177
7405
  variants: {
7178
7406
  left: {
7179
- marginEnd: {
7180
- base: 0,
7181
- md: "page.vstack"
7182
- }
7407
+ gridColumn: "1"
7183
7408
  },
7184
7409
  right: {
7185
- marginStart: {
7186
- base: 0,
7187
- md: "page.vstack"
7410
+ gridColumn: {
7411
+ base: "1",
7412
+ md: "2"
7188
7413
  }
7189
7414
  }
7190
7415
  }
7191
7416
  };
7192
7417
  var TemplateStyles = {
7193
7418
  Template: Template,
7194
- TemplateHeader: TemplateHeader,
7195
7419
  TemplateBreakout: TemplateBreakout,
7196
7420
  TemplateContent: TemplateContent,
7197
- TemplateContentTop: TemplateContentTop,
7421
+ TemplateContentTopBottom: TemplateContentTopBottom,
7198
7422
  TemplateContentPrimary: TemplateContentPrimary,
7199
7423
  TemplateContentSidebar: TemplateContentSidebar
7200
7424
  };
@@ -12043,7 +12267,7 @@ var Tabs = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, ref) {
12043
12267
  }, React__default.createElement(Box, Object.assign({}, carouselStyle), tabs)), nextButton), panels);
12044
12268
  })); // Tabs is also exported above so the props can display in Storybook.
12045
12269
 
12046
- var _excluded$29 = ["aboveHeader", "breakout", "contentId", "contentPrimary", "contentSidebar", "contentTop", "footer", "header", "sidebar", "renderFooterElement", "renderHeaderElement", "renderSkipNavigation"];
12270
+ var _excluded$29 = ["aboveHeader", "breakout", "contentId", "contentBottom", "contentPrimary", "contentSidebar", "contentTop", "footer", "header", "sidebar", "renderFooterElement", "renderHeaderElement", "renderSkipNavigation"];
12047
12271
  /**
12048
12272
  * The main top-level parent component that wraps all template-related
12049
12273
  * components.
@@ -12080,11 +12304,11 @@ var TemplateAboveHeader = function TemplateAboveHeader(props) {
12080
12304
  */
12081
12305
 
12082
12306
 
12083
- var TemplateHeader$1 = function TemplateHeader(_ref) {
12307
+ var TemplateHeader = function TemplateHeader(_ref) {
12084
12308
  var children = _ref.children,
12085
12309
  _ref$renderHeaderElem = _ref.renderHeaderElement,
12086
12310
  renderHeaderElement = _ref$renderHeaderElem === void 0 ? true : _ref$renderHeaderElem;
12087
- var styles = useStyleConfig("TemplateHeader", {});
12311
+ var styles = useStyleConfig("TemplateBreakout", {});
12088
12312
  var headerElement = React__default.createElement(Box, {
12089
12313
  __css: styles
12090
12314
  }, children); // The user wants to render the `header` HTML element.
@@ -12108,9 +12332,10 @@ var TemplateHeader$1 = function TemplateHeader(_ref) {
12108
12332
  return headerElement;
12109
12333
  };
12110
12334
  /**
12111
- * This optional component should be used inside the `TemplateHeader` component.
12112
- * This is meant to render its children from edge to edge and is most useful
12113
- * for the `Breadcrumbs` and `Hero` components, and other banner-like components.
12335
+ * This component should be used inside the `Template` component to contain both
12336
+ * the `TemplateAboveHeader` and `TemplateHeader` components. This is meant to
12337
+ * render its children from edge to edge and is most useful for the headers,
12338
+ * `Breadcrumbs`, and `Hero` components or other banner-like components.
12114
12339
  */
12115
12340
 
12116
12341
 
@@ -12139,7 +12364,7 @@ var TemplateContent$1 = function TemplateContent(props) {
12139
12364
  _props$sidebar = props.sidebar,
12140
12365
  sidebar = _props$sidebar === void 0 ? "none" : _props$sidebar;
12141
12366
  var styles = useStyleConfig("TemplateContent", {
12142
- variant: sidebar !== "none" ? "sidebar" : null
12367
+ variant: sidebar
12143
12368
  }); // Manually pass in the `sidebar` prop to the `TemplateContentPrimary` and
12144
12369
  // `TemplateContentSidebar` components.
12145
12370
 
@@ -12169,8 +12394,22 @@ var TemplateContent$1 = function TemplateContent(props) {
12169
12394
  */
12170
12395
 
12171
12396
 
12172
- var TemplateContentTop$1 = function TemplateContentTop(props) {
12173
- var styles = useStyleConfig("TemplateContentTop", {});
12397
+ var TemplateContentTop = function TemplateContentTop(props) {
12398
+ var styles = useStyleConfig("TemplateContentTopBottom", {});
12399
+ return React__default.createElement(Box, {
12400
+ __css: styles
12401
+ }, props.children);
12402
+ };
12403
+ /**
12404
+ * This optional component must be used inside the `TemplateContent` component
12405
+ * and after the `TemplateContentPrimary` or `TemplateContentSidebar` component.
12406
+ * This renders content in the main width of the container and should always
12407
+ * render below the primary component and the sidebar component (if any).
12408
+ */
12409
+
12410
+
12411
+ var TemplateContentBottom = function TemplateContentBottom(props) {
12412
+ var styles = useStyleConfig("TemplateContentTopBottom", {});
12174
12413
  return React__default.createElement(Box, {
12175
12414
  __css: styles
12176
12415
  }, props.children);
@@ -12228,6 +12467,7 @@ var TemplateFooter = function TemplateFooter(_ref2) {
12228
12467
  var children = _ref2.children,
12229
12468
  _ref2$renderFooterEle = _ref2.renderFooterElement,
12230
12469
  renderFooterElement = _ref2$renderFooterEle === void 0 ? true : _ref2$renderFooterEle;
12470
+ var styles = useStyleConfig("TemplateBreakout", {});
12231
12471
  var footerElement = React__default.createElement(React__default.Fragment, null, children); // The user wants to render the `footer` HTML element.
12232
12472
 
12233
12473
  if (renderFooterElement) {
@@ -12240,7 +12480,8 @@ var TemplateFooter = function TemplateFooter(_ref2) {
12240
12480
  }
12241
12481
  });
12242
12482
  footerElement = React__default.createElement(Box, {
12243
- as: "footer"
12483
+ as: "footer",
12484
+ __css: styles
12244
12485
  }, children);
12245
12486
  }
12246
12487
 
@@ -12260,6 +12501,7 @@ var TemplateAppContainer = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function
12260
12501
  breakout = props.breakout,
12261
12502
  _props$contentId = props.contentId,
12262
12503
  contentId = _props$contentId === void 0 ? "mainContent" : _props$contentId,
12504
+ contentBottom = props.contentBottom,
12263
12505
  contentPrimary = props.contentPrimary,
12264
12506
  contentSidebar = props.contentSidebar,
12265
12507
  contentTop = props.contentTop,
@@ -12276,20 +12518,20 @@ var TemplateAppContainer = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function
12276
12518
  rest = _objectWithoutPropertiesLoose(props, _excluded$29);
12277
12519
 
12278
12520
  var aboveHeaderElem = aboveHeader && React__default.createElement(TemplateAboveHeader, null, aboveHeader);
12279
- var breakoutElem = breakout && React__default.createElement(TemplateBreakout$1, null, breakout);
12280
- var contentTopElem = contentTop && React__default.createElement(TemplateContentTop$1, null, contentTop);
12521
+ var contentTopElem = contentTop && React__default.createElement(TemplateContentTop, null, contentTop);
12281
12522
  var contentPrimaryElem = contentPrimary && React__default.createElement(TemplateContentPrimary$1, null, contentPrimary);
12523
+ var contentBottomElem = contentBottom && React__default.createElement(TemplateContentBottom, null, contentBottom);
12282
12524
  var contentSidebarElem = contentSidebar && React__default.createElement(TemplateContentSidebar$1, null, contentSidebar);
12283
- return React__default.createElement(Template$1, Object.assign({
12525
+ return React__default.createElement(React__default.Fragment, null, renderSkipNavigation ? React__default.createElement(SkipNavigation$1, null) : null, React__default.createElement(Template$1, Object.assign({
12284
12526
  ref: ref
12285
- }, rest), renderSkipNavigation ? React__default.createElement(SkipNavigation$1, null) : null, aboveHeaderElem, (header || breakoutElem) && React__default.createElement(TemplateHeader$1, {
12527
+ }, rest), React__default.createElement(TemplateBreakout$1, null, aboveHeaderElem, (header || breakout) && React__default.createElement(TemplateHeader, {
12286
12528
  renderHeaderElement: renderHeaderElement
12287
- }, header, breakoutElem), React__default.createElement(TemplateContent$1, {
12529
+ }, header, breakout)), React__default.createElement(TemplateContent$1, {
12288
12530
  id: contentId,
12289
12531
  sidebar: sidebar
12290
- }, contentTopElem, sidebar === "left" && contentSidebarElem, contentPrimaryElem, sidebar === "right" && contentSidebarElem), footer && React__default.createElement(TemplateFooter, {
12532
+ }, contentTopElem, sidebar === "left" && contentSidebarElem, contentPrimaryElem, sidebar === "right" && contentSidebarElem, contentBottomElem), footer && React__default.createElement(TemplateFooter, {
12291
12533
  renderFooterElement: renderFooterElement
12292
- }, footer));
12534
+ }, footer)));
12293
12535
  }));
12294
12536
 
12295
12537
  var _excluded$2a = ["defaultChecked", "helperText", "id", "invalidText", "isChecked", "isDisabled", "isInvalid", "isRequired", "labelText", "name", "onChange", "size"];
@@ -12368,94 +12610,6 @@ var Toggle$2 = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, ref
12368
12610
  }), labelText)));
12369
12611
  }));
12370
12612
 
12371
- /**
12372
- * A custom hook that returns the Chakra-based NYPL theme object. This must be
12373
- * used inside a component that is wrapped in the `DSProvider` component, so
12374
- * that the theme object can be available to use.
12375
- */
12376
-
12377
- function useNYPLTheme() {
12378
- var theme = useTheme();
12379
-
12380
- if (!theme || Object.keys(theme).length === 0) {
12381
- console.warn("NYPL Reservoir useNYPLTheme: hook must be used inside of `<DSProvider />`.");
12382
- return {};
12383
- } // Chakra provides a lot of their own styles but
12384
- // only NYPL styles should be exported.
12385
-
12386
-
12387
- return {
12388
- // base, sm, md, lg, xl, 2xl
12389
- breakpoints: theme.breakpoints,
12390
- colors: {
12391
- // primary, secondary
12392
- brand: theme.colors.brand,
12393
- // blogs, books-and-more, education, locations,
12394
- // research, research-library, whats-on
12395
- section: theme.colors.section,
12396
- transparent: theme.colors.transparent,
12397
- // black, disabled, error, focus, gray, link,
12398
- // status, success, test, warning, white
12399
- ui: theme.colors.ui
12400
- },
12401
- fontSizes: {
12402
- "-3": theme.fontSizes["-3"],
12403
- "-2": theme.fontSizes["-2"],
12404
- "-1": theme.fontSizes["-1"],
12405
- "0": theme.fontSizes["0"],
12406
- "1": theme.fontSizes["1"],
12407
- "2": theme.fontSizes["2"],
12408
- "3": theme.fontSizes["3"],
12409
- "4": theme.fontSizes["4"],
12410
- // default
12411
- breadcrumbs: theme.fontSizes.breadcrumbs,
12412
- // default
12413
- button: theme.fontSizes.button,
12414
- // primary, secondary, tertiary, callout
12415
- heading: theme.fontSizes.heading,
12416
- // default
12417
- helper: theme.fontSizes.helper,
12418
- // default, secondary
12419
- label: theme.fontSizes.label,
12420
- // default, caption, tag, mini
12421
- text: theme.fontSizes.text
12422
- },
12423
- fontWeights: {
12424
- light: theme.fontWeights.light,
12425
- regular: theme.fontWeights.regular,
12426
- medium: theme.fontWeights.medium,
12427
- bold: theme.fontWeights.bold,
12428
- // default, lastChild
12429
- breadcrumbs: theme.fontWeights.breadcrumbs,
12430
- // default
12431
- button: theme.fontWeights.button,
12432
- // primary, secondary, tertiary, callout
12433
- heading: theme.fontWeights.heading,
12434
- // default
12435
- helper: theme.fontWeights.helper,
12436
- // default
12437
- label: theme.fontWeights.label,
12438
- // default, caption, tag, mini
12439
- text: theme.fontWeights.text
12440
- },
12441
- fonts: {
12442
- body: theme.fonts.body,
12443
- heading: theme.fonts.heading
12444
- },
12445
- radii: theme.radii,
12446
- space: {
12447
- xxs: theme.space.xxs,
12448
- xs: theme.space.xs,
12449
- s: theme.space.s,
12450
- m: theme.space.m,
12451
- l: theme.space.l,
12452
- xl: theme.space.xl,
12453
- xxl: theme.space.xxl,
12454
- xxxl: theme.space.xxxl
12455
- }
12456
- };
12457
- }
12458
-
12459
12613
  var _excluded$2b = ["aspectRatio", "className", "descriptionText", "embedCode", "headingText", "helperText", "id", "iframeTitle", "showHelperInvalidText", "videoId", "videoType"];
12460
12614
  var VideoPlayer$1 = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props, ref) {
12461
12615
  var aspectRatio = props.aspectRatio,
@@ -12540,5 +12694,5 @@ var VideoPlayer$1 = /*#__PURE__*/chakra( /*#__PURE__*/forwardRef(function (props
12540
12694
  }, embedElement)));
12541
12695
  }));
12542
12696
 
12543
- export { Accordion, Breadcrumbs, Button, ButtonGroup, Card, CardActions, CardContent, CardHeading, Checkbox, CheckboxGroup, ColorCard, DSProvider, DatePicker, Fieldset, Form, FormField, FormRow, Heading, HelperErrorText, Hero$1 as Hero, HorizontalRule$1 as HorizontalRule, Icon, Image, Label, Link, List$1 as List, Logo$1 as Logo, ModalTrigger, Notification$1 as Notification, Pagination$1 as Pagination, ProgressIndicator$1 as ProgressIndicator, Radio$1 as Radio, RadioGroup$1 as RadioGroup, SearchBar$1 as SearchBar, Select$1 as Select, SimpleGrid, SkeletonLoader$1 as SkeletonLoader, SkipNavigation$1 as SkipNavigation, Slider, StatusBadge$1 as StatusBadge, StructuredContent$1 as StructuredContent, Table, Tabs, Template$1 as Template, TemplateAboveHeader, TemplateAppContainer, TemplateBreakout$1 as TemplateBreakout, TemplateContent$1 as TemplateContent, TemplateContentPrimary$1 as TemplateContentPrimary, TemplateContentSidebar$1 as TemplateContentSidebar, TemplateContentTop$1 as TemplateContentTop, TemplateFooter, TemplateHeader$1 as TemplateHeader, Text, TextInput, Toggle$2 as Toggle, VideoPlayer$1 as VideoPlayer, useCarouselStyles, useModal, useNYPLBreakpoints, useNYPLTheme, useWindowSize };
12697
+ export { Accordion, Breadcrumbs, Button, ButtonGroup, Card, CardActions, CardContent, CardHeading, Checkbox, CheckboxGroup, ColorCard, DSProvider, DatePicker, Fieldset, Form, FormField, FormRow, Heading, HelperErrorText, Hero$1 as Hero, HorizontalRule$1 as HorizontalRule, Icon, Image, Label, Link, List$1 as List, Logo$1 as Logo, ModalTrigger, Notification$1 as Notification, Pagination$1 as Pagination, ProgressIndicator$1 as ProgressIndicator, Radio$1 as Radio, RadioGroup$1 as RadioGroup, SearchBar$1 as SearchBar, Select$1 as Select, SimpleGrid, SkeletonLoader$1 as SkeletonLoader, SkipNavigation$1 as SkipNavigation, Slider, StatusBadge$1 as StatusBadge, StructuredContent$1 as StructuredContent, Table, Tabs, Template$1 as Template, TemplateAboveHeader, TemplateAppContainer, TemplateBreakout$1 as TemplateBreakout, TemplateContent$1 as TemplateContent, TemplateContentPrimary$1 as TemplateContentPrimary, TemplateContentSidebar$1 as TemplateContentSidebar, TemplateContentTop, TemplateFooter, TemplateHeader, Text, TextInput, Toggle$2 as Toggle, VideoPlayer$1 as VideoPlayer, useCarouselStyles, useModal, useNYPLBreakpoints, useNYPLTheme, useWindowSize };
12544
12698
  //# sourceMappingURL=design-system-react-components.esm.js.map