@clubmed/trident-ui 2.0.0-beta.7 → 2.0.0-beta.74
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 +189 -128
- 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/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 +17 -15
- package/examples/checkbox-demo.js.map +1 -1
- package/examples/checkbox-disabled-demo.js +12 -15
- package/examples/checkbox-disabled-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 +2 -1
- package/examples/checkboxes-demo.js.map +1 -1
- package/examples/checkboxes-with-form-control-demo.js +8 -8
- package/examples/checkboxes-with-form-control-demo.js.map +1 -1
- 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 +51 -0
- package/examples/criteria-transports-b2b-demo.js.map +1 -0
- package/examples/criteria-transports-b2c-demo.d.ts +1 -0
- package/examples/criteria-transports-b2c-demo.js +37 -0
- package/examples/criteria-transports-b2c-demo.js.map +1 -0
- package/examples/criteria-transports-data.d.ts +7 -0
- package/examples/criteria-transports-data.js +151 -0
- package/examples/criteria-transports-data.js.map +1 -0
- package/examples/criteria-transports-demo.d.ts +1 -0
- package/examples/criteria-transports-demo.js +34 -0
- package/examples/criteria-transports-demo.js.map +1 -0
- package/examples/criteria-transports-error-demo.d.ts +1 -0
- package/examples/criteria-transports-error-demo.js +29 -0
- package/examples/criteria-transports-error-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/elastic-height-demo.js +2 -1
- package/examples/elastic-height-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/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/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 +10 -3
- package/styles/components.css +99 -0
- package/styles/index.css +0 -1
- package/styles/theme.css +5 -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 +31 -28
- package/ui/AdvancedToast.js.map +1 -1
- package/ui/Avatar.js +1 -1
- package/ui/Avatar.js.map +1 -1
- package/ui/BasicToast.js +13 -13
- package/ui/BasicToast.js.map +1 -1
- package/ui/Breadcrumb.js +7 -6
- package/ui/Breadcrumb.js.map +1 -1
- 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 +18 -18
- 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.d.ts +0 -1
- package/ui/ElasticHeight.js +14 -23
- 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/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/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 +72 -0
- package/ui/criteria/CriteriaTransports.js +224 -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 +10 -4
- package/ui/forms/Filter.js +26 -44
- 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 +4 -4
- package/ui/forms/FormControl.js.map +1 -1
- package/ui/forms/FormControlError.js +4 -4
- package/ui/forms/NumberField.d.ts +27 -26
- 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 +18 -19
- 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 +35 -26
- package/ui/forms/TextField.js.map +1 -1
- package/ui/forms/checkboxes/Checkbox.d.ts +9 -4
- package/ui/forms/checkboxes/Checkbox.js +36 -16
- 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/checkboxes/index.d.ts +0 -1
- package/ui/forms/checkboxes/index.js +1 -2
- package/ui/forms/password/Password.js +21 -22
- 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 +13 -14
- 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
- package/examples/form-checkbox-demo.d.ts +0 -1
- package/examples/form-checkbox-demo.js +0 -30
- package/examples/form-checkbox-demo.js.map +0 -1
- package/examples/form-checkbox-disabled-demo.d.ts +0 -1
- package/examples/form-checkbox-disabled-demo.js +0 -25
- package/examples/form-checkbox-disabled-demo.js.map +0 -1
- package/ui/forms/checkboxes/FormCheckbox.d.ts +0 -12
- package/ui/forms/checkboxes/FormCheckbox.js +0 -38
- package/ui/forms/checkboxes/FormCheckbox.js.map +0 -1
package/styles/ui/tabs.css
CHANGED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
@layer components {
|
|
2
|
-
.tab-focus-pill {
|
|
3
|
-
transform: translateX(
|
|
4
|
-
calc(
|
|
5
|
-
var(--tab-index, 0) * -100% + var(--active-tab, 0) * 100% -
|
|
6
|
-
(var(--spacing) * 4 * (var(--tab-index) - var(--active-tab, 0)))
|
|
7
|
-
)
|
|
8
|
-
);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
[dir='rtl'] .tab-focus-pill {
|
|
12
|
-
transform: translateX(
|
|
13
|
-
calc(
|
|
14
|
-
var(--tab-index) * 100% + var(--active-tab) * -100% +
|
|
15
|
-
(var(--spacing) * 4 * (var(--tab-index) - var(--active-tab)))
|
|
16
|
-
)
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, FunctionComponent, ReactNode } from 'react';
|
|
2
|
+
export interface AccordionItem {
|
|
3
|
+
id?: string;
|
|
4
|
+
header: ReactNode;
|
|
5
|
+
content: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface AccordionProps extends ComponentPropsWithoutRef<'div'> {
|
|
8
|
+
items: AccordionItem[];
|
|
9
|
+
/**
|
|
10
|
+
* When true, multiple panels can be open simultaneously.
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
allowMultiple?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* A render function that wraps each item's `header` inside the trigger `<button>`.
|
|
16
|
+
* Receives `item.header` as its argument and must return a ReactNode.
|
|
17
|
+
* Useful for providing a consistent layout (e.g. flex row with a chevron) across all items
|
|
18
|
+
* without repeating the markup in every `AccordionItem.header`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* triggerWrapper={(children) => (
|
|
22
|
+
* <span className="flex w-full items-center justify-between py-16 font-semibold">
|
|
23
|
+
* {children}
|
|
24
|
+
* <ChevronIcon />
|
|
25
|
+
* </span>
|
|
26
|
+
* )}
|
|
27
|
+
*/
|
|
28
|
+
triggerWrapper?: (children: ReactNode) => ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export declare const Accordion: FunctionComponent<AccordionProps>;
|
package/ui/Accordion.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ElasticHeight as e } from "./ElasticHeight.js";
|
|
2
|
+
import { useCallback as t, useEffect as n, useId as r, useRef as i, useState as a } from "react";
|
|
3
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
|
+
//#region lib/ui/Accordion.tsx
|
|
5
|
+
var c = ({ items: c, allowMultiple: l = !1, triggerWrapper: u, className: d, ...f }) => {
|
|
6
|
+
let p = r(), m = i([]), [h, g] = a(() => /* @__PURE__ */ new Set());
|
|
7
|
+
n(() => {
|
|
8
|
+
l || g((e) => {
|
|
9
|
+
if (e.size <= 1) return e;
|
|
10
|
+
let [t] = e;
|
|
11
|
+
return new Set([t]);
|
|
12
|
+
});
|
|
13
|
+
}, [l]);
|
|
14
|
+
let _ = t((e) => {
|
|
15
|
+
g((t) => {
|
|
16
|
+
let n = new Set(t);
|
|
17
|
+
return n.has(e) ? n.delete(e) : (l || n.clear(), n.add(e)), n;
|
|
18
|
+
});
|
|
19
|
+
}, [l]), v = t((e) => {
|
|
20
|
+
_(e.currentTarget.dataset.itemId);
|
|
21
|
+
}, [_]), y = t((e) => {
|
|
22
|
+
let t = c.length, n = Number(e.currentTarget.dataset.index), r = null;
|
|
23
|
+
switch (e.code) {
|
|
24
|
+
case "ArrowDown":
|
|
25
|
+
e.preventDefault(), r = (n + 1) % t;
|
|
26
|
+
break;
|
|
27
|
+
case "ArrowUp":
|
|
28
|
+
e.preventDefault(), r = (n - 1 + t) % t;
|
|
29
|
+
break;
|
|
30
|
+
case "Home":
|
|
31
|
+
e.preventDefault(), r = 0;
|
|
32
|
+
break;
|
|
33
|
+
case "End":
|
|
34
|
+
e.preventDefault(), r = t - 1;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
r !== null && m.current[r]?.focus();
|
|
38
|
+
}, [c.length]), b = i(/* @__PURE__ */ new Map()), x = t((e) => (b.current.has(e) || b.current.set(e, (t) => {
|
|
39
|
+
m.current[e] = t;
|
|
40
|
+
}), b.current.get(e)), []);
|
|
41
|
+
return /* @__PURE__ */ o("div", {
|
|
42
|
+
...f,
|
|
43
|
+
className: d,
|
|
44
|
+
children: c.map((t, n) => {
|
|
45
|
+
let r = t.id ?? `${p}-${n}`, i = h.has(r), a = `accordion-header-${p}-${n}`, c = `accordion-panel-${p}-${n}`;
|
|
46
|
+
return /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("button", {
|
|
47
|
+
id: a,
|
|
48
|
+
ref: x(n),
|
|
49
|
+
type: "button",
|
|
50
|
+
"aria-expanded": i,
|
|
51
|
+
"aria-controls": c,
|
|
52
|
+
"data-item-id": r,
|
|
53
|
+
"data-index": n,
|
|
54
|
+
onClick: v,
|
|
55
|
+
onKeyDown: y,
|
|
56
|
+
className: "outline-none focus-visible:ring-4 focus-visible:ring-black w-full rounded-pill",
|
|
57
|
+
children: u ? u(t.header) : t.header
|
|
58
|
+
}), /* @__PURE__ */ o(e, {
|
|
59
|
+
id: c,
|
|
60
|
+
role: "region",
|
|
61
|
+
"aria-labelledby": a,
|
|
62
|
+
isExpanded: i,
|
|
63
|
+
children: t.content
|
|
64
|
+
})] }, r);
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
//#endregion
|
|
69
|
+
export { c as Accordion };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=Accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.js","names":[],"sources":["../../lib/ui/Accordion.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type FunctionComponent,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { ElasticHeight } from './ElasticHeight';\n\nexport interface AccordionItem {\n id?: string;\n header: ReactNode;\n content: ReactNode;\n}\n\nexport interface AccordionProps extends ComponentPropsWithoutRef<'div'> {\n items: AccordionItem[];\n /**\n * When true, multiple panels can be open simultaneously.\n * @default false\n */\n allowMultiple?: boolean;\n /**\n * A render function that wraps each item's `header` inside the trigger `<button>`.\n * Receives `item.header` as its argument and must return a ReactNode.\n * Useful for providing a consistent layout (e.g. flex row with a chevron) across all items\n * without repeating the markup in every `AccordionItem.header`.\n *\n * @example\n * triggerWrapper={(children) => (\n * <span className=\"flex w-full items-center justify-between py-16 font-semibold\">\n * {children}\n * <ChevronIcon />\n * </span>\n * )}\n */\n triggerWrapper?: (children: ReactNode) => ReactNode;\n}\n\nexport const Accordion: FunctionComponent<AccordionProps> = ({\n items,\n allowMultiple = false,\n triggerWrapper,\n className,\n ...attrs\n}) => {\n const uid = useId();\n const buttonRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const [openPanels, setOpenPanels] = useState<Set<string>>(() => new Set());\n\n useEffect(() => {\n if (!allowMultiple) {\n setOpenPanels((prev) => {\n if (prev.size <= 1) return prev;\n const [first] = prev;\n return new Set([first]);\n });\n }\n }, [allowMultiple]);\n\n const toggle = useCallback(\n (id: string) => {\n setOpenPanels((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n if (!allowMultiple) {\n next.clear();\n }\n next.add(id);\n }\n return next;\n });\n },\n [allowMultiple],\n );\n\n const handleClick = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n toggle(e.currentTarget.dataset.itemId!);\n },\n [toggle],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>) => {\n const count = items.length;\n const index = Number(event.currentTarget.dataset.index);\n let targetIndex: number | null = null;\n\n switch (event.code) {\n case 'ArrowDown':\n event.preventDefault();\n targetIndex = (index + 1) % count;\n break;\n case 'ArrowUp':\n event.preventDefault();\n targetIndex = (index - 1 + count) % count;\n break;\n case 'Home':\n event.preventDefault();\n targetIndex = 0;\n break;\n case 'End':\n event.preventDefault();\n targetIndex = count - 1;\n break;\n }\n\n if (targetIndex !== null) {\n buttonRefs.current[targetIndex]?.focus();\n }\n },\n [items.length],\n );\n\n const refCallbacks = useRef(new Map<number, (el: HTMLButtonElement | null) => void>());\n const getRefCallback = useCallback((index: number) => {\n if (!refCallbacks.current.has(index)) {\n refCallbacks.current.set(index, (el: HTMLButtonElement | null) => {\n buttonRefs.current[index] = el;\n });\n }\n return refCallbacks.current.get(index)!;\n }, []);\n\n return (\n <div {...attrs} className={className}>\n {items.map((item, index) => {\n const resolvedId = item.id ?? `${uid}-${index}`;\n const isOpen = openPanels.has(resolvedId);\n const headerId = `accordion-header-${uid}-${index}`;\n const panelId = `accordion-panel-${uid}-${index}`;\n\n return (\n <div key={resolvedId}>\n <button\n id={headerId}\n ref={getRefCallback(index)}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={panelId}\n data-item-id={resolvedId}\n data-index={index}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className=\"outline-none focus-visible:ring-4 focus-visible:ring-black w-full rounded-pill\"\n >\n {triggerWrapper ? triggerWrapper(item.header) : item.header}\n </button>\n <ElasticHeight\n id={panelId}\n role=\"region\"\n aria-labelledby={headerId}\n isExpanded={isOpen}\n >\n {item.content}\n </ElasticHeight>\n </div>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;AA4CA,IAAa,KAAgD,EAC3D,UACA,mBAAgB,IAChB,mBACA,cACA,GAAG,QACC;CACJ,IAAM,IAAM,GAAO,EACb,IAAa,EAAqC,EAAE,CAAC,EACrD,CAAC,GAAY,KAAiB,wBAA4B,IAAI,KAAK,CAAC;AAE1E,SAAgB;AACd,EAAK,KACH,GAAe,MAAS;AACtB,OAAI,EAAK,QAAQ,EAAG,QAAO;GAC3B,IAAM,CAAC,KAAS;AAChB,UAAO,IAAI,IAAI,CAAC,EAAM,CAAC;IACvB;IAEH,CAAC,EAAc,CAAC;CAEnB,IAAM,IAAS,GACZ,MAAe;AACd,KAAe,MAAS;GACtB,IAAM,IAAO,IAAI,IAAI,EAAK;AAS1B,UARI,EAAK,IAAI,EAAG,GACd,EAAK,OAAO,EAAG,IAEV,KACH,EAAK,OAAO,EAEd,EAAK,IAAI,EAAG,GAEP;IACP;IAEJ,CAAC,EAAc,CAChB,EAEK,IAAc,GACjB,MAAqC;AACpC,IAAO,EAAE,cAAc,QAAQ,OAAQ;IAEzC,CAAC,EAAO,CACT,EAEK,IAAgB,GACnB,MAA4C;EAC3C,IAAM,IAAQ,EAAM,QACd,IAAQ,OAAO,EAAM,cAAc,QAAQ,MAAM,EACnD,IAA6B;AAEjC,UAAQ,EAAM,MAAd;GACE,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,KAAe,IAAQ,KAAK;AAC5B;GACF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,KAAe,IAAQ,IAAI,KAAS;AACpC;GACF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,IAAc;AACd;GACF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,IAAc,IAAQ;AACtB;;AAGJ,EAAI,MAAgB,QAClB,EAAW,QAAQ,IAAc,OAAO;IAG5C,CAAC,EAAM,OAAO,CACf,EAEK,IAAe,kBAAO,IAAI,KAAqD,CAAC,EAChF,IAAiB,GAAa,OAC7B,EAAa,QAAQ,IAAI,EAAM,IAClC,EAAa,QAAQ,IAAI,IAAQ,MAAiC;AAChE,IAAW,QAAQ,KAAS;GAC5B,EAEG,EAAa,QAAQ,IAAI,EAAM,GACrC,EAAE,CAAC;AAEN,QACE,kBAAC,OAAD;EAAK,GAAI;EAAkB;YACxB,EAAM,KAAK,GAAM,MAAU;GAC1B,IAAM,IAAa,EAAK,MAAM,GAAG,EAAI,GAAG,KAClC,IAAS,EAAW,IAAI,EAAW,EACnC,IAAW,oBAAoB,EAAI,GAAG,KACtC,IAAU,mBAAmB,EAAI,GAAG;AAE1C,UACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,UAAD;IACE,IAAI;IACJ,KAAK,EAAe,EAAM;IAC1B,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,gBAAc;IACd,cAAY;IACZ,SAAS;IACT,WAAW;IACX,WAAU;cAET,IAAiB,EAAe,EAAK,OAAO,GAAG,EAAK;IAC9C,CAAA,EACT,kBAAC,GAAD;IACE,IAAI;IACJ,MAAK;IACL,mBAAiB;IACjB,YAAY;cAEX,EAAK;IACQ,CAAA,CACZ,EAAA,EAvBI,EAuBJ;IAER;EACE,CAAA"}
|
package/ui/AdvancedToast.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "../chunks/clsx.js";
|
|
3
|
-
import t from "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
3
|
+
import { ElasticHeight as t } from "./ElasticHeight.js";
|
|
4
|
+
import { Colors as n, getBgColor as r, getBorderColor as i, getTextColor as a } from "./helpers/colors/colors.js";
|
|
5
|
+
import { useCountdown as o } from "./hooks/useCountdown.js";
|
|
6
|
+
import s from "./hooks/useResizeObserver.js";
|
|
7
7
|
import { useEffect as c, useId as l, useRef as u, useState as d } from "react";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
9
|
+
import { Icon as m } from "@clubmed/trident-icons";
|
|
10
10
|
//#region lib/ui/AdvancedToast.tsx
|
|
11
|
-
var h = ({ className: h, title: g, body: _, icon: v, isVisible: y, labels: b, children: x, accentColor: S =
|
|
12
|
-
let O = l(), [k, A] = d(!1), [j, M] = d(!1), N = u(null), { progress: P } =
|
|
11
|
+
var h = ({ className: h, title: g, body: _, icon: v, isVisible: y, labels: b, children: x, accentColor: S = n.orange, duration: C = 1e4, onClose: w, toastId: T, updateHeight: E, ...D }) => {
|
|
12
|
+
let O = l(), [k, A] = d(!1), [j, M] = d(!1), N = u(null), { progress: P } = o({
|
|
13
13
|
duration: C,
|
|
14
14
|
isPaused: j,
|
|
15
15
|
isVisible: y
|
|
@@ -18,65 +18,68 @@ var h = ({ className: h, title: g, body: _, icon: v, isVisible: y, labels: b, ch
|
|
|
18
18
|
P === 100 && w?.();
|
|
19
19
|
}, [P, w]);
|
|
20
20
|
let F = () => M(!0), I = () => M(!1), L = () => M(!1);
|
|
21
|
-
return
|
|
21
|
+
return s({
|
|
22
22
|
ref: N,
|
|
23
23
|
onResize: () => {
|
|
24
24
|
N.current && E(T, N.current.offsetHeight);
|
|
25
25
|
}
|
|
26
|
-
}), /* @__PURE__ */
|
|
26
|
+
}), /* @__PURE__ */ p("div", {
|
|
27
27
|
ref: N,
|
|
28
28
|
...D,
|
|
29
|
-
className: e(y ? "animate-
|
|
29
|
+
className: e(y ? "animate-slide-right-enter" : "animate-slide-right-exit opacity-0", "relative isolate flex gap-x-20 rounded-16 bg-white p-20 text-black transition-opacity duration-300 border-1 overflow-hidden", i(S), h),
|
|
30
30
|
role: "note",
|
|
31
31
|
onMouseDown: F,
|
|
32
32
|
onMouseUp: I,
|
|
33
33
|
onMouseLeave: L,
|
|
34
34
|
children: [
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
/* @__PURE__ */ f("span", {
|
|
36
|
+
className: e("w-30 h-30 pt-4", a(S)),
|
|
37
|
+
children: /* @__PURE__ */ f(m, {
|
|
38
|
+
name: v,
|
|
39
|
+
width: "30px",
|
|
40
|
+
className: e("flex-shrink-0")
|
|
41
|
+
})
|
|
39
42
|
}),
|
|
40
|
-
/* @__PURE__ */
|
|
43
|
+
/* @__PURE__ */ p("div", {
|
|
41
44
|
className: "flex flex-1 flex-col gap-12 pe-24 text-b4",
|
|
42
|
-
children: [/* @__PURE__ */
|
|
45
|
+
children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
|
|
43
46
|
className: " font-bold",
|
|
44
47
|
id: O,
|
|
45
48
|
children: g
|
|
46
|
-
}), /* @__PURE__ */
|
|
49
|
+
}), /* @__PURE__ */ f("p", { children: _ })] }), x && /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ p("button", {
|
|
47
50
|
onClick: () => A(!k),
|
|
48
51
|
"aria-expanded": k,
|
|
49
|
-
className: "flex w-fit items-center gap-8 text-b5 font-normal",
|
|
52
|
+
className: "flex w-fit items-center gap-8 text-b5 font-normal outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2",
|
|
50
53
|
type: "button",
|
|
51
|
-
children: [/* @__PURE__ */
|
|
54
|
+
children: [/* @__PURE__ */ f("span", { children: b.details }), /* @__PURE__ */ f(m, {
|
|
52
55
|
name: "ArrowDefaultDown",
|
|
53
56
|
width: "24px",
|
|
54
57
|
style: { rotate: k ? "180deg" : "0deg" },
|
|
55
58
|
className: "transition-all duration-300"
|
|
56
59
|
})]
|
|
57
|
-
}), /* @__PURE__ */
|
|
60
|
+
}), /* @__PURE__ */ f(t, {
|
|
58
61
|
isExpanded: k,
|
|
59
|
-
children: /* @__PURE__ */
|
|
62
|
+
children: /* @__PURE__ */ f("div", {
|
|
60
63
|
className: "pt-4",
|
|
61
64
|
children: x
|
|
62
65
|
})
|
|
63
66
|
})] })]
|
|
64
67
|
}),
|
|
65
|
-
w && /* @__PURE__ */
|
|
68
|
+
w && /* @__PURE__ */ f("button", {
|
|
66
69
|
"aria-describedby": O,
|
|
67
70
|
"aria-label": b.close,
|
|
68
|
-
className: "absolute end-0 top-0 mt-20 me-13 text-black",
|
|
71
|
+
className: "absolute end-0 top-0 mt-20 me-13 text-black outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2",
|
|
69
72
|
onClick: w,
|
|
70
73
|
type: "button",
|
|
71
|
-
children: /* @__PURE__ */
|
|
74
|
+
children: /* @__PURE__ */ f(m, {
|
|
72
75
|
name: "CrossDefault",
|
|
73
76
|
width: "24px"
|
|
74
77
|
})
|
|
75
78
|
}),
|
|
76
|
-
C !== !1 && /* @__PURE__ */
|
|
79
|
+
C !== !1 && /* @__PURE__ */ f("div", {
|
|
77
80
|
className: "absolute bottom-0 left-0 right-0 h-4 overflow-hidden rounded-b-16",
|
|
78
|
-
children: /* @__PURE__ */
|
|
79
|
-
className:
|
|
81
|
+
children: /* @__PURE__ */ f("div", {
|
|
82
|
+
className: r(S),
|
|
80
83
|
style: {
|
|
81
84
|
width: "100%",
|
|
82
85
|
height: "100%",
|
package/ui/AdvancedToast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedToast.js","names":[],"sources":["../../lib/ui/AdvancedToast.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport {\n useEffect,\n useId,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type FunctionComponent,\n} from 'react';\n\nimport { Icon, type IconicNames } from '@clubmed/trident-icons';\nimport { ElasticHeight } from './ElasticHeight';\nimport { Colors, getBgColor, getBorderColor, getTextColor } from './helpers/colors/colors';\nimport { useCountdown } from './hooks/useCountdown';\nimport useResizeObserver from './hooks/useResizeObserver';\n\ninterface Props extends ComponentPropsWithoutRef<'div'> {\n title: string;\n body: string;\n icon: IconicNames;\n isVisible: boolean;\n labels: {\n close: string;\n details: string;\n };\n onClose?: () => void;\n children?: React.ReactNode;\n accentColor?: Colors;\n moreInfoLabel?: string;\n moreInfoHref?: string;\n duration?: false | number;\n toastId: string;\n updateHeight: (id: string, height: number) => void;\n}\n\nexport const AdvancedToast: FunctionComponent<Props> = ({\n className,\n title,\n body,\n icon,\n isVisible,\n labels,\n children,\n accentColor = Colors.orange,\n duration = 10000,\n onClose,\n toastId,\n updateHeight,\n ...attrs\n}) => {\n const id = useId();\n const [isDetailsExpanded, setIsDetailsExpanded] = useState(false);\n const [isPaused, setIsPaused] = useState(false);\n const toastRef = useRef<HTMLDivElement>(null!);\n\n const { progress } = useCountdown({ duration, isPaused, isVisible });\n useEffect(() => {\n if (progress === 100) {\n onClose?.();\n }\n }, [progress, onClose]);\n\n const handleMouseDown = () => setIsPaused(true);\n const handleMouseUp = () => setIsPaused(false);\n const handleMouseLeave = () => setIsPaused(false);\n\n useResizeObserver<HTMLDivElement>({\n ref: toastRef,\n onResize: () => {\n if (toastRef.current) {\n updateHeight(toastId, toastRef.current.offsetHeight);\n }\n },\n });\n\n return (\n <div\n ref={toastRef}\n {...attrs}\n className={clsx(\n isVisible ? 'animate-
|
|
1
|
+
{"version":3,"file":"AdvancedToast.js","names":[],"sources":["../../lib/ui/AdvancedToast.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport {\n useEffect,\n useId,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type FunctionComponent,\n} from 'react';\n\nimport { Icon, type IconicNames } from '@clubmed/trident-icons';\nimport { ElasticHeight } from './ElasticHeight';\nimport { Colors, getBgColor, getBorderColor, getTextColor } from './helpers/colors/colors';\nimport { useCountdown } from './hooks/useCountdown';\nimport useResizeObserver from './hooks/useResizeObserver';\n\ninterface Props extends ComponentPropsWithoutRef<'div'> {\n title: string;\n body: string;\n icon: IconicNames;\n isVisible: boolean;\n labels: {\n close: string;\n details: string;\n };\n onClose?: () => void;\n children?: React.ReactNode;\n accentColor?: Colors;\n moreInfoLabel?: string;\n moreInfoHref?: string;\n duration?: false | number;\n toastId: string;\n updateHeight: (id: string, height: number) => void;\n}\n\nexport const AdvancedToast: FunctionComponent<Props> = ({\n className,\n title,\n body,\n icon,\n isVisible,\n labels,\n children,\n accentColor = Colors.orange,\n duration = 10000,\n onClose,\n toastId,\n updateHeight,\n ...attrs\n}) => {\n const id = useId();\n const [isDetailsExpanded, setIsDetailsExpanded] = useState(false);\n const [isPaused, setIsPaused] = useState(false);\n const toastRef = useRef<HTMLDivElement>(null!);\n\n const { progress } = useCountdown({ duration, isPaused, isVisible });\n useEffect(() => {\n if (progress === 100) {\n onClose?.();\n }\n }, [progress, onClose]);\n\n const handleMouseDown = () => setIsPaused(true);\n const handleMouseUp = () => setIsPaused(false);\n const handleMouseLeave = () => setIsPaused(false);\n\n useResizeObserver<HTMLDivElement>({\n ref: toastRef,\n onResize: () => {\n if (toastRef.current) {\n updateHeight(toastId, toastRef.current.offsetHeight);\n }\n },\n });\n\n return (\n <div\n ref={toastRef}\n {...attrs}\n className={clsx(\n isVisible ? 'animate-slide-right-enter' : 'animate-slide-right-exit opacity-0',\n 'relative isolate flex gap-x-20 rounded-16 bg-white p-20 text-black transition-opacity duration-300 border-1 overflow-hidden',\n getBorderColor(accentColor),\n className,\n )}\n role=\"note\"\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseLeave}\n >\n <span className={clsx('w-30 h-30 pt-4', getTextColor(accentColor))}>\n <Icon name={icon} width=\"30px\" className={clsx('flex-shrink-0')} />\n </span>\n <div className=\"flex flex-1 flex-col gap-12 pe-24 text-b4\">\n <div>\n <p className=\" font-bold\" id={id}>\n {title}\n </p>\n <p>{body}</p>\n </div>\n\n {children && (\n <div>\n <button\n onClick={() => setIsDetailsExpanded(!isDetailsExpanded)}\n aria-expanded={isDetailsExpanded}\n className=\"flex w-fit items-center gap-8 text-b5 font-normal outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2\"\n type=\"button\"\n >\n <span>{labels.details}</span>\n <Icon\n name=\"ArrowDefaultDown\"\n width=\"24px\"\n style={{ rotate: isDetailsExpanded ? '180deg' : '0deg' }}\n className=\"transition-all duration-300\"\n />\n </button>\n <ElasticHeight isExpanded={isDetailsExpanded}>\n <div className=\"pt-4\">{children}</div>\n </ElasticHeight>\n </div>\n )}\n </div>\n\n {onClose && (\n <button\n aria-describedby={id}\n aria-label={labels.close}\n className=\"absolute end-0 top-0 mt-20 me-13 text-black outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2\"\n onClick={onClose}\n type=\"button\"\n >\n <Icon name=\"CrossDefault\" width=\"24px\" />\n </button>\n )}\n\n {duration !== false && (\n <div className=\"absolute bottom-0 left-0 right-0 h-4 overflow-hidden rounded-b-16\">\n <div\n className={getBgColor(accentColor)}\n style={{\n width: '100%',\n height: '100%',\n transform: `scaleX(${(100 - progress) / 100})`,\n transformOrigin: 'left',\n transition: 'transform 16ms linear',\n }}\n />\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;AAqCA,IAAa,KAA2C,EACtD,cACA,UACA,SACA,SACA,cACA,WACA,aACA,iBAAc,EAAO,QACrB,cAAW,KACX,YACA,YACA,iBACA,GAAG,QACC;CACJ,IAAM,IAAK,GAAO,EACZ,CAAC,GAAmB,KAAwB,EAAS,GAAM,EAC3D,CAAC,GAAU,KAAe,EAAS,GAAM,EACzC,IAAW,EAAuB,KAAM,EAExC,EAAE,gBAAa,EAAa;EAAE;EAAU;EAAU;EAAW,CAAC;AACpE,SAAgB;AACd,EAAI,MAAa,OACf,KAAW;IAEZ,CAAC,GAAU,EAAQ,CAAC;CAEvB,IAAM,UAAwB,EAAY,GAAK,EACzC,UAAsB,EAAY,GAAM,EACxC,UAAyB,EAAY,GAAM;AAWjD,QATA,EAAkC;EAChC,KAAK;EACL,gBAAgB;AACd,GAAI,EAAS,WACX,EAAa,GAAS,EAAS,QAAQ,aAAa;;EAGzD,CAAC,EAGA,kBAAC,OAAD;EACE,KAAK;EACL,GAAI;EACJ,WAAW,EACT,IAAY,8BAA8B,sCAC1C,+HACA,EAAe,EAAY,EAC3B,EACD;EACD,MAAK;EACL,aAAa;EACb,WAAW;EACX,cAAc;YAZhB;GAcE,kBAAC,QAAD;IAAM,WAAW,EAAK,kBAAkB,EAAa,EAAY,CAAC;cAChE,kBAAC,GAAD;KAAM,MAAM;KAAM,OAAM;KAAO,WAAW,EAAK,gBAAA;KAAoB,CAAA;IAC9D,CAAA;GACP,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;KAAiB;eAC3B;KACC,CAAA,EACJ,kBAAC,KAAD,EAAA,UAAI,GAAS,CAAA,CACT,EAAA,CAAA,EAEL,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,UAAD;KACE,eAAe,EAAqB,CAAC,EAAkB;KACvD,iBAAe;KACf,WAAU;KACV,MAAK;eAJP,CAME,kBAAC,QAAD,EAAA,UAAO,EAAO,SAAe,CAAA,EAC7B,kBAAC,GAAD;MACE,MAAK;MACL,OAAM;MACN,OAAO,EAAE,QAAQ,IAAoB,WAAW,QAAQ;MACxD,WAAU;MACV,CAAA,CAAA;QAEJ,kBAAC,GAAD;KAAe,YAAY;eACzB,kBAAC,OAAD;MAAK,WAAU;MAAQ;MAAe,CAAA;KACxB,CAAA,CACZ,EAAA,CAAA,CAAA;;GAIT,KACC,kBAAC,UAAD;IACE,oBAAkB;IAClB,cAAY,EAAO;IACnB,WAAU;IACV,SAAS;IACT,MAAK;cAEL,kBAAC,GAAD;KAAM,MAAK;KAAe,OAAM;KAAS,CAAA;IAClC,CAAA;GAGV,MAAa,MACZ,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,OAAD;KACE,WAAW,EAAW,EAAY;KAClC,OAAO;MACL,OAAO;MACP,QAAQ;MACR,WAAW,WAAW,MAAM,KAAY,IAAI;MAC5C,iBAAiB;MACjB,YAAY;;KAEd,CAAA;IACE,CAAA"}
|
package/ui/Avatar.js
CHANGED
|
@@ -9,7 +9,7 @@ function i({ alt: i, src: a, srcSet: o, style: s, children: c, className: l, ...
|
|
|
9
9
|
role: "figure",
|
|
10
10
|
"aria-label": i
|
|
11
11
|
} : {},
|
|
12
|
-
className: e("flex items-center justify-center relative overflow-hidden", {
|
|
12
|
+
className: e("flex items-center justify-center relative overflow-hidden outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2", {
|
|
13
13
|
"rounded-full": !l?.includes("rounded-"),
|
|
14
14
|
"text-black": !l?.includes("text-"),
|
|
15
15
|
"bg-saffron": !l?.includes("bg-")
|
package/ui/Avatar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","names":[],"sources":["../../lib/ui/Avatar.tsx"],"sourcesContent":["import type { HTMLAttributes, PropsWithChildren } from 'react';\nimport clsx from 'clsx';\n\nconst initial = (text = '') => {\n return text\n .split(' ')\n .map((text) => text.slice(0, 1))\n .join('');\n};\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n alt?: string;\n src?: string | undefined;\n srcSet?: string | undefined;\n}\n\nexport function Avatar({\n alt,\n src,\n srcSet,\n style,\n children,\n className,\n ...props\n}: PropsWithChildren<AvatarProps>) {\n return (\n <div\n {...props}\n {...(src || srcSet ? { role: 'figure', 'aria-label': alt } : {})}\n className={clsx(\n 'flex items-center justify-center relative overflow-hidden',\n {\n 'rounded-full': !className?.includes('rounded-'),\n 'text-black': !className?.includes('text-'),\n 'bg-saffron': !className?.includes('bg-'),\n },\n className,\n )}\n style={{\n width: '48px',\n height: '48px',\n ...style,\n }}\n >\n <span className=\"flex items-center justify-center font-bold uppercase text-h6 h-full\">\n {src || srcSet ? (\n <img\n srcSet={srcSet}\n src={src}\n alt={alt}\n className={'w-full h-full object-cover transparent indent-[1000px]'}\n />\n ) : (\n initial(alt)\n )}\n {children}\n </span>\n </div>\n );\n}\n"],"mappings":";;;AAGA,IAAM,KAAW,IAAO,OACf,EACJ,MAAM,IAAI,CACV,KAAK,MAAS,EAAK,MAAM,GAAG,EAAE,CAAC,CAC/B,KAAK,GAAG;AASb,SAAgB,EAAO,EACrB,QACA,QACA,WACA,UACA,aACA,cACA,GAAG,KAC8B;AACjC,QACE,kBAAC,OAAD;EACE,GAAI;EACJ,GAAK,KAAO,IAAS;GAAE,MAAM;GAAU,cAAc;GAAK,GAAG,EAAE;EAC/D,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"Avatar.js","names":[],"sources":["../../lib/ui/Avatar.tsx"],"sourcesContent":["import type { HTMLAttributes, PropsWithChildren } from 'react';\nimport clsx from 'clsx';\n\nconst initial = (text = '') => {\n return text\n .split(' ')\n .map((text) => text.slice(0, 1))\n .join('');\n};\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n alt?: string;\n src?: string | undefined;\n srcSet?: string | undefined;\n}\n\nexport function Avatar({\n alt,\n src,\n srcSet,\n style,\n children,\n className,\n ...props\n}: PropsWithChildren<AvatarProps>) {\n return (\n <div\n {...props}\n {...(src || srcSet ? { role: 'figure', 'aria-label': alt } : {})}\n className={clsx(\n 'flex items-center justify-center relative overflow-hidden outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2',\n {\n 'rounded-full': !className?.includes('rounded-'),\n 'text-black': !className?.includes('text-'),\n 'bg-saffron': !className?.includes('bg-'),\n },\n className,\n )}\n style={{\n width: '48px',\n height: '48px',\n ...style,\n }}\n >\n <span className=\"flex items-center justify-center font-bold uppercase text-h6 h-full\">\n {src || srcSet ? (\n <img\n srcSet={srcSet}\n src={src}\n alt={alt}\n className={'w-full h-full object-cover transparent indent-[1000px]'}\n />\n ) : (\n initial(alt)\n )}\n {children}\n </span>\n </div>\n );\n}\n"],"mappings":";;;AAGA,IAAM,KAAW,IAAO,OACf,EACJ,MAAM,IAAI,CACV,KAAK,MAAS,EAAK,MAAM,GAAG,EAAE,CAAC,CAC/B,KAAK,GAAG;AASb,SAAgB,EAAO,EACrB,QACA,QACA,WACA,UACA,aACA,cACA,GAAG,KAC8B;AACjC,QACE,kBAAC,OAAD;EACE,GAAI;EACJ,GAAK,KAAO,IAAS;GAAE,MAAM;GAAU,cAAc;GAAK,GAAG,EAAE;EAC/D,WAAW,EACT,oJACA;GACE,gBAAgB,CAAC,GAAW,SAAS,WAAW;GAChD,cAAc,CAAC,GAAW,SAAS,QAAQ;GAC3C,cAAc,CAAC,GAAW,SAAS,MAAM;GAC1C,EACD,EACD;EACD,OAAO;GACL,OAAO;GACP,QAAQ;GACR,GAAG;GACJ;YAED,kBAAC,QAAD;GAAM,WAAU;aAAhB,CACG,KAAO,IACN,kBAAC,OAAD;IACU;IACH;IACA;IACL,WAAW;IACX,CAAA,GAEF,EAAQ,EAAI,EAEb,EACI;;EACH,CAAA"}
|
package/ui/BasicToast.js
CHANGED
|
@@ -3,47 +3,47 @@ import { t as e } from "../chunks/clsx.js";
|
|
|
3
3
|
import { getBgColor as t, getComplementaryTextColor as n, getThemeColor as r } from "./helpers/colors/colors.js";
|
|
4
4
|
import { Link as i } from "./Link.js";
|
|
5
5
|
import { useId as a } from "react";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
|
+
import { Icon as c } from "@clubmed/trident-icons";
|
|
8
8
|
//#region lib/ui/BasicToast.tsx
|
|
9
9
|
function l({ className: l, description: u, href: d, icon: f, incentive: p, isVisible: m, labels: h, onClick: g, onClose: _, theme: v = "dark", title: y, children: b, ...x }) {
|
|
10
10
|
let S = r(v), C = a(), w = b ?? u;
|
|
11
|
-
return /* @__PURE__ */
|
|
11
|
+
return /* @__PURE__ */ s("div", {
|
|
12
12
|
...x,
|
|
13
|
-
className: e(m ? "animate-
|
|
13
|
+
className: e(m ? "animate-slide-right-enter" : "animate-slide-right-exit opacity-0", "relative isolate flex gap-x-20 rounded-16 p-20 transition-opacity duration-300", t(S), n(S), l),
|
|
14
14
|
role: "note",
|
|
15
15
|
children: [
|
|
16
|
-
f && /* @__PURE__ */
|
|
16
|
+
f && /* @__PURE__ */ o(c, {
|
|
17
17
|
name: f,
|
|
18
18
|
width: "30px"
|
|
19
19
|
}),
|
|
20
|
-
/* @__PURE__ */
|
|
21
|
-
className: "group pe-44",
|
|
20
|
+
/* @__PURE__ */ s("a", {
|
|
21
|
+
className: "group pe-44 outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2 rounded-pill",
|
|
22
22
|
href: d,
|
|
23
23
|
onClick: g,
|
|
24
24
|
children: [
|
|
25
|
-
/* @__PURE__ */
|
|
25
|
+
/* @__PURE__ */ o("p", {
|
|
26
26
|
className: "mb-4 text-b3 font-bold",
|
|
27
27
|
id: C,
|
|
28
28
|
children: y
|
|
29
29
|
}),
|
|
30
|
-
w && /* @__PURE__ */
|
|
30
|
+
w && /* @__PURE__ */ o("div", {
|
|
31
31
|
className: "mb-12 text-b4",
|
|
32
32
|
children: w
|
|
33
33
|
}),
|
|
34
|
-
/* @__PURE__ */
|
|
34
|
+
/* @__PURE__ */ o(i, {
|
|
35
35
|
component: "span",
|
|
36
36
|
className: "text-b3 font-bold",
|
|
37
37
|
label: p
|
|
38
38
|
})
|
|
39
39
|
]
|
|
40
40
|
}),
|
|
41
|
-
_ && /* @__PURE__ */
|
|
41
|
+
_ && /* @__PURE__ */ o("button", {
|
|
42
42
|
"aria-describedby": C,
|
|
43
43
|
"aria-label": h.close,
|
|
44
|
-
className: e("absolute end-0 top-0 m-20", n(S)),
|
|
44
|
+
className: e("absolute end-0 top-0 m-20 outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2 rounded-pill", n(S)),
|
|
45
45
|
onClick: _,
|
|
46
|
-
children: /* @__PURE__ */
|
|
46
|
+
children: /* @__PURE__ */ o(c, {
|
|
47
47
|
name: "CrossDefault",
|
|
48
48
|
width: "24px"
|
|
49
49
|
})
|
package/ui/BasicToast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasicToast.js","names":[],"sources":["../../lib/ui/BasicToast.tsx"],"sourcesContent":["'use client';\nimport clsx from 'clsx';\nimport { type ComponentPropsWithoutRef, type PropsWithChildren, useId } from 'react';\n\nimport { Icon, type IconicNames } from '@clubmed/trident-icons';\nimport { getBgColor, getComplementaryTextColor, getThemeColor } from './helpers/colors/colors';\nimport { Link } from './Link';\nimport type { Theme } from './types/Theme';\n\nexport interface BasicToastProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * @deprecated use children slot instead\n */\n description?: string;\n href: string;\n icon?: IconicNames;\n incentive: string;\n isVisible: boolean;\n labels: { close: string };\n onClick?: () => void;\n onClose?: () => void;\n theme: Theme;\n title: string;\n}\n\nexport function BasicToast({\n className,\n description,\n href,\n icon,\n incentive,\n isVisible,\n labels,\n onClick,\n onClose,\n theme = 'dark',\n title,\n children,\n ...attrs\n}: PropsWithChildren<BasicToastProps>) {\n const color = getThemeColor(theme);\n const id = useId();\n const content = children ?? description;\n\n return (\n <div\n {...attrs}\n className={clsx(\n isVisible ? 'animate-
|
|
1
|
+
{"version":3,"file":"BasicToast.js","names":[],"sources":["../../lib/ui/BasicToast.tsx"],"sourcesContent":["'use client';\nimport clsx from 'clsx';\nimport { type ComponentPropsWithoutRef, type PropsWithChildren, useId } from 'react';\n\nimport { Icon, type IconicNames } from '@clubmed/trident-icons';\nimport { getBgColor, getComplementaryTextColor, getThemeColor } from './helpers/colors/colors';\nimport { Link } from './Link';\nimport type { Theme } from './types/Theme';\n\nexport interface BasicToastProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * @deprecated use children slot instead\n */\n description?: string;\n href: string;\n icon?: IconicNames;\n incentive: string;\n isVisible: boolean;\n labels: { close: string };\n onClick?: () => void;\n onClose?: () => void;\n theme: Theme;\n title: string;\n}\n\nexport function BasicToast({\n className,\n description,\n href,\n icon,\n incentive,\n isVisible,\n labels,\n onClick,\n onClose,\n theme = 'dark',\n title,\n children,\n ...attrs\n}: PropsWithChildren<BasicToastProps>) {\n const color = getThemeColor(theme);\n const id = useId();\n const content = children ?? description;\n\n return (\n <div\n {...attrs}\n className={clsx(\n isVisible ? 'animate-slide-right-enter' : 'animate-slide-right-exit opacity-0',\n 'relative isolate flex gap-x-20 rounded-16 p-20 transition-opacity duration-300',\n getBgColor(color),\n getComplementaryTextColor(color),\n className,\n )}\n role=\"note\"\n >\n {icon && <Icon name={icon} width=\"30px\" />}\n <a\n className=\"group pe-44 outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2 rounded-pill\"\n href={href}\n onClick={onClick}\n >\n <p className=\"mb-4 text-b3 font-bold\" id={id}>\n {title}\n </p>\n {content && <div className=\"mb-12 text-b4\">{content}</div>}\n <Link component=\"span\" className=\"text-b3 font-bold\" label={incentive} />\n </a>\n {onClose && (\n <button\n aria-describedby={id}\n aria-label={labels.close}\n className={clsx(\n 'absolute end-0 top-0 m-20 outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2 rounded-pill',\n getComplementaryTextColor(color),\n )}\n onClick={onClose}\n >\n <Icon name=\"CrossDefault\" width=\"24px\" />\n </button>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAyBA,SAAgB,EAAW,EACzB,cACA,gBACA,SACA,SACA,cACA,cACA,WACA,YACA,YACA,WAAQ,QACR,UACA,aACA,GAAG,KACkC;CACrC,IAAM,IAAQ,EAAc,EAAM,EAC5B,IAAK,GAAO,EACZ,IAAU,KAAY;AAE5B,QACE,kBAAC,OAAD;EACE,GAAI;EACJ,WAAW,EACT,IAAY,8BAA8B,sCAC1C,kFACA,EAAW,EAAM,EACjB,EAA0B,EAAM,EAChC,EACD;EACD,MAAK;YATP;GAWG,KAAQ,kBAAC,GAAD;IAAM,MAAM;IAAM,OAAM;IAAS,CAAA;GAC1C,kBAAC,KAAD;IACE,WAAU;IACJ;IACG;cAHX;KAKE,kBAAC,KAAD;MAAG,WAAU;MAA6B;gBACvC;MACC,CAAA;KACH,KAAW,kBAAC,OAAD;MAAK,WAAU;gBAAiB;MAAc,CAAA;KAC1D,kBAAC,GAAD;MAAM,WAAU;MAAO,WAAU;MAAoB,OAAO;MAAa,CAAA;;;GAE1E,KACC,kBAAC,UAAD;IACE,oBAAkB;IAClB,cAAY,EAAO;IACnB,WAAW,EACT,iIACA,EAA0B,EAAM,CACjC;IACD,SAAS;cAET,kBAAC,GAAD;KAAM,MAAK;KAAe,OAAM;KAAS,CAAA;IAClC,CAAA"}
|
package/ui/Breadcrumb.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as e } from "../chunks/clsx.js";
|
|
2
2
|
import { getComplementaryTextColor as t, getThemeColor as n } from "./helpers/colors/colors.js";
|
|
3
3
|
import { createElement as r } from "react";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
5
|
+
import { Icon as a } from "@clubmed/trident-icons";
|
|
6
6
|
//#region lib/ui/Breadcrumb.tsx
|
|
7
7
|
var o = ({ className: o, items: s, theme: c = "light", ...l }) => {
|
|
8
8
|
if (s.length == 0) return null;
|
|
@@ -15,11 +15,11 @@ var o = ({ className: o, items: s, theme: c = "light", ...l }) => {
|
|
|
15
15
|
},
|
|
16
16
|
h
|
|
17
17
|
] : s;
|
|
18
|
-
return /* @__PURE__ */
|
|
18
|
+
return /* @__PURE__ */ i("nav", {
|
|
19
19
|
"aria-label": "Breadcrumb",
|
|
20
20
|
...l,
|
|
21
21
|
className: e(o, "overflow-hidden"),
|
|
22
|
-
children: /* @__PURE__ */
|
|
22
|
+
children: /* @__PURE__ */ i("ul", {
|
|
23
23
|
className: "scrollbar-hidden text-b4 flex items-center overflow-x-auto font-sans",
|
|
24
24
|
children: g.map(({ label: t, href: n }, o) => {
|
|
25
25
|
let s = o === g.length - 1, c = n && !s;
|
|
@@ -30,10 +30,11 @@ var o = ({ className: o, items: s, theme: c = "light", ...l }) => {
|
|
|
30
30
|
[u]: s
|
|
31
31
|
}),
|
|
32
32
|
key: t
|
|
33
|
-
}, c ? /* @__PURE__ */
|
|
33
|
+
}, c ? /* @__PURE__ */ i("a", {
|
|
34
34
|
href: n,
|
|
35
|
+
className: "rounded-pill outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2",
|
|
35
36
|
children: t
|
|
36
|
-
}) : t, !s && /* @__PURE__ */ a
|
|
37
|
+
}) : t, !s && /* @__PURE__ */ i(a, {
|
|
37
38
|
className: "mx-4",
|
|
38
39
|
name: "Diamond",
|
|
39
40
|
width: "14px"
|
package/ui/Breadcrumb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumb.js","names":[],"sources":["../../lib/ui/Breadcrumb.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { ComponentPropsWithoutRef, FunctionComponent } from 'react';\n\nimport type { Theme } from './types/Theme';\nimport { Icon } from '@clubmed/trident-icons';\nimport { getComplementaryTextColor, getThemeColor } from './helpers/colors/colors';\n\nexport interface BreadcrumbProps extends ComponentPropsWithoutRef<'nav'> {\n items: Array<{\n href: string;\n label: string;\n }>;\n theme?: Theme;\n}\n\nexport const Breadcrumb: FunctionComponent<BreadcrumbProps> = ({\n className,\n items,\n theme = 'light',\n ...attrs\n}) => {\n if (items.length == 0) {\n return null;\n }\n\n const themeColor = getThemeColor(theme);\n const accentColor = getComplementaryTextColor(themeColor);\n const color = accentColor === 'text-white' ? accentColor : 'text-middleGrey';\n\n const [first, second, , ...rest] = items;\n const lastItem = rest.length ? rest[rest.length - 1] : items[items.length - 1];\n const spacer = { label: '…', href: '' };\n const itemsToRender = !rest.length ? items : [first, second, spacer, lastItem];\n\n return (\n <nav aria-label=\"Breadcrumb\" {...attrs} className={clsx(className, 'overflow-hidden')}>\n <ul className=\"scrollbar-hidden text-b4 flex items-center overflow-x-auto font-sans\">\n {itemsToRender.map(({ label, href }, index) => {\n const isLast = index === itemsToRender.length - 1;\n const isLink = href && !isLast;\n\n return (\n <li\n {...(isLast && { 'aria-current': 'page' })}\n className={clsx(\n 'flex shrink-0 items-center',\n { [color]: !isLast },\n {\n 'font-bold': isLast,\n [accentColor]: isLast,\n },\n )}\n key={label}\n >\n {isLink ? <a
|
|
1
|
+
{"version":3,"file":"Breadcrumb.js","names":[],"sources":["../../lib/ui/Breadcrumb.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { ComponentPropsWithoutRef, FunctionComponent } from 'react';\n\nimport type { Theme } from './types/Theme';\nimport { Icon } from '@clubmed/trident-icons';\nimport { getComplementaryTextColor, getThemeColor } from './helpers/colors/colors';\n\nexport interface BreadcrumbProps extends ComponentPropsWithoutRef<'nav'> {\n items: Array<{\n href: string;\n label: string;\n }>;\n theme?: Theme;\n}\n\nexport const Breadcrumb: FunctionComponent<BreadcrumbProps> = ({\n className,\n items,\n theme = 'light',\n ...attrs\n}) => {\n if (items.length == 0) {\n return null;\n }\n\n const themeColor = getThemeColor(theme);\n const accentColor = getComplementaryTextColor(themeColor);\n const color = accentColor === 'text-white' ? accentColor : 'text-middleGrey';\n\n const [first, second, , ...rest] = items;\n const lastItem = rest.length ? rest[rest.length - 1] : items[items.length - 1];\n const spacer = { label: '…', href: '' };\n const itemsToRender = !rest.length ? items : [first, second, spacer, lastItem];\n\n return (\n <nav aria-label=\"Breadcrumb\" {...attrs} className={clsx(className, 'overflow-hidden')}>\n <ul className=\"scrollbar-hidden text-b4 flex items-center overflow-x-auto font-sans\">\n {itemsToRender.map(({ label, href }, index) => {\n const isLast = index === itemsToRender.length - 1;\n const isLink = href && !isLast;\n\n return (\n <li\n {...(isLast && { 'aria-current': 'page' })}\n className={clsx(\n 'flex shrink-0 items-center',\n { [color]: !isLast },\n {\n 'font-bold': isLast,\n [accentColor]: isLast,\n },\n )}\n key={label}\n >\n {isLink ? (\n <a\n href={href}\n className=\"rounded-pill outline-none focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2\"\n >\n {label}\n </a>\n ) : (\n label\n )}\n {!isLast && <Icon className=\"mx-4\" name=\"Diamond\" width=\"14px\" />}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n};\n"],"mappings":";;;;;;AAeA,IAAa,KAAkD,EAC7D,cACA,UACA,WAAQ,SACR,GAAG,QACC;AACJ,KAAI,EAAM,UAAU,EAClB,QAAO;CAIT,IAAM,IAAc,EADD,EAAc,EAAM,CACkB,EACnD,IAAQ,MAAgB,eAAe,IAAc,mBAErD,CAAC,GAAO,KAAU,GAAG,KAAQ,GAC7B,IAAW,EAAK,SAAS,EAAK,EAAK,SAAS,KAAK,EAAM,EAAM,SAAS,IAEtE,IAAiB,EAAK,SAAiB;EAAC;EAAO;EADtC;GAAE,OAAO;GAAK,MAAM;GAAI;EAC8B;EAAS,GAAzC;AAErC,QACE,kBAAC,OAAD;EAAK,cAAW;EAAa,GAAI;EAAO,WAAW,EAAK,GAAW,kBAAkB;YACnF,kBAAC,MAAD;GAAI,WAAU;aACX,EAAc,KAAK,EAAE,UAAO,WAAQ,MAAU;IAC7C,IAAM,IAAS,MAAU,EAAc,SAAS,GAC1C,IAAS,KAAQ,CAAC;AAExB,WACE,kBAAC,MAAD;KACE,GAAK,KAAU,EAAE,gBAAgB,QAAQ;KACzC,WAAW,EACT,8BACA,GAAG,IAAQ,CAAC,GAAQ,EACpB;MACE,aAAa;OACZ,IAAc;MAChB,CACF;KACD,KAAK;KAaF,EAXF,IACC,kBAAC,KAAD;KACQ;KACN,WAAU;eAET;KACC,CAAA,GAEJ,GAED,CAAC,KAAU,kBAAC,GAAD;KAAM,WAAU;KAAO,MAAK;KAAU,OAAM;KAAS,CAAA,CAC9D;KAEP;GACC,CAAA;EACD,CAAA"}
|
package/ui/ChatButton.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { twMerge as e } from "./helpers/twMerge.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/ChatButton.tsx
|
|
5
|
-
var i = "
|
|
5
|
+
var i = "AI Agent: Have you got a question?", a = "Chat with your assistant";
|
|
6
6
|
function o({ children: o = i, className: s, type: c = "button", "aria-label": l, tabIndex: u, offset: d, unfoldOn: f = "hover", ...p }) {
|
|
7
7
|
let m = l ?? (typeof o == "string" && o.trim().length > 0 ? o.trim() : a);
|
|
8
|
-
return /* @__PURE__ */
|
|
8
|
+
return /* @__PURE__ */ n("button", {
|
|
9
9
|
type: c,
|
|
10
10
|
"aria-label": m,
|
|
11
11
|
tabIndex: u ?? 0,
|
|
12
12
|
...p,
|
|
13
|
-
className: e("chat-
|
|
14
|
-
children: [/* @__PURE__ */
|
|
13
|
+
className: e("chat-border grid grid-cols-[24px_0fr] transition-[grid-template-columns] justify-center items-center overflow-hidden cursor-pointer transition-all rounded-pill px-8 md:px-16 outline-none group/Chatbutton focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2 pointer-events-auto h-48 min-h-48 md:min-w-80 md:h-80 active:scale-[0.98]", d && "md:translate-x-[40px] focus-visible:translate-x-0", f === "hover" && "group/hoverChatbutton hover:grid-cols-[24px_1fr] hover:translate-x-0", f === "active" && "group/activeChatbutton active:grid-cols-[24px_1fr] active:translate-x-0", "focus-visible:grid-cols-[24px_1fr]", s),
|
|
14
|
+
children: [/* @__PURE__ */ t(r, {
|
|
15
15
|
name: "Sparkles",
|
|
16
16
|
className: e("chat-button-icon w-24 transition-all", d && "relative md:start-[calc(-16px)] group-focus-visible/Chatbutton:start-0 group-hover/hoverChatbutton:start-0 group-active/activeChatbutton:start-0")
|
|
17
|
-
}), /* @__PURE__ */
|
|
17
|
+
}), /* @__PURE__ */ t("div", {
|
|
18
18
|
className: "grid grid-cols-[0fr] overflow-hidden opacity-0 transition-opacity group-hover/hoverChatbutton:opacity-100 group-focus-visible/Chatbutton:opacity-100 group-active/activeChatbutton:opacity-100 duration-500",
|
|
19
|
-
children: /* @__PURE__ */
|
|
19
|
+
children: /* @__PURE__ */ n("span", {
|
|
20
20
|
"aria-hidden": "true",
|
|
21
21
|
className: "chat-button-text items-center ps-20 flex gap-10 whitespace-nowrap font-semibold text-b3 text-black",
|
|
22
|
-
children: [o, /* @__PURE__ */
|
|
22
|
+
children: [o, /* @__PURE__ */ t(r, {
|
|
23
23
|
name: "ArrowTailRight",
|
|
24
24
|
width: "24px"
|
|
25
25
|
})]
|
package/ui/ChatButton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatButton.js","names":[],"sources":["../../lib/ui/ChatButton.tsx"],"sourcesContent":["import { Icon } from '@clubmed/trident-icons';\nimport type { ButtonHTMLAttributes } from 'react';\nimport { twMerge } from './helpers/twMerge';\n\nconst DEFAULT_TEASER_COPY = '
|
|
1
|
+
{"version":3,"file":"ChatButton.js","names":[],"sources":["../../lib/ui/ChatButton.tsx"],"sourcesContent":["import { Icon } from '@clubmed/trident-icons';\nimport type { ButtonHTMLAttributes } from 'react';\nimport { twMerge } from './helpers/twMerge';\n\nconst DEFAULT_TEASER_COPY = 'AI Agent: Have you got a question?';\nconst FALLBACK_ARIA_LABEL = 'Chat with your assistant';\n\nexport type ChatButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n offset?: boolean;\n unfoldOn?: 'hover' | 'active';\n};\n\nexport function ChatButton({\n children = DEFAULT_TEASER_COPY,\n className,\n type = 'button',\n 'aria-label': ariaLabel,\n tabIndex,\n offset,\n unfoldOn = 'hover',\n ...rest\n}: ChatButtonProps) {\n const label =\n ariaLabel ??\n (typeof children === 'string' && children.trim().length > 0\n ? children.trim()\n : FALLBACK_ARIA_LABEL);\n\n return (\n <button\n type={type}\n aria-label={label}\n tabIndex={tabIndex ?? 0}\n {...rest}\n className={twMerge(\n 'chat-border grid grid-cols-[24px_0fr] transition-[grid-template-columns] justify-center items-center overflow-hidden cursor-pointer transition-all rounded-pill px-8 md:px-16 outline-none group/Chatbutton focus-visible:ring-4 focus-visible:ring-black focus-visible:ring-offset-2 pointer-events-auto h-48 min-h-48 md:min-w-80 md:h-80 active:scale-[0.98]',\n offset && 'md:translate-x-[40px] focus-visible:translate-x-0',\n unfoldOn === 'hover' &&\n 'group/hoverChatbutton hover:grid-cols-[24px_1fr] hover:translate-x-0',\n unfoldOn === 'active' &&\n 'group/activeChatbutton active:grid-cols-[24px_1fr] active:translate-x-0',\n 'focus-visible:grid-cols-[24px_1fr]',\n className,\n )}\n >\n <Icon\n name=\"Sparkles\"\n className={twMerge(\n 'chat-button-icon w-24 transition-all',\n offset &&\n 'relative md:start-[calc(-16px)] group-focus-visible/Chatbutton:start-0 group-hover/hoverChatbutton:start-0 group-active/activeChatbutton:start-0',\n )}\n />\n <div className=\"grid grid-cols-[0fr] overflow-hidden opacity-0 transition-opacity group-hover/hoverChatbutton:opacity-100 group-focus-visible/Chatbutton:opacity-100 group-active/activeChatbutton:opacity-100 duration-500\">\n <span\n aria-hidden=\"true\"\n className=\"chat-button-text items-center ps-20 flex gap-10 whitespace-nowrap font-semibold text-b3 text-black\"\n >\n {children}\n <Icon name=\"ArrowTailRight\" width=\"24px\" />\n </span>\n </div>\n </button>\n );\n}\n"],"mappings":";;;;AAIA,IAAM,IAAsB,sCACtB,IAAsB;AAO5B,SAAgB,EAAW,EACzB,cAAW,GACX,cACA,UAAO,UACP,cAAc,GACd,aACA,WACA,cAAW,SACX,GAAG,KACe;CAClB,IAAM,IACJ,MACC,OAAO,KAAa,YAAY,EAAS,MAAM,CAAC,SAAS,IACtD,EAAS,MAAM,GACf;AAEN,QACE,kBAAC,UAAD;EACQ;EACN,cAAY;EACZ,UAAU,KAAY;EACtB,GAAI;EACJ,WAAW,EACT,mWACA,KAAU,qDACV,MAAa,WACX,wEACF,MAAa,YACX,2EACF,sCACA,EACD;YAdH,CAgBE,kBAAC,GAAD;GACE,MAAK;GACL,WAAW,EACT,wCACA,KACE,mJACH;GACD,CAAA,EACF,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,QAAD;IACE,eAAY;IACZ,WAAU;cAFZ,CAIG,GACD,kBAAC,GAAD;KAAM,MAAK;KAAiB,OAAM;KAAS,CAAA,CACtC;;GACH,CAAA,CACC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FormHTMLAttributes } from 'react';
|
|
2
|
+
export interface ChatInputProps extends FormHTMLAttributes<HTMLFormElement> {
|
|
3
|
+
value: string;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
onValueChange: (value: string) => void;
|
|
6
|
+
onSubmit: () => void;
|
|
7
|
+
/** Fallback for when the browser does not support the Web Speech API */
|
|
8
|
+
onAudioClick?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function ChatInput({ value, placeholder, onValueChange, onSubmit, onAudioClick, className, ...props }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
|