diff --git a/custom-elements-manifest.config.js b/custom-elements-manifest.config.js index d3d1379fd..865579760 100644 --- a/custom-elements-manifest.config.js +++ b/custom-elements-manifest.config.js @@ -53,8 +53,10 @@ export default { return; } - const tagName = 'sl-' + path.basename(importPath, '.component.ts'); + const tagNameWithoutPrefix = path.basename(importPath, '.component.ts'); + const tagName = 'sl-' + tagNameWithoutPrefix; + classDoc.tagNameWithoutPrefix = tagNameWithoutPrefix; classDoc.tagName = tagName; // This used to be set to true by @customElement diff --git a/docs/_includes/component.njk b/docs/_includes/component.njk index 7160d6a70..f340c93fc 100644 --- a/docs/_includes/component.njk +++ b/docs/_includes/component.njk @@ -84,7 +84,7 @@

To import this component as a React component:

-
import { {{ component.name }} } from '@shoelace-style/shoelace/{{ meta.npmdir }}/react';
+
import {{ component.name }} from '@shoelace-style/shoelace/{{ meta.npmdir }}/react/{{ component.tagNameWithoutPrefix }}';
diff --git a/docs/pages/components/alert.md b/docs/pages/components/alert.md index eb9ba05fb..3c93dcebf 100644 --- a/docs/pages/components/alert.md +++ b/docs/pages/components/alert.md @@ -13,7 +13,8 @@ layout: component ``` ```jsx:react -import { SlAlert, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAlert from '@shoelace-style/shoelace/dist/react/sl-alert'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( @@ -74,7 +75,8 @@ Set the `variant` attribute to change the alert's variant. ``` ```jsx:react -import { SlAlert, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAlert from '@shoelace-style/shoelace/dist/react/sl-alert'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( <> @@ -144,7 +146,8 @@ Add the `closable` attribute to show a close button that will hide the alert. ```jsx:react import { useState } from 'react'; -import { SlAlert, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAlert from '@shoelace-style/shoelace/dist/react/sl-alert'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => { const [open, setOpen] = useState(true); @@ -172,7 +175,7 @@ Icons are optional. Simply omit the `icon` slot if you don't want them. ``` ```jsx:react -import { SlAlert } from '@shoelace-style/shoelace/dist/react'; +import SlAlert from '@shoelace-style/shoelace/dist/react/sl-alert'; const App = () => ( @@ -212,7 +215,9 @@ Set the `duration` attribute to automatically hide an alert after a period of ti ```jsx:react import { useState } from 'react'; -import { SlAlert, SlButton, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAlert from '@shoelace-style/shoelace/dist/react/sl-alert'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const css = ` .alert-duration sl-alert { @@ -301,7 +306,9 @@ You should always use the `closable` attribute so users can dismiss the notifica ```jsx:react import { useRef } from 'react'; -import { SlAlert, SlButton, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAlert from '@shoelace-style/shoelace/dist/react/sl-alert'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; function showToast(alert) { alert.toast(); diff --git a/docs/pages/components/animated-image.md b/docs/pages/components/animated-image.md index 67b07b197..242352be1 100644 --- a/docs/pages/components/animated-image.md +++ b/docs/pages/components/animated-image.md @@ -13,7 +13,7 @@ layout: component ``` ```jsx:react -import { SlAnimatedImage } from '@shoelace-style/shoelace/dist/react'; +import SlAnimatedImage from '@shoelace-style/shoelace/dist/react/sl-animated-image'; const App = () => ( ( @@ -64,7 +64,7 @@ To set a custom size, apply a width and/or height to the host element. {% raw %} ```jsx:react -import { SlAnimatedImage } from '@shoelace-style/shoelace/dist/react'; +import SlAnimatedImage from '@shoelace-style/shoelace/dist/react/sl-animated-image'; const App = () => ( ` and set an animation `name`. ``` ```jsx:react -import { SlAnimation } from '@shoelace-style/shoelace/dist/react'; +import SlAnimation from '@shoelace-style/shoelace/dist/react/sl-animation'; const css = ` .animation-overview .box { @@ -173,7 +173,7 @@ Use an [Intersection Observer](https://developer.mozilla.org/en-US/docs/Web/API/ ```jsx:react import { useEffect, useRef, useState } from 'react'; -import { SlAnimation } from '@shoelace-style/shoelace/dist/react'; +import SlAnimation from '@shoelace-style/shoelace/dist/react/sl-animation'; const css = ` .animation-scroll { @@ -262,7 +262,7 @@ Supply your own [keyframe formats](https://developer.mozilla.org/en-US/docs/Web/ ``` ```jsx:react -import { SlAnimation } from '@shoelace-style/shoelace/dist/react'; +import SlAnimation from '@shoelace-style/shoelace/dist/react/sl-animation'; const css = ` .animation-keyframes .box { @@ -329,7 +329,8 @@ Animations won't play until you apply the `play` attribute. You can omit it init ```jsx:react import { useState } from 'react'; -import { SlAnimation, SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlAnimation from '@shoelace-style/shoelace/dist/react/sl-animation'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => { const [play, setPlay] = useState(false); diff --git a/docs/pages/components/avatar.md b/docs/pages/components/avatar.md index 80df7c2f5..9392f672c 100644 --- a/docs/pages/components/avatar.md +++ b/docs/pages/components/avatar.md @@ -12,7 +12,7 @@ By default, a generic icon will be shown. You can personalize avatars by adding ``` ```jsx:react -import { SlAvatar } from '@shoelace-style/shoelace/dist/react'; +import SlAvatar from '@shoelace-style/shoelace/dist/react/sl-avatar'; const App = () => ; ``` @@ -37,7 +37,7 @@ Avatar images can be lazily loaded by setting the `loading` attribute to `lazy`. ``` ```jsx:react -import { SlAvatar } from '@shoelace-style/shoelace/dist/react'; +import SlAvatar from '@shoelace-style/shoelace/dist/react/sl-avatar'; const App = () => ( ; ``` @@ -85,7 +85,8 @@ When no image or initials are set, an icon will be shown. The default avatar sho ``` ```jsx:react -import { SlAvatar, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAvatar from '@shoelace-style/shoelace/dist/react/sl-avatar'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( <> @@ -115,7 +116,8 @@ Avatars can be shaped using the `shape` attribute. ``` ```jsx:react -import { SlAvatar, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAvatar from '@shoelace-style/shoelace/dist/react/sl-avatar'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( <> @@ -165,7 +167,8 @@ You can group avatars with a few lines of CSS. ``` ```jsx:react -import { SlAvatar, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlAvatar from '@shoelace-style/shoelace/dist/react/sl-avatar'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const css = ` .avatar-group sl-avatar:not(:first-of-type) { diff --git a/docs/pages/components/badge.md b/docs/pages/components/badge.md index 1d8c06537..d65a14469 100644 --- a/docs/pages/components/badge.md +++ b/docs/pages/components/badge.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlBadge } from '@shoelace-style/shoelace/dist/react'; +import SlBadge from '@shoelace-style/shoelace/dist/react/sl-badge'; const App = () => Badge; ``` @@ -30,7 +30,7 @@ Set the `variant` attribute to change the badge's variant. ``` ```jsx:react -import { SlBadge } from '@shoelace-style/shoelace/dist/react'; +import SlBadge from '@shoelace-style/shoelace/dist/react/sl-badge'; const App = () => ( <> @@ -56,7 +56,7 @@ Use the `pill` attribute to give badges rounded edges. ``` ```jsx:react -import { SlBadge } from '@shoelace-style/shoelace/dist/react'; +import SlBadge from '@shoelace-style/shoelace/dist/react/sl-badge'; const App = () => ( <> @@ -100,7 +100,7 @@ Use the `pulse` attribute to draw attention to the badge with a subtle animation ``` ```jsx:react -import { SlBadge } from '@shoelace-style/shoelace/dist/react'; +import SlBadge from '@shoelace-style/shoelace/dist/react/sl-badge'; const css = ` .badge-pulse sl-badge:not(:last-of-type) { @@ -157,7 +157,8 @@ One of the most common use cases for badges is attaching them to buttons. To mak {% raw %} ```jsx:react -import { SlBadge, SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlBadge from '@shoelace-style/shoelace/dist/react/sl-badge'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -200,7 +201,11 @@ When including badges in menu items, use the `suffix` slot to make sure they're {% raw %} ```jsx:react -import { SlBadge, SlButton, SlMenu, SlMenuItem, SlMenuLabel } from '@shoelace-style/shoelace/dist/react'; +import SlBadge from '@shoelace-style/shoelace/dist/react/sl-badge'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; +import SlMenuLabel from '@shoelace-style/shoelace/dist/react/sl-menu-label'; const App = () => ( ( diff --git a/docs/pages/components/breadcrumb.md b/docs/pages/components/breadcrumb.md index 888861f5b..a827b4930 100644 --- a/docs/pages/components/breadcrumb.md +++ b/docs/pages/components/breadcrumb.md @@ -17,7 +17,8 @@ Breadcrumbs are usually placed before a page's main content with the current pag ``` ```jsx:react -import { SlBreadcrumb, SlBreadcrumbItem } from '@shoelace-style/shoelace/dist/react'; +import SlBreadcrumb from '@shoelace-style/shoelace/dist/react/sl-breadcrumb'; +import SlBreadcrumbItem from '@shoelace-style/shoelace/dist/react/sl-breadcrumb-item'; const App = () => ( @@ -50,7 +51,8 @@ For websites, you'll probably want to use links instead. You can make any breadc ``` ```jsx:react -import { SlBreadcrumb, SlBreadcrumbItem } from '@shoelace-style/shoelace/dist/react'; +import SlBreadcrumb from '@shoelace-style/shoelace/dist/react/sl-breadcrumb'; +import SlBreadcrumbItem from '@shoelace-style/shoelace/dist/react/sl-breadcrumb-item'; const App = () => ( @@ -98,7 +100,8 @@ Use the `separator` slot to change the separator that goes between breadcrumb it ```jsx:react import '@shoelace-style/shoelace/dist/components/icon/icon.js'; -import { SlBreadcrumb, SlBreadcrumbItem } from '@shoelace-style/shoelace/dist/react'; +import SlBreadcrumb from '@shoelace-style/shoelace/dist/react/sl-breadcrumb'; +import SlBreadcrumbItem from '@shoelace-style/shoelace/dist/react/sl-breadcrumb-item'; const App = () => ( <> @@ -146,7 +149,9 @@ Use the `prefix` slot to add content before any breadcrumb item. ``` ```jsx:react -import { SlBreadcrumb, SlBreadcrumbItem, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlBreadcrumb from '@shoelace-style/shoelace/dist/react/sl-breadcrumb'; +import SlBreadcrumbItem from '@shoelace-style/shoelace/dist/react/sl-breadcrumb-item'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( @@ -176,7 +181,9 @@ Use the `suffix` slot to add content after any breadcrumb item. ``` ```jsx:react -import { SlBreadcrumb, SlBreadcrumbItem, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlBreadcrumb from '@shoelace-style/shoelace/dist/react/sl-breadcrumb'; +import SlBreadcrumbItem from '@shoelace-style/shoelace/dist/react/sl-breadcrumb-item'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( diff --git a/docs/pages/components/button-group.md b/docs/pages/components/button-group.md index fbba3ae2a..66c9771b7 100644 --- a/docs/pages/components/button-group.md +++ b/docs/pages/components/button-group.md @@ -14,7 +14,8 @@ layout: component ``` ```jsx:react -import { SlButton, SlButtonGroup } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlButtonGroup from '@shoelace-style/shoelace/dist/react/sl-button-group'; const App = () => ( @@ -56,7 +57,8 @@ All button sizes are supported, but avoid mixing sizes within the same button gr ``` ```jsx:react -import { SlButton, SlButtonGroup } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlButtonGroup from '@shoelace-style/shoelace/dist/react/sl-button-group'; const App = () => ( <> @@ -132,7 +134,8 @@ Theme buttons are supported through the button's `variant` attribute. ``` ```jsx:react -import { SlButton, SlButtonGroup } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlButtonGroup from '@shoelace-style/shoelace/dist/react/sl-button-group'; const App = () => ( <> @@ -210,7 +213,8 @@ Pill buttons are supported through the button's `pill` attribute. ``` ```jsx:react -import { SlButton, SlButtonGroup } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlButtonGroup from '@shoelace-style/shoelace/dist/react/sl-button-group'; const App = () => ( <> @@ -279,7 +283,11 @@ Dropdowns can be placed inside button groups as long as the trigger is an ` ( @@ -320,7 +328,11 @@ Create a split button using a button and a dropdown. Use a [visually hidden](/co ``` ```jsx:react -import { SlButton, SlButtonGroup, SlDropdown, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlButtonGroup from '@shoelace-style/shoelace/dist/react/sl-button-group'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -358,7 +370,9 @@ Buttons can be wrapped in tooltips to provide more detail when the user interact ``` ```jsx:react -import { SlButton, SlButtonGroup, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlButtonGroup from '@shoelace-style/shoelace/dist/react/sl-button-group'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => ( <> @@ -427,7 +441,10 @@ Create interactive toolbars with button groups. ``` ```jsx:react -import { SlButton, SlButtonGroup, SlIcon, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlButtonGroup from '@shoelace-style/shoelace/dist/react/sl-button-group'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const css = ` .button-group-toolbar sl-button-group:not(:last-of-type) { diff --git a/docs/pages/components/button.md b/docs/pages/components/button.md index 79494b3b9..cb68615ac 100644 --- a/docs/pages/components/button.md +++ b/docs/pages/components/button.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => Button; ``` @@ -31,7 +31,7 @@ Use the `variant` attribute to set the button's variant. ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -56,7 +56,7 @@ Use the `size` attribute to change a button's size. ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -81,7 +81,7 @@ Use the `outline` attribute to draw outlined buttons with transparent background ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -118,7 +118,7 @@ Use the `pill` attribute to give buttons rounded edges. ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -154,7 +154,8 @@ Use the `circle` attribute to create circular icon buttons. When this attribute ``` ```jsx:react -import { SlButton, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( <> @@ -182,7 +183,7 @@ Use the `text` variant to create text buttons that share the same size as regula ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -211,7 +212,7 @@ It's often helpful to have a button that works like a link. This is possible by ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -246,7 +247,7 @@ As expected, buttons can be given a custom width by setting the `width` attribut {% raw %} ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -324,7 +325,8 @@ Use the `prefix` and `suffix` slots to add icons. ``` ```jsx:react -import { SlButton, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( <> @@ -396,7 +398,7 @@ Use the `caret` attribute to add a dropdown indicator when a button will trigger ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -427,7 +429,7 @@ Use the `loading` attribute to make a button busy. The width will remain the sam ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> @@ -467,7 +469,7 @@ Use the `disabled` attribute to disable a button. ``` ```jsx:react -import { SlButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; const App = () => ( <> diff --git a/docs/pages/components/card.md b/docs/pages/components/card.md index 6899cdd14..50da4aa55 100644 --- a/docs/pages/components/card.md +++ b/docs/pages/components/card.md @@ -41,7 +41,9 @@ layout: component ``` ```jsx:react -import { SlButton, SlCard, SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlCard from '@shoelace-style/shoelace/dist/react/sl-card'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const css = ` .card-overview { @@ -104,7 +106,7 @@ Basic cards aren't very exciting, but they can display any content you want them ``` ```jsx:react -import { SlCard } from '@shoelace-style/shoelace/dist/react'; +import SlCard from '@shoelace-style/shoelace/dist/react/sl-card'; const css = ` .card-basic { @@ -159,7 +161,8 @@ Headers can be used to display titles and more. ``` ```jsx:react -import { SlCard, SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlCard from '@shoelace-style/shoelace/dist/react/sl-card'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const css = ` .card-header { @@ -224,7 +227,9 @@ Footers can be used to display actions, summaries, or other relevant content. ``` ```jsx:react -import { SlButton, SlCard, SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlCard from '@shoelace-style/shoelace/dist/react/sl-card'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const css = ` .card-footer { @@ -277,7 +282,7 @@ Cards accept an `image` slot. The image is displayed atop the card and stretches ``` ```jsx:react -import { SlCard } from '@shoelace-style/shoelace/dist/react'; +import SlCard from '@shoelace-style/shoelace/dist/react/sl-card'; const css = ` .card-image { diff --git a/docs/pages/components/carousel-item.md b/docs/pages/components/carousel-item.md index 42755baed..17007529d 100644 --- a/docs/pages/components/carousel-item.md +++ b/docs/pages/components/carousel-item.md @@ -41,7 +41,8 @@ layout: component ``` ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const App = () => ( diff --git a/docs/pages/components/carousel.md b/docs/pages/components/carousel.md index 1f102a0c1..ccc6506fb 100644 --- a/docs/pages/components/carousel.md +++ b/docs/pages/components/carousel.md @@ -41,7 +41,8 @@ layout: component ``` ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const App = () => ( <> @@ -123,7 +124,8 @@ Use the `pagination` attribute to show the total number of slides and the curren ``` ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const App = () => ( @@ -201,7 +203,8 @@ Use the `navigation` attribute to show previous and next buttons. ``` ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const App = () => ( @@ -279,7 +282,8 @@ By default, the carousel will not advanced beyond the first and last slides. You ``` ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const App = () => ( @@ -357,7 +361,8 @@ The carousel will automatically advance when the `autoplay` attribute is used. T ``` ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const App = () => ( @@ -454,7 +459,10 @@ This example is best demonstrated using a mouse. Try clicking and dragging the s ```jsx:react import { useState } from 'react'; -import { SlCarousel, SlCarouselItem, SlDivider, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const App = () => { const [isEnabled, setIsEnabled] = useState(false); @@ -522,7 +530,8 @@ The `slides-per-page` attribute makes it possible to display multiple slides at {% raw %} ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const App = () => ( @@ -614,7 +623,8 @@ The content of the carousel can be changed by adding or removing carousel items. ```jsx:react import { useState } from 'react'; -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const css = ` .dynamic-carousel { @@ -730,7 +740,8 @@ Setting the `orientation` attribute to `vertical` will render the carousel in a ``` ```jsx:react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; const css = ` .vertical { @@ -852,7 +863,11 @@ Use the `--aspect-ratio` custom property to customize the size of the carousel's ```jsx:react import { useState } from 'react'; -import { SlCarousel, SlCarouselItem, SlDivider, SlSelect, SlOption } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; const App = () => { const [aspectRatio, setAspectRatio] = useState('3/2'); @@ -956,7 +971,10 @@ Use the `--scroll-hint` custom property to add inline padding in horizontal caro ```jsx:react import { useState } from 'react'; -import { SlCarousel, SlCarouselItem, SlDivider, SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ( <> @@ -1119,7 +1137,10 @@ The carousel has a robust API that makes it possible to extend and customize. Th ```jsx:react import { useRef } from 'react'; -import { SlCarousel, SlCarouselItem, SlDivider, SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlCarousel from '@shoelace-style/shoelace/dist/react/sl-carousel'; +import SlCarouselItem from '@shoelace-style/shoelace/dist/react/sl-carousel-item'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const css = ` .carousel-thumbnails { diff --git a/docs/pages/components/checkbox.md b/docs/pages/components/checkbox.md index af1af5863..9eef2b879 100644 --- a/docs/pages/components/checkbox.md +++ b/docs/pages/components/checkbox.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlCheckbox } from '@shoelace-style/shoelace/dist/react'; +import SlCheckbox from '@shoelace-style/shoelace/dist/react/sl-checkbox'; const App = () => Checkbox; ``` @@ -30,7 +30,7 @@ Use the `checked` attribute to activate the checkbox. ``` ```jsx:react -import { SlCheckbox } from '@shoelace-style/shoelace/dist/react'; +import SlCheckbox from '@shoelace-style/shoelace/dist/react/sl-checkbox'; const App = () => Checked; ``` @@ -44,7 +44,7 @@ Use the `indeterminate` attribute to make the checkbox indeterminate. ``` ```jsx:react -import { SlCheckbox } from '@shoelace-style/shoelace/dist/react'; +import SlCheckbox from '@shoelace-style/shoelace/dist/react/sl-checkbox'; const App = () => Indeterminate; ``` @@ -58,7 +58,7 @@ Use the `disabled` attribute to disable the checkbox. ``` ```jsx:react -import { SlCheckbox } from '@shoelace-style/shoelace/dist/react'; +import SlCheckbox from '@shoelace-style/shoelace/dist/react/sl-checkbox'; const App = () => Disabled; ``` @@ -76,7 +76,7 @@ Use the `size` attribute to change a checkbox's size. ``` ```jsx:react -import { SlCheckbox } from '@shoelace-style/shoelace/dist/react'; +import SlCheckbox from '@shoelace-style/shoelace/dist/react/sl-checkbox'; const App = () => ( <> @@ -127,7 +127,8 @@ Use the `setCustomValidity()` method to set a custom validation message. This wi ```jsx:react import { useEffect, useRef } from 'react'; -import { SlButton, SlCheckbox } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlCheckbox from '@shoelace-style/shoelace/dist/react/sl-checkbox'; const App = () => { const checkbox = useRef(null); diff --git a/docs/pages/components/color-picker.md b/docs/pages/components/color-picker.md index 50fc139e7..254225245 100644 --- a/docs/pages/components/color-picker.md +++ b/docs/pages/components/color-picker.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlColorPicker } from '@shoelace-style/shoelace/dist/react'; +import SlColorPicker from '@shoelace-style/shoelace/dist/react/sl-color-picker'; const App = () => ; ``` @@ -30,7 +30,7 @@ Use the `value` attribute to set an initial value for the color picker. ``` ```jsx:react -import { SlColorPicker } from '@shoelace-style/shoelace/dist/react'; +import SlColorPicker from '@shoelace-style/shoelace/dist/react/sl-color-picker'; const App = () => ; ``` @@ -44,7 +44,7 @@ Use the `opacity` attribute to enable the opacity slider. When this is enabled, ``` ```jsx:react -import { SlColorPicker } from '@shoelace-style/shoelace/dist/react'; +import SlColorPicker from '@shoelace-style/shoelace/dist/react/sl-color-picker'; const App = () => ; ``` @@ -63,7 +63,7 @@ To prevent users from toggling the format themselves, add the `no-format-toggle` ``` ```jsx:react -import { SlColorPicker } from '@shoelace-style/shoelace/dist/react'; +import SlColorPicker from '@shoelace-style/shoelace/dist/react/sl-color-picker'; const App = () => ( <> @@ -90,7 +90,7 @@ Use the `swatches` attribute to add convenient presets to the color picker. Any ``` ```jsx:react -import { SlColorPicker } from '@shoelace-style/shoelace/dist/react'; +import SlColorPicker from '@shoelace-style/shoelace/dist/react/sl-color-picker'; const App = () => ( ( <> @@ -134,7 +134,7 @@ The color picker can be rendered inline instead of in a dropdown using the `inli ``` ```jsx:react -import { SlColorPicker } from '@shoelace-style/shoelace/dist/react'; +import SlColorPicker from '@shoelace-style/shoelace/dist/react/sl-color-picker'; const App = () => ; ``` diff --git a/docs/pages/components/details.md b/docs/pages/components/details.md index c0da4c425..765f6f46c 100644 --- a/docs/pages/components/details.md +++ b/docs/pages/components/details.md @@ -15,7 +15,7 @@ layout: component ``` ```jsx:react -import { SlDetails } from '@shoelace-style/shoelace/dist/react'; +import SlDetails from '@shoelace-style/shoelace/dist/react/sl-details'; const App = () => ( @@ -39,7 +39,7 @@ Use the `disable` attribute to prevent the details from expanding. ``` ```jsx:react -import { SlDetails } from '@shoelace-style/shoelace/dist/react'; +import SlDetails from '@shoelace-style/shoelace/dist/react/sl-details'; const App = () => ( @@ -71,7 +71,8 @@ Use the `expand-icon` and `collapse-icon` slots to change the expand and collaps ``` ```jsx:react -import { SlDetails, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlDetails from '@shoelace-style/shoelace/dist/react/sl-details'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const css = ` sl-details.custom-icon::part(summary-icon) { diff --git a/docs/pages/components/dialog.md b/docs/pages/components/dialog.md index 718723491..e26234696 100644 --- a/docs/pages/components/dialog.md +++ b/docs/pages/components/dialog.md @@ -27,7 +27,8 @@ layout: component ```jsx:react import { useState } from 'react'; -import { SlButton, SlDialog } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDialog from '@shoelace-style/shoelace/dist/react/sl-dialog'; const App = () => { const [open, setOpen] = useState(false); @@ -75,7 +76,8 @@ Use the `--width` custom property to set the dialog's width. ```jsx:react import { useState } from 'react'; -import { SlButton, SlDialog } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDialog from '@shoelace-style/shoelace/dist/react/sl-dialog'; const App = () => { const [open, setOpen] = useState(false); @@ -125,7 +127,8 @@ By design, a dialog's height will never exceed that of the viewport. As such, di ```jsx:react import { useState } from 'react'; -import { SlButton, SlDialog } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDialog from '@shoelace-style/shoelace/dist/react/sl-dialog'; const App = () => { const [open, setOpen] = useState(false); @@ -183,7 +186,9 @@ The header shows a functional close button by default. You can use the `header-a ```jsx:react import { useState } from 'react'; -import { SlButton, SlDialog, SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDialog from '@shoelace-style/shoelace/dist/react/sl-dialog'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const App = () => { const [open, setOpen] = useState(false); @@ -244,7 +249,8 @@ You can use `event.detail.source` to determine what triggered the request to clo ```jsx:react import { useState } from 'react'; -import { SlButton, SlDialog } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDialog from '@shoelace-style/shoelace/dist/react/sl-dialog'; const App = () => { const [open, setOpen] = useState(false); @@ -296,7 +302,9 @@ By default, the dialog's panel will gain focus when opened. This allows a subseq ```jsx:react import { useState } from 'react'; -import { SlButton, SlDialog, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDialog from '@shoelace-style/shoelace/dist/react/sl-dialog'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => { const [open, setOpen] = useState(false); diff --git a/docs/pages/components/divider.md b/docs/pages/components/divider.md index a308da575..ee2b56d2b 100644 --- a/docs/pages/components/divider.md +++ b/docs/pages/components/divider.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlDivider } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; const App = () => ; ``` @@ -28,7 +28,7 @@ Use the `--width` custom property to change the width of the divider. {% raw %} ```jsx:react -import { SlDivider } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; const App = () => ; ``` @@ -46,7 +46,7 @@ Use the `--color` custom property to change the color of the divider. {% raw %} ```jsx:react -import { SlDivider } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; const App = () => ; ``` @@ -68,7 +68,7 @@ Use the `--spacing` custom property to change the amount of space between the di {% raw %} ```jsx:react -import { SlDivider } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; const App = () => ( <> @@ -98,7 +98,7 @@ Add the `vertical` attribute to draw the divider in a vertical orientation. The {% raw %} ```jsx:react -import { SlDivider } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; const App = () => (
( diff --git a/docs/pages/components/drawer.md b/docs/pages/components/drawer.md index 25a53c3ad..23167ab6e 100644 --- a/docs/pages/components/drawer.md +++ b/docs/pages/components/drawer.md @@ -27,7 +27,8 @@ layout: component ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -73,7 +74,8 @@ By default, drawers slide in from the end. To make the drawer slide in from the ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -117,7 +119,8 @@ To make the drawer slide in from the top, set the `placement` attribute to `top` ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -161,7 +164,8 @@ To make the drawer slide in from the bottom, set the `placement` attribute to `b ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -215,7 +219,8 @@ Unlike normal drawers, contained drawers are not modal. This means they do not s ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -282,7 +287,8 @@ Use the `--size` custom property to set the drawer's size. This will be applied ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -332,7 +338,8 @@ By design, a drawer's height will never exceed 100% of its container. As such, d ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -389,7 +396,9 @@ The header shows a functional close button by default. You can use the `header-a ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer, SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const App = () => { const [open, setOpen] = useState(false); @@ -445,7 +454,8 @@ You can use `event.detail.source` to determine what triggered the request to clo ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; const App = () => { const [open, setOpen] = useState(false); @@ -497,7 +507,9 @@ By default, the drawer's panel will gain focus when opened. This allows a subseq ```jsx:react import { useState } from 'react'; -import { SlButton, SlDrawer, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDrawer from '@shoelace-style/shoelace/dist/react/sl-drawer'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => { const [open, setOpen] = useState(false); diff --git a/docs/pages/components/dropdown.md b/docs/pages/components/dropdown.md index 236bfa069..d624f54bf 100644 --- a/docs/pages/components/dropdown.md +++ b/docs/pages/components/dropdown.md @@ -33,7 +33,12 @@ Dropdowns are designed to work well with [menus](/components/menu) to provide a ``` ```jsx:react -import { SlButton, SlDivider, SlDropdown, SlIcon, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -93,7 +98,10 @@ When dropdowns are used with [menus](/components/menu), you can listen for the [ ``` ```jsx:react -import { SlButton, SlDropdown, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => { function handleSelect(event) { @@ -143,7 +151,10 @@ Alternatively, you can listen for the `click` event on individual menu items. No ``` ```jsx:react -import { SlButton, SlDropdown, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => { function handleCut() { @@ -192,7 +203,11 @@ The preferred placement of the dropdown can be set with the `placement` attribut ``` ```jsx:react -import { SlButton, SlDivider, SlDropdown, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -230,7 +245,11 @@ The distance from the panel to the trigger can be customized using the `distance ``` ```jsx:react -import { SlButton, SlDivider, SlDropdown, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -268,7 +287,11 @@ The offset of the panel along the trigger can be customized using the `skidding` ``` ```jsx:react -import { SlButton, SlDivider, SlDropdown, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -323,7 +346,12 @@ Dropdown panels will be clipped if they're inside a container that has `overflow ``` ```jsx:react -import { SlButton, SlDivider, SlDropdown, SlIcon, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlDropdown from '@shoelace-style/shoelace/dist/react/sl-dropdown'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const css = ` .dropdown-hoist { diff --git a/docs/pages/components/format-bytes.md b/docs/pages/components/format-bytes.md index a9e4fb5d8..d9ca84622 100644 --- a/docs/pages/components/format-bytes.md +++ b/docs/pages/components/format-bytes.md @@ -24,7 +24,9 @@ layout: component ```jsx:react import { useState } from 'react'; -import { SlButton, SlFormatBytes, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlFormatBytes from '@shoelace-style/shoelace/dist/react/sl-format-bytes'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => { const [value, setValue] = useState(1000); @@ -62,7 +64,7 @@ Set the `value` attribute to a number to get the value in bytes. ``` ```jsx:react -import { SlFormatBytes } from '@shoelace-style/shoelace/dist/react'; +import SlFormatBytes from '@shoelace-style/shoelace/dist/react/sl-format-bytes'; const App = () => ( <> @@ -89,7 +91,7 @@ To get the value in bits, set the `unit` attribute to `bit`. ``` ```jsx:react -import { SlFormatBytes } from '@shoelace-style/shoelace/dist/react'; +import SlFormatBytes from '@shoelace-style/shoelace/dist/react/sl-format-bytes'; const App = () => ( <> @@ -116,7 +118,7 @@ Use the `lang` attribute to set the number formatting locale. ``` ```jsx:react -import { SlFormatBytes } from '@shoelace-style/shoelace/dist/react'; +import SlFormatBytes from '@shoelace-style/shoelace/dist/react/sl-format-bytes'; const App = () => ( <> diff --git a/docs/pages/components/format-date.md b/docs/pages/components/format-date.md index 2c42ff232..2013cca6a 100644 --- a/docs/pages/components/format-date.md +++ b/docs/pages/components/format-date.md @@ -13,7 +13,7 @@ Localization is handled by the browser's [`Intl.DateTimeFormat` API](https://dev ``` ```jsx:react -import { SlFormatDate } from '@shoelace-style/shoelace/dist/react'; +import SlFormatDate from '@shoelace-style/shoelace/dist/react/sl-format-date'; const App = () => ; ``` @@ -51,7 +51,7 @@ Formatting options are based on those found in the [`Intl.DateTimeFormat` API](h ``` ```jsx:react -import { SlFormatDate } from '@shoelace-style/shoelace/dist/react'; +import SlFormatDate from '@shoelace-style/shoelace/dist/react/sl-format-date'; const App = () => ( <> @@ -91,7 +91,7 @@ By default, the browser will determine whether to use 12-hour or 24-hour time. T ``` ```jsx:react -import { SlFormatDate } from '@shoelace-style/shoelace/dist/react'; +import SlFormatDate from '@shoelace-style/shoelace/dist/react/sl-format-date'; const App = () => ( <> @@ -113,7 +113,7 @@ Russian: ``` ```jsx:react -import { SlFormatDate } from '@shoelace-style/shoelace/dist/react'; +import SlFormatDate from '@shoelace-style/shoelace/dist/react/sl-format-date'; const App = () => ( <> diff --git a/docs/pages/components/format-number.md b/docs/pages/components/format-number.md index 1675071a7..2e1a51df1 100644 --- a/docs/pages/components/format-number.md +++ b/docs/pages/components/format-number.md @@ -27,7 +27,8 @@ Localization is handled by the browser's [`Intl.NumberFormat` API](https://devel ```jsx:react import { useState } from 'react'; -import { SlFormatNumber, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlFormatNumber from '@shoelace-style/shoelace/dist/react/format-number'; +import SlInput from '@shoelace-style/shoelace/dist/react/input'; const App = () => { const [value, setValue] = useState(1000); @@ -66,7 +67,7 @@ To get the value as a percent, set the `type` attribute to `percent`. ``` ```jsx:react -import { SlFormatNumber } from '@shoelace-style/shoelace/dist/react'; +import SlFormatNumber from '@shoelace-style/shoelace/dist/react/format-number'; const App = () => ( <> @@ -94,7 +95,7 @@ Russian: ( <> @@ -120,7 +121,7 @@ To format a number as a monetary value, set the `type` attribute to `currency` a ``` ```jsx:react -import { SlFormatNumber } from '@shoelace-style/shoelace/dist/react'; +import SlFormatNumber from '@shoelace-style/shoelace/dist/react/sl-format-number'; const App = () => ( <> diff --git a/docs/pages/components/icon-button.md b/docs/pages/components/icon-button.md index cb9d51e3c..3cd047539 100644 --- a/docs/pages/components/icon-button.md +++ b/docs/pages/components/icon-button.md @@ -12,7 +12,7 @@ For a full list of icons that come bundled with Shoelace, refer to the [icon com ``` ```jsx:react -import { SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const App = () => ; ``` @@ -32,7 +32,7 @@ Icon buttons inherit their parent element's `font-size`. {% raw %} ```jsx:react -import { SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const App = () => ( <> @@ -73,7 +73,7 @@ Icon buttons are designed to have a uniform appearance, so their color is not in ``` ```jsx:react -import { SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const css = ` .icon-button-color sl-icon-button::part(base) { @@ -112,7 +112,7 @@ Use the `href` attribute to convert the button to a link. ``` ```jsx:react -import { SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const App = () => ; ``` @@ -128,7 +128,8 @@ Wrap a tooltip around an icon button to provide contextual information to the us ``` ```jsx:react -import { SlIconButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => ( @@ -146,7 +147,7 @@ Use the `disabled` attribute to disable the icon button. ``` ```jsx:react -import { SlIconButton } from '@shoelace-style/shoelace/dist/react'; +import SlIconButton from '@shoelace-style/shoelace/dist/react/sl-icon-button'; const App = () => ; ``` diff --git a/docs/pages/components/icon.md b/docs/pages/components/icon.md index 00effd651..93d1f27a5 100644 --- a/docs/pages/components/icon.md +++ b/docs/pages/components/icon.md @@ -70,7 +70,7 @@ Icons inherit their color from the current text color. Thus, you can set the `co {% raw %} ```jsx:react -import { SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( <> @@ -132,7 +132,7 @@ Icons are sized relative to the current font size. To change their size, set the {% raw %} ```jsx:react -import { SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => (
@@ -167,7 +167,7 @@ For non-decorative icons, use the `label` attribute to announce it to assistive ``` ```jsx:react -import { SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ; ``` @@ -183,7 +183,7 @@ Custom icons can be loaded individually with the `src` attribute. Only SVGs on a {% raw %} ```jsx:react -import { SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ; ``` diff --git a/docs/pages/components/image-comparer.md b/docs/pages/components/image-comparer.md index f83fcfde9..d4fe0d1fc 100644 --- a/docs/pages/components/image-comparer.md +++ b/docs/pages/components/image-comparer.md @@ -23,7 +23,7 @@ For best results, use images that share the same dimensions. The slider can be c ``` ```jsx:react -import { SlImageComparer } from '@shoelace-style/shoelace/dist/react'; +import SlImageComparer from '@shoelace-style/shoelace/dist/react/sl-image-comparer'; const App = () => ( @@ -63,7 +63,7 @@ Use the `position` attribute to set the initial position of the slider. This is ``` ```jsx:react -import { SlImageComparer } from '@shoelace-style/shoelace/dist/react'; +import SlImageComparer from '@shoelace-style/shoelace/dist/react/sl-image-comparer'; const App = () => ( diff --git a/docs/pages/components/include.md b/docs/pages/components/include.md index 601d6187d..7ef6ef452 100644 --- a/docs/pages/components/include.md +++ b/docs/pages/components/include.md @@ -14,7 +14,7 @@ The included content will be inserted into the `` element's default ``` ```jsx:react -import { SlInclude } from '@shoelace-style/shoelace/dist/react'; +import SlInclude from '@shoelace-style/shoelace/dist/react/sl-include'; const App = () => ; ``` diff --git a/docs/pages/components/input.md b/docs/pages/components/input.md index a08323d0a..c762d5b30 100644 --- a/docs/pages/components/input.md +++ b/docs/pages/components/input.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -30,7 +30,8 @@ Use the `label` attribute to give the input an accessible label. For labels that ``` ```jsx:react -import { SlIcon, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -44,7 +45,8 @@ Add descriptive help text to an input with the `help-text` attribute. For help t ``` ```jsx:react -import { SlIcon, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -58,7 +60,7 @@ Use the `placeholder` attribute to add a placeholder. ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -72,7 +74,7 @@ Add the `clearable` attribute to add a clear button when the input has content. ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -86,7 +88,7 @@ Add the `password-toggle` attribute to add a toggle button that will show the pa ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -100,7 +102,7 @@ Add the `filled` attribute to draw a filled input. ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -114,7 +116,7 @@ Use the `disabled` attribute to disable an input. ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ; ``` @@ -132,7 +134,7 @@ Use the `size` attribute to change an input's size. ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ( <> @@ -158,7 +160,7 @@ Use the `pill` attribute to give inputs rounded edges. ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ( <> @@ -184,7 +186,7 @@ The `type` attribute controls the type of input the browser renders. ``` ```jsx:react -import { SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ( <> @@ -219,7 +221,8 @@ Use the `prefix` and `suffix` slots to add icons. ``` ```jsx:react -import { SlIcon, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => ( <> diff --git a/docs/pages/components/menu-item.md b/docs/pages/components/menu-item.md index d835af687..81a3e649c 100644 --- a/docs/pages/components/menu-item.md +++ b/docs/pages/components/menu-item.md @@ -28,7 +28,10 @@ layout: component {% raw %} ```jsx:react -import { SlDivider, SlIcon, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -72,7 +75,8 @@ Add the `disabled` attribute to disable the menu item so it cannot be selected. {% raw %} ```jsx:react -import { SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -114,7 +118,11 @@ Add content to the start and end of menu items using the `prefix` and `suffix` s {% raw %} ```jsx:react -import { SlBadge, SlDivider, SlIcon, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlBadge from '@shoelace-style/shoelace/dist/react/sl-badge'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -160,7 +168,8 @@ Checkbox menu items are visually indistinguishable from regular menu items. Thei {% raw %} ```jsx:react -import { SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( @@ -209,7 +218,8 @@ The `value` attribute can be used to assign a hidden value, such as a unique ide {% raw %} ```jsx:react -import { SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => { function handleSelect(event) { diff --git a/docs/pages/components/menu-label.md b/docs/pages/components/menu-label.md index 2e8dc32e5..e245f4210 100644 --- a/docs/pages/components/menu-label.md +++ b/docs/pages/components/menu-label.md @@ -22,7 +22,10 @@ layout: component {% raw %} ```jsx:react -import { SlDivider, SlMenu, SlMenuLabel, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuLabel from '@shoelace-style/shoelace/dist/react/sl-menu-label'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( diff --git a/docs/pages/components/menu.md b/docs/pages/components/menu.md index 9e70c96f1..2bc49fe1f 100644 --- a/docs/pages/components/menu.md +++ b/docs/pages/components/menu.md @@ -22,7 +22,9 @@ You can use [menu items](/components/menu-item), [menu labels](/components/menu- {% raw %} ```jsx:react -import { SlDivider, SlMenu, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlMenu from '@shoelace-style/shoelace/dist/react/sl-menu'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => ( diff --git a/docs/pages/components/mutation-observer.md b/docs/pages/components/mutation-observer.md index 818fe27cf..2e6227275 100644 --- a/docs/pages/components/mutation-observer.md +++ b/docs/pages/components/mutation-observer.md @@ -45,7 +45,8 @@ The mutation observer will report changes to the content it wraps through the `s ```jsx:react import { useState } from 'react'; -import { SlButton, SlMutationObserver } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlMutationObserver from '@shoelace-style/shoelace/dist/react/sl-mutation-observer'; const css = ` .resize-observer-overview div { @@ -146,7 +147,8 @@ Use the `child-list` attribute to watch for new child elements that are added or ```jsx:react import { useState } from 'react'; -import { SlButton, SlMutationObserver } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlMutationObserver from '@shoelace-style/shoelace/dist/react/sl-mutation-observer'; const css = ` .mutation-child-list .buttons { diff --git a/docs/pages/components/option.md b/docs/pages/components/option.md index 54b76d0c8..c335beaa8 100644 --- a/docs/pages/components/option.md +++ b/docs/pages/components/option.md @@ -14,7 +14,8 @@ layout: component ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -40,7 +41,8 @@ Use the `disabled` attribute to disable an option and prevent it from being sele ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( diff --git a/docs/pages/components/popup.md b/docs/pages/components/popup.md index f378a5391..49cc5163a 100644 --- a/docs/pages/components/popup.md +++ b/docs/pages/components/popup.md @@ -104,7 +104,11 @@ Popup is a low-level utility built specifically for positioning elements. Do not ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSelect, SlMenuItem, SlInput, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` .popup-overview sl-popup { @@ -269,7 +273,8 @@ Popups are inactive and hidden until the `active` attribute is applied. Removing ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` .popup-active span[slot='anchor'] { @@ -341,7 +346,7 @@ By default, anchors are slotted into the popup using the `anchor` slot. If your ``` ```jsx:react -import { SlPopup } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; const css = ` #external-anchor { @@ -436,7 +441,9 @@ Since placement is preferred when using `flip`, you can observe the popup's curr ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSelect, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const css = ` .popup-placement span[slot='anchor'] { @@ -538,7 +545,8 @@ Use the `distance` attribute to change the distance between the popup and its an ```jsx:react import { useState } from 'react'; -import { SlPopup, SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const css = ` .popup-distance span[slot='anchor'] { @@ -634,7 +642,8 @@ The `skidding` attribute is similar to `distance`, but instead allows you to off ```jsx:react import { useState } from 'react'; -import { SlPopup, SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const css = ` .popup-skidding span[slot='anchor'] { @@ -777,7 +786,10 @@ By default, the arrow will be aligned as close to the center of the _anchor_ as ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSelect, SlMenuItem, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` .popup-arrow sl-popup { @@ -930,7 +942,9 @@ Use the `sync` attribute to make the popup the same width or height as the ancho ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSelect, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const css = ` .popup-sync span[slot='anchor'] { @@ -1041,7 +1055,8 @@ Toggle the switch and scroll the container to see the difference. ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` .popup-strategy .overflow { @@ -1149,7 +1164,8 @@ Scroll the container to see how the popup flips to prevent clipping. ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` .popup-flip .overflow { @@ -1246,7 +1262,7 @@ Scroll the container to see how the popup changes it's fallback placement to pre ``` ```jsx:react -import { SlPopup } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; const css = ` .popup-flip-fallbacks .overflow { @@ -1342,7 +1358,8 @@ Toggle the switch to see the difference. ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` .popup-shift .overflow { @@ -1454,7 +1471,8 @@ Scroll the container to see the popup resize as its available space changes. ```jsx:react import { useState } from 'react'; -import { SlPopup, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` .popup-auto-size .overflow { @@ -1605,7 +1623,8 @@ This example anchors a popup to the mouse cursor using a virtual element. As suc ```jsx:react import { useRef, useState } from 'react'; -import { SlPopup, SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlPopup from '@shoelace-style/shoelace/dist/react/sl-popup'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const css = ` /* If you need to set a z-index, set it on the popup part like this */ diff --git a/docs/pages/components/progress-bar.md b/docs/pages/components/progress-bar.md index 1acf2466b..b772db33d 100644 --- a/docs/pages/components/progress-bar.md +++ b/docs/pages/components/progress-bar.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlProgressBar } from '@shoelace-style/shoelace/dist/react'; +import SlProgressBar from '@shoelace-style/shoelace/dist/react/sl-progress-bar'; const App = () => ; ``` @@ -26,7 +26,7 @@ Use the `label` attribute to label the progress bar and tell assistive devices h ``` ```jsx:react -import { SlProgressBar } from '@shoelace-style/shoelace/dist/react'; +import SlProgressBar from '@shoelace-style/shoelace/dist/react/sl-progress-bar'; const App = () => ; ``` @@ -42,7 +42,7 @@ Use the `--height` custom property to set the progress bar's height. {% raw %} ```jsx:react -import { SlProgressBar } from '@shoelace-style/shoelace/dist/react'; +import SlProgressBar from '@shoelace-style/shoelace/dist/react/sl-progress-bar'; const App = () => ; ``` @@ -82,7 +82,9 @@ Use the default slot to show a value. ```jsx:react import { useState } from 'react'; -import { SlButton, SlIcon, SlProgressBar } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlProgressBar from '@shoelace-style/shoelace/dist/react/sl-progress-bar'; const App = () => { const [value, setValue] = useState(50); @@ -121,7 +123,7 @@ The `indeterminate` attribute can be used to inform the user that the operation ``` ```jsx:react -import { SlProgressBar } from '@shoelace-style/shoelace/dist/react'; +import SlProgressBar from '@shoelace-style/shoelace/dist/react/sl-progress-bar'; const App = () => ; ``` diff --git a/docs/pages/components/progress-ring.md b/docs/pages/components/progress-ring.md index 96305a2a4..e57c26cc8 100644 --- a/docs/pages/components/progress-ring.md +++ b/docs/pages/components/progress-ring.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlProgressRing } from '@shoelace-style/shoelace/dist/react'; +import SlProgressRing from '@shoelace-style/shoelace/dist/react/sl-progress-ring'; const App = () => ; ``` @@ -28,7 +28,7 @@ Use the `--size` custom property to set the diameter of the progress ring. {% raw %} ```jsx:react -import { SlProgressRing } from '@shoelace-style/shoelace/dist/react'; +import SlProgressRing from '@shoelace-style/shoelace/dist/react/sl-progress-ring'; const App = () => ; ``` @@ -46,7 +46,7 @@ Use the `--track-width` and `--indicator-width` custom properties to set the wid {% raw %} ```jsx:react -import { SlProgressRing } from '@shoelace-style/shoelace/dist/react'; +import SlProgressRing from '@shoelace-style/shoelace/dist/react/sl-progress-ring'; const App = () => ; ``` @@ -70,7 +70,7 @@ To change the color, use the `--track-color` and `--indicator-color` custom prop {% raw %} ```jsx:react -import { SlProgressRing } from '@shoelace-style/shoelace/dist/react'; +import SlProgressRing from '@shoelace-style/shoelace/dist/react/sl-progress-ring'; const App = () => ( ; ``` @@ -134,7 +134,9 @@ Use the default slot to show a label inside the progress ring. ```jsx:react import { useState } from 'react'; -import { SlButton, SlIcon, SlProgressRing } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlProgressRing from '@shoelace-style/shoelace/dist/react/sl-progress-ring'; const App = () => { const [value, setValue] = useState(50); diff --git a/docs/pages/components/qr-code.md b/docs/pages/components/qr-code.md index 2b1cc9245..8059442d1 100644 --- a/docs/pages/components/qr-code.md +++ b/docs/pages/components/qr-code.md @@ -39,7 +39,8 @@ QR codes are useful for providing small pieces of information to users who can q ```jsx:react import { useState } from 'react'; -import { SlQrCode, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlQrCode from '@shoelace-style/shoelace/dist/react/sl-qr-code'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const css = ` .qr-overview { @@ -80,7 +81,7 @@ Use the `fill` and `background` attributes to modify the QR code's colors. You s ``` ```jsx:react -import { SlQrCode } from '@shoelace-style/shoelace/dist/react'; +import SlQrCode from '@shoelace-style/shoelace/dist/react/sl-qr-code'; const App = () => ; ``` @@ -94,7 +95,7 @@ Use the `size` attribute to change the size of the QR code. ``` ```jsx:react -import { SlQrCode } from '@shoelace-style/shoelace/dist/react'; +import SlQrCode from '@shoelace-style/shoelace/dist/react/sl-qr-code'; const App = () => ; ``` @@ -108,7 +109,7 @@ Create a rounded effect with the `radius` attribute. ``` ```jsx:react -import { SlQrCode } from '@shoelace-style/shoelace/dist/react'; +import SlQrCode from '@shoelace-style/shoelace/dist/react/sl-qr-code'; const App = () => ; ``` @@ -135,7 +136,7 @@ QR codes can be rendered with various levels of [error correction](https://www.q ``` ```jsx:react -import { SlQrCode } from '@shoelace-style/shoelace/dist/react'; +import SlQrCode from '@shoelace-style/shoelace/dist/react/sl-qr-code'; const css = ` .qr-error-correction { diff --git a/docs/pages/components/radio-button.md b/docs/pages/components/radio-button.md index 4257ef174..101112b2b 100644 --- a/docs/pages/components/radio-button.md +++ b/docs/pages/components/radio-button.md @@ -16,7 +16,8 @@ Radio buttons are designed to be used with [radio groups](/components/radio-grou ``` ```jsx:react -import { SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -42,7 +43,8 @@ To set the initial value and checked state, use the `value` attribute on the con ``` ```jsx:react -import { SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -66,7 +68,8 @@ Use the `disabled` attribute to disable a radio button. ``` ```jsx:react -import { SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -108,7 +111,8 @@ Use the `size` attribute to change a radio button's size. ``` ```jsx:react -import { SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -164,7 +168,8 @@ Use the `pill` attribute to give radio buttons rounded edges. ``` ```jsx:react -import { SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -216,7 +221,9 @@ Use the `prefix` and `suffix` slots to add icons. ``` ```jsx:react -import { SlIcon, SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -268,7 +275,9 @@ You can omit button labels and use icons instead. Make sure to set a `label` att ``` ```jsx:react -import { SlIcon, SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( diff --git a/docs/pages/components/radio-group.md b/docs/pages/components/radio-group.md index d1646a282..e8cb23c9c 100644 --- a/docs/pages/components/radio-group.md +++ b/docs/pages/components/radio-group.md @@ -14,7 +14,8 @@ layout: component ``` ```jsx:react -import { SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -40,7 +41,8 @@ Add descriptive help text to a radio group with the `help-text` attribute. For h ``` ```jsx:react -import { SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -64,7 +66,8 @@ const App = () => ( ``` ```jsx:react -import { SlRadioButton, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadioButton from '@shoelace-style/shoelace/dist/react/sl-radio-button'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -88,7 +91,8 @@ Radios and radio buttons can be disabled by adding the `disabled` attribute to t ``` ```jsx:react -import { SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -123,7 +127,8 @@ The size of [Radios](/components/radio) and [Radio Buttons](/components/radio-bu ```jsx react import { useState } from 'react'; -import { SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => { const [size, setSize] = useState('medium'); @@ -177,7 +182,10 @@ Setting the `required` attribute to make selecting an option mandatory. If a val ``` ```jsx:react -import { SlButton, SlIcon, SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => { function handleSubmit(event) { event.preventDefault(); @@ -247,7 +255,10 @@ Use the `setCustomValidity()` method to set a custom validation message. This wi ```jsx:react import { useEffect, useRef } from 'react'; -import { SlButton, SlIcon, SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => { const radioGroup = useRef(null); const errorMessage = 'You must choose this option'; diff --git a/docs/pages/components/radio.md b/docs/pages/components/radio.md index d99ab8c99..03dcb7fd6 100644 --- a/docs/pages/components/radio.md +++ b/docs/pages/components/radio.md @@ -16,7 +16,8 @@ Radios are designed to be used with [radio groups](/components/radio-group). ``` ```jsx:react -import { SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/radio-group'; const App = () => ( @@ -46,7 +47,8 @@ To set the initial value and checked state, use the `value` attribute on the con ``` ```jsx:react -import { SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -70,7 +72,8 @@ Use the `disabled` attribute to disable a radio. ``` ```jsx:react -import { SlRadio, SlRadioGroup } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; +import SlRadioGroup from '@shoelace-style/shoelace/dist/react/sl-radio-group'; const App = () => ( @@ -112,7 +115,7 @@ Add the `size` attribute to the [Radio Group](/components/radio-group) to change ``` ```jsx react -import { SlRadio } from '@shoelace-style/shoelace/dist/react'; +import SlRadio from '@shoelace-style/shoelace/dist/react/sl-radio'; const App = () => ( <> diff --git a/docs/pages/components/range.md b/docs/pages/components/range.md index 2de518b86..6584c3fee 100644 --- a/docs/pages/components/range.md +++ b/docs/pages/components/range.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ; ``` @@ -30,7 +30,7 @@ Use the `label` attribute to give the range an accessible label. For labels that ``` ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ; ``` @@ -44,7 +44,7 @@ Add descriptive help text to a range with the `help-text` attribute. For help te ``` ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ; ``` @@ -58,7 +58,7 @@ Use the `min` and `max` attributes to set the range's minimum and maximum values ``` ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ; ``` @@ -72,7 +72,7 @@ Use the `disabled` attribute to disable a slider. ``` ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ; ``` @@ -86,7 +86,7 @@ By default, the tooltip is shown on top. Set `tooltip` to `bottom` to show it be ``` ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ; ``` @@ -100,7 +100,7 @@ To disable the tooltip, set `tooltip` to `none`. ``` ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ; ``` @@ -121,7 +121,7 @@ You can customize the active and inactive portions of the track using the `--tra {% raw %} ```jsx:react -import { SlRange } from '@shoelace-style/shoelace/dist/react'; +import SlRange from '@shoelace-style/shoelace/dist/react/sl-range'; const App = () => ( ( `Total - ${value}%`} />; ``` diff --git a/docs/pages/components/rating.md b/docs/pages/components/rating.md index 255bc5c06..7c7bfe4f6 100644 --- a/docs/pages/components/rating.md +++ b/docs/pages/components/rating.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ; ``` @@ -26,7 +26,7 @@ Ratings are commonly identified contextually, so labels aren't displayed. Howeve ``` ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ; ``` @@ -40,7 +40,7 @@ Ratings are 0-5 by default. To change the maximum possible value, use the `max` ``` ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ; ``` @@ -54,7 +54,7 @@ Use the `precision` attribute to let users select fractional ratings. ``` ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ; ``` @@ -70,7 +70,7 @@ Set the `--symbol-size` custom property to adjust the size. {% raw %} ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ; ``` @@ -86,7 +86,7 @@ Use the `readonly` attribute to display a rating that users can't change. ``` ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ; ``` @@ -100,7 +100,7 @@ Use the `disable` attribute to disable the rating. ``` ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ; ``` @@ -152,7 +152,7 @@ The event has a payload with `phase` and `value` properties. The `phase` propert ```jsx:react import { useState } from 'react'; -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const terms = ['No rating', 'Terrible', 'Bad', 'OK', 'Good', 'Excellent']; const css = ` @@ -214,7 +214,7 @@ You can provide custom icons by passing a function to the `getSymbol` property. {% raw %} ```jsx:react -import { SlRating } from '@shoelace-style/shoelace/dist/react'; +import SlRating from '@shoelace-style/shoelace/dist/react/sl-rating'; const App = () => ( ; ``` @@ -44,7 +44,7 @@ Use the `sync` attribute to update the displayed value automatically as time pas ``` ```jsx:react -import { SlRelativeTime } from '@shoelace-style/shoelace/dist/react'; +import SlRelativeTime from '@shoelace-style/shoelace/dist/react/sl-relative-time'; const date = new Date(new Date().getTime() - 60000); @@ -62,7 +62,7 @@ You can change how the time is displayed using the `format` attribute. Note that ``` ```jsx:react -import { SlRelativeTime } from '@shoelace-style/shoelace/dist/react'; +import SlRelativeTime from '@shoelace-style/shoelace/dist/react/sl-relative-time'; const App = () => ( <> @@ -88,7 +88,7 @@ Russian: ( <> diff --git a/docs/pages/components/resize-observer.md b/docs/pages/components/resize-observer.md index 9fc72494e..f22431e08 100644 --- a/docs/pages/components/resize-observer.md +++ b/docs/pages/components/resize-observer.md @@ -36,7 +36,7 @@ The resize observer will report changes to the dimensions of the elements it wra ``` ```jsx:react -import { SlResizeObserver } from '@shoelace-style/shoelace/dist/react'; +import SlResizeObserver from '@shoelace-style/shoelace/dist/react/sl-resize-observer'; const css = ` .resize-observer-overview div { diff --git a/docs/pages/components/select.md b/docs/pages/components/select.md index 07a917f6f..5e66276b6 100644 --- a/docs/pages/components/select.md +++ b/docs/pages/components/select.md @@ -17,7 +17,8 @@ layout: component ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -50,7 +51,8 @@ Use the `label` attribute to give the select an accessible label. For labels tha ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -74,7 +76,8 @@ Add descriptive help text to a select with the `help-text` attribute. For help t ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -98,7 +101,8 @@ Use the `placeholder` attribute to add a placeholder. ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -122,7 +126,8 @@ Use the `clearable` attribute to make the control clearable. The clear button on ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -146,7 +151,8 @@ Add the `filled` attribute to draw a filled select. ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -170,7 +176,8 @@ Use the `pill` attribute to give selects rounded edges. ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -194,7 +201,8 @@ Use the `disabled` attribute to disable a select. ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -221,7 +229,8 @@ To allow multiple options to be selected, use the `multiple` attribute. It's a g ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -253,7 +262,9 @@ Use the `value` attribute to set the initial selection. When using `multiple`, u ``` ```jsx:react -import { SlDivider, SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlDivider from '@shoelace-style/shoelace/dist/react/sl-divider'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -283,7 +294,8 @@ Use `` to group listbox items visually. You can also use `` t ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( @@ -326,7 +338,8 @@ Use the `size` attribute to change a select's size. Note that size does not appl ``` ```jsx:react -import { SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( <> @@ -410,7 +423,9 @@ Use the `prefix` slot to prepend an icon to the control. ``` ```jsx:react -import { SlIcon, SlOption, SlSelect } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlOption from '@shoelace-style/shoelace/dist/react/sl-option'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; const App = () => ( <> diff --git a/docs/pages/components/skeleton.md b/docs/pages/components/skeleton.md index ccaa7a1d7..c92236fc6 100644 --- a/docs/pages/components/skeleton.md +++ b/docs/pages/components/skeleton.md @@ -56,7 +56,7 @@ Skeletons try not to be opinionated, as there are endless possibilities for desi ``` ```jsx:react -import { SlSkeleton } from '@shoelace-style/shoelace/dist/react'; +import SlSkeleton from '@shoelace-style/shoelace/dist/react/sl-skeleton'; const css = ` .skeleton-overview header { @@ -139,7 +139,7 @@ There are two built-in effects, `sheen` and `pulse`. Effects are intentionally s ``` ```jsx:react -import { SlSkeleton } from '@shoelace-style/shoelace/dist/react'; +import SlSkeleton from '@shoelace-style/shoelace/dist/react/sl-skeleton'; const css = ` .skeleton-effects { @@ -200,7 +200,7 @@ Use multiple skeletons and some clever styles to simulate paragraphs. ``` ```jsx:react -import { SlSkeleton } from '@shoelace-style/shoelace/dist/react'; +import SlSkeleton from '@shoelace-style/shoelace/dist/react/sl-skeleton'; const css = ` .skeleton-paragraphs sl-skeleton { @@ -265,7 +265,7 @@ Set a matching width and height to make a circle, square, or rounded avatar skel ``` ```jsx:react -import { SlSkeleton } from '@shoelace-style/shoelace/dist/react'; +import SlSkeleton from '@shoelace-style/shoelace/dist/react/sl-skeleton'; const css = ` .skeleton-avatars sl-skeleton { @@ -360,7 +360,7 @@ Use the `--border-radius` custom property to make circles, squares, and rectangl ``` ```jsx:react -import { SlSkeleton } from '@shoelace-style/shoelace/dist/react'; +import SlSkeleton from '@shoelace-style/shoelace/dist/react/sl-skeleton'; const css = ` .skeleton-shapes sl-skeleton { @@ -423,7 +423,7 @@ Set the `--color` and `--sheen-color` custom properties to adjust the skeleton's {% raw %} ```jsx:react -import { SlSkeleton } from '@shoelace-style/shoelace/dist/react'; +import SlSkeleton from '@shoelace-style/shoelace/dist/react/sl-skeleton'; const css = ` .skeleton-avatars sl-skeleton { diff --git a/docs/pages/components/spinner.md b/docs/pages/components/spinner.md index 82353aec4..bded59fde 100644 --- a/docs/pages/components/spinner.md +++ b/docs/pages/components/spinner.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlSpinner } from '@shoelace-style/shoelace/dist/react'; +import SlSpinner from '@shoelace-style/shoelace/dist/react/sl-spinner'; const App = () => ; ``` @@ -30,7 +30,7 @@ Spinners are sized based on the current font size. To change their size, set the {% raw %} ```jsx:react -import { SlSpinner } from '@shoelace-style/shoelace/dist/react'; +import SlSpinner from '@shoelace-style/shoelace/dist/react/sl-spinner'; const App = () => ( <> @@ -54,7 +54,7 @@ The width of the spinner's track can be changed by setting the `--track-width` c {% raw %} ```jsx:react -import { SlSpinner } from '@shoelace-style/shoelace/dist/react'; +import SlSpinner from '@shoelace-style/shoelace/dist/react/sl-spinner'; const App = () => ( ( ( @@ -106,7 +106,7 @@ To set the initial position in pixels instead of a percentage, use the `position {% raw %} ```jsx:react -import { SlSplitPanel } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; const App = () => ( @@ -164,7 +164,7 @@ Add the `vertical` attribute to render the split panel in a vertical orientation {% raw %} ```jsx:react -import { SlSplitPanel } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; const App = () => ( @@ -252,7 +252,7 @@ To snap panels at specific positions while dragging, add the `snap` attribute wi {% raw %} ```jsx:react -import { SlSplitPanel } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; const css = ` .split-panel-snapping { @@ -344,7 +344,7 @@ Add the `disabled` attribute to prevent the divider from being repositioned. {% raw %} ```jsx:react -import { SlSplitPanel } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; const App = () => ( @@ -421,7 +421,9 @@ Try resizing the example below with each option and notice how the panels respon ```jsx:react import { useState } from 'react'; -import { SlSplitPanel, SlSelect, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; const App = () => { const [primary, setPrimary] = useState(''); @@ -498,7 +500,7 @@ This examples demonstrates how you can ensure both panels are at least 150px usi {% raw %} ```jsx:react -import { SlSplitPanel } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; const App = () => ( @@ -566,7 +568,7 @@ Create complex layouts that can be repositioned independently by nesting split p {% raw %} ```jsx:react -import { SlSplitPanel } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; const App = () => ( @@ -641,7 +643,8 @@ You can target the `divider` part to apply CSS properties to the divider. To add {% raw %} ```jsx:react -import { SlSplitPanel, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const App = () => ( @@ -728,7 +731,8 @@ Here's a more elaborate example that changes the divider's color and width and a {% raw %} ```jsx:react -import { SlSplitPanel, SlIcon } from '@shoelace-style/shoelace/dist/react'; +import SlSplitPanel from '@shoelace-style/shoelace/dist/react/sl-split-panel'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; const css = ` .split-panel-divider sl-split-panel { diff --git a/docs/pages/components/switch.md b/docs/pages/components/switch.md index 4a33444f0..6839dee68 100644 --- a/docs/pages/components/switch.md +++ b/docs/pages/components/switch.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const App = () => Switch; ``` @@ -30,7 +30,7 @@ Use the `checked` attribute to activate the switch. ``` ```jsx:react -import { SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const App = () => Checked; ``` @@ -44,7 +44,7 @@ Use the `disabled` attribute to disable the switch. ``` ```jsx:react -import { SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const App = () => Disabled; ``` @@ -62,7 +62,7 @@ Use the `size` attribute to change a switch's size. ``` ```jsx:react -import { SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const App = () => ( <> @@ -86,7 +86,7 @@ Use the available custom properties to change how the switch is styled. {% raw %} ```jsx:react -import { SlSwitch } from '@shoelace-style/shoelace/dist/react'; +import SlSwitch from '@shoelace-style/shoelace/dist/react/sl-switch'; const App = () => ( ( @@ -68,7 +70,9 @@ Tabs can be shown on the bottom by setting `placement` to `bottom`. ``` ```jsx:react -import { SlTab, SlTabGroup, SlTabPanel } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; +import SlTabGroup from '@shoelace-style/shoelace/dist/react/sl-tab-group'; +import SlTabPanel from '@shoelace-style/shoelace/dist/react/sl-tab-panel'; const App = () => ( @@ -112,7 +116,9 @@ Tabs can be shown on the starting side by setting `placement` to `start`. ``` ```jsx:react -import { SlTab, SlTabGroup, SlTabPanel } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; +import SlTabGroup from '@shoelace-style/shoelace/dist/react/sl-tab-group'; +import SlTabPanel from '@shoelace-style/shoelace/dist/react/sl-tab-panel'; const App = () => ( @@ -156,7 +162,9 @@ Tabs can be shown on the ending side by setting `placement` to `end`. ``` ```jsx:react -import { SlTab, SlTabGroup, SlTabPanel } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; +import SlTabGroup from '@shoelace-style/shoelace/dist/react/sl-tab-group'; +import SlTabPanel from '@shoelace-style/shoelace/dist/react/sl-tab-panel'; const App = () => ( @@ -218,7 +226,9 @@ Add the `closable` attribute to a tab to show a close button. This example shows ``` ```jsx:react -import { SlTab, SlTabGroup, SlTabPanel } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; +import SlTabGroup from '@shoelace-style/shoelace/dist/react/sl-tab-group'; +import SlTabPanel from '@shoelace-style/shoelace/dist/react/sl-tab-panel'; const App = () => { function handleClose(event) { @@ -310,7 +320,9 @@ When there are more tabs than horizontal space allows, the nav will be scrollabl ``` ```jsx:react -import { SlTab, SlTabGroup, SlTabPanel } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; +import SlTabGroup from '@shoelace-style/shoelace/dist/react/sl-tab-group'; +import SlTabPanel from '@shoelace-style/shoelace/dist/react/sl-tab-panel'; const App = () => ( @@ -418,7 +430,9 @@ When focused, keyboard users can press [[Left]] or [[Right]] to select the desir ``` ```jsx:react -import { SlTab, SlTabGroup, SlTabPanel } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; +import SlTabGroup from '@shoelace-style/shoelace/dist/react/sl-tab-group'; +import SlTabPanel from '@shoelace-style/shoelace/dist/react/sl-tab-panel'; const App = () => ( diff --git a/docs/pages/components/tab-panel.md b/docs/pages/components/tab-panel.md index b99572459..c5849b73e 100644 --- a/docs/pages/components/tab-panel.md +++ b/docs/pages/components/tab-panel.md @@ -20,7 +20,9 @@ layout: component ``` ```jsx:react -import { SlTab, SlTabGroup, SlTabPanel } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; +import SlTabGroup from '@shoelace-style/shoelace/dist/react/sl-tab-group'; +import SlTabPanel from '@shoelace-style/shoelace/dist/react/sl-tab-panel'; const App = () => ( diff --git a/docs/pages/components/tab.md b/docs/pages/components/tab.md index 5d8d74d45..4789d09b7 100644 --- a/docs/pages/components/tab.md +++ b/docs/pages/components/tab.md @@ -13,7 +13,7 @@ layout: component ``` ```jsx:react -import { SlTab } from '@shoelace-style/shoelace/dist/react'; +import SlTab from '@shoelace-style/shoelace/dist/react/sl-tab'; const App = () => ( <> diff --git a/docs/pages/components/tag.md b/docs/pages/components/tag.md index d4eec8433..d05bf910b 100644 --- a/docs/pages/components/tag.md +++ b/docs/pages/components/tag.md @@ -14,7 +14,7 @@ layout: component ``` ```jsx:react -import { SlTag } from '@shoelace-style/shoelace/dist/react'; +import SlTag from '@shoelace-style/shoelace/dist/react/sl-tag'; const App = () => ( <> @@ -40,7 +40,7 @@ Use the `size` attribute to change a tab's size. ``` ```jsx:react -import { SlTag } from '@shoelace-style/shoelace/dist/react'; +import SlTag from '@shoelace-style/shoelace/dist/react/sl-tag'; const App = () => ( <> @@ -62,7 +62,7 @@ Use the `pill` attribute to give tabs rounded edges. ``` ```jsx:react -import { SlTag } from '@shoelace-style/shoelace/dist/react'; +import SlTag from '@shoelace-style/shoelace/dist/react/sl-tag'; const App = () => ( <> @@ -108,7 +108,7 @@ Use the `removable` attribute to add a remove button to the tag. ``` ```jsx:react -import { SlTag } from '@shoelace-style/shoelace/dist/react'; +import SlTag from '@shoelace-style/shoelace/dist/react/sl-tag'; const css = ` .tags-removable sl-tag { diff --git a/docs/pages/components/textarea.md b/docs/pages/components/textarea.md index 4c31cf8d3..850a76b78 100644 --- a/docs/pages/components/textarea.md +++ b/docs/pages/components/textarea.md @@ -10,7 +10,7 @@ layout: component ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -30,7 +30,7 @@ Use the `label` attribute to give the textarea an accessible label. For labels t ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -44,7 +44,7 @@ Add descriptive help text to a textarea with the `help-text` attribute. For help ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -58,7 +58,7 @@ Use the `rows` attribute to change the number of text rows that get shown. ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -72,7 +72,7 @@ Use the `placeholder` attribute to add a placeholder. ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -86,7 +86,7 @@ Add the `filled` attribute to draw a filled textarea. ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -100,7 +100,7 @@ Use the `disabled` attribute to disable a textarea. ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -118,7 +118,7 @@ Use the `size` attribute to change a textarea's size. ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ( <> @@ -140,7 +140,7 @@ By default, textareas can be resized vertically by the user. To prevent resizing ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` @@ -154,7 +154,7 @@ Textareas will automatically resize to expand to fit their content when `resize` ``` ```jsx:react -import { SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => ; ``` diff --git a/docs/pages/components/tooltip.md b/docs/pages/components/tooltip.md index 0cc4e72d8..abd22d8ff 100644 --- a/docs/pages/components/tooltip.md +++ b/docs/pages/components/tooltip.md @@ -16,7 +16,8 @@ Tooltips use `display: contents` so they won't interfere with how elements are p ``` ```jsx:react -import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => ( @@ -125,7 +126,8 @@ Use the `placement` attribute to set the preferred placement of the tooltip. ``` ```jsx:react -import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const css = ` .tooltip-placement-example { @@ -235,7 +237,8 @@ Set the `trigger` attribute to `click` to toggle the tooltip on click instead of ``` ```jsx:react -import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => ( @@ -267,7 +270,9 @@ Tooltips can be controller programmatically by setting the `trigger` attribute t ```jsx:react import { useState } from 'react'; -import { SlAvatar, SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlAvatar from '@shoelace-style/shoelace/dist/react/sl-avatar'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => { const [open, setOpen] = useState(false); @@ -301,7 +306,8 @@ You can control the size of tooltip arrows by overriding the `--sl-tooltip-arrow {% raw %} ```jsx:react -import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => (
@@ -339,7 +345,8 @@ Use the `content` slot to create tooltips with HTML content. Tooltips are design ``` ```jsx:react -import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => ( @@ -365,7 +372,8 @@ Use the `--max-width` custom property to change the width the tooltip can grow t {% raw %} ```jsx:react -import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const App = () => ( @@ -402,7 +410,8 @@ Tooltips will be clipped if they're inside a container that has `overflow: auto| ``` ```jsx:react -import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlTooltip from '@shoelace-style/shoelace/dist/react/sl-tooltip'; const css = ` .tooltip-hoist { diff --git a/docs/pages/components/tree-item.md b/docs/pages/components/tree-item.md index 2e3cc9546..d4c30bc88 100644 --- a/docs/pages/components/tree-item.md +++ b/docs/pages/components/tree-item.md @@ -20,7 +20,8 @@ layout: component ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => ( @@ -62,7 +63,8 @@ A tree item can contain other tree items. This allows the node to be expanded or ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => ( @@ -102,7 +104,8 @@ Use the `selected` attribute to select a tree item initially. ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => ( @@ -142,7 +145,8 @@ Use the `expanded` attribute to expand a tree item initially. ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => ( diff --git a/docs/pages/components/tree.md b/docs/pages/components/tree.md index 23e5011ec..1e950f3ef 100644 --- a/docs/pages/components/tree.md +++ b/docs/pages/components/tree.md @@ -37,7 +37,8 @@ layout: component ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => ( @@ -118,7 +119,8 @@ The `selection` attribute lets you change the selection behavior of the tree. ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => { const [selection, setSelection] = useState('single'); @@ -197,7 +199,8 @@ Indent guides can be drawn by setting `--indent-guide-width`. You can also chang ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => ( @@ -265,7 +268,8 @@ If you want to disable this behavior after the first load, simply remove the `la ``` ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => { const [childItems, setChildItems] = useState([]); @@ -340,7 +344,8 @@ Use the `expand-icon` and `collapse-icon` slots to change the expand and collaps ```jsx:react -import { SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => ( @@ -424,7 +429,9 @@ Decorative icons can be used before labels to provide hints for each node. ``` ```jsx:react -import { SlIcon, SlTree, SlTreeItem } from '@shoelace-style/shoelace/dist/react'; +import SlIcon from '@shoelace-style/shoelace/dist/react/sl-icon'; +import SlTree from '@shoelace-style/shoelace/dist/react/sl-tree'; +import SlTreeItem from '@shoelace-style/shoelace/dist/react/sl-tree-item'; const App = () => { return ( diff --git a/docs/pages/frameworks/react.md b/docs/pages/frameworks/react.md index b4a91473c..86f208efe 100644 --- a/docs/pages/frameworks/react.md +++ b/docs/pages/frameworks/react.md @@ -39,13 +39,28 @@ Now you can start using components! Every Shoelace component is available to import as a React component. Note that we're importing the `` _React component_ instead of the `` _custom element_ in the example below. ```jsx -import { SlButton } from '@shoelace-style/shoelace/%NPMDIR%/react'; +import SlButton from '@shoelace-style/shoelace/%NPMDIR%/react/button'; const MyComponent = () => Click me; export default MyComponent; ``` +#### Notes about tree shaking + +Previously, it was recommended to import from a single entrypoint like so: + +```jsx +import { SlButton } from '@shoelace-style/shoelace/%NPMDIR%/react'; +``` + +However, tree-shaking extra Shoelace components proved to be a challenge. As a result, we now recommend cherry-picking components you want to use, rather than importing from a single entrypoint. + +```diff +- import { SlButton } from '@shoelace-style/shoelace/%NPMDIR%/react'; ++ import SlButton from '@shoelace-style/shoelace/%NPMDIR%/react/button'; +``` + You can find a copy + paste import for each component in the "importing" section of its documentation. ### Event Handling @@ -56,7 +71,7 @@ Here's how you can bind the input's value to a state variable. ```jsx import { useState } from 'react'; -import { SlInput } from '@shoelace-style/shoelace/%NPMDIR%/react'; +import SlInput from '@shoelace-style/shoelace/%NPMDIR%/react/input'; function MyComponent() { const [value, setValue] = useState(''); @@ -71,7 +86,7 @@ If you're using TypeScript, it's important to note that `event.target` will be a ```tsx import { useState } from 'react'; -import { SlInput } from '@shoelace-style/shoelace/%NPMDIR%/react'; +import SlInput from '@shoelace-style/shoelace/%NPMDIR%/react/input'; import type SlInputElement from '@shoelace-style/shoelace/%NPMDIR%/components/input/input'; function MyComponent() { @@ -87,7 +102,7 @@ You can also import the event type for use in your callbacks, shown below. ```tsx import { useCallback, useState } from 'react'; -import { SlInput, SlInputEvent } from '@shoelace-style/shoelace/%NPMDIR%/react'; +import SlInput, { type SlInputEvent } from '@shoelace-style/shoelace/%NPMDIR%/react/input'; import type SlInputElement from '@shoelace-style/shoelace/%NPMDIR%/components/input/input'; function MyComponent() { @@ -159,7 +174,7 @@ To fix this, add the following to your `package.json` which tells the transpiler ```js { "jest": { - "transformIgnorePatterns": ["node_modules/?!(@shoelace)"] + "transformIgnorePatterns": ["node_modules/(?!(@shoelace))"] } } ``` diff --git a/docs/pages/getting-started/form-controls.md b/docs/pages/getting-started/form-controls.md index 05ebc9aab..2574e492f 100644 --- a/docs/pages/getting-started/form-controls.md +++ b/docs/pages/getting-started/form-controls.md @@ -99,7 +99,12 @@ The form will not be submitted if a required field is incomplete. ``` ```jsx:react -import { SlButton, SlCheckbox, SlInput, SlMenuItem, SlSelect, SlTextarea } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlCheckbox from '@shoelace-style/shoelace/dist/react/sl-checkbox'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; +import SlMenuItem from '@shoelace-style/shoelace/dist/react/sl-menu-item'; +import SlSelect from '@shoelace-style/shoelace/dist/react/sl-select'; +import SlTextarea from '@shoelace-style/shoelace/dist/react/sl-textarea'; const App = () => { function handleSubmit(event) { @@ -160,7 +165,8 @@ To restrict a value to a specific [pattern](https://developer.mozilla.org/en-US/ ``` ```jsx:react -import { SlButton, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => { function handleSubmit(event) { @@ -211,7 +217,8 @@ Some input types will automatically trigger constraints, such as `email` and `ur ``` ```jsx:react -import { SlButton, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => { function handleSubmit(event) { @@ -272,7 +279,8 @@ To create a custom validation error, pass a non-empty string to the `setCustomVa ```jsx:react import { useRef, useState } from 'react'; -import { SlButton, SlInput } from '@shoelace-style/shoelace/dist/react'; +import SlButton from '@shoelace-style/shoelace/dist/react/sl-button'; +import SlInput from '@shoelace-style/shoelace/dist/react/sl-input'; const App = () => { const input = useRef(null); diff --git a/docs/pages/getting-started/installation.md b/docs/pages/getting-started/installation.md index 2d6af34f1..8cae5c29e 100644 --- a/docs/pages/getting-started/installation.md +++ b/docs/pages/getting-started/installation.md @@ -196,7 +196,7 @@ setBasePath('/path/to/shoelace/%NPMDIR% Component modules include side effects for registration purposes. Because of this, importing directly from `@shoelace-style/shoelace` may result in a larger bundle size than necessary. For optimal tree shaking, always cherry pick, i.e. import components and utilities from their respective files, as shown above. ::: -### Avoiding side-effect imports +### Avoiding auto-registering imports By default, imports to components will auto-register themselves. This may not be ideal in all cases. To import just the component's class without auto-registering it's tag we can do the following: diff --git a/docs/pages/resources/changelog.md b/docs/pages/resources/changelog.md index a8d2a327c..82e54c262 100644 --- a/docs/pages/resources/changelog.md +++ b/docs/pages/resources/changelog.md @@ -15,6 +15,7 @@ New versions of Shoelace are released as-needed and generally occur when a criti ## Next - Fixed a bug in `` where pressing [[Up]] or [[Down]] when focused on the trigger wouldn't focus the first/last menu items [#1472] +- Removed `sideEffects` key from `package.json`. Update React docs to use cherry-picking. [#1485] ## 2.6.0 diff --git a/package.json b/package.json index 7c423d108..721e37c1e 100644 --- a/package.json +++ b/package.json @@ -10,17 +10,6 @@ "type": "module", "types": "dist/shoelace.d.ts", "jsdelivr": "./cdn/shoelace-autoloader.js", - "sideEffects": [ - "./dist/shoelace.js", - "./dist/shoelace-autoloader.js", - "./dist/components/**/*.js", - "./dist/chunks/**/*.js", - "./dist/translations/**/*.*", - "./src/translations/**/*.*", - "*.css", - "// COMMENT: This monstrosity below isn't perfect, but its like 99% to get bundlers to recognize 'thing.component.ts' as having no side effects. Example: https://regexr.com/7grof", - "./dist/components/**/*((? { const tagWithoutPrefix = component.tagName.replace(/^sl-/, ''); const componentDir = path.join(reactDir, tagWithoutPrefix); const componentFile = path.join(componentDir, 'index.ts'); - const importPath = component.path; + const importPath = component.path.replace(/\.js$/, '.component.js'); const eventImports = (component.events || []) - .map(event => `import { ${event.eventName} } from '../../../src/events/events';`) + .map(event => `import type { ${event.eventName} } from '../../../src/events/events';`) + .join('\n'); + const eventExports = (component.events || []) + .map(event => `export type { ${event.eventName} } from '../../../src/events/events';`) .join('\n'); const eventNameImport = (component.events || []).length > 0 ? `import { type EventName } from '@lit-labs/react';` : ``; @@ -46,6 +49,7 @@ components.map(component => { ${eventNameImport} ${eventImports} + ${eventExports} const tagName = '${component.tagName}'