diff --git a/packages/calcite-components/src/components/fab/fab.e2e.ts b/packages/calcite-components/src/components/fab/fab.e2e.ts index 391de999d14..91ba4ea5b16 100755 --- a/packages/calcite-components/src/components/fab/fab.e2e.ts +++ b/packages/calcite-components/src/components/fab/fab.e2e.ts @@ -167,6 +167,10 @@ describe("calcite-fab", () => { shadowSelector: "calcite-button", targetProp: "--calcite-button-border-color", }, + "--calcite-fab-shadow-color": { + shadowSelector: "calcite-button", + targetProp: "boxShadow", + }, }); }); }); diff --git a/packages/calcite-components/src/custom-theme.stories.ts b/packages/calcite-components/src/custom-theme.stories.ts index db34bbe2419..d033ef1f5d3 100644 --- a/packages/calcite-components/src/custom-theme.stories.ts +++ b/packages/calcite-components/src/custom-theme.stories.ts @@ -10,9 +10,10 @@ import { actionPadTokens, actionGroupTokens, } from "./custom-theme/action"; -import { alertTokens, alert } from "./custom-theme/alert"; -import { accordionItemTokens } from "./custom-theme/accordion-item"; import { accordion, accordionTokens } from "./custom-theme/accordion"; +import { accordionItemTokens } from "./custom-theme/accordion-item"; +import { alertTokens, alert } from "./custom-theme/alert"; +import { avatarIcon, avatarInitials, avatarThumbnail, avatarTokens } from "./custom-theme/avatar"; import { buttons, buttonTokens } from "./custom-theme/button"; import { calciteSwitch } from "./custom-theme/switch"; import { card, cardThumbnail, cardTokens } from "./custom-theme/card"; @@ -20,6 +21,7 @@ import { checkbox, checkboxTokens } from "./custom-theme/checkbox"; import { chips, chipTokens } from "./custom-theme/chips"; import { datePicker } from "./custom-theme/date-picker"; import { dropdown } from "./custom-theme/dropdown"; +import { fabGroup as fab, fabTokens } from "./custom-theme/fab"; import { handle, handleTokens } from "./custom-theme/handle"; import { icon } from "./custom-theme/icon"; import { input, inputTokens } from "./custom-theme/input"; @@ -39,7 +41,6 @@ import { switchTokens } from "./custom-theme/switch"; import { tabs } from "./custom-theme/tabs"; import { textArea, textAreaTokens } from "./custom-theme/text-area"; import { tooltip, tooltipTokens } from "./custom-theme/tooltip"; -import { avatarIcon, avatarInitials, avatarThumbnail, avatarTokens } from "./custom-theme/avatar"; import { tileTokens, tile } from "./custom-theme/tile"; import { navigationTokens, navigation } from "./custom-theme/navigation"; @@ -70,24 +71,34 @@ const globalTokens = { }; const componentTokens = { - ...accordionTokens, + ...globalTokens, ...accordionItemTokens, - ...actionTokens, + ...accordionTokens, ...actionBarTokens, ...actionGroupTokens, ...actionMenuTokens, ...actionPadTokens, + ...actionTokens, + ...alertTokens, ...avatarTokens, ...buttonTokens, ...cardTokens, - ...alertTokens, - ...chipTokens, ...checkboxTokens, + ...chipTokens, + ...fabTokens, ...handleTokens, + ...inputTokens, + ...labelTokens, + ...linkTokens, + ...listTokens, + ...navigationTokens, ...popoverTokens, ...progressTokens, - ...inputTokens, + ...sliderTokens, + ...switchTokens, ...textAreaTokens, + ...tileTokens, + ...tooltipTokens, }; function convertToParamCase(str) { @@ -139,7 +150,7 @@ const kitchenSink = (args: Record, useTestValues = false) =>
${card}
${cardThumbnail} -
${dropdown} ${buttons}
+
${dropdown} ${buttons} ${fab}
${checkbox}
${chips} ${pagination} ${slider}
@@ -151,35 +162,6 @@ const kitchenSink = (args: Record, useTestValues = false) => `; -const componentTokens = { - ...globalTokens, - ...accordionTokens, - ...accordionItemTokens, - ...actionTokens, - ...actionBarTokens, - ...actionGroupTokens, - ...actionMenuTokens, - ...actionPadTokens, - ...avatarTokens, - ...cardTokens, - ...alertTokens, - ...chipTokens, - ...checkboxTokens, - ...handleTokens, - ...labelTokens, - ...linkTokens, - ...listTokens, - ...popoverTokens, - ...progressTokens, - ...inputTokens, - ...switchTokens, - ...textAreaTokens, - ...tooltipTokens, - ...tileTokens, - ...navigationTokens, - ...sliderTokens, -}; - export default { title: "Theming/Custom Theme", args: { diff --git a/packages/calcite-components/src/custom-theme/fab.ts b/packages/calcite-components/src/custom-theme/fab.ts new file mode 100644 index 00000000000..23a9a0ed790 --- /dev/null +++ b/packages/calcite-components/src/custom-theme/fab.ts @@ -0,0 +1,25 @@ +import { html } from "../../support/formatting"; + +const fabProps: [args: string, content: string] = ["", ""]; + +export const fabTokens = { + calciteFabBackgroundColor: "", + calciteFabBorderColor: "", + calciteFabTextColor: "", + calciteFabCornerRadius: "", + calciteFabShadowColor: "", +}; + +export const fab = (props: { kind?: string; appearance?: string }): string => { + const [fabArgs, content] = Object.entries(props) + .filter(([key, value]) => key && value && value !== "") + .reduce(([args, content], [key, value]) => { + args += `${key}="${value}" `; + content += `${value} `; + return [args, content]; + }, fabProps); + + return html`${content.trim()}`; +}; + +export const fabGroup = html`${fab({ appearance: "outline" })} ${fab({ kind: "danger" })}`; diff --git a/packages/calcite-components/src/demos/fab.html b/packages/calcite-components/src/demos/fab.html index 10fd00bd9bd..7621a85975c 100644 --- a/packages/calcite-components/src/demos/fab.html +++ b/packages/calcite-components/src/demos/fab.html @@ -595,5 +595,34 @@ + + +
+

Custom Theme

+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+