jvetrau-ds 0.1.18 → 0.1.19
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/components/index.cjs +18 -0
- package/components/index.d.cts +4 -1
- package/components/index.d.ts +4 -1
- package/components/index.js +3 -0
- package/components/tabs/index.d.cts +1 -1
- package/components/tabs/index.d.ts +1 -1
- package/components/tabs/tabs.cjs +50 -3
- package/components/tabs/tabs.cjs.map +1 -1
- package/components/tabs/tabs.css +83 -65
- package/components/tabs/tabs.d.cts +9 -1
- package/components/tabs/tabs.d.ts +9 -1
- package/components/tabs/tabs.js +50 -3
- package/components/tabs/tabs.js.map +1 -1
- package/index.d.cts +2 -2
- package/index.d.ts +2 -2
- package/package.json +1 -1
- package/styles.css +82 -64
- package/themes/base/desktop.css +1 -1
- package/themes/base/desktop.md +1 -1
- package/themes/base/desktop.scoped.css +1 -1
- package/themes/base/diagram.css +1 -1
- package/themes/base/diagram.md +1 -1
- package/themes/base/diagram.scoped.css +1 -1
- package/themes/base/mobile.css +1 -1
- package/themes/base/mobile.md +1 -1
- package/themes/base/mobile.scoped.css +1 -1
- package/themes/brandcopilot/desktop.css +1 -1
- package/themes/brandcopilot/desktop.md +1 -1
- package/themes/brandcopilot/desktop.scoped.css +1 -1
- package/themes/brandcopilot/diagram.css +1 -1
- package/themes/brandcopilot/diagram.md +1 -1
- package/themes/brandcopilot/diagram.scoped.css +1 -1
- package/themes/brandcopilot/mobile.css +1 -1
- package/themes/brandcopilot/mobile.md +1 -1
- package/themes/brandcopilot/mobile.scoped.css +1 -1
- package/themes/dmpatterns/desktop.css +1 -1
- package/themes/dmpatterns/desktop.md +1 -1
- package/themes/dmpatterns/desktop.scoped.css +1 -1
- package/themes/dmpatterns/diagram.css +1 -1
- package/themes/dmpatterns/diagram.md +1 -1
- package/themes/dmpatterns/diagram.scoped.css +1 -1
- package/themes/dmpatterns/mobile.css +1 -1
- package/themes/dmpatterns/mobile.md +1 -1
- package/themes/dmpatterns/mobile.scoped.css +1 -1
- package/themes/pdigest/desktop.css +1 -1
- package/themes/pdigest/desktop.md +1 -1
- package/themes/pdigest/desktop.scoped.css +1 -1
- package/themes/pdigest/diagram.css +1 -1
- package/themes/pdigest/diagram.md +1 -1
- package/themes/pdigest/diagram.scoped.css +1 -1
- package/themes/pdigest/mobile.css +1 -1
- package/themes/pdigest/mobile.md +1 -1
- package/themes/pdigest/mobile.scoped.css +1 -1
- package/themes/redesigntrack/desktop.css +1 -1
- package/themes/redesigntrack/desktop.md +1 -1
- package/themes/redesigntrack/desktop.scoped.css +1 -1
- package/themes/redesigntrack/diagram.css +1 -1
- package/themes/redesigntrack/diagram.md +1 -1
- package/themes/redesigntrack/diagram.scoped.css +1 -1
- package/themes/redesigntrack/mobile.css +1 -1
- package/themes/redesigntrack/mobile.md +1 -1
- package/themes/redesigntrack/mobile.scoped.css +1 -1
- package/tokens/themes/base/dist/desktop.json +1 -1
- package/tokens/themes/base/dist/diagram.json +1 -1
- package/tokens/themes/base/dist/mobile.json +1 -1
- package/tokens/themes/brandcopilot/dist/desktop.json +1 -1
- package/tokens/themes/brandcopilot/dist/diagram.json +1 -1
- package/tokens/themes/brandcopilot/dist/mobile.json +1 -1
- package/tokens/themes/dmpatterns/dist/desktop.json +1 -1
- package/tokens/themes/dmpatterns/dist/diagram.json +1 -1
- package/tokens/themes/dmpatterns/dist/mobile.json +1 -1
- package/tokens/themes/pdigest/dist/desktop.json +1 -1
- package/tokens/themes/pdigest/dist/diagram.json +1 -1
- package/tokens/themes/pdigest/dist/mobile.json +1 -1
- package/tokens/themes/redesigntrack/dist/desktop.json +1 -1
- package/tokens/themes/redesigntrack/dist/diagram.json +1 -1
- package/tokens/themes/redesigntrack/dist/mobile.json +1 -1
package/components/index.cjs
CHANGED
|
@@ -9,10 +9,13 @@ var dropdown = require('./dropdown/dropdown');
|
|
|
9
9
|
var checkbox = require('./checkbox/checkbox');
|
|
10
10
|
var radio = require('./radio/radio');
|
|
11
11
|
var field = require('./field/field');
|
|
12
|
+
var menu = require('./menu/menu');
|
|
13
|
+
var tabs = require('./tabs/tabs');
|
|
12
14
|
var tag = require('./tag/tag');
|
|
13
15
|
var progressbar = require('./progressbar/progressbar');
|
|
14
16
|
var card = require('./card/card');
|
|
15
17
|
var panel = require('./panel/panel');
|
|
18
|
+
var video = require('./video/video');
|
|
16
19
|
var logo = require('./logo/logo');
|
|
17
20
|
var avatar = require('./avatar/avatar');
|
|
18
21
|
var attach = require('./attach/attach');
|
|
@@ -28,10 +31,13 @@ var dropdown__default = /*#__PURE__*/_interopDefault(dropdown);
|
|
|
28
31
|
var checkbox__default = /*#__PURE__*/_interopDefault(checkbox);
|
|
29
32
|
var radio__default = /*#__PURE__*/_interopDefault(radio);
|
|
30
33
|
var field__default = /*#__PURE__*/_interopDefault(field);
|
|
34
|
+
var menu__default = /*#__PURE__*/_interopDefault(menu);
|
|
35
|
+
var tabs__default = /*#__PURE__*/_interopDefault(tabs);
|
|
31
36
|
var tag__default = /*#__PURE__*/_interopDefault(tag);
|
|
32
37
|
var progressbar__default = /*#__PURE__*/_interopDefault(progressbar);
|
|
33
38
|
var card__default = /*#__PURE__*/_interopDefault(card);
|
|
34
39
|
var panel__default = /*#__PURE__*/_interopDefault(panel);
|
|
40
|
+
var video__default = /*#__PURE__*/_interopDefault(video);
|
|
35
41
|
var logo__default = /*#__PURE__*/_interopDefault(logo);
|
|
36
42
|
var avatar__default = /*#__PURE__*/_interopDefault(avatar);
|
|
37
43
|
var attach__default = /*#__PURE__*/_interopDefault(attach);
|
|
@@ -74,6 +80,14 @@ Object.defineProperty(exports, "Field", {
|
|
|
74
80
|
enumerable: true,
|
|
75
81
|
get: function () { return field__default.default; }
|
|
76
82
|
});
|
|
83
|
+
Object.defineProperty(exports, "Menu", {
|
|
84
|
+
enumerable: true,
|
|
85
|
+
get: function () { return menu__default.default; }
|
|
86
|
+
});
|
|
87
|
+
Object.defineProperty(exports, "Tabs", {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: function () { return tabs__default.default; }
|
|
90
|
+
});
|
|
77
91
|
Object.defineProperty(exports, "Tag", {
|
|
78
92
|
enumerable: true,
|
|
79
93
|
get: function () { return tag__default.default; }
|
|
@@ -90,6 +104,10 @@ Object.defineProperty(exports, "Panel", {
|
|
|
90
104
|
enumerable: true,
|
|
91
105
|
get: function () { return panel__default.default; }
|
|
92
106
|
});
|
|
107
|
+
Object.defineProperty(exports, "Video", {
|
|
108
|
+
enumerable: true,
|
|
109
|
+
get: function () { return video__default.default; }
|
|
110
|
+
});
|
|
93
111
|
Object.defineProperty(exports, "Logo", {
|
|
94
112
|
enumerable: true,
|
|
95
113
|
get: function () { return logo__default.default; }
|
package/components/index.d.cts
CHANGED
|
@@ -7,12 +7,15 @@ export { default as Dropdown, DropdownProps } from './dropdown/dropdown.cjs';
|
|
|
7
7
|
export { default as Checkbox, CheckboxProps } from './checkbox/checkbox.cjs';
|
|
8
8
|
export { default as Radio, RadioProps } from './radio/radio.cjs';
|
|
9
9
|
export { default as Field, FieldProps } from './field/field.cjs';
|
|
10
|
+
export { default as Menu, MenuItem, MenuProps } from './menu/menu.cjs';
|
|
11
|
+
export { TabItem, default as Tabs, TabsProps } from './tabs/tabs.cjs';
|
|
10
12
|
export { default as Tag, TagProps } from './tag/tag.cjs';
|
|
11
13
|
export { default as ProgressBar, ProgressBarProps } from './progressbar/progressbar.cjs';
|
|
12
14
|
export { default as Card, CardProps } from './card/card.cjs';
|
|
13
15
|
export { default as Panel, PanelProps } from './panel/panel.cjs';
|
|
16
|
+
export { default as Video, VideoProps, VideoQuality } from './video/video.cjs';
|
|
14
17
|
export { default as Logo, LogoProps } from './logo/logo.cjs';
|
|
15
18
|
export { default as Avatar, AvatarProps } from './avatar/avatar.cjs';
|
|
16
|
-
export { default as Attach, AttachProps } from './attach/attach.cjs';
|
|
19
|
+
export { default as Attach, AttachItem, AttachProps } from './attach/attach.cjs';
|
|
17
20
|
import 'react';
|
|
18
21
|
import '../types-DboVOY__.cjs';
|
package/components/index.d.ts
CHANGED
|
@@ -7,12 +7,15 @@ export { default as Dropdown, DropdownProps } from './dropdown/dropdown.js';
|
|
|
7
7
|
export { default as Checkbox, CheckboxProps } from './checkbox/checkbox.js';
|
|
8
8
|
export { default as Radio, RadioProps } from './radio/radio.js';
|
|
9
9
|
export { default as Field, FieldProps } from './field/field.js';
|
|
10
|
+
export { default as Menu, MenuItem, MenuProps } from './menu/menu.js';
|
|
11
|
+
export { TabItem, default as Tabs, TabsProps } from './tabs/tabs.js';
|
|
10
12
|
export { default as Tag, TagProps } from './tag/tag.js';
|
|
11
13
|
export { default as ProgressBar, ProgressBarProps } from './progressbar/progressbar.js';
|
|
12
14
|
export { default as Card, CardProps } from './card/card.js';
|
|
13
15
|
export { default as Panel, PanelProps } from './panel/panel.js';
|
|
16
|
+
export { default as Video, VideoProps, VideoQuality } from './video/video.js';
|
|
14
17
|
export { default as Logo, LogoProps } from './logo/logo.js';
|
|
15
18
|
export { default as Avatar, AvatarProps } from './avatar/avatar.js';
|
|
16
|
-
export { default as Attach, AttachProps } from './attach/attach.js';
|
|
19
|
+
export { default as Attach, AttachItem, AttachProps } from './attach/attach.js';
|
|
17
20
|
import 'react';
|
|
18
21
|
import '../types-DboVOY__.js';
|
package/components/index.js
CHANGED
|
@@ -7,10 +7,13 @@ export { default as Dropdown } from './dropdown/dropdown';
|
|
|
7
7
|
export { default as Checkbox } from './checkbox/checkbox';
|
|
8
8
|
export { default as Radio } from './radio/radio';
|
|
9
9
|
export { default as Field } from './field/field';
|
|
10
|
+
export { default as Menu } from './menu/menu';
|
|
11
|
+
export { default as Tabs } from './tabs/tabs';
|
|
10
12
|
export { default as Tag } from './tag/tag';
|
|
11
13
|
export { default as ProgressBar } from './progressbar/progressbar';
|
|
12
14
|
export { default as Card } from './card/card';
|
|
13
15
|
export { default as Panel } from './panel/panel';
|
|
16
|
+
export { default as Video } from './video/video';
|
|
14
17
|
export { default as Logo } from './logo/logo';
|
|
15
18
|
export { default as Avatar } from './avatar/avatar';
|
|
16
19
|
export { default as Attach } from './attach/attach';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { TabsProps, default } from './tabs.cjs';
|
|
1
|
+
export { TabItem, TabsProps, default } from './tabs.cjs';
|
|
2
2
|
import 'react';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { TabsProps, default } from './tabs.js';
|
|
1
|
+
export { TabItem, TabsProps, default } from './tabs.js';
|
|
2
2
|
import 'react';
|
package/components/tabs/tabs.cjs
CHANGED
|
@@ -5,12 +5,59 @@ var classnames = require('../helpers/classnames');
|
|
|
5
5
|
require('./tabs.css');
|
|
6
6
|
|
|
7
7
|
const Tabs = ({
|
|
8
|
+
items,
|
|
9
|
+
value,
|
|
8
10
|
className = "",
|
|
9
|
-
|
|
11
|
+
onValueChange,
|
|
10
12
|
...props
|
|
11
13
|
}) => {
|
|
12
|
-
const classes = classnames.classnames("tabs", className);
|
|
13
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14
|
+
const classes = classnames.classnames("tabs", className, {});
|
|
15
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
className: classes,
|
|
19
|
+
...props,
|
|
20
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21
|
+
"div",
|
|
22
|
+
{
|
|
23
|
+
className: "tabs__list",
|
|
24
|
+
role: "tablist",
|
|
25
|
+
"aria-label": "Tabs",
|
|
26
|
+
children: items.map((item) => {
|
|
27
|
+
const isSelected = item.value === value;
|
|
28
|
+
const tabClasses = classnames.classnames("tabs__tab", {
|
|
29
|
+
"tabs__tab--selected": isSelected
|
|
30
|
+
});
|
|
31
|
+
if (item.href) {
|
|
32
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33
|
+
"a",
|
|
34
|
+
{
|
|
35
|
+
className: tabClasses,
|
|
36
|
+
href: item.href,
|
|
37
|
+
"aria-current": isSelected ? "page" : void 0,
|
|
38
|
+
onClick: () => onValueChange?.(item.value),
|
|
39
|
+
children: item.label
|
|
40
|
+
},
|
|
41
|
+
item.value
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45
|
+
"button",
|
|
46
|
+
{
|
|
47
|
+
className: tabClasses,
|
|
48
|
+
type: "button",
|
|
49
|
+
role: "tab",
|
|
50
|
+
"aria-selected": isSelected,
|
|
51
|
+
onClick: () => onValueChange?.(item.value),
|
|
52
|
+
children: item.label
|
|
53
|
+
},
|
|
54
|
+
item.value
|
|
55
|
+
);
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
);
|
|
14
61
|
};
|
|
15
62
|
var tabs_default = Tabs;
|
|
16
63
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":["classnames"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":["classnames","jsx"],"mappings":";;;;;;AAiBA,MAAM,OAA4B,CAAC;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,EAAE,CAAA;AAEhD,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,YAAA;AAAA,UACV,IAAA,EAAK,SAAA;AAAA,UACL,YAAA,EAAW,MAAA;AAAA,UAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,YAAA,MAAM,UAAA,GAAa,KAAK,KAAA,KAAU,KAAA;AAElC,YAAA,MAAM,UAAA,GAAaD,sBAAW,WAAA,EAAa;AAAA,cACzC,qBAAA,EAAuB;AAAA,aACxB,CAAA;AAED,YAAA,IAAI,KAAK,IAAA,EAAM;AACb,cAAA,uBACEC,cAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,UAAA;AAAA,kBACX,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,cAAA,EAAc,aAAa,MAAA,GAAS,MAAA;AAAA,kBACpC,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,kBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,iBAAA;AAAA,gBAND,IAAA,CAAK;AAAA,eAOZ;AAAA,YAEJ;AAEA,YAAA,uBACEA,cAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,UAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,KAAA;AAAA,gBACL,eAAA,EAAe,UAAA;AAAA,gBACf,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,gBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,eAAA;AAAA,cAPD,IAAA,CAAK;AAAA,aAQZ;AAAA,UAEJ,CAAC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"tabs.cjs","sourcesContent":["import React from 'react';\nimport { classnames } from '../helpers/classnames';\nimport './tabs.css';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n href?: string;\n}\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n items: TabItem[];\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n items,\n value,\n className = '',\n onValueChange,\n ...props\n}) => {\n const classes = classnames('tabs', className, {});\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div\n className=\"tabs__list\"\n role=\"tablist\"\n aria-label=\"Tabs\"\n >\n {items.map((item) => {\n const isSelected = item.value === value;\n\n const tabClasses = classnames('tabs__tab', {\n 'tabs__tab--selected': isSelected,\n });\n\n if (item.href) {\n return (\n <a\n key={item.value}\n className={tabClasses}\n href={item.href}\n aria-current={isSelected ? 'page' : undefined}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </a>\n );\n }\n\n return (\n <button\n key={item.value}\n className={tabClasses}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Tabs;"]}
|
package/components/tabs/tabs.css
CHANGED
|
@@ -1,67 +1,48 @@
|
|
|
1
1
|
.tabs {
|
|
2
2
|
/* color */
|
|
3
|
-
--
|
|
4
|
-
--component-text: inherit;
|
|
3
|
+
--tabs-color: var(--color-link);
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
color: var(--component-text);
|
|
5
|
+
color: var(--tabs-color);
|
|
8
6
|
|
|
9
7
|
/* typography */
|
|
10
|
-
--
|
|
11
|
-
--
|
|
12
|
-
--
|
|
13
|
-
--
|
|
14
|
-
--
|
|
15
|
-
|
|
16
|
-
font-family: var(--
|
|
17
|
-
font-size: var(--
|
|
18
|
-
font-weight: var(--
|
|
19
|
-
line-height: var(--
|
|
20
|
-
letter-spacing: var(--
|
|
8
|
+
--tabs-font-family: var(--font-body-family);
|
|
9
|
+
--tabs-font-weight: var(--font-body-weight);
|
|
10
|
+
--tabs-font-size: var(--font-body);
|
|
11
|
+
--tabs-line-height: var(--font-body-line);
|
|
12
|
+
--tabs-letter-spacing: var(--font-body-letter-spacing);
|
|
13
|
+
|
|
14
|
+
font-family: var(--tabs-font-family);
|
|
15
|
+
font-size: var(--tabs-font-size);
|
|
16
|
+
font-weight: var(--tabs-font-weight);
|
|
17
|
+
line-height: var(--tabs-line-height);
|
|
18
|
+
letter-spacing: var(--tabs-letter-spacing);
|
|
21
19
|
|
|
22
20
|
/* size */
|
|
23
|
-
--
|
|
24
|
-
--component-height: auto;
|
|
25
|
-
--component-gap: 0;
|
|
26
|
-
--component-padding-x: 0;
|
|
27
|
-
--component-padding-y: 0;
|
|
28
|
-
|
|
29
|
-
width: var(--component-width);
|
|
30
|
-
min-height: var(--component-height);
|
|
31
|
-
gap: var(--component-gap);
|
|
32
|
-
padding: var(--component-padding-y) var(--component-padding-x);
|
|
21
|
+
--tabs-gap: var(--margin-tab);
|
|
33
22
|
|
|
34
23
|
display: flex;
|
|
35
|
-
|
|
24
|
+
flex-direction: column;
|
|
25
|
+
gap: var(--tabs-gap);
|
|
36
26
|
|
|
37
27
|
/* border */
|
|
38
|
-
--component-border-width: 0;
|
|
39
|
-
--component-border-radius: 0;
|
|
40
|
-
--component-border-color: transparent;
|
|
41
|
-
|
|
42
|
-
border: var(--component-border-width) solid var(--component-border-color);
|
|
43
|
-
border-radius: var(--component-border-radius);
|
|
44
|
-
outline: none;
|
|
45
28
|
|
|
46
29
|
/* depth */
|
|
47
30
|
|
|
48
31
|
/* motion */
|
|
49
|
-
--component-opacity-disabled: 0.6;
|
|
50
|
-
--component-transition-duration: 0.2s;
|
|
51
|
-
|
|
52
|
-
transition:
|
|
53
|
-
border-color var(--component-transition-duration) ease,
|
|
54
|
-
opacity var(--component-transition-duration) ease,
|
|
55
|
-
background-color var(--component-transition-duration) ease,
|
|
56
|
-
color var(--component-transition-duration) ease;
|
|
57
32
|
}
|
|
58
33
|
|
|
59
|
-
.
|
|
34
|
+
.tabs__list {
|
|
60
35
|
/* color */
|
|
61
36
|
|
|
62
37
|
/* typography */
|
|
63
38
|
|
|
64
39
|
/* size */
|
|
40
|
+
--tabs-list-gap: var(--margin-tab);
|
|
41
|
+
|
|
42
|
+
display: inline-flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: var(--tabs-list-gap);
|
|
45
|
+
width: fit-content;
|
|
65
46
|
|
|
66
47
|
/* border */
|
|
67
48
|
|
|
@@ -70,38 +51,75 @@
|
|
|
70
51
|
/* motion */
|
|
71
52
|
}
|
|
72
53
|
|
|
73
|
-
.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.tabs:active {
|
|
83
|
-
}
|
|
54
|
+
.tabs__tab {
|
|
55
|
+
/* color */
|
|
56
|
+
--tabs-tab-bg: transparent;
|
|
57
|
+
--tabs-tab-color: var(--color-link);
|
|
58
|
+
--tabs-tab-bg-selected: var(--color-secondary);
|
|
59
|
+
--tabs-tab-color-selected: var(--color-text-secondary);
|
|
60
|
+
--tabs-tab-color-disabled: var(--color-text-note);
|
|
84
61
|
|
|
85
|
-
|
|
86
|
-
|
|
62
|
+
background: var(--tabs-tab-bg);
|
|
63
|
+
color: var(--tabs-tab-color);
|
|
87
64
|
|
|
88
|
-
|
|
89
|
-
|
|
65
|
+
/* typography */
|
|
66
|
+
font: inherit;
|
|
67
|
+
text-align: center;
|
|
68
|
+
white-space: nowrap;
|
|
90
69
|
|
|
91
|
-
|
|
92
|
-
|
|
70
|
+
/* size */
|
|
71
|
+
--tabs-tab-height: var(--size-tab-height);
|
|
72
|
+
--tabs-tab-padding-x: var(--padding-tab);
|
|
93
73
|
|
|
94
|
-
.tabs > a {
|
|
95
74
|
display: inline-flex;
|
|
96
75
|
align-items: center;
|
|
97
76
|
justify-content: center;
|
|
98
|
-
min-height:
|
|
99
|
-
padding: 0
|
|
77
|
+
min-height: var(--tabs-tab-height);
|
|
78
|
+
padding: 0 var(--tabs-tab-padding-x);
|
|
79
|
+
|
|
80
|
+
/* border */
|
|
81
|
+
--tabs-tab-radius: var(--radius-flowchart);
|
|
82
|
+
--tabs-tab-border-width: var(--size-border-width-min);
|
|
83
|
+
--tabs-tab-border-color: transparent;
|
|
84
|
+
|
|
85
|
+
border:
|
|
86
|
+
var(--tabs-tab-border-width)
|
|
87
|
+
solid
|
|
88
|
+
var(--tabs-tab-border-color);
|
|
89
|
+
border-radius: var(--tabs-tab-radius);
|
|
90
|
+
|
|
91
|
+
/* depth */
|
|
92
|
+
|
|
93
|
+
/* motion */
|
|
94
|
+
--tabs-transition-duration: var(--motion-duration1);
|
|
100
95
|
|
|
101
|
-
text-decoration: none;
|
|
102
96
|
cursor: pointer;
|
|
97
|
+
transition:
|
|
98
|
+
background var(--tabs-transition-duration),
|
|
99
|
+
color var(--tabs-transition-duration),
|
|
100
|
+
border-color var(--tabs-transition-duration);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.tabs__tab--selected {
|
|
104
|
+
/* color */
|
|
105
|
+
--tabs-tab-bg: var(--tabs-tab-bg-selected);
|
|
106
|
+
--tabs-tab-color: var(--tabs-tab-color-selected);
|
|
107
|
+
|
|
108
|
+
/* border */
|
|
109
|
+
--tabs-tab-border-color: var(--color-line);
|
|
103
110
|
}
|
|
104
111
|
|
|
105
|
-
.
|
|
106
|
-
|
|
112
|
+
.tabs__panel {
|
|
113
|
+
/* color */
|
|
114
|
+
|
|
115
|
+
/* typography */
|
|
116
|
+
|
|
117
|
+
/* size */
|
|
118
|
+
width: 100%;
|
|
119
|
+
|
|
120
|
+
/* border */
|
|
121
|
+
|
|
122
|
+
/* depth */
|
|
123
|
+
|
|
124
|
+
/* motion */
|
|
107
125
|
}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
+
interface TabItem {
|
|
4
|
+
value: string;
|
|
5
|
+
label: React.ReactNode;
|
|
6
|
+
href?: string;
|
|
7
|
+
}
|
|
3
8
|
interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
items: TabItem[];
|
|
10
|
+
value: string;
|
|
11
|
+
onValueChange?: (value: string) => void;
|
|
4
12
|
}
|
|
5
13
|
declare const Tabs: React.FC<TabsProps>;
|
|
6
14
|
|
|
7
|
-
export { type TabsProps, Tabs as default };
|
|
15
|
+
export { type TabItem, type TabsProps, Tabs as default };
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
+
interface TabItem {
|
|
4
|
+
value: string;
|
|
5
|
+
label: React.ReactNode;
|
|
6
|
+
href?: string;
|
|
7
|
+
}
|
|
3
8
|
interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
items: TabItem[];
|
|
10
|
+
value: string;
|
|
11
|
+
onValueChange?: (value: string) => void;
|
|
4
12
|
}
|
|
5
13
|
declare const Tabs: React.FC<TabsProps>;
|
|
6
14
|
|
|
7
|
-
export { type TabsProps, Tabs as default };
|
|
15
|
+
export { type TabItem, type TabsProps, Tabs as default };
|
package/components/tabs/tabs.js
CHANGED
|
@@ -3,12 +3,59 @@ import { classnames } from '../helpers/classnames';
|
|
|
3
3
|
import './tabs.css';
|
|
4
4
|
|
|
5
5
|
const Tabs = ({
|
|
6
|
+
items,
|
|
7
|
+
value,
|
|
6
8
|
className = "",
|
|
7
|
-
|
|
9
|
+
onValueChange,
|
|
8
10
|
...props
|
|
9
11
|
}) => {
|
|
10
|
-
const classes = classnames("tabs", className);
|
|
11
|
-
return /* @__PURE__ */ jsx(
|
|
12
|
+
const classes = classnames("tabs", className, {});
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
className: classes,
|
|
17
|
+
...props,
|
|
18
|
+
children: /* @__PURE__ */ jsx(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
className: "tabs__list",
|
|
22
|
+
role: "tablist",
|
|
23
|
+
"aria-label": "Tabs",
|
|
24
|
+
children: items.map((item) => {
|
|
25
|
+
const isSelected = item.value === value;
|
|
26
|
+
const tabClasses = classnames("tabs__tab", {
|
|
27
|
+
"tabs__tab--selected": isSelected
|
|
28
|
+
});
|
|
29
|
+
if (item.href) {
|
|
30
|
+
return /* @__PURE__ */ jsx(
|
|
31
|
+
"a",
|
|
32
|
+
{
|
|
33
|
+
className: tabClasses,
|
|
34
|
+
href: item.href,
|
|
35
|
+
"aria-current": isSelected ? "page" : void 0,
|
|
36
|
+
onClick: () => onValueChange?.(item.value),
|
|
37
|
+
children: item.label
|
|
38
|
+
},
|
|
39
|
+
item.value
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return /* @__PURE__ */ jsx(
|
|
43
|
+
"button",
|
|
44
|
+
{
|
|
45
|
+
className: tabClasses,
|
|
46
|
+
type: "button",
|
|
47
|
+
role: "tab",
|
|
48
|
+
"aria-selected": isSelected,
|
|
49
|
+
onClick: () => onValueChange?.(item.value),
|
|
50
|
+
children: item.label
|
|
51
|
+
},
|
|
52
|
+
item.value
|
|
53
|
+
);
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
);
|
|
12
59
|
};
|
|
13
60
|
var tabs_default = Tabs;
|
|
14
61
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":";;;;AAiBA,MAAM,OAA4B,CAAC;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,EAAE,CAAA;AAEhD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,YAAA;AAAA,UACV,IAAA,EAAK,SAAA;AAAA,UACL,YAAA,EAAW,MAAA;AAAA,UAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,YAAA,MAAM,UAAA,GAAa,KAAK,KAAA,KAAU,KAAA;AAElC,YAAA,MAAM,UAAA,GAAa,WAAW,WAAA,EAAa;AAAA,cACzC,qBAAA,EAAuB;AAAA,aACxB,CAAA;AAED,YAAA,IAAI,KAAK,IAAA,EAAM;AACb,cAAA,uBACE,GAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,UAAA;AAAA,kBACX,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,cAAA,EAAc,aAAa,MAAA,GAAS,MAAA;AAAA,kBACpC,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,kBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,iBAAA;AAAA,gBAND,IAAA,CAAK;AAAA,eAOZ;AAAA,YAEJ;AAEA,YAAA,uBACE,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,UAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,KAAA;AAAA,gBACL,eAAA,EAAe,UAAA;AAAA,gBACf,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,gBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,eAAA;AAAA,cAPD,IAAA,CAAK;AAAA,aAQZ;AAAA,UAEJ,CAAC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"tabs.js","sourcesContent":["import React from 'react';\nimport { classnames } from '../helpers/classnames';\nimport './tabs.css';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n href?: string;\n}\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n items: TabItem[];\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n items,\n value,\n className = '',\n onValueChange,\n ...props\n}) => {\n const classes = classnames('tabs', className, {});\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div\n className=\"tabs__list\"\n role=\"tablist\"\n aria-label=\"Tabs\"\n >\n {items.map((item) => {\n const isSelected = item.value === value;\n\n const tabClasses = classnames('tabs__tab', {\n 'tabs__tab--selected': isSelected,\n });\n\n if (item.href) {\n return (\n <a\n key={item.value}\n className={tabClasses}\n href={item.href}\n aria-current={isSelected ? 'page' : undefined}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </a>\n );\n }\n\n return (\n <button\n key={item.value}\n className={tabClasses}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Tabs;"]}
|
package/index.d.cts
CHANGED
|
@@ -8,8 +8,8 @@ export { default as Checkbox, CheckboxProps } from './components/checkbox/checkb
|
|
|
8
8
|
export { default as Radio, RadioProps } from './components/radio/radio.cjs';
|
|
9
9
|
export { default as Field, FieldProps } from './components/field/field.cjs';
|
|
10
10
|
export { default as Menu, MenuProps } from './components/menu/menu.cjs';
|
|
11
|
-
export { default as Tabs, TabsProps } from './components/tabs/tabs.cjs';
|
|
12
|
-
export { default as Video, VideoProps } from './components/video/video.cjs';
|
|
11
|
+
export { TabItem, default as Tabs, TabsProps } from './components/tabs/tabs.cjs';
|
|
12
|
+
export { default as Video, VideoProps, VideoQuality } from './components/video/video.cjs';
|
|
13
13
|
export { default as Search, SearchProps } from './components/search/search.cjs';
|
|
14
14
|
export { default as RichEdit, RichEditProps } from './components/richedit/richedit.cjs';
|
|
15
15
|
export { default as Tag, TagProps } from './components/tag/tag.cjs';
|
package/index.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ export { default as Checkbox, CheckboxProps } from './components/checkbox/checkb
|
|
|
8
8
|
export { default as Radio, RadioProps } from './components/radio/radio.js';
|
|
9
9
|
export { default as Field, FieldProps } from './components/field/field.js';
|
|
10
10
|
export { default as Menu, MenuProps } from './components/menu/menu.js';
|
|
11
|
-
export { default as Tabs, TabsProps } from './components/tabs/tabs.js';
|
|
12
|
-
export { default as Video, VideoProps } from './components/video/video.js';
|
|
11
|
+
export { TabItem, default as Tabs, TabsProps } from './components/tabs/tabs.js';
|
|
12
|
+
export { default as Video, VideoProps, VideoQuality } from './components/video/video.js';
|
|
13
13
|
export { default as Search, SearchProps } from './components/search/search.js';
|
|
14
14
|
export { default as RichEdit, RichEditProps } from './components/richedit/richedit.js';
|
|
15
15
|
export { default as Tag, TagProps } from './components/tag/tag.js';
|