@tolokoban/ui 0.23.1 → 0.23.2

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.
@@ -1,5 +1,5 @@
1
1
  export declare const name = "@tolokoban/ui";
2
- export declare const version = "0.23.1";
2
+ export declare const version = "0.23.2";
3
3
  export declare const description = "React components with theme";
4
4
  export declare const homepage = "https://tolokoban.github.io/ui";
5
5
  //# sourceMappingURL=info.d.ts.map
package/lib/dist/info.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export const name = "@tolokoban/ui";
2
- export const version = "0.23.1";
2
+ export const version = "0.23.2";
3
3
  export const description = "React components with theme";
4
4
  export const homepage = "https://tolokoban.github.io/ui";
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxlQUFlLENBQUE7QUFDbkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQTtBQUMvQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsNkJBQTZCLENBQUE7QUFDeEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGdDQUFnQyxDQUFBIn0=
@@ -18,15 +18,16 @@
18
18
  box-shadow: 0 0 1px currentColor;
19
19
  display: grid;
20
20
  place-items: center;
21
- }
22
21
 
23
- .button.selected {
24
- background-color: var(--theme-color-primary-6);
25
- color: var(--theme-color-on-primary-6);
26
- }
22
+ &.selected {
23
+ background-color: var(--theme-color-primary-6);
24
+ color: var(--theme-color-on-primary-6);
25
+ font-weight: bold;
26
+ }
27
27
 
28
- .button.unselected {
29
- opacity: 0.667;
30
- background-color: var(--theme-color-primary-4);
31
- color: var(--theme-color-on-primary-4);
28
+ &.unselected {
29
+ opacity: 0.5;
30
+ background-color: var(--theme-color-primary-4);
31
+ color: var(--theme-color-on-primary-4);
32
+ }
32
33
  }
@@ -2,6 +2,7 @@ import * as React from "react";
2
2
  import { ViewTabProps } from "../Tab";
3
3
  import { DimensionStyleProps } from "../../theme/styles/dimension";
4
4
  import { ColorStyleProps } from "../../theme/styles/color";
