Compare commits

...

12 Commits

Author SHA1 Message Date
Efraín Rochín 539489e41a Merge branch 'main' into chor/text-colors+weights
# Conflicts:
#	yarn.lock
2023-03-05 18:50:52 -07:00
Efraín Rochín aeb36652df Merge branch 'main' into chor/text-colors+weights 2023-03-03 20:34:14 -07:00
sean-brydon 909b343e6b Merge remote-tracking branch 'origin/main' into chor/text-colors+weights 2023-01-16 11:39:17 +00:00
sean-brydon 5bc848ad18 Updarte stories 2023-01-16 11:21:56 +00:00
sean-brydon f248686642 Update story 2023-01-16 11:17:46 +00:00
sean-brydon fb85a2d6f2 Update Base + add multiline support 2023-01-16 11:01:13 +00:00
sean-brydon e1f8bcec68 Adding styles to p and small 2023-01-16 10:47:28 +00:00
Peer Richelsen c5077f098f
Merge branch 'main' into chor/text-colors+weights 2023-01-14 00:33:48 +01:00
sean-brydon 91eded9834 All packages headings 2023-01-13 11:35:29 +00:00
sean-brydon c8b4cbb95f h3 changes 2023-01-13 11:17:05 +00:00
sean-brydon 2de9f41978 Remove h1,h2 styles across app 2023-01-13 11:11:19 +00:00
sean-brydon 9825f7c206 Base h1-h2-h3 styles 2023-01-13 11:11:02 +00:00
79 changed files with 294 additions and 965 deletions

1
apps/api Submodule

@ -0,0 +1 @@
Subproject commit 7aebdb8c966f472383cf55e8da31e9655102e775

1
apps/console Submodule

@ -0,0 +1 @@
Subproject commit 9aac72159ef357db240ef6d4d897f7322c843b6a

View File

