Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
<FluentText As="@TextTag.Span">text</FluentText>
<FluentText>just text</FluentText>
<br/>
<FluentText As="@TextTag.Span">text in a span</FluentText>
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,25 @@ The text component codifies Fluent's opinions on typography to make them easy to

Use the text component for plain text. For hypertext, try a [FluentLink](/link) instead.

>[!Note] The Text component does **not** enclose the `ChildContent` in any additional HTML elements by default.
You can use the `As` parameter (of type `TextTag`) to produce semantic HTML elements or specify the tag directly
in the `ChildContent` (e.g., `<p>Some text</p>`).

## Font families

Use the `Font` parameter to choose a font family. Use the monospace font to represent code.

## Alignment

The `Align` parameter allows you to change text alignment. In most cases, start aligned text is the easiest to read. Use other alignments sparingly.

Avoid justified text in web pages. The consistent line length and inconsistent spacing might make scanning information more difficult.

For more info, see our typography guidelines.

## Accessibility
By default, text components result in span elements. Use the as prop to produce semantic HTML.

By default, text components just render the `ChildContent`. Use the `As` parameter to produce semantic HTML.

Avoid using the appearance of a font to convey meaning. Bold and italic text should be used only when necessary, as not all screen readers communicate when text is bold or italicized.

Expand Down
12 changes: 10 additions & 2 deletions src/Core/Components/Text/FluentText.razor
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
<fluent-text id="@Id"
class="@ClassValue"
style="@StyleValue"
as="@As.ToAttributeValue()"
size="@Size.ToAttributeValue()"
weight="@Weight.ToAttributeValue()"
align="@Align.ToAttributeValue()"
Expand All @@ -17,5 +16,14 @@
underline="@Underline"
strikethrough="@Strikethrough"
@attributes=AdditionalAttributes>
@ChildContent
@if (As is { } tag)
{
<AddTag Name="@tag.ToAttributeValue()">
@ChildContent
</AddTag>
}
else
{
@ChildContent
}
</fluent-text>
5 changes: 3 additions & 2 deletions src/Core/Components/Text/FluentText.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ public FluentText(LibraryConfiguration configuration) : base(configuration) { }
.Build();

/// <summary>
/// Gets or sets the tag to be rendered.
/// Gets or sets the tag to surround the <see cref="ChildContent"/> with to create semantic HTML Default to
/// <see langword="null"/> so ChildContent is displayed as provided without any additional wrapping element.
/// </summary>
Comment thread
vnbaaij marked this conversation as resolved.
[Parameter]
public TextTag As { get; set; }
public TextTag? As { get; set; }

/// <summary>
/// Gets or sets the size of the text.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox aria-label="My aria label" autofocus="" checked="true" indeterminate="false" id="xxx" name="xxx" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="true" id="xxx" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
<head></head>
<body>
<fluent-field id="xxx" label-position="after" class="my-3-o">
<label id="xxx" slot="label" for="xxx">Title
</label>
<label id="xxx" slot="label" for="xxx">Title</label>
<fluent-checkbox checked="false" indeterminate="false" id="xxx" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" shape="" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" shape="circular" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" shape="square" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="true" id="xxx" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" size="" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after" size="large">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" size="large" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<body>
<fluent-field id="xxx" label-position="after" size="medium">
<fluent-checkbox checked="false" indeterminate="false" id="xxx" size="medium" value="True" blazor:onfocusout="1" blazor:onchange="2" slot="input" blazor:elementreference="xxx"></fluent-checkbox>
<fluent-text as="span" size="200" slot="message"></fluent-text>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@

<fluent-field label-position="above" class="my-3-o">
<label slot="label" for="xxx">My label
</label>
<div slot="input" id="xxx">Field content</div>
<fluent-text as="span" size="200" slot="message">My message</fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above" class="my-3-o">
<label slot="label" for="xxx">My label</label>
<div slot="input" id="xxx">Field content</div>
<fluent-text size="200" slot="message">My message</fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@

<fluent-field label-position="above" class="my-3-o">
<label slot="label" for="xxx">
My
<b>label</b>
</label>
<div slot="input" id="xxx">
Field content
</div>
<fluent-text as="span" size="200" slot="message">
My
<i>message</i>
</fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above" class="my-3-o">
<label slot="label" for="xxx">
My
<b>label</b>
</label>
<div slot="input" id="xxx">
Field content
</div>
<fluent-text size="200" slot="message">
My
<i>message</i>
</fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@

<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text as="span" size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: currentColor;" focusable="false" viewBox="0 0 24 24" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x" blazor:elementreference="xxx">
<path d="M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20Zm0 8.25a1 1 0 0 0-1 .88v5.74a1 1 0 0 0 2 0v-5.62l-.01-.12a1 1 0 0 0-1-.88Zm0-3.75A1.25 1.25 0 1 0 12 9a1.25 1.25 0 0 0 0-2.5Z"></path>
</svg>My message</fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: currentColor;" focusable="false" viewBox="0 0 24 24" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x" blazor:elementreference="xxx">
<path d="M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20Zm0 8.25a1 1 0 0 0-1 .88v5.74a1 1 0 0 0 2 0v-5.62l-.01-.12a1 1 0 0 0-1-.88Zm0-3.75A1.25 1.25 0 1 0 12 9a1.25 1.25 0 0 0 0-2.5Z"></path>
</svg>My message</fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@

