diff --git a/packages/carbon-components-react/scss/components/slug/_index.scss b/packages/carbon-components-react/scss/components/slug/_index.scss
new file mode 100644
index 000000000000..31a8cf757be0
--- /dev/null
+++ b/packages/carbon-components-react/scss/components/slug/_index.scss
@@ -0,0 +1,9 @@
+// Code generated by carbon-components-react. DO NOT EDIT.
+//
+// Copyright IBM Corp. 2018, 2023
+//
+// This source code is licensed under the Apache-2.0 license found in the
+// LICENSE file in the root directory of this source tree.
+//
+
+@forward '@carbon/styles/scss/components/slug';
diff --git a/packages/carbon-components-react/scss/components/slug/_slug.scss b/packages/carbon-components-react/scss/components/slug/_slug.scss
new file mode 100644
index 000000000000..d6162f1062ab
--- /dev/null
+++ b/packages/carbon-components-react/scss/components/slug/_slug.scss
@@ -0,0 +1,9 @@
+// Code generated by carbon-components-react. DO NOT EDIT.
+//
+// Copyright IBM Corp. 2018, 2023
+//
+// This source code is licensed under the Apache-2.0 license found in the
+// LICENSE file in the root directory of this source tree.
+//
+
+@forward '@carbon/styles/scss/components/slug/slug';
diff --git a/packages/carbon-components/scss/components/slug/_index.scss b/packages/carbon-components/scss/components/slug/_index.scss
new file mode 100644
index 000000000000..4890b6233e19
--- /dev/null
+++ b/packages/carbon-components/scss/components/slug/_index.scss
@@ -0,0 +1,9 @@
+// Code generated by carbon-components. DO NOT EDIT.
+//
+// Copyright IBM Corp. 2018, 2023
+//
+// This source code is licensed under the Apache-2.0 license found in the
+// LICENSE file in the root directory of this source tree.
+//
+
+@forward '@carbon/styles/scss/components/slug';
diff --git a/packages/carbon-components/scss/components/slug/_slug.scss b/packages/carbon-components/scss/components/slug/_slug.scss
new file mode 100644
index 000000000000..cbb522cf1937
--- /dev/null
+++ b/packages/carbon-components/scss/components/slug/_slug.scss
@@ -0,0 +1,9 @@
+// Code generated by carbon-components. DO NOT EDIT.
+//
+// Copyright IBM Corp. 2018, 2023
+//
+// This source code is licensed under the Apache-2.0 license found in the
+// LICENSE file in the root directory of this source tree.
+//
+
+@forward '@carbon/styles/scss/components/slug/slug';
diff --git a/packages/elements/src/__tests__/__snapshots__/PublicAPI-test.js.snap b/packages/elements/src/__tests__/__snapshots__/PublicAPI-test.js.snap
index f7038f43f48c..15e4371eb5ae 100644
--- a/packages/elements/src/__tests__/__snapshots__/PublicAPI-test.js.snap
+++ b/packages/elements/src/__tests__/__snapshots__/PublicAPI-test.js.snap
@@ -271,6 +271,15 @@ Array [
"skeletonElement",
"slow01",
"slow02",
+ "slugBackground",
+ "slugBackgroundHover",
+ "slugCalloutAuraEnd",
+ "slugCalloutAuraStart",
+ "slugCalloutGradientBottom",
+ "slugCalloutGradientTop",
+ "slugGradient",
+ "slugGradientHover",
+ "slugHollowHover",
"spacing",
"spacing01",
"spacing02",
diff --git a/packages/react/__tests__/__snapshots__/PublicAPI-test.js.snap b/packages/react/__tests__/__snapshots__/PublicAPI-test.js.snap
index 6ed50979cacb..0e53df0816fd 100644
--- a/packages/react/__tests__/__snapshots__/PublicAPI-test.js.snap
+++ b/packages/react/__tests__/__snapshots__/PublicAPI-test.js.snap
@@ -8781,6 +8781,9 @@ Map {
"as": Object {
"type": "elementType",
},
+ "autoAlign": Object {
+ "type": "bool",
+ },
"children": Object {
"type": "node",
},
diff --git a/packages/react/scss/components/slug/_index.scss b/packages/react/scss/components/slug/_index.scss
new file mode 100644
index 000000000000..aa5abf7f12ed
--- /dev/null
+++ b/packages/react/scss/components/slug/_index.scss
@@ -0,0 +1,9 @@
+// Code generated by @carbon/react. DO NOT EDIT.
+//
+// Copyright IBM Corp. 2018, 2023
+//
+// This source code is licensed under the Apache-2.0 license found in the
+// LICENSE file in the root directory of this source tree.
+//
+
+@forward '@carbon/styles/scss/components/slug';
diff --git a/packages/react/scss/components/slug/_slug.scss b/packages/react/scss/components/slug/_slug.scss
new file mode 100644
index 000000000000..fb30c2c834ec
--- /dev/null
+++ b/packages/react/scss/components/slug/_slug.scss
@@ -0,0 +1,9 @@
+// Code generated by @carbon/react. DO NOT EDIT.
+//
+// Copyright IBM Corp. 2018, 2023
+//
+// This source code is licensed under the Apache-2.0 license found in the
+// LICENSE file in the root directory of this source tree.
+//
+
+@forward '@carbon/styles/scss/components/slug/slug';
diff --git a/packages/react/src/components/Slug/Slug.js b/packages/react/src/components/Slug/Slug.js
new file mode 100644
index 000000000000..f2ebf4ac5a30
--- /dev/null
+++ b/packages/react/src/components/Slug/Slug.js
@@ -0,0 +1,136 @@
+/**
+ * Copyright IBM Corp. 2016, 2023
+ *
+ * This source code is licensed under the Apache-2.0 license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import cx from 'classnames';
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import { usePrefix } from '../../internal/usePrefix';
+import {
+ Toggletip,
+ ToggletipButton,
+ ToggletipContent,
+ ToggletipActions,
+} from '../Toggletip';
+
+const Slug = React.forwardRef(function Slug(
+ {
+ aiText = 'AI',
+ aiTextLabel,
+ align,
+ autoAlign = false,
+ className,
+ dotType,
+ kind,
+ size = 'xs',
+ slugContent,
+ },
+ ref
+) {
+ const prefix = usePrefix();
+
+ const slugClasses = cx(className, {
+ [`${prefix}--slug`]: true,
+ [`${prefix}--slug--hollow`]: kind === 'hollow' || dotType === 'hollow',
+ // Need to come up with a better name; explainable?
+ // Need to be able to target the non-hollow variant another way
+ // other than using `:not` all over the styles
+ [`${prefix}--slug--enabled`]: kind !== 'hollow' && dotType !== 'hollow',
+ });
+
+ const slugButtonClasses = cx({
+ [`${prefix}--slug__button`]: true,
+ [`${prefix}--slug__button--${size}`]: size,
+ [`${prefix}--slug__button--${kind}`]: kind,
+ [`${prefix}--slug__button--inline-with-content`]:
+ kind === 'inline' && aiTextLabel,
+ });
+
+ return (
+
+ );
+});
+
+Slug.propTypes = {
+ /**
+ * Specify the correct translation of the AI text
+ */
+ aiText: PropTypes.string,
+
+ /**
+ * Specify additional text to be rendered next to the AI label in the inline variant
+ */
+ aiTextLabel: PropTypes.string,
+
+ /**
+ * Specify how the popover should align with the button
+ */
+ align: PropTypes.oneOf([
+ 'top',
+ 'top-left',
+ 'top-right',
+
+ 'bottom',
+ 'bottom-left',
+ 'bottom-right',
+
+ 'left',
+ 'left-bottom',
+ 'left-top',
+
+ 'right',
+ 'right-bottom',
+ 'right-top',
+ ]),
+
+ /**
+ * Will auto-align the popover on first render if it is not visible. This prop is currently experimental and is subject to future changes.
+ */
+ autoAlign: PropTypes.bool,
+
+ /**
+ * Specify an optional className to be added to the AI slug
+ */
+ className: PropTypes.string,
+
+ /**
+ * Specify the type of dot that should be rendered in front of the inline variant
+ */
+ dotType: PropTypes.oneOf(['default', 'hollow']),
+
+ /**
+ * Specify the type of Slug, from the following list of types:
+ */
+ kind: PropTypes.oneOf(['default', 'hollow', 'inline']),
+
+ /**
+ * Specify the size of the button, from the following list of sizes:
+ */
+ size: PropTypes.oneOf(['mini', '2xs', 'xs', 'sm', 'md', 'lg', 'xl']),
+
+ /**
+ * Specify the content you want rendered inside the slug ToggleTip
+ */
+ slugContent: PropTypes.node,
+};
+
+export default Slug;
diff --git a/packages/react/src/components/Slug/Slug.mdx b/packages/react/src/components/Slug/Slug.mdx
new file mode 100644
index 000000000000..e965047ad7c5
--- /dev/null
+++ b/packages/react/src/components/Slug/Slug.mdx
@@ -0,0 +1 @@
+Hello
diff --git a/packages/react/src/components/Slug/Slug.stories.js b/packages/react/src/components/Slug/Slug.stories.js
new file mode 100644
index 000000000000..5c2c7c4722b4
--- /dev/null
+++ b/packages/react/src/components/Slug/Slug.stories.js
@@ -0,0 +1,148 @@
+/**
+ * Copyright IBM Corp. 2016, 2023
+ *
+ * This source code is licensed under the Apache-2.0 license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/* eslint-disable no-console */
+
+import React from 'react';
+
+import Slug from '.';
+import Button from '../Button';
+import mdx from './Slug.mdx';
+import './slug-story.scss';
+
+export default {
+ title: 'Experimental/unstable__Slug',
+ component: Slug,
+ parameters: {
+ docs: {
+ page: mdx,
+ },
+ },
+};
+
+const aiContent = (
+
+
AI Explained
+
84%
+
Confidence score
+
+ Lorem ipsum dolor sit amet, di os consectetur adipiscing elit, sed do
+ eiusmod tempor incididunt ut fsil labore et dolore magna aliqua.
+
+
+
Model type
+
Foundation model
+
+);
+
+const content = AI was used to generate this content;
+
+export const Default = () => (
+ <>
+