Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(Card): improve the accessibility of the component #4585

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

sarkaaa
Copy link
Member

@sarkaaa sarkaaa commented Jan 21, 2025

Closes https://kiwicom.atlassian.net/browse/FEPLT-2214

This PR enhances the accessibility of the CardSection component which was done before - #4574 . The PR avoids the duplication of actions prop and sets onClick function only to children element.

As agreed before, this PR doesn't cover the variant when onClick !== null && children contains an interactive element (button, link), that should be discussed as a scope of the component's functionality - check documentation.

This Pull Request meets the following criteria:

For new components:

  • Unit and visual regression tests have been added/adjusted for my new feature
  • New Components are registered in index.js of my project
  • New Components have d.ts files and are exported in index.d.ts

Description by Callstackai

This PR improves the accessibility of the Card component by adding click handlers and enhancing keyboard navigation support.

Diagrams of code changes
sequenceDiagram
    actor User
    participant CardSection
    participant ContentWrapper
    participant HandleKeyDown

    User->>CardSection: Interacts with section
    alt Has onClick prop
        CardSection->>ContentWrapper: Renders with onClick
        User->>ContentWrapper: Clicks or presses key
        alt Key pressed
            ContentWrapper->>HandleKeyDown: Process keydown event
            HandleKeyDown-->>ContentWrapper: Trigger onClick if Enter/Space
        else Mouse click
            ContentWrapper->>ContentWrapper: Direct onClick trigger
        end
        ContentWrapper-->>User: Visual feedback (hover/focus states)
    else No onClick prop
        CardSection->>ContentWrapper: Renders without interaction
    end

Loading
Files Changed
FileSummary
packages/orbit-components/src/Card/Card.stories.tsxAdded onClick prop to the Card component and updated the story to include it.
packages/orbit-components/src/Card/CardSection/index.tsxIntroduced a ContentWrapper component to handle click events and improve accessibility features.

Copy link
Contributor

Storybook staging is available at https://kiwicom-orbit-sarka-card-a11y-fix.surge.sh

Copy link
Contributor

github-actions bot commented Jan 21, 2025

Size Change: +79 B (+0.02%)

Total Size: 459 kB

