@indico-data/design-system 2.14.0 → 2.15.1

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 (31) hide show
  1. package/lib/index.css +47 -0
  2. package/lib/index.d.ts +64 -66
  3. package/lib/index.esm.css +47 -0
  4. package/lib/index.esm.js +9 -10
  5. package/lib/index.esm.js.map +1 -1
  6. package/lib/index.js +9 -9
  7. package/lib/index.js.map +1 -1
  8. package/lib/src/components/card/Card.d.ts +10 -0
  9. package/lib/src/components/card/Card.stories.d.ts +6 -0
  10. package/lib/src/components/card/__tests__/Card.test.d.ts +1 -0
  11. package/lib/src/components/card/index.d.ts +1 -0
  12. package/lib/src/components/index.d.ts +1 -0
  13. package/lib/src/index.d.ts +1 -0
  14. package/lib/src/legacy/components/basic-section/SectionHeader/SectionHeader.d.ts +1 -7
  15. package/lib/src/legacy/components/basic-section/SectionHeader/SectionHeader.stories.d.ts +4 -10
  16. package/lib/src/legacy/components/inputs/SearchInput/SearchInput.d.ts +1 -6
  17. package/lib/src/legacy/components/inputs/SearchInput/SearchInput.stories.d.ts +12 -17
  18. package/package.json +1 -1
  19. package/src/components/card/Card.mdx +14 -0
  20. package/src/components/card/Card.stories.tsx +97 -0
  21. package/src/components/card/Card.tsx +33 -0
  22. package/src/components/card/__tests__/Card.test.tsx +26 -0
  23. package/src/components/card/index.ts +1 -0
  24. package/src/components/card/styles/Card.scss +44 -0
  25. package/src/components/index.ts +1 -0
  26. package/src/index.ts +1 -0
  27. package/src/legacy/components/basic-section/SectionHeader/SectionHeader.tsx +1 -6
  28. package/src/legacy/components/inputs/SearchInput/SearchInput.tsx +1 -5
  29. package/src/styles/index.scss +1 -0
  30. package/src/styles/variables/_dropshadows.scss +5 -0
  31. package/src/styles/variables/index.scss +1 -0
package/lib/index.css CHANGED
@@ -243,6 +243,12 @@
243
243
  --pf-negative-margin-16: -64px;
244
244
  }
245
245
 
246
+ :root,
247
+ :root [data-theme=light],
248
+ :root [data-theme=dark] {
249
+ --pf-dropshadow: 5px 0 10px rgba(0, 0, 0, 0.3);
250
+ }
251
+
246
252
  :root,
247
253
  :root [data-theme=light],
248
254
  :root [data-theme=dark] {
@@ -1559,6 +1565,47 @@ form {
1559
1565
  }
1560
1566
  }
1561
1567
 