<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text as="span" size="200" slot="message"></fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@

<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text as="span" size="200" slot="message"></fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text size="200" slot="message"></fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@

<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text as="span" size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: var(--error);" focusable="false" viewBox="0 0 20 20" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x">
<path d="M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16ZM7.8 7.11a.5.5 0 0 0-.63.06l-.06.07a.5.5 0 0 0 .06.64L9.3 10l-2.12 2.12-.06.07a.5.5 0 0 0 .06.64l.07.06c.2.13.47.11.64-.06L10 10.7l2.12 2.12.07.06c.2.13.46.11.64-.06l.06-.07a.5.5 0 0 0-.06-.64L10.7 10l2.12-2.12.06-.07a.5.5 0 0 0-.06-.64l-.07-.06a.5.5 0 0 0-.64.06L10 9.3 7.88 7.17l-.07-.06Z"></path>
</svg>
<fluent-text style="color: var(--error);" as="span">An error occurred</fluent-text>
</fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: var(--error);" focusable="false" viewBox="0 0 20 20" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x" blazor:elementreference="xxx">
<path d="M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16ZM7.8 7.11a.5.5 0 0 0-.63.06l-.06.07a.5.5 0 0 0 .06.64L9.3 10l-2.12 2.12-.06.07a.5.5 0 0 0 .06.64l.07.06c.2.13.47.11.64-.06L10 10.7l2.12 2.12.07.06c.2.13.46.11.64-.06l.06-.07a.5.5 0 0 0-.06-.64L10.7 10l2.12-2.12.06-.07a.5.5 0 0 0-.06-.64l-.07-.06a.5.5 0 0 0-.64.06L10 9.3 7.88 7.17l-.07-.06Z"></path>
</svg>
<fluent-text style="color: var(--error);">An error occurred</fluent-text>
</fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@

<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text as="span" size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: var(--success);" focusable="false" viewBox="0 0 20 20" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x">
<path d="M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16Zm3.36 5.65a.5.5 0 0 0-.64-.06l-.07.06L9 11.3 7.35 9.65l-.07-.06a.5.5 0 0 0-.7.7l.07.07 2 2 .07.06c.17.11.4.11.56 0l.07-.06 4-4 .07-.08a.5.5 0 0 0-.06-.63Z"></path>
</svg>
<fluent-text style="color: var(--success);" as="span">Valid data</fluent-text>
</fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: var(--success);" focusable="false" viewBox="0 0 20 20" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x" blazor:elementreference="xxx">
<path d="M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16Zm3.36 5.65a.5.5 0 0 0-.64-.06l-.07.06L9 11.3 7.35 9.65l-.07-.06a.5.5 0 0 0-.7.7l.07.07 2 2 .07.06c.17.11.4.11.56 0l.07-.06 4-4 .07-.08a.5.5 0 0 0-.06-.63Z"></path>
</svg>
<fluent-text style="color: var(--success);">Valid data</fluent-text>
</fluent-text>
</fluent-field>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@

<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text as="span" size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: var(--warning);" focusable="false" viewBox="0 0 20 20" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x">
<path d="M8.68 2.79a1.5 1.5 0 0 1 2.64 0l6.5 12A1.5 1.5 0 0 1 16.5 17h-13a1.5 1.5 0 0 1-1.32-2.21l6.5-12ZM10.5 7.5a.5.5 0 0 0-1 0v4a.5.5 0 0 0 1 0v-4Zm.25 6.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path>
</svg>
<fluent-text style="color: var(--info);" as="span">Please, check this value</fluent-text>
</fluent-text>
</fluent-field>
<html>
<head></head>
<body>
<fluent-field label-position="above">
<div slot="input" id="xxx">Field content</div>
<fluent-text size="200" slot="message">
<svg style="margin: 0px 4px 0px 0px; width: 12px; fill: var(--warning);" focusable="false" viewBox="0 0 20 20" aria-hidden="true" blazor:onkeydown="x" blazor:onclick="x" blazor:elementreference="xxx">
<path d="M8.68 2.79a1.5 1.5 0 0 1 2.64 0l6.5 12A1.5 1.5 0 0 1 16.5 17h-13a1.5 1.5 0 0 1-1.32-2.21l6.5-12ZM10.5 7.5a.5.5 0 0 0-1 0v4a.5.5 0 0 0 1 0v-4Zm.25 6.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path>
</svg>
<fluent-text style="color: var(--info);">Please, check this value</fluent-text>
</fluent-text>
</fluent-field>
</body>
</html>
Loading
Loading