(false)
+
+ const renderTitle = (): JSX.Element => (
+
+
+ {title}
+
+ {metadata && (
+
+
+ {metadata}
+
+
+ )}
+
+ )
+
+ const renderActions = (
+ primaryAction?: TileAction,
+ secondaryAction?: TileAction,
+ disabled?: boolean
+ ): JSX.Element => (
+
+ {secondaryAction && (
+
+ )}
+ {primaryAction &&
}
+
+ )
+
+ const renderFront = (): JSX.Element => (
+
+ {information && (
+
+ }
+ onClick={(): void => setIsFlipped(true)}
+ disabled={isFlipped}
+ aria-hidden={isFlipped}
+ />
+
+ )}
+ {renderTitle()}
+
{children && children}
+ {footer &&
{footer}
}
+
+ )
+
+ const renderInformation = (
+ informationProp: GenericTileProps["information"] | undefined
+ ): JSX.Element | React.ReactNode => {
+ if (
+ informationProp &&
+ typeof informationProp === "object" &&
+ "text" in informationProp
+ ) {
+ return (
+ <>
+ {informationProp.text}
+ {(informationProp.primaryAction ||
+ informationProp.secondaryAction) && (
+
+ {renderActions(
+ informationProp.primaryAction,
+ informationProp.secondaryAction,
+ !isFlipped
+ )}
+
+ )}
+ >
+ )
+ }
+
+ return informationProp
+ }
+
+ const renderBack = (): JSX.Element | void => {
+ if (!information) return
+
+ return (
+
+
+ }
+ onClick={(): void => setIsFlipped(false)}
+ disabled={!isFlipped}
+ aria-hidden={!isFlipped}
+ />
+
+
+ {renderInformation(information)}
+
+
+ )
+ }
+
+ return (
+
+
+ <>
+ {renderFront()}
+ {renderBack()}
+ >
+
+
+ )
+}
+
+GenericTile.displayName = "GenericTile"
diff --git a/packages/components/src/Tile/subcomponents/GenericTile/_docs/GenericTile.stickersheet.stories.tsx b/packages/components/src/Tile/subcomponents/GenericTile/_docs/GenericTile.stickersheet.stories.tsx
new file mode 100644
index 00000000000..47ad212a69f
--- /dev/null
+++ b/packages/components/src/Tile/subcomponents/GenericTile/_docs/GenericTile.stickersheet.stories.tsx
@@ -0,0 +1,41 @@
+import React from "react"
+import { Meta } from "@storybook/react"
+import {
+ StickerSheet,
+ StickerSheetStory,
+} from "~storybook/components/StickerSheet"
+import { GenericTile } from "../index"
+import { moodsList } from "../types"
+
+export default {
+ title: "Components/Tiles/GenericTile",
+ parameters: {
+ chromatic: { disable: false },
+ controls: { disable: true },
+ },
+} satisfies Meta
+
+const StickerSheetTemplate: StickerSheetStory = {
+ render: ({ isReversed }) => (
+
+
+ {moodsList.map(mood => (
+
+ Footer>}
+ />
+
+ ))}
+
+
+ ),
+}
+
+export const StickerSheetDefault: StickerSheetStory = {
+ ...StickerSheetTemplate,
+ name: "Sticker Sheet (Default)",
+}
diff --git a/packages/components/src/Tile/subcomponents/GenericTile/_variables.scss b/packages/components/src/Tile/subcomponents/GenericTile/_variables.scss
new file mode 100644
index 00000000000..e8670d8b6f4
--- /dev/null
+++ b/packages/components/src/Tile/subcomponents/GenericTile/_variables.scss
@@ -0,0 +1,2 @@
+$tileWidth: 330px;
+$tileHeight: 370px;
diff --git a/packages/components/src/Tile/subcomponents/GenericTile/index.ts b/packages/components/src/Tile/subcomponents/GenericTile/index.ts
new file mode 100644
index 00000000000..9efbe9f859c
--- /dev/null
+++ b/packages/components/src/Tile/subcomponents/GenericTile/index.ts
@@ -0,0 +1 @@
+export * from "./GenericTile"
diff --git a/packages/components/src/Tile/subcomponents/GenericTile/types.ts b/packages/components/src/Tile/subcomponents/GenericTile/types.ts
new file mode 100644
index 00000000000..953a5137c14
--- /dev/null
+++ b/packages/components/src/Tile/subcomponents/GenericTile/types.ts
@@ -0,0 +1,10 @@
+export const moodsList = [
+ "positive",
+ "informative",
+ "cautionary",
+ "assertive",
+ "negative",
+ "prominent",
+] as const
+
+export type Moods = (typeof moodsList)[number]
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index 0b2125bc85c..7f39e5d3d89 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -43,4 +43,5 @@ export * from "./Workflow"
export * from "./TextField"
export * from "./TextArea"
export * from "./TextAreaField"
+export * from "./Tile"
export * from "./TimeField"