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

A11y Seat #4653

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

A11y Seat #4653

wants to merge 3 commits into from

Conversation

mvidalgarcia
Copy link
Collaborator

@mvidalgarcia mvidalgarcia commented Mar 7, 2025

  • chore(Seat): add onClick prop control to story
    Useful to see how the component behaves both with and without the handler

  • fix(Seat): display as div when non-clickable
    If the Seat is available and has onClick set, renders it as an
    interactive button, otherwise renders it as a non-interactive div

    Closes FEPLT-2265


It can be tested with yalc on booking. I used this diff:

Diff

diff --git a/package.json b/package.json
index 11f81b8aad..2663914f4a 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
     "@kiwicom/event": "0.0.6",
     "@kiwicom/event-schemas": "0.0.81",
     "@kiwicom/nitro": "75.1.0",
-    "@kiwicom/orbit-components": "20.1.0",
+    "@kiwicom/orbit-components": "file:.yalc/@kiwicom/orbit-components",
     "@kiwicom/smart-faq-sidebar": "18.0.0",
     "@kiwicom/translations": "4.0.30",
     "@kiwicom/useragent": "0.2.3",
diff --git a/src/ancillaries/flight/features/Seating/components/DesktopOptions/components/SeatMap/components/Seat.tsx b/src/ancillaries/flight/features/Seating/components/DesktopOptions/components/SeatMap/components/Seat.tsx
index 10bc0d54b4..7ae43b8812 100644
--- a/src/ancillaries/flight/features/Seating/components/DesktopOptions/components/SeatMap/components/Seat.tsx
+++ b/src/ancillaries/flight/features/Seating/components/DesktopOptions/components/SeatMap/components/Seat.tsx
@@ -85,7 +85,7 @@ const Seat = ({ seat, paxValues, activeSegmentCode }: SeatProps) => {
   const handleClosePopover = useCallback(() => setPopoverActive(false), [])
 
   if (seat.type === SEAT_FORMATED_TYPES.unavailable) {
-    return <NewSeatIcon type="unavailable" price="-" />
+    return <NewSeatIcon type="unavailable" price="-" title={seat.name} />
   }
 
   return (
@@ -121,6 +121,7 @@ const Seat = ({ seat, paxValues, activeSegmentCode }: SeatProps) => {
           isSeatOccupied ? initialsOfPapOnThisSeat : (seat.isEmergencyExit && "*") || undefined
         }
         selected={isSeatOccupied}
+        title={seat.name}
       />
     </Popover>
   )
diff --git a/yarn.lock b/yarn.lock
index d7831a6f77..cfa81e252f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1270,10 +1270,8 @@
     validator "^13.0.0"
     yargs "^17.0.0"
 
-"@kiwicom/[email protected]":
+"@kiwicom/orbit-components@file:.yalc/@kiwicom/orbit-components":
   version "20.1.0"
-  resolved "https://registry.yarnpkg.com/@kiwicom/orbit-components/-/orbit-components-20.1.0.tgz#a4f734edceafe1b76fcde716907d57ecc48c6a8d"
-  integrity sha512-lLOSScm5OCbCFeSELApn9UZBI10PMcJwa7OLeW5R5TU+izkB6kX5HGn6A/zpDBsoF+G/fxsBPdTOsdgmJggvbA==
   dependencies:
     "@floating-ui/react" "0.26.24"
     "@kiwicom/orbit-design-tokens" "^9.0.1"

Description by Callstackai

This PR introduces a new feature for the Seat component, allowing it to render as a clickable button or a non-interactive div based on the presence of an onClick handler. It also adds a title prop to enhance accessibility.

Diagrams of code changes
sequenceDiagram
    actor User
    participant Seat
    participant SeatContent
    participant Button
    participant Div

    User->>Seat: Interact with seat
    Seat->>Seat: Check if seat is available
    Seat->>Seat: Check if onClick exists
    
    alt Seat is available & onClick exists
        Seat->>Button: Render as button
        Button->>SeatContent: Render seat content
        SeatContent->>SeatContent: Show SVG with label
        Note over SeatContent: Display selection circle if selected
        User->>Button: Click seat
        Button-->>User: Trigger onClick action
    else Seat unavailable or no onClick
        Seat->>Div: Render as div
        Div->>SeatContent: Render seat content
        SeatContent->>SeatContent: Show SVG with label
    end

    alt Price exists & Not (selected & unavailable)
        Seat->>Seat: Display price
    end

Loading
Files Changed
FileSummary
packages/orbit-components/src/Seat/Seat.stories.tsxUpdated story parameters to include a title prop and modified controls to exclude aria-labelledby.
packages/orbit-components/src/Seat/index.tsxRefactored Seat component to conditionally render as a button or div based on the onClick prop and added title for accessibility.

Copy link

cloudflare-workers-and-pages bot commented Mar 7, 2025

Deploying orbit with  Cloudflare Pages  Cloudflare Pages

Latest commit: b26ffc7
Status: ✅  Deploy successful!
Preview URL: https://c0957544.orbit.pages.dev
Branch Preview URL: https://marco-a11y-seat.orbit.pages.dev

View logs

Copy link
Contributor

github-actions bot commented Mar 7, 2025

Storybook staging is available at https://kiwicom-orbit-marco-a11y-seat.surge.sh

Playroom staging is available at https://kiwicom-orbit-marco-a11y-seat.surge.sh/playroom

Copy link
Contributor

github-actions bot commented Mar 7, 2025

Size Change: +86 B (+0.02%)

Total Size: 463 kB

Filename Size Change
packages/orbit-components/lib/icons/ColoredImessage.js 694 B -1 B (-0.14%)
packages/orbit-components/lib/icons/ColoredTelegram.js 821 B +1 B (+0.12%)
packages/orbit-components/lib/Seat/index.js 1.09 kB +86 B (+8.53%) 🔍
ℹ️ 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 760 B
packages/orbit-components/lib/Accordion/AccordionSection/index.js 819 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.62 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 623 B
packages/orbit-components/lib/CallOutBanner/index.js 743 B
packages/orbit-components/lib/Card/CardSection/components/Expandable.js 375 B
packages/orbit-components/lib/Card/CardSection/index.js 1.3 kB
packages/orbit-components/lib/Card/components/Header.js 788 B
packages/orbit-components/lib/Card/index.js 860 B
packages/orbit-components/lib/CarrierLogo/consts.js 343 B
packages/orbit-components/lib/CarrierLogo/index.js 1.28 kB
packages/orbit-components/lib/Checkbox/index.js 1.38 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.11 kB
packages/orbit-components/lib/Collapse/index.js 1.24 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 847 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 834 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.7 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 670 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/CareKiwiCom.js 546 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/ColoredMessenger.js 786 B
packages/orbit-components/lib/icons/ColoredSignal.js 1.05 kB
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/DiscountLight.js 479 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/Guarantee.js 654 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.99 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/KiwiComGuarantee.js 560 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/NoGuarantee.js 650 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/Ryanair.js 1.27 kB
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/ShieldCheckLight.js 551 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/Sort2.js 492 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.77 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 449 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/index.js 1.01 kB
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItineraryIcon.js 909 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItinerarySegmentBanner/index.js 684 B
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItinerarySegmentDetail/index.js 1.68 kB
packages/orbit-components/lib/Itinerary/ItinerarySegment/ItinerarySegmentStop/index.js 1.21 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.23 kB
packages/orbit-components/lib/Itinerary/ItineraryText/index.js 696 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 982 B
packages/orbit-components/lib/Loading/consts.js 236 B
packages/orbit-components/lib/Loading/index.js 1.29 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.32 kB
packages/orbit-components/lib/Modal/ModalCloseButton/index.js 357 B
packages/orbit-components/lib/Modal/ModalContext.js 464 B
packages/orbit-components/lib/Modal/ModalFooter/index.js 1.1 kB
packages/orbit-components/lib/Modal/ModalHeader/index.js 1.15 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.23 kB
packages/orbit-components/lib/Popover/consts.js 107 B
packages/orbit-components/lib/Popover/index.js 1.44 kB
packages/orbit-components/lib/Portal/index.js 467 B
packages/orbit-components/lib/primitives/BadgePrimitive/index.js 658 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/SegmentedSwitch/index.js 943 B
packages/orbit-components/lib/SegmentedSwitch/SwitchSegment/index.js 898 B
packages/orbit-components/lib/Select/index.js 2.07 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 742 B
packages/orbit-components/lib/Stepper/StepperStateless/index.js 1.36 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 949 B
packages/orbit-components/lib/Table/consts.js 214 B
packages/orbit-components/lib/Table/index.js 1.3 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 651 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.1 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.46 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.01 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 774 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 210 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.24 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

@mvidalgarcia mvidalgarcia force-pushed the marco/a11y-seat branch 4 times, most recently from 3b6fa9f to 9cbf260 Compare March 10, 2025 11:25
@mvidalgarcia mvidalgarcia changed the title marco/a11y seat A11y Seat Mar 10, 2025
@mvidalgarcia mvidalgarcia marked this pull request as ready for review March 10, 2025 11:57
true: action("onClick"),
false: undefined,
},
defaultValue: true,
Copy link
Contributor