1568
+ :root,
1569
+ :root [data-theme=light],
1570
+ :root [data-theme=dark] {
1571
+ --pf-card-background-color: var(--pf-white-color);
1572
+ --pf-card-text-color: var(--pf-gray-color);
1573
+ --pf-card-border-color: var(--pf-gray-color);
1574
+ --pf-card-rounded: var(--pf-rounded);
1575
+ }
1576
+
1577
+ :root [data-theme=dark] {
1578
+ --pf-card-background-color: var(--pf-primary-color);
1579
+ --pf-card-border-color: var(--pf-primary-color-200);
1580
+ --pf-card-text-color: var(--pf-gray-color-100);
1581
+ }
1582
+
1583
+ .card {
1584
+ border-radius: var(--pf-rounded);
1585
+ padding: var(--pf-padding-3);
1586
+ background: var(--pf-card-background-color);
1587
+ border: var(--pf-border-sm) solid var(--pf-card-border-color);
1588
+ box-sizing: border-box;
1589
+ }
1590
+
1591
+ .card__header {
1592
+ margin-bottom: var(--pf-margin-2);
1593
+ }
1594
+ .card__header p {
1595
+ font-size: var(--pf-font-size-subtitle2);
1596
+ }
1597
+
1598
+ .card__content hr {
1599
+ border: var(--pf-border-thin) solid var(--pf-card-border-color);
1600
+ border-bottom: none;
1601
+ margin-bottom: var(--pf-margin-3);
1602
+ margin-top: var(--pf-margin-3);
1603
+ }
1604
+
1605
+ .card--box-shadow {
1606
+ box-shadow: var(--pf-dropshadow);
1607
+ }
1608
+
1562
1609
  :root {
1563
1610
  --pf-font-family-base: "Mulish", sans-serif;
1564
1611
  --pf-font-size-base: 1rem;
package/lib/index.d.ts CHANGED
@@ -7,7 +7,7 @@ import { AriaRadioProps, RadioGroupProps as RadioGroupProps$1, AriaRadioGroupPro
7
7
  import { DateRange } from 'react-day-picker';
8
8
  import { ContainerProps, RowProps, ColProps } from 'react-grid-system';
9
9
  import { TableProps as TableProps$1, Direction as Direction$1, Alignment as Alignment$1 } from 'react-data-table-component';
10
- import { Props as Props$q } from 'react-select';
10
+ import { Props as Props$r } from 'react-select';
11
11
 
12
12
  declare const GlobalStyles: () => react_jsx_runtime.JSX.Element;
13
13
 
@@ -221,25 +221,25 @@ declare const allColors: {
221
221
  readonly backgroundColor: "#182432";
222
222
  };
223
223
 
224
- type Props$p = PermafrostComponent$1 & {
224
+ type Props$q = PermafrostComponent$1 & {
225
225
  content: React$1.ReactNode;
226
226
  header?: React$1.ReactNode | string;
227
227
  open?: boolean;
228
228
  };
229
- declare const Accordion: (props: Props$p) => react_jsx_runtime.JSX.Element;
229
+ declare const Accordion: (props: Props$q) => react_jsx_runtime.JSX.Element;
230
230
 
231
- type Props$o = PermafrostComponent$1 & {
231
+ type Props$p = PermafrostComponent$1 & {
232
232
  style?: object;
233
233
  children: React$1.ReactNode;
234
234
  };
235
- declare const Section: (props: Props$o) => react_jsx_runtime.JSX.Element;
235
+ declare const Section: (props: Props$p) => react_jsx_runtime.JSX.Element;
236
236
 
237
- type Props$n = PermafrostComponent$1 & {
237
+ type Props$o = PermafrostComponent$1 & {
238
238
  title?: string;
239
239
  style?: object;
240
240
  children: React$1.ReactNode;
241
241
  };
242
- declare const SectionBlock: (props: Props$n) => react_jsx_runtime.JSX.Element;
242
+ declare const SectionBlock: (props: Props$o) => react_jsx_runtime.JSX.Element;
243
243
 
244
244
  type SectionBodyProps = PermafrostComponent$1 & {
245
245
  style?: object;
@@ -247,17 +247,11 @@ type SectionBodyProps = PermafrostComponent$1 & {
247
247
  };
248
248
  declare const SectionBody: (props: SectionBodyProps) => react_jsx_runtime.JSX.Element;
249
249
 
250
- type Props$m = PermafrostComponent$1 & {
250
+ type Props$n = PermafrostComponent$1 & {
251
251
  style?: object;
252
252
  children?: React$1.ReactNode;
253
253
  };
254
- declare const SectionHeader: {
255
- (props: Props$m): react_jsx_runtime.JSX.Element;
256
- defaultProps: {
257
- className: string;
258
- style: {};
259
- };
260
- };
254
+ declare const SectionHeader: (props: Props$n) => react_jsx_runtime.JSX.Element;
261
255
 
262
256
  declare const SectionTable: (props: any) => react_jsx_runtime.JSX.Element;
263
257
 
@@ -284,7 +278,7 @@ declare function Button$1(props: ButtonProps$1): React$1.ReactElement;
284
278
  type IconButtonVariant = 'default' | 'primary' | 'destructive' | 'outline';
285
279
  type ButtonSize = 'normal' | 'large';
286
280
 
287
- type Props$l = PermafrostComponent$1 & {
281
+ type Props$m = PermafrostComponent$1 & {
288
282
  /**
289
283
  * Adjusts vertical alignment of the text label, in relation to the icon
290
284
  */
@@ -310,9 +304,9 @@ type Props$l = PermafrostComponent$1 & {
310
304
  *
311
305
  * @see {@link https://react-spectrum.adobe.com/blog/building-a-button-part-1.html}
312
306
  */
313
- declare function IconButton(props: Props$l): react_jsx_runtime.JSX.Element;
307
+ declare function IconButton(props: Props$m): react_jsx_runtime.JSX.Element;
314
308
 
315
- type Props$k = PermafrostComponent$1 & {
309
+ type Props$l = PermafrostComponent$1 & {
316
310
  defaultValue?: string;
317
311
  disabled?: boolean;
318
312
  horizontal?: boolean;
@@ -327,7 +321,7 @@ type Props$k = PermafrostComponent$1 & {
327
321
  value?: string | number;
328
322
  validationErrors?: string[];
329
323
  };
330
- declare const BorderSelect: (props: Props$k) => react_jsx_runtime.JSX.Element;
324
+ declare const BorderSelect: (props: Props$l) => react_jsx_runtime.JSX.Element;
331
325
 
332
326
  type ComboboxProps = {
333
327
  'aria-label'?: string;
@@ -375,7 +369,7 @@ type ComboboxOption = {
375
369
  type ComboboxSize = 'small' | 'medium';
376
370
  type ComboboxVariant = 'default' | 'light';
377
371
 
378
- type Props$j = PermafrostComponent$1 & {
372
+ type Props$k = PermafrostComponent$1 & {
379
373
  disabled?: boolean;
380
374
  initialText?: string;
381
375
  options: {
@@ -389,7 +383,7 @@ type Props$j = PermafrostComponent$1 & {
389
383
  onChange(e: React$1.ChangeEvent<HTMLSelectElement>): void;
390
384
  onClick?(e: React$1.MouseEvent<HTMLDivElement, MouseEvent>): void;
391
385
  };
392
- declare const Select$1: (props: Props$j) => react_jsx_runtime.JSX.Element;
386
+ declare const Select$1: (props: Props$k) => react_jsx_runtime.JSX.Element;
393
387
 
394
388
  /**
395
389
  * Multiselect combobox component. If selections are not bound to outside state
@@ -430,7 +424,7 @@ declare const SingleCombobox: React$1.ForwardRefExoticComponent<PermafrostCompon
430
424
  onChange: (selectedOption: ComboboxOption) => void;
431
425
  } & React$1.RefAttributes<unknown>>;
432
426
 
433
- type Props$i = PermafrostComponent$1 & {
427
+ type Props$j = PermafrostComponent$1 & {
434
428
  children: React$1.ReactNode | string;
435
429
  minLength?: number;
436
430
  onUpdate?(newValue: string): void;
@@ -439,9 +433,9 @@ type Props$i = PermafrostComponent$1 & {
439
433
  * Wrapper component which enables text editing in place directly on a child component,
440
434
  * element, or plain text.
441
435
  */
442
- declare function EditableInput(props: Props$i): react_jsx_runtime.JSX.Element;
436
+ declare function EditableInput(props: Props$j): react_jsx_runtime.JSX.Element;
443
437
 
444
- type Props$h = PermafrostComponent$1 & {
438
+ type Props$i = PermafrostComponent$1 & {
445
439
  autoFocus?: boolean;
446
440
  decrement?(): void;
447
441
  disabled?: boolean;
@@ -461,9 +455,9 @@ type Props$h = PermafrostComponent$1 & {
461
455
  * Basic numeric input field. A label is required, but may be visually hidden
462
456
  * using the `hiddenLabel` property.
463
457
  */
464
- declare function NumberInput(props: Props$h): React$1.ReactElement;
458
+ declare function NumberInput(props: Props$i): React$1.ReactElement;
465
459
 
466
- type Props$g = PermafrostComponent$1 & {
460
+ type Props$h = PermafrostComponent$1 & {
467
461
  inputBorder?: boolean;
468
462
  showClearInputIcon?: boolean;
469
463
  showSearchIcon?: boolean;
@@ -476,14 +470,9 @@ type Props$g = PermafrostComponent$1 & {
476
470
  placeholder?: string;
477
471
  value?: string;
478
472
  };
479
- declare const SearchInput: {
480
- (props: Props$g): react_jsx_runtime.JSX.Element;
481
- defaultProps: {
482
- className: string;
483
- };
484
- };
473
+ declare const SearchInput: (props: Props$h) => react_jsx_runtime.JSX.Element;
485
474
 
486
- type Props$f = PermafrostComponent$1 & {
475
+ type Props$g = PermafrostComponent$1 & {
487
476
  autoComplete?: 'email' | 'current-password' | 'new-password' | string;
488
477
  autoFocus?: boolean;
489
478
  defaultValue?: string;
@@ -504,9 +493,9 @@ type Props$f = PermafrostComponent$1 & {
504
493
  value?: string;
505
494
  readOnly?: boolean;
506
495
  };
507
- declare function TextInput(props: Props$f): React$1.ReactElement;
496
+ declare function TextInput(props: Props$g): React$1.ReactElement;
508
497
 
509
- type Props$e = {
498
+ type Props$f = {
510
499
  ['aria-label']: string;
511
500
  children?: React$1.ReactNode;
512
501
  hideFocusRing: boolean;
@@ -522,7 +511,7 @@ type Props$e = {
522
511
  * A group label must be included: either pass a string or markup into the
523
512
  * `label` prop, or include an `aria-label` or `aria-labelledby` attribute.
524
513
  */
525
- declare function RadioGroup$1({ children, ...props }: Props$e): react_jsx_runtime.JSX.Element;
514
+ declare function RadioGroup$1({ children, ...props }: Props$f): react_jsx_runtime.JSX.Element;
526
515
  /**
527
516
  * A single radio button and its label.
528
517
  */
@@ -551,7 +540,7 @@ declare function Radio$1(props: AriaRadioProps & {
551
540
  isVisuallySelected?: (selectedValue: string) => void;
552
541
  }): react_jsx_runtime.JSX.Element;
553
542
 
554
- type Props$d = PermafrostComponent$1 & {
543
+ type Props$e = PermafrostComponent$1 & {
555
544
  ariaLabel?: string;
556
545
  disableBeforeDate?: Date;
557
546
  disableAfterDate?: Date;
@@ -563,9 +552,9 @@ type Props$d = PermafrostComponent$1 & {
563
552
  selected?: Date | undefined;
564
553
  value: Date | undefined;
565
554
  };
566
- declare const DatePicker: (props: Props$d) => react_jsx_runtime.JSX.Element;
555
+ declare const DatePicker: (props: Props$e) => react_jsx_runtime.JSX.Element;
567
556
 
568
- type Props$c = PermafrostComponent$1 & {
557
+ type Props$d = PermafrostComponent$1 & {
569
558
  ariaLabel?: string;
570
559
  disableBeforeDate?: Date;
571
560
  disableAfterDate?: Date;
@@ -582,32 +571,32 @@ type Props$c = PermafrostComponent$1 & {
582
571
  isOpen?: boolean;
583
572
  clearOnClose?: boolean;
584
573
  };
585
- declare const NoInputDatePicker: (props: Props$c) => react_jsx_runtime.JSX.Element;
574
+ declare const NoInputDatePicker: (props: Props$d) => react_jsx_runtime.JSX.Element;
586
575
 
587
- type Props$b = PermafrostComponent$1 & {
576
+ type Props$c = PermafrostComponent$1 & {
588
577
  ariaLabel?: string;
589
578
  size?: IconSizes$1;
590
579
  style?: React$1.CSSProperties;
591
580
  fill?: string;
592
581
  };
593
- declare function CircleSpinner(props: Props$b): React$1.ReactElement;
582
+ declare function CircleSpinner(props: Props$c): React$1.ReactElement;
594
583
 
595
- type Props$a = PermafrostComponent$1 & {
584
+ type Props$b = PermafrostComponent$1 & {
596
585
  width?: string;
597
586
  };
598
- declare function BarSpinner(props: Props$a): React$1.ReactElement;
587
+ declare function BarSpinner(props: Props$b): React$1.ReactElement;
599
588
 
600
- type Props$9 = PermafrostComponent$1 & {
589
+ type Props$a = PermafrostComponent$1 & {
601
590
  color?: string;
602
591
  overallSize?: string | number;
603
592
  rippleSize?: string | number;
604
593
  showRandomMessage?: boolean;
605
594
  };
606
- declare function CirclePulse(props: Props$9): React$1.ReactElement;
595
+ declare function CirclePulse(props: Props$a): React$1.ReactElement;
607
596
 
608
597
  declare const RandomLoadingMessage: () => react_jsx_runtime.JSX.Element;
609
598
 
610
- type Props$8 = PermafrostComponent$1 & {
599
+ type Props$9 = PermafrostComponent$1 & {
611
600
  backgroundColor?: string;
612
601
  foregroundColor?: string;
613
602
  ringRadius?: number;
@@ -616,11 +605,11 @@ type Props$8 = PermafrostComponent$1 & {
616
605
  value: number;
617
606
  valueFontSize?: number;
618
607
  };
619
- declare function PercentageRing(props: Props$8): react_jsx_runtime.JSX.Element;
608
+ declare function PercentageRing(props: Props$9): react_jsx_runtime.JSX.Element;
620
609
 
621
610
  declare const LoadingList: () => react_jsx_runtime.JSX.Element;
622
611
 
623
- type Props$7 = PermafrostComponent$1 & {
612
+ type Props$8 = PermafrostComponent$1 & {
624
613
  accordion?: boolean;
625
614
  accordionDefaultOpen?: boolean;
626
615
  emptyListMessage?: string;
@@ -657,9 +646,9 @@ type Props$7 = PermafrostComponent$1 & {
657
646
  title: string;
658
647
  totalCount?: number;
659
648
  };
660
- declare const ListTable: (props: Props$7) => react_jsx_runtime.JSX.Element;
649
+ declare const ListTable: (props: Props$8) => react_jsx_runtime.JSX.Element;
661
650
 
662
- type Props$6 = PermafrostComponent$1 & {
651
+ type Props$7 = PermafrostComponent$1 & {
663
652
  currentPage: number;
664
653
  limit: number;
665
654
  pageInfo: {
@@ -674,9 +663,9 @@ type Props$6 = PermafrostComponent$1 & {
674
663
  getNextPage(cursor: number): void;
675
664
  getPreviousPage(cursor: number): void;
676
665
  };
677
- declare function Pagination(props: Props$6): react_jsx_runtime.JSX.Element;
666
+ declare function Pagination(props: Props$7): react_jsx_runtime.JSX.Element;
678
667
 
679
- type Props$5 = PermafrostComponent$1 & {
668
+ type Props$6 = PermafrostComponent$1 & {
680
669
  actionLink?: string;
681
670
  actionText?: string;
682
671
  buttonAction?(): void;
@@ -686,7 +675,7 @@ type Props$5 = PermafrostComponent$1 & {
686
675
  'data-cy': string;
687
676
  };
688
677
  };
689
- declare function Shrug(props: Props$5): React$1.ReactElement;
678
+ declare function Shrug(props: Props$6): React$1.ReactElement;
690
679
 
691
680
  type ModalBaseProps = PermafrostComponent$1 & {
692
681
  children: React$1.ReactNode | React$1.ReactNode[];
@@ -714,7 +703,7 @@ type ModalBaseProps = PermafrostComponent$1 & {
714
703
  */
715
704
  declare function ModalBase(props: ModalBaseProps): react_jsx_runtime.JSX.Element;
716
705
 
717
- type Props$4 = PermafrostComponent$1 & Pick<ModalBaseProps, 'open'> & {
706
+ type Props$5 = PermafrostComponent$1 & Pick<ModalBaseProps, 'open'> & {
718
707
  describedBy?: string;
719
708
  clickOutsideHandler(e?: React$1.SyntheticEvent): void;
720
709
  confirmText?: string;
@@ -726,9 +715,9 @@ type Props$4 = PermafrostComponent$1 & Pick<ModalBaseProps, 'open'> & {
726
715
  title?: string | React$1.ReactNode;
727
716
  width?: number;
728
717
  };
729
- declare function ConfirmModal(props: Props$4): react_jsx_runtime.JSX.Element;
718
+ declare function ConfirmModal(props: Props$5): react_jsx_runtime.JSX.Element;
730
719
 
731
- type Props$3 = {
720
+ type Props$4 = {
732
721
  children: React$1.ReactNode | React$1.ReactNode[];
733
722
  className?: string;
734
723
  isLoading?: boolean;
@@ -740,7 +729,7 @@ type Props$3 = {
740
729
  *
741
730
  * todo: this is an extremely simple version of this component; as I get more familiar with LoadingIndicator use cases, this will be refactored. - jm 9/1/2020
742
731
  */
743
- declare function LoadingAwareContainer(props: Props$3): React$1.ReactElement;
732
+ declare function LoadingAwareContainer(props: Props$4): React$1.ReactElement;
744
733
 
745
734
  interface TextTruncateProps {
746
735
  string: string;
@@ -750,7 +739,7 @@ interface TextTruncateProps {
750
739
  }
751
740
  declare function TextTruncate({ string, maxChars, children, noTitle }: TextTruncateProps): react_jsx_runtime.JSX.Element;
752
741
 
753
- type Props$2 = {
742
+ type Props$3 = {
754
743
  disabled: boolean;
755
744
  onChange: any;
756
745
  value: boolean;
@@ -759,9 +748,9 @@ type Props$2 = {
759
748
  checkedIconName?: IconName$1;
760
749
  notCheckedIconName?: IconName$1;
761
750
  } & PermafrostComponent$1;
762
- declare const Toggle$1: (props: Props$2) => react_jsx_runtime.JSX.Element;
751
+ declare const Toggle$1: (props: Props$3) => react_jsx_runtime.JSX.Element;
763
752
 
764
- type Props$1 = PermafrostComponent$1 & {
753
+ type Props$2 = PermafrostComponent$1 & {
765
754
  questionMark?: boolean;
766
755
  for?: string | null;
767
756
  place?: string;
@@ -772,7 +761,7 @@ type Props$1 = PermafrostComponent$1 & {
772
761
  children: React$1.ReactNode;
773
762
  block?: boolean;
774
763
  };
775
- declare const Tooltip: (props: Props$1) => react_jsx_runtime.JSX.Element;
764
+ declare const Tooltip: (props: Props$2) => react_jsx_runtime.JSX.Element;
776
765
 
777
766
  declare const mix: (color_1: string, color_2: string, weight: number) => string;
778
767
  declare const shade: (color: string, percentage: number) => string;
@@ -1026,7 +1015,7 @@ interface PasswordInputProps {
1026
1015
  }
1027
1016
  declare const PasswordInput: React$1.ForwardRefExoticComponent<Omit<PasswordInputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
1028
1017
 
1029
- interface SelectProps<OptionType extends SelectOption> extends Props$q<OptionType> {
1018
+ interface SelectProps<OptionType extends SelectOption> extends Props$r<OptionType> {
1030
1019
  options: OptionType[];
1031
1020
  }
1032
1021
  declare const Select: <OptionType extends SelectOption>({ classNamePrefix, className, components: customComponents, ...props }: SelectProps<OptionType>) => react_jsx_runtime.JSX.Element;
@@ -1045,13 +1034,22 @@ interface FormProps {
1045
1034
  }
1046
1035
  declare const Form: ({ children, onSubmit, action, method, target, autocomplete, noValidate, enctype, rel, ...rest }: FormProps) => react_jsx_runtime.JSX.Element;
1047
1036
 
1048
- type Props = {
1037
+ type Props$1 = {
1049
1038
  className?: string;
1050
1039
  height?: number;
1051
1040
  width?: number;
1052
1041
  isCircle?: boolean;
1053
1042
  isFullHeight?: boolean;
1054
1043
  };
1055
- declare const Skeleton: ({ className, height, width, isCircle, isFullHeight, ...rest }: Props) => react_jsx_runtime.JSX.Element;
1044
+ declare const Skeleton: ({ className, height, width, isCircle, isFullHeight, ...rest }: Props$1) => react_jsx_runtime.JSX.Element;
1045
+
1046
+ type Props = {
1047
+ className?: string;
1048
+ children: React$1.ReactNode;
1049
+ title?: string;
1050
+ subtitle?: string;
1051
+ hasBoxShadow?: boolean;
1052
+ };
1053
+ declare const Card: React$1.FC<Props>;
1056
1054
 
1057
- export { animation as ANIMATION, Radio$1 as AbstractRadio, RadioGroup as AbstractRadioGroup, Accordion, breakpoints as BREAKPOINT, BarSpinner, BorderSelect, Button, allColors as COLORS, Checkbox, CirclePulse, CircleSpinner, Col, ConfirmModal, Container, DatePicker, EditableInput, Form, GlobalStyles, Icon, IconButton, Input, Button$1 as LegacyButton, ListTable, LoadingAwareContainer, LoadingList, margin as MARGINS, MATH, mediaQueries as MEDIA_QUERIES, ModalBase, MultiCombobox, NoInputDatePicker, NumberInput, padding as PADDINGS, Pagination, PasswordInput, PercentageRing, Radio$2 as Radio, RadioGroup$1 as RadioGroup, Radio as RadioInput, RandomLoadingMessage, Row, spacings as SPACING, SearchInput, Section, SectionBlock, SectionBody, SectionHeader, SectionTable, Select$1 as Select, Select as SelectInput, Shrug, SingleCombobox, Skeleton, typography as TYPOGRAPHY, Table, TextInput, TextTruncate, Textarea, Toggle$1 as Toggle, Toggle as ToggleInput, Tooltip, color as colorUtils, number as numberUtils, string as stringUtils };
1055
+ export { animation as ANIMATION, Radio$1 as AbstractRadio, RadioGroup as AbstractRadioGroup, Accordion, breakpoints as BREAKPOINT, BarSpinner, BorderSelect, Button, allColors as COLORS, Card, Checkbox, CirclePulse, CircleSpinner, Col, ConfirmModal, Container, DatePicker, EditableInput, Form, GlobalStyles, Icon, IconButton, Input, Button$1 as LegacyButton, ListTable, LoadingAwareContainer, LoadingList, margin as MARGINS, MATH, mediaQueries as MEDIA_QUERIES, ModalBase, MultiCombobox, NoInputDatePicker, NumberInput, padding as PADDINGS, Pagination, PasswordInput, PercentageRing, Radio$2 as Radio, RadioGroup$1 as RadioGroup, Radio as RadioInput, RandomLoadingMessage, Row, spacings as SPACING, SearchInput, Section, SectionBlock, SectionBody, SectionHeader, SectionTable, Select$1 as Select, Select as SelectInput, Shrug, SingleCombobox, Skeleton, typography as TYPOGRAPHY, Table, TextInput, TextTruncate, Textarea, Toggle$1 as Toggle, Toggle as ToggleInput, Tooltip, color as colorUtils, number as numberUtils, string as stringUtils };
package/lib/index.esm.css CHANGED
@@ -243,6 +243,12 @@
243
243
  --pf-negative-margin-16: -64px;
244
244
  }
245
245
 
246
+ :root,
247
+ :root [data-theme=light],
248
+ :root [data-theme=dark] {
249
+ --pf-dropshadow: 5px 0 10px rgba(0, 0, 0, 0.3);
250
+ }
251
+
246
252
  :root,
247
253
  :root [data-theme=light],
248
254
  :root [data-theme=dark] {
@@ -1559,6 +1565,47 @@ form {
1559
1565
  }
1560
1566
  }
1561
1567
 
1568
+ :root,
1569
+ :root [data-theme=light],
1570
+ :root [data-theme=dark] {
1571
+ --pf-card-background-color: var(--pf-white-color);
1572
+ --pf-card-text-color: var(--pf-gray-color);
1573
+ --pf-card-border-color: var(--pf-gray-color);
1574
+ --pf-card-rounded: var(--pf-rounded);
1575
+ }
1576
+
1577
+ :root [data-theme=dark] {
1578
+ --pf-card-background-color: var(--pf-primary-color);
1579
+ --pf-card-border-color: var(--pf-primary-color-200);
1580
+ --pf-card-text-color: var(--pf-gray-color-100);
1581
+ }
1582
+
1583
+ .card {
1584
+ border-radius: var(--pf-rounded);
1585
+ padding: var(--pf-padding-3);
1586
+ background: var(--pf-card-background-color);
1587
+ border: var(--pf-border-sm) solid var(--pf-card-border-color);
1588
+ box-sizing: border-box;
1589
+ }
1590
+
1591
+ .card__header {
1592
+ margin-bottom: var(--pf-margin-2);
1593
+ }
1594
+ .card__header p {
1595
+ font-size: var(--pf-font-size-subtitle2);
1596
+ }
1597
+
1598
+ .card__content hr {
1599
+ border: var(--pf-border-thin) solid var(--pf-card-border-color);
1600
+ border-bottom: none;
1601
+ margin-bottom: var(--pf-margin-3);
1602
+ margin-top: var(--pf-margin-3);
1603
+ }
1604
+
1605
+ .card--box-shadow {
1606
+ box-shadow: var(--pf-dropshadow);
1607
+ }
1608
+
1562
1609
  :root {
1563
1610
  --pf-font-family-base: "Mulish", sans-serif;
1564
1611
  --pf-font-size-base: 1rem;
package/lib/index.esm.js CHANGED
@@ -18722,6 +18722,12 @@ const Skeleton = (_a) => {
18722
18722
  return jsx("div", Object.assign({ className: combinedClassName, style: dynamicStyle }, rest));
18723
18723
  };
18724
18724
 
18725
+ const Card = (_a) => {
18726
+ var { className = '', children, title, subtitle, hasBoxShadow = false } = _a, rest = __rest$1(_a, ["className", "children", "title", "subtitle", "hasBoxShadow"]);
18727
+ const cardClasses = y$1('card', { 'card--box-shadow': hasBoxShadow }, className);
18728
+ return (jsxs("div", Object.assign({ className: cardClasses }, rest, { children: [(title || subtitle) && (jsxs("div", { className: "card__header", children: [title && jsx("h2", { children: title }), subtitle && jsx("p", { children: subtitle })] })), jsx("div", { className: "card__content", children: children })] })));
18729
+ };
18730
+
18725
18731
  const StyledAccordion = styled.details `
18726
18732
  summary {
18727
18733
  display: inherit;
@@ -18814,13 +18820,9 @@ const StyledSectionHeader = styled.header `
18814
18820
  `;
18815
18821
 
18816
18822
  const SectionHeader = (props) => {
18817
- const { className, style, children, id } = props, restOfProps = __rest$1(props, ["className", "style", "children", "id"]);
18823
+ const { className = '', style = {}, children, id } = props, restOfProps = __rest$1(props, ["className", "style", "children", "id"]);
18818
18824
  return (jsx(StyledSectionHeader, Object.assign({ className: y$1('SectionHeader', className), "data-cy": props['data-cy'], id: id, style: style }, restOfProps, { children: children })));
18819
18825
  };
18820
- SectionHeader.defaultProps = {
18821
- className: '',
18822
- style: {},
18823
- };
18824
18826
 
18825
18827
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
18826
18828
  // require the crypto API and do not support built-in fallback to lower quality random number
@@ -23212,7 +23214,7 @@ const StyledSearchField = styled.div `
23212
23214
  `;
23213
23215
 
23214
23216
  const SearchInput = (props) => {
23215
- const { id, inputBorder, showSearchIcon, showClearInputIcon, className, inputProps, onChange, onClear, onKeyUp, placeholder, value, } = props;
23217
+ const { id, inputBorder, showSearchIcon, showClearInputIcon, className = '', inputProps, onChange, onClear, onKeyUp, placeholder, value, } = props;
23216
23218
  const getId = id ? id : v4();
23217
23219
  return (jsxs(StyledSearchField, { className: y$1(className, {
23218
23220
  inputBorder,
@@ -23220,9 +23222,6 @@ const SearchInput = (props) => {
23220
23222
  showClearInputIcon,
23221
23223
  }), "data-cy": props['data-cy'], children: [showSearchIcon && (jsx("label", { htmlFor: getId, children: jsx(Icon, { name: "fa-search", ariaLabel: "search" }) })), jsx("input", Object.assign({ "data-testid": props['data-testid'], type: "search", id: getId, placeholder: placeholder, value: value, onChange: onChange, onKeyUp: onKeyUp }, inputProps)), showClearInputIcon && (jsx(Icon, { name: "x-close", ariaLabel: "clear input", className: "clear-input", onClick: onClear }))] }));
23222
23224
  };
23223
- SearchInput.defaultProps = {
23224
- className: '',
23225
- };
23226
23225
 
23227
23226
  const StyledTextInput = styled.div `
23228
23227
  position: relative;
@@ -41543,5 +41542,5 @@ const Tooltip = (props) => {
41543
41542
  openOnClick: props.clickToShow, id: props.for, delayShow: props.delayShow, delayHide: props.delayHide, children: props.children })] }));
41544
41543
  };
41545
41544
 
41546
- export { animation as ANIMATION, Radio$1 as AbstractRadio, RadioGroup$1 as AbstractRadioGroup, Accordion, breakpoints as BREAKPOINT, BarSpinner, BorderSelect, Button$2 as Button, allColors as COLORS, Checkbox, CirclePulse, CircleSpinner, Col, ConfirmModal, Container, DatePicker, EditableInput, Form, GlobalStyles, Icon, IconButton, Input, Button$1 as LegacyButton, ListTable, LoadingAwareContainer, LoadingList, margin as MARGINS, MATH, mediaQueries as MEDIA_QUERIES, ModalBase, MultiCombobox, NoInputDatePicker, NumberInput, padding as PADDINGS, Pagination, PasswordInput, PercentageRing, Radio, RadioGroup, Radio$2 as RadioInput, RandomLoadingMessage, Row$1 as Row, spacings as SPACING, SearchInput, Section, SectionBlock, SectionBody, SectionHeader, SectionTable, Select, Select$1 as SelectInput, Shrug, SingleCombobox, Skeleton, typography as TYPOGRAPHY, Table$1 as Table, TextInput, TextTruncate, Textarea, Toggle, Toggle$1 as ToggleInput, Tooltip, color as colorUtils, number as numberUtils, string as stringUtils };
41545
+ export { animation as ANIMATION, Radio$1 as AbstractRadio, RadioGroup$1 as AbstractRadioGroup, Accordion, breakpoints as BREAKPOINT, BarSpinner, BorderSelect, Button$2 as Button, allColors as COLORS, Card, Checkbox, CirclePulse, CircleSpinner, Col, ConfirmModal, Container, DatePicker, EditableInput, Form, GlobalStyles, Icon, IconButton, Input, Button$1 as LegacyButton, ListTable, LoadingAwareContainer, LoadingList, margin as MARGINS, MATH, mediaQueries as MEDIA_QUERIES, ModalBase, MultiCombobox, NoInputDatePicker, NumberInput, padding as PADDINGS, Pagination, PasswordInput, PercentageRing, Radio, RadioGroup, Radio$2 as RadioInput, RandomLoadingMessage, Row$1 as Row, spacings as SPACING, SearchInput, Section, SectionBlock, SectionBody, SectionHeader, SectionTable, Select, Select$1 as SelectInput, Shrug, SingleCombobox, Skeleton, typography as TYPOGRAPHY, Table$1 as Table, TextInput, TextTruncate, Textarea, Toggle, Toggle$1 as ToggleInput, Tooltip, color as colorUtils, number as numberUtils, string as stringUtils };
41547
41546
  //# sourceMappingURL=index.esm.js.map