Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"storybook": {
"command": "pnpm",
"args": ["--filter", "document", "run", "mcp"]
}
}
}
6 changes: 3 additions & 3 deletions packages/document/.storybook/addon-gh-repository/Tool.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { A, IconButton, Icons, Separator } from '@storybook/components'
import React from 'react'
import { GithubIcon } from '@storybook/icons'
import { A, IconButton, Separator } from 'storybook/internal/components'
import { ADDON_NAME, REPOSITORY_URL, TOOL_ID } from './constants'

export const Tool = () => {
Expand All @@ -8,7 +8,7 @@ export const Tool = () => {
<Separator />
<IconButton key={TOOL_ID} active={false} title={ADDON_NAME}>
<A target='_blank' href={REPOSITORY_URL}>
<Icons icon='github' />
<GithubIcon />
&nbsp;&nbsp;repository
</A>
</IconButton>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { addons, types } from "@storybook/manager-api"
import { addons, types } from "storybook/manager-api"
import React from "react"
import { Tool } from "./Tool"
import { ADDON_ID, ADDON_NAME } from "./constants"
Expand Down
2 changes: 1 addition & 1 deletion packages/document/.storybook/commercelayer.theme.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { create } from '@storybook/theming'
import { create } from 'storybook/theming'

export default create({
base: 'light',
Expand Down
25 changes: 8 additions & 17 deletions packages/document/.storybook/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,16 @@ const storybookConfig: StorybookConfig = {
return mergeConfig(config, viteOverrides)
},
stories: ["../stories/**/*.mdx", "../stories/**/*.stories.@(js|jsx|ts|tsx)"],
addons: [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-interactions",
{
name: "@storybook/addon-docs",
options: {
mdxPluginOptions: {
mdxCompileOptions: {
remarkPlugins: [remarkGfm],
},
addons: ["@storybook/addon-links", {
name: "@storybook/addon-docs",
options: {
mdxPluginOptions: {
mdxCompileOptions: {
remarkPlugins: [remarkGfm],
},
},
},
],
}],
// @ts-expect-error This 'managerEntries' exists.
managerEntries: [
resolve(import.meta.dirname, "./addon-gh-repository/manager.tsx"),
Expand All @@ -47,12 +42,8 @@ const storybookConfig: StorybookConfig = {
core: {
disableTelemetry: true,
},
features: {
storyStoreV7: true,
},
docs: {
autodocs: true,
docsMode: true,
docsMode: true
},
typescript: {
check: false,
Expand Down
16 changes: 9 additions & 7 deletions packages/document/.storybook/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import {
Stories,
Subtitle,
Title,
} from "@storybook/blocks"
import type { Decorator, Parameters } from "@storybook/react"
} from "@storybook/addon-docs/blocks"
import type { Decorator, Parameters, Preview } from "@storybook/react-vite"
import React from "react"
import { worker } from "../mocks/browser"

Expand All @@ -19,18 +19,19 @@ export const parameters: Parameters = {
},
},
backgrounds: {
values: [
{
options: {
overlay: {
name: "overlay",
value: "#F8F8F8",
},
],
}
},
},
options: {
storySort: {
method: "alphabetical",
order: [
"Getting Started",
"Skus",
// [
// "Welcome",
// "Applications",
Expand Down Expand Up @@ -140,4 +141,5 @@ const argTypesEnhancers: Preview["argTypesEnhancers"] = [
export default {
parameters,
argTypesEnhancers,
}
tags: ["autodocs"]
};
70 changes: 70 additions & 0 deletions packages/document/mocks/data/sku_lists.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import { http, HttpResponse } from 'msw'

const skuListData = {
id: 'SkuListAbc01',
type: 'sku_lists',
links: {
self: 'https://react-components-store.commercelayer.io/api/sku_lists/SkuListAbc01'
},
attributes: {
name: 'Summer Collection',
slug: 'summer-collection',
description: 'Our summer collection SKU list.',
image_url: null,
manual: true,
sku_count: 2,
created_at: '2023-01-01T00:00:00.000Z',
updated_at: '2023-01-01T00:00:00.000Z',
reference: null,
reference_origin: null,
metadata: {}
},
relationships: {
skus: {
data: [
{ type: 'skus', id: 'SkuAbc001' },
{ type: 'skus', id: 'SkuAbc002' }
]
}
},
meta: { mode: 'test' }
}

const included = [
{
id: 'SkuAbc001',
type: 'skus',
links: { self: 'https://react-components-store.commercelayer.io/api/skus/SkuAbc001' },
attributes: {
code: 'TSHIRTMM000000FFFFFFXLXX',
name: 'Black T-Shirt XL',
image_url: 'https://img.commercelayer.io/skus/TSHIRTMM000000FFFFFFXLXX.png'
},
relationships: {},
meta: { mode: 'test' }
},
{
id: 'SkuAbc002',
type: 'skus',
links: { self: 'https://react-components-store.commercelayer.io/api/skus/SkuAbc002' },
attributes: {
code: 'PANTSMM000000FFFFFFXXXX',
name: 'Black Pants',
image_url: 'https://img.commercelayer.io/skus/PANTSMM000000FFFFFFXXXX.png'
},
relationships: {},
meta: { mode: 'test' }
}
]

export default [
http.get(
'https://react-components-store.commercelayer.io/api/sku_lists/:id',
() => {
return HttpResponse.json({
data: skuListData,
included
})
}
)
]
73 changes: 73 additions & 0 deletions packages/document/mocks/data/skus.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { http, HttpResponse } from 'msw'

const skuList = [
{
id: 'SkuAbc001',
type: 'skus',
links: { self: 'https://react-components-store.commercelayer.io/api/skus/SkuAbc001' },
attributes: {
code: 'TSHIRTMM000000FFFFFFXLXX',
name: 'Black T-Shirt XL',
description: 'A comfortable black t-shirt in XL size.',
image_url: 'https://img.commercelayer.io/skus/TSHIRTMM000000FFFFFFXLXX.png',
do_not_ship: false,
do_not_track: false,
pieces_per_pack: null,
weight: null,
unit_of_weight: null,
hs_tariff_number: null,
inbound_tracking: null,
created_at: '2023-01-01T00:00:00.000Z',
updated_at: '2023-01-01T00:00:00.000Z',
reference: null,
reference_origin: null,
metadata: {}
},
relationships: {},
meta: { mode: 'test' }
},
{
id: 'SkuAbc002',
type: 'skus',
links: { self: 'https://react-components-store.commercelayer.io/api/skus/SkuAbc002' },
attributes: {
code: 'PANTSMM000000FFFFFFXXXX',
name: 'Black Pants',
description: 'Classic black pants.',
image_url: 'https://img.commercelayer.io/skus/PANTSMM000000FFFFFFXXXX.png',
do_not_ship: false,
do_not_track: false,
pieces_per_pack: null,
weight: null,
unit_of_weight: null,
hs_tariff_number: null,
inbound_tracking: null,
created_at: '2023-01-01T00:00:00.000Z',
updated_at: '2023-01-01T00:00:00.000Z',
reference: null,
reference_origin: null,
metadata: {}
},
relationships: {},
meta: { mode: 'test' }
}
]

// MSW v2 handler (canonical pattern for this project β€” existing handlers use the v1 compat shim).
// This broad match intercepts all GET /api/skus requests regardless of query params.
// Add more specific handlers above this one if you need different responses per query.
export default [
http.get(
'https://react-components-store.commercelayer.io/api/skus',
() => {
return HttpResponse.json({
data: skuList,
meta: { record_count: 2, page_count: 1 },
links: {
first: 'https://react-components-store.commercelayer.io/api/skus?page[number]=1',
last: 'https://react-components-store.commercelayer.io/api/skus?page[number]=1'
}
})
}
)
]
4 changes: 4 additions & 0 deletions packages/document/mocks/handlers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import bundles from './data/bundles'
import lineItems from './data/line_items'
import markets from './data/markets'
import orders from './data/orders'
import skus from './data/skus'
import skuLists from './data/sku_lists'
import tags from './data/tags'

export const handlers = [
Expand All @@ -11,5 +13,7 @@ export const handlers = [
...lineItems,
...markets,
...orders,
...skus,
...skuLists,
...tags
]
27 changes: 12 additions & 15 deletions packages/document/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,34 @@
"lint": "eslint .",
"preview": "vite preview",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build"
"build-storybook": "storybook build",
"mcp": "storybook mcp"
},
"dependencies": {
"react": "^19.2.3",
"react-dom": "^19.2.3"
},
"devDependencies": {
"@chromatic-com/storybook": "^5.0.0",
"@chromatic-com/storybook": "^5.1.1",
"@eslint/js": "^9.39.2",
"@storybook/addon-docs": "^10.1.11",
"@storybook/addon-essentials": "^8.6.14",
"@storybook/addon-interactions": "^8.6.14",
"@storybook/addon-links": "^10.1.11",
"@storybook/addon-mdx-gfm": "^8.6.14",
"@storybook/addon-onboarding": "^10.1.11",
"@storybook/blocks": "^8.6.14",
"@storybook/react": "^10.1.11",
"@storybook/react-vite": "^10.1.11",
"@storybook/test": "^8.6.15",
"@storybook/theming": "^8.6.14",
"@storybook/addon-docs": "^10.3.3",
"@storybook/addon-links": "^10.3.3",
"@storybook/addon-mcp": "^0.4.2",
"@storybook/addon-onboarding": "^10.3.3",
"@storybook/icons": "^2.0.1",
"@storybook/react": "^10.3.3",
"@storybook/react-vite": "^10.3.3",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.2",
"eslint": "^9.39.2",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.26",
"eslint-plugin-storybook": "^10.1.11",
"eslint-plugin-storybook": "^10.3.3",
"globals": "^17.0.0",
"msw": "^2.12.7",
"remark-gfm": "^4.0.1",
"storybook": "^10.1.11",
"storybook": "^10.3.3",
"typescript": "~5.9.3",
"typescript-eslint": "^8.53.0",
"vite": "^7.3.1",
Expand Down
Loading
Loading