@mozaic-ds/web-components 1.2.0 → 1.3.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/dist/Cross20.js +1 -1
- package/dist/Cross24.js +1 -1
- package/dist/CrossCircleFilled24.js +1 -1
- package/dist/Less24.js +2 -0
- package/dist/Less24.js.map +1 -0
- package/dist/attributes.js +1 -1
- package/dist/attributes.js.map +1 -1
- package/dist/bundle.d.ts +3 -0
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +3 -0
- package/dist/components/avatar/Avatar.js +2 -2
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/Avatar.stories.d.ts +2 -1
- package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.stories.js +2 -1
- package/dist/components/avatar/Avatar.svelte +2 -2
- package/dist/components/breadcrumb/Breadcrumb.js +2 -2
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.stories.d.ts +1 -0
- package/dist/components/breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.stories.js +1 -0
- package/dist/components/breadcrumb/Breadcrumb.svelte +2 -2
- package/dist/components/button/Button.js +2 -2
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.stories.d.ts +2 -0
- package/dist/components/button/Button.stories.d.ts.map +1 -1
- package/dist/components/button/Button.stories.js +2 -0
- package/dist/components/button/Button.svelte +0 -1
- package/dist/components/button/Button.svelte.d.ts +0 -1
- package/dist/components/button/Button.svelte.d.ts.map +1 -1
- package/dist/components/callout/Callout.js +2 -2
- package/dist/components/callout/Callout.js.map +1 -1
- package/dist/components/callout/Callout.stories.d.ts +5 -2
- package/dist/components/callout/Callout.stories.d.ts.map +1 -1
- package/dist/components/callout/Callout.stories.js +5 -2
- package/dist/components/callout/Callout.svelte +2 -2
- package/dist/components/carousel/Carousel.js +4 -0
- package/dist/components/carousel/Carousel.js.map +1 -0
- package/dist/components/carousel/Carousel.spec.js +49 -0
- package/dist/components/carousel/Carousel.stories.d.ts +9 -0
- package/dist/components/carousel/Carousel.stories.d.ts.map +1 -0
- package/dist/components/carousel/Carousel.stories.js +72 -0
- package/dist/components/carousel/Carousel.svelte +187 -0
- package/dist/components/carousel/Carousel.svelte.d.ts +46 -0
- package/dist/components/carousel/Carousel.svelte.d.ts.map +1 -0
- package/dist/components/carousel/README.md +18 -0
- package/dist/components/checkbox/Checkbox.js +3 -3
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/checkbox/Checkbox.stories.d.ts +1 -0
- package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.stories.js +1 -0
- package/dist/components/checkbox/Checkbox.svelte +2 -0
- package/dist/components/checkbox/Checkbox.svelte.d.ts.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.js +4 -4
- package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts +1 -0
- package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.stories.js +1 -0
- package/dist/components/checkboxgroup/CheckboxGroup.svelte +2 -2
- package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
- package/dist/components/circularprogressbar/CircularProgressbar.js.map +1 -1
- package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts +1 -0
- package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts.map +1 -1
- package/dist/components/circularprogressbar/CircularProgressbar.stories.js +1 -0
- package/dist/components/circularprogressbar/CircularProgressbar.svelte +0 -1
- package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts +0 -1
- package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts.map +1 -1
- package/dist/components/container/Container.js +2 -2
- package/dist/components/container/Container.stories.d.ts +1 -0
- package/dist/components/container/Container.stories.d.ts.map +1 -1
- package/dist/components/container/Container.stories.js +1 -0
- package/dist/components/datepicker/Datepicker.js +3 -3
- package/dist/components/datepicker/Datepicker.js.map +1 -1
- package/dist/components/datepicker/Datepicker.stories.d.ts +1 -0
- package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
- package/dist/components/datepicker/Datepicker.stories.js +1 -0
- package/dist/components/datepicker/Datepicker.svelte +2 -0
- package/dist/components/datepicker/Datepicker.svelte.d.ts.map +1 -1
- package/dist/components/divider/Divider.js +1 -1
- package/dist/components/divider/Divider.stories.d.ts +1 -0
- package/dist/components/divider/Divider.stories.d.ts.map +1 -1
- package/dist/components/divider/Divider.stories.js +1 -0
- package/dist/components/drawer/Drawer.js +2 -2
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/Drawer.stories.d.ts +2 -0
- package/dist/components/drawer/Drawer.stories.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.stories.js +2 -0
- package/dist/components/drawer/Drawer.svelte +12 -2
- package/dist/components/drawer/Drawer.svelte.d.ts.map +1 -1
- package/dist/components/field/Field.js +2 -2
- package/dist/components/field/Field.stories.d.ts +2 -0
- package/dist/components/field/Field.stories.d.ts.map +1 -1
- package/dist/components/field/Field.stories.js +2 -0
- package/dist/components/flag/Flag.js +2 -2
- package/dist/components/flag/Flag.js.map +1 -1
- package/dist/components/flag/Flag.stories.d.ts +1 -0
- package/dist/components/flag/Flag.stories.d.ts.map +1 -1
- package/dist/components/flag/Flag.stories.js +1 -0
- package/dist/components/flag/Flag.svelte +2 -2
- package/dist/components/iconbutton/IconButton.js +2 -2
- package/dist/components/iconbutton/IconButton.js.map +1 -1
- package/dist/components/iconbutton/IconButton.stories.d.ts +4 -2
- package/dist/components/iconbutton/IconButton.stories.d.ts.map +1 -1
- package/dist/components/iconbutton/IconButton.stories.js +4 -2
- package/dist/components/iconbutton/IconButton.svelte +0 -1
- package/dist/components/iconbutton/IconButton.svelte.d.ts +0 -1
- package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
- package/dist/components/kpiitem/KpiItem.js +2 -2
- package/dist/components/kpiitem/KpiItem.js.map +1 -1
- package/dist/components/kpiitem/KpiItem.stories.d.ts +1 -0
- package/dist/components/kpiitem/KpiItem.stories.d.ts.map +1 -1
- package/dist/components/kpiitem/KpiItem.stories.js +1 -0
- package/dist/components/kpiitem/KpiItem.svelte +2 -2
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js.map +1 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts +1 -0
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts.map +1 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.js +1 -0
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte +2 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js.map +1 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts +1 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts.map +1 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.js +1 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte +2 -1
- package/dist/components/link/Link.js +2 -2
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/link/Link.stories.d.ts +3 -0
- package/dist/components/link/Link.stories.d.ts.map +1 -1
- package/dist/components/link/Link.stories.js +3 -0
- package/dist/components/link/Link.svelte +2 -0
- package/dist/components/link/Link.svelte.d.ts.map +1 -1
- package/dist/components/loader/Loader.js +2 -2
- package/dist/components/loader/Loader.js.map +1 -1
- package/dist/components/loader/Loader.stories.d.ts +1 -0
- package/dist/components/loader/Loader.stories.d.ts.map +1 -1
- package/dist/components/loader/Loader.stories.js +1 -0
- package/dist/components/loader/Loader.svelte +2 -1
- package/dist/components/loadingoverlay/LoadingOverlay.js +2 -2
- package/dist/components/loadingoverlay/LoadingOverlay.js.map +1 -1
- package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts +1 -0
- package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts.map +1 -1
- package/dist/components/loadingoverlay/LoadingOverlay.stories.js +1 -0
- package/dist/components/loadingoverlay/LoadingOverlay.svelte +2 -2
- package/dist/components/modal/Modal.js +2 -2
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/Modal.stories.d.ts +5 -2
- package/dist/components/modal/Modal.stories.d.ts.map +1 -1
- package/dist/components/modal/Modal.stories.js +5 -2
- package/dist/components/modal/Modal.svelte +2 -1
- package/dist/components/numberbadge/NumberBadge.js +2 -2
- package/dist/components/numberbadge/NumberBadge.js.map +1 -1
- package/dist/components/numberbadge/NumberBadge.stories.d.ts +1 -0
- package/dist/components/numberbadge/NumberBadge.stories.d.ts.map +1 -1
- package/dist/components/numberbadge/NumberBadge.stories.js +1 -0
- package/dist/components/numberbadge/NumberBadge.svelte +5 -2
- package/dist/components/overlay/Overlay.js +2 -2
- package/dist/components/overlay/Overlay.stories.d.ts +1 -0
- package/dist/components/overlay/Overlay.stories.d.ts.map +1 -1
- package/dist/components/overlay/Overlay.stories.js +1 -0
- package/dist/components/pagination/Pagination.js +3 -3
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/Pagination.stories.d.ts +1 -0
- package/dist/components/pagination/Pagination.stories.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.stories.js +1 -0
- package/dist/components/passwordinput/PasswordInput.js +4 -3
- package/dist/components/passwordinput/PasswordInput.js.map +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.d.ts +1 -0
- package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.js +1 -0
- package/dist/components/passwordinput/PasswordInput.svelte +2 -0
- package/dist/components/passwordinput/PasswordInput.svelte.d.ts.map +1 -1
- package/dist/components/phonenumber/PhoneNumber.js +22 -0
- package/dist/components/phonenumber/PhoneNumber.js.map +1 -0
- package/dist/components/phonenumber/PhoneNumber.spec.js +103 -0
- package/dist/components/phonenumber/PhoneNumber.stories.d.ts +14 -0
- package/dist/components/phonenumber/PhoneNumber.stories.d.ts.map +1 -0
- package/dist/components/phonenumber/PhoneNumber.stories.js +116 -0
- package/dist/components/phonenumber/PhoneNumber.svelte +896 -0
- package/dist/components/phonenumber/PhoneNumber.svelte.d.ts +60 -0
- package/dist/components/phonenumber/PhoneNumber.svelte.d.ts.map +1 -0
- package/dist/components/phonenumber/README.md +27 -0
- package/dist/components/pincode/Pincode.js +2 -2
- package/dist/components/pincode/Pincode.stories.d.ts +1 -0
- package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
- package/dist/components/pincode/Pincode.stories.js +1 -0
- package/dist/components/quantityselector/QuantitySelector.js +2 -2
- package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.stories.d.ts +1 -0
- package/dist/components/quantityselector/QuantitySelector.stories.d.ts.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.stories.js +1 -0
- package/dist/components/quantityselector/QuantitySelector.svelte +6 -2
- package/dist/components/quantityselector/QuantitySelector.svelte.d.ts.map +1 -1
- package/dist/components/radio/Radio.js +2 -2
- package/dist/components/radio/Radio.js.map +1 -1
- package/dist/components/radio/Radio.stories.d.ts +1 -0
- package/dist/components/radio/Radio.stories.d.ts.map +1 -1
- package/dist/components/radio/Radio.stories.js +1 -0
- package/dist/components/radio/Radio.svelte +10 -1
- package/dist/components/radio/Radio.svelte.d.ts.map +1 -1
- package/dist/components/radiogroup/RadioGroup.js +1 -1
- package/dist/components/radiogroup/RadioGroup.stories.d.ts +1 -0
- package/dist/components/radiogroup/RadioGroup.stories.d.ts.map +1 -1
- package/dist/components/radiogroup/RadioGroup.stories.js +1 -0
- package/dist/components/segmentedcontrol/SegmentedControl.js +2 -2
- package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts +1 -0
- package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts.map +1 -1
- package/dist/components/segmentedcontrol/SegmentedControl.stories.js +1 -0
- package/dist/components/select/Select.js +2 -2
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.stories.d.ts +1 -0
- package/dist/components/select/Select.stories.d.ts.map +1 -1
- package/dist/components/select/Select.stories.js +1 -0
- package/dist/components/select/Select.svelte +2 -0
- package/dist/components/select/Select.svelte.d.ts.map +1 -1
- package/dist/components/starrating/README.md +22 -0
- package/dist/components/starrating/StarRating.js +4 -0
- package/dist/components/starrating/StarRating.js.map +1 -0
- package/dist/components/starrating/StarRating.spec.js +108 -0
- package/dist/components/starrating/StarRating.stories.d.ts +13 -0
- package/dist/components/starrating/StarRating.stories.d.ts.map +1 -0
- package/dist/components/starrating/StarRating.stories.js +82 -0
- package/dist/components/starrating/StarRating.svelte +227 -0
- package/dist/components/starrating/StarRating.svelte.d.ts +46 -0
- package/dist/components/starrating/StarRating.svelte.d.ts.map +1 -0
- package/dist/components/statusbadge/StatusBadge.js +2 -2
- package/dist/components/statusbadge/StatusBadge.js.map +1 -1
- package/dist/components/statusbadge/StatusBadge.stories.d.ts +1 -0
- package/dist/components/statusbadge/StatusBadge.stories.d.ts.map +1 -1
- package/dist/components/statusbadge/StatusBadge.stories.js +1 -0
- package/dist/components/statusbadge/StatusBadge.svelte +2 -2
- package/dist/components/statusdot/StatusDot.js +2 -2
- package/dist/components/statusdot/StatusDot.js.map +1 -1
- package/dist/components/statusdot/StatusDot.stories.d.ts +1 -0
- package/dist/components/statusdot/StatusDot.stories.d.ts.map +1 -1
- package/dist/components/statusdot/StatusDot.stories.js +1 -0
- package/dist/components/statusdot/StatusDot.svelte +5 -2
- package/dist/components/statusmessage/StatusMessage.js +2 -2
- package/dist/components/statusmessage/StatusMessage.js.map +1 -1
- package/dist/components/statusmessage/StatusMessage.stories.d.ts +1 -0
- package/dist/components/statusmessage/StatusMessage.stories.d.ts.map +1 -1
- package/dist/components/statusmessage/StatusMessage.stories.js +1 -0
- package/dist/components/statusmessage/StatusMessage.svelte +2 -2
- package/dist/components/statusnotification/StatusNotification.js +2 -2
- package/dist/components/statusnotification/StatusNotification.js.map +1 -1
- package/dist/components/statusnotification/StatusNotification.stories.d.ts +4 -0
- package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
- package/dist/components/statusnotification/StatusNotification.stories.js +4 -0
- package/dist/components/statusnotification/StatusNotification.svelte +2 -1
- package/dist/components/steppercompact/StepperCompact.js +2 -2
- package/dist/components/steppercompact/StepperCompact.stories.d.ts +1 -0
- package/dist/components/steppercompact/StepperCompact.stories.d.ts.map +1 -1
- package/dist/components/steppercompact/StepperCompact.stories.js +1 -0
- package/dist/components/tab/Tab.js +1 -1
- package/dist/components/tab/Tab.js.map +1 -1
- package/dist/components/tab/Tab.svelte +0 -1
- package/dist/components/tab/Tab.svelte.d.ts +0 -1
- package/dist/components/tab/Tab.svelte.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +2 -2
- package/dist/components/tabs/Tabs.stories.d.ts +3 -0
- package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.stories.js +3 -0
- package/dist/components/tag/Tag.js +2 -2
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/tag/Tag.stories.d.ts +1 -0
- package/dist/components/tag/Tag.stories.d.ts.map +1 -1
- package/dist/components/tag/Tag.stories.js +1 -0
- package/dist/components/tag/Tag.svelte +15 -4
- package/dist/components/tag/Tag.svelte.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.js +2 -2
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/textarea/Textarea.stories.d.ts +1 -0
- package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.stories.js +1 -0
- package/dist/components/textarea/Textarea.svelte +2 -0
- package/dist/components/textarea/Textarea.svelte.d.ts.map +1 -1
- package/dist/components/textinput/Textinput.js +2 -2
- package/dist/components/textinput/Textinput.js.map +1 -1
- package/dist/components/textinput/Textinput.stories.d.ts +1 -0
- package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
- package/dist/components/textinput/Textinput.stories.js +1 -0
- package/dist/components/textinput/Textinput.svelte +2 -0
- package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
- package/dist/components/toaster/Toaster.js +2 -2
- package/dist/components/toaster/Toaster.js.map +1 -1
- package/dist/components/toaster/Toaster.stories.d.ts +3 -0
- package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
- package/dist/components/toaster/Toaster.stories.js +3 -0
- package/dist/components/toaster/Toaster.svelte +2 -0
- package/dist/components/toaster/Toaster.svelte.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +2 -2
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/Toggle.stories.d.ts +1 -0
- package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.stories.js +1 -0
- package/dist/components/toggle/Toggle.svelte +18 -2
- package/dist/components/toggle/Toggle.svelte.d.ts.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.js +2 -2
- package/dist/components/togglegroup/ToggleGroup.stories.d.ts +1 -0
- package/dist/components/togglegroup/ToggleGroup.stories.d.ts.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.stories.js +1 -0
- package/dist/components/tooltip/Tooltip.js +2 -2
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/tooltip/Tooltip.stories.d.ts +1 -0
- package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.stories.js +1 -0
- package/dist/components/tooltip/Tooltip.svelte +2 -1
- package/dist/custom-element.js +3 -3
- package/dist/custom-element.js.map +1 -1
- package/dist/each.js +1 -1
- package/dist/each.js.map +1 -1
- package/dist/if.js +1 -1
- package/dist/if.js.map +1 -1
- package/dist/input.js +1 -1
- package/dist/input.js.map +1 -1
- package/dist/legacy.js +1 -1
- package/dist/main.d.ts +4 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +4 -1
- package/dist/slot.js +1 -1
- package/dist/svelte-component.js +1 -1
- package/dist/this.js +1 -1
- package/dist/this.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{c as G,p as H,a as I,b as n,f as s,
|
|
1
|
+
import{c as G,p as H,a as I,b as n,f as s,r as J,d,s as v,h as b,i as K,j as a,e as u,t as M,l as N,m as O}from"../../custom-element.js";import{i}from"../../if.js";import{s as h}from"../../slot.js";import{a as P}from"../../attributes.js";import{L as Q}from"../loader/Loader.js";var R=s('<span class="mc-button__icon svelte-ozghz9"><!></span>'),T=s('<span class="mc-button__icon svelte-ozghz9" style="color: currentColor;position: absolute; visibility: visible;"><!></span>'),U=s('<span class="mc-button__icon svelte-ozghz9"><!></span>'),V=s("<span><!></span>"),W=s('<span class="mc-button__icon svelte-ozghz9"><!></span>'),X=s("<button><!> <!> <!> <!> <!></button>");const Y={hash:"svelte-ozghz9",code:`/**
|
|
2
2
|
* Do not edit directly, this file was auto-generated.
|
|
3
3
|
*/.mc-button.svelte-ozghz9 {color:var(--button-color-filled-standard-font, #ffffff);background-color:var(--button-color-filled-standard-background, #464e63);}.mc-button.svelte-ozghz9:hover {background-color:var(--button-color-filled-standard-hover-background, #343b4c);}.mc-button.svelte-ozghz9:active {background-color:var(--button-color-filled-standard-active-background, #242938);}.mc-button.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button.svelte-ozghz9 {font-weight:var(--font-weight-semi-bold, 600);padding:0 calc(1rem - 0.125rem);min-height:3rem;min-width:3rem;}.mc-button.svelte-ozghz9 .mc-button__label:where(.svelte-ozghz9) {font-size:var(--font-size-150, 1rem);}.mc-button.svelte-ozghz9 {display:inline-flex;justify-content:center;vertical-align:middle;text-align:center;border:2px solid transparent;border-radius:var(--button-border-radius-s, 0.25rem);transition:all ease 200ms;transition:box-shadow 200ms ease;align-items:center;box-sizing:border-box;font-family:inherit;fill:currentcolor;gap:0.25rem;cursor:pointer;}.mc-button__label.svelte-ozghz9 {font-size:var(--font-size-150, 1rem);}.mc-button__icon.svelte-ozghz9 {flex-shrink:0;width:1.5rem;height:1.5rem;}.mc-button.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button.svelte-ozghz9:focus-visible {box-shadow:0 0 0 0.125rem var(--focus-color-mid, var(--focus-color-outline-mid, #ffffff)), 0 0 0 0.25rem var(--focus-color-outer, var(--focus-color-outline-outer, #000000));outline:0.125rem solid transparent;outline-offset:0.125rem;}.mc-button--s.svelte-ozghz9 {padding:0 calc(0.75rem - 0.125rem);min-height:2rem;min-width:2rem;}.mc-button--s.svelte-ozghz9 .mc-button__label:where(.svelte-ozghz9) {font-size:var(--font-size-100, 0.875rem);}.mc-button--s.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9) {width:1.25rem;height:1.25rem;}.mc-button--s.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9):only-child {width:1.25rem;height:1.25rem;}.mc-button--m.svelte-ozghz9 {padding:0 calc(1rem - 0.125rem);min-height:3rem;min-width:3rem;}.mc-button--m.svelte-ozghz9 .mc-button__label:where(.svelte-ozghz9) {font-size:var(--font-size-150, 1rem);}.mc-button--m.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9) {width:1.5rem;height:1.5rem;}.mc-button--m.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9):only-child {width:1.5rem;height:1.5rem;}.mc-button--l.svelte-ozghz9 {padding:0 calc(1.25rem - 0.125rem);min-height:4rem;min-width:4rem;}.mc-button--l.svelte-ozghz9 .mc-button__label:where(.svelte-ozghz9) {font-size:var(--font-size-200, 1.125rem);}.mc-button--l.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9) {width:2rem;height:2rem;}.mc-button--l.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9):only-child {width:2rem;height:2rem;}.mc-button--icon-only.svelte-ozghz9 {padding:0.25rem;}.mc-button--outlined.svelte-ozghz9 {color:var(--button-color-outlined-standard-font, #242938);border-color:var(--button-color-outlined-standard-border, #8891aa);background-color:var(--button-color-outlined-standard-background, #ffffff);}.mc-button--outlined.svelte-ozghz9:hover {background-color:var(--button-color-outlined-standard-hover-background, #eff1f6);}.mc-button--outlined.svelte-ozghz9:active {background-color:var(--button-color-outlined-standard-active-background, #c9d0de);}.mc-button--outlined.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.svelte-ozghz9 {color:var(--button-color-ghost-standard-font, #242938);background-color:var(--button-color-ghost-standard-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.svelte-ozghz9:hover {background-color:var(--button-color-ghost-standard-hover-background, rgba(70, 78, 99, 0.1));}.mc-button--ghost.svelte-ozghz9:active {background-color:var(--button-color-ghost-standard-active-background, rgba(70, 78, 99, 0.2));}.mc-button--ghost.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--accent.svelte-ozghz9 {color:var(--button-color-filled-accent-font, #ffffff);background-color:var(--button-color-filled-accent-background, #117f03);}.mc-button--accent.svelte-ozghz9:hover {background-color:var(--button-color-filled-accent-hover-background, #006902);}.mc-button--accent.svelte-ozghz9:active {background-color:var(--button-color-filled-accent-active-background, #035010);}.mc-button--accent.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--danger.svelte-ozghz9 {color:var(--button-color-filled-danger-font, #ffffff);background-color:var(--button-color-filled-danger-background, #c61112);}.mc-button--danger.svelte-ozghz9:hover {background-color:var(--button-color-filled-danger-hover-background, #8c0003);}.mc-button--danger.svelte-ozghz9:active {background-color:var(--button-color-filled-danger-active-background, #530000);}.mc-button--danger.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--inverse.svelte-ozghz9 {--focus-color-mid: var(--focus-color-outline-outer, #000000);--focus-color-outer: var(--focus-color-outline-mid, #ffffff);color:var(--button-color-filled-inverse-font, #242938);background-color:var(--button-color-filled-inverse-background, #ffffff);}.mc-button--inverse.svelte-ozghz9:hover {background-color:var(--button-color-filled-inverse-hover-background, #e6e6e6);}.mc-button--inverse.svelte-ozghz9:active {background-color:var(--button-color-filled-inverse-active-background, #cccccc);}.mc-button--inverse.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--icon-button.svelte-ozghz9 {border-radius:var(--border-radius-full, 100%);padding:0;}.mc-button--loading.svelte-ozghz9 .mc-button__label:where(.svelte-ozghz9),
|
|
4
|
-
.mc-button--loading.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9) {visibility:hidden;}.mc-button--outlined.mc-button--standard.svelte-ozghz9 {color:var(--button-color-outlined-standard-font, #242938);border-color:var(--button-color-outlined-standard-border, #8891aa);background-color:var(--button-color-outlined-standard-background, #ffffff);}.mc-button--outlined.mc-button--standard.svelte-ozghz9:hover {background-color:var(--button-color-outlined-standard-hover-background, #eff1f6);}.mc-button--outlined.mc-button--standard.svelte-ozghz9:active {background-color:var(--button-color-outlined-standard-active-background, #c9d0de);}.mc-button--outlined.mc-button--standard.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--outlined.mc-button--accent.svelte-ozghz9 {color:var(--button-color-outlined-accent-font, #117f03);border-color:var(--button-color-outlined-accent-border, #78be20);background-color:var(--button-color-outlined-accent-background, #ffffff);}.mc-button--outlined.mc-button--accent.svelte-ozghz9:hover {background-color:var(--button-color-outlined-accent-hover-background, #ebf5de);}.mc-button--outlined.mc-button--accent.svelte-ozghz9:active {background-color:var(--button-color-outlined-accent-active-background, #c5e39e);}.mc-button--outlined.mc-button--accent.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--outlined.mc-button--danger.svelte-ozghz9 {color:var(--button-color-outlined-danger-font, #c61112);border-color:var(--button-color-outlined-danger-border, #ef5f5c);background-color:var(--button-color-outlined-danger-background, #ffffff);}.mc-button--outlined.mc-button--danger.svelte-ozghz9:hover {background-color:var(--button-color-outlined-danger-hover-background, #fdeaea);}.mc-button--outlined.mc-button--danger.svelte-ozghz9:active {background-color:var(--button-color-outlined-danger-active-background, #f8bcbb);}.mc-button--outlined.mc-button--danger.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--outlined.mc-button--inverse.svelte-ozghz9 {color:var(--button-color-outlined-inverse-font, #ffffff);border-color:var(--button-color-outlined-inverse-border, #ffffff);background-color:var(--button-color-outlined-inverse-background, rgba(255, 255, 255, 0.01));}.mc-button--outlined.mc-button--inverse.svelte-ozghz9:hover {background-color:var(--button-color-outlined-inverse-hover-background, rgba(255, 255, 255, 0.1));}.mc-button--outlined.mc-button--inverse.svelte-ozghz9:active {background-color:var(--button-color-outlined-inverse-active-background, rgba(255, 255, 255, 0.2));}.mc-button--outlined.mc-button--inverse.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--standard.svelte-ozghz9 {color:var(--button-color-ghost-standard-font, #242938);background-color:var(--button-color-ghost-standard-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--standard.svelte-ozghz9:hover {background-color:var(--button-color-ghost-standard-hover-background, rgba(70, 78, 99, 0.1));}.mc-button--ghost.mc-button--standard.svelte-ozghz9:active {background-color:var(--button-color-ghost-standard-active-background, rgba(70, 78, 99, 0.2));}.mc-button--ghost.mc-button--standard.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--accent.svelte-ozghz9 {color:var(--button-color-ghost-accent-font, #117f03);background-color:var(--button-color-ghost-accent-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--accent.svelte-ozghz9:hover {background-color:var(--button-color-ghost-accent-hover-background, rgba(17, 127, 3, 0.1));}.mc-button--ghost.mc-button--accent.svelte-ozghz9:active {background-color:var(--button-color-ghost-accent-active-background, rgba(17, 127, 3, 0.2));}.mc-button--ghost.mc-button--accent.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--danger.svelte-ozghz9 {color:var(--button-color-ghost-danger-font, #c61112);background-color:var(--button-color-ghost-danger-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--danger.svelte-ozghz9:hover {background-color:var(--button-color-ghost-danger-hover-background, rgba(198, 17, 18, 0.1));}.mc-button--ghost.mc-button--danger.svelte-ozghz9:active {background-color:var(--button-color-ghost-danger-active-background, rgba(198, 17, 18, 0.2));}.mc-button--ghost.mc-button--danger.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--inverse.svelte-ozghz9 {color:var(--button-color-ghost-inverse-font, #ffffff);background-color:var(--button-color-ghost-inverse-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--inverse.svelte-ozghz9:hover {background-color:var(--button-color-ghost-inverse-hover-background, rgba(255, 255, 255, 0.1));}.mc-button--ghost.mc-button--inverse.svelte-ozghz9:active {background-color:var(--button-color-ghost-inverse-active-background, rgba(255, 255, 255, 0.2));}.mc-button--ghost.mc-button--inverse.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.hidden.svelte-ozghz9 {visibility:hidden;}`};function Z(w,e){H(e,!0),I(w,Y);let m=n(e,"appearance",7,"standard"),z=n(e,"size",7,"m"),f=n(e,"type",7,"button"),k=n(e,"ghost",7),_=n(e,"outlined",7),p=n(e,"disabled",7),l=n(e,"isloading",7),c=n(e,"iconposition",7),
|
|
4
|
+
.mc-button--loading.svelte-ozghz9 .mc-button__icon:where(.svelte-ozghz9) {visibility:hidden;}.mc-button--outlined.mc-button--standard.svelte-ozghz9 {color:var(--button-color-outlined-standard-font, #242938);border-color:var(--button-color-outlined-standard-border, #8891aa);background-color:var(--button-color-outlined-standard-background, #ffffff);}.mc-button--outlined.mc-button--standard.svelte-ozghz9:hover {background-color:var(--button-color-outlined-standard-hover-background, #eff1f6);}.mc-button--outlined.mc-button--standard.svelte-ozghz9:active {background-color:var(--button-color-outlined-standard-active-background, #c9d0de);}.mc-button--outlined.mc-button--standard.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--outlined.mc-button--accent.svelte-ozghz9 {color:var(--button-color-outlined-accent-font, #117f03);border-color:var(--button-color-outlined-accent-border, #78be20);background-color:var(--button-color-outlined-accent-background, #ffffff);}.mc-button--outlined.mc-button--accent.svelte-ozghz9:hover {background-color:var(--button-color-outlined-accent-hover-background, #ebf5de);}.mc-button--outlined.mc-button--accent.svelte-ozghz9:active {background-color:var(--button-color-outlined-accent-active-background, #c5e39e);}.mc-button--outlined.mc-button--accent.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--outlined.mc-button--danger.svelte-ozghz9 {color:var(--button-color-outlined-danger-font, #c61112);border-color:var(--button-color-outlined-danger-border, #ef5f5c);background-color:var(--button-color-outlined-danger-background, #ffffff);}.mc-button--outlined.mc-button--danger.svelte-ozghz9:hover {background-color:var(--button-color-outlined-danger-hover-background, #fdeaea);}.mc-button--outlined.mc-button--danger.svelte-ozghz9:active {background-color:var(--button-color-outlined-danger-active-background, #f8bcbb);}.mc-button--outlined.mc-button--danger.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--outlined.mc-button--inverse.svelte-ozghz9 {color:var(--button-color-outlined-inverse-font, #ffffff);border-color:var(--button-color-outlined-inverse-border, #ffffff);background-color:var(--button-color-outlined-inverse-background, rgba(255, 255, 255, 0.01));}.mc-button--outlined.mc-button--inverse.svelte-ozghz9:hover {background-color:var(--button-color-outlined-inverse-hover-background, rgba(255, 255, 255, 0.1));}.mc-button--outlined.mc-button--inverse.svelte-ozghz9:active {background-color:var(--button-color-outlined-inverse-active-background, rgba(255, 255, 255, 0.2));}.mc-button--outlined.mc-button--inverse.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--standard.svelte-ozghz9 {color:var(--button-color-ghost-standard-font, #242938);background-color:var(--button-color-ghost-standard-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--standard.svelte-ozghz9:hover {background-color:var(--button-color-ghost-standard-hover-background, rgba(70, 78, 99, 0.1));}.mc-button--ghost.mc-button--standard.svelte-ozghz9:active {background-color:var(--button-color-ghost-standard-active-background, rgba(70, 78, 99, 0.2));}.mc-button--ghost.mc-button--standard.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--accent.svelte-ozghz9 {color:var(--button-color-ghost-accent-font, #117f03);background-color:var(--button-color-ghost-accent-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--accent.svelte-ozghz9:hover {background-color:var(--button-color-ghost-accent-hover-background, rgba(17, 127, 3, 0.1));}.mc-button--ghost.mc-button--accent.svelte-ozghz9:active {background-color:var(--button-color-ghost-accent-active-background, rgba(17, 127, 3, 0.2));}.mc-button--ghost.mc-button--accent.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--danger.svelte-ozghz9 {color:var(--button-color-ghost-danger-font, #c61112);background-color:var(--button-color-ghost-danger-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--danger.svelte-ozghz9:hover {background-color:var(--button-color-ghost-danger-hover-background, rgba(198, 17, 18, 0.1));}.mc-button--ghost.mc-button--danger.svelte-ozghz9:active {background-color:var(--button-color-ghost-danger-active-background, rgba(198, 17, 18, 0.2));}.mc-button--ghost.mc-button--danger.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--ghost.mc-button--inverse.svelte-ozghz9 {color:var(--button-color-ghost-inverse-font, #ffffff);background-color:var(--button-color-ghost-inverse-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.mc-button--inverse.svelte-ozghz9:hover {background-color:var(--button-color-ghost-inverse-hover-background, rgba(255, 255, 255, 0.1));}.mc-button--ghost.mc-button--inverse.svelte-ozghz9:active {background-color:var(--button-color-ghost-inverse-active-background, rgba(255, 255, 255, 0.2));}.mc-button--ghost.mc-button--inverse.svelte-ozghz9:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.hidden.svelte-ozghz9 {visibility:hidden;}`};function Z(w,e){H(e,!0),I(w,Y);let m=n(e,"appearance",7,"standard"),z=n(e,"size",7,"m"),f=n(e,"type",7,"button"),k=n(e,"ghost",7),_=n(e,"outlined",7),p=n(e,"disabled",7),l=n(e,"isloading",7),c=n(e,"iconposition",7),L=J(e,["$$slots","$$events","$$legacy","$$host","appearance","size","type","ghost","outlined","disabled","isloading","iconposition"]);var C={get appearance(){return m()},set appearance(o="standard"){m(o),a()},get size(){return z()},set size(o="m"){z(o),a()},get type(){return f()},set type(o="button"){f(o),a()},get ghost(){return k()},set ghost(o){k(o),a()},get outlined(){return _()},set outlined(o){_(o),a()},get disabled(){return p()},set disabled(o){p(o),a()},get isloading(){return l()},set isloading(o){l(o),a()},get iconposition(){return c()},set iconposition(o){c(o),a()}},g=X();P(g,()=>({class:["mc-button",`mc-button--${z()}`,`mc-button--${m()}`,k()&&"mc-button--ghost",_()&&"mc-button--outlined",l()&&"mc-button--loading",c()==="only"&&"mc-button--icon-only"],disabled:p(),type:f(),...L}),void 0,void 0,void 0,"svelte-ozghz9");var y=d(g);{var D=o=>{var t=R(),r=d(t);h(r,e,"icon",{}),u(t),b(o,t)};i(y,o=>{c()==="left"&&!l()&&o(D)})}var x=v(y,2);{var E=o=>{var t=T(),r=d(t);Q(r,{appearance:"inverse",size:"s"}),u(t),b(o,t)};i(x,o=>{l()&&o(E)})}var j=v(x,2);{var S=o=>{var t=U(),r=d(t);h(r,e,"icon",{}),u(t),b(o,t)};i(j,o=>{c()==="only"&&o(S)})}var B=v(j,2);{var q=o=>{var t=V(),r=d(t);h(r,e,"default",{}),u(t),M(()=>N(t,1,O(["mc-button__label",l()&&"hidden"]),"svelte-ozghz9")),b(o,t)};i(B,o=>{c()!=="only"&&o(q)})}var A=v(B,2);{var F=o=>{var t=W(),r=d(t);h(r,e,"icon",{}),u(t),b(o,t)};i(A,o=>{c()==="right"&&o(F)})}return u(g),b(w,g),K(C)}customElements.define("m-button",G(Z,{appearance:{},size:{},type:{},ghost:{},outlined:{},disabled:{},isloading:{},iconposition:{}},["icon","default"],[],!0));export{Z as B};
|
|
5
5
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../src/components/button/Button.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-button' }} />\n\n<script lang=\"ts\">\n import Loader from '../loader/Loader.svelte';\n /**\n * Buttons are key interactive elements used to perform actions and can be used as standalone element, or as part of another component. Their appearance depends on the type of action required from the user and the context in which they are used.\n *\n * @slot default - The content displayed in the button.\n * @slot icon - Use this slot to insert an icon for the Button.\n */\n interface Props {\n
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../src/components/button/Button.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-button' }} />\n\n<script lang=\"ts\">\n import Loader from '../loader/Loader.svelte';\n /**\n * Buttons are key interactive elements used to perform actions and can be used as standalone element, or as part of another component. Their appearance depends on the type of action required from the user and the context in which they are used.\n *\n * @slot default - The content displayed in the button.\n * @slot icon - Use this slot to insert an icon for the Button.\n */\n interface Props {\n /**\n * Defines the visual style of the button.\n */\n appearance?: 'standard' | 'accent' | 'danger' | 'inverse';\n /**\n * Determines the size of the button.\n */\n size?: 's' | 'm' | 'l';\n /**\n * If `true`, disables the button, making it non-interactive.\n */\n disabled?: boolean;\n /**\n * If `true`, applies a \"ghost\" style to the button, typically a transparent background with a border.\n */\n ghost?: boolean;\n /**\n * If `true`, the button gets an outlined style, usually with just the border and no solid background.\n */\n outlined?: boolean;\n /**\n * Controls the positioning of an icon in the button.\n */\n iconposition?: 'left' | 'right' | 'only';\n /**\n * Specifies the button's HTML `type` attribute.\n */\n type?: 'button' | 'reset' | 'submit';\n /**\n * If `true`, a loading state is displayed.\n */\n isloading?: boolean;\n }\n\n let {\n appearance = 'standard',\n size = 'm',\n type = 'button',\n ghost,\n outlined,\n disabled,\n isloading,\n iconposition,\n ...attrs\n }: Props = $props();\n</script>\n\n<button\n class={[\n 'mc-button',\n `mc-button--${size}`,\n `mc-button--${appearance}`,\n ghost && 'mc-button--ghost',\n outlined && 'mc-button--outlined',\n isloading && 'mc-button--loading',\n iconposition === 'only' && 'mc-button--icon-only',\n ]}\n {disabled}\n {type}\n {...attrs}\n>\n {#if iconposition === 'left' && !isloading}\n <span class=\"mc-button__icon\">\n <slot name=\"icon\" />\n </span>\n {/if}\n\n {#if isloading}\n <span\n class=\"mc-button__icon\"\n style=\"color: currentColor;position: absolute; visibility: visible;\"\n >\n <Loader appearance=\"inverse\" size=\"s\" />\n </span>\n {/if}\n\n {#if iconposition === 'only'}\n <span class=\"mc-button__icon\">\n <slot name=\"icon\" />\n </span>\n {/if}\n\n {#if iconposition !== 'only'}\n <span class={['mc-button__label', isloading && 'hidden']}>\n <slot />\n </span>\n {/if}\n\n {#if iconposition === 'right'}\n <span class=\"mc-button__icon\">\n <slot name=\"icon\" />\n </span>\n {/if}\n</button>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/button';\n\n .hidden {\n visibility: hidden;\n }\n</style>\n"],"names":["appearance","size","type","ghost","$.prop","$$props","outlined","disabled","isloading","iconposition","attrs","$.rest_props","$$render","consequent","consequent_1","consequent_2","consequent_3","consequent_4"],"mappings":";;;o/LAAA,gBA8CI,IAAAA,qBAAa,UAAU,EACvBC,eAAO,GAAG,EACVC,eAAO,QAAQ,EACfC,EAAKC,EAAAC,EAAA,QAAA,CAAA,EACLC,EAAQF,EAAAC,EAAA,WAAA,CAAA,EACRE,EAAQH,EAAAC,EAAA,WAAA,CAAA,EACRG,EAASJ,EAAAC,EAAA,YAAA,CAAA,EACTI,EAAYL,EAAAC,EAAA,eAAA,CAAA,EACTK,EAAAC,EAAAN,EAAA,qLARU,WAAU,6CAChB,IAAG,6CACH,SAAQ,gTAYf,0BACcJ,EAAI,CAAA,iBACJD,EAAU,CAAA,GACxBG,EAAK,GAAI,mBACTG,EAAQ,GAAI,sBACZE,EAAS,GAAI,qBACbC,EAAY,IAAK,QAAU,iDAIzBC,uHAECD,EAAY,IAAK,QAAM,CAAKD,EAAS,GAAAI,EAAAC,CAAA,uGAMrCL,EAAS,GAAAI,EAAAE,CAAA,mFASTL,EAAY,IAAK,QAAMG,EAAAG,CAAA,qFAOZ,mBAAoBP,EAAS,GAAI,QAAQ,CAAA,EAAA,eAAA,CAAA,kBADpDC,EAAY,IAAK,QAAMG,EAAAI,CAAA,mFAMvBP,EAAY,IAAK,SAAOG,EAAAK,CAAA,2BA3C/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,iBAAiB,CAAC;AACzB,OAAO,qEAAqE,CAAC;AAE7E,QAAA,MAAM,IAAI,EAAE,IAoCX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,MAAM,EAAE,KAAU,CAAC;AAEhC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
2
|
import { ifDefined } from 'lit-html/directives/if-defined.js';
|
|
3
3
|
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
4
|
+
import './Button.svelte';
|
|
5
|
+
import '@mozaic-ds/icons-svelte/svelte/ChevronRight24/ChevronRight24.svelte';
|
|
4
6
|
const meta = {
|
|
5
7
|
title: 'Action/Button',
|
|
6
8
|
component: 'm-button',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.svelte.ts"],"names":[],"mappings":"AAKE;;;;;GAKG;AACH,UAAU,KAAK;IACb
|
|
1
|
+
{"version":3,"file":"Button.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.svelte.ts"],"names":[],"mappings":"AAKE;;;;;GAKG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1D;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACzC;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAgEH,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AACD,KAAK,gCAAgC,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,GACvD,CAAC,KAAK,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GACzB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,GAAG,GACH;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAClB,EAAE,CAAC,CAAC;AAId,QAAA,MAAM,MAAM;;;;;;;;UAAqF,CAAC;AAChF,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,eAAe,MAAM,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as
|
|
1
|
+
import{c as C,p as D,a as E,b as d,f as S,r as q,d as t,s as r,t as A,h as B,i as F,j as m,e as l,g as h}from"../../custom-element.js";import{s as u}from"../../slot.js";import{a as G}from"../../attributes.js";var H=S('<section><div class="mc-callout__icon svelte-1pnlv3f"><!></div> <div class="mc-callout__content svelte-1pnlv3f"><h2 class="mc-callout__title svelte-1pnlv3f"> </h2> <p class="mc-callout__message svelte-1pnlv3f"> </p> <!> <div class="mc-callout__footer svelte-1pnlv3f"><!></div></div></section>');const I={hash:"svelte-1pnlv3f",code:`/**
|
|
2
2
|
* Do not edit directly, this file was auto-generated.
|
|
3
|
-
*/.mc-callout.svelte-1pnlv3f {border-radius:var(--border-radius-m, 0.5rem);background:var(--callout-color-background-standard, #eff1f6);display:flex;flex-flow:row wrap;align-items:flex-start;position:relative;box-sizing:border-box;color:var(--callout-color-text, #000000);}.mc-callout__icon.svelte-1pnlv3f {width:2rem;height:2rem;margin:0.75rem;color:currentcolor;}.mc-callout__content.svelte-1pnlv3f {flex:1 1 0;padding:0.75rem 1rem 0.75rem 0;}.mc-callout__title.svelte-1pnlv3f, .mc-callout__message.svelte-1pnlv3f {line-height:var(--line-height-s, 1.3);margin-block:0;}.mc-callout__title.svelte-1pnlv3f {font-weight:var(--font-weight-semi-bold, 600);font-size:var(--font-size-150, 1rem);margin-block-end:0.25rem;}.mc-callout__message.svelte-1pnlv3f {font-size:var(--font-size-100, 0.875rem);}.mc-callout__footer.svelte-1pnlv3f {align-items:flex-start;display:flex;flex-flow:row wrap;gap:0.5rem;margin-top:0.75rem;margin-bottom:0.5rem;}.mc-callout--standard.svelte-1pnlv3f {background:var(--callout-color-background-standard, #eff1f6);}.mc-callout--accent.svelte-1pnlv3f {background:var(--callout-color-background-accent, #ebf5de);}.mc-callout--tips.svelte-1pnlv3f {background:var(--callout-color-background-tips, #ffebaf);}.mc-callout--inverse.svelte-1pnlv3f {background:var(--callout-color-background-inverse, #ffffff);}.mc-callout__footer.svelte-1pnlv3f:empty {display:none;}`};function
|
|
3
|
+
*/.mc-callout.svelte-1pnlv3f {border-radius:var(--border-radius-m, 0.5rem);background:var(--callout-color-background-standard, #eff1f6);display:flex;flex-flow:row wrap;align-items:flex-start;position:relative;box-sizing:border-box;color:var(--callout-color-text, #000000);}.mc-callout__icon.svelte-1pnlv3f {width:2rem;height:2rem;margin:0.75rem;color:currentcolor;}.mc-callout__content.svelte-1pnlv3f {flex:1 1 0;padding:0.75rem 1rem 0.75rem 0;}.mc-callout__title.svelte-1pnlv3f, .mc-callout__message.svelte-1pnlv3f {line-height:var(--line-height-s, 1.3);margin-block:0;}.mc-callout__title.svelte-1pnlv3f {font-weight:var(--font-weight-semi-bold, 600);font-size:var(--font-size-150, 1rem);margin-block-end:0.25rem;}.mc-callout__message.svelte-1pnlv3f {font-size:var(--font-size-100, 0.875rem);}.mc-callout__footer.svelte-1pnlv3f {align-items:flex-start;display:flex;flex-flow:row wrap;gap:0.5rem;margin-top:0.75rem;margin-bottom:0.5rem;}.mc-callout--standard.svelte-1pnlv3f {background:var(--callout-color-background-standard, #eff1f6);}.mc-callout--accent.svelte-1pnlv3f {background:var(--callout-color-background-accent, #ebf5de);}.mc-callout--tips.svelte-1pnlv3f {background:var(--callout-color-background-tips, #ffebaf);}.mc-callout--inverse.svelte-1pnlv3f {background:var(--callout-color-background-inverse, #ffffff);}.mc-callout__footer.svelte-1pnlv3f:empty {display:none;}`};function J(p,e){D(e,!0),E(p,I);let s=d(e,"title",7),c=d(e,"description",7),n=d(e,"appearance",7,"standard"),x=q(e,["$$slots","$$events","$$legacy","$$host","title","description","appearance"]);var k={get title(){return s()},set title(a){s(a),m()},get description(){return c()},set description(a){c(a),m()},get appearance(){return n()},set appearance(a="standard"){n(a),m()}},o=H();G(o,()=>({class:["mc-callout",`mc-callout--${n()}`],role:"status",...x}),void 0,void 0,void 0,"svelte-1pnlv3f");var i=t(o),w=t(i);u(w,e,"icon",{}),l(i);var _=r(i,2),v=t(_),y=t(v,!0);l(v);var f=r(v,2),z=t(f,!0);l(f);var g=r(f,2);u(g,e,"default",{});var b=r(g,2),j=t(b);return u(j,e,"footer",{}),l(b),l(_),l(o),A(()=>{h(y,s()),h(z,c())}),B(p,o),F(k)}customElements.define("m-callout",C(J,{title:{},description:{},appearance:{}},["icon","default","footer"],[],!0));
|
|
4
4
|
//# sourceMappingURL=Callout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Callout.js","sources":["../../../src/components/callout/Callout.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-callout' }} />\n\n<script lang=\"ts\">\n /**\n * A callout is used to highlight additional information that can assist users with tips, extra details, or helpful guidance, without signaling a critical status or alert. Unlike notifications, callouts are not triggered by user actions and do not correspond to specific system states. They are designed to enhance the user experience by providing contextually relevant information that supports comprehension and usability.\n *\n * @slot icon - Use this slot to insert an icon.\n * @slot default - Use this slot to insert custom content.\n * @slot footer - Use this slot to insert a button or a link in the footer of the callout.\n */\n interface Props {\n /**\n * Title of the callout.\n */\n title: string;\n /**\n * Description of the callout.\n */\n description: string;\n /**\n * Allows to define the callout appearance.\n */\n appearance?: 'standard' | 'accent' | 'tips' | 'inverse';\n }\n\n let { title, description, appearance = 'standard' }: Props = $props();\n</script>\n\n<section class={['mc-callout', `mc-callout--${appearance}`]} role=\"status\">\n <div class=\"mc-callout__icon\">\n <slot name=\"icon\" />\n </div>\n <div class=\"mc-callout__content\">\n <h2 class=\"mc-callout__title\">{title}</h2>\n\n <p class=\"mc-callout__message\">\n {description}\n </p>\n\n <slot />\n\n <div class=\"mc-callout__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n</section>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/callout';\n\n .mc-callout__footer:empty {\n display: none;\n }\n</style>\n"],"names":["title","$.prop","$$props","description","appearance","
|
|
1
|
+
{"version":3,"file":"Callout.js","sources":["../../../src/components/callout/Callout.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-callout' }} />\n\n<script lang=\"ts\">\n /**\n * A callout is used to highlight additional information that can assist users with tips, extra details, or helpful guidance, without signaling a critical status or alert. Unlike notifications, callouts are not triggered by user actions and do not correspond to specific system states. They are designed to enhance the user experience by providing contextually relevant information that supports comprehension and usability.\n *\n * @slot icon - Use this slot to insert an icon.\n * @slot default - Use this slot to insert custom content.\n * @slot footer - Use this slot to insert a button or a link in the footer of the callout.\n */\n interface Props {\n /**\n * Title of the callout.\n */\n title: string;\n /**\n * Description of the callout.\n */\n description: string;\n /**\n * Allows to define the callout appearance.\n */\n appearance?: 'standard' | 'accent' | 'tips' | 'inverse';\n }\n\n let { title, description, appearance = 'standard', ...attrs }: Props = $props();\n</script>\n\n<section class={['mc-callout', `mc-callout--${appearance}`]} role=\"status\" {...attrs}>\n <div class=\"mc-callout__icon\">\n <slot name=\"icon\" />\n </div>\n <div class=\"mc-callout__content\">\n <h2 class=\"mc-callout__title\">{title}</h2>\n\n <p class=\"mc-callout__message\">\n {description}\n </p>\n\n <slot />\n\n <div class=\"mc-callout__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n</section>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/callout';\n\n .mc-callout__footer:empty {\n display: none;\n }\n</style>\n"],"names":["title","$.prop","$$props","description","appearance","attrs","$.rest_props"],"mappings":";;s3CAAA,oBAyBQA,EAAKC,EAAAC,EAAA,QAAA,CAAA,EAAEC,EAAWF,EAAAC,EAAA,cAAA,CAAA,EAAEE,qBAAa,UAAU,EAAKC,EAAKC,EAAAJ,EAAA,8OAApB,WAAU,4BAGlC,MAAA,CAAA,4BAA6BE,EAAU,CAAA,EAAA,mBAAuBC,2PAK5CL,GAAK,MAGjCG,GAAW,eAVlB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
-
import '@mozaic-ds/icons-svelte/
|
|
3
|
-
import '@mozaic-ds/icons-svelte/
|
|
2
|
+
import '@mozaic-ds/icons-svelte/svelte/ImageAlt32/ImageAlt32.svelte';
|
|
3
|
+
import '@mozaic-ds/icons-svelte/svelte/ArrowNext20/ArrowNext20.svelte';
|
|
4
|
+
import './Callout.svelte';
|
|
5
|
+
import '../button/Button.svelte';
|
|
6
|
+
import '../link/Link.svelte';
|
|
4
7
|
declare const meta: Meta;
|
|
5
8
|
export default meta;
|
|
6
9
|
type Story = StoryObj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Callout.stories.d.ts","sourceRoot":"","sources":["../../../src/components/callout/Callout.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,
|
|
1
|
+
{"version":3,"file":"Callout.stories.d.ts","sourceRoot":"","sources":["../../../src/components/callout/Callout.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,6DAA6D,CAAC;AACrE,OAAO,+DAA+D,CAAC;AACvE,OAAO,kBAAkB,CAAC;AAC1B,OAAO,yBAAyB,CAAC;AACjC,OAAO,qBAAqB,CAAC;AAE7B,QAAA,MAAM,IAAI,EAAE,IAyBX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,QAAQ,EAAE,KAAU,CAAC;AAElC,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;CAUpB,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
2
|
import { ifDefined } from 'lit-html/directives/if-defined.js';
|
|
3
3
|
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
4
|
-
import '@mozaic-ds/icons-svelte/
|
|
5
|
-
import '@mozaic-ds/icons-svelte/
|
|
4
|
+
import '@mozaic-ds/icons-svelte/svelte/ImageAlt32/ImageAlt32.svelte';
|
|
5
|
+
import '@mozaic-ds/icons-svelte/svelte/ArrowNext20/ArrowNext20.svelte';
|
|
6
|
+
import './Callout.svelte';
|
|
7
|
+
import '../button/Button.svelte';
|
|
8
|
+
import '../link/Link.svelte';
|
|
6
9
|
const meta = {
|
|
7
10
|
title: 'Content/Callout',
|
|
8
11
|
component: 'm-callout',
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
appearance?: 'standard' | 'accent' | 'tips' | 'inverse';
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
let { title, description, appearance = 'standard' }: Props = $props();
|
|
26
|
+
let { title, description, appearance = 'standard', ...attrs }: Props = $props();
|
|
27
27
|
</script>
|
|
28
28
|
|
|
29
|
-
<section class={['mc-callout', `mc-callout--${appearance}`]} role="status">
|
|
29
|
+
<section class={['mc-callout', `mc-callout--${appearance}`]} role="status" {...attrs}>
|
|
30
30
|
<div class="mc-callout__icon">
|
|
31
31
|
<slot name="icon" />
|
|
32
32
|
</div>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{c as w,p as j,b as a,A as P,t as D,h as L,i as A,j as n,l as M,m as O,a as X,u as Y,f as Z,r as $,d as h,s as y,n as u,D as I,x as ee,e as g,y as te}from"../../custom-element.js";import{s as E}from"../../slot.js";import{s as x,b as S,a as se}from"../../attributes.js";import{b as le}from"../../this.js";import{I as k}from"../iconbutton/IconButton.js";import"../../legacy.js";var ie=P('<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20px" height="20px"><path fill-rule="evenodd" d="M11.78 5.303a.75.75 0 0 1 0 1.06L8.144 10l3.636 3.637a.75.75 0 0 1-1.06 1.06l-4.167-4.166a.75.75 0 0 1 0-1.061l4.166-4.167a.75.75 0 0 1 1.061 0"></path></svg>');function F(f,t){j(t,!1);let o=a(t,"id",12,void 0),d=a(t,"style",12,void 0),c=a(t,"className",12,void 0),l=a(t,"fill",12,void 0),r=a(t,"size",12,"1.25rem");var v={get id(){return o()},set id(e){o(e),n()},get style(){return d()},set style(e){d(e),n()},get className(){return c()},set className(e){c(e),n()},get fill(){return l()},set fill(e){l(e),n()},get size(){return r()},set size(e){r(e),n()}},i=ie();return D(()=>{x(i,"id",o()),S(i,d()),M(i,0,O(c())),x(i,"fill",l())}),L(f,i),A(v)}customElements.define("chevron-left-20",w(F,{id:{},style:{},className:{},fill:{},size:{}},[],[],!1));var re=P('<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20px" height="20px"><path fill-rule="evenodd" d="M8.22 5.303a.75.75 0 0 1 1.06 0l4.167 4.167a.75.75 0 0 1 0 1.06L9.28 14.698a.75.75 0 1 1-1.06-1.06L11.856 10 8.22 6.364a.75.75 0 0 1 0-1.06"></path></svg>');function R(f,t){j(t,!1);let o=a(t,"id",12,void 0),d=a(t,"style",12,void 0),c=a(t,"className",12,void 0),l=a(t,"fill",12,void 0),r=a(t,"size",12,"1.25rem");var v={get id(){return o()},set id(e){o(e),n()},get style(){return d()},set style(e){d(e),n()},get className(){return c()},set className(e){c(e),n()},get fill(){return l()},set fill(e){l(e),n()},get size(){return r()},set size(e){r(e),n()}},i=re();return D(()=>{x(i,"id",o()),S(i,d()),M(i,0,O(c())),x(i,"fill",l())}),L(f,i),A(v)}customElements.define("chevron-right-20",w(R,{id:{},style:{},className:{},fill:{},size:{}},[],[],!1));var ae=Z('<div><div class="mc-carousel__header svelte-10qqjzd"><div class="mc-carousel__headings svelte-10qqjzd"><!></div> <div class="mc-carousel__controls svelte-10qqjzd"><!> <!></div></div> <div class="mc-carousel__content svelte-10qqjzd"><!></div></div>');const ne={hash:"svelte-10qqjzd",code:`/**
|
|
2
|
+
* Do not edit directly, this file was auto-generated.
|
|
3
|
+
*/.mt-title.svelte-10qqjzd {font-weight:var(--font-accent, 600);}.mt-title--l.svelte-10qqjzd {font-size:var(--font-title-l, 1.75rem);line-height:calc(var(--font-title-l, 1.75rem) * var(--line-height-s, 1.3));}.mt-title--m.svelte-10qqjzd {font-size:var(--font-title-m, 1.5rem);line-height:calc(var(--font-title-m, 1.5rem) * var(--line-height-s, 1.3));}.mt-title--s.svelte-10qqjzd {font-size:var(--font-title-s, 1.125rem);line-height:calc(var(--font-title-s, 1.125rem) * var(--line-height-s, 1.3));}.mc-carousel.svelte-10qqjzd {display:flex;flex-direction:column;row-gap:1rem;}.mc-carousel__header.svelte-10qqjzd {display:flex;align-items:flex-start;}.mc-carousel__headings.svelte-10qqjzd {display:flex;flex-direction:column;row-gap:0.25rem;flex:1;align-items:flex-start;}.mc-carousel__controls.svelte-10qqjzd {display:flex;column-gap:0.5rem;}.mc-carousel__content.svelte-10qqjzd {display:flex;overflow-x:auto;scroll-snap-type:x mandatory;}.mc-carousel__content.svelte-10qqjzd > :where(.svelte-10qqjzd) {scroll-snap-align:start;}::slotted(*) {scroll-snap-align:start;}::slotted(.mc-carousel__title) {margin:0;}::slotted(.mc-carousel__sub-title) {margin:0;}`};function oe(f,t){j(t,!0),X(f,ne);let o=a(t,"previousButtonAriaLabel",7,"previous"),d=a(t,"nextButtonAriaLabel",7,"next"),c=$(t,["$$slots","$$events","$$legacy","$$host","previousButtonAriaLabel","nextButtonAriaLabel"]),l=ee(0),r=null,v=null;const i={behavior:"smooth",block:"nearest",inline:"center"};function e(){if(!r)return[];const s=r.querySelector("slot");return s?s.assignedElements({flatten:!0}):[]}function B(s){e()[s]?.scrollIntoView(i)}function T(){u(l)>0&&B(u(l)-1)}function V(){const s=e();u(l)<s.length-1&&B(u(l)+1)}Y(()=>{if(r)return v=new IntersectionObserver(s=>{const m=s.find(p=>p.isIntersecting);if(m){const p=e();te(l,p.findIndex(W=>W===m.target),!0)}},{root:r,threshold:.9}),e().forEach(s=>v.observe(s)),()=>v?.disconnect()});const G=I(()=>u(l)===0),H=I(()=>u(l)===e().length-1);var J={get previousButtonAriaLabel(){return o()},set previousButtonAriaLabel(s="previous"){o(s),n()},get nextButtonAriaLabel(){return d()},set nextButtonAriaLabel(s="next"){d(s),n()}},_=ae();se(_,()=>({class:"mc-carousel",role:"group","aria-roledescription":"carousel","aria-labelledby":"mc-carousel__title",...c}),void 0,void 0,void 0,"svelte-10qqjzd");var q=h(_),z=h(q),K=h(z);E(K,t,"header",{}),g(z);var N=y(z,2),C=h(N);k(C,{size:"s",outlined:!0,onclick:T,get disabled(){return u(G)},get"aria-label"(){return o()},$$slots:{icon:(s,m)=>{F(s,{slot:"icon"})}}});var Q=y(C,2);k(Q,{size:"s",outlined:!0,onclick:V,get disabled(){return u(H)},get"aria-label"(){return d()},$$slots:{icon:(s,m)=>{R(s,{slot:"icon"})}}}),g(N),g(q);var b=y(q,2),U=h(b);return E(U,t,"default",{}),g(b),le(b,s=>r=s,()=>r),g(_),L(f,_),A(J)}customElements.define("m-carousel",w(oe,{previousButtonAriaLabel:{},nextButtonAriaLabel:{}},["header","default"],[],!0));
|
|
4
|
+
//# sourceMappingURL=Carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Carousel.js","sources":["../../../node_modules/@mozaic-ds/icons-svelte/dist/components/ChevronLeft20/ChevronLeft20.svelte","../../../node_modules/@mozaic-ds/icons-svelte/dist/components/ChevronRight20/ChevronRight20.svelte","../../../src/components/carousel/Carousel.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'chevron-left-20', shadow: 'none' }} />\n<script>\n export let id = undefined;\n export let style = undefined;\n export let className = undefined;\n export let fill = undefined;\n export let size = \"1.25rem\";\n</script>\n\n<svg aria-hidden=\"true\" id={id} style={style} class={className} fill={fill} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" width=\"20px\" height=\"20px\"><path fill-rule=\"evenodd\" d=\"M11.78 5.303a.75.75 0 0 1 0 1.06L8.144 10l3.636 3.637a.75.75 0 0 1-1.06 1.06l-4.167-4.166a.75.75 0 0 1 0-1.061l4.166-4.167a.75.75 0 0 1 1.061 0\"/></svg>","<svelte:options customElement={{ tag: 'chevron-right-20', shadow: 'none' }} />\n<script>\n export let id = undefined;\n export let style = undefined;\n export let className = undefined;\n export let fill = undefined;\n export let size = \"1.25rem\";\n</script>\n\n<svg aria-hidden=\"true\" id={id} style={style} class={className} fill={fill} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" width=\"20px\" height=\"20px\"><path fill-rule=\"evenodd\" d=\"M8.22 5.303a.75.75 0 0 1 1.06 0l4.167 4.167a.75.75 0 0 1 0 1.06L9.28 14.698a.75.75 0 1 1-1.06-1.06L11.856 10 8.22 6.364a.75.75 0 0 1 0-1.06\"/></svg>","<svelte:options customElement={{ tag: 'm-carousel' }} />\n\n<script lang=\"ts\">\n import IconButton from '../iconbutton/IconButton.svelte';\n import ChevronLeft20 from '@mozaic-ds/icons-svelte/svelte/ChevronLeft20/ChevronLeft20.svelte';\n import ChevronRight20 from '@mozaic-ds/icons-svelte/svelte/ChevronRight20/ChevronRight20.svelte';\n /**\n * A Carousel allows users to browse through multiple items within a horizontal container, using swipe gestures on mobile or navigation controls on desktop. It is primarily used to showcase products, promotions, or visual content, offering an engaging way to explore information in a condensed and interactive format. Carousels help optimize space while keeping content visually appealing and easily accessible.\n *\n * @slot default - Use this slot to insert a list of components to be displayed in the carousel.\n * @slot header - Use this slot to insert the title, subtitle or link of the carousel.\n */\n interface Props {\n /**\n * Aria label for the previous button.\n */\n previousButtonAriaLabel?: string;\n /**\n * Aria label for the next button.\n */\n nextButtonAriaLabel?: string;\n }\n\n let {\n previousButtonAriaLabel = 'previous',\n nextButtonAriaLabel = 'next',\n ...attrs\n }: Props = $props();\n\n // State\n let activeIndex = $state(0);\n let contentContainer: HTMLElement | null = null;\n\n let observer: IntersectionObserver | null = null;\n\n const scrollOptions: ScrollIntoViewOptions = {\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center',\n };\n\n function getCarouselChildren(): HTMLElement[] {\n if (!contentContainer) return [];\n\n const slot = contentContainer.querySelector('slot') as HTMLSlotElement;\n return slot ? (slot.assignedElements({ flatten: true }) as HTMLElement[]) : [];\n }\n\n function scrollToChild(index: number) {\n const children = getCarouselChildren();\n children[index]?.scrollIntoView(scrollOptions);\n }\n\n function goPrevious() {\n if (activeIndex > 0) scrollToChild(activeIndex - 1);\n }\n\n function goNext() {\n const children = getCarouselChildren();\n if (activeIndex < children.length - 1) scrollToChild(activeIndex + 1);\n }\n\n $effect(() => {\n if (!contentContainer) return;\n\n observer = new IntersectionObserver(\n (entries) => {\n const entry = entries.find((e) => e.isIntersecting);\n if (entry) {\n const children = getCarouselChildren();\n activeIndex = children.findIndex((el) => el === entry.target);\n }\n },\n {\n root: contentContainer,\n threshold: 0.9,\n },\n );\n\n getCarouselChildren().forEach((el) => observer!.observe(el));\n\n return () => observer?.disconnect();\n });\n\n const isFirstChildActive = $derived(activeIndex === 0);\n const isLastChildActive = $derived(activeIndex === getCarouselChildren().length - 1);\n</script>\n\n<div\n class=\"mc-carousel\"\n role=\"group\"\n aria-roledescription=\"carousel\"\n aria-labelledby=\"mc-carousel__title\"\n {...attrs}\n>\n <div class=\"mc-carousel__header\">\n <div class=\"mc-carousel__headings\">\n <slot name=\"header\" />\n </div>\n\n <div class=\"mc-carousel__controls\">\n <IconButton\n size=\"s\"\n outlined\n onclick={goPrevious}\n disabled={isFirstChildActive}\n aria-label={previousButtonAriaLabel}\n >\n <ChevronLeft20 slot=\"icon\" />\n </IconButton>\n\n <IconButton\n size=\"s\"\n outlined\n onclick={goNext}\n disabled={isLastChildActive}\n aria-label={nextButtonAriaLabel}\n >\n <ChevronRight20 slot=\"icon\" />\n </IconButton>\n </div>\n </div>\n\n <div class=\"mc-carousel__content\" bind:this={contentContainer}>\n <slot />\n </div>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/carousel';\n\n :global(::slotted(*)) {\n scroll-snap-align: start;\n }\n\n :global(::slotted(.mc-carousel__title)) {\n margin: 0;\n }\n\n :global(::slotted(.mc-carousel__sub-title)) {\n margin: 0;\n }\n</style>\n"],"names":["id","style","className","fill","size","previousButtonAriaLabel","nextButtonAriaLabel","attrs","$.rest_props","$$props","activeIndex","contentContainer","observer","scrollOptions","getCarouselChildren","slot","scrollToChild","index","goPrevious","$.get","goNext","children","$.user_effect","entries","entry","e","el","isFirstChildActive","$.derived","isLastChildActive","$.bind_this","div_4","$$value"],"mappings":"+rBAAA,SAEa,IAAAA,cAAK,MAAS,EACdC,iBAAQ,MAAS,EACjBC,qBAAY,MAAS,EACrBC,gBAAO,MAAS,EAChBC,gBAAO,SAAS,iRAGDJ,GAAE,MAAUC,GAAK,UAASC,EAAS,CAAA,CAAA,aAAQC,GAAI,eAF3E,maCPA,SAEa,IAAAH,cAAK,MAAS,EACdC,iBAAQ,MAAS,EACjBC,qBAAY,MAAS,EACrBC,gBAAO,MAAS,EAChBC,gBAAO,SAAS,iRAGDJ,GAAE,MAAUC,GAAK,UAASC,EAAS,CAAA,CAAA,aAAQC,GAAI,eAF3E;;spCCPA,iBAwBI,IAAAE,kCAA0B,UAAU,EACpCC,8BAAsB,MAAM,EACzBC,EAAAC,EAAAC,EAAA,4FAIDC,KAAqB,CAAC,EACtBC,EAAuC,KAEvCC,EAAwC,WAEtCC,EAAoC,CACxC,SAAU,SACV,MAAO,UACP,OAAQ,QAAQ,EAGT,SAAAC,GAAqC,KACvCH,EAAgB,MAAA,CAAA,EAEf,MAAAI,EAAOJ,EAAiB,cAAc,MAAM,EAC3C,OAAAI,EAAQA,EAAK,iBAAgB,CAAG,QAAS,EAAI,CAAA,EAAA,CAAA,CACtD,UAESC,EAAcC,EAAe,CACnBH,EAAmB,EAC3BG,CAAK,GAAG,eAAeJ,CAAa,CAC/C,CAES,SAAAK,GAAa,CAChBC,EAAAT,CAAW,EAAG,GAAGM,EAAaG,EAACT,CAAW,EAAG,CAAC,CACpD,CAES,SAAAU,GAAS,CACV,MAAAC,EAAWP,EAAmB,IAChCJ,CAAW,EAAGW,EAAS,OAAS,GAAGL,EAAaG,EAACT,CAAW,EAAG,CAAC,CACtE,CAEAY,EAAO,IAAO,IACPX,EAEL,OAAAC,MAAe,qBACZW,GAAY,OACLC,EAAQD,EAAQ,KAAME,GAAMA,EAAE,cAAc,EAC9C,GAAAD,EAAO,CACH,MAAAH,EAAWP,EAAmB,KACpCJ,EAAcW,EAAS,UAAWK,GAAOA,IAAOF,EAAM,MAAM,EAAA,EAAA,CAC9D,CACF,EAEE,CAAA,KAAMb,EACN,UAAW,EAAG,GAIlBG,EAAmB,EAAG,QAASY,GAAOd,EAAU,QAAQc,CAAE,CAAA,EAE7C,IAAAd,GAAU,WAAU,CACnC,CAAC,QAEKe,EAAkBC,EAAA,IAAAT,EAAYT,CAAW,IAAK,CAAC,EAC/CmB,UAA6BnB,CAAW,IAAKI,EAAmB,EAAG,OAAS,CAAC,iFA7DvD,WAAU,2EACd,OAAM,2IAoE1BP,kJAWWW,0BACCS,CAAkB,4BAChBtB,EAAuB,+FAQ1Be,0BACCS,CAAiB,4BACfvB,EAAmB,8GAOQwB,GAAAC,EAAAC,GAAArB,QAAAA,CAAgB,kBArC/D","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
+
import { render } from '@testing-library/svelte';
|
|
3
|
+
import Carousel from './Carousel.svelte';
|
|
4
|
+
HTMLElement.prototype.scrollIntoView = vi.fn();
|
|
5
|
+
class MockIntersectionObserver {
|
|
6
|
+
cb;
|
|
7
|
+
constructor(cb) {
|
|
8
|
+
this.cb = cb;
|
|
9
|
+
}
|
|
10
|
+
observe() { }
|
|
11
|
+
disconnect() { }
|
|
12
|
+
}
|
|
13
|
+
vi.stubGlobal('IntersectionObserver', MockIntersectionObserver);
|
|
14
|
+
describe('m-carousel component', () => {
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
vi.clearAllMocks();
|
|
17
|
+
});
|
|
18
|
+
it('sets accessibility attributes on root container', () => {
|
|
19
|
+
const { container } = render(Carousel);
|
|
20
|
+
const root = container.querySelector('.mc-carousel');
|
|
21
|
+
expect(root.getAttribute('role')).toBe('group');
|
|
22
|
+
expect(root.getAttribute('aria-roledescription')).toBe('carousel');
|
|
23
|
+
expect(root.getAttribute('aria-labelledby')).toBe('mc-carousel__title');
|
|
24
|
+
});
|
|
25
|
+
it('disables previous button when first item is active', () => {
|
|
26
|
+
const { getByLabelText } = render(Carousel, {
|
|
27
|
+
slots: {
|
|
28
|
+
default: `
|
|
29
|
+
<div>Item 1</div>
|
|
30
|
+
<div>Item 2</div>
|
|
31
|
+
`,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const prevButton = getByLabelText('previous');
|
|
35
|
+
expect(prevButton.disabled).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
it('enables next button when not at last item', () => {
|
|
38
|
+
const { getByLabelText } = render(Carousel, {
|
|
39
|
+
slots: {
|
|
40
|
+
default: `
|
|
41
|
+
<div>Item 1</div>
|
|
42
|
+
<div>Item 2</div>
|
|
43
|
+
`,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
const nextButton = getByLabelText('next');
|
|
47
|
+
expect(nextButton.disabled).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
+
import './Carousel.svelte';
|
|
3
|
+
declare const meta: Meta;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const Subtitle: Story;
|
|
8
|
+
export declare const Link: Story;
|
|
9
|
+
//# sourceMappingURL=Carousel.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Carousel.stories.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/Carousel.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,mBAAmB,CAAC;AAE3B,QAAA,MAAM,IAAI,EAAE,IA6CX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAWlB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import { ifDefined } from 'lit-html/directives/if-defined.js';
|
|
3
|
+
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
4
|
+
import './Carousel.svelte';
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Content/Carousel',
|
|
7
|
+
component: 'm-carousel',
|
|
8
|
+
argTypes: {
|
|
9
|
+
'aria-labelledby': {
|
|
10
|
+
table: {
|
|
11
|
+
disable: true,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
args: {
|
|
16
|
+
'aria-labelledby': 'defaultCarousel',
|
|
17
|
+
header: '<h2 class="mc-carousel__title mt-title--m" id="defaultCarousel" slot="header">Title of the carousel</h2>',
|
|
18
|
+
default: `
|
|
19
|
+
<div class="free-content" style="padding: 16px;" aria-labelledby="free-content__1">
|
|
20
|
+
<img class="free-content__image"
|
|
21
|
+
src="https://picsum.photos/id/1/600/300" alt="card 1">
|
|
22
|
+
<div id="free-content__1" class="free-content__title">my card1</div>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="free-content" style="padding: 16px;" aria-labelledby="free-content__2">
|
|
25
|
+
<img class="free-content__image"
|
|
26
|
+
src="https://picsum.photos/id/12/600/300" alt="card 2">
|
|
27
|
+
<div id="free-content__2" class="free-content__title">my card2</div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="free-content" style="padding: 16px;" aria-labelledby="free-content__3">
|
|
30
|
+
<img class="free-content__image"
|
|
31
|
+
src="https://picsum.photos/id/23/600/300" alt="card 3">
|
|
32
|
+
<div id="free-content__3" class="free-content__title">my card3</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="free-content" style="padding: 16px;" aria-labelledby="free-content__4">
|
|
35
|
+
<img class="free-content__image"
|
|
36
|
+
src="https://picsum.photos/id/34/600/300" alt="card 4">
|
|
37
|
+
<div id="free-content__4" class="free-content__title">my card4</div>
|
|
38
|
+
</div>
|
|
39
|
+
`,
|
|
40
|
+
},
|
|
41
|
+
render: (args) => html `
|
|
42
|
+
<m-carousel
|
|
43
|
+
previousButtonAriaLabel=${ifDefined(args.previousButtonAriaLabel)}
|
|
44
|
+
nextButtonAriaLabel=${ifDefined(args.nextButtonAriaLabel)}
|
|
45
|
+
>
|
|
46
|
+
${unsafeHTML(ifDefined(args.header))} ${unsafeHTML(ifDefined(args.default))}
|
|
47
|
+
</m-carousel>
|
|
48
|
+
`,
|
|
49
|
+
};
|
|
50
|
+
export default meta;
|
|
51
|
+
export const Default = {};
|
|
52
|
+
export const Subtitle = {
|
|
53
|
+
args: {
|
|
54
|
+
'aria-labelledby': 'subtitleCarousel',
|
|
55
|
+
header: `
|
|
56
|
+
<h2 class="mc-carousel__title mt-title--m" id="subtitleCarousel" slot="header">Title of the carousel</h2>
|
|
57
|
+
<p class="mc-carousel__sub-title mt-body-m" slot="header">Longer description of the carousel</p>
|
|
58
|
+
`,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
export const Link = {
|
|
62
|
+
args: {
|
|
63
|
+
'aria-labelledby': 'linkCarousel',
|
|
64
|
+
header: `
|
|
65
|
+
<h2 class="mc-carousel__title mt-title--m" id="linkCarousel" slot="header">Title of the carousel</h2>
|
|
66
|
+
<m-link href="#" iconposition="right" slot="header">
|
|
67
|
+
Stand-alone link
|
|
68
|
+
<ArrowNext24 slot="icon"/>
|
|
69
|
+
</m-link>
|
|
70
|
+
`,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
<svelte:options customElement={{ tag: 'm-carousel' }} />
|
|
2
|
+
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import IconButton from '../iconbutton/IconButton.svelte';
|
|
5
|
+
import ChevronLeft20 from '@mozaic-ds/icons-svelte/svelte/ChevronLeft20/ChevronLeft20.svelte';
|
|
6
|
+
import ChevronRight20 from '@mozaic-ds/icons-svelte/svelte/ChevronRight20/ChevronRight20.svelte';
|
|
7
|
+
/**
|
|
8
|
+
* A Carousel allows users to browse through multiple items within a horizontal container, using swipe gestures on mobile or navigation controls on desktop. It is primarily used to showcase products, promotions, or visual content, offering an engaging way to explore information in a condensed and interactive format. Carousels help optimize space while keeping content visually appealing and easily accessible.
|
|
9
|
+
*
|
|
10
|
+
* @slot default - Use this slot to insert a list of components to be displayed in the carousel.
|
|
11
|
+
* @slot header - Use this slot to insert the title, subtitle or link of the carousel.
|
|
12
|
+
*/
|
|
13
|
+
interface Props {
|
|
14
|
+
/**
|
|
15
|
+
* Aria label for the previous button.
|
|
16
|
+
*/
|
|
17
|
+
previousButtonAriaLabel?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Aria label for the next button.
|
|
20
|
+
*/
|
|
21
|
+
nextButtonAriaLabel?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let {
|
|
25
|
+
previousButtonAriaLabel = 'previous',
|
|
26
|
+
nextButtonAriaLabel = 'next',
|
|
27
|
+
...attrs
|
|
28
|
+
}: Props = $props();
|
|
29
|
+
|
|
30
|
+
// State
|
|
31
|
+
let activeIndex = $state(0);
|
|
32
|
+
let contentContainer: HTMLElement | null = null;
|
|
33
|
+
|
|
34
|
+
let observer: IntersectionObserver | null = null;
|
|
35
|
+
|
|
36
|
+
const scrollOptions: ScrollIntoViewOptions = {
|
|
37
|
+
behavior: 'smooth',
|
|
38
|
+
block: 'nearest',
|
|
39
|
+
inline: 'center',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
function getCarouselChildren(): HTMLElement[] {
|
|
43
|
+
if (!contentContainer) return [];
|
|
44
|
+
|
|
45
|
+
const slot = contentContainer.querySelector('slot') as HTMLSlotElement;
|
|
46
|
+
return slot ? (slot.assignedElements({ flatten: true }) as HTMLElement[]) : [];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function scrollToChild(index: number) {
|
|
50
|
+
const children = getCarouselChildren();
|
|
51
|
+
children[index]?.scrollIntoView(scrollOptions);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function goPrevious() {
|
|
55
|
+
if (activeIndex > 0) scrollToChild(activeIndex - 1);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function goNext() {
|
|
59
|
+
const children = getCarouselChildren();
|
|
60
|
+
if (activeIndex < children.length - 1) scrollToChild(activeIndex + 1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
$effect(() => {
|
|
64
|
+
if (!contentContainer) return;
|
|
65
|
+
|
|
66
|
+
observer = new IntersectionObserver(
|
|
67
|
+
(entries) => {
|
|
68
|
+
const entry = entries.find((e) => e.isIntersecting);
|
|
69
|
+
if (entry) {
|
|
70
|
+
const children = getCarouselChildren();
|
|
71
|
+
activeIndex = children.findIndex((el) => el === entry.target);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
root: contentContainer,
|
|
76
|
+
threshold: 0.9,
|
|
77
|
+
},
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
getCarouselChildren().forEach((el) => observer!.observe(el));
|
|
81
|
+
|
|
82
|
+
return () => observer?.disconnect();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const isFirstChildActive = $derived(activeIndex === 0);
|
|
86
|
+
const isLastChildActive = $derived(activeIndex === getCarouselChildren().length - 1);
|
|
87
|
+
</script>
|
|
88
|
+
|
|
89
|
+
<div
|
|
90
|
+
class="mc-carousel"
|
|
91
|
+
role="group"
|
|
92
|
+
aria-roledescription="carousel"
|
|
93
|
+
aria-labelledby="mc-carousel__title"
|
|
94
|
+
{...attrs}
|
|
95
|
+
>
|
|
96
|
+
<div class="mc-carousel__header">
|
|
97
|
+
<div class="mc-carousel__headings">
|
|
98
|
+
<slot name="header" />
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<div class="mc-carousel__controls">
|
|
102
|
+
<IconButton
|
|
103
|
+
size="s"
|
|
104
|
+
outlined
|
|
105
|
+
onclick={goPrevious}
|
|
106
|
+
disabled={isFirstChildActive}
|
|
107
|
+
aria-label={previousButtonAriaLabel}
|
|
108
|
+
>
|
|
109
|
+
<ChevronLeft20 slot="icon" />
|
|
110
|
+
</IconButton>
|
|
111
|
+
|
|
112
|
+
<IconButton
|
|
113
|
+
size="s"
|
|
114
|
+
outlined
|
|
115
|
+
onclick={goNext}
|
|
116
|
+
disabled={isLastChildActive}
|
|
117
|
+
aria-label={nextButtonAriaLabel}
|
|
118
|
+
>
|
|
119
|
+
<ChevronRight20 slot="icon" />
|
|
120
|
+
</IconButton>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div class="mc-carousel__content" bind:this={contentContainer}>
|
|
125
|
+
<slot />
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<style>/**
|
|
130
|
+
* Do not edit directly, this file was auto-generated.
|
|
131
|
+
*/
|
|
132
|
+
.mt-title {
|
|
133
|
+
font-weight: var(--font-accent, 600);
|
|
134
|
+
}
|
|
135
|
+
.mt-title--l {
|
|
136
|
+
font-size: var(--font-title-l, 1.75rem);
|
|
137
|
+
line-height: calc(var(--font-title-l, 1.75rem) * var(--line-height-s, 1.3));
|
|
138
|
+
}
|
|
139
|
+
.mt-title--m {
|
|
140
|
+
font-size: var(--font-title-m, 1.5rem);
|
|
141
|
+
line-height: calc(var(--font-title-m, 1.5rem) * var(--line-height-s, 1.3));
|
|
142
|
+
}
|
|
143
|
+
.mt-title--s {
|
|
144
|
+
font-size: var(--font-title-s, 1.125rem);
|
|
145
|
+
line-height: calc(var(--font-title-s, 1.125rem) * var(--line-height-s, 1.3));
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.mc-carousel {
|
|
149
|
+
display: flex;
|
|
150
|
+
flex-direction: column;
|
|
151
|
+
row-gap: 1rem;
|
|
152
|
+
}
|
|
153
|
+
.mc-carousel__header {
|
|
154
|
+
display: flex;
|
|
155
|
+
align-items: flex-start;
|
|
156
|
+
}
|
|
157
|
+
.mc-carousel__headings {
|
|
158
|
+
display: flex;
|
|
159
|
+
flex-direction: column;
|
|
160
|
+
row-gap: 0.25rem;
|
|
161
|
+
flex: 1;
|
|
162
|
+
align-items: flex-start;
|
|
163
|
+
}
|
|
164
|
+
.mc-carousel__controls {
|
|
165
|
+
display: flex;
|
|
166
|
+
column-gap: 0.5rem;
|
|
167
|
+
}
|
|
168
|
+
.mc-carousel__content {
|
|
169
|
+
display: flex;
|
|
170
|
+
overflow-x: auto;
|
|
171
|
+
scroll-snap-type: x mandatory;
|
|
172
|
+
}
|
|
173
|
+
.mc-carousel__content > * {
|
|
174
|
+
scroll-snap-align: start;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
:global(::slotted(*)) {
|
|
178
|
+
scroll-snap-align: start;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
:global(::slotted(.mc-carousel__title)) {
|
|
182
|
+
margin: 0;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
:global(::slotted(.mc-carousel__sub-title)) {
|
|
186
|
+
margin: 0;
|
|
187
|
+
}</style>
|