Skip to content

Commit

Permalink
feat(addons): format story name
Browse files Browse the repository at this point in the history
  • Loading branch information
vinpac committed Apr 25, 2022
1 parent 067076d commit edca1c0
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 14 deletions.
2 changes: 1 addition & 1 deletion packages/ladle/lib/app/generated/styles.css

Large diffs are not rendered by default.

7 changes: 2 additions & 5 deletions packages/ladle/lib/app/src/addon-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { Button as RtlButton } from "./addons/rtl";
import { Button as LadleButton } from "./addons/ladle";
import config from "./get-config";
import { ChevronRight, Circle } from "./icons";
import { StoryName } from "./addons/story-name";

type AddonNames = keyof Config["addons"];

Expand All @@ -24,11 +25,7 @@ const AddonPanel: React.FC<{

return (
<aside data-ladle className="ladle-addons">
<div className="ladle-addons-story-title">
<Circle className="ladle-addons-story-icon" />
{globalState.story}
<ChevronRight className="ladle-addons-story-divider" />
</div>
<StoryName title={globalState.story} />
<ul className="ladle-addons-controls">
{config.addons.control.enabled &&
Object.keys(globalState.control).length > 0 && (
Expand Down
32 changes: 32 additions & 0 deletions packages/ladle/lib/app/src/addons/story-name.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React from "react";
import { ChevronRight, Circle } from "../icons";
import { parseStoryTitle } from "../utils/story";

interface StoryNameProps {
title: string;
}

export const StoryName: React.FC<StoryNameProps> = ({ title }) => {
const handleClick = () => {
navigator.clipboard.writeText(title);
};
const parsedStoryTitle = parseStoryTitle(title);

return (
<button
aria-label="Copy Story Link"
onClick={handleClick}
className="ladle-addons-story-title"
>
<Circle className="ladle-addons-story-icon" />
{parsedStoryTitle.map((title, i) => (
<React.Fragment key={`${title}${i}`}>
{title}
{i !== parsedStoryTitle.length - 1 && (
<ChevronRight className="ladle-addons-story-divider" />
)}
</React.Fragment>
))}
</button>
);
};
18 changes: 10 additions & 8 deletions packages/ladle/lib/app/src/styles/addons.css
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,16 @@ html[dir="rtl"] {
}
}

.ladle-addons-story-title {
@apply flex items-center mr-auto text-xs text-primary-700;
}
[data-ladle] {
.ladle-addons-story-title {
@apply flex items-center mr-auto text-xs text-primary-700;
}

.ladle-addons-story-icon {
@apply h-1.5 text-primary-500;
}
.ladle-addons-story-icon {
@apply h-1.5 text-primary-500;
}

.ladle-addons-story-divider {
@apply h-4 text-primary-400;
.ladle-addons-story-divider {
@apply h-4 text-primary-400;
}
}
6 changes: 6 additions & 0 deletions packages/ladle/lib/app/src/utils/story.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export const parseStoryTitle = (storyTitle: string): string[] => {
return storyTitle.split("--").map((part) => {
const capitalized = part.charAt(0).toUpperCase() + part.substring(1);
return capitalized.replace(/-/g, " ");
});
};

0 comments on commit edca1c0

Please sign in to comment.