Gestalten Sie Ihre App
Finden Sie heraus, wie Sie UI-Komponenten in Ihrer App formatieren.
Sie können eine Stripe-App mit en von uns bereitgestellten Design-Token gestalten. So können Sie das Dashboard optisch anpassen, für Konsistenz sorgen und eine qualitativ hochwertige Leiste beibehalten.
- Die Komponenten
Box
undInline
unterstützen individuelle Stile. - Andere Komponenten haben voreingestellte Stile, die Sie manchmal anpassen können.
Nutzerdefinierte Stile
Die Komponenten Box und Inline unterstützen individuelle Stile. Box
und Inline
sind gestaltbare Container wie HTML div
und span
. Um sie zu gestalten, verwenden Sie ihre css
-Eigenschaft. Sie verwenden CSS-Syntax, mit einigen Unterschieden zu Vanilla CSS.
<Box css={{ padding: 'xxlarge', color: 'secondary', backgroundColor: 'container', borderRadius: 'small', }} > This is a box. </Box>
Anders als bei Vanilla CSS können Sie nicht beliebige Schriftarten und -stile auswählen. Verwenden Sie die Eigenschaften font
und fontWeight
. Für weitere Informationen, siehe Typographie.
<Inline css={{font: 'body', color: 'primary', fontWeight: 'semibold'}}> This text is emphasized </Inline>
Auch das Layout funktioniert anders als in Vanilla CSS. Stattdessen verwenden Stripe Apps das gleiche Layout-System, das Stripe intern verwendet. Für weitere Informationen, siehe Layout.
<Box css={{ stack: 'x', gap: 'medium', }} > <Box css={{width: '1/4', padding: 'medium', keyline: 'neutral'}} /> <Box css={{width: '3/4', padding: 'medium', keyline: 'neutral'}} /> </Box>
Alle Designtoken werden über TypeScript verfügbar gemacht. Das heißt, Sie erhalten ein Dropdown-Menü im Editor für die automatische Vervollständigung aus den verfügbaren Werten.
Farbe
Legen Sie Farben in Ihren nutzerdefinierten Stilen mit den folgenden Werten fest.
Hintergründe
Um die Hintergrundfarbe einer Box oder Inline-Komponente einzustellen, verwenden Sie die CSS-Eigenschaft backgroundColor
:
<Box css={{ backgroundColor: 'container' }}> Box with a darker background. </Box>
Verwenden Sie die folgenden Token als Werte für backgroundColor
:
Example | Token | Usage |
---|---|---|
surface | Used for the background of apps | |
container | Used for cards and sections within an app |
Ränder
Um einer Box oder Inline Komponente einen Rand hinzuzufügen, verwenden Sie die CSS-Eigenschaft keyline
:
<Box css={{ keyline: 'neutral' }}> Box with a neutral border. </Box>
Verwenden Sie die folgenden Token als Werte für keyline
:
Example | Token | Usage |
---|---|---|
neutral | The default color for all borders and dividers | |
critical | Used for content which is critically urgent to the user |
Text und Symbole
Um eine Farbe für alle Texte oder Symbole in einer Box oder Inline Komponente festzulegen, verwenden Sie die CSS-Eigenschaft color
:
<Box css={{ color: 'success' }}> Box with green text. </Box>
Für ein Symbol, das sich von den anderen untergeordneten Elementen seines Containers abhebt, verwenden Sie fill
. Andernfalls passen die Symbole zu dem sie umgebenden Text.
<Box css={{ color: 'primary' }}> <Icon css={{ fill: 'success' }}/> Box with normal text and a green icon. </Box>
Verwenden Sie die folgenden Token als Werte für color
und fill
:
Example | Token | Usage |
---|---|---|
primary | The default color for text and icons | |
secondary | Used to for text and icons which are less prominent | |
disabled | Used for elements which are disabled | |
info | Used for content that is neutral and informational | |
success | Used for content which indicates the success of some action | |
attention | Used for content which is should grab the user’s attention | |
critical | Used for content which is critically urgent to the user. Should be used sparingly. |
Typografie
Um den Stil von Text in einer Box oder Inline Komponente zu ändern, verwenden Sie die benutzerdefinierte Eigenschaft font
:
<Inline css={{font: 'heading'}}>Heading</Inline>
Folgende Stile sind verfügbar:
Token | Usage | Example |
---|---|---|
heading | Used for labeling a section of your app | The quick brown fox jumps over the lazy dog. |
subheading | Used for labeling content within a section of your app | The quick brown fox jumps over the lazy dog. |
body | Primary body text of the app | The quick brown fox jumps over the lazy dog. |
caption | Used for text that should be less prominent than body text | The quick brown fox jumps over the lazy dog. |
Textüberlauf und -umbruch
Um zu ändern, wie Überlauftext in einer Box Komponente behandelt wird, verwenden Sie die Eigenschaften textOverflow
, overflow
, whiteSpace
und overflowWrap
:
<Box css={{textOverflow: 'ellipsis', overflow: 'hidden', overflowWrap: 'normal'}}> Box where long text is cut off with an ellipsis </Box>
CSS | Usage | Example |
---|---|---|
{textOverflow: 'ellipsis', overflow: 'hidden', overflowWrap: 'normal'} | Used for adding an ellipsis (...) to text that overflows the available space | SupercalifragilisticexpialidociousSupercalifragilisticexpialidociousSupercalifragilisticexpialidocious |
{overflowWrap: 'break-word'} | Used for breaking up long words | SupercalifragilisticexpialidociousSupercalifragilisticexpialidocious |
{whiteSpace: 'nowrap'} | Used to prevent lines from wrapping | This text is too long for the container. |
Weitere Szenarien für Überlauf und Textumbruch finden Sie unter Textumbruch und -umbruch.
Textumwandlung
Sie können Text in einer Box oder Inline Komponente mit der Eigenschaft textTransform
umwandeln:
<Box css={{textTransform: 'uppercase'}}> Box where all text appears uppercase </Box>
Hier sind einige übliche Werte, die für die Eigenschaft textTransform
verwendet werden können:
Token | Usage | Before | After |
---|---|---|---|
capitalize | Used to convert the first letter of each word to uppercase | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet |
uppercase | Used to convert all letters to uppercase | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet |
lowercase | Used to convert all letters to lowercase | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet |
none | Used to prevent the case of letters from being changed | loREM iPSUm DOLor SIt AMet | loREM iPSUm DOLor SIt AMet |
Die vollständige Liste finden Sie unter text-transform.
Textausrichtung
Sie können die Ausrichtung von Text in einer Box-Komponente mit der Eigenschaft textAlign
ändern:
<Box css={{textAlign: 'center'}}> Box where text is centered </Box>
Verwenden Sie die folgenden Token als Werte für textAlign
:
Token | Usage | Example |
---|---|---|
left | Used to algin text to the left | This text is left aligned |
right | Used to align text to the right | This text is right aligned |
start | Used align text to the start direction | This text is start aligned |
end | Used to align text to the end direction | This text is end aligned |
center | Used to center text | This text is centered |
justify | Used to justify text | This is some text that is justified |
Layout
Mit den APIs von Stripe Apps zur Gestaltung des Layouts können Sie Stile schreiben, die unsere Designtoken nutzen können. Außerdem sind sie gegenüber Vanilla-CSS weiter optimiert. Verwenden Sie diese Token in einer Box-Komponente, um das Layout für ihre untergeordneten Elemente zu steuern. Andere Container, wie List, handhaben das Layout automatisch.
Wir konzeptualisieren Layouts als „Stacks“.
Horizontale Stacks
Elemente horizontal stapeln und Breiten anpassen:
<Box css={{ stack: 'x', gap: 'medium', alignX: 'stretch', // This is the default and can be omitted }} >
So stapeln Sie Elemente horizontal mit gebrochenen Breiten:
<Box css={{ stack: 'x', gap: 'medium', }} > <Box css={{width: '1/4', padding: 'medium', keyline: 'neutral'}} /> <Box css={{width: '3/4', padding: 'medium', keyline: 'neutral'}} /> </Box>
So stapeln Sie Elemente horizontal mit einer gebrochenen Breite für ein Element bei Streckung der verbleibenden Elemente:
<Box css={{ stack: 'x', gap: 'medium', }} > <Box css={{padding: 'medium', keyline: 'neutral'}} /> <Box css={{width: '1/4', padding: 'medium', keyline: 'neutral'}} /> <Box css={{padding: 'medium', keyline: 'neutral'}} /> </Box>
So richten Sie Elemente so ein, dass sie mit einem Abstand beginnen:
<Box css={{ stack: 'x', gap: 'medium', alignX: 'start', }} >
So verteilen Sie Elemente:
<Box css={{ stack: 'x', distribute: 'space-between', }} >
So richten Sie Elemente so ein, dass sie mit einem Abstand enden:
<Box css={{ stack: 'x', gap: 'medium', alignX: 'end', }} >
So richten Sie Elemente vertikal nach unten aus:
<Box css={{ stack: 'x', gap: 'medium', alignX: 'start', alignY: 'bottom', }} >
So fügen Sie Trennlinien zwischen den Elementen ein:
<Box css={{ stack: 'x', gap: 'small', alignX: 'start', }} > <Box css={{padding: 'medium', keyline: 'neutral'}} /> <Divider /> <Box css={{padding: 'medium', keyline: 'neutral'}} /> <Divider /> <Box css={{padding: 'medium', keyline: 'neutral'}} /> </Box>
So brechen Sie Elemente in Zeilen um:
<Box css={{ stack: 'x', gap: 'medium', wrap: 'wrap', alignX: 'start', }} >
So richten Sie unterschiedliche horizontale und vertikale Abstände ein:
<Box css={{ stack: 'x', gapX: 'small', gapY: 'large', wrap: 'wrap', alignX: 'start', }} >
So zentrieren Sie Elemente beim Umbruch horizontal:
<Box css={{ stack: 'x', gap: 'medium', wrap: 'wrap', alignX: 'center', }} >
So zentrieren Sie Elemente beim Umbruch vertikal:
<Box css={{ stack: 'x', gap: 'medium', wrap: 'wrap', alignX: 'start', alignY: 'center', }} >
Vertikale Stacks
Elemente vertikal stapeln und Breiten anpassen:
<Box css={{ stack: 'y', gap: 'medium', }} >
So stapeln Sie Elemente vertikal und zentrieren sie horizontal:
<Box css={{ stack: 'y', gap: 'medium', alignX: 'center', }} > <Box css={{width: '1/4', padding: 'medium', keyline: 'neutral'}} /> <Box css={{width: '2/3', padding: 'medium', keyline: 'neutral'}} /> <Box css={{width: '1/3', padding: 'medium', keyline: 'neutral'}} /> </Box>
Geschichtete Stacks
So zeigen Sie Elemente übereinander an:
<Box css={{ stack: 'z', alignX: 'center', alignY: 'center', }} > <Box css={{padding: 'xxlarge', keyline: 'neutral'}} /> <Box css={{padding: 'large', keyline: 'neutral'}} /> <Box css={{padding: 'small', keyline: 'neutral'}} /> </Box>
Layouteigenschaften
Eigenschaft | Werte |
---|---|
alignX | 'start' | 'center' | 'end' | 'stretch' |
alignY | 'top' | 'center' | 'baseline' | 'bottom' | 'stretch' |
distribute | 'space-between' | 'packed' |
gap | Siehe Abstand |
overflowX | overflowY | 'visible' | 'hidden' | 'scroll' | 'auto' |
stack | 'x' | 'y' | 'z' |
wrap | 'wrap' |
Abstände
Sie können Ränder, Füllzeichen und Layoutabstände mithilfe der unten aufgeführten Werte angeben.
<Box css={{margin: 'small'}} />
Token | Wert |
---|---|
0 | 0 Pixel |
xxsmall | 2 Pixel |
xsmall | 4 Pixel |
small | 8 Pixel |
medium | 16 Pixel |
large | 24 Pixel |
xlarge | 32 Pixel |
xxlarge | 48 Pixel |
Größenbestimmung
Sie können die Breite und Höhe mithilfe von Brüchen oder inhaltsbasierten Größentoken angeben.
<Box css={{width: '1/2'}} />
Fraktionale Größenbestimmung
Die verfügbaren Brüche umfassen Hälften, Drittel, Viertel, Fünftel, Sechstel und Zwölftel. Das fill
-Token ermöglicht es einer Komponente, die Größe ihres Containers anzupassen.
Token | Wert |
---|---|
0 | 0 Pixel |
1/2 | 50 % |
1/3 , 2/3 | 33,333333 %, 66,666667 % |
1/4 , 2/4 , 3/4 , | 25 %, 50 %, 75 % |
1/5 , 2/5 , 3/5 , 4/5 | 20 %, 40 %, 60 %, 80 % |
1/6 , 2/6 , 3/6 , 4/6 , 5/6 | 16,666667 %, 33,333333 %, 50 %, 66,666667 %, 83,333333 % |
1/12 , 2/12 , 3/12 , 4/12 , 5/12 , 6/12 , 7/12 , 8/12 , 9/12 , 10/12 , 11/12 | 8,333333 %, 16.,666667 %, 25 %, 33,333333 %, 41,666667 %, 50%, 58,333333 %, 66,666667 %, 75 %, 83,333333 %, 91,666667 % |
fill | 100 % |
Inhaltsbasierte Größenbestimmung
Sie können die Größe einer Box
relativ zu ihrem Inhalt bestimmen.
Token | Nutzung |
---|---|
min | Der Inhalt innerhalb der Komponente nutzt alle Umbruchmöglichkeiten und wird so klein wie die längsten Inhalte. |
max | Stellt die maximal mögliche Breite des Inhalts dar. Bei Anwendung auf Text findet kein Zeilenumbruch statt, selbst wenn der Text dadurch über die Grenzen seines Containers hinausgeht. |
fit | Füllt den verfügbaren Platz aus, aber nur bis zur maximalen Größe des Inhalts. |
Voreingestellte Stile
Andere Komponenten als Box
und Inline
haben voreingestellte Stile, wodurch die Konsistenz erhalten bleibt. Manchmal können Sie die Voreinstellungen auf eine bestimmte Weise steuern oder außer Kraft setzen.
Automatisches Design
Einige Komponenten gestalten sich automatisch. Zum Beispiel ändern Chips automatisch ihr Aussehen, je nachdem, welche Callbacks sie implementieren. Dies hilft Nutzer/innen, ihr Verhalten zu verstehen. Um Verwirrung zu vermeiden, können Sie diese Details nicht überschreiben.
<ChipList> <Chip label="Currency" value="USD" onDropdown={() => { alert('Dropdown function triggered'); }} onClose={() => { alert('Close function triggered'); }} /> <Chip label="Status" value="Succeeded" onDropdown={() => { alert('Dropdown function triggered'); }} onClose={() => { alert('Close function triggered'); }} /> <Chip label="Amount" onAddSuggestion={() => { alert('Add Amount suggestion'); }} /> <Chip label="Date" onAddSuggestion={() => { alert('Add Date suggestion'); }} /> </ChipList>
Mehrere Voreinstellungen
Einige Komponenten, wie z. B. Schaltflächen, verfügen über einige Stile, die Sie über eine Eigenschaft auswählen können. Einzelheiten finden Sie in der Dokumentation der jeweiligen Komponente.
<Button type="primary">Primary</Button> <Button>Secondary</Button> <Button type="destructive">Destructive</Button>
Beschränktes CSS
Einige Komponenten unterstützen bestimmte CSS-Eigenschaften. Zum Beispiel unterstützen Symbole die Farbe mit der Eigenschaft fill
. Einzelheiten finden Sie in der Dokumentation der jeweiligen Komponente.
<Icon name="cancelCircle" css={{fill: 'critical'}} />