@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
package/styles/ui/controls.css
CHANGED
|
@@ -33,8 +33,7 @@
|
|
|
33
33
|
@apply border-black;
|
|
34
34
|
}
|
|
35
35
|
label > span > input[type='radio']:focus-visible + span {
|
|
36
|
-
@apply ring-
|
|
37
|
-
--tw-ring-color: color-mix(in oklab, var(--color-lavender) 20%, transparent);
|
|
36
|
+
@apply ring-4 ring-black ring-offset-2;
|
|
38
37
|
}
|
|
39
38
|
label > span > input[type='radio'] + span {
|
|
40
39
|
@apply rounded-full;
|
|
@@ -86,66 +85,24 @@
|
|
|
86
85
|
transform: scale(1);
|
|
87
86
|
}
|
|
88
87
|
label > input[type='checkbox'][data-name='Filter']:focus-visible + span {
|
|
89
|
-
@apply ring-
|
|
90
|
-
--tw-ring-color: color-mix(in oklab, var(--color-lavender) 20%, transparent);
|
|
88
|
+
@apply ring-4 ring-black ring-offset-2;
|
|
91
89
|
}
|
|
92
90
|
/* Switch */
|
|
93
|
-
|
|
94
|
-
@apply transition-all;
|
|
91
|
+
input[role='switch'][data-name='Switch'] + span {
|
|
95
92
|
@apply relative flex items-center transition-colors duration-200;
|
|
96
93
|
@apply ring-0;
|
|
97
94
|
--tw-ring-color: color-mix(in oklab, var(--color-lavender) 0%, transparent);
|
|
98
|
-
background-color: var(--color-middleGrey);
|
|
99
|
-
border-radius: var(--radius-pill);
|
|
100
|
-
}
|
|
101
|
-
label > span > input[type='checkbox'][role='switch'] + span > svg {
|
|
102
|
-
transition: all var(--transition-duration-boop) var(--transition-fn-boop);
|
|
103
|
-
transform: translate(calc(0% + 4px));
|
|
104
|
-
}
|
|
105
|
-
label > span > input[type='checkbox'][role='switch'] + span > svg circle + circle {
|
|
106
|
-
opacity: 1;
|
|
107
|
-
transition: opacity var(--transition-duration-boop) var(--transition-fn-boop);
|
|
108
|
-
}
|
|
109
|
-
label > span > input[type='checkbox'][role='switch'] + span > svg path {
|
|
110
|
-
opacity: 0;
|
|
111
|
-
scale: 0;
|
|
112
|
-
transform-origin: center;
|
|
113
|
-
transition:
|
|
114
|
-
opacity var(--transition-duration-boop) var(--transition-fn-boop),
|
|
115
|
-
scale var(--transition-duration-boop) var(--transition-fn-boop);
|
|
116
|
-
}
|
|
117
|
-
label > span > input[type='checkbox'][role='switch']:checked + span {
|
|
118
|
-
background-color: var(--color-saffron);
|
|
119
|
-
}
|
|
120
|
-
label > span > input[type='checkbox'][role='switch']:checked + span > svg {
|
|
121
|
-
transform: translate(calc(100% + 4px));
|
|
122
|
-
}
|
|
123
|
-
label > span > input[type='checkbox'][role='switch']:checked + span > svg circle + circle {
|
|
124
|
-
opacity: 0;
|
|
125
|
-
}
|
|
126
|
-
label > span > input[type='checkbox'][role='switch']:checked + span > svg path {
|
|
127
|
-
scale: 1;
|
|
128
|
-
opacity: 1;
|
|
129
|
-
}
|
|
130
|
-
label > span > input[type='checkbox'][role='switch']:focus-visible + span {
|
|
131
|
-
@apply ring-8;
|
|
132
|
-
--tw-ring-color: color-mix(in oklab, var(--color-lavender) 20%, transparent);
|
|
133
95
|
}
|
|
134
96
|
|
|
135
|
-
|
|
136
|
-
@apply relative flex items-center transition-colors duration-200;
|
|
137
|
-
@apply ring-0;
|
|
138
|
-
--tw-ring-color: color-mix(in oklab, var(--color-lavender) 0%, transparent);
|
|
139
|
-
}
|
|
140
|
-
button[role='switch'][data-name='Switch'] svg {
|
|
97
|
+
input[role='switch'][data-name='Switch'] + span svg {
|
|
141
98
|
transition: all var(--transition-duration-boop) var(--transition-fn-boop);
|
|
142
99
|
transform: translate(calc(0%));
|
|
143
100
|
}
|
|
144
|
-
|
|
101
|
+
input[role='switch'][data-name='Switch'] + span svg circle + circle {
|
|
145
102
|
opacity: 1;
|
|
146
103
|
transition: opacity var(--transition-duration-boop) var(--transition-fn-boop);
|
|
147
104
|
}
|
|
148
|
-
|
|
105
|
+
input[role='switch'][data-name='Switch'] + span svg path {
|
|
149
106
|
opacity: 0;
|
|
150
107
|
scale: 0;
|
|
151
108
|
transform-origin: center;
|
|
@@ -153,21 +110,17 @@
|
|
|
153
110
|
opacity var(--transition-duration-boop) var(--transition-fn-boop),
|
|
154
111
|
scale var(--transition-duration-boop) var(--transition-fn-boop);
|
|
155
112
|
}
|
|
156
|
-
|
|
157
|
-
background-color: var(--color-saffron);
|
|
158
|
-
}
|
|
159
|
-
button[role='switch'][data-name='Switch'][aria-checked='true'] svg {
|
|
113
|
+
input[role='switch'][data-name='Switch']:checked + span svg {
|
|
160
114
|
transform: translate(calc(100%));
|
|
161
115
|
}
|
|
162
|
-
|
|
116
|
+
input[role='switch'][data-name='Switch']:checked + span svg circle + circle {
|
|
163
117
|
opacity: 0;
|
|
164
118
|
}
|
|
165
|
-
|
|
119
|
+
input[role='switch'][data-name='Switch']:checked + span svg path {
|
|
166
120
|
scale: 1;
|
|
167
121
|
opacity: 1;
|
|
168
122
|
}
|
|
169
|
-
|
|
170
|
-
@apply ring-
|
|
171
|
-
--tw-ring-color: color-mix(in oklab, var(--color-lavender) 20%, transparent);
|
|
123
|
+
input[role='switch'][data-name='Switch']:focus-visible + span {
|
|
124
|
+
@apply ring-4 ring-black ring-offset-2;
|
|
172
125
|
}
|
|
173
126
|
}
|
package/styles/ui/range.css
CHANGED
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
@apply m-0;
|
|
55
55
|
@apply pointer-events-none;
|
|
56
56
|
@apply appearance-none;
|
|
57
|
+
@apply outline-none;
|
|
57
58
|
|
|
58
59
|
grid-column: 1 / span 2;
|
|
59
60
|
grid-row: 3;
|
|
@@ -61,6 +62,10 @@
|
|
|
61
62
|
--col: #000;
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
.input-range:focus-visible {
|
|
66
|
+
@apply ring-4 ring-black ring-offset-2;
|
|
67
|
+
}
|
|
68
|
+
|
|
64
69
|
.input-range-sliderThumb {
|
|
65
70
|
@apply transform;
|
|
66
71
|
@apply appearance-none;
|
|
@@ -159,7 +164,7 @@
|
|
|
159
164
|
color: hsl(0deg 0% 0%);
|
|
160
165
|
font-size: 0.75rem;
|
|
161
166
|
line-height: 0.875rem;
|
|
162
|
-
|
|
167
|
+
font-weight: 600;
|
|
163
168
|
|
|
164
169
|
left: calc(0.5 * var(--thumbWidth));
|
|
165
170
|
}
|
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
|
@@ -5,8 +5,8 @@ import { Colors as n, getBgColor as r, getBorderColor as i, getTextColor as a }
|
|
|
5
5
|
import { useCountdown as o } from "./hooks/useCountdown.js";
|
|
6
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
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
12
|
let O = l(), [k, A] = d(!1), [j, M] = d(!1), N = u(null), { progress: P } = o({
|
|
@@ -23,7 +23,7 @@ var h = ({ className: h, title: g, body: _, icon: v, isVisible: y, labels: b, ch
|
|
|
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
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),
|
|
@@ -32,50 +32,53 @@ var h = ({ className: h, title: g, body: _, icon: v, isVisible: y, labels: b, ch
|
|
|
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__ */
|
|
81
|
+
children: /* @__PURE__ */ f("div", {
|
|
79
82
|
className: r(S),
|
|
80
83
|
style: {
|
|
81
84
|
width: "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-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 <
|
|
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
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-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
|
|
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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect as e, useRef as t } from "react";
|
|
3
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
4
|
+
var r = (() => {
|
|
5
|
+
let e = [];
|
|
6
|
+
for (let t = 0; t <= 1; t += .03) e.push(parseFloat(t.toFixed(2)));
|
|
7
|
+
return e;
|
|
8
|
+
})(), i = (e) => {
|
|
9
|
+
let t = e.boundingClientRect.height <= window.innerHeight / 2 && e.intersectionRect.height > window.innerHeight / 3, n = e.boundingClientRect.height <= window.innerHeight / 2 && e.boundingClientRect.height === e.intersectionRect.height, r = e.boundingClientRect.height > window.innerHeight / 2 && e.intersectionRect.height > window.innerHeight / 2;
|
|
10
|
+
return t || n || r;
|
|
11
|
+
}, a = ({ children: a, index: o, setActiveChapter: s }) => {
|
|
12
|
+
let c = t(null);
|
|
13
|
+
return e(() => {
|
|
14
|
+
let e = c.current;
|
|
15
|
+
if (e) {
|
|
16
|
+
let t = new IntersectionObserver(([e]) => {
|
|
17
|
+
i(e) && s(o);
|
|
18
|
+
}, {
|
|
19
|
+
threshold: r,
|
|
20
|
+
rootMargin: "0px 0px 0px 0px"
|
|
21
|
+
});
|
|
22
|
+
return t.observe(e), () => t.unobserve(e);
|
|
23
|
+
}
|
|
24
|
+
}, [
|
|
25
|
+
c,
|
|
26
|
+
o,
|
|
27
|
+
s
|
|
28
|
+
]), /* @__PURE__ */ n("section", {
|
|
29
|
+
ref: c,
|
|
30
|
+
children: a
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
export { a as Chapter };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=Chapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chapter.js","names":[],"sources":["../../../lib/ui/Chapters/Chapter.tsx"],"sourcesContent":["'use client';\nimport { useEffect, useRef, type FunctionComponent, type PropsWithChildren } from 'react';\n\ninterface Props {\n index: number;\n setActiveChapter: (index: number) => void;\n}\n\nconst generateThreshold = () => {\n const threshold: number[] = [];\n\n for (let i = 0; i <= 1; i += 0.03) {\n threshold.push(parseFloat(i.toFixed(2)));\n }\n\n return threshold;\n};\n\nconst THRESHOLD = generateThreshold();\n\nconst isChapterActive = (entry: IntersectionObserverEntry) => {\n const isHalfHeightAndOneThirdVisible =\n entry.boundingClientRect.height <= window.innerHeight / 2 &&\n entry.intersectionRect.height > window.innerHeight / 3;\n\n const isHalfHeightAndFullyVisible =\n entry.boundingClientRect.height <= window.innerHeight / 2 &&\n entry.boundingClientRect.height === entry.intersectionRect.height;\n\n const isMoreThanHalfHeightAndHalfVisible =\n entry.boundingClientRect.height > window.innerHeight / 2 &&\n entry.intersectionRect.height > window.innerHeight / 2;\n\n return (\n isHalfHeightAndOneThirdVisible ||\n isHalfHeightAndFullyVisible ||\n isMoreThanHalfHeightAndHalfVisible\n );\n};\n\nexport const Chapter: FunctionComponent<PropsWithChildren<Props>> = ({\n children,\n index,\n setActiveChapter,\n}) => {\n const element = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const current = element.current;\n\n if (current) {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (isChapterActive(entry)) {\n setActiveChapter(index);\n }\n },\n {\n threshold: THRESHOLD,\n rootMargin: '0px 0px 0px 0px',\n },\n );\n\n observer.observe(current);\n\n return () => observer.unobserve(current);\n }\n }, [element, index, setActiveChapter]);\n\n return <section ref={element}>{children}</section>;\n};\n"],"mappings":";;;AAkBA,IAAM,WAV0B;CAC9B,IAAM,IAAsB,EAAE;AAE9B,MAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,IAC3B,GAAU,KAAK,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AAG1C,QAAO;IAG4B,EAE/B,KAAmB,MAAqC;CAC5D,IAAM,IACJ,EAAM,mBAAmB,UAAU,OAAO,cAAc,KACxD,EAAM,iBAAiB,SAAS,OAAO,cAAc,GAEjD,IACJ,EAAM,mBAAmB,UAAU,OAAO,cAAc,KACxD,EAAM,mBAAmB,WAAW,EAAM,iBAAiB,QAEvD,IACJ,EAAM,mBAAmB,SAAS,OAAO,cAAc,KACvD,EAAM,iBAAiB,SAAS,OAAO,cAAc;AAEvD,QACE,KACA,KACA;GAIS,KAAwD,EACnE,aACA,UACA,0BACI;CACJ,IAAM,IAAU,EAAuB,KAAK;AAwB5C,QAtBA,QAAgB;EACd,IAAM,IAAU,EAAQ;AAExB,MAAI,GAAS;GACX,IAAM,IAAW,IAAI,sBAClB,CAAC,OAAW;AACX,IAAI,EAAgB,EAAM,IACxB,EAAiB,EAAM;MAG3B;IACE,WAAW;IACX,YAAY;IACb,CACF;AAID,UAFA,EAAS,QAAQ,EAAQ,QAEZ,EAAS,UAAU,EAAQ;;IAEzC;EAAC;EAAS;EAAO;EAAiB,CAAC,EAE/B,kBAAC,WAAD;EAAS,KAAK;EAAU;EAAmB,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ComponentProps, FunctionComponent, PropsWithChildren } from 'react';
|
|
2
|
+
import { Heading } from '../heading/Heading';
|
|
3
|
+
import { Theme } from '../types/Theme';
|
|
4
|
+
interface Props {
|
|
5
|
+
className?: string;
|
|
6
|
+
hasNext?: boolean;
|
|
7
|
+
hLevel?: ComponentProps<typeof Heading>['level'];
|
|
8
|
+
index: number;
|
|
9
|
+
isActive?: boolean;
|
|
10
|
+
onClick?: () => void;
|
|
11
|
+
theme?: Theme;
|
|
12
|
+
}
|
|
13
|
+
export declare const ChapterTitle: FunctionComponent<PropsWithChildren<Props>>;
|
|
14
|
+
export {};
|