@app-studio/components
ShareButton
A button that allows users to share content from the web application using the device's native sharing capabilities.
View component sourceImport
ts
import { ShareButton } from '@app-studio/components';New to the library? Complete installation and provider setup first.
Interactive examples
Try the component, then open Code to copy the complete example.
import React from 'react';
import { ShareButton } from '@app-studio/components';
export const DefaultShareButton = () => (
<ShareButton
label="Share this page"
shareData={{
title: 'App Studio',
text: 'Découvrez les composants App Studio.',
url: 'https://appstudio.example.com',
}}
onUnsupported={() =>
alert('Le partage natif est indisponible sur ce navigateur.')
}
/>
);Props
Required props are marked below. A dash indicates an unspecified default. Design system configuration can override implementation defaults.
Scroll horizontally to see every column.
| Prop | Type | Default | Description |
|---|---|---|---|
shareData Required | ShareData | — | See the type and source declaration for this property.Source |
label | View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | — | Visible label describing this control.Source |
onShareStart | (() => void) | — | See the type and source declaration for this property.Source |
onShareSuccess | (() => void) | — | See the type and source declaration for this property.Source |
onShareCancel | (() => void) | — | See the type and source declaration for this property.Source |
onShareError | ((error: unknown) => void) | — | See the type and source declaration for this property.Source |
onUnsupported | (() => void) | — | See the type and source declaration for this property.Source |
disableWhenUnsupported | boolean | true | See the type and source declaration for this property.Source |
onClick | ((...args: any) => any) | — | Called when the user activates the component.Source |
color | string | — | This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015. **Syntax**: `<color>` **Initial value**: `canvastext` | Chrome | Firefox | Safari | Edge | IE | | :----: | :-----: | :----: | :----: | :---: | | **1** | **1** | **1** | **12** | **3** |Source |
children | View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | — | Content rendered inside the component.Source |
reversed | boolean | — | See the type and source declaration for this property.Source |
to | string | — | Destination URL or application route.Source |
keys | any[] | — | See the type and source declaration for this property.Source |
shadow | ViewProps | Shadow | Elevation | — | Shadow or elevation styling.Source |
animation | Animation"borderMoving""animatedStroke""borderReveal" | — | This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015. **Syntax**: `<single-animation>#` | Chrome | Firefox | Safari | Edge | IE | | :-----: | :-----: | :-----: | :----: | :----: | | **43** | **16** | **9** | **12** | **10** | | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |Source |
views | { container?: ViewProps; content?: ViewProps; loader?: ViewProps; icon?: ViewProps; link?: ViewProps; } | — | Style overrides for the named internal parts.Source |
shape | Shape"square""rounded""pill" | — | Shape preset for the component.Source |
size | Size"sm""md""lg""xs""xl" | — | Size preset for the component.Source |
variant | string | — | Visual treatment of the component.Source |
ariaLabel | string | — | [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaLabel)Source |
isDisabled | boolean | — | Disables user interaction.Source |
isLoading | boolean | — | Displays the loading state.Source |
loaderProps | LoaderProps | — | See the type and source declaration for this property.Source |
loaderPosition | LoaderPosition"left""right" | — | See the type and source declaration for this property.Source |
icon | View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | — | Icon rendered alongside the content.Source |
iconPosition | IconPosition"bottom""left""right""top" | — | Position of the icon relative to the content.Source |
isFilled | boolean | — | Expands the component to the available width.Source |
isAuto | boolean | — | Sizes the component to fit its content.Source |
isIconRounded | boolean | — | See the type and source declaration for this property.Source |
isExternal | boolean | — | Opens an external link in a new browsing context.Source |
isIcon | boolean | — | See the type and source declaration for this property.Source |
textColor | string | — | Explicit foreground color for the text.Source |
borderMovingDuration | number | — | See the type and source declaration for this property.Source |
borderMovingGradientColors | string[] | — | See the type and source declaration for this property.Source |
animatedStrokeAccentColor | string | — | See the type and source declaration for this property.Source |
animatedStrokeTextColor | string | — | See the type and source declaration for this property.Source |
config | any | — | See the type and source declaration for this property.Source |
leftIcon | View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | — | See the type and source declaration for this property.Source |
rightIcon | View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | — | See the type and source declaration for this property.Source |
startIcon | View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | — | See the type and source declaration for this property.Source |
endIcon | View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | — | See the type and source declaration for this property.Source |
Common inherited styling props (6)
Scroll horizontally to see every column.
| Prop | Type | Default | Description |
|---|---|---|---|
media | Record<string, CssProps> | — | See the type and source declaration for this property. |
as | keyof JSX.IntrinsicElements"symbol""object""slot""style""title""pattern""form""animate""clipPath""filter""marker""mask""a""abbr""address""area""article""aside""audio""b""base""bdi""bdo""big""blockquote""body""br""button""canvas""caption""center""cite""code""col""colgroup""data""datalist""dd""del""details""dfn""dialog""div""dl""dt""em""embed""fieldset""figcaption""figure""footer""h1""h2""h3""h4""h5""h6""head""header""hgroup""hr""html""i""iframe""img""input""ins""kbd""keygen""label""legend""li""link""main""map""mark""menu""menuitem""meta""meter""nav""noindex""noscript""ol""optgroup""option""output""p""param""picture""pre""progress""q""rp""rt""ruby""s""samp""search""script""section""select""small""source""span""strong""sub""summary""sup""table""template""tbody""td""textarea""tfoot""th""thead""time""tr""track""u""ul""var""video""wbr""webview""svg""animateMotion""animateTransform""circle""defs""desc""ellipse""feBlend""feColorMatrix""feComponentTransfer""feComposite""feConvolveMatrix""feDiffuseLighting""feDisplacementMap""feDistantLight""feDropShadow""feFlood""feFuncA""feFuncB""feFuncG""feFuncR""feGaussianBlur""feImage""feMerge""feMergeNode""feMorphology""feOffset""fePointLight""feSpecularLighting""feSpotLight""feTile""feTurbulence""foreignObject""g""image""line""linearGradient""metadata""mpath""path""polygon""polyline""radialGradient""rect""set""stop""switch""text""textPath""tspan""use""view" | — | See the type and source declaration for this property. |
themeMode | "light" | "dark""light""dark" | — | See the type and source declaration for this property. |
_hover | string | CssProps | — | See the type and source declaration for this property. |
_active | string | CssProps | — | See the type and source declaration for this property. |
_focus | string | CssProps | — | See the type and source declaration for this property. |
For shared layout, color, and responsive properties, read Styling & composition and Responsive layouts. Additional native element attributes depend on the target platform.
Usage guidance
- Give controls a visible label or an accessible name, and verify keyboard interaction. See Accessibility.
- For controlled inputs, update the value from the callback shown in the props table. Keep application state in your component or form library.
- These previews run in the browser. Check React Native setup for platform requirements and differences.