Choose a reason for hiding this comment

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

It seems that defaultValue is deprecated in favour of just setting value on args, let's remove it?

It's a shame we cannot set (default) value and it would be correctly displayed in the Controls but instead there is still that button :( There seems to be multiple issues created for this but none of them is acknowledged by SB team 😬

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Good catch, I'll remove it. It's not a big deal.

{seatContent}
</button>
) : (
<div {...commonProps} aria-disabled>
Copy link
Contributor

Choose a reason for hiding this comment

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

Is it necessary to set aria-disabled here? Especially if this element has no role?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Hmm I hesitated till the last moment about leaving it or not. But after some reading, I believe it's not needed and could be misleading for screen readers.

I wonder if we should have aria-selected 🤔

aria-labelledby={`${[ariaLabelledBy, titleId, descrId].join(" ").trim()}` || undefined}
fill="none"
role="img"
aria-disabled={!clickable || undefined}
Copy link
Contributor

Choose a reason for hiding this comment

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

Same as for the div, is it necessary to add aria-disabled here? If this is already not-interactive element.

viewBox={size === SIZE_OPTIONS.SMALL ? "0 0 32 36" : "0 0 46 46"}
aria-labelledby={`${[ariaLabelledBy, titleId, descrId].join(" ").trim()}` || undefined}
fill="none"
role="img"
Copy link
Contributor

@domihustinova domihustinova Mar 10, 2025

Choose a reason for hiding this comment

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

Would it be valuable to add here aria-selected? 🤔

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

hehe #4653 (comment)

Not sure if here or in the wrapper.. but since we have aria-labelledby here..

Copy link
Collaborator Author

@mvidalgarcia mvidalgarcia Mar 11, 2025

Choose a reason for hiding this comment

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

whoops

The attribute aria-selected is not supported by the role img.

and also

The attribute aria-selected is not supported by the role button. This role is implicit on the element button.

😞

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I believe we can use role="option" on the svg element and then aria-selected is valid. Does this make sense to you?

Copy link
Contributor

Choose a reason for hiding this comment

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

Can we use it? From the docs it seems it can be used only inside listbox 😞

But thinking about it more, if the seat is clickable, it will already be "selected" because it's button and in case of e.g. booking where they wrap it in Popover, there will be also button, so I guess it's enough?

Copy link
Collaborator Author

@mvidalgarcia mvidalgarcia Mar 12, 2025

Choose a reason for hiding this comment

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

Can we use it? From the docs it seems it can be used only inside listbox 😞

That's true, chatGPT tricked me..

But thinking about it more, if the seat is clickable, it will already be "selected" because it's button and in case of e.g. booking where they wrap it in Popover, there will be also button, so I guess it's enough?

Not sure I understand. How do you mark a button as selected accessibility-wise?

Copy link
Contributor

Choose a reason for hiding this comment

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

I think I got confused by The attribute aria-selected is not supported by the role button. This role is implicit on the element button.

return (
<Stack inline grow={false} spacing="50" direction="column" align="center">
{clickable ? (
<button {...commonProps} onClick={onClick} tabIndex={0} type="button">
Copy link
Member

@sarkaaa sarkaaa Mar 11, 2025

Choose a reason for hiding this comment

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

I think we can exclude tabIndex={0} as the button has this option by default.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Whoops good catch, it was probably a leftover. And thanks so much for the docs pointer :)

I wonder why this wasn't caught by the linter as it's clearly wrong 😅

Useful to see how the component behaves both with and without the handler
If the Seat is available and has onClick set, renders it as an
interactive button, otherwise renders it as a non-interactive div

Closes FEPLT-2265
@mvidalgarcia
Copy link
Collaborator Author

Changes pushed to a fixup commit to ease the re-review 😅 thanks!

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 removal of the error and help checks in the condition !inlineLabel && label could prevent the display of error or help messages when no explicit label is present, breaking expected form field behavior.

Copy link
Contributor

LLM Analysis of PR Changes

Pull Request Analysis - A11y Seat

Here's an analysis of the provided Git diff for the "A11y Seat" pull request:

1. Summary of Changes:

This pull request focuses on improving the accessibility and semantic correctness of the Seat component within the Orbit design system. The key changes are:

  • Accessibility Enhancements:
    • Changed the SVG role from img to option, making it semantically more appropriate for a selectable seat within a group.
    • Added aria-selected={selected} to the SVG to indicate the selection state to assistive technologies.
    • Made the seat interactive (a <button>) only when it's both available (not UNAVAILABLE type) and an onClick handler is provided. Otherwise, it's rendered as a <div>.
    • Added cursor-pointer style for available seats to visually indicate interactivity.
  • Storybook Improvements:
    • Removed onClick from the Storybook controls.exclude list, making it controllable in Storybook.
    • Added an onClick control to Storybook using a boolean toggle that maps to the action handler, allowing for easy testing of click interactions in stories.
    • Added a default title prop to the Storybook args.
  • Code Refactoring:
    • Introduced isAvailable variable to clearly represent the availability state based on the type prop.
    • Refined the clickable logic to depend on both isAvailable and the presence of onClick.
    • Updated conditions for rendering SeatCircle and price to align with the new isAvailable logic.

2. Potential Issues or Bugs:

  • Slightly more complex clickable logic: The condition clickable = isAvailable && onClick !== undefined is a bit more verbose than simply checking type !== TYPES.UNAVAILABLE. While semantically clearer, it's important to ensure this logic is consistently applied and understood throughout the component and its usage. It's crucial to confirm that the intention is indeed that a seat is only interactive if both it's available and an onClick handler is passed. If the intention is that any available seat should be interactive even without an immediate onClick, this logic might need adjustment.
  • Accessibility Testing Needed: While the changes are aimed at improving accessibility, it's essential to test the component with actual screen readers and assistive technologies to confirm that the role="option", aria-selected, and conditional <button>/<div> rendering work as expected and provide a good user experience for users relying on these technologies.

3. Suggestions for Improvements:

  • Documentation Clarity: Update the component's documentation to explicitly mention the accessibility considerations, the use of role="option" and aria-selected", and the conditional button/div rendering based on onClick. Clearly explain when the Seat component will be rendered as a button and when as a div.
  • Consider cursor-pointer for <div> in specific scenarios: If there are use cases where a Seat rendered as a <div> (non-interactive) might still benefit from a cursor-pointer to indicate it could be interactive under different conditions (e.g., in a larger interactive area), consider adding a conditional cursor-pointer based on props or context. However, for pure accessibility and semantic correctness, it's generally better to avoid cursor-pointer on non-interactive elements as it can be misleading.
  • Storybook onClick Control Enhancement (Minor): While the boolean toggle for onClick in Storybook works, consider if a more descriptive control could be beneficial. Perhaps a "Simulate Click" button within the story description that triggers the onClick action, instead of a boolean toggle. However, the current approach is functional and concise.

4. Security Concerns:

  • No Security Concerns: This diff does not introduce any apparent security vulnerabilities. The changes are focused on improving the component's structure, semantics, and accessibility, and do not involve handling user input or sensitive data in a way that could create security risks.

5. Code Quality Observations:

  • Improved Semantics: The use of role="option" and aria-selected" significantly improves the semantic correctness of the component, making it more accessible.
  • Clearer Logic: Introducing isAvailable makes the code more readable and the logic around availability and clickability more explicit.
  • Conditional Rendering: The conditional rendering of <button> vs <div> is a good practice for ensuring semantic HTML and appropriate interactivity.
  • Consistent Orbit Patterns: The code changes maintain consistency with existing Orbit code patterns, utilizing cx for class management, Stack for layout, and functional components.
  • Storybook Enhancements: The Storybook improvements make the component easier to test and showcase its interactive behavior.

Overall Feedback:

This is a well-executed pull request that effectively improves the accessibility and semantic correctness of the Seat component. The changes are well-reasoned, clearly implemented, and enhance the overall quality of the Orbit design system. The focus on accessibility is commendable.

Recommendations:

  • Prioritize Accessibility Testing: Thoroughly test the component with screen readers and assistive technologies.
  • Clarify clickable Logic and Document: Ensure the intended behavior of clickable is well-understood and clearly documented, especially the dependency on onClick.
  • Consider minor Storybook enhancement (optional).

After addressing these points, this pull request should be merged. It demonstrably improves the Seat component and contributes positively to the Orbit library.

@kiwicom kiwicom deleted a comment from github-actions bot Mar 11, 2025
@kiwicom kiwicom deleted a comment from github-actions bot Mar 11, 2025
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.

3 participants