Filename Size Change
packages/orbit-components/lib/Card/CardSection/index.js 1.55 kB +79 B (+5.37%) 🔍
ℹ️ View Unchanged
Filename Size
packages/orbit-components/lib/Accordion/AccordionContext.js 333 B
packages/orbit-components/lib/Accordion/AccordionSection/components/SectionContent.js 289 B
packages/orbit-components/lib/Accordion/AccordionSection/components/SectionFooter.js 420 B
packages/orbit-components/lib/Accordion/AccordionSection/components/SectionHeader.js 779 B
packages/orbit-components/lib/Accordion/AccordionSection/index.js 824 B
packages/orbit-components/lib/Accordion/index.js 652 B
packages/orbit-components/lib/AirportIllustration/index.js 340 B
packages/orbit-components/lib/Alert/AlertButton/consts.js 374 B
packages/orbit-components/lib/Alert/AlertButton/helpers/getAlertButtonBoxShadow.js 576 B
packages/orbit-components/lib/Alert/AlertButton/helpers/getAlertButtonIconForeground.js 267 B
packages/orbit-components/lib/Alert/AlertButton/helpers/getAlertButtonStyles.js 505 B
packages/orbit-components/lib/Alert/AlertButton/helpers/getAlertButtonTypeToken.js 771 B
packages/orbit-components/lib/Alert/AlertButton/index.js 621 B
packages/orbit-components/lib/Alert/consts.js 295 B
packages/orbit-components/lib/Alert/index.js 1.61 kB
packages/orbit-components/lib/Badge/consts.js 268 B
packages/orbit-components/lib/Badge/index.js 695 B
packages/orbit-components/lib/BadgeList/BadgeListItem/index.js 986 B
packages/orbit-components/lib/BadgeList/consts.js 266 B
packages/orbit-components/lib/BadgeList/index.js 337 B
packages/orbit-components/lib/Box/helpers/getBackground.js 220 B
packages/orbit-components/lib/Box/helpers/getBorderRadius.js 212 B
packages/orbit-components/lib/Box/helpers/getColor.js 210 B
packages/orbit-components/lib/Box/helpers/getElevation.js 209 B
packages/orbit-components/lib/Box/helpers/getMargin.js 351 B
packages/orbit-components/lib/Box/helpers/getOverflow.js 207 B
packages/orbit-components/lib/Box/helpers/getPadding.js 355 B
packages/orbit-components/lib/Box/helpers/getPosition.js 206 B
packages/orbit-components/lib/Box/helpers/getTextAlign.js 215 B
packages/orbit-components/lib/Box/helpers/getWrap.js 211 B
packages/orbit-components/lib/Box/helpers/index.js 607 B
packages/orbit-components/lib/Box/helpers/tailwindClasses.js 1.32 kB
packages/orbit-components/lib/Box/index.js 2.02 kB
packages/orbit-components/lib/Breadcrumbs/BreadcrumbsItem/index.js 924 B
packages/orbit-components/lib/Breadcrumbs/index.js 851 B
packages/orbit-components/lib/Button/consts.js 337 B
packages/orbit-components/lib/Button/index.js 1.21 kB
packages/orbit-components/lib/ButtonGroup/index.js 346 B
packages/orbit-components/lib/ButtonLink/consts.js 289 B
packages/orbit-components/lib/ButtonLink/helpers/getButtonLinkCommonProps.js 271 B
packages/orbit-components/lib/ButtonLink/helpers/getButtonLinkIconForeground.js 432 B
packages/orbit-components/lib/ButtonLink/helpers/getButtonLinkStyles.js 474 B
packages/orbit-components/lib/ButtonLink/helpers/getButtonLinkTypeToken.js 388 B
packages/orbit-components/lib/ButtonLink/index.js 918 B
packages/orbit-components/lib/ButtonMobileStore/consts.js 342 B
packages/orbit-components/lib/ButtonMobileStore/index.js 616 B
packages/orbit-components/lib/CallOutBanner/index.js 743 B
packages/orbit-components/lib/Card/CardSection/components/Expandable.js 395 B
packages/orbit-components/lib/Card/components/Header.js 799 B
packages/orbit-components/lib/Card/index.js 859 B
packages/orbit-components/lib/CarrierLogo/consts.js 343 B
packages/orbit-components/lib/CarrierLogo/index.js 1.26 kB
packages/orbit-components/lib/Checkbox/index.js 1.22 kB
packages/orbit-components/lib/ChoiceGroup/components/Feedback.js 554 B
packages/orbit-components/lib/ChoiceGroup/components/FilterWrapper.js 634 B
packages/orbit-components/lib/ChoiceGroup/consts.js 236 B
packages/orbit-components/lib/ChoiceGroup/index.js 1.19 kB
packages/orbit-components/lib/Collapse/index.js 1.19 kB
packages/orbit-components/lib/common/consts.js 225 B
packages/orbit-components/lib/common/getFieldDataState.js 134 B
packages/orbit-components/lib/common/keyMaps.js 203 B
packages/orbit-components/lib/common/placements.js 431 B
packages/orbit-components/lib/common/tailwind/alignContent.js 563 B
packages/orbit-components/lib/common/tailwind/alignItems.js 536 B
packages/orbit-components/lib/common/tailwind/backgroundColor.js 2.33 kB
packages/orbit-components/lib/common/tailwind/color.js 2.33 kB
packages/orbit-components/lib/common/tailwind/direction.js 510 B
packages/orbit-components/lib/common/tailwind/display.js 648 B
packages/orbit-components/lib/common/tailwind/grow.js 405 B
packages/orbit-components/lib/common/tailwind/index.js 530 B
packages/orbit-components/lib/common/tailwind/justify.js 544 B
packages/orbit-components/lib/common/tailwind/margin.js 2.06 kB
packages/orbit-components/lib/common/tailwind/padding.js 1.71 kB
packages/orbit-components/lib/common/tailwind/shrink.js 418 B
packages/orbit-components/lib/common/tailwind/spaceAfter.js 506 B
packages/orbit-components/lib/common/tailwind/spacing.js 1.7 kB
packages/orbit-components/lib/common/tailwind/textAlign.js 506 B
packages/orbit-components/lib/common/tailwind/wrap.js 414 B
packages/orbit-components/lib/CountryFlag/consts.js 1.5 kB
packages/orbit-components/lib/CountryFlag/index.js 838 B
packages/orbit-components/lib/Coupon/index.js 374 B
packages/orbit-components/lib/defaultTheme.js 211 B
packages/orbit-components/lib/Dialog/index.js 1.53 kB
packages/orbit-components/lib/Drawer/components/DrawerClose.js 376 B
packages/orbit-components/lib/Drawer/consts.js 181 B
packages/orbit-components/lib/Drawer/index.js 1.63 kB
packages/orbit-components/lib/ErrorFormTooltip/hooks/useErrorTooltip.js 318 B
packages/orbit-components/lib/ErrorFormTooltip/index.js 407 B
packages/orbit-components/lib/ErrorFormTooltip/Tooltip/index.js 1.62 kB
packages/orbit-components/lib/FeatureIcon/consts.js 236 B
packages/orbit-components/lib/FeatureIcon/index.js 543 B
packages/orbit-components/lib/FormLabel/index.js 650 B
packages/orbit-components/lib/fromPlainObject.js 147 B
packages/orbit-components/lib/getTokens.js 144 B
packages/orbit-components/lib/Heading/consts.js 423 B
packages/orbit-components/lib/Heading/index.js 829 B
packages/orbit-components/lib/Heading/twClasses.js 835 B
packages/orbit-components/lib/Hide/index.js 379 B
packages/orbit-components/lib/hooks/useBoundingRect/index.js 427 B
packages/orbit-components/lib/hooks/useClickOutside/index.js 331 B
packages/orbit-components/lib/hooks/useEventListener/index.js 525 B
packages/orbit-components/lib/hooks/useFocusTrap/consts.js 215 B
packages/orbit-components/lib/hooks/useFocusTrap/index.js 648 B
packages/orbit-components/lib/hooks/useIntersect/index.js 424 B
packages/orbit-components/lib/hooks/useInterval/index.js 276 B
packages/orbit-components/lib/hooks/useIsMounted/index.js 269 B
packages/orbit-components/lib/hooks/useIsMountedRef/index.js 210 B
packages/orbit-components/lib/hooks/useLockScrolling/index.js 557 B
packages/orbit-components/lib/hooks/useLockScrolling/lock-scrolling.js 2.31 kB
packages/orbit-components/lib/hooks/useMediaQuery/index.js 951 B
packages/orbit-components/lib/hooks/usePrevious/index.js 257 B
packages/orbit-components/lib/hooks/useRandomId/index.js 239 B
packages/orbit-components/lib/hooks/useStateWithCallback/index.js 262 B
packages/orbit-components/lib/hooks/useStateWithTimeout/index.js 356 B
packages/orbit-components/lib/hooks/useTheme/index.js 240 B
packages/orbit-components/lib/hooks/useToggle/index.js 266 B
packages/orbit-components/lib/HorizontalScroll/helpers.js 199 B
packages/orbit-components/lib/HorizontalScroll/index.js 1.6 kB
packages/orbit-components/lib/HorizontalScroll/useScroll.js 1.01 kB
packages/orbit-components/lib/Icon/consts.js 307 B
packages/orbit-components/lib/Icon/createIcon.js 349 B
packages/orbit-components/lib/Icon/helpers/whiteListProps.js 252 B
packages/orbit-components/lib/Icon/IconList.js 661 B
packages/orbit-components/lib/Icon/index.js 856 B
packages/orbit-components/lib/icons/Accommodation.js 509 B
packages/orbit-components/lib/icons/AccountCircle.js 608 B
packages/orbit-components/lib/icons/Admin.js 804 B
packages/orbit-components/lib/icons/Ai.js 646 B
packages/orbit-components/lib/icons/AirConditioning.js 1.01 kB
packages/orbit-components/lib/icons/Airplane.js 781 B
packages/orbit-components/lib/icons/AirplaneDown.js 661 B
packages/orbit-components/lib/icons/AirplaneLanding.js 826 B
packages/orbit-components/lib/icons/AirplaneLandingLight.js 770 B
packages/orbit-components/lib/icons/AirplaneReturn.js 788 B
packages/orbit-components/lib/icons/AirplaneTakeoff.js 851 B
packages/orbit-components/lib/icons/AirplaneTakeoffLight.js 781 B
packages/orbit-components/lib/icons/AirplaneUp.js 664 B
packages/orbit-components/lib/icons/AirplaneUpOff.js 751 B
packages/orbit-components/lib/icons/AirportSecurity.js 615 B
packages/orbit-components/lib/icons/Alert.js 508 B
packages/orbit-components/lib/icons/AlertCircle.js 444 B
packages/orbit-components/lib/icons/AlertOctagon.js 413 B
packages/orbit-components/lib/icons/All.js 659 B
packages/orbit-components/lib/icons/AmbulanceLight.js 833 B
packages/orbit-components/lib/icons/Android.js 610 B
packages/orbit-components/lib/icons/Anywhere.js 920 B
packages/orbit-components/lib/icons/Apple.js 602 B
packages/orbit-components/lib/icons/AppNotification.js 787 B
packages/orbit-components/lib/icons/ArrowBack.js 388 B
packages/orbit-components/lib/icons/ArrowDown.js 465 B
packages/orbit-components/lib/icons/ArrowUp.js 450 B
packages/orbit-components/lib/icons/Atm.js 754 B
packages/orbit-components/lib/icons/Attachment.js 547 B
packages/orbit-components/lib/icons/BaggageCabin.js 675 B
packages/orbit-components/lib/icons/BaggageCabinLight.js 507 B
packages/orbit-components/lib/icons/BaggageCabinNone.js 744 B
packages/orbit-components/lib/icons/BaggageCabinNoneLight.js 649 B
packages/orbit-components/lib/icons/BaggageChecked10.js 633 B
packages/orbit-components/lib/icons/BaggageChecked10Light.js 533 B
packages/orbit-components/lib/icons/BaggageChecked10NoneLight.js 665 B
packages/orbit-components/lib/icons/BaggageChecked20.js 628 B
packages/orbit-components/lib/icons/BaggageChecked20Light.js 527 B
packages/orbit-components/lib/icons/BaggageChecked20NoneLight.js 677 B
packages/orbit-components/lib/icons/BaggageChecked30.js 645 B
packages/orbit-components/lib/icons/BaggageChecked30Light.js 540 B
packages/orbit-components/lib/icons/BaggageCheckedNone.js 754 B
packages/orbit-components/lib/icons/BaggageCheckedNoneLight.js 719 B
packages/orbit-components/lib/icons/BaggagePersonal.js 940 B
packages/orbit-components/lib/icons/BaggagePersonalLight.js 508 B
packages/orbit-components/lib/icons/BaggagePersonalNone.js 981 B
packages/orbit-components/lib/icons/BaggagePersonalNoneLight.js 646 B
packages/orbit-components/lib/icons/BaggageRecheck.js 593 B
packages/orbit-components/lib/icons/BaggageSet.js 799 B
packages/orbit-components/lib/icons/BaggageSetLight.js 661 B
packages/orbit-components/lib/icons/BaggageStorage.js 752 B
packages/orbit-components/lib/icons/Bank.js 602 B
packages/orbit-components/lib/icons/BillingDetails.js 666 B
packages/orbit-components/lib/icons/BoardingGate.js 781 B
packages/orbit-components/lib/icons/Boat.js 951 B
packages/orbit-components/lib/icons/Bookmark.js 476 B
packages/orbit-components/lib/icons/Bug.js 876 B
packages/orbit-components/lib/icons/Bus.js 715 B
packages/orbit-components/lib/icons/Cake.js 827 B
packages/orbit-components/lib/icons/Calendar.js 569 B
packages/orbit-components/lib/icons/CalendarAnytime.js 632 B
packages/orbit-components/lib/icons/CalendarDuration.js 626 B
packages/orbit-components/lib/icons/CalendarLight.js 667 B
packages/orbit-components/lib/icons/CalendarRange.js 618 B
packages/orbit-components/lib/icons/CalendarTripLength.js 663 B
packages/orbit-components/lib/icons/Camera.js 633 B
packages/orbit-components/lib/icons/Car.js 736 B
packages/orbit-components/lib/icons/CarDoor.js 478 B
packages/orbit-components/lib/icons/CarRental.js 1.03 kB
packages/orbit-components/lib/icons/Chart.js 539 B
packages/orbit-components/lib/icons/Chat.js 471 B
packages/orbit-components/lib/icons/Check.js 399 B
packages/orbit-components/lib/icons/CheckCircle.js 433 B
packages/orbit-components/lib/icons/ChevronBackward.js 421 B
packages/orbit-components/lib/icons/ChevronDoubleBackward.js 445 B
packages/orbit-components/lib/icons/ChevronDoubleForward.js 434 B
packages/orbit-components/lib/icons/ChevronDown.js 413 B
packages/orbit-components/lib/icons/ChevronForward.js 428 B
packages/orbit-components/lib/icons/ChevronUp.js 418 B
packages/orbit-components/lib/icons/Child.js 784 B
packages/orbit-components/lib/icons/ChildFriendly.js 670 B
packages/orbit-components/lib/icons/Circle.js 334 B
packages/orbit-components/lib/icons/CircleEmpty.js 397 B
packages/orbit-components/lib/icons/CircleFilled.js 432 B
packages/orbit-components/lib/icons/CircleSmall.js 343 B
packages/orbit-components/lib/icons/CircleSmallEmpty.js 369 B
packages/orbit-components/lib/icons/City.js 582 B
packages/orbit-components/lib/icons/Clock.js 464 B
packages/orbit-components/lib/icons/Close.js 446 B
packages/orbit-components/lib/icons/CloseCircle.js 487 B
packages/orbit-components/lib/icons/Cocktail.js 715 B
packages/orbit-components/lib/icons/Code.js 496 B
packages/orbit-components/lib/icons/CodeKiwi.js 430 B
packages/orbit-components/lib/icons/Coffee.js 521 B
packages/orbit-components/lib/icons/ColoredFacebook.js 626 B
packages/orbit-components/lib/icons/ColoredImessage.js 694 B
packages/orbit-components/lib/icons/ColoredMessenger.js 787 B
packages/orbit-components/lib/icons/ColoredSignal.js 1.05 kB
packages/orbit-components/lib/icons/ColoredTelegram.js 821 B
packages/orbit-components/lib/icons/ColoredViber.js 1.36 kB
packages/orbit-components/lib/icons/ColoredWhatsapp.js 858 B
packages/orbit-components/lib/icons/ColorPicker.js 586 B
packages/orbit-components/lib/icons/Compare.js 677 B
packages/orbit-components/lib/icons/Compass.js 479 B
packages/orbit-components/lib/icons/ContactEmail.js 864 B
packages/orbit-components/lib/icons/Copy.js 536 B
packages/orbit-components/lib/icons/CreditCard.js 497 B
packages/orbit-components/lib/icons/CustomerSupport.js 625 B
packages/orbit-components/lib/icons/Dashboard.js 702 B
packages/orbit-components/lib/icons/Deals.js 464 B
packages/orbit-components/lib/icons/DealsV2.js 633 B
packages/orbit-components/lib/icons/DeviceDesktop.js 507 B
packages/orbit-components/lib/icons/DeviceMobile.js 413 B
packages/orbit-components/lib/icons/Diamond.js 619 B
packages/orbit-components/lib/icons/Document.js 581 B
packages/orbit-components/lib/icons/Download.js 514 B
packages/orbit-components/lib/icons/Duplicate.js 668 B
packages/orbit-components/lib/icons/Edit.js 478 B
packages/orbit-components/lib/icons/EditOff.js 557 B
packages/orbit-components/lib/icons/Email.js 596 B
packages/orbit-components/lib/icons/Entertainment.js 520 B
packages/orbit-components/lib/icons/Exchange.js 1.01 kB
packages/orbit-components/lib/icons/Facebook.js 495 B
packages/orbit-components/lib/icons/FamilyAll.js 669 B
packages/orbit-components/lib/icons/FamilyHalf.js 704 B
packages/orbit-components/lib/icons/Feedback.js 475 B
packages/orbit-components/lib/icons/Filters.js 599 B
packages/orbit-components/lib/icons/Flash.js 478 B
packages/orbit-components/lib/icons/FlightDirect.js 451 B
packages/orbit-components/lib/icons/FlightMulticity.js 508 B
packages/orbit-components/lib/icons/FlightNomad.js 692 B
packages/orbit-components/lib/icons/FlightReturn.js 581 B
packages/orbit-components/lib/icons/FlightServices.js 682 B
packages/orbit-components/lib/icons/Fuel.js 659 B
packages/orbit-components/lib/icons/FullScreen.js 619 B
packages/orbit-components/lib/icons/FullScreenOff.js 661 B
packages/orbit-components/lib/icons/Gallery.js 695 B
packages/orbit-components/lib/icons/GenderMan.js 1.06 kB
packages/orbit-components/lib/icons/GenderWoman.js 1.21 kB
packages/orbit-components/lib/icons/Github.js 682 B
packages/orbit-components/lib/icons/Google.js 663 B
packages/orbit-components/lib/icons/GooglePlay.js 492 B
packages/orbit-components/lib/icons/GpsFixed.js 513 B
packages/orbit-components/lib/icons/GpsIos.js 419 B
packages/orbit-components/lib/icons/GpsNotFixed.js 491 B
packages/orbit-components/lib/icons/GpsOff.js 824 B
packages/orbit-components/lib/icons/Grid.js 570 B
packages/orbit-components/lib/icons/Gym.js 544 B
packages/orbit-components/lib/icons/Heart.js 476 B
packages/orbit-components/lib/icons/HeartOutline.js 610 B
packages/orbit-components/lib/icons/History.js 522 B
packages/orbit-components/lib/icons/HospitalSignLight.js 427 B
packages/orbit-components/lib/icons/Inbox.js 415 B
packages/orbit-components/lib/icons/index.js 5.89 kB
packages/orbit-components/lib/icons/Infant.js 1.19 kB
packages/orbit-components/lib/icons/InformationCircle.js 529 B
packages/orbit-components/lib/icons/InformationCircleLight.js 474 B
packages/orbit-components/lib/icons/Instagram.js 1.02 kB
packages/orbit-components/lib/icons/Insurance.js 452 B
packages/orbit-components/lib/icons/InsuranceConfirmed.js 539 B
packages/orbit-components/lib/icons/InsuranceOff.js 507 B
packages/orbit-components/lib/icons/Invoice.js 691 B
packages/orbit-components/lib/icons/ItemCompleted.js 541 B
packages/orbit-components/lib/icons/Kiwicom.js 888 B
packages/orbit-components/lib/icons/KiwicomCare.js 546 B
packages/orbit-components/lib/icons/KiwicomGuarantee.js 655 B
packages/orbit-components/lib/icons/KiwicomNoGuarantee.js 655 B
packages/orbit-components/lib/icons/LegalExpertsLight.js 1.11 kB
packages/orbit-components/lib/icons/Leisure.js 1.07 kB
packages/orbit-components/lib/icons/Link.js 629 B
packages/orbit-components/lib/icons/Linkedin.js 542 B
packages/orbit-components/lib/icons/List.js 381 B
packages/orbit-components/lib/icons/Location.js 419 B
packages/orbit-components/lib/icons/LocationA.js 587 B
packages/orbit-components/lib/icons/LocationAdd.js 497 B
packages/orbit-components/lib/icons/LocationB.js 608 B
packages/orbit-components/lib/icons/LocationC.js 569 B
packages/orbit-components/lib/icons/LocationD.js 542 B
packages/orbit-components/lib/icons/LocationE.js 524 B
packages/orbit-components/lib/icons/LocationF.js 560 B
packages/orbit-components/lib/icons/LocationG.js 616 B
packages/orbit-components/lib/icons/LocationH.js 502 B
packages/orbit-components/lib/icons/LocationI.js 436 B
packages/orbit-components/lib/icons/LocationJ.js 511 B
packages/orbit-components/lib/icons/Lock.js 467 B
packages/orbit-components/lib/icons/LockOpen.js 576 B
packages/orbit-components/lib/icons/Logout.js 602 B
packages/orbit-components/lib/icons/Lounge.js 597 B
packages/orbit-components/lib/icons/Map.js 637 B
packages/orbit-components/lib/icons/Markdown.js 539 B
packages/orbit-components/lib/icons/Meal.js 793 B
packages/orbit-components/lib/icons/MealLight.js 620 B
packages/orbit-components/lib/icons/MedicalInsuranceLight.js 953 B
packages/orbit-components/lib/icons/MedicalProtectionLight.js 694 B
packages/orbit-components/lib/icons/MenuCircle.js 437 B
packages/orbit-components/lib/icons/MenuHamburger.js 449 B
packages/orbit-components/lib/icons/MenuKebab.js 350 B
packages/orbit-components/lib/icons/MenuMeatballs.js 354 B
packages/orbit-components/lib/icons/Messages.js 547 B
packages/orbit-components/lib/icons/MessagesOutline.js 604 B
packages/orbit-components/lib/icons/Minus.js 334 B
packages/orbit-components/lib/icons/MinusCircle.js 371 B
packages/orbit-components/lib/icons/Money.js 593 B
packages/orbit-components/lib/icons/MoneyTransferIn.js 608 B
packages/orbit-components/lib/icons/MoneyTransferOut.js 606 B
packages/orbit-components/lib/icons/Moon.js 450 B
packages/orbit-components/lib/icons/MusicalInstruments.js 871 B
packages/orbit-components/lib/icons/NewWindow.js 559 B
packages/orbit-components/lib/icons/NoFlash.js 547 B
packages/orbit-components/lib/icons/Nonstop.js 657 B
packages/orbit-components/lib/icons/NoRefund.js 946 B
packages/orbit-components/lib/icons/NoRescheduling.js 619 B
packages/orbit-components/lib/icons/Notification.js 462 B
packages/orbit-components/lib/icons/NotificationAdd.js 646 B
packages/orbit-components/lib/icons/NotificationOff.js 567 B
packages/orbit-components/lib/icons/NotificationOn.js 670 B
packages/orbit-components/lib/icons/NoWifiLight.js 674 B
packages/orbit-components/lib/icons/OnlineCheckin.js 523 B
packages/orbit-components/lib/icons/OnlineCheckinOff.js 582 B
packages/orbit-components/lib/icons/Outlook.js 701 B
packages/orbit-components/lib/icons/Paid.js 617 B
packages/orbit-components/lib/icons/Parking.js 440 B
packages/orbit-components/lib/icons/Partners.js 1.69 kB
packages/orbit-components/lib/icons/Passenger.js 503 B
packages/orbit-components/lib/icons/PassengerAdd.js 697 B
packages/orbit-components/lib/icons/PassengerOutline.js 725 B
packages/orbit-components/lib/icons/PassengerRemove.js 642 B
packages/orbit-components/lib/icons/Passengers.js 711 B
packages/orbit-components/lib/icons/Passport.js 855 B
packages/orbit-components/lib/icons/Pet.js 484 B
packages/orbit-components/lib/icons/Pharmacy.js 526 B
packages/orbit-components/lib/icons/Phone.js 437 B
packages/orbit-components/lib/icons/PhoneUpdatesLight.js 591 B
packages/orbit-components/lib/icons/Pin.js 499 B
packages/orbit-components/lib/icons/PinOutline.js 631 B
packages/orbit-components/lib/icons/Placeholder.js 333 B
packages/orbit-components/lib/icons/Play.js 418 B
packages/orbit-components/lib/icons/Playground.js 680 B
packages/orbit-components/lib/icons/Plus.js 430 B
packages/orbit-components/lib/icons/PlusCircle.js 467 B
packages/orbit-components/lib/icons/PlusMinus.js 384 B
packages/orbit-components/lib/icons/Pool.js 724 B
packages/orbit-components/lib/icons/PowerPlug.js 675 B
packages/orbit-components/lib/icons/PowerPlugOff.js 806 B
packages/orbit-components/lib/icons/PriceChange.js 699 B
packages/orbit-components/lib/icons/PriorityBoarding.js 600 B
packages/orbit-components/lib/icons/PriorityBoardingLight.js 511 B
packages/orbit-components/lib/icons/Profit.js 690 B
packages/orbit-components/lib/icons/PromoCode.js 512 B
packages/orbit-components/lib/icons/QrCode.js 875 B
packages/orbit-components/lib/icons/QuestionCircle.js 512 B
packages/orbit-components/lib/icons/Radar.js 554 B
packages/orbit-components/lib/icons/RadiusSearch.js 699 B
packages/orbit-components/lib/icons/RebookingLight.js 689 B
packages/orbit-components/lib/icons/RebookingNoneLight.js 760 B
packages/orbit-components/lib/icons/Refund.js 665 B
packages/orbit-components/lib/icons/RefundLight.js 567 B
packages/orbit-components/lib/icons/RefundNoneLight.js 724 B
packages/orbit-components/lib/icons/Relax.js 702 B
packages/orbit-components/lib/icons/Reload.js 578 B
packages/orbit-components/lib/icons/Remove.js 563 B
packages/orbit-components/lib/icons/Replace.js 608 B
packages/orbit-components/lib/icons/Restaurant.js 515 B
packages/orbit-components/lib/icons/RouteNoStops.js 433 B
packages/orbit-components/lib/icons/RouteOneStop.js 451 B
packages/orbit-components/lib/icons/RouteTwoStops.js 475 B
packages/orbit-components/lib/icons/Search.js 393 B
packages/orbit-components/lib/icons/Seat.js 606 B
packages/orbit-components/lib/icons/SeatAisle.js 646 B
packages/orbit-components/lib/icons/SeatAisleLight.js 991 B
packages/orbit-components/lib/icons/SeatDefaultLight.js 836 B
packages/orbit-components/lib/icons/SeatExtraLegroom.js 659 B
packages/orbit-components/lib/icons/SeatLight.js 691 B
packages/orbit-components/lib/icons/SeatWindow.js 696 B
packages/orbit-components/lib/icons/SeatWindowLight.js 955 B
packages/orbit-components/lib/icons/Security.js 531 B
packages/orbit-components/lib/icons/SelfTransfer.js 893 B
packages/orbit-components/lib/icons/Send.js 458 B
packages/orbit-components/lib/icons/Settings.js 652 B
packages/orbit-components/lib/icons/Share.js 514 B
packages/orbit-components/lib/icons/ShareAndroid.js 512 B
packages/orbit-components/lib/icons/ShareAndroidOutline.js 613 B
packages/orbit-components/lib/icons/ShareIos.js 566 B
packages/orbit-components/lib/icons/Shopping.js 624 B
packages/orbit-components/lib/icons/ShowLess.js 487 B
packages/orbit-components/lib/icons/ShowMore.js 488 B
packages/orbit-components/lib/icons/Sightseeing.js 568 B
packages/orbit-components/lib/icons/Sign.js 569 B
packages/orbit-components/lib/icons/Smoking.js 595 B
packages/orbit-components/lib/icons/SmokingOff.js 690 B
packages/orbit-components/lib/icons/Sms.js 1 kB
packages/orbit-components/lib/icons/Sort.js 518 B
packages/orbit-components/lib/icons/Spa.js 960 B
packages/orbit-components/lib/icons/SportEquipment.js 825 B
packages/orbit-components/lib/icons/Sports.js 687 B
packages/orbit-components/lib/icons/Stackoverflow.js 764 B
packages/orbit-components/lib/icons/StarEmpty.js 595 B
packages/orbit-components/lib/icons/StarFull.js 493 B
packages/orbit-components/lib/icons/Subway.js 848 B
packages/orbit-components/lib/icons/Suitcase.js 532 B
packages/orbit-components/lib/icons/Sun.js 617 B
packages/orbit-components/lib/icons/Sunrise.js 556 B
packages/orbit-components/lib/icons/Taxi.js 883 B
packages/orbit-components/lib/icons/Terminal.js 854 B
packages/orbit-components/lib/icons/TermsAndConditions.js 884 B
packages/orbit-components/lib/icons/ThumbDown.js 608 B
packages/orbit-components/lib/icons/ThumbUp.js 621 B
packages/orbit-components/lib/icons/Ticket.js 525 B
packages/orbit-components/lib/icons/TicketOutline.js 739 B
packages/orbit-components/lib/icons/Tiktok.js 498 B
packages/orbit-components/lib/icons/Timelapse.js 448 B
packages/orbit-components/lib/icons/Timer.js 651 B
packages/orbit-components/lib/icons/Tips.js 701 B
packages/orbit-components/lib/icons/Toilets.js 755 B
packages/orbit-components/lib/icons/Train.js 777 B
packages/orbit-components/lib/icons/Transmission.js 482 B
packages/orbit-components/lib/icons/Trip.js 717 B
packages/orbit-components/lib/icons/TripUpdatesLight.js 567 B
packages/orbit-components/lib/icons/Uber.js 477 B
packages/orbit-components/lib/icons/Upload.js 512 B
packages/orbit-components/lib/icons/UserGroup.js 883 B
packages/orbit-components/lib/icons/UserSingleLight.js 438 B
packages/orbit-components/lib/icons/Visa.js 577 B
packages/orbit-components/lib/icons/Visibility.js 674 B
packages/orbit-components/lib/icons/VisibilityOff.js 846 B
packages/orbit-components/lib/icons/Walk.js 620 B
packages/orbit-components/lib/icons/Wallet.js 575 B
packages/orbit-components/lib/icons/Wheelchair.js 659 B
packages/orbit-components/lib/icons/Wifi.js 608 B
packages/orbit-components/lib/icons/WifiLight.js 476 B
packages/orbit-components/lib/icons/WifiOff.js 761 B
packages/orbit-components/lib/icons/X.js 424 B
packages/orbit-components/lib/icons/Youtube.js 465 B
packages/orbit-components/lib/Illustration/index.js 335 B
packages/orbit-components/lib/index.js 2.49 kB
packages/orbit-components/lib/Inline/consts.js 242 B
packages/orbit-components/lib/Inline/helpers.js 900 B
packages/orbit-components/lib/Inline/index.js 731 B
packages/orbit-components/lib/InputField/consts.js 383 B
packages/orbit-components/lib/InputField/index.js 2.72 kB
packages/orbit-components/lib/InputField/InputTags/index.js 671 B
packages/orbit-components/lib/InputFile/index.js 1.72 kB
packages/orbit-components/lib/InputGroup/consts.js 160 B
packages/orbit-components/lib/InputGroup/index.js 1.98 kB
packages/orbit-components/lib/InputSelect/helpers.js 400 B
packages/orbit-components/lib/InputSelect/index.js 3.56 kB
packages/orbit-components/lib/InputSelect/InputSelectOption/index.js 503 B
packages/orbit-components/lib/Itinerary/context.js 445 B
packages/orbit-components/lib/Itinerary/index.js 524 B
packages/orbit-components/lib/Itinerary/ItineraryBadgeList/index.js 561 B
packages/orbit-components/lib/Itinerary/ItineraryBadgeList/ItineraryBadgeListItem.js 594 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/context.js 469 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/index.js 967 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItineraryIcon.js 909 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItinerarySegmentBanner/index.js 626 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItinerarySegmentDetail/index.js 1.77 kB
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItinerarySegmentStop/index.js 1.2 kB
packages/orbit-components/lib/Itinerary/ItinerarySeparator/Divider.js 1.27 kB
packages/orbit-components/lib/Itinerary/ItinerarySeparator/index.js 549 B
packages/orbit-components/lib/Itinerary/ItineraryStatus/consts.js 211 B
packages/orbit-components/lib/Itinerary/ItineraryStatus/index.js 1.22 kB
packages/orbit-components/lib/Itinerary/ItineraryText/index.js 696 B
packages/orbit-components/lib/Itinerary/utils.js 321 B
packages/orbit-components/lib/Layout/consts.js 462 B
packages/orbit-components/lib/Layout/index.js 591 B
packages/orbit-components/lib/Layout/LayoutColumn/index.js 467 B
packages/orbit-components/lib/LinkList/index.js 605 B
packages/orbit-components/lib/List/consts.js 237 B
packages/orbit-components/lib/List/index.js 658 B
packages/orbit-components/lib/List/ListItem/index.js 494 B
packages/orbit-components/lib/ListChoice/index.js 1.03 kB
packages/orbit-components/lib/Loading/consts.js 236 B
packages/orbit-components/lib/Loading/index.js 1.23 kB
packages/orbit-components/lib/Modal/consts.js 245 B
packages/orbit-components/lib/Modal/helpers/useModalContextFunctions.js 220 B
packages/orbit-components/lib/Modal/index.js 4.34 kB
packages/orbit-components/lib/Modal/ModalCloseButton/index.js 357 B
packages/orbit-components/lib/Modal/ModalContext.js 457 B
packages/orbit-components/lib/Modal/ModalFooter/index.js 1.1 kB
packages/orbit-components/lib/Modal/ModalHeader/index.js 1.11 kB
packages/orbit-components/lib/Modal/ModalSection/index.js 834 B
packages/orbit-components/lib/NavigationBar/index.js 1.27 kB
packages/orbit-components/lib/NotificationBadge/index.js 393 B
packages/orbit-components/lib/OrbitProvider/index.js 870 B
packages/orbit-components/lib/OrbitProvider/QueryContext/index.js 306 B
packages/orbit-components/lib/OrbitProvider/QueryContext/Provider.js 317 B
packages/orbit-components/lib/OrbitProvider/RandomId/Provider.js 365 B
packages/orbit-components/lib/OrbitProvider/ThemeProvider/Provider.js 307 B
packages/orbit-components/lib/Pagination/components/ActiveButton.js 390 B
packages/orbit-components/lib/Pagination/components/CompactPages.js 518 B
packages/orbit-components/lib/Pagination/components/PageButtonLink.js 310 B
packages/orbit-components/lib/Pagination/components/Pages.js 412 B
packages/orbit-components/lib/Pagination/consts.js 190 B
packages/orbit-components/lib/Pagination/index.js 945 B
packages/orbit-components/lib/Popover/components/ContentWrapper.js 2.29 kB
packages/orbit-components/lib/Popover/consts.js 107 B
packages/orbit-components/lib/Popover/index.js 1.38 kB
packages/orbit-components/lib/Portal/index.js 467 B
packages/orbit-components/lib/primitives/BadgePrimitive/index.js 648 B
packages/orbit-components/lib/primitives/ButtonPrimitive/common/consts.js 399 B
packages/orbit-components/lib/primitives/ButtonPrimitive/common/createRel.js 262 B
packages/orbit-components/lib/primitives/ButtonPrimitive/common/getCommonProps.js 504 B
packages/orbit-components/lib/primitives/ButtonPrimitive/common/getIconContainer.js 504 B
packages/orbit-components/lib/primitives/ButtonPrimitive/common/getPadding.js 483 B
packages/orbit-components/lib/primitives/ButtonPrimitive/common/getSizeToken.js 373 B
packages/orbit-components/lib/primitives/ButtonPrimitive/index.js 2.25 kB
packages/orbit-components/lib/primitives/ButtonPrimitive/sizes.js 317 B
packages/orbit-components/lib/primitives/IllustrationPrimitive/IllustrationPrimitiveList.js 491 B
packages/orbit-components/lib/primitives/IllustrationPrimitive/index.js 970 B
packages/orbit-components/lib/primitives/MobileDialogPrimitive/components/DialogContent.js 1.12 kB
packages/orbit-components/lib/primitives/MobileDialogPrimitive/index.js 851 B
packages/orbit-components/lib/primitives/TooltipPrimitive/components/TooltipContent.js 1.72 kB
packages/orbit-components/lib/primitives/TooltipPrimitive/components/TooltipWrapper.js 502 B
packages/orbit-components/lib/primitives/TooltipPrimitive/index.js 1.11 kB
packages/orbit-components/lib/Radio/index.js 1.16 kB
packages/orbit-components/lib/Seat/components/primitives/Edge.js 378 B
packages/orbit-components/lib/Seat/components/primitives/SymbolUnavailable.js 269 B
packages/orbit-components/lib/Seat/components/primitives/Text.js 463 B
packages/orbit-components/lib/Seat/components/primitives/TransitionPathFill.js 540 B
packages/orbit-components/lib/Seat/components/primitives/TransitionPathStroke.js 521 B
packages/orbit-components/lib/Seat/components/SeatCircle.js 4.47 kB
packages/orbit-components/lib/Seat/components/SeatLegend/index.js 661 B
packages/orbit-components/lib/Seat/components/SeatNormal.js 936 B
packages/orbit-components/lib/Seat/components/SeatSmall.js 937 B
packages/orbit-components/lib/Seat/consts.js 257 B
packages/orbit-components/lib/Seat/index.js 1.01 kB
packages/orbit-components/lib/SegmentedSwitch/index.js 943 B
packages/orbit-components/lib/SegmentedSwitch/SwitchSegment/index.js 898 B
packages/orbit-components/lib/Select/index.js 2.06 kB
packages/orbit-components/lib/Separator/index.js 999 B
packages/orbit-components/lib/ServiceLogo/consts.js 809 B
packages/orbit-components/lib/ServiceLogo/index.js 647 B
packages/orbit-components/lib/Skeleton/index.js 310 B
packages/orbit-components/lib/Skeleton/presets/Button.js 364 B
packages/orbit-components/lib/Skeleton/presets/Card.js 346 B
packages/orbit-components/lib/Skeleton/presets/Image.js 366 B
packages/orbit-components/lib/Skeleton/presets/index.js 210 B
packages/orbit-components/lib/Skeleton/presets/List.js 385 B
packages/orbit-components/lib/Skeleton/presets/Text.js 377 B
packages/orbit-components/lib/Skeleton/Svg.js 1.12 kB
packages/orbit-components/lib/SkipLink/index.js 614 B
packages/orbit-components/lib/SkipNavigation/index.js 1.13 kB
packages/orbit-components/lib/Slider/components/Bar/index.js 786 B
packages/orbit-components/lib/Slider/components/Handle/index.js 1.09 kB
packages/orbit-components/lib/Slider/components/Histogram/index.js 774 B
packages/orbit-components/lib/Slider/consts.js 207 B
packages/orbit-components/lib/Slider/index.js 2.67 kB
packages/orbit-components/lib/Slider/utils/calculateCountOf.js 294 B
packages/orbit-components/lib/Slider/utils/index.js 1.38 kB
packages/orbit-components/lib/SmartPassIllustrations/illustrations/IllustrationWrapper.js 597 B
packages/orbit-components/lib/SmartPassIllustrations/illustrations/SmartPassV1.js 4.62 kB
packages/orbit-components/lib/SmartPassIllustrations/illustrations/SmartPassV2.js 4.51 kB
packages/orbit-components/lib/SmartPassIllustrations/illustrations/SmartPassV3.js 3.37 kB
packages/orbit-components/lib/SmartPassIllustrations/illustrations/SmartPassV4.js 2.64 kB
packages/orbit-components/lib/SmartPassIllustrations/illustrations/SmartPassV5.js 2.96 kB
packages/orbit-components/lib/SmartPassIllustrations/index.js 238 B
packages/orbit-components/lib/SocialButton/consts.js 330 B
packages/orbit-components/lib/SocialButton/helpers/getSocialButtonBoxShadow.js 558 B
packages/orbit-components/lib/SocialButton/helpers/getSocialButtonIcon.js 395 B
packages/orbit-components/lib/SocialButton/helpers/getSocialButtonIconForeground.js 268 B
packages/orbit-components/lib/SocialButton/helpers/getSocialButtonStyles.js 501 B
packages/orbit-components/lib/SocialButton/helpers/getSocialButtonTypeToken.js 557 B
packages/orbit-components/lib/SocialButton/index.js 717 B
packages/orbit-components/lib/Stack/index.js 1.55 kB
packages/orbit-components/lib/Stepper/index.js 717 B
packages/orbit-components/lib/Stepper/StepperStateless/index.js 1.28 kB
packages/orbit-components/lib/StopoverArrow/consts.js 186 B
packages/orbit-components/lib/StopoverArrow/index.js 1.22 kB
packages/orbit-components/lib/Switch/index.js 924 B
packages/orbit-components/lib/Table/consts.js 214 B
packages/orbit-components/lib/Table/index.js 1.24 kB
packages/orbit-components/lib/Table/TableBody/index.js 294 B
packages/orbit-components/lib/Table/TableCell/consts.js 396 B
packages/orbit-components/lib/Table/TableCell/index.js 627 B
packages/orbit-components/lib/Table/TableFooter/index.js 295 B
packages/orbit-components/lib/Table/TableHead/index.js 299 B
packages/orbit-components/lib/Table/TableRow/index.js 283 B
packages/orbit-components/lib/Tabs/components/Tab/consts.js 199 B
packages/orbit-components/lib/Tabs/components/Tab/index.js 1.11 kB
packages/orbit-components/lib/Tabs/components/TabList/index.js 835 B
packages/orbit-components/lib/Tabs/components/TabPanel/index.js 667 B
packages/orbit-components/lib/Tabs/components/TabPanels/index.js 415 B
packages/orbit-components/lib/Tabs/index.js 425 B
packages/orbit-components/lib/Tabs/TabContext.js 539 B
packages/orbit-components/lib/Tag/consts.js 217 B
packages/orbit-components/lib/Tag/index.js 1.23 kB
packages/orbit-components/lib/Text/consts.js 505 B
packages/orbit-components/lib/Text/helpers/twClasses.js 666 B
packages/orbit-components/lib/Text/index.js 677 B
packages/orbit-components/lib/Textarea/consts.js 178 B
packages/orbit-components/lib/Textarea/index.js 1.42 kB
packages/orbit-components/lib/TextLink/consts.js 319 B
packages/orbit-components/lib/TextLink/helpers/twClasses.js 679 B
packages/orbit-components/lib/TextLink/index.js 1.23 kB
packages/orbit-components/lib/Tile/components/TileContent/index.js 432 B
packages/orbit-components/lib/Tile/components/TileExpandable/index.js 870 B
packages/orbit-components/lib/Tile/components/TileHeader/index.js 1.02 kB
packages/orbit-components/lib/Tile/components/TileWrapper/index.js 700 B
packages/orbit-components/lib/Tile/index.js 725 B
packages/orbit-components/lib/TileGroup/index.js 504 B
packages/orbit-components/lib/Timeline/index.js 762 B
packages/orbit-components/lib/Timeline/TimelineContext.js 522 B
packages/orbit-components/lib/Timeline/TimelineStep/components/ProgressLine.js 722 B
packages/orbit-components/lib/Timeline/TimelineStep/components/TextWrapper.js 333 B
packages/orbit-components/lib/Timeline/TimelineStep/components/TimelineStepDesktop.js 813 B
packages/orbit-components/lib/Timeline/TimelineStep/components/TimelineStepMobile.js 621 B
packages/orbit-components/lib/Timeline/TimelineStep/components/TypeIcon.js 872 B
packages/orbit-components/lib/Timeline/TimelineStep/consts.js 171 B
packages/orbit-components/lib/Timeline/TimelineStep/index.js 688 B
packages/orbit-components/lib/Toast/consts.js 241 B
packages/orbit-components/lib/Toast/hooks/useSwipe.js 787 B
packages/orbit-components/lib/Toast/index.js 269 B
packages/orbit-components/lib/Toast/ToastMessage.js 1.25 kB
packages/orbit-components/lib/Toast/ToastRoot.js 766 B
packages/orbit-components/lib/Tooltip/consts.js 175 B
packages/orbit-components/lib/Tooltip/index.js 617 B
packages/orbit-components/lib/Truncate/index.js 422 B
packages/orbit-components/lib/utils/boundingClientRect/index.js 366 B
packages/orbit-components/lib/utils/cloneWithTooltip/index.js 206 B
packages/orbit-components/lib/utils/debounce/index.js 186 B
packages/orbit-components/lib/utils/Grid/index.js 1.51 kB
packages/orbit-components/lib/utils/handleKeyDown/index.js 290 B
packages/orbit-components/lib/utils/layout/consts.js 479 B
packages/orbit-components/lib/utils/layout/index.js 630 B
packages/orbit-components/lib/utils/mediaQuery/index.js 363 B
packages/orbit-components/lib/utils/mergeRefs/index.js 259 B
packages/orbit-components/lib/utils/randomID/index.js 194 B
packages/orbit-components/lib/utils/rtl/index.js 237 B
packages/orbit-components/lib/utils/scroll/index.js 244 B
packages/orbit-components/lib/utils/Slide/index.js 1.21 kB
packages/orbit-components/lib/utils/transition/index.js 336 B
packages/orbit-components/lib/utils/validateDecrement/index.js 221 B
packages/orbit-components/lib/utils/validateIncrement/index.js 220 B
packages/orbit-components/lib/Wizard/index.js 1.22 kB
packages/orbit-components/lib/Wizard/WizardContext.js 448 B
packages/orbit-components/lib/Wizard/WizardStep.js 1.46 kB
packages/orbit-components/lib/Wizard/WizardStepIcon.js 713 B

