@clubmed/trident-ui 2.0.0-beta.9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/assets/trident-ui.css +3 -0
- package/chunks/Backdrop.js +1 -1
- package/chunks/Backdrop.js.map +1 -1
- package/chunks/Birthdate.js +27 -0
- package/chunks/Birthdate.js.map +1 -0
- package/chunks/Carousel.context.js +1548 -0
- package/chunks/Carousel.context.js.map +1 -0
- package/chunks/ChatMessage.js +14395 -0
- package/chunks/ChatMessage.js.map +1 -0
- package/chunks/CriteriaParticipants.js +415 -0
- package/chunks/CriteriaParticipants.js.map +1 -0
- package/chunks/DateField.js +196 -136
- package/chunks/DateField.js.map +1 -1
- package/chunks/Datepicker.js +2039 -0
- package/chunks/Datepicker.js.map +1 -0
- package/chunks/Day.js +88 -0
- package/chunks/Day.js.map +1 -0
- package/chunks/Range.js +2 -2
- package/chunks/Range.js.map +1 -1
- package/chunks/Tooltip.js +4461 -0
- package/chunks/Tooltip.js.map +1 -0
- package/chunks/addLeadingZeros.js +33 -0
- package/chunks/addLeadingZeros.js.map +1 -0
- package/chunks/addYears.js +18 -0
- package/chunks/addYears.js.map +1 -0
- package/chunks/chunk.js +11 -4
- package/chunks/client.js +18953 -0
- package/chunks/client.js.map +1 -0
- package/chunks/endOfMonth.js +17 -0
- package/chunks/endOfMonth.js.map +1 -0
- package/chunks/format.js +1113 -0
- package/chunks/format.js.map +1 -0
- package/chunks/formatISO.js +29 -0
- package/chunks/formatISO.js.map +1 -0
- package/chunks/isAfter.js +9 -0
- package/chunks/isAfter.js.map +1 -0
- package/chunks/isBefore.js +15 -0
- package/chunks/isBefore.js.map +1 -0
- package/chunks/normalizeDates.js +10 -0
- package/chunks/normalizeDates.js.map +1 -0
- package/chunks/subYears.js +9 -0
- package/chunks/subYears.js.map +1 -0
- package/examples/accordion-demo.d.ts +1 -0
- package/examples/accordion-demo.js +79 -0
- package/examples/accordion-demo.js.map +1 -0
- package/examples/accordion-multiple-demo.d.ts +1 -0
- package/examples/accordion-multiple-demo.js +79 -0
- package/examples/accordion-multiple-demo.js.map +1 -0
- package/examples/accordion-trigger-wrapper-demo.d.ts +1 -0
- package/examples/accordion-trigger-wrapper-demo.js +80 -0
- package/examples/accordion-trigger-wrapper-demo.js.map +1 -0
- package/examples/advanced-toast-demo.js +2 -2
- package/examples/advanced-toast-demo.js.map +1 -1
- package/examples/advanced-toast-green-demo.js +1 -1
- package/examples/advanced-toast-green-demo.js.map +1 -1
- package/examples/advanced-toast-no-dismiss-demo.js +1 -1
- package/examples/advanced-toast-no-dismiss-demo.js.map +1 -1
- package/examples/advanced-toast-red-demo.js +1 -1
- package/examples/advanced-toast-red-demo.js.map +1 -1
- package/examples/advanced-toast-with-details-demo.js +2 -2
- package/examples/advanced-toast-with-details-demo.js.map +1 -1
- package/examples/arrow-button-demo.js +2 -1
- package/examples/arrow-button-demo.js.map +1 -1
- package/examples/arrow-button-disabled-demo.js +2 -1
- package/examples/arrow-button-disabled-demo.js.map +1 -1
- package/examples/arrow-button-left-demo.js +2 -1
- package/examples/arrow-button-left-demo.js.map +1 -1
- package/examples/arrow-button-outline-demo.js +2 -1
- package/examples/arrow-button-outline-demo.js.map +1 -1
- package/examples/arrow-button-tail-demo.js +2 -1
- package/examples/arrow-button-tail-demo.js.map +1 -1
- package/examples/avatar-demo.js +7 -7
- package/examples/button-demo.js +2 -2
- package/examples/button-demo.js.map +1 -1
- package/examples/card-list-demo.js +10 -10
- package/examples/card-no-border-demo.js +7 -7
- package/examples/chapters-demo.d.ts +1 -0
- package/examples/chapters-demo.js +46 -0
- package/examples/chapters-demo.js.map +1 -0
- package/examples/chat-button-demo.js +1 -1
- package/examples/chat-button-demo.js.map +1 -1
- package/examples/chat-button-offset-demo.js +4 -1
- package/examples/chat-button-offset-demo.js.map +1 -1
- package/examples/chat-input-demo.d.ts +1 -0
- package/examples/chat-input-demo.js +22 -0
- package/examples/chat-input-demo.js.map +1 -0
- package/examples/chat-message-demo.d.ts +1 -0
- package/examples/chat-message-demo.js +20 -0
- package/examples/chat-message-demo.js.map +1 -0
- package/examples/chat-typing-indicator-demo.d.ts +1 -0
- package/examples/chat-typing-indicator-demo.js +14 -0
- package/examples/chat-typing-indicator-demo.js.map +1 -0
- package/examples/chat-window-csat-demo.d.ts +1 -0
- package/examples/chat-window-csat-demo.js +69 -0
- package/examples/chat-window-csat-demo.js.map +1 -0
- package/examples/chat-window-csat-prompt-demo.d.ts +1 -0
- package/examples/chat-window-csat-prompt-demo.js +40 -0
- package/examples/chat-window-csat-prompt-demo.js.map +1 -0
- package/examples/chat-window-demo.d.ts +1 -0
- package/examples/chat-window-demo.js +70 -0
- package/examples/chat-window-demo.js.map +1 -0
- package/examples/chat-window-quote-demo.d.ts +1 -0
- package/examples/chat-window-quote-demo.js +47 -0
- package/examples/chat-window-quote-demo.js.map +1 -0
- package/examples/chat-window-quotes-demo.d.ts +1 -0
- package/examples/chat-window-quotes-demo.js +68 -0
- package/examples/chat-window-quotes-demo.js.map +1 -0
- package/examples/checkbox-demo.js +2 -2
- package/examples/checkbox-demo.js.map +1 -1
- package/examples/checkbox-select-demo.d.ts +1 -0
- package/examples/checkbox-select-demo.js +101 -0
- package/examples/checkbox-select-demo.js.map +1 -0
- package/examples/checkboxes-demo.js +1 -0
- package/examples/checkboxes-demo.js.map +1 -1
- package/examples/checkboxes-with-form-control-demo.js +4 -4
- package/examples/chip-demo.js +4 -4
- package/examples/choice-expander-demo.js +5 -67
- package/examples/choice-expander-demo.js.map +1 -1
- package/examples/countdown-demo.d.ts +1 -0
- package/examples/countdown-demo.js +39 -0
- package/examples/countdown-demo.js.map +1 -0
- package/examples/criteria-dates-demo.d.ts +1 -0
- package/examples/criteria-dates-demo.js +41 -0
- package/examples/criteria-dates-demo.js.map +1 -0
- package/examples/criteria-participants-demo.d.ts +1 -0
- package/examples/criteria-participants-demo.js +77 -0
- package/examples/criteria-participants-demo.js.map +1 -0
- package/examples/criteria-participants-flow1-demo.d.ts +1 -0
- package/examples/criteria-participants-flow1-demo.js +53 -0
- package/examples/criteria-participants-flow1-demo.js.map +1 -0
- package/examples/criteria-participants-flow2-demo.d.ts +1 -0
- package/examples/criteria-participants-flow2-demo.js +61 -0
- package/examples/criteria-participants-flow2-demo.js.map +1 -0
- package/examples/criteria-participants-flow3-demo.d.ts +1 -0
- package/examples/criteria-participants-flow3-demo.js +72 -0
- package/examples/criteria-participants-flow3-demo.js.map +1 -0
- package/examples/criteria-transports-b2b-demo.d.ts +1 -0
- package/examples/criteria-transports-b2b-demo.js +118 -0
- package/examples/criteria-transports-b2b-demo.js.map +1 -0
- package/examples/criteria-transports-demo.d.ts +1 -0
- package/examples/criteria-transports-demo.js +223 -0
- package/examples/criteria-transports-demo.js.map +1 -0
- package/examples/datepicker-demo.d.ts +1 -0
- package/examples/datepicker-demo.js +51 -0
- package/examples/datepicker-demo.js.map +1 -0
- package/examples/datepicker-disabled-days-demo.d.ts +1 -0
- package/examples/datepicker-disabled-days-demo.js +42 -0
- package/examples/datepicker-disabled-days-demo.js.map +1 -0
- package/examples/datepicker-duration-tooltip-demo.d.ts +1 -0
- package/examples/datepicker-duration-tooltip-demo.js +68 -0
- package/examples/datepicker-duration-tooltip-demo.js.map +1 -0
- package/examples/datepicker-no-prices-demo.d.ts +1 -0
- package/examples/datepicker-no-prices-demo.js +42 -0
- package/examples/datepicker-no-prices-demo.js.map +1 -0
- package/examples/datepicker-preselected-demo.d.ts +1 -0
- package/examples/datepicker-preselected-demo.js +77 -0
- package/examples/datepicker-preselected-demo.js.map +1 -0
- package/examples/dropdown-demo.js +9 -1
- package/examples/dropdown-demo.js.map +1 -1
- package/examples/expandable-text-demo.d.ts +1 -0
- package/examples/expandable-text-demo.js +22 -0
- package/examples/expandable-text-demo.js.map +1 -0
- package/examples/filter-demo.js +5 -5
- package/examples/floating-label-text-field-demo.d.ts +1 -0
- package/examples/floating-label-text-field-demo.js +32 -0
- package/examples/floating-label-text-field-demo.js.map +1 -0
- package/examples/frame-demo.d.ts +1 -0
- package/examples/frame-demo.js +36 -0
- package/examples/frame-demo.js.map +1 -0
- package/examples/frame-horizontal-demo.d.ts +1 -0
- package/examples/frame-horizontal-demo.js +44 -0
- package/examples/frame-horizontal-demo.js.map +1 -0
- package/examples/frame-no-image-demo.d.ts +1 -0
- package/examples/frame-no-image-demo.js +47 -0
- package/examples/frame-no-image-demo.js.map +1 -0
- package/examples/frame-vertical-demo.d.ts +1 -0
- package/examples/frame-vertical-demo.js +44 -0
- package/examples/frame-vertical-demo.js.map +1 -0
- package/examples/frame-with-tag-demo.d.ts +1 -0
- package/examples/frame-with-tag-demo.js +48 -0
- package/examples/frame-with-tag-demo.js.map +1 -0
- package/examples/journey-card-compact-demo.d.ts +1 -0
- package/examples/journey-card-compact-demo.js +71 -0
- package/examples/journey-card-compact-demo.js.map +1 -0
- package/examples/journey-card-demo.d.ts +1 -0
- package/examples/journey-card-demo.js +123 -0
- package/examples/journey-card-demo.js.map +1 -0
- package/examples/page-navigation-demo.d.ts +1 -0
- package/examples/page-navigation-demo.js +53 -0
- package/examples/page-navigation-demo.js.map +1 -0
- package/examples/password-demo.js +1 -0
- package/examples/password-demo.js.map +1 -1
- package/examples/phone-field-demo.js +6 -2
- package/examples/phone-field-demo.js.map +1 -1
- package/examples/promises-demo.d.ts +1 -0
- package/examples/promises-demo.js +50 -0
- package/examples/promises-demo.js.map +1 -0
- package/examples/radio-demo.js +3 -3
- package/examples/radio-demo.js.map +1 -1
- package/examples/radio-select-demo.d.ts +1 -0
- package/examples/radio-select-demo.js +100 -0
- package/examples/radio-select-demo.js.map +1 -0
- package/examples/scrollbar-demo.d.ts +1 -0
- package/examples/scrollbar-demo.js +42 -0
- package/examples/scrollbar-demo.js.map +1 -0
- package/examples/select-demo.js +1 -0
- package/examples/select-demo.js.map +1 -1
- package/examples/slider-frame-demo.d.ts +1 -0
- package/examples/slider-frame-demo.js +39 -0
- package/examples/slider-frame-demo.js.map +1 -0
- package/examples/slider-frame-with-button-demo.d.ts +1 -0
- package/examples/slider-frame-with-button-demo.js +47 -0
- package/examples/slider-frame-with-button-demo.js.map +1 -0
- package/examples/slider-frame-with-tag-demo.d.ts +1 -0
- package/examples/slider-frame-with-tag-demo.js +51 -0
- package/examples/slider-frame-with-tag-demo.js.map +1 -0
- package/examples/sparkle-wrapper-demo.d.ts +1 -0
- package/examples/sparkle-wrapper-demo.js +34 -0
- package/examples/sparkle-wrapper-demo.js.map +1 -0
- package/examples/switch-demo.js +3 -2
- package/examples/switch-demo.js.map +1 -1
- package/examples/tabs-demo.js +2 -5
- package/examples/tabs-demo.js.map +1 -1
- package/examples/tabs-notification-demo.d.ts +1 -0
- package/examples/tabs-notification-demo.js +64 -0
- package/examples/tabs-notification-demo.js.map +1 -0
- package/examples/tabs-with-select-demo.js +1 -0
- package/examples/tabs-with-select-demo.js.map +1 -1
- package/examples/text-field-demo.js +6 -0
- package/examples/text-field-demo.js.map +1 -1
- package/examples/toggle-demo.d.ts +1 -0
- package/examples/toggle-demo.js +44 -0
- package/examples/toggle-demo.js.map +1 -0
- package/examples/toggle-small-demo.d.ts +1 -0
- package/examples/toggle-small-demo.js +33 -0
- package/examples/toggle-small-demo.js.map +1 -0
- package/examples/tooltip-demo.d.ts +1 -0
- package/examples/tooltip-demo.js +103 -0
- package/examples/tooltip-demo.js.map +1 -0
- package/package.json +9 -3
- package/styles/animate.css +19 -0
- package/styles/components.css +97 -4
- package/styles/index.css +0 -1
- package/styles/theme.css +1 -2
- package/styles/ui/button.css +1 -1
- package/styles/ui/chat-button.css +68 -1
- package/styles/ui/controls.css +11 -58
- package/styles/ui/range.css +6 -1
- package/styles/ui/tabs.css +0 -19
- package/ui/Accordion.d.ts +30 -0
- package/ui/Accordion.js +71 -0
- package/ui/Accordion.js.map +1 -0
- package/ui/AdvancedToast.js +22 -19
- package/ui/AdvancedToast.js.map +1 -1
- package/ui/Avatar.js +1 -1
- package/ui/Avatar.js.map +1 -1
- package/ui/BasicToast.js +12 -12
- package/ui/BasicToast.js.map +1 -1
- package/ui/Breadcrumb.js +7 -6
- package/ui/Breadcrumb.js.map +1 -1
- package/ui/Chapters/Chapter.d.ts +7 -0
- package/ui/Chapters/Chapter.js +36 -0
- package/ui/Chapters/Chapter.js.map +1 -0
- package/ui/Chapters/ChapterTitle.d.ts +14 -0
- package/ui/Chapters/ChapterTitle.js +35 -0
- package/ui/Chapters/ChapterTitle.js.map +1 -0
- package/ui/Chapters/Chapters.d.ts +15 -0
- package/ui/Chapters/Chapters.js +42 -0
- package/ui/Chapters/Chapters.js.map +1 -0
- package/ui/Chapters/Chapters.themes.d.ts +9 -0
- package/ui/Chapters/Chapters.themes.js +65 -0
- package/ui/Chapters/Chapters.themes.js.map +1 -0
- package/ui/Chapters/ChaptersSummary.d.ts +17 -0
- package/ui/Chapters/ChaptersSummary.js +29 -0
- package/ui/Chapters/ChaptersSummary.js.map +1 -0
- package/ui/ChatButton.js +9 -9
- package/ui/ChatButton.js.map +1 -1
- package/ui/ChatInput.d.ts +10 -0
- package/ui/ChatInput.js +149 -0
- package/ui/ChatInput.js.map +1 -0
- package/ui/ChatMessage.d.ts +6 -0
- package/ui/ChatMessage.js +2 -0
- package/ui/ChatTypingIndicator.d.ts +2 -0
- package/ui/ChatTypingIndicator.js +30 -0
- package/ui/ChatTypingIndicator.js.map +1 -0
- package/ui/ChatWindow.d.ts +34 -0
- package/ui/ChatWindow.js +142 -0
- package/ui/ChatWindow.js.map +1 -0
- package/ui/ChatWindowCsatPrompt.d.ts +15 -0
- package/ui/ChatWindowCsatPrompt.js +71 -0
- package/ui/ChatWindowCsatPrompt.js.map +1 -0
- package/ui/ChatWindowCsatThankYou.d.ts +9 -0
- package/ui/ChatWindowCsatThankYou.js +29 -0
- package/ui/ChatWindowCsatThankYou.js.map +1 -0
- package/ui/ChatWindowQuote.d.ts +22 -0
- package/ui/ChatWindowQuote.js +141 -0
- package/ui/ChatWindowQuote.js.map +1 -0
- package/ui/Chip.js +4 -4
- package/ui/ChoiceExpander.js +17 -17
- package/ui/ChoiceExpander.js.map +1 -1
- package/ui/Countdown.d.ts +16 -0
- package/ui/Countdown.js +61 -0
- package/ui/Countdown.js.map +1 -0
- package/ui/Datepicker.d.ts +26 -0
- package/ui/Datepicker.js +2 -0
- package/ui/Day.d.ts +25 -0
- package/ui/Day.js +2 -0
- package/ui/Dropdown.d.ts +20 -3
- package/ui/Dropdown.js +61 -27
- package/ui/Dropdown.js.map +1 -1
- package/ui/ElasticHeight.js +1 -0
- package/ui/ElasticHeight.js.map +1 -1
- package/ui/ExpandableText.d.ts +14 -0
- package/ui/ExpandableText.js +40 -0
- package/ui/ExpandableText.js.map +1 -0
- package/ui/FlipCard.d.ts +7 -0
- package/ui/FlipCard.js +59 -0
- package/ui/FlipCard.js.map +1 -0
- package/ui/HamburgerIcon.js +1 -1
- package/ui/HamburgerIcon.js.map +1 -1
- package/ui/Link.js +8 -8
- package/ui/Link.js.map +1 -1
- package/ui/PageNavigation.d.ts +13 -0
- package/ui/PageNavigation.js +71 -0
- package/ui/PageNavigation.js.map +1 -0
- package/ui/Pagination.js +23 -23
- package/ui/Pagination.js.map +1 -1
- package/ui/Promises/Promises.d.ts +26 -0
- package/ui/Promises/Promises.js +42 -0
- package/ui/Promises/Promises.js.map +1 -0
- package/ui/Promises/PromisesMedia.d.ts +12 -0
- package/ui/Promises/PromisesMedia.js +64 -0
- package/ui/Promises/PromisesMedia.js.map +1 -0
- package/ui/Promises/PromisesMenu.d.ts +11 -0
- package/ui/Promises/PromisesMenu.js +154 -0
- package/ui/Promises/PromisesMenu.js.map +1 -0
- package/ui/Scrollbar.d.ts +14 -0
- package/ui/Scrollbar.js +68 -0
- package/ui/Scrollbar.js.map +1 -0
- package/ui/SidebarLayout.d.ts +3 -1
- package/ui/SidebarLayout.js +67 -59
- package/ui/SidebarLayout.js.map +1 -1
- package/ui/SparkleWrapper.d.ts +5 -0
- package/ui/SparkleWrapper.js +56 -0
- package/ui/SparkleWrapper.js.map +1 -0
- package/ui/Tag.js +6 -6
- package/ui/Toggle.d.ts +15 -0
- package/ui/Toggle.js +42 -0
- package/ui/Toggle.js.map +1 -0
- package/ui/Tooltip.d.ts +8 -0
- package/ui/Tooltip.js +2 -0
- package/ui/buttons/Button.type.d.ts +1 -1
- package/ui/buttons/Button.type.js +1 -1
- package/ui/buttons/Button.type.js.map +1 -1
- package/ui/buttons/ButtonContent.js +3 -3
- package/ui/carousel/Carousel.context.d.ts +27 -0
- package/ui/carousel/Carousel.context.js +2 -0
- package/ui/carousel/Carousel.d.ts +3 -0
- package/ui/carousel/Carousel.js +12 -0
- package/ui/carousel/Carousel.js.map +1 -0
- package/ui/carousel/CarouselBody.d.ts +6 -0
- package/ui/carousel/CarouselBody.js +21 -0
- package/ui/carousel/CarouselBody.js.map +1 -0
- package/ui/carousel/CarouselItem.d.ts +6 -0
- package/ui/carousel/CarouselItem.js +21 -0
- package/ui/carousel/CarouselItem.js.map +1 -0
- package/ui/carousel/CarouselNext.d.ts +8 -0
- package/ui/carousel/CarouselNext.js +23 -0
- package/ui/carousel/CarouselNext.js.map +1 -0
- package/ui/carousel/CarouselPrevious.d.ts +8 -0
- package/ui/carousel/CarouselPrevious.js +23 -0
- package/ui/carousel/CarouselPrevious.js.map +1 -0
- package/ui/contexts/TridentUIConfig.js +1 -1
- package/ui/criteria/Birthdate.d.ts +13 -0
- package/ui/criteria/Birthdate.js +2 -0
- package/ui/criteria/CriteriaDates.d.ts +32 -0
- package/ui/criteria/CriteriaDates.js +76 -0
- package/ui/criteria/CriteriaDates.js.map +1 -0
- package/ui/criteria/CriteriaParticipants.d.ts +106 -0
- package/ui/criteria/CriteriaParticipants.js +2 -0
- package/ui/criteria/CriteriaSection.d.ts +6 -0
- package/ui/criteria/CriteriaSection.js +15 -0
- package/ui/criteria/CriteriaSection.js.map +1 -0
- package/ui/criteria/CriteriaTransports.d.ts +53 -0
- package/ui/criteria/CriteriaTransports.js +274 -0
- package/ui/criteria/CriteriaTransports.js.map +1 -0
- package/ui/forms/CheckboxSelect.d.ts +31 -0
- package/ui/forms/CheckboxSelect.js +119 -0
- package/ui/forms/CheckboxSelect.js.map +1 -0
- package/ui/forms/Filter.d.ts +3 -1
- package/ui/forms/Filter.js +17 -13
- package/ui/forms/Filter.js.map +1 -1
- package/ui/forms/FloatingLabelTextField.d.ts +12 -0
- package/ui/forms/FloatingLabelTextField.js +132 -0
- package/ui/forms/FloatingLabelTextField.js.map +1 -0
- package/ui/forms/FormControl.d.ts +1 -1
- package/ui/forms/FormControl.js.map +1 -1
- package/ui/forms/FormControlError.js +4 -4
- package/ui/forms/NumberField.d.ts +3 -2
- package/ui/forms/NumberField.js +24 -25
- package/ui/forms/NumberField.js.map +1 -1
- package/ui/forms/PhoneField.d.ts +5 -10
- package/ui/forms/PhoneField.js +31 -211
- package/ui/forms/PhoneField.js.map +1 -1
- package/ui/forms/PhoneFieldFullInput.d.ts +16 -0
- package/ui/forms/PhoneFieldFullInput.js +110 -0
- package/ui/forms/PhoneFieldFullInput.js.map +1 -0
- package/ui/forms/PhoneFieldSplitInput.d.ts +19 -0
- package/ui/forms/PhoneFieldSplitInput.js +158 -0
- package/ui/forms/PhoneFieldSplitInput.js.map +1 -0
- package/ui/forms/RadioSelect.d.ts +31 -0
- package/ui/forms/RadioSelect.js +117 -0
- package/ui/forms/RadioSelect.js.map +1 -0
- package/ui/forms/Range.d.ts +1 -1
- package/ui/forms/Select.js +16 -17
- package/ui/forms/Select.js.map +1 -1
- package/ui/forms/Switch.d.ts +5 -3
- package/ui/forms/Switch.js +54 -34
- package/ui/forms/Switch.js.map +1 -1
- package/ui/forms/TextField.js +33 -24
- package/ui/forms/TextField.js.map +1 -1
- package/ui/forms/checkboxes/Checkbox.d.ts +3 -1
- package/ui/forms/checkboxes/Checkbox.js +21 -17
- package/ui/forms/checkboxes/Checkbox.js.map +1 -1
- package/ui/forms/checkboxes/Checkboxes.d.ts +5 -0
- package/ui/forms/checkboxes/Checkboxes.js +8 -8
- package/ui/forms/checkboxes/Checkboxes.js.map +1 -1
- package/ui/forms/password/Password.js +19 -20
- package/ui/forms/password/Password.js.map +1 -1
- package/ui/forms/password/ValidationMessage.js +5 -5
- package/ui/forms/radios/Radio.d.ts +2 -1
- package/ui/forms/radios/Radio.js +6 -3
- package/ui/forms/radios/Radio.js.map +1 -1
- package/ui/forms/radios/RadioGroup.js +5 -6
- package/ui/forms/radios/RadioGroup.js.map +1 -1
- package/ui/frame/Frame.d.ts +8 -0
- package/ui/frame/Frame.js +16 -0
- package/ui/frame/Frame.js.map +1 -0
- package/ui/frame/FrameLabelsWrapper.d.ts +5 -0
- package/ui/frame/FrameLabelsWrapper.js +12 -0
- package/ui/frame/FrameLabelsWrapper.js.map +1 -0
- package/ui/frame/FrameTitle.d.ts +7 -0
- package/ui/frame/FrameTitle.js +25 -0
- package/ui/frame/FrameTitle.js.map +1 -0
- package/ui/frame/FrameWrapper.d.ts +6 -0
- package/ui/frame/FrameWrapper.js +14 -0
- package/ui/frame/FrameWrapper.js.map +1 -0
- package/ui/frame/SliderFrame.d.ts +14 -0
- package/ui/frame/SliderFrame.js +50 -0
- package/ui/frame/SliderFrame.js.map +1 -0
- package/ui/helpers/cn.d.ts +2 -0
- package/ui/helpers/cn.js +10 -0
- package/ui/helpers/cn.js.map +1 -0
- package/ui/helpers/phone/defaultPrefixes.d.ts +1 -0
- package/ui/helpers/phone/defaultPrefixes.js +52 -28
- package/ui/helpers/phone/defaultPrefixes.js.map +1 -1
- package/ui/helpers/phone/formatters.d.ts +11 -0
- package/ui/helpers/phone/formatters.js +32 -1
- package/ui/helpers/phone/formatters.js.map +1 -1
- package/ui/helpers/phone/index.d.ts +1 -1
- package/ui/helpers/phone/index.js +3 -3
- package/ui/hooks/useIsClient.d.ts +1 -0
- package/ui/hooks/useIsClient.js +12 -0
- package/ui/hooks/useIsClient.js.map +1 -0
- package/ui/hooks/useValue.d.ts +3 -4
- package/ui/hooks/useValue.js +11 -11
- package/ui/hooks/useValue.js.map +1 -1
- package/ui/journey-card/FlightSegmentCard.d.ts +15 -0
- package/ui/journey-card/FlightSegmentCard.js +73 -0
- package/ui/journey-card/FlightSegmentCard.js.map +1 -0
- package/ui/journey-card/FlightTimeline.d.ts +5 -0
- package/ui/journey-card/FlightTimeline.js +27 -0
- package/ui/journey-card/FlightTimeline.js.map +1 -0
- package/ui/journey-card/ItineraryDetails.d.ts +9 -0
- package/ui/journey-card/ItineraryDetails.js +40 -0
- package/ui/journey-card/ItineraryDetails.js.map +1 -0
- package/ui/journey-card/JourneyCard.d.ts +17 -0
- package/ui/journey-card/JourneyCard.js +34 -0
- package/ui/journey-card/JourneyCard.js.map +1 -0
- package/ui/journey-card/JourneyDetails.d.ts +47 -0
- package/ui/journey-card/JourneyDetails.js +183 -0
- package/ui/journey-card/JourneyDetails.js.map +1 -0
- package/ui/tabs/Tabs.d.ts +5 -1
- package/ui/tabs/Tabs.js +208 -124
- package/ui/tabs/Tabs.js.map +1 -1
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { t as e } from "../../../chunks/clsx.js";
|
|
2
2
|
import { useInternalStatus as t } from "../../hooks/useInternalStatus.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { FormControl as n } from "../FormControl.js";
|
|
4
|
+
import { useValue as r } from "../../hooks/useValue.js";
|
|
5
5
|
import { ValidationMessage as i } from "./ValidationMessage.js";
|
|
6
6
|
import { useEffect as a, useId as o, useState as s } from "react";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
8
|
+
import { Icon as u } from "@clubmed/trident-icons";
|
|
9
9
|
//#region lib/ui/forms/password/Password.tsx
|
|
10
10
|
function d(d) {
|
|
11
11
|
let f = o(), { id: p = f, name: m = p, label: h, value: g, disabled: _ = !1, required: v = !1, hideRequiredStar: y, validationStatus: b = "default", errorMessage: x, validationMessages: S = [], withoutFieldValidation: C = !1, className: w, onChange: T, dataTestId: E = "Password", ...D } = d, O = t({
|
|
12
12
|
isDisabled: _,
|
|
13
13
|
validationStatus: b
|
|
14
|
-
}), { value: k, setValue: A } =
|
|
15
|
-
name: m,
|
|
14
|
+
}), { value: k, setValue: A } = r({
|
|
16
15
|
initialValue: g,
|
|
17
16
|
onChange: T
|
|
18
17
|
}), [j, M] = s("password");
|
|
@@ -20,7 +19,7 @@ function d(d) {
|
|
|
20
19
|
M(_ ? "password" : j);
|
|
21
20
|
}, [j, _]);
|
|
22
21
|
let N = () => M(j === "password" ? "text" : "password");
|
|
23
|
-
return /* @__PURE__ */
|
|
22
|
+
return /* @__PURE__ */ l(n, {
|
|
24
23
|
className: w,
|
|
25
24
|
id: p,
|
|
26
25
|
label: h,
|
|
@@ -31,9 +30,9 @@ function d(d) {
|
|
|
31
30
|
hideRequiredStar: y,
|
|
32
31
|
validationStatus: C ? "default" : b,
|
|
33
32
|
errorMessage: x,
|
|
34
|
-
children: [/* @__PURE__ */
|
|
33
|
+
children: [/* @__PURE__ */ l("div", {
|
|
35
34
|
className: "relative",
|
|
36
|
-
children: [/* @__PURE__ */
|
|
35
|
+
children: [/* @__PURE__ */ c("input", {
|
|
37
36
|
...D,
|
|
38
37
|
id: p,
|
|
39
38
|
name: m,
|
|
@@ -41,8 +40,8 @@ function d(d) {
|
|
|
41
40
|
value: k,
|
|
42
41
|
disabled: _,
|
|
43
42
|
required: v,
|
|
44
|
-
onChange: (e) => A(e.target.value),
|
|
45
|
-
className: e("text-b3 rounded-pill w-full border overflow-hidden ps-20 py-[11px] font-normal outline-none", {
|
|
43
|
+
onChange: (e) => A(e.target.value, e.nativeEvent),
|
|
44
|
+
className: e("text-b3 rounded-pill w-full border overflow-hidden ps-20 py-[11px] font-normal outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2", {
|
|
46
45
|
"border-middleGrey focus:border-black active:border-black pe-[52px]": (C || b === "default") && O !== "disabled",
|
|
47
46
|
"bg-white text-black": O !== "disabled",
|
|
48
47
|
"bg-pearl border-middleGrey": O === "disabled",
|
|
@@ -51,26 +50,26 @@ function d(d) {
|
|
|
51
50
|
"border-green": !C && b === "success"
|
|
52
51
|
}),
|
|
53
52
|
"aria-label": m
|
|
54
|
-
}), /* @__PURE__ */
|
|
53
|
+
}), /* @__PURE__ */ c("div", {
|
|
55
54
|
className: e("pointer-events-none absolute inset-0 flex items-center justify-between px-20 py-12"),
|
|
56
|
-
children: /* @__PURE__ */
|
|
55
|
+
children: /* @__PURE__ */ l("span", {
|
|
57
56
|
className: "ms-auto flex gap-x-8",
|
|
58
57
|
children: [
|
|
59
|
-
!C && b === "error" && /* @__PURE__ */
|
|
58
|
+
!C && b === "error" && /* @__PURE__ */ c(u, {
|
|
60
59
|
name: "CrossDefault",
|
|
61
60
|
color: "red",
|
|
62
61
|
width: "24px"
|
|
63
62
|
}),
|
|
64
|
-
!C && b === "success" && /* @__PURE__ */
|
|
63
|
+
!C && b === "success" && /* @__PURE__ */ c(u, {
|
|
65
64
|
name: "CheckDefault",
|
|
66
65
|
color: "green",
|
|
67
66
|
width: "24px"
|
|
68
67
|
}),
|
|
69
|
-
!_ && /* @__PURE__ */
|
|
68
|
+
!_ && /* @__PURE__ */ c("button", {
|
|
70
69
|
type: "button",
|
|
71
|
-
className: "pointer-events-auto size-24 inline-flex",
|
|
70
|
+
className: "pointer-events-auto size-24 inline-flex outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2",
|
|
72
71
|
onClick: N,
|
|
73
|
-
children: /* @__PURE__ */
|
|
72
|
+
children: /* @__PURE__ */ c(u, {
|
|
74
73
|
name: j === "password" ? "Invisible" : "Visible",
|
|
75
74
|
width: "24px",
|
|
76
75
|
type: "svg"
|
|
@@ -79,9 +78,9 @@ function d(d) {
|
|
|
79
78
|
]
|
|
80
79
|
})
|
|
81
80
|
})]
|
|
82
|
-
}), S.length > 0 && /* @__PURE__ */
|
|
81
|
+
}), S.length > 0 && /* @__PURE__ */ c("div", {
|
|
83
82
|
className: "flex flex-col gap-[10px] mt-8",
|
|
84
|
-
children: S.map(({ label: e, status: t }, n) => /* @__PURE__ */
|
|
83
|
+
children: S.map(({ label: e, status: t }, n) => /* @__PURE__ */ c(i, {
|
|
85
84
|
label: e,
|
|
86
85
|
status: t
|
|
87
86
|
}, n))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Password.js","names":[],"sources":["../../../../lib/ui/forms/password/Password.tsx"],"sourcesContent":["import { useInternalStatus } from '../../hooks/useInternalStatus';\nimport clsx from 'clsx';\n\nimport { type HTMLInputTypeAttribute, useEffect, useId, useState } from 'react';\n\nimport { useValue } from '../../hooks/useValue';\nimport { FormControl, type FormControlProps } from '../FormControl';\nimport { Icon } from '@clubmed/trident-icons';\nimport { ValidationMessage } from './ValidationMessage';\n\nexport interface PasswordProps<Value> extends FormControlProps<Value> {\n validationMessages?: ValidationMessage[];\n withoutFieldValidation?: boolean;\n}\n\nexport function Password<Value = string>(props: PasswordProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n label,\n value: initialValue,\n disabled = false,\n required = false,\n hideRequiredStar,\n validationStatus = 'default',\n errorMessage,\n validationMessages = [],\n withoutFieldValidation = false,\n className,\n onChange,\n dataTestId = 'Password',\n ...rest\n } = props;\n\n const internalStatus = useInternalStatus({\n isDisabled: disabled,\n validationStatus,\n });\n\n const { value, setValue } = useValue<Value>({\n
|
|
1
|
+
{"version":3,"file":"Password.js","names":[],"sources":["../../../../lib/ui/forms/password/Password.tsx"],"sourcesContent":["import { useInternalStatus } from '../../hooks/useInternalStatus';\nimport clsx from 'clsx';\n\nimport { type HTMLInputTypeAttribute, useEffect, useId, useState } from 'react';\n\nimport { useValue } from '../../hooks/useValue';\nimport { FormControl, type FormControlProps } from '../FormControl';\nimport { Icon } from '@clubmed/trident-icons';\nimport { ValidationMessage } from './ValidationMessage';\n\nexport interface PasswordProps<Value> extends FormControlProps<Value> {\n validationMessages?: ValidationMessage[];\n withoutFieldValidation?: boolean;\n}\n\nexport function Password<Value = string>(props: PasswordProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n label,\n value: initialValue,\n disabled = false,\n required = false,\n hideRequiredStar,\n validationStatus = 'default',\n errorMessage,\n validationMessages = [],\n withoutFieldValidation = false,\n className,\n onChange,\n dataTestId = 'Password',\n ...rest\n } = props;\n\n const internalStatus = useInternalStatus({\n isDisabled: disabled,\n validationStatus,\n });\n\n const { value, setValue } = useValue<Value>({\n initialValue,\n onChange,\n });\n const [type, setType] = useState<HTMLInputTypeAttribute>('password');\n\n useEffect(() => {\n if (disabled) {\n setType('password');\n } else {\n setType(type);\n }\n }, [type, disabled]);\n\n const toggleType = () => setType(type === 'password' ? 'text' : 'password');\n\n return (\n <FormControl\n className={className}\n id={id}\n label={label}\n dataName=\"Password\"\n dataTestId={dataTestId}\n disabled={disabled}\n required={required}\n hideRequiredStar={hideRequiredStar}\n validationStatus={withoutFieldValidation ? 'default' : validationStatus}\n errorMessage={errorMessage}\n >\n <div className=\"relative\">\n <input\n {...rest}\n id={id}\n name={name}\n type={type}\n value={value as any}\n disabled={disabled}\n required={required}\n onChange={(e) => setValue(e.target.value as Value, e.nativeEvent)}\n className={clsx(\n 'text-b3 rounded-pill w-full border overflow-hidden ps-20 py-[11px] font-normal outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2',\n {\n 'border-middleGrey focus:border-black active:border-black pe-[52px]':\n (withoutFieldValidation || validationStatus === 'default') &&\n internalStatus !== 'disabled',\n 'bg-white text-black': internalStatus !== 'disabled',\n 'bg-pearl border-middleGrey': internalStatus === 'disabled',\n 'pe-[84px]':\n !withoutFieldValidation &&\n (validationStatus === 'error' || validationStatus === 'success'),\n 'border-red': !withoutFieldValidation && validationStatus === 'error',\n 'border-green': !withoutFieldValidation && validationStatus === 'success',\n },\n )}\n aria-label={name}\n />\n\n <div\n className={clsx(\n 'pointer-events-none absolute inset-0 flex items-center justify-between px-20 py-12',\n )}\n >\n <span className=\"ms-auto flex gap-x-8\">\n {!withoutFieldValidation && validationStatus === 'error' && (\n <Icon name=\"CrossDefault\" color=\"red\" width=\"24px\" />\n )}\n\n {!withoutFieldValidation && validationStatus === 'success' && (\n <Icon name=\"CheckDefault\" color=\"green\" width=\"24px\" />\n )}\n\n {!disabled && (\n <button\n type=\"button\"\n className=\"pointer-events-auto size-24 inline-flex outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2\"\n onClick={toggleType}\n >\n <Icon\n name={type === 'password' ? 'Invisible' : 'Visible'}\n width=\"24px\"\n type=\"svg\"\n />\n </button>\n )}\n </span>\n </div>\n </div>\n\n {validationMessages.length > 0 && (\n <div className=\"flex flex-col gap-[10px] mt-8\">\n {validationMessages.map(({ label, status }, index) => (\n <ValidationMessage label={label} status={status} key={index} />\n ))}\n </div>\n )}\n </FormControl>\n );\n}\n"],"mappings":";;;;;;;;;AAeA,SAAgB,EAAyB,GAA6B;CACpE,IAAM,IAAa,GAAO,EAEpB,EACJ,QAAK,GACL,UAAO,GACP,UACA,OAAO,GACP,cAAW,IACX,cAAW,IACX,qBACA,sBAAmB,WACnB,iBACA,wBAAqB,EAAE,EACvB,4BAAyB,IACzB,cACA,aACA,gBAAa,YACb,GAAG,MACD,GAEE,IAAiB,EAAkB;EACvC,YAAY;EACZ;EACD,CAAC,EAEI,EAAE,UAAO,gBAAa,EAAgB;EAC1C;EACA;EACD,CAAC,EACI,CAAC,GAAM,KAAW,EAAiC,WAAW;AAEpE,SAAgB;AACd,EACE,EADE,IACM,aAEA,EAAK;IAEd,CAAC,GAAM,EAAS,CAAC;CAEpB,IAAM,UAAmB,EAAQ,MAAS,aAAa,SAAS,WAAW;AAE3E,QACE,kBAAC,GAAD;EACa;EACP;EACG;EACP,UAAS;EACG;EACF;EACA;EACQ;EAClB,kBAAkB,IAAyB,YAAY;EACzC;YAVhB,CAYE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,SAAD;IACE,GAAI;IACA;IACE;IACA;IACC;IACG;IACA;IACV,WAAW,MAAM,EAAS,EAAE,OAAO,OAAgB,EAAE,YAAY;IACjE,WAAW,EACT,yKACA;KACE,uEACG,KAA0B,MAAqB,cAChD,MAAmB;KACrB,uBAAuB,MAAmB;KAC1C,8BAA8B,MAAmB;KACjD,aACE,CAAC,MACA,MAAqB,WAAW,MAAqB;KACxD,cAAc,CAAC,KAA0B,MAAqB;KAC9D,gBAAgB,CAAC,KAA0B,MAAqB;KACjE,CACF;IACD,cAAY;IACZ,CAAA,EAEF,kBAAC,OAAD;IACE,WAAW,EACT,qFACD;cAED,kBAAC,QAAD;KAAM,WAAU;eAAhB;MACG,CAAC,KAA0B,MAAqB,WAC/C,kBAAC,GAAD;OAAM,MAAK;OAAe,OAAM;OAAM,OAAM;OAAS,CAAA;MAGtD,CAAC,KAA0B,MAAqB,aAC/C,kBAAC,GAAD;OAAM,MAAK;OAAe,OAAM;OAAQ,OAAM;OAAS,CAAA;MAGxD,CAAC,KACA,kBAAC,UAAD;OACE,MAAK;OACL,WAAU;OACV,SAAS;iBAET,kBAAC,GAAD;QACE,MAAM,MAAS,aAAa,cAAc;QAC1C,OAAM;QACN,MAAK;QACL,CAAA;OACK,CAAA;MAEN;;IACH,CAAA,CACF;MAEL,EAAmB,SAAS,KAC3B,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAmB,KAAK,EAAE,UAAO,aAAU,MAC1C,kBAAC,GAAD;IAA0B;IAAe;IAAsB,EAAT,EAAS,CAC/D;GACE,CAAA,CAEI"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "../../../chunks/clsx.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
import { Icon as r } from "@clubmed/trident-icons";
|
|
4
4
|
//#region lib/ui/forms/password/ValidationMessage.tsx
|
|
5
5
|
var i = {
|
|
6
6
|
default: {
|
|
@@ -18,13 +18,13 @@ var i = {
|
|
|
18
18
|
};
|
|
19
19
|
function a({ label: a, status: o }) {
|
|
20
20
|
let { iconName: s, iconColor: c } = i[o];
|
|
21
|
-
return /* @__PURE__ */
|
|
21
|
+
return /* @__PURE__ */ n("div", {
|
|
22
22
|
className: "flex gap-[6px] px-20 items-center",
|
|
23
|
-
children: [/* @__PURE__ */
|
|
23
|
+
children: [/* @__PURE__ */ t(r, {
|
|
24
24
|
name: s,
|
|
25
25
|
width: "30px",
|
|
26
26
|
color: c
|
|
27
|
-
}), /* @__PURE__ */
|
|
27
|
+
}), /* @__PURE__ */ t("span", {
|
|
28
28
|
className: e("text-b3", `text-${c}`),
|
|
29
29
|
children: a
|
|
30
30
|
})]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InputHTMLAttributes } from 'react';
|
|
2
|
-
export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
2
|
+
export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'onChange'> {
|
|
3
3
|
/**
|
|
4
4
|
* The data-testid to apply to the button.
|
|
5
5
|
* This is used for testing purposes.
|
|
@@ -10,6 +10,7 @@ export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
|
|
|
10
10
|
* The diameter of the radio button.
|
|
11
11
|
* */
|
|
12
12
|
size?: number;
|
|
13
|
+
onChange?: (event: Event, value: string) => void;
|
|
13
14
|
}
|
|
14
15
|
export declare function Radio(props: RadioProps): import("react/jsx-runtime").JSX.Element;
|
|
15
16
|
export declare namespace Radio {
|
package/ui/forms/radios/Radio.js
CHANGED
|
@@ -3,20 +3,23 @@ import { useId as t } from "react";
|
|
|
3
3
|
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
4
|
//#region lib/ui/forms/radios/Radio.tsx
|
|
5
5
|
function i(i) {
|
|
6
|
-
let a = t(), { id: o = a, name: s = o, className: c, dataTestId: l, disabled: u, size: d = 24, tabIndex: f = 0, children: p,
|
|
6
|
+
let a = t(), { id: o = a, name: s = o, className: c, dataTestId: l, disabled: u, size: d = 24, tabIndex: f = 0, children: p, onChange: m, ...h } = i;
|
|
7
7
|
return /* @__PURE__ */ r("label", {
|
|
8
8
|
className: e(c, "relative flex items-center gap-8", { "text-grey": u }),
|
|
9
9
|
children: [/* @__PURE__ */ r("span", {
|
|
10
10
|
className: "relative",
|
|
11
11
|
children: [/* @__PURE__ */ n("input", {
|
|
12
12
|
"data-testid": l,
|
|
13
|
-
...
|
|
13
|
+
...h,
|
|
14
14
|
id: o,
|
|
15
15
|
name: s,
|
|
16
16
|
type: "radio",
|
|
17
17
|
tabIndex: f,
|
|
18
18
|
"data-name": "Radio",
|
|
19
|
-
disabled: u
|
|
19
|
+
disabled: u,
|
|
20
|
+
onChange: (e) => {
|
|
21
|
+
m?.(e.nativeEvent, e.target.value);
|
|
22
|
+
}
|
|
20
23
|
}), /* @__PURE__ */ n("span", {
|
|
21
24
|
style: {
|
|
22
25
|
height: d,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","names":[],"sources":["../../../../lib/ui/forms/radios/Radio.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport { type InputHTMLAttributes, useId } from 'react';\n\nexport interface RadioProps
|
|
1
|
+
{"version":3,"file":"Radio.js","names":[],"sources":["../../../../lib/ui/forms/radios/Radio.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport { type InputHTMLAttributes, useId } from 'react';\n\nexport interface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'onChange'> {\n /**\n * The data-testid to apply to the button.\n * This is used for testing purposes.\n * @deprecated use [\"data-testid\"] instead.\n */\n dataTestId?: string;\n /**\n * The diameter of the radio button.\n * */\n size?: number;\n onChange?: (event: Event, value: string) => void;\n}\n\nexport function Radio(props: RadioProps) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n className,\n dataTestId,\n disabled,\n size = 24,\n tabIndex = 0,\n children,\n onChange,\n ...rest\n } = props;\n\n return (\n <label\n className={clsx(className, 'relative flex items-center gap-8', {\n 'text-grey': disabled,\n })}\n >\n <span className=\"relative\">\n <input\n data-testid={dataTestId}\n {...rest}\n id={id}\n name={name}\n type=\"radio\"\n tabIndex={tabIndex}\n data-name=\"Radio\"\n disabled={disabled}\n onChange={(e) => {\n onChange?.(e.nativeEvent, e.target.value);\n }}\n />\n\n <span style={{ height: size, width: size }} className={clsx({ 'bg-pearl': disabled })}>\n <svg viewBox=\"0 0 16 16\" width={(size * 2) / 3} className=\"overflow-visible\">\n <circle cx=\"8\" cy=\"8\" r=\"8px\" style={{ fill: 'var(--color-saffron)' }} />\n <circle cx=\"8\" cy=\"8\" r=\"4px\" style={{ fill: 'var(--color-black)' }} />\n </svg>\n </span>\n </span>\n\n {children}\n </label>\n );\n}\n\nRadio.displayName = 'Radio';\n"],"mappings":";;;;AAkBA,SAAgB,EAAM,GAAmB;CACvC,IAAM,IAAa,GAAO,EAEpB,EACJ,QAAK,GACL,UAAO,GACP,cACA,eACA,aACA,UAAO,IACP,cAAW,GACX,aACA,aACA,GAAG,MACD;AAEJ,QACE,kBAAC,SAAD;EACE,WAAW,EAAK,GAAW,oCAAoC,EAC7D,aAAa,GACd,CAAC;YAHJ,CAKE,kBAAC,QAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,SAAD;IACE,eAAa;IACb,GAAI;IACA;IACE;IACN,MAAK;IACK;IACV,aAAU;IACA;IACV,WAAW,MAAM;AACf,SAAW,EAAE,aAAa,EAAE,OAAO,MAAM;;IAE3C,CAAA,EAEF,kBAAC,QAAD;IAAM,OAAO;KAAE,QAAQ;KAAM,OAAO;KAAM;IAAE,WAAW,EAAK,EAAE,YAAY,GAAU,CAAC;cACnF,kBAAC,OAAD;KAAK,SAAQ;KAAY,OAAQ,IAAO,IAAK;KAAG,WAAU;eAA1D,CACE,kBAAC,UAAD;MAAQ,IAAG;MAAI,IAAG;MAAI,GAAE;MAAM,OAAO,EAAE,MAAM,wBAAwB;MAAI,CAAA,EACzE,kBAAC,UAAD;MAAQ,IAAG;MAAI,IAAG;MAAI,GAAE;MAAM,OAAO,EAAE,MAAM,sBAAsB;MAAI,CAAA,CACnE;;IACD,CAAA,CACF;MAEN,EACK;;;AAIZ,EAAM,cAAc"}
|
|
@@ -6,7 +6,6 @@ import { jsx as s } from "react/jsx-runtime";
|
|
|
6
6
|
//#region lib/ui/forms/radios/RadioGroup.tsx
|
|
7
7
|
function c(c) {
|
|
8
8
|
let l = o(), { id: u = l, name: d = u, children: f, value: p, defaultValue: m, onChange: h, disabled: g, readOnly: _, tabIndex: v = 0, ...y } = c, { value: b, setValue: x } = t({
|
|
9
|
-
name: d,
|
|
10
9
|
initialValue: p,
|
|
11
10
|
defaultValue: m,
|
|
12
11
|
onChange: h
|
|
@@ -15,7 +14,7 @@ function c(c) {
|
|
|
15
14
|
if (e.key === n.ARROW_RIGHT || e.key === n.ARROW_DOWN) r = (t + 1) % i.length, i[r]?.focus();
|
|
16
15
|
else if (e.key === n.ARROW_LEFT || e.key === n.ARROW_UP) r = (t - 1 + i.length) % i.length, i[r]?.focus();
|
|
17
16
|
else if (e.key === n.SPACE || e.key === n.ENTER) {
|
|
18
|
-
x(i[t].dataset.value);
|
|
17
|
+
x(i[t].dataset.value, e.nativeEvent);
|
|
19
18
|
return;
|
|
20
19
|
}
|
|
21
20
|
};
|
|
@@ -43,8 +42,8 @@ function c(c) {
|
|
|
43
42
|
"data-value": r,
|
|
44
43
|
"aria-checked": b === r,
|
|
45
44
|
onKeyDown: (e) => S(e, t),
|
|
46
|
-
onClick() {
|
|
47
|
-
!g && !_ && (x(r), e.props?.onClick?.(r));
|
|
45
|
+
onClick(t) {
|
|
46
|
+
!g && !_ && (x(r, t.nativeEvent), e.props?.onClick?.(r));
|
|
48
47
|
}
|
|
49
48
|
}) : i(e, {
|
|
50
49
|
...e.props,
|
|
@@ -55,8 +54,8 @@ function c(c) {
|
|
|
55
54
|
tabIndex: C(o, t),
|
|
56
55
|
checked: o,
|
|
57
56
|
value: r,
|
|
58
|
-
onChange() {
|
|
59
|
-
!g && !_ && x(r);
|
|
57
|
+
onChange(e) {
|
|
58
|
+
!g && !_ && x(r, e);
|
|
60
59
|
}
|
|
61
60
|
});
|
|
62
61
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.js","names":[],"sources":["../../../../lib/ui/forms/radios/RadioGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n useId,\n type ReactElement,\n} from 'react';\nimport type { FormControlProps } from '../FormControl';\nimport type { RadioProps } from './Radio';\nimport { useValue } from '../../hooks/useValue';\nimport clsx from 'clsx';\nimport type { ButtonProps } from '../../buttons/Button';\nimport { KEY } from '../../hooks/keyboard.constants';\n\nexport interface RadioGroupProps<Value = string>\n extends Pick<\n FormControlProps<Value>,\n 'id' | 'name' | 'value' | 'onChange' | 'disabled' | 'readOnly' | 'tabIndex'\n >,\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {}\n\nexport function RadioGroup<Value = string>(props: RadioGroupProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n children,\n value: initialValue,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n tabIndex = 0,\n ...rest\n } = props;\n\n const { value, setValue } = useValue<Value>({\n
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","names":[],"sources":["../../../../lib/ui/forms/radios/RadioGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n useId,\n type ReactElement,\n} from 'react';\nimport type { FormControlProps } from '../FormControl';\nimport type { RadioProps } from './Radio';\nimport { useValue } from '../../hooks/useValue';\nimport clsx from 'clsx';\nimport type { ButtonProps } from '../../buttons/Button';\nimport { KEY } from '../../hooks/keyboard.constants';\n\nexport interface RadioGroupProps<Value = string>\n extends Pick<\n FormControlProps<Value>,\n 'id' | 'name' | 'value' | 'onChange' | 'disabled' | 'readOnly' | 'tabIndex'\n >,\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {}\n\nexport function RadioGroup<Value = string>(props: RadioGroupProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n children,\n value: initialValue,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n tabIndex = 0,\n ...rest\n } = props;\n\n const { value, setValue } = useValue<Value>({\n initialValue,\n defaultValue: defaultValue as Value,\n onChange,\n });\n\n const handleKeyDown = (e: React.KeyboardEvent, index: number) => {\n let newIndex = index;\n const options = (e.target as any)!.parentNode!.querySelectorAll('[role=\"radio\"]');\n\n if (e.key === KEY.ARROW_RIGHT || e.key === KEY.ARROW_DOWN) {\n newIndex = (index + 1) % options.length;\n options[newIndex]?.focus();\n } else if (e.key === KEY.ARROW_LEFT || e.key === KEY.ARROW_UP) {\n newIndex = (index - 1 + options.length) % options.length;\n options[newIndex]?.focus();\n } else if (e.key === KEY.SPACE || e.key === KEY.ENTER) {\n setValue(options[index].dataset.value as Value, e.nativeEvent);\n return;\n }\n };\n\n function getTabIndex(checked: boolean, index: number) {\n if (value === undefined || value === null || value === '') {\n return tabIndex === index ? 0 : -1;\n }\n\n return checked ? 0 : -1;\n }\n\n return (\n <div {...rest} className={clsx('flex gap-12', rest.className)} role=\"radiogroup\">\n {Children.map(children, (child, index) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const type = (child.type as unknown as ReactElement & { displayName?: string }).displayName;\n const itemValue = (child.props as ButtonProps | RadioProps).value;\n const checked = value === itemValue;\n\n if (type?.includes('Button')) {\n return cloneElement(child, {\n color: checked ? 'black' : 'white',\n ...(child.props as any),\n value: undefined,\n role: 'radio',\n name,\n component: 'span',\n id: `${id}-${index}`,\n disabled,\n readOnly,\n tabIndex: getTabIndex(checked, index),\n 'data-value': itemValue,\n 'aria-checked': value === itemValue,\n onKeyDown: (e: React.KeyboardEvent) => handleKeyDown(e, index),\n onClick(event: React.MouseEvent) {\n if (!disabled && !readOnly) {\n setValue(itemValue as Value, event.nativeEvent);\n (child.props as any)?.onClick?.(itemValue as Value);\n }\n },\n } as ButtonProps);\n }\n\n return cloneElement(child, {\n ...(child.props as any),\n name,\n id: `${id}-${index}`,\n disabled,\n readOnly,\n tabIndex: getTabIndex(checked, index),\n checked: checked,\n value: itemValue,\n onChange(event: Event) {\n if (!disabled && !readOnly) {\n setValue(itemValue as Value, event);\n }\n },\n } as RadioProps);\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;AAsBA,SAAgB,EAA2B,GAA+B;CACxE,IAAM,IAAa,GAAO,EAEpB,EACJ,QAAK,GACL,UAAO,GACP,aACA,OAAO,GACP,iBACA,aACA,aACA,aACA,cAAW,GACX,GAAG,MACD,GAEE,EAAE,UAAO,gBAAa,EAAgB;EAC1C;EACc;EACd;EACD,CAAC,EAEI,KAAiB,GAAwB,MAAkB;EAC/D,IAAI,IAAW,GACT,IAAW,EAAE,OAAgB,WAAY,iBAAiB,mBAAiB;AAEjF,MAAI,EAAE,QAAQ,EAAI,eAAe,EAAE,QAAQ,EAAI,WAE7C,CADA,KAAY,IAAQ,KAAK,EAAQ,QACjC,EAAQ,IAAW,OAAO;WACjB,EAAE,QAAQ,EAAI,cAAc,EAAE,QAAQ,EAAI,SAEnD,CADA,KAAY,IAAQ,IAAI,EAAQ,UAAU,EAAQ,QAClD,EAAQ,IAAW,OAAO;WACjB,EAAE,QAAQ,EAAI,SAAS,EAAE,QAAQ,EAAI,OAAO;AACrD,KAAS,EAAQ,GAAO,QAAQ,OAAgB,EAAE,YAAY;AAC9D;;;CAIJ,SAAS,EAAY,GAAkB,GAAe;AAKpD,SAJI,KAAiC,QAAQ,MAAU,KAC9C,MAAa,IAAQ,IAAI,KAG3B,IAAU,IAAI;;AAGvB,QACE,kBAAC,OAAD;EAAK,GAAI;EAAM,WAAW,EAAK,eAAe,EAAK,UAAU;EAAE,MAAK;YACjE,EAAS,IAAI,IAAW,GAAO,MAAU;AACxC,OAAI,CAAC,EAAe,EAAM,CACxB,QAAO;GAGT,IAAM,IAAQ,EAAM,KAA4D,aAC1E,IAAa,EAAM,MAAmC,OACtD,IAAU,MAAU;AA0B1B,UAxBI,GAAM,SAAS,SAAS,GACnB,EAAa,GAAO;IACzB,OAAO,IAAU,UAAU;IAC3B,GAAI,EAAM;IACV,OAAO,KAAA;IACP,MAAM;IACN;IACA,WAAW;IACX,IAAI,GAAG,EAAG,GAAG;IACb;IACA;IACA,UAAU,EAAY,GAAS,EAAM;IACrC,cAAc;IACd,gBAAgB,MAAU;IAC1B,YAAY,MAA2B,EAAc,GAAG,EAAM;IAC9D,QAAQ,GAAyB;AAC/B,KAAI,CAAC,KAAY,CAAC,MAChB,EAAS,GAAoB,EAAM,YAAY,EAC9C,EAAM,OAAe,UAAU,EAAmB;;IAGxD,CAAgB,GAGZ,EAAa,GAAO;IACzB,GAAI,EAAM;IACV;IACA,IAAI,GAAG,EAAG,GAAG;IACb;IACA;IACA,UAAU,EAAY,GAAS,EAAM;IAC5B;IACT,OAAO;IACP,SAAS,GAAc;AACrB,KAAI,CAAC,KAAY,CAAC,KAChB,EAAS,GAAoB,EAAM;;IAGxC,CAAe;IAChB;EACE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FunctionComponent } from 'react';
|
|
2
|
+
import { ImageProps } from '../Image';
|
|
3
|
+
import { FrameWrapperProps } from './FrameWrapper';
|
|
4
|
+
export interface FrameProps extends FrameWrapperProps {
|
|
5
|
+
image: ImageProps | null;
|
|
6
|
+
sizes?: ImageProps['sizes'];
|
|
7
|
+
}
|
|
8
|
+
export declare const Frame: FunctionComponent<FrameProps>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Image as e } from "../Image.js";
|
|
2
|
+
import { FrameWrapper as t } from "./FrameWrapper.js";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
//#region lib/ui/frame/Frame.tsx
|
|
5
|
+
var i = ({ children: i, image: a, sizes: o, ...s }) => /* @__PURE__ */ r(t, {
|
|
6
|
+
...s,
|
|
7
|
+
children: [a && /* @__PURE__ */ n(e, {
|
|
8
|
+
...a,
|
|
9
|
+
className: "h-full w-full object-cover",
|
|
10
|
+
sizes: o ?? a.sizes
|
|
11
|
+
}), i]
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { i as Frame };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=Frame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Frame.js","names":[],"sources":["../../../lib/ui/frame/Frame.tsx"],"sourcesContent":["import type { FunctionComponent } from 'react';\n\nimport { Image, type ImageProps } from '../Image';\n\nimport { FrameWrapper, type FrameWrapperProps } from './FrameWrapper';\n\nexport interface FrameProps extends FrameWrapperProps {\n image: ImageProps | null;\n sizes?: ImageProps['sizes'];\n}\n\nexport const Frame: FunctionComponent<FrameProps> = ({ children, image, sizes, ...props }) => {\n return (\n <FrameWrapper {...props}>\n {image && (\n <Image {...image} className=\"h-full w-full object-cover\" sizes={sizes ?? image.sizes} />\n )}\n {children}\n </FrameWrapper>\n );\n};\n"],"mappings":";;;;AAWA,IAAa,KAAwC,EAAE,aAAU,UAAO,UAAO,GAAG,QAE9E,kBAAC,GAAD;CAAc,GAAI;WAAlB,CACG,KACC,kBAAC,GAAD;EAAO,GAAI;EAAO,WAAU;EAA6B,OAAO,KAAS,EAAM;EAAS,CAAA,EAEzF,EACY"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { t as e } from "../../chunks/clsx.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region lib/ui/frame/FrameLabelsWrapper.tsx
|
|
4
|
+
var n = ({ children: n, className: r, hasImage: i = !1, ...a }) => /* @__PURE__ */ t("div", {
|
|
5
|
+
...a,
|
|
6
|
+
className: e("rounded-16 pointer-events-none absolute inset-0 flex flex-col overflow-auto", { "bg-linear-to-b from-transparent via-transparent via-40% to-black/70": i }, r),
|
|
7
|
+
children: n
|
|
8
|
+
});
|
|
9
|
+
//#endregion
|
|
10
|
+
export { n as FrameLabelsWrapper };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=FrameLabelsWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameLabelsWrapper.js","names":[],"sources":["../../../lib/ui/frame/FrameLabelsWrapper.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { ComponentPropsWithoutRef, FunctionComponent } from 'react';\n\nexport interface FrameLabelsWrapperProps extends ComponentPropsWithoutRef<'div'> {\n hasImage: boolean;\n}\n\nexport const FrameLabelsWrapper: FunctionComponent<FrameLabelsWrapperProps> = ({\n children,\n className,\n hasImage = false,\n ...attrs\n}) => {\n return (\n <div\n {...attrs}\n className={clsx(\n 'rounded-16 pointer-events-none absolute inset-0 flex flex-col overflow-auto',\n {\n 'bg-linear-to-b from-transparent via-transparent via-40% to-black/70': hasImage,\n },\n className,\n )}\n >\n {children}\n </div>\n );\n};\n"],"mappings":";;;AAOA,IAAa,KAAkE,EAC7E,aACA,cACA,cAAW,IACX,GAAG,QAGD,kBAAC,OAAD;CACE,GAAI;CACJ,WAAW,EACT,+EACA,EACE,uEAAuE,GACxE,EACD,EACD;CAEA;CACG,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FunctionComponent, HTMLAttributes } from 'react';
|
|
2
|
+
export interface FrameTitleProps extends HTMLAttributes<HTMLDivElement | HTMLAnchorElement> {
|
|
3
|
+
coverLink?: boolean;
|
|
4
|
+
hasImage?: boolean;
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const FrameTitle: FunctionComponent<FrameTitleProps>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { t as e } from "../../chunks/clsx.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region lib/ui/frame/FrameTitle.tsx
|
|
4
|
+
var n = ({ children: n, className: r, coverLink: i = !1, hasImage: a = !1, href: o, onClick: s, ...c }) => {
|
|
5
|
+
let l = !!o, u = l ? "a" : "div", d = l ? {
|
|
6
|
+
href: o,
|
|
7
|
+
onClick: s
|
|
8
|
+
} : null;
|
|
9
|
+
return /* @__PURE__ */ t(u, {
|
|
10
|
+
className: e("pointer-events-auto flex w-full gap-x-8 px-12 pb-12 sm:px-24 sm:pb-24", {
|
|
11
|
+
"justify-center text-center": !n,
|
|
12
|
+
"h-full items-end": i,
|
|
13
|
+
"mt-auto h-auto": !i,
|
|
14
|
+
"text-white": a,
|
|
15
|
+
"text-black": !a
|
|
16
|
+
}, r),
|
|
17
|
+
...d,
|
|
18
|
+
...c,
|
|
19
|
+
children: n
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { n as FrameTitle };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=FrameTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameTitle.js","names":[],"sources":["../../../lib/ui/frame/FrameTitle.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { FunctionComponent, HTMLAttributes } from 'react';\n\nexport interface FrameTitleProps extends HTMLAttributes<HTMLDivElement | HTMLAnchorElement> {\n coverLink?: boolean;\n hasImage?: boolean;\n href?: string;\n}\n\nexport const FrameTitle: FunctionComponent<FrameTitleProps> = ({\n children,\n className,\n coverLink = false,\n hasImage = false,\n href,\n onClick,\n ...attrs\n}) => {\n const hasLink = !!href;\n\n const TagName = hasLink ? 'a' : 'div';\n const tagProps = hasLink ? { href, onClick } : null;\n\n return (\n <TagName\n className={clsx(\n 'pointer-events-auto flex w-full gap-x-8 px-12 pb-12 sm:px-24 sm:pb-24',\n {\n 'justify-center text-center': !children,\n 'h-full items-end': coverLink,\n 'mt-auto h-auto': !coverLink,\n 'text-white': hasImage,\n 'text-black': !hasImage,\n },\n className,\n )}\n {...tagProps}\n {...attrs}\n >\n {children}\n </TagName>\n );\n};\n"],"mappings":";;;AASA,IAAa,KAAkD,EAC7D,aACA,cACA,eAAY,IACZ,cAAW,IACX,SACA,YACA,GAAG,QACC;CACJ,IAAM,IAAU,CAAC,CAAC,GAEZ,IAAU,IAAU,MAAM,OAC1B,IAAW,IAAU;EAAE;EAAM;EAAS,GAAG;AAE/C,QACE,kBAAC,GAAD;EACE,WAAW,EACT,yEACA;GACE,8BAA8B,CAAC;GAC/B,oBAAoB;GACpB,kBAAkB,CAAC;GACnB,cAAc;GACd,cAAc,CAAC;GAChB,EACD,EACD;EACD,GAAI;EACJ,GAAI;EAEH;EACO,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, FunctionComponent } from 'react';
|
|
2
|
+
export interface FrameWrapperProps extends ComponentPropsWithoutRef<'article'> {
|
|
3
|
+
as?: 'article' | 'div' | 'span';
|
|
4
|
+
format?: 'horizontal' | 'vertical' | 'square' | 'custom';
|
|
5
|
+
}
|
|
6
|
+
export declare const FrameWrapper: FunctionComponent<FrameWrapperProps>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { t as e } from "../../chunks/clsx.js";
|
|
2
|
+
import { CARD_ASPECT_RATIOS as t } from "../cards/CardAspectRatios.js";
|
|
3
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
4
|
+
//#region lib/ui/frame/FrameWrapper.tsx
|
|
5
|
+
var r = ({ as: r = "article", children: i, className: a, format: o = "horizontal", ...s }) => /* @__PURE__ */ n(r, {
|
|
6
|
+
className: e(t[o], "group rounded-16 relative isolate overflow-hidden", a),
|
|
7
|
+
"data-name": "Frame",
|
|
8
|
+
...s,
|
|
9
|
+
children: i
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { r as FrameWrapper };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=FrameWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameWrapper.js","names":[],"sources":["../../../lib/ui/frame/FrameWrapper.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { ComponentPropsWithoutRef, FunctionComponent } from 'react';\n\nimport { CARD_ASPECT_RATIOS } from '../cards/CardAspectRatios';\n\nexport interface FrameWrapperProps extends ComponentPropsWithoutRef<'article'> {\n as?: 'article' | 'div' | 'span';\n format?: 'horizontal' | 'vertical' | 'square' | 'custom';\n}\n\nexport const FrameWrapper: FunctionComponent<FrameWrapperProps> = ({\n as: TagName = 'article',\n children,\n className,\n format = 'horizontal',\n ...attrs\n}) => {\n return (\n <TagName\n className={clsx(\n CARD_ASPECT_RATIOS[format],\n 'group rounded-16 relative isolate overflow-hidden',\n className,\n )}\n data-name=\"Frame\"\n {...attrs}\n >\n {children}\n </TagName>\n );\n};\n"],"mappings":";;;;AAUA,IAAa,KAAsD,EACjE,IAAI,IAAU,WACd,aACA,cACA,YAAS,cACT,GAAG,QAGD,kBAAC,GAAD;CACE,WAAW,EACT,EAAmB,IACnB,qDACA,EACD;CACD,aAAU;CACV,GAAI;CAEH;CACO,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FunctionComponent } from 'react';
|
|
2
|
+
import { ImageProps } from '../Image';
|
|
3
|
+
import { FrameWrapperProps } from './FrameWrapper';
|
|
4
|
+
interface SliderLabels {
|
|
5
|
+
next: string;
|
|
6
|
+
previous: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SliderFrameProps extends FrameWrapperProps {
|
|
9
|
+
describedby?: string;
|
|
10
|
+
items: ImageProps[];
|
|
11
|
+
labels: SliderLabels;
|
|
12
|
+
}
|
|
13
|
+
export declare const SliderFrame: FunctionComponent<SliderFrameProps>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Image as e } from "../Image.js";
|
|
3
|
+
import { FrameWrapper as t } from "./FrameWrapper.js";
|
|
4
|
+
import { Carousel as n } from "../carousel/Carousel.js";
|
|
5
|
+
import { CarouselBody as r } from "../carousel/CarouselBody.js";
|
|
6
|
+
import { CarouselItem as i } from "../carousel/CarouselItem.js";
|
|
7
|
+
import { CarouselNext as a } from "../carousel/CarouselNext.js";
|
|
8
|
+
import { CarouselPrevious as o } from "../carousel/CarouselPrevious.js";
|
|
9
|
+
import { useMemo as s } from "react";
|
|
10
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
11
|
+
//#region lib/ui/frame/SliderFrame.tsx
|
|
12
|
+
var u = ({ children: u, describedby: d, items: f, labels: p, ...m }) => {
|
|
13
|
+
let h = f.length > 1, g = s(() => f.map((t) => /* @__PURE__ */ c(e, {
|
|
14
|
+
...t,
|
|
15
|
+
className: "pointer-events-none size-full object-cover"
|
|
16
|
+
}, t.src)), [f]);
|
|
17
|
+
return /* @__PURE__ */ l(t, {
|
|
18
|
+
...m,
|
|
19
|
+
children: [h ? /* @__PURE__ */ l(n, {
|
|
20
|
+
className: "rounded-16 h-full select-none",
|
|
21
|
+
children: [/* @__PURE__ */ c(r, {
|
|
22
|
+
className: "h-full",
|
|
23
|
+
scrollClassName: "h-full auto-cols-full",
|
|
24
|
+
children: g.map((e, t) => /* @__PURE__ */ c(i, {
|
|
25
|
+
index: t,
|
|
26
|
+
children: /* @__PURE__ */ c("div", {
|
|
27
|
+
className: "h-full overflow-hidden",
|
|
28
|
+
children: e
|
|
29
|
+
})
|
|
30
|
+
}, t))
|
|
31
|
+
}), /* @__PURE__ */ l("div", {
|
|
32
|
+
className: "pointer-events-none absolute inset-0 z-1 -mx-70 flex items-center justify-between gap-x-20 px-12 opacity-0 transition-all group-hover:mx-0 group-hover:opacity-100",
|
|
33
|
+
children: [/* @__PURE__ */ c(o, {
|
|
34
|
+
"aria-describedby": d,
|
|
35
|
+
label: p.previous
|
|
36
|
+
}), /* @__PURE__ */ c(a, {
|
|
37
|
+
"aria-describedby": d,
|
|
38
|
+
label: p.next
|
|
39
|
+
})]
|
|
40
|
+
})]
|
|
41
|
+
}) : /* @__PURE__ */ c(e, {
|
|
42
|
+
...f[0],
|
|
43
|
+
className: "size-full object-cover"
|
|
44
|
+
}), u]
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
//#endregion
|
|
48
|
+
export { u as SliderFrame };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=SliderFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SliderFrame.js","names":[],"sources":["../../../lib/ui/frame/SliderFrame.tsx"],"sourcesContent":["'use client';\nimport { type FunctionComponent, useMemo } from 'react';\n\nimport { Image, type ImageProps } from '../Image';\nimport { Carousel } from '../carousel/Carousel';\nimport { CarouselBody } from '../carousel/CarouselBody';\nimport { CarouselItem } from '../carousel/CarouselItem';\nimport { CarouselNext } from '../carousel/CarouselNext';\nimport { CarouselPrevious } from '../carousel/CarouselPrevious';\n\nimport { FrameWrapper, type FrameWrapperProps } from './FrameWrapper';\n\ninterface SliderLabels {\n next: string;\n previous: string;\n}\n\nexport interface SliderFrameProps extends FrameWrapperProps {\n describedby?: string;\n items: ImageProps[];\n labels: SliderLabels;\n}\n\nexport const SliderFrame: FunctionComponent<SliderFrameProps> = ({\n children,\n describedby,\n items,\n labels,\n ...props\n}) => {\n const hasScroll = items.length > 1;\n\n const sliderItems = useMemo(\n () =>\n items.map((item) => (\n <Image key={item.src} {...item} className=\"pointer-events-none size-full object-cover\" />\n )),\n [items],\n );\n\n return (\n <FrameWrapper {...props}>\n {hasScroll ? (\n <Carousel className=\"rounded-16 h-full select-none\">\n <CarouselBody className=\"h-full\" scrollClassName=\"h-full auto-cols-full\">\n {sliderItems.map((item, i) => (\n <CarouselItem index={i} key={i}>\n <div className=\"h-full overflow-hidden\">{item}</div>\n </CarouselItem>\n ))}\n </CarouselBody>\n <div className=\"pointer-events-none absolute inset-0 z-1 -mx-70 flex items-center justify-between gap-x-20 px-12 opacity-0 transition-all group-hover:mx-0 group-hover:opacity-100\">\n <CarouselPrevious aria-describedby={describedby} label={labels.previous} />\n <CarouselNext aria-describedby={describedby} label={labels.next} />\n </div>\n </Carousel>\n ) : (\n <Image {...items[0]} className=\"size-full object-cover\" />\n )}\n {children}\n </FrameWrapper>\n );\n};\n"],"mappings":";;;;;;;;;;;AAuBA,IAAa,KAAoD,EAC/D,aACA,gBACA,UACA,WACA,GAAG,QACC;CACJ,IAAM,IAAY,EAAM,SAAS,GAE3B,IAAc,QAEhB,EAAM,KAAK,MACT,kBAAC,GAAD;EAAsB,GAAI;EAAM,WAAU;EAA+C,EAA7E,EAAK,IAAwE,CACzF,EACJ,CAAC,EAAM,CACR;AAED,QACE,kBAAC,GAAD;EAAc,GAAI;YAAlB,CACG,IACC,kBAAC,GAAD;GAAU,WAAU;aAApB,CACE,kBAAC,GAAD;IAAc,WAAU;IAAS,iBAAgB;cAC9C,EAAY,KAAK,GAAM,MACtB,kBAAC,GAAD;KAAc,OAAO;eACnB,kBAAC,OAAD;MAAK,WAAU;gBAA0B;MAAW,CAAA;KACvC,EAFc,EAEd,CAAA;IAEJ,CAAA,EACf,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KAAkB,oBAAkB;KAAa,OAAO,EAAO;KAAY,CAAA,EAC3E,kBAAC,GAAD;KAAc,oBAAkB;KAAa,OAAO,EAAO;KAAQ,CAAA,CAAA;;OAIvE,kBAAC,GAAD;GAAO,GAAI,EAAM;GAAI,WAAU;GAA2B,CAAA,EAE3D,EAAA"}
|
package/ui/helpers/cn.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.js","names":[],"sources":["../../../lib/ui/helpers/cn.ts"],"sourcesContent":["import clsx, { type ClassValue } from 'clsx';\n\nimport { twMerge } from './twMerge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;AAIA,SAAgB,EAAG,GAAG,GAAsB;AAC1C,QAAO,EAAQ,EAAK,EAAO,CAAC"}
|