@ -3,6 +3,7 @@ const path = require("path");
module.exports = {
stories: [
"../intro.stories.mdx",
"../text.stories.mdx",
"../../../packages/ui/components/**/*.stories.mdx",
"../../../packages/features/**/*.stories.mdx",
"../../../packages/ui/components/**/*.stories.@(js|jsx|ts|tsx)",

View File

@ -11,7 +11,7 @@ export const Title = ({
}) => {
return (
<div className={`story-title ${offset && "offset"}`}>
<h1>
<h1 className="story-heading-1">
{title}
{suffix && <span>{suffix}</span>}
</h1>

View File

@ -3,5 +3,10 @@ const base = require("@calcom/config/tailwind-preset");
module.exports = {
...base,
darkMode: ["class", '[data-mode="dark"]'],
content: [...base.content, "../../packages/ui/**/*.{js,ts,jsx,tsx,mdx}", "./stories/**/*.{js,ts,tsx,jsx}"],
content: [
...base.content,
"../../packages/ui/**/*.{js,ts,jsx,tsx,mdx}",
"./stories/**/*.{js,ts,tsx,jsx}",
"./text.stories.mdx",
],
};

View File

@ -0,0 +1,72 @@
import { Meta } from "@storybook/addon-docs";
import {
Examples,
Example,
Note,
Title,
VariantsTable,
VariantColumn,
RowTitles,
CustomArgsTable,
} from "@calcom/storybook/components";
<Meta title="Typography" />
<Title title="Typography" suffix="Brief" subtitle="Version 2.0 — Last Update: 22 Aug 2022" />
## Definition
Typography style guide for Cal.com applications. Please view the STORY of this to see correct styles. We override storybook headings in doc mode
to create our template. Thus the headings in the story are not the correct styles while viewing in DOCS.
<Canvas>
<Story name="Heading Stlyes">
<div className="flex flex-col space-y-5 p-4">
<div>
<h1>Heading One text</h1>
<p className="title-1">Paragraph has heading One applied by `title-1`</p>
</div>
<div>
<h2>Heading Two text</h2>
<p className="title-2">Paragraph has heading Two applied by `title-2`</p>
</div>
<div>
<h3>Heading Three text</h3>
<p className="title-3">Paragraph has heading Three applied by `title-3`</p>
</div>
</div>
<div className="dark flex flex-col space-y-5 bg-darkgray-50 p-4">
<div>
<h1>Heading One text</h1>
<p className="title-1">Paragraph has heading One applied by `title-1`</p>
</div>
<div>
<h2>Heading Two text</h2>
<p className="title-2">Paragraph has heading Two applied by `title-2`</p>
</div>
<div>
<h3>Heading Three text</h3>
<p className="title-3">Paragraph has heading Three applied by `title-3`</p>
</div>
</div>
</Story>
<Story name="Text Stlyes">
<div>
<Example title="Paragraph">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam malesuada finibus nulla nec commodo. Cras vel sem ac tortor vestibulum placerat. Maecenas et lectus quis purus gravida mollis vel et dolor. In pellentesque sapien tellus, ut semper risus maximus eu. Suspendisse at vehicula lectus, eu efficitur metus. Praesent aliquet dictum sem ac lacinia. Nulla facilisi. Vestibulum ut suscipit tortor. Fusce interdum vitae dui ut maximus.</p>
</Example>
<Example title="Small">
<small>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam malesuada finibus nulla nec commodo. Cras vel sem ac tortor vestibulum placerat. Maecenas et lectus quis purus gravida mollis vel et dolor. In pellentesque sapien tellus, ut semper risus maximus eu. Suspendisse at vehicula lectus, eu efficitur metus. Praesent aliquet dictum sem ac lacinia. Nulla facilisi. Vestibulum ut suscipit tortor. Fusce interdum vitae dui ut maximus.</small>
</Example>
</div>
<div className="dark bg-darkgray-50">
<Example title="Paragraph">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam malesuada finibus nulla nec commodo. Cras vel sem ac tortor vestibulum placerat. Maecenas et lectus quis purus gravida mollis vel et dolor. In pellentesque sapien tellus, ut semper risus maximus eu. Suspendisse at vehicula lectus, eu efficitur metus. Praesent aliquet dictum sem ac lacinia. Nulla facilisi. Vestibulum ut suscipit tortor. Fusce interdum vitae dui ut maximus.</p>
</Example>
<Example title="Small">
<small>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam malesuada finibus nulla nec commodo. Cras vel sem ac tortor vestibulum placerat. Maecenas et lectus quis purus gravida mollis vel et dolor. In pellentesque sapien tellus, ut semper risus maximus eu. Suspendisse at vehicula lectus, eu efficitur metus. Praesent aliquet dictum sem ac lacinia. Nulla facilisi. Vestibulum ut suscipit tortor. Fusce interdum vitae dui ut maximus.</small>
</Example>
</div>
</Story>
</Canvas>

View File

@ -68,7 +68,7 @@ export default function AppListCard(props: AppListCardProps) {
{logo ? <img className="h-10 w-10" src={logo} alt={`${title} logo`} /> : null}
<div className="flex grow flex-col gap-y-1 truncate">
<div className="flex items-center gap-x-2">
<h3 className="truncate text-sm font-semibold text-gray-900">{title}</h3>
<h3 className="truncate">{title}</h3>
<div className="flex items-center gap-x-2">
{isDefault && <Badge variant="green">{t("default")}</Badge>}
{isTemplate && <Badge variant="red">Template</Badge>}

View File

@ -631,7 +631,7 @@ const ChooseEmbedTypesDialogContent = () => {
return (
<DialogContent type="creation" size="lg">
<div className="mb-4">
<h3 className="text-lg font-bold leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{t("how_you_want_add_cal_site", { appName: APP_NAME })}
</h3>
<div>
@ -812,7 +812,7 @@ const EmbedTypeCodeAndPreviewDialogContent = ({
<DialogContent size="xl" className="p-0.5" type="creation">
<div className="flex">
<div className="flex w-1/3 flex-col bg-gray-50 p-8">
<h3 className="mb-2 flex text-xl font-bold leading-6 text-gray-900" id="modal-title">
<h3 className="mb-2 flex leading-6" id="modal-title">
<button
onClick={() => {
removeQueryParams(router, ["embedType", "embedTabName"]);

View File

@ -123,7 +123,7 @@ export default function ImageUploader({
<DialogContent>
<div className="mb-4 sm:flex sm:items-start">
<div className="mt-3 text-center sm:mt-0 sm:text-left">
<h3 className="font-cal text-lg leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{t("upload_target", { target })}
</h3>
</div>

View File

@ -107,9 +107,9 @@ const Component = ({
<header>
<div className="mb-4 flex items-center">
<img className="min-h-16 min-w-16 h-16 w-16" src={logo} alt={name} />
<h1 className="font-cal ml-4 text-3xl text-gray-900">{name}</h1>
<h1 className="ml-4">{name}</h1>
</div>
<h2 className="text-sm font-medium text-gray-600">
<h2 className="">
<Link
href={`categories/${categories[0]}`}
className="rounded-md bg-gray-100 p-1 text-xs capitalize text-gray-800">

View File

@ -289,7 +289,7 @@ export function CalendarListContainer(props: { heading?: boolean; fromOnboarding
/>
</div>
<div className="md:w-6/12">
<h1 className="text-sm font-semibold">{t("create_events_on")}</h1>
<h1>{t("create_events_on")}</h1>
<p className="text-sm font-normal">{t("set_calendar")}</p>
</div>
<div className="justify-end md:w-6/12">

View File

@ -81,12 +81,8 @@ const BookingDescription: FC<Props> = (props) => {
size="sm"
truncateAfter={3}
/>
<h2 className="mt-2 break-words text-sm font-medium text-gray-600 dark:text-gray-300">
{profile.name}
</h2>
<h1 className="font-cal dark:text-darkgray-900 mb-6 break-words text-2xl font-semibold text-gray-900">
{eventType.title}
</h1>
<h2 className="mt-2 break-words ">{profile.name}</h2>
<h1 className="break-words">{eventType.title}</h1>
<div className="dark:text-darkgray-600 flex flex-col space-y-4 text-sm font-medium text-gray-600">
{eventType?.description && (
<div

View File

@ -43,7 +43,7 @@ export default function CancelBooking(props: Props) {
<FiX className="h-6 w-6 text-red-600" />
</div>
<div className="mt-3 text-center sm:mt-5">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{error}
</h3>
</div>

View File

@ -219,7 +219,7 @@ export const EditLocationDialog = (props: ISetLocationDialog) => {
</div>
<div className="w-full">
<div className="mt-3 text-center sm:mt-0 sm:text-left">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{t("edit_location")}
</h3>
{!booking && (

View File

@ -83,9 +83,7 @@ export const EventAppsTab = ({ eventType }: { eventType: EventType }) => {
</div>
</div>
<div>
{!isLoading && notInstalledApps?.length ? (
<h2 className="mt-0 mb-2 text-lg font-semibold text-gray-900">Available Apps</h2>
) : null}
{!isLoading && notInstalledApps?.length ? <h2 className="mt-0 mb-2 ">Available Apps</h2> : null}
<div className="before:border-0">
{notInstalledApps?.map((app) => (
<EventTypeAppCard

View File

@ -62,7 +62,7 @@ const ChangePasswordSection = () => {
<form className="divide-y divide-gray-200 lg:col-span-9" onSubmit={changePasswordHandler}>
<div className="py-6 lg:pb-5">
<div className="my-3">
<h2 className="font-cal text-lg font-medium leading-6 text-gray-900">{t("change_password")}</h2>
<h2 className="fleading-6">{t("change_password")}</h2>
</div>
<div className="flex flex-col space-y-2 sm:flex-row sm:space-y-0">
<div className="w-full ltr:mr-2 rtl:ml-2 sm:w-1/2">

View File

@ -22,9 +22,7 @@ const DisableUserImpersonation = ({ disableImpersonation }: { disableImpersonati
<div className="flex flex-col justify-between pt-9 pl-2 sm:flex-row">
<div>
<div className="flex flex-row items-center">
<h2 className="font-cal text-lg font-medium leading-6 text-gray-900">
{t("user_impersonation_heading")}
</h2>
<h2 className="leading-6">{t("user_impersonation_heading")}</h2>
<Badge className="ml-2 text-xs" variant={!disableImpersonation ? "success" : "gray"}>
{!disableImpersonation ? t("enabled") : t("disabled")}
</Badge>

View File

@ -17,7 +17,7 @@ const TwoFactorAuthSection = ({ twoFactorEnabled }: { twoFactorEnabled: boolean
<div className="flex flex-col justify-between pt-9 pl-2 sm:flex-row">
<div>
<div className="flex flex-row items-center">
<h2 className="font-cal text-lg font-medium leading-6 text-gray-900">{t("2fa")}</h2>
<h2>{t("2fa")}</h2>
<Badge className="ml-2 text-xs" variant={enabled ? "success" : "gray"}>
{enabled ? t("enabled") : t("disabled")}
</Badge>

View File

@ -7,7 +7,7 @@ const TwoFactorModalHeader = ({ title, description }: { title: string; descripti
<FiShield className="h-6 w-6 text-white" />
</div>
<div className="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
<h3 className="font-cal text-lg font-medium leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{title}
</h3>
<p className="text-sm text-gray-400">{description}</p>

View File

@ -27,7 +27,7 @@ const StepDone = (props: {
<FiCheck className="inline-block h-10 w-10 text-white dark:bg-white dark:text-gray-600" />
</div>
<div className="max-w-[420px] text-center">
<h2 className="mt-6 mb-1 text-lg font-medium dark:text-gray-300">{t("all_done")}</h2>
<h2 className="mt-6 mb-1 ">{t("all_done")}</h2>
</div>
</div>
</form>

View File

@ -24,7 +24,7 @@ export default function AuthContainer(props: React.PropsWithChildren<Props>) {
)}
<div className={classNames(props.showLogo ? "text-center" : "", "sm:mx-auto sm:w-full sm:max-w-md")}>
{props.heading && <h2 className="font-cal text-center text-3xl text-gray-900">{props.heading}</h2>}
{props.heading && <h2 className="text-center">{props.heading}</h2>}
</div>
{props.loading && (
<div className="absolute z-50 flex h-screen w-full items-center bg-gray-50">

View File

@ -65,9 +65,7 @@ export default function Custom404() {
<p className="mt-4">{t("signup_requires_description", { companyName: COMPANY_NAME })}</p>
</div>
<div className="mt-12">
<h2 className="text-sm font-semibold uppercase tracking-wide text-gray-500">
{t("next_steps")}
</h2>
<h2 className=" uppercase tracking-wide ">{t("next_steps")}</h2>
<ul role="list" className="mt-4">
<li className="border-2 border-green-500 px-4 py-2">
<a
@ -79,7 +77,7 @@ export default function Custom404() {
</span>
</div>
<div className="min-w-0 flex-1">
<h3 className="text-base font-medium text-gray-900">
<h3>
<span className="rounded-sm focus-within:ring-2 focus-within:ring-gray-500 focus-within:ring-offset-2">
<span className="focus:outline-none">
<span className="absolute inset-0" aria-hidden="true" />
@ -107,7 +105,7 @@ export default function Custom404() {
</span>
</div>
<div className="min-w-0 flex-1">
<h3 className="text-base font-medium text-gray-900">
<h3>
<span className="rounded-sm focus-within:ring-2 focus-within:ring-gray-500 focus-within:ring-offset-2">
<span className="absolute inset-0" aria-hidden="true" />
{t("prisma_studio_tip")}
@ -152,7 +150,7 @@ export default function Custom404() {
</span>
</div>
<div className="min-w-0 flex-1">
<h3 className="text-base font-medium text-gray-900">
<h3>
<span className="rounded-sm focus-within:ring-2 focus-within:ring-gray-500 focus-within:ring-offset-2">
<span className="absolute inset-0" aria-hidden="true" />
Slack
@ -205,9 +203,7 @@ export default function Custom404() {
)}
</div>
<div className="mt-12">
<h2 className="text-sm font-semibold uppercase tracking-wide text-gray-500">
{t("popular_pages")}
</h2>
<h2 className=" uppercase ">{t("popular_pages")}</h2>
{!isSubpage && isCalcom && (
<ul role="list" className="mt-4">
<li className="border-2 border-green-500 px-4 py-2">
@ -222,7 +218,7 @@ export default function Custom404() {
</span>
</div>
<div className="min-w-0 flex-1">
<h3 className="text-base font-medium text-gray-900">
<h3>
<span className="rounded-sm focus-within:ring-2 focus-within:ring-gray-500 focus-within:ring-offset-2">
<span className="focus:outline-none">
<span className="absolute inset-0" aria-hidden="true" />
@ -252,7 +248,7 @@ export default function Custom404() {
</span>
</div>
<div className="min-w-0 flex-1">
<h3 className="text-base font-medium text-gray-900">
<h3>
<span className="rounded-sm focus-within:ring-2 focus-within:ring-gray-500 focus-within:ring-offset-2">
<span className="absolute inset-0" aria-hidden="true" />
{link.title}
@ -298,7 +294,7 @@ export default function Custom404() {
</span>
</div>
<div className="min-w-0 flex-1">
<h3 className="text-base font-medium text-gray-900">
<h3>
<span className="rounded-sm focus-within:ring-2 focus-within:ring-gray-500 focus-within:ring-offset-2">
<span className="absolute inset-0" aria-hidden="true" />
Slack

View File

@ -18,7 +18,7 @@ export default function Error500() {
</Head>
<div className="rtl: m-auto rounded-md bg-white p-10 text-right ltr:text-left">
<h1 className="font-cal text-6xl text-black">500</h1>
<h2 className="mt-6 text-2xl font-medium text-black">It&apos;s not you, it&apos;s us.</h2>
<h2 className="mt-6 ">It&apos;s not you, it&apos;s us.</h2>
<p className="mt-4 mb-6 max-w-2xl text-sm text-gray-600">
Something went wrong on our end. Get in touch with our support team, and well get it fixed right
away for you.

View File

@ -49,7 +49,7 @@ export default function User(props: inferSSRProps<typeof getServerSideProps> & E
<div className="space-y-6" data-testid="event-types">
<div className="overflow-hidden rounded-sm border dark:border-gray-900">
<div className="p-8 text-center text-gray-400 dark:text-white">
<h2 className="font-cal mb-2 text-3xl text-gray-600 dark:text-white">{" " + t("unavailable")}</h2>
<h2 className="mb-2">{" " + t("unavailable")}</h2>
<p className="mx-auto max-w-md">{t("user_dynamic_booking_disabled") as string}</p>
</div>
</div>
@ -136,7 +136,7 @@ export default function User(props: inferSSRProps<typeof getServerSideProps> & E
{isSingleUser && ( // When we deal with a single user, not dynamic group
<div className="mb-8 text-center">
<Avatar imageSrc={user.avatar} size="xl" alt={nameOrUsername} />
<h1 className="font-cal mb-1 text-3xl text-gray-900 dark:text-white">
<h1 className="mb-1">
{nameOrUsername}
{user.verified && (
<BadgeCheckIcon className="mx-1 -mt-1 inline h-6 w-6 text-blue-500 dark:text-white" />
@ -161,9 +161,7 @@ export default function User(props: inferSSRProps<typeof getServerSideProps> & E
{user.away ? (
<div className="overflow-hidden rounded-sm border dark:border-gray-900">
<div className="p-8 text-center text-gray-400 dark:text-white">
<h2 className="font-cal mb-2 text-3xl text-gray-600 dark:text-white">
😴{" " + t("user_away")}
</h2>
<h2 className="mb-2">😴{" " + t("user_away")}</h2>
<p className="mx-auto max-w-md">{t("user_away_description") as string}</p>
</div>
</div>
@ -191,9 +189,7 @@ export default function User(props: inferSSRProps<typeof getServerSideProps> & E
className="block w-full p-5"
data-testid="event-type-link">
<div className="flex flex-wrap items-center">
<h2 className="dark:text-darkgray-700 pr-2 text-sm font-semibold text-gray-700">
{type.title}
</h2>
<h2 className="pr-2 ">{type.title}</h2>
</div>
<EventTypeDescription eventType={type} />
</Link>

View File

@ -25,9 +25,7 @@ export default function Type(props: AvailabilityPageProps) {
<div className="space-y-6" data-testid="event-types">
<div className="overflow-hidden rounded-sm border dark:border-gray-900">
<div className="p-8 text-center text-gray-400 dark:text-white">
<h2 className="font-cal mb-2 text-3xl text-gray-600 dark:text-white">
😴{" " + t("user_away")}
</h2>
<h2 className="t mb-2">😴{" " + t("user_away")}</h2>
<p className="mx-auto max-w-md">{t("user_away_description")}</p>
</div>
</div>
@ -40,9 +38,7 @@ export default function Type(props: AvailabilityPageProps) {
<div className="space-y-6" data-testid="event-types">
<div className="overflow-hidden rounded-sm border dark:border-gray-900">
<div className="p-8 text-center text-gray-400 dark:text-white">
<h2 className="font-cal mb-2 text-3xl text-gray-600 dark:text-white">
{" " + t("unavailable")}
</h2>
<h2 className="mb-2 ">{" " + t("unavailable")}</h2>
<p className="mx-auto max-w-md">{t("user_dynamic_booking_disabled")}</p>
</div>
</div>

View File

@ -39,9 +39,7 @@ export default function Book(props: BookPageProps) {
<div className="space-y-6" data-testid="event-types">
<div className="overflow-hidden rounded-sm border dark:border-gray-900">
<div className="p-8 text-center text-gray-400 dark:text-white">
<h2 className="font-cal mb-2 text-3xl text-gray-600 dark:text-white">
😴{" " + t("user_away")}
</h2>
<h2 className=" mb-2 ">😴{" " + t("user_away")}</h2>
<p className="mx-auto max-w-md">{t("user_away_description")}</p>
</div>
</div>
@ -54,9 +52,7 @@ export default function Book(props: BookPageProps) {
<div className="space-y-6" data-testid="event-types">
<div className="overflow-hidden rounded-sm border dark:border-gray-900">
<div className="p-8 text-center text-gray-400 dark:text-white">
<h2 className="font-cal mb-2 text-3xl text-gray-600 dark:text-white">
{" " + t("unavailable")}
</h2>
<h2 className="mb-2">{" " + t("unavailable")}</h2>
<p className="mx-auto max-w-md">{t("user_dynamic_booking_disabled")}</p>
</div>
</div>

View File

@ -29,7 +29,7 @@ export default function Apps({ categories }: InferGetStaticPropsType<typeof getS
data-testid={`app-store-category-${category.name}`}
className="relative flex rounded-sm bg-gray-100 px-6 py-4 sm:block">
<div className="self-center">
<h3 className="font-medium capitalize">{category.name}</h3>
<h3 className="capitalize">{category.name}</h3>
<p className="text-sm text-gray-500">
{t("number_apps", { count: category.count })}{" "}
<FiArrowRight className="inline-block h-4 w-4" />

View File

@ -32,7 +32,7 @@ export default function Error() {
<FiX className="h-6 w-6 text-red-600" />
</div>
<div className="mt-3 text-center sm:mt-5">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6 " id="modal-title">
{error}
</h3>
<div className="mt-2">

View File

@ -59,9 +59,7 @@ export default function Page({ resetPasswordRequest, csrfToken }: Props) {
<>
<div className="space-y-6">
<div>
<h2 className="font-cal mt-6 text-center text-3xl font-extrabold text-gray-900">
{t("password_updated")}
</h2>
<h2 className="mt-6 text-center">{t("password_updated")}</h2>
</div>
<Button href="/auth/login" className="w-full justify-center">
{t("login")}
@ -76,8 +74,8 @@ export default function Page({ resetPasswordRequest, csrfToken }: Props) {
<>
<div className="space-y-6">
<div>
<h2 className="font-cal mt-6 text-center text-3xl font-extrabold text-gray-900">{t("whoops")}</h2>
<h2 className="text-center text-3xl font-extrabold text-gray-900">{t("request_is_expired")}</h2>
<h2 className="mt-6 text-center ">{t("whoops")}</h2>
<h3 className="text-center ">{t("request_is_expired")}</h3>
</div>
<p>{t("request_is_expired_instructions")}</p>
<Link href="/auth/forgot-password" passHref legacyBehavior>

View File

@ -35,7 +35,7 @@ export default function Logout(props: Props) {
<FiCheck className="h-6 w-6 text-green-600" />
</div>
<div className="mt-3 text-center sm:mt-5">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{t("youve_been_logged_out")}
</h3>
<div className="mt-2">

View File

@ -124,7 +124,7 @@ export default function Verify() {
<MailOpenIcon className="h-12 w-12 flex-shrink-0 p-0.5 font-extralight text-white" />
)}
</div>
<h3 className="font-cal my-6 text-3xl font-normal">
<h3 className="my-6">
{hasPaymentFailed
? "Your payment failed"
: sessionId

View File

@ -52,8 +52,8 @@ const DateOverride = ({ workingHours }: { workingHours: WorkingHours[] }) => {
});
const { t } = useLocale();
return (
<div className="p-6">
<h3 className="font-medium leading-6 text-gray-900">
<div className="px-4 py-5 sm:p-6">
<h3>
{t("date_overrides")}{" "}
<Tooltip content={t("date_overrides_info")}>
<span className="inline-block">
@ -277,9 +277,9 @@ export default function Availability() {
}
/>
</div>
<hr className="my-6 mr-8" />
<hr className="my-8" />
<div className="hidden rounded-md md:block">
<h3 className="text-sm font-medium text-gray-900">{t("something_doesnt_look_right")}</h3>
<h3>{t("something_doesnt_look_right")}</h3>
<div className="mt-3 flex">
<Button href="/availability/troubleshoot" color="secondary">
{t("launch_troubleshooter")}

View File

@ -424,7 +424,7 @@ export default function Success(props: SuccessProps) {
</div>
<div className="mt-6 mb-8 text-center last:mb-0">
<h3
className="text-2xl font-semibold leading-6 text-gray-900 dark:text-white"
className="leading-6 "
data-testid={isCancelled ? "cancelled-headline" : ""}
id="modal-headline">
{needsConfirmation && !isCancelled

View File

@ -21,7 +21,7 @@ const CtaRow = ({ title, description, className, children }: CtaRowProps) => {
<>
<section className={classNames("flex flex-col sm:flex-row", className)}>
<div>
<h2 className="font-medium">{title}</h2>
<h2>{title}</h2>
<p>{description}</p>
</div>
<div className="flex-shrink-0 pt-3 sm:ml-auto sm:pt-0 sm:pl-3">{children}</div>

View File

@ -112,7 +112,7 @@ const PasswordView = () => {
{user && user.identityProvider !== IdentityProvider.CAL ? (
<div>
<div className="mt-6">
<h2 className="font-cal text-lg font-medium leading-6 text-gray-900">
<h2 className="text-lg leading-6">
{t("account_managed_by_identity_provider", {
provider: identityProviderNameMap[user.identityProvider],
})}

View File

@ -79,9 +79,7 @@ export default function Signup({ prepopulateFormValues }: inferSSRProps<typeof g
aria-modal="true">
<HeadSeo title={t("sign_up")} description={t("sign_up")} />
<div className="sm:mx-auto sm:w-full sm:max-w-md">
<h2 className="font-cal text-center text-3xl font-extrabold text-gray-900">
{t("create_your_account")}
</h2>
<h2 className="text-center">{t("create_your_account")}</h2>
</div>
<div className="mt-8 sm:mx-auto sm:w-full sm:max-w-md">
<div className="mx-2 bg-white px-4 py-8 shadow sm:rounded-lg sm:px-10">

View File

@ -54,7 +54,7 @@ function TeamPage({ team }: TeamPageProps) {
data-testid="event-type-link">
<div className="flex-shrink">
<div className="flex flex-wrap items-center space-x-2 rtl:space-x-reverse">
<h2 className="dark:text-darkgray-700 text-sm font-semibold text-gray-700">{type.title}</h2>
<h2 className="">{type.title}</h2>
</div>
<EventTypeDescription className="text-sm" eventType={type} />
</div>

View File

@ -32,14 +32,12 @@ export default function MeetingUnavailable(props: inferSSRProps<typeof getServer
<FiX className="h-6 w-6 text-red-600" />
</div>
<div className="mt-3 text-center sm:mt-5">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-headline">
<h3 className="leading-6" id="modal-headline">
This meeting is in the past.
</h3>
</div>
<div className="mt-4 border-t border-b py-4">
<h2 className="font-cal mb-2 text-center text-lg font-medium text-gray-600">
{props.booking.title}
</h2>
<h2 className="mb-2 text-center">{props.booking.title}</h2>
<p className="text-center text-gray-500">
<FiCalendar className="mr-1 -mt-1 inline-block h-4 w-4" />
{dayjs(props.booking.startTime).format(detectBrowserTimeFormat + ", dddd DD MMMM YYYY")}

View File

@ -30,14 +30,12 @@ export default function MeetingNotStarted(props: inferSSRProps<typeof getServerS
<FiX className="h-6 w-6 text-red-600" />
</div>
<div className="mt-3 text-center sm:mt-5">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-headline">
<h3 className="leading-6" id="modal-headline">
This meeting has not started yet
</h3>
</div>
<div className="mt-4 border-t border-b py-4">
<h2 className="font-cal mb-2 text-center text-lg font-medium text-gray-600">
{props.booking.title}
</h2>
<h2 className="mb-2 text-center ">{props.booking.title}</h2>
<p className="text-center text-gray-500">
<FiCalendar className="mr-1 -mt-1 inline-block h-4 w-4" />
{dayjs(props.booking.startTime).format(detectBrowserTimeFormat + ", dddd DD MMMM YYYY")}

View File

@ -25,7 +25,7 @@ export default function NoMeetingFound() {
<FiX className="h-6 w-6 text-red-600" />
</div>
<div className="mt-3 text-center sm:mt-5">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-headline">
<h3 className="leading-6" id="modal-headline">
{t("no_meeting_found")}
</h3>
</div>

1
apps/website Submodule

@ -0,0 +1 @@
Subproject commit 8f5d66f2cc4a7ed4f8c05d37dbf0417df5a57cd9

View File

@ -32,7 +32,7 @@ export default function AppleCalendarSetup() {
/>
</div>
<div>
<h1 className="text-gray-600">{t("connect_apple_server")}</h1>
<h1>{t("connect_apple_server")}</h1>
<div className="mt-1 text-sm">
{t("apple_server_generate_password", { appName: APP_NAME })}{" "}

View File

@ -33,7 +33,7 @@ export default function CalDavCalendarSetup() {
/>
</div>
<div className="flex w-10/12 flex-col">
<h1 className="text-gray-600">{t("connect_caldav_server")}</h1>
<h1>{t("connect_caldav_server")}</h1>
<div className="mt-1 text-sm">{t("credentials_stored_encrypted")}</div>
<div className="my-2 mt-3">
<Form

View File

@ -47,7 +47,7 @@ export default function CloseComSetup() {
/>
</div>
<div>
<h1 className="text-gray-600">{t("provide_api_key")}</h1>
<h1>{t("provide_api_key")}</h1>
<div className="mt-1 text-sm">
{t("generate_api_key_description")}{" "}

View File

@ -89,7 +89,7 @@ function NewFormDialog({ appUrl }: { appUrl: string }) {
<Dialog name="new-form" clearQueryParamsOnClose={["target", "action"]}>
<DialogContent className="overflow-y-auto">
<div className="mb-4">
<h3 className="text-lg font-bold leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{t("add_new_form")}
</h3>
<div>

View File

@ -109,9 +109,7 @@ function RoutingForm({ form, profile, ...restProps }: inferSSRProps<typeof getSe
<form onSubmit={handleOnSubmit}>
<div className="mb-8">
<h1 className="font-cal mb-1 text-xl font-bold tracking-wide text-gray-900 dark:text-white">
{form.name}
</h1>
<h1 className="mb-1 tracking-wide">{form.name}</h1>
{form.description ? (
<p className="min-h-10 text-sm text-gray-500 ltr:mr-4 rtl:ml-4 dark:text-white">
{form.description}

View File

@ -30,7 +30,7 @@ export default function Exchange2013CalendarSetup() {
/>
</div>
<div className="flex w-10/12 flex-col">
<h1 className="text-gray-600">{t("add_exchange2013")}</h1>
<h1>{t("add_exchange2013")}</h1>
<div className="mt-1 text-sm">{t("credentials_stored_encrypted")}</div>
<div className="my-2 mt-3">
<Form

View File

@ -30,7 +30,7 @@ export default function Exchange2016CalendarSetup() {
/>
</div>
<div className="flex w-10/12 flex-col">
<h1 className="text-gray-600">{t("add_exchange2016")}</h1>
<h1>{t("add_exchange2016")}</h1>
<div className="mt-1 text-sm">{t("credentials_stored_encrypted")}</div>
<div className="my-2 mt-3">
<Form

View File

@ -54,7 +54,7 @@ export default function ExchangeSetup() {
/>
</div>
<div className="grow">
<h1 className="text-gray-600">{t("exchange_add")}</h1>
<h1>{t("exchange_add")}</h1>
<div className="text-sm">{t("credentials_stored_encrypted")}</div>
<div className="my-2 mt-5">
<Form

View File

@ -113,7 +113,7 @@ export const SearchDialog = (props: ISearchDialog) => {
return (
<Dialog open={isOpenDialog} onOpenChange={setIsOpenDialog}>
<DialogContent>
<h3 className="leading-16 font-cal text-xl text-gray-900" id="modal-title">
<h3 className="leading-16 " id="modal-title">
{t("add_gif_to_confirmation")}
</h3>
<p className="mb-3 text-sm font-light text-gray-500">{t("find_gif_spice_confirmation")}</p>

View File

@ -113,7 +113,7 @@ const BalanceCheck: React.FC<RainbowGateProps> = ({ chainId, setToken, tokenAddr
<div className="rounded-md border border-neutral-200 dark:border-neutral-700 dark:hover:border-neutral-600">
<div className="hover:border-brand dark:bg-darkgray-100 flex min-h-[120px] grow flex-col border-b border-neutral-200 bg-white p-6 text-center first:rounded-t-md last:rounded-b-md last:border-b-0 hover:bg-white dark:border-neutral-700 dark:hover:border-neutral-600 md:flex-row md:text-left">
<span className="mb-4 grow md:mb-0">
<h2 className="mb-2 grow font-semibold text-gray-900 dark:text-white">Token Gate</h2>
<h2 className="mb-2 grow ">Token Gate</h2>
{isLoading && (
<>
<SkeletonText className="mb-3 h-1 w-full" />

View File

@ -42,7 +42,7 @@ export default function SendgridSetup() {
<img src="/api/app-store/sendgrid/logo.png" alt="Sendgrid" className="h-12 w-12 max-w-2xl" />
</div>
<div>
<h1 className="text-gray-600">{t("provide_api_key")}</h1>
<h1>{t("provide_api_key")}</h1>
<div className="mt-1 text-sm">
{t("generate_api_key_description")}{" "}

View File

@ -0,0 +1,88 @@
const plugin = require("tailwindcss/plugin");
module.exports = plugin(function ({ addBase, theme, addComponents, addUtilities }) {
const h1Base = {
fontSize: "28px",
fontWeight: theme("fontWeight.semibold"),
lineHeight: "28px",
};
const h2Base = {
fontSize: theme("fontSize.2xl"),
fontWeight: theme("fontWeight.semibold"),
lineHeight: "24px",
};
const h3Base = {
fontSize: theme("fontSize.xl"),
fontWeight: theme("fontWeight.semibold"),
lineHeight: "20px",
};
const pBase = {
fontSize: theme("fontSize.sm"),
leading: theme("leading.none"),
fontWeight: theme("fontWeight.normal"),
};
const smallBase = {
fontSize: theme("fontSize.xs"),
leading: theme("leading.none"),
fontWeight: theme("fontWeight.normal"),
};
/** Base heading styles
* - used for all headings
* - h1,h2,h3 are commonly used
* - h4 is used in very few occurances and is not included in the base styles
*/
addBase({
"h1, h2, h3, h4": {
fontFamily: theme("fontFamily.cal"),
color: theme("colors.black"),
},
"p, small": {
fontFamily: theme("fontFamily.sans"),
color: theme("colors.black"),
},
//** Base heading styles */
h1: h1Base,
h2: h2Base,
h3: h3Base,
//** Base paragraph & Small styles */
p: pBase,
small: smallBase,
//** Dark mode styles */
".dark": {
"h1, h2, h3, h4, p, small": {
color: theme("colors.darkgray.900"),
},
},
});
//** Component heading styles - used if a heading needs to look like another varient*/
addComponents({
".title-1": { ...h1Base },
".title-2": { ...h2Base },
".title-3": { ...h3Base },
".multiline-normal": {
fontFamily: theme("fontFamily.sans"),
color: theme("colors.black"),
fontSize: theme("fontSize.sm"),
fontWeight: theme("fontWeight.normal"),
lineHeight: theme("leading.normal"),
},
".multiline-medium": {
fontFamily: theme("fontFamily.sans"),
color: theme("colors.black"),
fontSize: theme("fontSize.sm"),
fontWeight: theme("fontWeight.medium"),
lineHeight: "20px",
},
});
});

View File

@ -208,6 +208,7 @@ module.exports = {
addVariant("windows", ".windows &");
addVariant("ios", ".ios &");
}),
require("./tailwind-bases.js"),
],
variants: {
scrollbar: ["rounded", "dark"],

View File

@ -124,7 +124,7 @@ const MobileNotSupported = ({ children }: { children: React.ReactNode }) => {
return (
<>
<div className="flex h-full flex-col items-center justify-center sm:hidden">
<h1 className="text-2xl font-bold">Mobile not supported yet </h1>
<h1>Mobile not supported yet </h1>
<p className="text-gray-500">Please use a desktop browser to view this page</p>
</div>
<div className="hidden sm:block">{children}</div>

View File

@ -13,7 +13,7 @@ export function SchedulerHeading() {
return (
<header className="flex flex-none flex-col justify-between py-4 sm:flex-row sm:items-center">
<h1 className="text-xl font-semibold text-gray-900">
<h1>
{startDate.format("MMM DD")}-{endDate.format("DD")}
<span className="text-gray-500">,{startDate.format("YYYY")}</span>
</h1>

View File

@ -52,9 +52,7 @@ export default function ApiKeyDialogForm({
{successfulNewApiKeyModal ? (
<>
<div className="mb-10">
<h2 className="font-semi-bold font-cal mb-2 text-xl tracking-wide text-gray-900">
{t("success_api_key_created")}
</h2>
<h2 className="mb-2 tracking-wide">{t("success_api_key_created")}</h2>
<div className="text-sm text-gray-900">
<span className="font-semibold">{t("success_api_key_created_bold_tagline")}</span>{" "}
{t("you_will_only_view_it_once")}
@ -108,9 +106,7 @@ export default function ApiKeyDialogForm({
}}
className="space-y-4">
<div className="mt-1 mb-10">
<h2 className="font-semi-bold font-cal text-xl tracking-wide text-gray-900">
{defaultValues ? t("edit_api_key") : t("create_api_key")}
</h2>
<h2 className="tracking-wide">{defaultValues ? t("edit_api_key") : t("create_api_key")}</h2>
<p className="mt-1 mb-5 text-sm text-gray-500">{t("api_key_modal_subtitle")}</p>
</div>
<div>

View File

@ -71,7 +71,7 @@ export default function MemberChangeRoleModal(props: {
<>
<div className="mb-4 sm:flex sm:items-start">
<div className="text-center sm:text-left">
<h3 className="text-lg font-medium leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{t("change_member_role")}
</h3>
</div>

View File

@ -17,7 +17,7 @@ const BillingView = () => {
<Meta title={t("team_billing")} description={t("team_billing_description")} />
<div className="flex flex-col text-sm sm:flex-row">
<div>
<h2 className="font-medium">{t("billing_manage_details_title")}</h2>
<h2>{t("billing_manage_details_title")}</h2>
<p>{t("billing_manage_details_description")}</p>
</div>
<div className="flex-shrink-0 pt-3 sm:ml-auto sm:pt-0 sm:pl-3">

View File

@ -14,7 +14,7 @@ export default function UpgradeRecordingBanner() {
<FiUsers className="dark:bg-gray-90 inline-block h-5 w-5" />
<div className="flex flex-col gap-4">
<div className="flex flex-col gap-2">
<h2 className="text-sm font-semibold">{t("upgrade_to_access_recordings_title")}</h2>
<h2>{t("upgrade_to_access_recordings_title")}</h2>
<p className="text-sm font-normal">{t("upgrade_to_access_recordings_description")}</p>
</div>
<div>

View File

@ -82,7 +82,7 @@ export default function EmptyScreen(props: {
<FiZap className="inline-block h-10 w-10 stroke-[1.3px] dark:bg-gray-900 dark:text-gray-600" />
</div>
<div className="max-w-[420px] text-center">
<h2 className="text-semibold font-cal mt-6 text-xl dark:text-gray-300">{t("workflows")}</h2>
<h2 className="tmt-6 ">{t("workflows")}</h2>
<p className="line-clamp-2 mt-3 text-sm font-normal leading-6 text-gray-700 dark:text-gray-300">
{t("no_workflows_description")}
</p>

View File

@ -756,7 +756,7 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) {
<Dialog open={isAdditionalInputsDialogOpen} onOpenChange={setIsAdditionalInputsDialogOpen}>
<DialogContent type="creation" className="sm:max-w-[610px] md:h-[570px]">
<div className="-m-3 h-[430px] overflow-x-hidden overflow-y-scroll sm:m-0">
<h1 className="w-full text-xl font-semibold ">{t("how_additional_inputs_as_variables")}</h1>
<h1 className="w-full">{t("how_additional_inputs_as_variables")}</h1>
<div className="mb-7 mt-7 rounded-md bg-gray-50 p-3 sm:p-4">
<p className="test-sm font-medium">{t("format")}</p>
<ul className="mt-2 ml-5 list-disc text-gray-900">

View File

@ -32,10 +32,8 @@ function EmptyPage({ name }: { name: string }) {
<SkeletonEventType />
</div>
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 transform">
<h3 className="text-lg font-semibold text-gray-600 dark:text-white">{t("no_event_types")} </h3>
<h4 className="text-sm leading-normal text-gray-600 dark:text-white">
{t("no_event_types_description", { name })}
</h4>
<h3 className="">{t("no_event_types")} </h3>
<h4 className="leading-normal">{t("no_event_types_description", { name })}</h4>
</div>
</div>
);

View File

@ -57,7 +57,7 @@ const DateOverrideList = ({
{items.sort(sortByDate).map((item, index) => (
<li key={item.id} className="flex justify-between border-b px-5 py-4 last:border-b-0">
<div>
<h3 className="text-sm text-gray-900">
<h3>
{new Intl.DateTimeFormat("en-GB", {
weekday: "short",
month: "long",

View File

@ -437,9 +437,7 @@ function ShellHeader() {
)}
<div>
{meta.title && isLocaleReady ? (
<h1 className="font-cal mb-1 text-xl font-bold leading-5 tracking-wide text-black">
{t(meta.title)}
</h1>
<h1 className="mb-1 tracking-wide ">{t(meta.title)}</h1>
) : (
<div className="mb-1 h-6 w-24 animate-pulse rounded-md bg-gray-200" />
)}

View File

@ -805,7 +805,7 @@ export function ShellMain(props: LayoutProps) {
{props.heading && (
<h3
className={classNames(
"font-cal max-w-28 sm:max-w-72 md:max-w-80 hidden truncate text-xl font-semibold tracking-wide text-black md:block xl:max-w-full",
"\"max-w-28 sm:max-w-72 md:max-w-80 mb-1 hidden truncate tracking-wide sm:block xl:max-w-ful",
props.smallHeading ? "text-base" : "text-xl"
)}>
{!isLocaleReady ? <SkeletonText invisible /> : props.heading}

View File

@ -60,7 +60,7 @@ export function UpgradeTip({
backgroundRepeat: "no-repeat",
}}>
<div className="mt-3 px-8 sm:px-14">
<h1 className={classNames("font-cal text-3xl", dark && "text-white")}>{t(title)}</h1>
<h1 className="">{t(title)}</h1>
<p className={classNames("my-4 max-w-sm", dark ? "text-white" : "text-gray-600")}>
{t(description)}
</p>
@ -72,7 +72,7 @@ export function UpgradeTip({
{features.map((feature) => (
<div key={feature.title} className="mb-4 min-h-[180px] w-full rounded-md bg-gray-50 p-8 md:mb-0">
{feature.icon}
<h2 className="font-cal mt-4 text-lg">{feature.title}</h2>
<h2 className="mt-4">{feature.title}</h2>
<p className="text-gray-700">{feature.description}</p>
</div>
))}

View File

@ -8,7 +8,6 @@ import getAppKeysFromSlug from "@calcom/app-store/_utils/getAppKeysFromSlug";
import { DailyLocationType } from "@calcom/app-store/locations";
import { stripeDataSchema } from "@calcom/app-store/stripepayment/lib/server";
import getApps from "@calcom/app-store/utils";
import { updateEvent } from "@calcom/core/CalendarManager";
import { validateBookingLimitOrder } from "@calcom/lib";
import { CAL_URL } from "@calcom/lib/constants";
import getEventTypeById from "@calcom/lib/getEventTypeById";

View File

@ -57,7 +57,7 @@ export function Alert(props: AlertProps) {
)}
</div>
<div className="ml-3 flex-grow">
<h3 className="text-sm font-medium">{props.title}</h3>
<h3>{props.title}</h3>
<div className="text-sm">{props.message}</div>
</div>
{/* @TODO: Shouldn't be absolute. This makes it harder to give margin etc. */}

View File

@ -67,7 +67,7 @@ function CategoryTab({ selectedCategory, categories, searchText }: CategoryTabPr
};
return (
<div className="relative mb-4 flex flex-col justify-between lg:flex-row lg:items-center">
<h2 className="hidden text-base font-semibold leading-none text-gray-900 sm:block">
<h2 className="hidden sm:block">
{searchText
? t("search")
: t("explore_apps", {

View File

@ -46,7 +46,7 @@ export function AppCard({ app, credentials, searchText }: AppCardProps) {
<img src={app.logo} alt={app.name + " Logo"} className="mb-4 h-12 w-12 rounded-sm" />
</div>
<div className="flex items-center">
<h3 className="font-medium">
<h3 className="text-sm leading-none">
{searchTextIndex != undefined && searchText ? (
<>
{app.name.substring(0, searchTextIndex)}

View File

@ -38,7 +38,7 @@ export function AppStoreCategories({
style={{ background: "radial-gradient(farthest-side at top right, #a2abbe 0%, #E3E3E3 100%)" }}>
<div className="w-full self-center bg-[url('/noise.svg')] bg-cover bg-center bg-no-repeat px-6 py-4">
{isLocaleReady ? (
<h3 className="text-sm font-semibold capitalize">{category.name}</h3>
<h3 className="text-sm capitalize">{category.name}</h3>
) : (
<SkeletonText invisible />
)}

View File

@ -55,7 +55,7 @@ export const Slider = <T extends string | unknown>({
{isLocaleReady ? (
title && (
<div>
<h2 className="mt-0 text-base font-semibold leading-none text-gray-900">{title}</h2>
<h2 className="mt-0 mb-2">{title}</h2>
</div>
)
) : (

View File

@ -125,7 +125,7 @@ export function DialogHeader(props: DialogHeaderProps) {
return (
<div className="mb-4">
<h3 className="leading-20 text-semibold font-cal pb-1 text-xl text-gray-900" id="modal-title">
<h3 className="leading-20 pb-1" id="modal-title">
{props.title}
</h3>
{props.subtitle && <div className="text-sm text-gray-500">{props.subtitle}</div>}

View File

@ -30,7 +30,7 @@ export function EmptyScreen({
<Icon className="inline-block h-10 w-10 stroke-[1.3px] dark:bg-gray-900 dark:text-gray-600" />
</div>
<div className="flex max-w-[420px] flex-col items-center">
<h2 className="text-semibold font-cal mt-6 text-center text-xl dark:text-gray-300">{headline}</h2>
<h2 className="mt-6 text-center">{headline}</h2>
<div className="mt-3 mb-8 text-center text-sm font-normal leading-6 text-gray-700 dark:text-gray-300">
{description}
</div>

View File

@ -167,7 +167,7 @@ export default function ImageUploader({
<DialogContent>
<div className="mb-4 sm:flex sm:items-start">
<div className="mt-3 text-center sm:mt-0 sm:text-left">
<h3 className="font-cal text-lg leading-6 text-gray-900" id="modal-title">
<h3 className="leading-6" id="modal-title">
{t("upload_target", { target })}
</h3>
</div>

View File

@ -11,7 +11,7 @@ export function ShellSubHeading(props: {
return (
<header className={classNames("mb-3 block justify-between sm:flex", props.className)}>
<div>
<h2 className="flex content-center items-center space-x-2 text-base font-bold leading-6 text-gray-900 rtl:space-x-reverse">
<h2 className="flex content-center items-center space-x-2 leading-6 rtl:space-x-reverse">
{props.title}
</h2>
{props.subtitle && <p className="text-sm text-gray-500 ltr:mr-4">{props.subtitle}</p>}

View File

@ -86,8 +86,8 @@ export function ListLinkItem(props: ListLinkItemProps) {
"flex-grow truncate text-sm",
disabled ? "pointer-events-none cursor-not-allowed opacity-30" : ""
)}>
<h1 className="text-sm font-semibold leading-none">{heading}</h1>
<h2 className="min-h-4 mt-2 text-sm font-normal leading-none">
<h1 className="leading-none">{heading}</h1>
<h2 className="min-h-4 mt-2 leading-none">
{subHeading.substring(0, 100)}
{subHeading.length > 100 && "..."}
</h2>

854
yarn.lock

File diff suppressed because it is too large Load Diff