5
+ import { ColorName } from "../../types";
5
6
  export type ViewTabsProps = ColorStyleProps & DimensionStyleProps & {
6
7
  className?: string;
7
8
  /** Key of the active Tab. */
@@ -16,6 +17,21 @@ export type ViewTabsProps = ColorStyleProps & DimensionStyleProps & {
16
17
  * @param value Key of the newly activated tab.
17
18
  */
18
19
  onChange?(this: void, value?: string): void;
20
+ /**
21
+ * Color of the selection.
22
+ * Defaults to `primary-5`.
23
+ */
24
+ colorAccent?: ColorName;
25
+ /**
26
+ * CSS size of the outline.
27
+ * Defaults to `0`.
28
+ */
29
+ outline?: string;
30
+ /**
31
+ * CSS size of the line on the selected tab.
32
+ * Defaults to `outline` or `4px`.
33
+ */
34
+ highlight?: string;
19
35
  children: React.ReactElement<ViewTabProps> | React.ReactElement<ViewTabProps>[];
20
36
  };
21
37
  export declare function ViewTabs(props: ViewTabsProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/view/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAW,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG9C,OAAO,EACH,mBAAmB,EAEtB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAc,MAAM,0BAA0B,CAAA;AAItE,MAAM,MAAM,aAAa,GAAG,eAAe,GACvC,mBAAmB,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC;;;OAGG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,EACF,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,GAChC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAA;CAC3C,CAAA;AAEL,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAiD5C"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/view/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAW,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG9C,OAAO,EACH,mBAAmB,EAEtB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAc,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAInC,MAAM,MAAM,aAAa,GAAG,eAAe,GACvC,mBAAmB,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC;;;OAGG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EACF,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,GAChC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAA;CAC3C,CAAA;AAEL,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA2D5C"}
@@ -5,16 +5,15 @@ import { classnameCommon, Theme } from "../../theme/index.js";
5
5
  import { ViewTab } from "../Tab/index.js";
6
6
  import Styles from "./Tabs.module.css";
7
7
  import { styleDimension, } from "../../theme/styles/dimension.js";
8
- import { styleColor } from "../../theme/styles/color.js";
9
8
  const $ = Theme.classNames;
10
9
  export function ViewTabs(props) {
11
- var _a, _b;
12
- const { className, children: rawChildren, orientation = "horizontal", value, onChange, } = props;
10
+ var _a, _b, _c;
11
+ const { className, children: rawChildren, orientation = "horizontal", value, onChange, color = "neutral-3", colorAccent = "primary-5", outline = "0", highlight, } = props;
13
12
  const children = filterChildren(rawChildren);
14
13
  const tabs = addMissingKeys(children);
15
14
  const [tabKey, setTabKey] = React.useState((_b = value !== null && value !== void 0 ? value : (_a = tabs[0]) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : "Tab#0");
16
15
  const tab = tabs.find((item) => item.key === tabKey);
17
- return (_jsxs("div", { style: Object.assign(Object.assign({}, styleColor(props)), styleDimension(props)), className: $.join(className, Styles.Tabs, orientation === "vertical" && Styles.vertical, classnameCommon(props)), children: [_jsx("header", { children: tabs.map((item) => {
16
+ return (_jsxs("div", { style: Object.assign(Object.assign({}, styleDimension(props)), { "--custom-color-back": `var(--theme-color-${color})`, "--custom-color-text": `var(--theme-color-on-${color})`, "--custom-color-highlight-back": `var(--theme-color-${colorAccent})`, "--custom-color-highlight-text": `var(--theme-color-on-${colorAccent})`, "--custom-outline": outline, "--custom-highlight": (_c = highlight !== null && highlight !== void 0 ? highlight : outline) !== null && _c !== void 0 ? _c : "4px" }), className: $.join(className, Styles.Tabs, orientation === "vertical" && Styles.vertical, classnameCommon(props)), children: [_jsx("header", { children: tabs.map((item) => {
18
17
  const { key } = item;
19
18
  return key === tabKey ? (_jsx("div", { children: item.props.label }, key)) : (_jsx("button", { type: "button", onClick: () => {
20
19
  setTabKey(key);
@@ -50,4 +49,4 @@ function filterChildren(children) {
50
49
  return children.filter((child) => Boolean(child.props.children));
51
50
  return children.props.children ? [children] : [];
52
51
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L1RhYnMvVGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUU5QixPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sUUFBUSxDQUFBO0FBRTlDLE9BQU8sTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RDLE9BQU8sRUFFSCxjQUFjLEdBQ2pCLE1BQU0sOEJBQThCLENBQUE7QUFDckMsT0FBTyxFQUFtQixVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV0RSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFBO0FBc0IxQixNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQW9COztJQUN6QyxNQUFNLEVBQ0YsU0FBUyxFQUNULFFBQVEsRUFBRSxXQUFXLEVBQ3JCLFdBQVcsR0FBRyxZQUFZLEVBQzFCLEtBQUssRUFDTCxRQUFRLEdBQ1gsR0FBRyxLQUFLLENBQUE7SUFDVCxNQUFNLFFBQVEsR0FDVixjQUFjLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDL0IsTUFBTSxJQUFJLEdBQ04sY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFBLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLE1BQUEsSUFBSSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxHQUFHLG1DQUFJLE9BQU8sQ0FBQyxDQUFBO0lBQzVFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUE7SUFDcEQsT0FB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
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L1RhYnMvVGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUU5QixPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sUUFBUSxDQUFBO0FBRTlDLE9BQU8sTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RDLE9BQU8sRUFFSCxjQUFjLEdBQ2pCLE1BQU0sOEJBQThCLENBQUE7QUFJckMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQTtBQXFDMUIsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFvQjs7SUFDekMsTUFBTSxFQUNGLFNBQVMsRUFDVCxRQUFRLEVBQUUsV0FBVyxFQUNyQixXQUFXLEdBQUcsWUFBWSxFQUMxQixLQUFLLEVBQ0wsUUFBUSxFQUNSLEtBQUssR0FBRyxXQUFXLEVBQ25CLFdBQVcsR0FBRyxXQUFXLEVBQ3pCLE9BQU8sR0FBRyxHQUFHLEVBQ2IsU0FBUyxHQUNaLEdBQUcsS0FBSyxDQUFBO0lBQ1QsTUFBTSxRQUFRLEdBQ1YsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQy9CLE1BQU0sSUFBSSxHQUNOLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QixNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBQSxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxNQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsMENBQUUsR0FBRyxtQ0FBSSxPQUFPLENBQUMsQ0FBQTtJQUM1RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxL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
@@ -3,82 +3,121 @@
3
3
  --custom-color-text: var(--theme-color-on-neutral-2);
4
4
  --custom-color-highlight-back: var(--theme-color-primary-5);
5
5
  --custom-color-highlight-text: var(--theme-color-on-primary-5);
6
+ --custom-border-radius: 4px;
7
+ --custom-outline: 0;
8
+ --custom-highlight: 4px;
6
9
  display: flex;
7
10
  flex-direction: column;
8
11
  justify-content: flex-start;
9
12
  align-items: stretch;
10
13
  gap: 0;
11
14
  margin: 0.25em;
12
- }
15
+ background: none;
13
16
 
14
- .Tabs.vertical {
15
- flex-direction: row;
16
- }
17
+ &.vertical {
18
+ flex-direction: row;
17
19
 
18
- .Tabs > header {
19
- flex: 0 0 auto;
20
- display: flex;
21
- flex-direction: row;
22
- justify-content: flex-start;
23
- align-items: stretch;
24
- flex-wrap: wrap-reverse;
25
- padding: 0;
26
- }
20
+ > header {
21
+ /* flex-direction: column; */
22
+ flex-direction: column;
27
23
 
28
- .Tabs.vertical > header {
29
- /* flex-direction: column; */
30
- writing-mode: vertical-rl;
31
- text-orientation: mixed;
32
- }
24
+ & > button,
25
+ & > div {
26
+ writing-mode: vertical-rl;
27
+ text-orientation: mixed;
28
+ max-height: none;
29
+ height: auto;
30
+ width: calc(2em + var(--custom-highlight));
31
+ max-width: calc(2em + var(--custom-highlight));
32
+ padding: 0.5em 0;
33
+ }
33
34
 
34
- .Tabs > header > div {
35
- background: var(--custom-color-back);
36
- color: var(--custom-color-text);
37
- border-top: 2px solid var(--custom-color-highlight-back);
38
- border-radius: 2px 2px 0 0;
39
- font-weight: bold;
40
- }
35
+ & > div {
36
+ border: none;
37
+ border: var(--custom-outline) solid
38
+ var(--custom-color-highlight-back);
39
+ border-left: var(--custom-highlight) solid
40
+ var(--custom-color-highlight-back);
41
+ border-right: none;
42
+ border-radius: var(--custom-border-radius) 0 0
43
+ var(--custom-border-radius);
44
+ font-weight: bold;
45
+ z-index: 2;
46
+ transform: translateX(var(--custom-outline));
47
+ }
41
48
 
42
- .Tabs > header > button {
43
- all: inherit;
44
- display: inline-block;
45
- cursor: pointer;
46
- transition: all 0.2s;
47
- opacity: 0.6;
48
- }
49
+ & > button {
50
+ padding-left: var(--custom-highlight);
51
+ }
52
+ }
53
+ }
49
54
 
50
- .Tabs > header > button:hover,
51
- .Tabs > header > button:active {
52
- background: var(--custom-color-highlight-back);
53
- color: var(--custom-color-highlight-text);
54
- }
55
+ > main {
56
+ flex: 1 1 auto;
57
+ padding: 0.5em;
58
+ background: var(--custom-color-back);
59
+ color: var(--custom-color-text);
60
+ border-radius: 0 var(--custom-border-radius) var(--custom-border-radius)
61
+ var(--custom-border-radius);
62
+ border: var(--custom-outline) solid var(--custom-color-highlight-back);
63
+ }
55
64
 
56
- .Tabs > header > button,
57
- .Tabs > header > div {
58
- margin: 0;
59
- padding: 0 0.5em;
60
- display: grid;
61
- place-items: center;
62
- height: 2em;
63
- max-height: 2em;
64
- overflow: hidden;
65
- white-space: nowrap;
66
- text-overflow: ellipsis;
67
- }
65
+ > header {
66
+ flex: 0 0 auto;
67
+ display: flex;
68
+ flex-direction: row;
69
+ justify-content: flex-start;
70
+ align-items: stretch;
71
+ flex-wrap: wrap-reverse;
72
+ padding: 0;
73
+ z-index: 1;
68
74
 
69
- .Tabs.vertical > header > button,
70
- .Tabs.vertical > header > div {
71
- writing-mode: vertical-rl;
72
- text-orientation: mixed;
73
- }
75
+ > div {
76
+ background: var(--custom-color-back);
77
+ color: var(--custom-color-text);
78
+ border: var(--custom-outline) solid
79
+ var(--custom-color-highlight-back);
80
+ border-top: var(--custom-highlight) solid
81
+ var(--custom-color-highlight-back);
82
+ border-bottom: none;
83
+ border-radius: var(--custom-border-radius)
84
+ var(--custom-border-radius) 0 0;
85
+ font-weight: bold;
86
+ z-index: 2;
87
+ transform: translateY(var(--custom-outline));
88
+ }
89
+
90
+ > button {
91
+ font: inherit;
92
+ cursor: pointer;
93
+ transition: all 0.2s;
94
+ opacity: 0.6;
95
+ background: none;
96
+ border: none;
97
+ box-shadow: none;
98
+ padding-top: var(--custom-highlight);
99
+
100
+ &:hover,
101
+ &:active {
102
+ background: var(--custom-color-highlight-back);
103
+ color: var(--custom-color-highlight-text);
104
+ }
105
+ }
74
106
 
75
- .Tabs > main {
76
- flex: 1 1 auto;
77
- padding: 0.5em;
78
- background: linear-gradient(
79
- to bottom,
80
- var(--custom-color-back),
81
- transparent
82
- );
83
- color: var(--custom-color-text);
107
+ > * {
108
+ margin: 0;
109
+ padding: 0 0.5em;
110
+ display: flex;
111
+ flex-wrap: nowrap;
112
+ flex-direction: row;
113
+ justify-content: flex-start;
114
+ align-items: center;
115
+ gap: 1em;
116
+ height: calc(2em + var(--custom-highlight));
117
+ max-height: calc(2em + var(--custom-highlight));
118
+ overflow: hidden;
119
+ white-space: nowrap;
120
+ text-overflow: ellipsis;
121
+ }
122
+ }
84
123
  }
@@ -1,4 +1,4 @@
1
- // This file has been generated on Wed, 27 Aug 2025 15:12:46 GMT
1
+ // This file has been generated on Thu, 28 Aug 2025 09:16:50 GMT
2
2
  export * from "./Button/index.js";
3
3
  export * from "./Chip/index.js";
4
4
  export * from "./CodeHighlighter/index.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tolokoban/ui",
3
- "version": "0.23.1",
3
+ "version": "0.23.2",
4
4
  "description": "React components with theme",
5
5
  "homepage": "https://tolokoban.github.io/ui",
6
6
  "main": "./lib/dist/index.js",