@mindlogic-ai/logician-ui 4.0.0-alpha.23 → 4.0.0-alpha.24
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/CodeTabs/CodeTabs.js +1 -0
- package/dist/components/CodeTabs/CodeTabs.js.map +1 -1
- package/dist/components/CodeTabs/CodeTabs.mjs +1 -0
- package/dist/components/CodeTabs/CodeTabs.mjs.map +1 -1
- package/dist/components/Tabs/Tab/Tab.styles.d.ts +37 -2
- package/dist/components/Tabs/Tab/Tab.styles.d.ts.map +1 -1
- package/dist/components/Tabs/Tab/Tab.styles.js +32 -2
- package/dist/components/Tabs/Tab/Tab.styles.js.map +1 -1
- package/dist/components/Tabs/Tab/Tab.styles.mjs +32 -3
- package/dist/components/Tabs/Tab/Tab.styles.mjs.map +1 -1
- package/dist/components/Tabs/Tab/index.d.ts +1 -0
- package/dist/components/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.d.ts +1 -1
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/Tabs/Tab/Tab.styles.ts +32 -2
- package/src/components/Tabs/Tab/index.ts +1 -0
- package/src/components/Tabs/index.tsx +1 -1
- package/src/components/a11y.kwcag.test.tsx +34 -1
- package/src/index.ts +1 -0
|
@@ -6,6 +6,7 @@ var React = require('react');
|
|
|
6
6
|
var react = require('@chakra-ui/react');
|
|
7
7
|
var Code = require('../Code/Code.js');
|
|
8
8
|
var Tab = require('../Tabs/Tab/Tab.js');
|
|
9
|
+
require('../Tabs/Tab/Tab.styles.js');
|
|
9
10
|
var TabList = require('../Tabs/TabList/TabList.js');
|
|
10
11
|
var Tabs = require('../Tabs/Tabs.js');
|
|
11
12
|
var CopyButton = require('./CopyButton.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeTabs.js","sources":["../../../src/components/CodeTabs/CodeTabs.tsx"],"sourcesContent":[null],"names":["useState","_jsxs","Tabs","TabList","_jsx","Flex","Tab","CopyButton","Box","Code"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CodeTabs.js","sources":["../../../src/components/CodeTabs/CodeTabs.tsx"],"sourcesContent":[null],"names":["useState","_jsxs","Tabs","TabList","_jsx","Flex","Tab","CopyButton","Box","Code"],"mappings":";;;;;;;;;;;;;AASO,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAiB,KAAI;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,cAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAEtE,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IAErD,QACEC,eAAA,CAACC,SAAI,EAAA,EACH,OAAO,EAAC,WAAW,EACnB,YAAY,EAAC,IAAI,EACjB,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAA,GACvD,IAAI,EAAA,QAAA,EAAA,CAERD,eAAA,CAACE,eAAO,IAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAA,QAAA,EAAA,CACjCC,cAAA,CAACC,UAAI,EAAA,EAAC,CAAC,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,EAAA,QAAA,EACnB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,MACtBD,cAAA,CAACE,OAAG,EAAA,EAEF,KAAK,EAAE,QAAQ,EACf,EAAE,EAAC,MAAM,EACT,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,CAAC,EACL,CAAC,EAAE,CAAC,EACJ,YAAY,EAAC,MAAM,EACnB,aAAa,EAAC,WAAW,EACzB,UAAU,EAAC,MAAM,EACjB,SAAS,EAAC,SAAS,EACnB,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAC7B,MAAM,EAAE;AACN,gCAAA,OAAO,EAAE,gBAAgB;AAC1B,6BAAA,EAAA,QAAA,EAEA,QAAQ,EAAA,EAfJ,CAAA,EAAG,QAAQ,CAAA,IAAA,CAAM,CAgBlB,CACP,CAAC,EAAA,CACG,EACN,MAAM,IAAIF,cAAA,CAACG,qBAAU,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAA,CAAI,CAAA,EAAA,CACpD,EACVH,cAAA,CAACI,SAAG,IAAC,OAAO,EAAC,MAAM,EAAA,QAAA,EAChB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;AAC1B,oBAAA,MAAM,UAAU,GAAG,QAAQ,KAAK,aAAa;AAC7C,oBAAA,QACEJ,cAAA,CAACK,SAAI,EAAA,EAEH,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAA,IAAA,EAAA,aAAA,EACG,CAAC,UAAU,EACxB,cAAc,EAAE;AACd,4BAAA,YAAY,EAAE,MAAM;AACpB,4BAAA,kBAAkB,EAAE,IAAI;AACxB,4BAAA,QAAQ,EAAE,OAAO;4BACjB,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ;AAC9C,yBAAA,EAAA,QAAA,EAEA,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAXxB,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAQ,CAYnB;AAEX,gBAAA,CAAC,CAAC,EAAA,CACE,CAAA,EAAA,CACD;AAEX;;;;"}
|
|
@@ -4,6 +4,7 @@ import { useState } from 'react';
|
|
|
4
4
|
import { Flex, Box } from '@chakra-ui/react';
|
|
5
5
|
import { Code } from '../Code/Code.mjs';
|
|
6
6
|
import { Tab } from '../Tabs/Tab/Tab.mjs';
|
|
7
|
+
import '../Tabs/Tab/Tab.styles.mjs';
|
|
7
8
|
import { TabList } from '../Tabs/TabList/TabList.mjs';
|
|
8
9
|
import { Tabs } from '../Tabs/Tabs.mjs';
|
|
9
10
|
import { CopyButton } from './CopyButton.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeTabs.mjs","sources":["../../../src/components/CodeTabs/CodeTabs.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CodeTabs.mjs","sources":["../../../src/components/CodeTabs/CodeTabs.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;AASO,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAiB,KAAI;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAEtE,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IAErD,QACEA,IAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,WAAW,EACnB,YAAY,EAAC,IAAI,EACjB,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAA,GACvD,IAAI,EAAA,QAAA,EAAA,CAERA,IAAA,CAAC,OAAO,IAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAA,QAAA,EAAA,CACjCC,GAAA,CAAC,IAAI,EAAA,EAAC,CAAC,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,EAAA,QAAA,EACnB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,MACtBA,GAAA,CAAC,GAAG,EAAA,EAEF,KAAK,EAAE,QAAQ,EACf,EAAE,EAAC,MAAM,EACT,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,CAAC,EACL,CAAC,EAAE,CAAC,EACJ,YAAY,EAAC,MAAM,EACnB,aAAa,EAAC,WAAW,EACzB,UAAU,EAAC,MAAM,EACjB,SAAS,EAAC,SAAS,EACnB,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAC7B,MAAM,EAAE;AACN,gCAAA,OAAO,EAAE,gBAAgB;AAC1B,6BAAA,EAAA,QAAA,EAEA,QAAQ,EAAA,EAfJ,CAAA,EAAG,QAAQ,CAAA,IAAA,CAAM,CAgBlB,CACP,CAAC,EAAA,CACG,EACN,MAAM,IAAIA,GAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAA,CAAI,CAAA,EAAA,CACpD,EACVA,GAAA,CAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAA,QAAA,EAChB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;AAC1B,oBAAA,MAAM,UAAU,GAAG,QAAQ,KAAK,aAAa;AAC7C,oBAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAEH,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAA,IAAA,EAAA,aAAA,EACG,CAAC,UAAU,EACxB,cAAc,EAAE;AACd,4BAAA,YAAY,EAAE,MAAM;AACpB,4BAAA,kBAAkB,EAAE,IAAI;AACxB,4BAAA,QAAQ,EAAE,OAAO;4BACjB,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ;AAC9C,yBAAA,EAAA,QAAA,EAEA,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAXxB,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAQ,CAYnB;AAEX,gBAAA,CAAC,CAAC,EAAA,CACE,CAAA,EAAA,CACD;AAEX;;;;"}
|
|
@@ -7,8 +7,43 @@ export declare const verticalStyles: {
|
|
|
7
7
|
p: number;
|
|
8
8
|
width: string;
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* The steps the horizontal tab's selected state paints, exported as tokens so
|
|
12
|
+
* the contrast regression in `src/components/a11y.kwcag.test.tsx` measures what
|
|
13
|
+
* this component actually renders rather than an arithmetic restatement of it.
|
|
14
|
+
*
|
|
15
|
+
* `label` is mode-aware for the same reason `LINK_RAMP` is. `primary.main`
|
|
16
|
+
* resolves to `blue.300` (#4A79DC) in dark, which is 4.59:1 on the page
|
|
17
|
+
* background (#0E1014) but only **4.19:1** on a raised surface (#181A20) — so
|
|
18
|
+
* the selected tab cleared AA on a full-page layout and failed it the moment
|
|
19
|
+
* the same tab list rendered inside a modal or a popover. KWCAG 5.3.3
|
|
20
|
+
* (텍스트 콘텐츠의 명도 대비) asks 4.5:1 of text, and this is text. The `.dark`
|
|
21
|
+
* end of the ramp is `blue.200` (#7DA0E8): 6.68:1 on the surface, 7.31:1 on the
|
|
22
|
+
* page. Light is untouched — `primary.main` is 6.62:1 on white.
|
|
23
|
+
*
|
|
24
|
+
* `indicator` stays `primary.main` deliberately. The 2px underline is a
|
|
25
|
+
* GRAPHIC, judged at 3:1, which 4.19:1 clears; moving it would be a visual
|
|
26
|
+
* change the standard does not ask for.
|
|
27
|
+
*
|
|
28
|
+
* `primary.main` itself is not re-pegged, and should not be: it is also a solid
|
|
29
|
+
* fill under white labels (`Checkbox`, `Switch`, `Banner`), where white on
|
|
30
|
+
* `blue.200` measures 2.60:1. The same reasoning already produced
|
|
31
|
+
* `secondary.main`'s `_dark` step — see its note in `theme/colors.ts`, which
|
|
32
|
+
* moved violet off `.300` at 4.29:1 for exactly this. Blue never got the same
|
|
33
|
+
* treatment.
|
|
34
|
+
*/
|
|
35
|
+
export declare const TAB_RAMP: {
|
|
36
|
+
readonly label: {
|
|
37
|
+
readonly base: "primary.main";
|
|
38
|
+
readonly _dark: "primary.dark";
|
|
39
|
+
};
|
|
40
|
+
readonly indicator: "primary.main";
|
|
41
|
+
};
|
|
10
42
|
export declare const horizontalSelectedStyles: {
|
|
11
|
-
color:
|
|
43
|
+
color: {
|
|
44
|
+
readonly base: "primary.main";
|
|
45
|
+
readonly _dark: "primary.dark";
|
|
46
|
+
};
|
|
12
47
|
fontWeight: string;
|
|
13
48
|
position: string;
|
|
14
49
|
_after: {
|
|
@@ -18,7 +53,7 @@ export declare const horizontalSelectedStyles: {
|
|
|
18
53
|
left: number;
|
|
19
54
|
width: string;
|
|
20
55
|
height: string;
|
|
21
|
-
background:
|
|
56
|
+
background: "primary.main";
|
|
22
57
|
};
|
|
23
58
|
};
|
|
24
59
|
export declare const verticalSelectedStyles: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/Tab/Tab.styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC;AAEF,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"Tab.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/Tab/Tab.styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,QAAQ;;;;;;CAGX,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;CAapC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;CAelC,CAAC"}
|
|
@@ -11,8 +11,37 @@ const verticalStyles = {
|
|
|
11
11
|
p: 4,
|
|
12
12
|
width: '100%',
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* The steps the horizontal tab's selected state paints, exported as tokens so
|
|
16
|
+
* the contrast regression in `src/components/a11y.kwcag.test.tsx` measures what
|
|
17
|
+
* this component actually renders rather than an arithmetic restatement of it.
|
|
18
|
+
*
|
|
19
|
+
* `label` is mode-aware for the same reason `LINK_RAMP` is. `primary.main`
|
|
20
|
+
* resolves to `blue.300` (#4A79DC) in dark, which is 4.59:1 on the page
|
|
21
|
+
* background (#0E1014) but only **4.19:1** on a raised surface (#181A20) — so
|
|
22
|
+
* the selected tab cleared AA on a full-page layout and failed it the moment
|
|
23
|
+
* the same tab list rendered inside a modal or a popover. KWCAG 5.3.3
|
|
24
|
+
* (텍스트 콘텐츠의 명도 대비) asks 4.5:1 of text, and this is text. The `.dark`
|
|
25
|
+
* end of the ramp is `blue.200` (#7DA0E8): 6.68:1 on the surface, 7.31:1 on the
|
|
26
|
+
* page. Light is untouched — `primary.main` is 6.62:1 on white.
|
|
27
|
+
*
|
|
28
|
+
* `indicator` stays `primary.main` deliberately. The 2px underline is a
|
|
29
|
+
* GRAPHIC, judged at 3:1, which 4.19:1 clears; moving it would be a visual
|
|
30
|
+
* change the standard does not ask for.
|
|
31
|
+
*
|
|
32
|
+
* `primary.main` itself is not re-pegged, and should not be: it is also a solid
|
|
33
|
+
* fill under white labels (`Checkbox`, `Switch`, `Banner`), where white on
|
|
34
|
+
* `blue.200` measures 2.60:1. The same reasoning already produced
|
|
35
|
+
* `secondary.main`'s `_dark` step — see its note in `theme/colors.ts`, which
|
|
36
|
+
* moved violet off `.300` at 4.29:1 for exactly this. Blue never got the same
|
|
37
|
+
* treatment.
|
|
38
|
+
*/
|
|
39
|
+
const TAB_RAMP = {
|
|
40
|
+
label: { base: 'primary.main', _dark: 'primary.dark' },
|
|
41
|
+
indicator: 'primary.main',
|
|
42
|
+
};
|
|
14
43
|
const horizontalSelectedStyles = {
|
|
15
|
-
color:
|
|
44
|
+
color: TAB_RAMP.label,
|
|
16
45
|
fontWeight: 'semibold',
|
|
17
46
|
position: 'relative',
|
|
18
47
|
_after: {
|
|
@@ -22,7 +51,7 @@ const horizontalSelectedStyles = {
|
|
|
22
51
|
left: 0,
|
|
23
52
|
width: '100%',
|
|
24
53
|
height: '2px',
|
|
25
|
-
background:
|
|
54
|
+
background: TAB_RAMP.indicator,
|
|
26
55
|
},
|
|
27
56
|
};
|
|
28
57
|
const verticalSelectedStyles = {
|
|
@@ -42,6 +71,7 @@ const verticalSelectedStyles = {
|
|
|
42
71
|
},
|
|
43
72
|
};
|
|
44
73
|
|
|
74
|
+
exports.TAB_RAMP = TAB_RAMP;
|
|
45
75
|
exports.horizontalSelectedStyles = horizontalSelectedStyles;
|
|
46
76
|
exports.verticalSelectedStyles = verticalSelectedStyles;
|
|
47
77
|
exports.verticalStyles = verticalStyles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.styles.js","sources":["../../../../src/components/Tabs/Tab/Tab.styles.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;AACO,MAAM,cAAc,GAAG;AAC5B,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,cAAc,EAAE,YAAY;AAC5B,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM;;
|
|
1
|
+
{"version":3,"file":"Tab.styles.js","sources":["../../../../src/components/Tabs/Tab/Tab.styles.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;AACO,MAAM,cAAc,GAAG;AAC5B,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,cAAc,EAAE,YAAY;AAC5B,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM;;AAGf;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACI,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;AACtD,IAAA,SAAS,EAAE,cAAc;;AAGpB,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,GAAG,EAAE,kBAAkB;AACvB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,QAAQ,CAAC,SAAS;AAC/B,KAAA;;AAGI,MAAM,sBAAsB,GAAG;IACpC,eAAe,EAAE,oBAAoB;IACrC,KAAK,EAAE,cAAc;AACrB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,OAAO,EAAE;AACP,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,gBAAgB,EAAE,CAAC;;AAEnB,QAAA,cAAc,EAAE,OAAO;AACvB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,UAAU,EAAE,cAAc;AAC3B,KAAA;;;;;;;;"}
|
|
@@ -9,8 +9,37 @@ const verticalStyles = {
|
|
|
9
9
|
p: 4,
|
|
10
10
|
width: '100%',
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* The steps the horizontal tab's selected state paints, exported as tokens so
|
|
14
|
+
* the contrast regression in `src/components/a11y.kwcag.test.tsx` measures what
|
|
15
|
+
* this component actually renders rather than an arithmetic restatement of it.
|
|
16
|
+
*
|
|
17
|
+
* `label` is mode-aware for the same reason `LINK_RAMP` is. `primary.main`
|
|
18
|
+
* resolves to `blue.300` (#4A79DC) in dark, which is 4.59:1 on the page
|
|
19
|
+
* background (#0E1014) but only **4.19:1** on a raised surface (#181A20) — so
|
|
20
|
+
* the selected tab cleared AA on a full-page layout and failed it the moment
|
|
21
|
+
* the same tab list rendered inside a modal or a popover. KWCAG 5.3.3
|
|
22
|
+
* (텍스트 콘텐츠의 명도 대비) asks 4.5:1 of text, and this is text. The `.dark`
|
|
23
|
+
* end of the ramp is `blue.200` (#7DA0E8): 6.68:1 on the surface, 7.31:1 on the
|
|
24
|
+
* page. Light is untouched — `primary.main` is 6.62:1 on white.
|
|
25
|
+
*
|
|
26
|
+
* `indicator` stays `primary.main` deliberately. The 2px underline is a
|
|
27
|
+
* GRAPHIC, judged at 3:1, which 4.19:1 clears; moving it would be a visual
|
|
28
|
+
* change the standard does not ask for.
|
|
29
|
+
*
|
|
30
|
+
* `primary.main` itself is not re-pegged, and should not be: it is also a solid
|
|
31
|
+
* fill under white labels (`Checkbox`, `Switch`, `Banner`), where white on
|
|
32
|
+
* `blue.200` measures 2.60:1. The same reasoning already produced
|
|
33
|
+
* `secondary.main`'s `_dark` step — see its note in `theme/colors.ts`, which
|
|
34
|
+
* moved violet off `.300` at 4.29:1 for exactly this. Blue never got the same
|
|
35
|
+
* treatment.
|
|
36
|
+
*/
|
|
37
|
+
const TAB_RAMP = {
|
|
38
|
+
label: { base: 'primary.main', _dark: 'primary.dark' },
|
|
39
|
+
indicator: 'primary.main',
|
|
40
|
+
};
|
|
12
41
|
const horizontalSelectedStyles = {
|
|
13
|
-
color:
|
|
42
|
+
color: TAB_RAMP.label,
|
|
14
43
|
fontWeight: 'semibold',
|
|
15
44
|
position: 'relative',
|
|
16
45
|
_after: {
|
|
@@ -20,7 +49,7 @@ const horizontalSelectedStyles = {
|
|
|
20
49
|
left: 0,
|
|
21
50
|
width: '100%',
|
|
22
51
|
height: '2px',
|
|
23
|
-
background:
|
|
52
|
+
background: TAB_RAMP.indicator,
|
|
24
53
|
},
|
|
25
54
|
};
|
|
26
55
|
const verticalSelectedStyles = {
|
|
@@ -40,5 +69,5 @@ const verticalSelectedStyles = {
|
|
|
40
69
|
},
|
|
41
70
|
};
|
|
42
71
|
|
|
43
|
-
export { horizontalSelectedStyles, verticalSelectedStyles, verticalStyles };
|
|
72
|
+
export { TAB_RAMP, horizontalSelectedStyles, verticalSelectedStyles, verticalStyles };
|
|
44
73
|
//# sourceMappingURL=Tab.styles.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.styles.mjs","sources":["../../../../src/components/Tabs/Tab/Tab.styles.ts"],"sourcesContent":[null],"names":[],"mappings":";AAAA;AACO,MAAM,cAAc,GAAG;AAC5B,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,cAAc,EAAE,YAAY;AAC5B,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM;;
|
|
1
|
+
{"version":3,"file":"Tab.styles.mjs","sources":["../../../../src/components/Tabs/Tab/Tab.styles.ts"],"sourcesContent":[null],"names":[],"mappings":";AAAA;AACO,MAAM,cAAc,GAAG;AAC5B,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,cAAc,EAAE,YAAY;AAC5B,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,KAAK,EAAE,MAAM;;AAGf;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACI,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;AACtD,IAAA,SAAS,EAAE,cAAc;;AAGpB,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,GAAG,EAAE,kBAAkB;AACvB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,QAAQ,CAAC,SAAS;AAC/B,KAAA;;AAGI,MAAM,sBAAsB,GAAG;IACpC,eAAe,EAAE,oBAAoB;IACrC,KAAK,EAAE,cAAc;AACrB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,OAAO,EAAE;AACP,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,gBAAgB,EAAE,CAAC;;AAEnB,QAAA,cAAc,EAAE,OAAO;AACvB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,UAAU,EAAE,cAAc;AAC3B,KAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/Tab/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/Tab/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export * from './components/Toast';
|
|
|
62
62
|
export * from './components/Tooltip';
|
|
63
63
|
export * from './components/Tree';
|
|
64
64
|
export * from './components/Workflow';
|
|
65
|
-
export { Caption, H1, H2, H3, H4, H5, Link, Overline, Subtext, Subtitle, Text, } from './components/Typography';
|
|
65
|
+
export { Caption, H1, H2, H3, H4, H5, Link, LINK_RAMP, Overline, Subtext, Subtitle, Text, } from './components/Typography';
|
|
66
66
|
export { useHasHover } from './hooks/useHasHover';
|
|
67
67
|
export type { LanguageContextValue } from './hooks/useLanguage';
|
|
68
68
|
export { LanguageContext, useLanguage } from './hooks/useLanguage';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AAGvC,YAAY,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,cAAc,yBAAyB,CAAC;AAGxC,YAAY,EACV,WAAW,EACX,SAAS,IAAI,eAAe,GAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,OAAO,EACP,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,GACL,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,MAAM,EACN,KAAK,kBAAkB,EACvB,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AAGvC,YAAY,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,cAAc,yBAAyB,CAAC;AAGxC,YAAY,EACV,WAAW,EACX,SAAS,IAAI,eAAe,GAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,OAAO,EACP,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,GACL,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,MAAM,EACN,KAAK,kBAAkB,EACvB,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -112,6 +112,7 @@ var Th = require('./components/Table/Th.js');
|
|
|
112
112
|
var Thead = require('./components/Table/Thead.js');
|
|
113
113
|
var Tr = require('./components/Table/Tr.js');
|
|
114
114
|
var Tab = require('./components/Tabs/Tab/Tab.js');
|
|
115
|
+
var Tab_styles = require('./components/Tabs/Tab/Tab.styles.js');
|
|
115
116
|
var TabList = require('./components/Tabs/TabList/TabList.js');
|
|
116
117
|
var TabPanel = require('./components/Tabs/TabPanel.js');
|
|
117
118
|
var TabPanels = require('./components/Tabs/TabPanels.js');
|
|
@@ -327,6 +328,7 @@ exports.Th = Th.Th;
|
|
|
327
328
|
exports.Thead = Thead.Thead;
|
|
328
329
|
exports.Tr = Tr.Tr;
|
|
329
330
|
exports.Tab = Tab.Tab;
|
|
331
|
+
exports.TAB_RAMP = Tab_styles.TAB_RAMP;
|
|
330
332
|
exports.TabList = TabList.TabList;
|
|
331
333
|
exports.TabPanel = TabPanel.TabPanel;
|
|
332
334
|
exports.TabPanels = TabPanels.TabPanels;
|
|
@@ -394,6 +396,7 @@ exports.H2 = H2.H2;
|
|
|
394
396
|
exports.H3 = H3.H3;
|
|
395
397
|
exports.H4 = H4.H4;
|
|
396
398
|
exports.H5 = H5.H5;
|
|
399
|
+
exports.LINK_RAMP = Link.LINK_RAMP;
|
|
397
400
|
exports.Link = Link.Link;
|
|
398
401
|
exports.Overline = Overline.Overline;
|
|
399
402
|
exports.Subtext = Subtext.Subtext;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.mjs
CHANGED
|
@@ -110,6 +110,7 @@ export { Th } from './components/Table/Th.mjs';
|
|
|
110
110
|
export { Thead } from './components/Table/Thead.mjs';
|
|
111
111
|
export { Tr } from './components/Table/Tr.mjs';
|
|
112
112
|
export { Tab } from './components/Tabs/Tab/Tab.mjs';
|
|
113
|
+
export { TAB_RAMP } from './components/Tabs/Tab/Tab.styles.mjs';
|
|
113
114
|
export { TabList } from './components/Tabs/TabList/TabList.mjs';
|
|
114
115
|
export { TabPanel } from './components/Tabs/TabPanel.mjs';
|
|
115
116
|
export { TabPanels } from './components/Tabs/TabPanels.mjs';
|
|
@@ -162,7 +163,7 @@ export { H2 } from './components/Typography/H2.mjs';
|
|
|
162
163
|
export { H3 } from './components/Typography/H3.mjs';
|
|
163
164
|
export { H4 } from './components/Typography/H4.mjs';
|
|
164
165
|
export { H5 } from './components/Typography/H5.mjs';
|
|
165
|
-
export { Link } from './components/Typography/Link.mjs';
|
|
166
|
+
export { LINK_RAMP, Link } from './components/Typography/Link.mjs';
|
|
166
167
|
export { Overline } from './components/Typography/Overline.mjs';
|
|
167
168
|
export { Subtext } from './components/Typography/Subtext.mjs';
|
|
168
169
|
export { Subtitle } from './components/Typography/Subtitle.mjs';
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -9,8 +9,38 @@ export const verticalStyles = {
|
|
|
9
9
|
width: '100%',
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* The steps the horizontal tab's selected state paints, exported as tokens so
|
|
14
|
+
* the contrast regression in `src/components/a11y.kwcag.test.tsx` measures what
|
|
15
|
+
* this component actually renders rather than an arithmetic restatement of it.
|
|
16
|
+
*
|
|
17
|
+
* `label` is mode-aware for the same reason `LINK_RAMP` is. `primary.main`
|
|
18
|
+
* resolves to `blue.300` (#4A79DC) in dark, which is 4.59:1 on the page
|
|
19
|
+
* background (#0E1014) but only **4.19:1** on a raised surface (#181A20) — so
|
|
20
|
+
* the selected tab cleared AA on a full-page layout and failed it the moment
|
|
21
|
+
* the same tab list rendered inside a modal or a popover. KWCAG 5.3.3
|
|
22
|
+
* (텍스트 콘텐츠의 명도 대비) asks 4.5:1 of text, and this is text. The `.dark`
|
|
23
|
+
* end of the ramp is `blue.200` (#7DA0E8): 6.68:1 on the surface, 7.31:1 on the
|
|
24
|
+
* page. Light is untouched — `primary.main` is 6.62:1 on white.
|
|
25
|
+
*
|
|
26
|
+
* `indicator` stays `primary.main` deliberately. The 2px underline is a
|
|
27
|
+
* GRAPHIC, judged at 3:1, which 4.19:1 clears; moving it would be a visual
|
|
28
|
+
* change the standard does not ask for.
|
|
29
|
+
*
|
|
30
|
+
* `primary.main` itself is not re-pegged, and should not be: it is also a solid
|
|
31
|
+
* fill under white labels (`Checkbox`, `Switch`, `Banner`), where white on
|
|
32
|
+
* `blue.200` measures 2.60:1. The same reasoning already produced
|
|
33
|
+
* `secondary.main`'s `_dark` step — see its note in `theme/colors.ts`, which
|
|
34
|
+
* moved violet off `.300` at 4.29:1 for exactly this. Blue never got the same
|
|
35
|
+
* treatment.
|
|
36
|
+
*/
|
|
37
|
+
export const TAB_RAMP = {
|
|
38
|
+
label: { base: 'primary.main', _dark: 'primary.dark' },
|
|
39
|
+
indicator: 'primary.main',
|
|
40
|
+
} as const;
|
|
41
|
+
|
|
12
42
|
export const horizontalSelectedStyles = {
|
|
13
|
-
color:
|
|
43
|
+
color: TAB_RAMP.label,
|
|
14
44
|
fontWeight: 'semibold',
|
|
15
45
|
position: 'relative',
|
|
16
46
|
_after: {
|
|
@@ -20,7 +50,7 @@ export const horizontalSelectedStyles = {
|
|
|
20
50
|
left: 0,
|
|
21
51
|
width: '100%',
|
|
22
52
|
height: '2px',
|
|
23
|
-
background:
|
|
53
|
+
background: TAB_RAMP.indicator,
|
|
24
54
|
},
|
|
25
55
|
};
|
|
26
56
|
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
SliderThumb,
|
|
14
14
|
SliderTrack,
|
|
15
15
|
} from '@/components/Slider';
|
|
16
|
+
import { TAB_RAMP } from '@/components/Tabs';
|
|
16
17
|
import { Link, LINK_RAMP, Subtitle } from '@/components/Typography';
|
|
17
18
|
import { colors } from '@/theme/colors';
|
|
18
19
|
|
|
@@ -312,7 +313,11 @@ describe('axe — 구조·ARIA 규칙', () => {
|
|
|
312
313
|
* KWCAG 2.2 5.3.3 텍스트 콘텐츠의 명도 대비 applies to text in every state a
|
|
313
314
|
* user can put it in, and hover is a state a mouse user is IN while reading.
|
|
314
315
|
*/
|
|
315
|
-
|
|
316
|
+
// Both ramps live here because they share one defect and one measuring
|
|
317
|
+
// table: `primary.main`/`danger.main` are tuned against a WHITE page and
|
|
318
|
+
// go under AA as TEXT in dark. `Link` was the first component caught;
|
|
319
|
+
// `Tab`'s selected label was the third.
|
|
320
|
+
describe('브랜드 색 대비 — Link · Tab 램프', () => {
|
|
316
321
|
const relativeLuminance = (hex: string) => {
|
|
317
322
|
const n = hex.replace('#', '');
|
|
318
323
|
const channels = [0, 2, 4].map(
|
|
@@ -409,4 +414,32 @@ describe('Link 색 대비 — 링크 램프의 hover 상태', () => {
|
|
|
409
414
|
).toBeGreaterThan(resting);
|
|
410
415
|
}
|
|
411
416
|
});
|
|
417
|
+
|
|
418
|
+
it('선택된 가로 탭의 레이블이 라이트·다크 양쪽에서 4.5:1 을 넘는다', () => {
|
|
419
|
+
// Measured against `DARK_CANVAS` (#181A20), the RAISED surface — not the
|
|
420
|
+
// page background (#0E1014). That distinction is the whole defect:
|
|
421
|
+
// `primary.main` is 4.59:1 on the page and 4.19:1 here, so the selected tab
|
|
422
|
+
// passed every full-page scan and failed the first time a tab list rendered
|
|
423
|
+
// inside a modal. The stricter of the two surfaces is the one to hold.
|
|
424
|
+
expect(
|
|
425
|
+
contrast(resolve(TAB_RAMP.label.base, 'base'), LIGHT_CANVAS)
|
|
426
|
+
).toBeGreaterThanOrEqual(AA_BODY_TEXT);
|
|
427
|
+
expect(
|
|
428
|
+
contrast(resolve(TAB_RAMP.label._dark, '_dark'), DARK_CANVAS)
|
|
429
|
+
).toBeGreaterThanOrEqual(AA_BODY_TEXT);
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
it('선택 표시 밑줄은 그래픽 기준 3:1 을 넘는다', () => {
|
|
433
|
+
// The underline is not text, so its bar is 3:1 (KWCAG 5.3.4 콘텐츠 간의
|
|
434
|
+
// 구분 / WCAG 1.4.11), which is why it keeps `primary.main` while the label
|
|
435
|
+
// moves. Held here so a later "make them match" edit has to be deliberate
|
|
436
|
+
// rather than arriving as a silent contrast change.
|
|
437
|
+
const AA_NON_TEXT = 3;
|
|
438
|
+
expect(
|
|
439
|
+
contrast(resolve(TAB_RAMP.indicator, 'base'), LIGHT_CANVAS)
|
|
440
|
+
).toBeGreaterThanOrEqual(AA_NON_TEXT);
|
|
441
|
+
expect(
|
|
442
|
+
contrast(resolve(TAB_RAMP.indicator, '_dark'), DARK_CANVAS)
|
|
443
|
+
).toBeGreaterThanOrEqual(AA_NON_TEXT);
|
|
444
|
+
});
|
|
412
445
|
});
|