@arbor-education/design-system.components 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/icon/Icon.stories.d.ts +7 -0
- package/dist/components/icon/Icon.stories.d.ts.map +1 -1
- package/dist/components/icon/Icon.stories.js +8 -0
- package/dist/components/icon/Icon.stories.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts +17 -0
- package/dist/components/tabs/Tabs.d.ts.map +1 -0
- package/dist/components/tabs/Tabs.js +10 -0
- package/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/components/tabs/Tabs.stories.d.ts +40 -0
- package/dist/components/tabs/Tabs.stories.d.ts.map +1 -0
- package/dist/components/tabs/Tabs.stories.js +46 -0
- package/dist/components/tabs/Tabs.stories.js.map +1 -0
- package/dist/components/tabs/Tabs.test.d.ts +2 -0
- package/dist/components/tabs/Tabs.test.d.ts.map +1 -0
- package/dist/components/tabs/Tabs.test.js +108 -0
- package/dist/components/tabs/Tabs.test.js.map +1 -0
- package/dist/components/tabs/TabsItem.d.ts +15 -0
- package/dist/components/tabs/TabsItem.d.ts.map +1 -0
- package/dist/components/tabs/TabsItem.js +18 -0
- package/dist/components/tabs/TabsItem.js.map +1 -0
- package/dist/components/tabs/TabsItem.stories.d.ts +618 -0
- package/dist/components/tabs/TabsItem.stories.d.ts.map +1 -0
- package/dist/components/tabs/TabsItem.stories.js +48 -0
- package/dist/components/tabs/TabsItem.stories.js.map +1 -0
- package/dist/index.css +57 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/card/card.scss +1 -1
- package/src/components/icon/Icon.stories.tsx +8 -0
- package/src/components/tabs/Tabs.stories.tsx +92 -0
- package/src/components/tabs/Tabs.test.tsx +220 -0
- package/src/components/tabs/Tabs.tsx +14 -0
- package/src/components/tabs/TabsItem.stories.tsx +55 -0
- package/src/components/tabs/TabsItem.tsx +42 -0
- package/src/components/tabs/tabs.scss +61 -0
- package/src/index.scss +1 -0
- package/src/index.ts +1 -0
- package/src/tokens.scss +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.stories.d.ts","sourceRoot":"","sources":["../../../src/components/icon/Icon.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Icon.stories.d.ts","sourceRoot":"","sources":["../../../src/components/icon/Icon.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAG3B,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;CAYnB,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Icon } from './Icon';
|
|
2
|
+
import { allowedIcons } from './allowedIcons';
|
|
2
3
|
const meta = {
|
|
3
4
|
title: 'Components/Icon',
|
|
4
5
|
component: Icon,
|
|
@@ -8,6 +9,13 @@ export const Default = {
|
|
|
8
9
|
name: '3-dot',
|
|
9
10
|
size: 16,
|
|
10
11
|
},
|
|
12
|
+
argTypes: {
|
|
13
|
+
name: {
|
|
14
|
+
control: 'select',
|
|
15
|
+
description: 'Icon name',
|
|
16
|
+
options: Object.keys(allowedIcons),
|
|
17
|
+
},
|
|
18
|
+
},
|
|
11
19
|
};
|
|
12
20
|
export default meta;
|
|
13
21
|
//# sourceMappingURL=Icon.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.stories.js","sourceRoot":"","sources":["../../../src/components/icon/Icon.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Icon.stories.js","sourceRoot":"","sources":["../../../src/components/icon/Icon.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,IAAI,GAAsB;IAC9B,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE;KACT;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;SACnC;KACF;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
export declare const Tabs: {
|
|
3
|
+
(props: HTMLAttributes<HTMLUListElement> & {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
Item: (props: {
|
|
7
|
+
active?: boolean;
|
|
8
|
+
iconName?: keyof typeof import("../icon/allowedIcons").allowedIcons;
|
|
9
|
+
} & (({
|
|
10
|
+
tabElement?: "button";
|
|
11
|
+
tabElementProps?: import("react").ButtonHTMLAttributes<HTMLButtonElement>;
|
|
12
|
+
} | {
|
|
13
|
+
tabElement?: "link";
|
|
14
|
+
tabElementProps?: import("react").AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
15
|
+
}) & HTMLAttributes<HTMLLIElement>)) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=Tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,eAAO,MAAM,IAAI;YAAW,cAAc,CAAC,gBAAgB,CAAC,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;;;;;;;;;;;CAO3F,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import {} from 'react';
|
|
4
|
+
import { TabsItem } from './TabsItem';
|
|
5
|
+
export const Tabs = (props) => {
|
|
6
|
+
const { children, className, ...rest } = props;
|
|
7
|
+
return (_jsx("ul", { role: "tablist", className: classNames('ds-tabs', className), ...rest, children: children }));
|
|
8
|
+
};
|
|
9
|
+
Tabs.Item = TabsItem;
|
|
10
|
+
//# sourceMappingURL=Tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAuE,EAAE,EAAE;IAC9F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,OAAO,CACL,aAAI,IAAI,EAAC,SAAS,EAAC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,IAAI,YACrE,QAAQ,GACN,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: {
|
|
5
|
+
(props: import("react").HTMLAttributes<HTMLUListElement> & {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
Item: (props: {
|
|
9
|
+
active?: boolean;
|
|
10
|
+
iconName?: keyof typeof import("../icon/allowedIcons").allowedIcons;
|
|
11
|
+
} & (({
|
|
12
|
+
tabElement?: "button";
|
|
13
|
+
tabElementProps?: import("react").ButtonHTMLAttributes<HTMLButtonElement>;
|
|
14
|
+
} | {
|
|
15
|
+
tabElement?: "link";
|
|
16
|
+
tabElementProps?: import("react").AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
17
|
+
}) & import("react").HTMLAttributes<HTMLLIElement>)) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
};
|
|
19
|
+
parameters: {
|
|
20
|
+
layout: string;
|
|
21
|
+
};
|
|
22
|
+
tags: string[];
|
|
23
|
+
argTypes: {
|
|
24
|
+
children: {
|
|
25
|
+
control: false;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
className: {
|
|
29
|
+
control: "text";
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export default meta;
|
|
35
|
+
type Story = StoryObj<typeof meta>;
|
|
36
|
+
export declare const Default: Story;
|
|
37
|
+
export declare const WithLinks: Story;
|
|
38
|
+
export declare const Mixed: Story;
|
|
39
|
+
export declare const ManyTabs: Story;
|
|
40
|
+
//# sourceMappingURL=Tabs.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.stories.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG5D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBmB,CAAC;AAE9B,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAGnC,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,KAgBvB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,KAenB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAetB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Tabs } from './Tabs';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Components/Tabs',
|
|
5
|
+
component: Tabs,
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: 'padded',
|
|
8
|
+
},
|
|
9
|
+
tags: ['autodocs'],
|
|
10
|
+
argTypes: {
|
|
11
|
+
children: {
|
|
12
|
+
control: false,
|
|
13
|
+
description: 'Tab items to display',
|
|
14
|
+
},
|
|
15
|
+
className: {
|
|
16
|
+
control: 'text',
|
|
17
|
+
description: 'Additional CSS classes',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export default meta;
|
|
22
|
+
// Basic tabs with buttons
|
|
23
|
+
export const Default = {
|
|
24
|
+
args: {
|
|
25
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Tabs.Item, { active: true, children: "Overview" }), _jsx(Tabs.Item, { children: "Details" }), _jsx(Tabs.Item, { children: "Settings" })] })),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
// Tabs with links
|
|
29
|
+
export const WithLinks = {
|
|
30
|
+
args: {
|
|
31
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#overview' }, active: true, children: "Overview" }), _jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#details' }, children: "Details" }), _jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#settings' }, children: "Settings" })] })),
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
// Mixed tabs (buttons and links)
|
|
35
|
+
export const Mixed = {
|
|
36
|
+
args: {
|
|
37
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Tabs.Item, { active: true, children: "Home" }), _jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#about' }, children: "About" }), _jsx(Tabs.Item, { children: "Contact" }), _jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#help' }, children: "Help" })] })),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
// Many tabs
|
|
41
|
+
export const ManyTabs = {
|
|
42
|
+
args: {
|
|
43
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Tabs.Item, { active: true, iconName: "list", children: "Tab 1" }), _jsx(Tabs.Item, { iconName: "list", children: "Tab 2" }), _jsx(Tabs.Item, { iconName: "list", children: "Tab 3" }), _jsx(Tabs.Item, { iconName: "list", children: "Tab 4" }), _jsx(Tabs.Item, { iconName: "list", children: "Tab 5" }), _jsx(Tabs.Item, { iconName: "list", children: "Tab 6" }), _jsx(Tabs.Item, { iconName: "list", children: "Tab 7" }), _jsx(Tabs.Item, { iconName: "list", children: "Tab 8" })] })),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=Tabs.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.stories.js","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV,MAAM,EAAE,QAAQ;KACjB;IACD,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,sBAAsB;SACpC;QACD,SAAS,EAAE;YACT,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,wBAAwB;SACtC;KACF;CAC0B,CAAC;AAE9B,eAAe,IAAI,CAAC;AAGpB,0BAA0B;AAC1B,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,QAAQ,EAAE,CACR,8BACE,KAAC,IAAI,CAAC,IAAI,IAAC,MAAM,+BAAqB,EACtC,KAAC,IAAI,CAAC,IAAI,0BAAoB,EAC9B,KAAC,IAAI,CAAC,IAAI,2BAAqB,IAC9B,CACJ;KACF;CACF,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,QAAQ,EAAE,CACR,8BACE,KAAC,IAAI,CAAC,IAAI,IAAC,UAAU,EAAC,MAAM,EAAC,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,MAAM,+BAE/D,EACZ,KAAC,IAAI,CAAC,IAAI,IAAC,UAAU,EAAC,MAAM,EAAC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,wBAEtD,EACZ,KAAC,IAAI,CAAC,IAAI,IAAC,UAAU,EAAC,MAAM,EAAC,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,yBAEvD,IACX,CACJ;KACF;CACF,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,QAAQ,EAAE,CACR,8BACE,KAAC,IAAI,CAAC,IAAI,IAAC,MAAM,2BAAiB,EAClC,KAAC,IAAI,CAAC,IAAI,IAAC,UAAU,EAAC,MAAM,EAAC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAEpD,EACZ,KAAC,IAAI,CAAC,IAAI,0BAAoB,EAC9B,KAAC,IAAI,CAAC,IAAI,IAAC,UAAU,EAAC,MAAM,EAAC,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,qBAEnD,IACX,CACJ;KACF;CACF,CAAC;AAEF,YAAY;AACZ,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE;QACJ,QAAQ,EAAE,CACR,8BACE,KAAC,IAAI,CAAC,IAAI,IAAC,MAAM,QAAC,QAAQ,EAAC,MAAM,sBAAkB,EACnD,KAAC,IAAI,CAAC,IAAI,IAAC,QAAQ,EAAC,MAAM,sBAAkB,EAC5C,KAAC,IAAI,CAAC,IAAI,IAAC,QAAQ,EAAC,MAAM,sBAAkB,EAC5C,KAAC,IAAI,CAAC,IAAI,IAAC,QAAQ,EAAC,MAAM,sBAAkB,EAC5C,KAAC,IAAI,CAAC,IAAI,IAAC,QAAQ,EAAC,MAAM,sBAAkB,EAC5C,KAAC,IAAI,CAAC,IAAI,IAAC,QAAQ,EAAC,MAAM,sBAAkB,EAC5C,KAAC,IAAI,CAAC,IAAI,IAAC,QAAQ,EAAC,MAAM,sBAAkB,EAC5C,KAAC,IAAI,CAAC,IAAI,IAAC,QAAQ,EAAC,MAAM,sBAAkB,IAC3C,CACJ;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.test.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.test.tsx"],"names":[],"mappings":"AAGA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { expect, test, describe, vi } from 'vitest';
|
|
3
|
+
import { Tabs } from './Tabs';
|
|
4
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
5
|
+
import '@testing-library/jest-dom/vitest';
|
|
6
|
+
describe('Tabs component', () => {
|
|
7
|
+
test('renders tabs container with correct role', () => {
|
|
8
|
+
render(_jsxs(Tabs, { children: [_jsx(Tabs.Item, { children: "Tab 1" }), _jsx(Tabs.Item, { children: "Tab 2" })] }));
|
|
9
|
+
const tabsContainer = screen.getByRole('tablist');
|
|
10
|
+
expect(tabsContainer).toBeInTheDocument();
|
|
11
|
+
expect(tabsContainer.tagName).toBe('UL');
|
|
12
|
+
expect(tabsContainer).toHaveClass('ds-tabs');
|
|
13
|
+
});
|
|
14
|
+
test('renders children correctly', () => {
|
|
15
|
+
render(_jsxs(Tabs, { children: [_jsx(Tabs.Item, { children: "Overview" }), _jsx(Tabs.Item, { children: "Details" }), _jsx(Tabs.Item, { children: "Settings" })] }));
|
|
16
|
+
expect(screen.getByText('Overview')).toBeInTheDocument();
|
|
17
|
+
expect(screen.getByText('Details')).toBeInTheDocument();
|
|
18
|
+
expect(screen.getByText('Settings')).toBeInTheDocument();
|
|
19
|
+
});
|
|
20
|
+
test('applies custom className', () => {
|
|
21
|
+
render(_jsx(Tabs, { className: "custom-tabs", children: _jsx(Tabs.Item, { children: "Tab 1" }) }));
|
|
22
|
+
const tabsContainer = screen.getByRole('tablist');
|
|
23
|
+
expect(tabsContainer).toHaveClass('ds-tabs', 'custom-tabs');
|
|
24
|
+
});
|
|
25
|
+
test('passes through additional props', () => {
|
|
26
|
+
render(_jsx(Tabs, { "data-testid": "tabs-container", "aria-label": "Navigation tabs", children: _jsx(Tabs.Item, { children: "Tab 1" }) }));
|
|
27
|
+
const tabsContainer = screen.getByTestId('tabs-container');
|
|
28
|
+
expect(tabsContainer).toHaveAttribute('aria-label', 'Navigation tabs');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('TabsItem component', () => {
|
|
32
|
+
test('renders as button by default', () => {
|
|
33
|
+
render(_jsx(Tabs, { children: _jsx(Tabs.Item, { children: "Tab Button" }) }));
|
|
34
|
+
const tabButton = screen.getByRole('tab');
|
|
35
|
+
expect(tabButton.tagName).toBe('BUTTON');
|
|
36
|
+
expect(tabButton).toHaveTextContent('Tab Button');
|
|
37
|
+
});
|
|
38
|
+
test('renders as link when tabElement is link', () => {
|
|
39
|
+
render(_jsx(Tabs, { children: _jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#overview' }, children: "Overview Link" }) }));
|
|
40
|
+
const tabLink = screen.getByRole('tab');
|
|
41
|
+
expect(tabLink.tagName).toBe('A');
|
|
42
|
+
expect(tabLink).toHaveAttribute('href', '#overview');
|
|
43
|
+
expect(tabLink).toHaveTextContent('Overview Link');
|
|
44
|
+
});
|
|
45
|
+
test('applies active state correctly', () => {
|
|
46
|
+
render(_jsxs(Tabs, { children: [_jsx(Tabs.Item, { active: true, children: "Active Tab" }), _jsx(Tabs.Item, { children: "Inactive Tab" })] }));
|
|
47
|
+
const activeTab = screen.getByText('Active Tab');
|
|
48
|
+
const inactiveTab = screen.getByText('Inactive Tab');
|
|
49
|
+
expect(activeTab).toHaveClass('ds-tabs-item__tab--active');
|
|
50
|
+
expect(activeTab).toHaveAttribute('aria-selected', 'true');
|
|
51
|
+
expect(inactiveTab).not.toHaveClass('ds-tabs-item__tab--active');
|
|
52
|
+
expect(inactiveTab).toHaveAttribute('aria-selected', 'false');
|
|
53
|
+
});
|
|
54
|
+
test('applies correct CSS classes', () => {
|
|
55
|
+
render(_jsx(Tabs, { children: _jsx(Tabs.Item, { children: "Tab Item" }) }));
|
|
56
|
+
const listItem = screen.getByRole('presentation');
|
|
57
|
+
const tabElement = screen.getByRole('tab');
|
|
58
|
+
expect(listItem).toHaveClass('ds-tabs-item');
|
|
59
|
+
expect(tabElement).toHaveClass('ds-tabs-item__tab');
|
|
60
|
+
});
|
|
61
|
+
test('applies custom className to list item', () => {
|
|
62
|
+
render(_jsx(Tabs, { children: _jsx(Tabs.Item, { className: "custom-tab-item", children: "Tab Item" }) }));
|
|
63
|
+
const listItem = screen.getByRole('presentation');
|
|
64
|
+
expect(listItem).toHaveClass('ds-tabs-item', 'custom-tab-item');
|
|
65
|
+
});
|
|
66
|
+
test('handles click events on button tabs', () => {
|
|
67
|
+
const handleClick = vi.fn();
|
|
68
|
+
render(_jsx(Tabs, { children: _jsx(Tabs.Item, { tabElementProps: { onClick: handleClick }, children: "Clickable Tab" }) }));
|
|
69
|
+
fireEvent.click(screen.getByRole('tab'));
|
|
70
|
+
expect(handleClick).toHaveBeenCalledTimes(1);
|
|
71
|
+
});
|
|
72
|
+
test('passes through additional props to button', () => {
|
|
73
|
+
render(_jsx(Tabs, { children: _jsx(Tabs.Item, { tabElementProps: { 'disabled': true, 'data-testid': 'tab-button' }, children: "Disabled Tab" }) }));
|
|
74
|
+
const tabButton = screen.getByTestId('tab-button');
|
|
75
|
+
expect(tabButton).toBeDisabled();
|
|
76
|
+
});
|
|
77
|
+
test('passes through additional props to link', () => {
|
|
78
|
+
render(_jsx(Tabs, { children: _jsx(Tabs.Item, { tabElement: "link", tabElementProps: {
|
|
79
|
+
'href': '#test',
|
|
80
|
+
'target': '_blank',
|
|
81
|
+
// @ts-expect-error - data-testid is not a valid prop for AnchorHTMLAttributes
|
|
82
|
+
'data-testid': 'tab-link',
|
|
83
|
+
}, children: "Link Tab" }) }));
|
|
84
|
+
const tabLink = screen.getByTestId('tab-link');
|
|
85
|
+
expect(tabLink).toHaveAttribute('href', '#test');
|
|
86
|
+
expect(tabLink).toHaveAttribute('target', '_blank');
|
|
87
|
+
});
|
|
88
|
+
test('renders multiple tabs correctly', () => {
|
|
89
|
+
render(_jsxs(Tabs, { children: [_jsx(Tabs.Item, { active: true, children: "Tab 1" }), _jsx(Tabs.Item, { children: "Tab 2" }), _jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#tab3' }, children: "Tab 3" })] }));
|
|
90
|
+
const tabs = screen.getAllByRole('tab');
|
|
91
|
+
expect(tabs).toHaveLength(3);
|
|
92
|
+
expect(tabs[0]).toHaveTextContent('Tab 1');
|
|
93
|
+
expect(tabs[0]).toHaveAttribute('aria-selected', 'true');
|
|
94
|
+
expect(tabs[1]).toHaveTextContent('Tab 2');
|
|
95
|
+
expect(tabs[1]).toHaveAttribute('aria-selected', 'false');
|
|
96
|
+
expect(tabs[2]).toHaveTextContent('Tab 3');
|
|
97
|
+
expect(tabs[2]).toHaveAttribute('href', '#tab3');
|
|
98
|
+
});
|
|
99
|
+
test('handles mixed tab types', () => {
|
|
100
|
+
render(_jsxs(Tabs, { children: [_jsx(Tabs.Item, { active: true, children: "Button Tab" }), _jsx(Tabs.Item, { tabElement: "link", tabElementProps: { href: '#link-tab' }, children: "Link Tab" })] }));
|
|
101
|
+
const buttonTab = screen.getByText('Button Tab');
|
|
102
|
+
const linkTab = screen.getByText('Link Tab');
|
|
103
|
+
expect(buttonTab.tagName).toBe('BUTTON');
|
|
104
|
+
expect(linkTab.tagName).toBe('A');
|
|
105
|
+
expect(linkTab).toHaveAttribute('href', '#link-tab');
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=Tabs.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.test.js","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { allowedIcons } from '../icon/allowedIcons';
|
|
2
|
+
import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes } from 'react';
|
|
3
|
+
type TabsItemProps = {
|
|
4
|
+
active?: boolean;
|
|
5
|
+
iconName?: keyof typeof allowedIcons;
|
|
6
|
+
} & ({
|
|
7
|
+
tabElement?: 'button';
|
|
8
|
+
tabElementProps?: ButtonHTMLAttributes<HTMLButtonElement>;
|
|
9
|
+
} | {
|
|
10
|
+
tabElement?: 'link';
|
|
11
|
+
tabElementProps?: AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
12
|
+
}) & HTMLAttributes<HTMLLIElement>;
|
|
13
|
+
export declare const TabsItem: (props: TabsItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=TabsItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsItem.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/TabsItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAExF,KAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,YAAY,CAAC;CACtC,GAAG,CACA;IAAE,UAAU,CAAC,EAAE,QAAQ,CAAC;IAAC,eAAe,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;CAAE,GACpF;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;CAAE,CACnF,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAEpC,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,4CA4B5C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { Icon } from '../icon/Icon';
|
|
4
|
+
export const TabsItem = (props) => {
|
|
5
|
+
const { children, className, tabElement = 'button', tabElementProps, active = false, iconName, ...rest } = props;
|
|
6
|
+
const elementClassNames = classNames('ds-tabs-item__tab', {
|
|
7
|
+
'ds-tabs-item__tab--active': active,
|
|
8
|
+
});
|
|
9
|
+
const sharedProps = {
|
|
10
|
+
'role': 'tab',
|
|
11
|
+
'className': elementClassNames,
|
|
12
|
+
'aria-selected': active,
|
|
13
|
+
};
|
|
14
|
+
return (_jsx("li", { role: "presentation", className: classNames('ds-tabs-item', className), ...rest, children: tabElement === 'button'
|
|
15
|
+
? (_jsxs("button", { ...tabElementProps, ...sharedProps, children: [iconName && _jsx(Icon, { name: iconName, size: 16 }), children] }))
|
|
16
|
+
: (_jsxs("a", { ...tabElementProps, ...sharedProps, children: [iconName && _jsx(Icon, { name: iconName, size: 16 }), children] })) }));
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=TabsItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsItem.js","sourceRoot":"","sources":["../../../src/components/tabs/TabsItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAW5C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC/C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEjH,MAAM,iBAAiB,GAAG,UAAU,CAAC,mBAAmB,EAAE;QACxD,2BAA2B,EAAE,MAAM;KACpC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG;QAClB,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,iBAAiB;QAC9B,eAAe,EAAE,MAAM;KACxB,CAAC;IACF,OAAO,CACL,aAAI,IAAI,EAAC,cAAc,EAAC,SAAS,EAAE,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,KAAM,IAAI,YAC/E,UAAU,KAAK,QAAQ;YACtB,CAAC,CAAC,CACE,qBAAa,eAA2D,KAAM,WAAW,aACtF,QAAQ,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,EAC9C,QAAQ,IACF,CACV;YACH,CAAC,CAAC,CACE,gBAAQ,eAA2D,KAAM,WAAW,aACjF,QAAQ,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,EAC9C,QAAQ,IACP,CACL,GACF,CACN,CAAC;AACJ,CAAC,CAAC"}
|