packages/palette-react-intl/palette.tsx (264 lines of code) (raw):
import React from "react";
import {
Category,
Component,
Variant,
Palette,
} from "@react-buddy/ide-toolbox";
import {
FormattedDate,
FormattedDateParts,
FormattedDateTimeRange,
FormattedDisplayName,
FormattedList,
FormattedListParts,
FormattedMessage,
FormattedNumber,
FormattedNumberParts,
FormattedPlural,
FormattedRelativeTime,
FormattedTime,
FormattedTimeParts,
useIntl,
} from "react-intl";
export default () => (
<Palette embeddable>
<Category name="Messages">
<Component
name="FormattedMessage"
docURL="https://formatjs.io/docs/react-intl/components#formattedmessage"
>
<Variant>
<FormattedMessage id="messageId" />
</Variant>
<Variant name="with default value">
<FormattedMessage
id="nonexistentMessageId"
defaultMessage="Default message"
values={{ name: "World" }}
/>
</Variant>
<Variant name="with variable">
<FormattedMessage
id="nonexistentMessageId"
defaultMessage="varName = {varName}, in default message"
values={{ varName: "varValue" }}
/>
</Variant>
</Component>
<Component
name="FormattedPlural"
docURL="https://formatjs.io/docs/react-intl/components#formattedplural"
>
<Variant>
<FormattedPlural value={10} one="message" other="messages" />
</Variant>
</Component>
<Component
name="FormattedList"
docURL="https://formatjs.io/docs/react-intl/components#formattedlist"
>
<Variant>
<FormattedList type="conjunction" value={["one", "two", "three"]} />
</Variant>
</Component>
<Component
name="FormattedListParts"
docURL="https://formatjs.io/docs/react-intl/components#formattedlistparts"
>
<Variant>
<FormattedListParts
type="conjunction"
value={["one", "two", "three"]}
>
{(parts) => {
return (
<>
{parts.map((part) => {
return part.value;
})}
</>
);
}}
</FormattedListParts>
</Variant>
</Component>
<Component
name="FormattedDisplayName"
docURL="https://formatjs.io/docs/react-intl/components#formatteddisplayname"
>
<Variant name="Language">
<FormattedDisplayName type="language" value="zh-Hans-SG" />
</Variant>
<Variant name="Currency">
<FormattedDisplayName type="currency" value="JPY" />
</Variant>
</Component>
<Component
name="FormattedNumber"
docURL="https://formatjs.io/docs/react-intl/components#formattednumber"
>
<Variant>
<FormattedNumber value={0} />
</Variant>
<Variant name="Money">
<FormattedNumber value={0} style="currency" currency="USD" />
</Variant>
<Variant name="Integer">
<FormattedNumber value={0} maximumFractionDigits={0} />
</Variant>
</Component>
<Component
name="FormattedNumberParts"
docURL="https://formatjs.io/docs/react-intl/components#formattednumberparts"
>
<Variant>
<FormattedNumberParts value={0}>
{(parts) => {
return (
<>
{parts.map((part) => {
return part.value;
})}
</>
);
}}
</FormattedNumberParts>
</Variant>
</Component>
<Component
name="FormattedDate"
docURL="https://formatjs.io/docs/react-intl/components#formatteddate"
>
<Variant>
<FormattedDate
value={new Date()}
year="numeric"
month="long"
day="2-digit"
/>
</Variant>
</Component>
<Component
name="FormattedDateParts"
docURL="https://formatjs.io/docs/react-intl/components#formatteddateparts"
>
<Variant>
<FormattedDateParts
value={new Date()}
year="numeric"
month="long"
day="2-digit"
>
{(parts) => {
return (
<>
{parts.map((part) => {
return part.value;
})}
</>
);
}}
</FormattedDateParts>
</Variant>
</Component>
<Component
name="FormattedTime"
docURL="https://formatjs.io/docs/react-intl/components#formattedtime"
>
<Variant>
<FormattedTime
value={new Date()}
hour="numeric"
minute="numeric"
hour12={false}
/>
</Variant>
</Component>
<Component
name="FormattedTimeParts"
docURL="https://formatjs.io/docs/react-intl/components#formattedtimeparts"
>
<Variant>
<FormattedTimeParts
value={new Date()}
hour="numeric"
minute="numeric"
hour12={false}
>
{(parts) => {
return (
<>
{parts.map((part) => {
return part.value;
})}
</>
);
}}
</FormattedTimeParts>
</Variant>
</Component>
<Component
name="FormattedDateTimeRange"
docURL="https://formatjs.io/docs/react-intl/components#formatteddatetimerange"
>
<Variant>
<FormattedDateTimeRange
from={new Date("2020-1-1")}
to={new Date("2020-1-15")}
/>
</Variant>
</Component>
<Component
name="FormattedRelativeTime"
docURL="https://formatjs.io/docs/react-intl/components#formattedrelativetime"
>
<Variant>
<FormattedRelativeTime
value={0}
numeric="auto"
updateIntervalInSeconds={1}
/>
</Variant>
</Component>
<Component
name="useIntl"
docURL="https://formatjs.io/docs/react-intl/api#useintl-hook"
>
<Variant proto={UseIntlProto} />
<Variant name="format number" proto={UseIntlFormatNumberProto} />
<Variant name="format date" proto={UseIntlFormatDateProto} />
<Variant name="format time" proto={UseIntlFormatTimeProto} />
<Variant name="format list" proto={UseIntlFormatListProto} />
</Component>
</Category>
</Palette>
);
function UseIntlProto() {
const intl = useIntl();
}
function UseIntlFormatNumberProto() {
const intl = useIntl();
const formattedNumber = intl.formatNumber(20.123, {
style: "decimal",
maximumFractionDigits: 2,
});
}
function UseIntlFormatDateProto() {
const intl = useIntl();
const formattedDate = intl.formatDate(Date.now(), {
year: "numeric",
month: "numeric",
day: "numeric",
});
}
function UseIntlFormatTimeProto() {
const intl = useIntl();
const formattedTime = intl.formatTime(Date.now());
}
function UseIntlFormatListProto() {
const intl = useIntl();
const formattedList = intl.formatList(["Me", "myself", "I"], {
type: "conjunction",
});
}