diff --git a/packages/storybook/src/css-utrecht-accordion.stories.tsx b/packages/storybook/src/css-utrecht-accordion.stories.tsx new file mode 100644 index 00000000..16a705e9 --- /dev/null +++ b/packages/storybook/src/css-utrecht-accordion.stories.tsx @@ -0,0 +1,116 @@ +/* @license CC0-1.0 */ + +import type { Meta, StoryObj } from '@storybook/react'; +import { AccordionProvider } from '@utrecht/component-library-react/dist/css-module'; +import { ReactNode } from 'react'; +import readme from './documentation/accordion.md?raw'; + +interface AccordionStoryProps { + label: string; + body: ReactNode; + expanded?: boolean; + expandedAccordion?: boolean; +} + +const AccordionStory = ({ expanded, label, body }: AccordionStoryProps) => ( + +); + +const meta = { + title: 'CSS Component/Accordion', + id: 'css-utrecht-accordion', + component: AccordionProvider, + args: { + label: '', + body: '', + expandedAccordion: false, + }, + argTypes: { + label: { + name: 'label', + type: { name: 'string', required: true }, + table: { + defaultValue: { summary: '' }, + category: 'API', + }, + }, + body: { + name: 'body', + type: { name: 'string', required: true }, + table: { + defaultValue: { summary: '' }, + category: 'API', + }, + }, + expandedAccordion: { + name: 'expandedAccordion', + type: { name: 'boolean', required: false }, + table: { + defaultValue: { summary: false }, + category: 'API', + }, + }, + }, + tags: ['autodocs'], + parameters: { + design: { + type: 'figma', + url: 'https://www.figma.com/design/ck81CE8SNzePi30jCEu7MK/NLDS---Gemeente-Tilburg---Bibliotheek?node-id=828%3A920&t=Y2YZ0H2902enM7la-1', + }, + docs: { + description: { + component: readme, + }, + }, + }, + render: AccordionStory, +} satisfies Meta; +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + label: 'Lorem ipsum', + body: `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est + laborum.`, + expandedAccordion: true, + }, +}; + +const accordionData = [ + { + label: 'Lorem ipsum 1', + body: `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est + laborum.`, + expandedAccordion: true, + }, + { + label: 'Lorem ipsum 2', + body: `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est + laborum.`, + expandedAccordion: false, + }, + { + label: 'Lorem ipsum 3', + body: `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla + pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est + laborum.`, + expandedAccordion: false, + }, +]; + +export const Multiple: Story = { + render: () => , +}; diff --git a/packages/storybook/src/documentation/accordion.md b/packages/storybook/src/documentation/accordion.md new file mode 100644 index 00000000..8d96d82e --- /dev/null +++ b/packages/storybook/src/documentation/accordion.md @@ -0,0 +1,3 @@ +# Accordion + +The accordion component is a container that can be collapsed and expanded. It is used to hide and show content. diff --git a/proprietary/design-tokens/src/common/tilburg/line.tokens.json b/proprietary/design-tokens/src/common/tilburg/line.tokens.json new file mode 100644 index 00000000..6667d3b4 --- /dev/null +++ b/proprietary/design-tokens/src/common/tilburg/line.tokens.json @@ -0,0 +1,14 @@ +{ + "tilburg": { + "line": { + "border-color": { + "value": "{tilburg.color.gray.200}", + "type": "color" + }, + "border-width": { + "value": "{tilburg.border-width.sm}", + "type": "borderWidth" + } + } + } +} diff --git a/proprietary/design-tokens/src/components/utrecht/accordion.tokens.json b/proprietary/design-tokens/src/components/utrecht/accordion.tokens.json new file mode 100644 index 00000000..870ff882 --- /dev/null +++ b/proprietary/design-tokens/src/components/utrecht/accordion.tokens.json @@ -0,0 +1,166 @@ +{ + "utrecht": { + "accordion": { + "border-radius": { + "type": "borderRadius", + "value": "0px" + }, + "section": { + "border-block-end-width": { + "type": "borderWidth", + "value": "{tilburg.border-width.sm}" + }, + "border-width": { + "type": "borderWidth", + "value": "auto" + }, + "border-color": { + "value": "{tilburg.line.border-color}", + "type": "color" + } + }, + "panel": { + "border-color": { + "value": "transparent", + "type": "color" + }, + "border-width": { + "type": "borderWidth", + "value": "{tilburg.border-width.lg}" + }, + "padding-block-end": { + "value": "{tilburg.space.block.rabbit}", + "type": "spacing" + }, + "padding-block-start": { + "value": "{tilburg.space.block.rabbit}", + "type": "spacing" + }, + "padding-inline-end": { + "value": "{tilburg.space.inline.mouse}", + "type": "spacing" + }, + "padding-inline-start": { + "value": "{tilburg.space.inline.mouse}", + "type": "spacing" + } + }, + "button": { + "font-size": { + "value": "{tilburg.document.font-size}", + "type": "fontSizes" + }, + "line-height": { + "value": "{tilburg.document.line-height}", + "type": "lineHeights" + }, + "icon": { + "margin-inline": { + "value": "{tilburg.space.text.mouse}", + "type": "spacing" + }, + "size": { + "type": "sizing", + "value": "{tilburg.icon.functional.size}" + } + }, + "padding-block-end": { + "value": "{tilburg.space.block.snail}", + "type": "spacing" + }, + "padding-block-start": { + "value": "{tilburg.space.block.snail}", + "type": "spacing" + }, + "padding-inline-end": { + "value": "{tilburg.space.inline.mouse}", + "type": "spacing" + }, + "padding-inline-start": { + "value": "{tilburg.space.inline.mouse}", + "type": "spacing" + }, + "hover": { + "background-color": { + "type": "color", + "value": "{tilburg.color.gray.100}" + }, + "border-color": { + "value": "transparent", + "type": "color" + }, + "color": { + "type": "color", + "value": "{tilburg.interaction.hover.color}" + } + }, + "expanded": { + "background-color": { + "value": "{tilburg.color.gray.50}", + "type": "color" + }, + "border-color": { + "value": "transparent", + "type": "color" + }, + "color": { + "type": "color", + "value": "{tilburg.interaction.color}" + } + }, + "background-color": { + "type": "color", + "value": "{tilburg.color.gray.50}" + }, + "border-color": { + "value": "transparent", + "type": "color" + }, + "color": { + "type": "color", + "value": "{tilburg.interaction.color}" + }, + "focus": { + "background-color": { + "type": "color", + "value": "{tilburg.focus.background-color}" + }, + "border-color": { + "value": "transparent", + "type": "color" + }, + "color": { + "type": "color", + "value": "{tilburg.focus.color}" + } + }, + "active": { + "background-color": { + "type": "color", + "value": "{tilburg.color.gray.200}" + }, + "border-color": { + "value": "transparent", + "type": "color" + }, + "color": { + "type": "color", + "value": "{tilburg.interaction.active.color}" + } + }, + "border-width": { + "type": "borderWidth", + "value": "{tilburg.border-width.sm}" + }, + "font-family": { + "value": "{tilburg.document.font-family}", + "type": "fontFamilies" + }, + "font-weight": { + "value": "{tilburg.document.strong.font-weight}", + "type": "fontWeights" + } + } + } + } +}