compressed-size-action

Copy link

cloudflare-workers-and-pages bot commented Jan 21, 2025

Deploying orbit with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2abcca2
Status: ✅  Deploy successful!
Preview URL: https://341673e6.orbit.pages.dev
Branch Preview URL: https://sarka-card-a11y-fix.orbit.pages.dev

View logs

@sarkaaa sarkaaa force-pushed the sarka/card-a11y-fix branch 2 times, most recently from d847976 to 55b517f Compare January 23, 2025 11:55
Copy link
Contributor

Storybook staging is available at https://kiwicom-orbit-sarka-card-a11y-fix.surge.sh

Playroom staging is available at https://kiwicom-orbit-sarka-card-a11y-fix.surge.sh/playroom

@sarkaaa sarkaaa force-pushed the sarka/card-a11y-fix branch 4 times, most recently from 9db2842 to 1afd500 Compare January 24, 2025 15:21
Copy link

@callstackai callstackai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Key Issues

The PR review highlights a critical issue where the children prop is used as a function without type checking, which can lead to runtime errors if children is not a function.

@sarkaaa sarkaaa force-pushed the sarka/card-a11y-fix branch from 1afd500 to c0a5a49 Compare January 24, 2025 15:40
<Stack inline grow={false} justify="end">
{actions}
</Stack>
const InteractiveWrapper = ({
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've created this component to avoid code duplication (rendered 3 times within this file).

@sarkaaa sarkaaa force-pushed the sarka/card-a11y-fix branch from c0a5a49 to 879c2b8 Compare January 24, 2025 15:55
/>
{actions && <Actions actions={actions} />}
<div className="p-400 lm:p-600 ">
<InteractiveWrapper onClick={!children ? onClick : undefined}>
Copy link
Member Author

@sarkaaa sarkaaa Jan 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added this !children condition, bcs in case that the CardSection has both - header and children and onClick, then the CardSection component is focusable twice.

@sarkaaa sarkaaa force-pushed the sarka/card-a11y-fix branch from 879c2b8 to 79ce698 Compare January 24, 2025 16:29
@sarkaaa sarkaaa force-pushed the sarka/card-a11y-fix branch 3 times, most recently from 2c8b08f to 850a2d5 Compare January 27, 2025 16:19
@sarkaaa sarkaaa changed the title draft: feat(Card): improve the accessibility of the component feat(Card): improve the accessibility of the component Jan 27, 2025
@sarkaaa sarkaaa force-pushed the sarka/card-a11y-fix branch from 850a2d5 to 2abcca2 Compare January 28, 2025 10:03
@@ -339,12 +340,19 @@ export const CardWithMixedSections: Story = {
<CardSection title={sectionTitle} description={sectionDescription}>
Section Content
</CardSection>
<CardSection onClick={onClick} title={sectionTitle} description={sectionDescription}>
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a variant with CardSection with onClick function, I haven't found this variant in SB.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would also add stories for onClick together with actions, both non/expanded.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added these to the story so I can check all cases, so all my comments in the review are based on also these

<Card>
        <CardSection
          actions={<ButtonLink onClick={handleClick}>Open</ButtonLink>}
          onClick={onClick}
          expandable={false}
          title={sectionTitle}
        >
          Section Content with onClick
        </CardSection>
        <CardSection
          actions={<ButtonLink onClick={handleClick}>Open</ButtonLink>}
          onClick={onClick}
          expandable
          title={sectionTitle}
        >
          Section Content with onClick
        </CardSection>
</Card>

@@ -339,12 +340,19 @@ export const CardWithMixedSections: Story = {
<CardSection title={sectionTitle} description={sectionDescription}>
Section Content
</CardSection>
<CardSection onClick={onClick} title={sectionTitle} description={sectionDescription}>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would also add stories for onClick together with actions, both non/expanded.

import Stack from "../../Stack";
import handleKeyDown from "../../utils/handleKeyDown";

const ContentWrapper = ({
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I understand correctly, you created this Wrapper to solve nested interactive elements when both actions and onClick are provided?

onKeyDown={onClick ? handleKeyDown(onClick) : undefined}
onClick={onClick || undefined}
className={cx(
"orbit-card-wrapper-button flex-1 focus:outline-none",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find it odd that there is class "orbit-card-wrapper-button" even if this is not a button & in case of title/header and children, it's present there twice 🤔

<div
className={cx(
"duration-fast lm:border-x border-b transition-all ease-in-out",
"duration-fast lm:border-x relative border-b transition-all ease-in-out",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When the card is not expandable, the focus/outline animation is rather weird and slow compared to expandable card, probably caused by the transition duration? It also looks like there is black border/outline added right before the blue one. And when section is expandable, the grey border disappears and is replaced by the blue one, not happening when not expandable. Can you take a look at these?

onClick != null && "hover:bg-white-normal-hover cursor-pointer",
onClick && !expandable && "hover:bg-white-normal-hover",
onClick &&
"has-[.orbit-card-wrapper-button:focus]:focus-within:rounded-100 has-[.orbit-card-wrapper-button:focus]:focus-within:outline-blue-normal has-[.orbit-card-wrapper-button:focus]:focus-within:outline has-[.orbit-card-wrapper-button:focus]:focus-within:outline-2",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bottom outline/border is broken when the section is expanded 😬 Can you check, please?

Snímek obrazovky 2025-01-30 v 14 28 20

{actions && <Actions actions={actions} />}
</div>
)}

{children && expandable && (
<Expandable expanded={opened} slideID={slideID} labelID={slideID}>
<div className="font-base text-normal text-primary-foreground px-400 lm:px-600 w-full leading-normal">
<div className="py-400 lm:py-600 border-elevation-flat-border-color border-t">
<ContentWrapper
onClick={opened ? onClick : undefined}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this change on purpose? Because currently on production, when section is opened, onClick event is not fired.

Shouldn't be there also grey hover effect on this section when expanded, same as on production? Currently it's only on the Header part.

// See comment above
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
tabIndex={onClick == null ? undefined : 0}
onClick={onClick}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As you removed this, now when card is expandable, onClick is not fired when clicked on the header, is that desired change?

expanded={opened}
isSection
/>
</ContentWrapper>
{actions && <Actions actions={actions} />}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case, when actions are set both with onClick, it's not possible to click on the clickable element in the actions 😬

@@ -105,42 +121,45 @@ export default function CardSection({
{actions && <Actions actions={actions} />}
</div>
)}

{(title != null || header != null) && !expandable && (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit unsure about the focus order in this case (when both onClick and actions are provided), first the action button is being focused and then the card section is being focused, shouldn't it be the other way around? Same as when it's expandable? 🤔

onClick != null && "hover:bg-white-normal-hover cursor-pointer",
onClick && !expandable && "hover:bg-white-normal-hover",
onClick &&
"has-[.orbit-card-wrapper-button:focus]:focus-within:rounded-100 has-[.orbit-card-wrapper-button:focus]:focus-within:outline-blue-normal has-[.orbit-card-wrapper-button:focus]:focus-within:outline has-[.orbit-card-wrapper-button:focus]:focus-within:outline-2",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps you could also add here has-[.orbit-card-wrapper-button:focus]:focus-within:z-10? Border of other card sections is on top of the outline 😬

Snímek obrazovky 2025-01-30 v 15 28 51

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants