@lism-css/ui 0.10.0 → 0.12.0
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/README.md +1 -1
- package/dist/components/Accordion/Accordion.stories.d.ts +7 -0
- package/dist/components/Accordion/getProps.d.ts +55 -42
- package/dist/components/Accordion/getProps.js +36 -32
- package/dist/components/Accordion/react/AccIcon.d.ts +2 -1
- package/dist/components/Accordion/react/Accordion.d.ts +12 -21
- package/dist/components/Accordion/react/Accordion.js +30 -29
- package/dist/components/Accordion/react/index.d.ts +10 -11
- package/dist/components/Accordion/setAccordion.d.ts +6 -3
- package/dist/components/Accordion/setAccordion.js +12 -10
- package/dist/components/Alert/Alert.stories.d.ts +13 -0
- package/dist/components/Alert/getProps.d.ts +6 -4
- package/dist/components/Alert/react/Alert.d.ts +3 -4
- package/dist/components/Alert/react/Alert.js +2 -2
- package/dist/components/Avatar/Avatar.stories.d.ts +8 -0
- package/dist/components/Avatar/react/Avatar.d.ts +10 -6
- package/dist/components/Avatar/react/Avatar.js +1 -1
- package/dist/components/Badge/Badge.stories.d.ts +8 -0
- package/dist/components/Badge/react/Badge.d.ts +3 -1
- package/dist/components/Badge/react/Badge.js +5 -8
- package/dist/components/Button/Button.stories.d.ts +8 -0
- package/dist/components/Button/react/Button.d.ts +3 -1
- package/dist/components/Button/react/Button.js +3 -6
- package/dist/components/Callout/Callout.stories.d.ts +12 -0
- package/dist/components/Callout/getProps.d.ts +3 -3
- package/dist/components/Callout/getProps.js +11 -12
- package/dist/components/Callout/react/Callout.d.ts +3 -4
- package/dist/components/Callout/react/Callout.js +4 -4
- package/dist/components/Chat/Chat.stories.d.ts +9 -0
- package/dist/components/Chat/getProps.d.ts +43 -44
- package/dist/components/Chat/getProps.js +2 -2
- package/dist/components/Chat/react/Chat.d.ts +11 -7
- package/dist/components/Chat/react/Chat.js +10 -10
- package/dist/components/Details/Details.stories.d.ts +6 -0
- package/dist/components/Details/getProps.d.ts +34 -35
- package/dist/components/Details/getProps.js +16 -6
- package/dist/components/Details/react/Details.d.ts +11 -20
- package/dist/components/Details/react/Details.js +15 -15
- package/dist/components/Details/react/index.d.ts +7 -7
- package/dist/components/DummyImage/DummyImage.stories.d.ts +7 -0
- package/dist/components/DummyText/DummyText.stories.d.ts +9 -0
- package/dist/components/Modal/Modal.stories.d.ts +6 -0
- package/dist/components/Modal/getProps.d.ts +36 -36
- package/dist/components/Modal/getProps.js +36 -17
- package/dist/components/Modal/react/Body.d.ts +2 -4
- package/dist/components/Modal/react/CloseBtn.d.ts +9 -7
- package/dist/components/Modal/react/CloseBtn.js +5 -5
- package/dist/components/Modal/react/Inner.d.ts +3 -4
- package/dist/components/Modal/react/Modal.d.ts +4 -4
- package/dist/components/Modal/react/Modal.js +11 -9
- package/dist/components/Modal/react/OpenBtn.d.ts +7 -5
- package/dist/components/Modal/react/OpenBtn.js +4 -4
- package/dist/components/Modal/react/index.d.ts +7 -8
- package/dist/components/NavMenu/NavMenu.stories.d.ts +7 -0
- package/dist/components/NavMenu/getProps.d.ts +31 -29
- package/dist/components/NavMenu/react/NavMenu.d.ts +6 -16
- package/dist/components/NavMenu/react/NavMenu.js +21 -17
- package/dist/components/NavMenu/react/index.d.ts +6 -6
- package/dist/components/ShapeDivider/ShapeDivider.stories.d.ts +10 -0
- package/dist/components/ShapeDivider/getProps.d.ts +16 -11
- package/dist/components/ShapeDivider/getProps.js +10 -12
- package/dist/components/ShapeDivider/react/ShapeDivider.d.ts +3 -4
- package/dist/components/ShapeDivider/react/ShapeDivider.js +3 -3
- package/dist/components/Tabs/Tabs.stories.d.ts +6 -0
- package/dist/components/Tabs/getProps.d.ts +11 -4
- package/dist/components/Tabs/getProps.js +14 -4
- package/dist/components/Tabs/react/Tab.d.ts +8 -6
- package/dist/components/Tabs/react/Tab.js +15 -6
- package/dist/components/Tabs/react/TabItem.d.ts +7 -4
- package/dist/components/Tabs/react/TabList.d.ts +2 -1
- package/dist/components/Tabs/react/TabPanel.d.ts +8 -6
- package/dist/components/Tabs/react/Tabs.d.ts +9 -7
- package/dist/components/Tabs/react/Tabs.js +50 -36
- package/dist/components/Tabs/react/index.d.ts +8 -8
- package/dist/components/Tabs/setTabs.d.ts +1 -1
- package/dist/components/Tabs/setTabs.js +25 -15
- package/dist/lism-css/dist/components/{Center → layout/Center}/index.js +1 -1
- package/dist/lism-css/dist/components/{Flex → layout/Flex}/index.js +1 -1
- package/dist/lism-css/dist/components/{Flow → layout/Flow}/index.js +1 -1
- package/dist/lism-css/dist/components/{Frame → layout/Frame}/index.js +1 -1
- package/dist/lism-css/dist/components/{Grid → layout/Grid}/index.js +1 -1
- package/dist/lism-css/dist/components/{Stack → layout/Stack}/index.js +1 -1
- package/dist/lism-css/dist/config/defaults/props.js +16 -26
- package/dist/lism-css/dist/config/defaults/states.js +3 -24
- package/dist/lism-css/dist/config/defaults/tokens.js +2 -2
- package/dist/lism-css/dist/lib/getLayoutProps.js +6 -9
- package/dist/lism-css/dist/lib/getLismProps.js +94 -92
- package/dist/lism-css/dist/lib/helper/mergeSet.js +14 -0
- package/dist/style.css +1 -1
- package/dist/ui.css +1 -1
- package/package.json +14 -7
- package/src/components/Accordion/Accordion.stories.tsx +105 -0
- package/src/components/Accordion/astro/Button.astro +2 -2
- package/src/components/Accordion/getProps.ts +91 -0
- package/src/components/Accordion/react/{AccIcon.jsx → AccIcon.tsx} +2 -2
- package/src/components/Accordion/react/{Accordion.jsx → Accordion.tsx} +33 -11
- package/src/components/Accordion/setAccordion.ts +120 -0
- package/src/components/Alert/Alert.stories.tsx +64 -0
- package/src/components/Alert/getProps.ts +5 -3
- package/src/components/Alert/react/Alert.tsx +3 -3
- package/src/components/Avatar/Avatar.stories.tsx +42 -0
- package/src/components/Avatar/react/Avatar.tsx +17 -0
- package/src/components/Badge/Badge.stories.tsx +40 -0
- package/src/components/Badge/astro/Badge.astro +1 -7
- package/src/components/Badge/react/Badge.tsx +7 -0
- package/src/components/Button/Button.stories.tsx +44 -0
- package/src/components/Button/astro/Button.astro +1 -7
- package/src/components/Button/react/Button.tsx +7 -0
- package/src/components/Callout/Callout.stories.tsx +55 -0
- package/src/components/Callout/getProps.ts +5 -5
- package/src/components/Callout/react/Callout.tsx +3 -3
- package/src/components/Chat/Chat.stories.tsx +58 -0
- package/src/components/Chat/_style.css +5 -5
- package/src/components/Chat/{getProps.js → getProps.ts} +10 -4
- package/src/components/Chat/react/{Chat.jsx → Chat.tsx} +13 -3
- package/src/components/Details/Details.stories.tsx +61 -0
- package/src/components/Details/astro/Title.astro +2 -2
- package/src/components/Details/{getProps.js → getProps.ts} +19 -6
- package/src/components/Details/react/Details.tsx +69 -0
- package/src/components/DummyImage/DummyImage.stories.tsx +23 -0
- package/src/components/DummyText/DummyText.stories.tsx +48 -0
- package/src/components/Modal/Modal.stories.tsx +67 -0
- package/src/components/Modal/astro/CloseBtn.astro +2 -2
- package/src/components/Modal/astro/OpenBtn.astro +2 -3
- package/src/components/Modal/getProps.ts +65 -0
- package/src/components/Modal/react/Body.tsx +10 -0
- package/src/components/Modal/react/CloseBtn.tsx +24 -0
- package/src/components/Modal/react/Inner.tsx +6 -0
- package/src/components/Modal/react/Modal.tsx +24 -0
- package/src/components/Modal/react/OpenBtn.tsx +15 -0
- package/src/components/Modal/{script.js → script.ts} +1 -1
- package/src/components/NavMenu/NavMenu.stories.tsx +68 -0
- package/src/components/NavMenu/getProps.ts +60 -0
- package/src/components/NavMenu/react/NavMenu.tsx +40 -0
- package/src/components/ShapeDivider/ShapeDivider.stories.tsx +87 -0
- package/src/components/ShapeDivider/getProps.ts +36 -0
- package/src/components/ShapeDivider/react/{ShapeDivider.jsx → ShapeDivider.tsx} +4 -4
- package/src/components/Tabs/Tabs.stories.tsx +79 -0
- package/src/components/Tabs/astro/Tab.astro +2 -1
- package/src/components/Tabs/astro/{transformTabitems.js → transformTabitems.ts} +9 -9
- package/src/components/Tabs/getProps.ts +23 -0
- package/src/components/Tabs/react/Tab.tsx +21 -0
- package/src/components/Tabs/react/TabItem.tsx +13 -0
- package/src/components/Tabs/react/TabList.tsx +5 -0
- package/src/components/Tabs/react/{TabPanel.jsx → TabPanel.tsx} +8 -3
- package/src/components/Tabs/react/{Tabs.jsx → Tabs.tsx} +27 -12
- package/src/components/Tabs/{script.js → script.ts} +2 -2
- package/src/components/Tabs/setTabs.ts +65 -0
- package/src/helper/{uuid.js → uuid.ts} +2 -2
- package/src/vite-env.d.ts +1 -0
- package/dist/components/Accordion/astro/__setEvent.d.ts +0 -1
- package/dist/components/Accordion/astro/index.d.ts +0 -15
- package/dist/components/Alert/astro/index.d.ts +0 -1
- package/dist/components/Callout/astro/index.d.ts +0 -1
- package/dist/components/Details/astro/index.d.ts +0 -13
- package/dist/components/DummyImage/astro/index.d.ts +0 -1
- package/dist/components/DummyText/astro/index.d.ts +0 -1
- package/dist/components/Modal/astro/index.d.ts +0 -13
- package/dist/components/NavMenu/astro/index.d.ts +0 -11
- package/dist/components/Tabs/astro/index.d.ts +0 -13
- package/dist/components/Tabs/astro/transformTabitems.d.ts +0 -4
- package/dist/components/astro.d.ts +0 -14
- package/dist/lism-css/dist/config/helper/getSvgUrl.js +0 -4
- package/src/components/Accordion/getProps.js +0 -77
- package/src/components/Accordion/setAccordion.js +0 -146
- package/src/components/Avatar/astro/index.js +0 -1
- package/src/components/Avatar/react/Avatar.jsx +0 -9
- package/src/components/Badge/astro/index.js +0 -1
- package/src/components/Badge/react/Badge.jsx +0 -12
- package/src/components/Button/astro/index.js +0 -1
- package/src/components/Button/react/Button.jsx +0 -12
- package/src/components/Chat/astro/index.js +0 -1
- package/src/components/Details/react/Details.jsx +0 -66
- package/src/components/Modal/getProps.js +0 -30
- package/src/components/Modal/react/Body.jsx +0 -10
- package/src/components/Modal/react/CloseBtn.jsx +0 -20
- package/src/components/Modal/react/Inner.jsx +0 -6
- package/src/components/Modal/react/Modal.jsx +0 -23
- package/src/components/Modal/react/OpenBtn.jsx +0 -11
- package/src/components/NavMenu/getProps.js +0 -65
- package/src/components/NavMenu/react/NavMenu.jsx +0 -19
- package/src/components/ShapeDivider/astro/index.js +0 -1
- package/src/components/ShapeDivider/getProps.js +0 -40
- package/src/components/Tabs/getProps.js +0 -8
- package/src/components/Tabs/react/Tab.jsx +0 -10
- package/src/components/Tabs/react/TabItem.jsx +0 -5
- package/src/components/Tabs/react/TabList.jsx +0 -6
- package/src/components/Tabs/setTabs.js +0 -87
- /package/src/components/Accordion/astro/{index.js → index.ts} +0 -0
- /package/src/components/Accordion/react/{index.js → index.ts} +0 -0
- /package/src/components/Accordion/{script.js → script.ts} +0 -0
- /package/{dist/components/Avatar/astro/index.d.ts → src/components/Avatar/astro/index.ts} +0 -0
- /package/src/components/Avatar/react/{index.js → index.ts} +0 -0
- /package/{dist/components/Badge/astro/index.d.ts → src/components/Badge/astro/index.ts} +0 -0
- /package/src/components/Badge/react/{index.js → index.ts} +0 -0
- /package/{dist/components/Button/astro/index.d.ts → src/components/Button/astro/index.ts} +0 -0
- /package/src/components/Button/react/{index.js → index.ts} +0 -0
- /package/{dist/components/Chat/astro/index.d.ts → src/components/Chat/astro/index.ts} +0 -0
- /package/src/components/Chat/react/{index.js → index.ts} +0 -0
- /package/src/components/Details/astro/{index.js → index.ts} +0 -0
- /package/src/components/Details/react/{index.js → index.ts} +0 -0
- /package/src/components/Modal/astro/{index.js → index.ts} +0 -0
- /package/src/components/Modal/react/{index.js → index.ts} +0 -0
- /package/src/components/NavMenu/astro/{index.js → index.ts} +0 -0
- /package/src/components/NavMenu/react/{index.js → index.ts} +0 -0
- /package/{dist/components/ShapeDivider/astro/index.d.ts → src/components/ShapeDivider/astro/index.ts} +0 -0
- /package/src/components/ShapeDivider/react/{index.js → index.ts} +0 -0
- /package/src/components/Tabs/astro/{index.js → index.ts} +0 -0
- /package/src/components/Tabs/react/{index.js → index.ts} +0 -0
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { STATES as
|
|
1
|
+
import { STATES as b, PROPS as S } from "../config/index.js";
|
|
2
2
|
import j from "./getLayoutProps.js";
|
|
3
3
|
import U from "./isPresetValue.js";
|
|
4
|
-
import
|
|
4
|
+
import x from "./isTokenValue.js";
|
|
5
5
|
import v from "./getUtilKey.js";
|
|
6
6
|
import m from "./getMaybeCssVar.js";
|
|
7
|
-
import
|
|
8
|
-
import
|
|
7
|
+
import E from "./getBpData.js";
|
|
8
|
+
import z from "./helper/atts.js";
|
|
9
9
|
import N from "./helper/isEmptyObj.js";
|
|
10
10
|
import C from "./helper/filterEmptyObj.js";
|
|
11
|
+
import _ from "./helper/mergeSet.js";
|
|
11
12
|
import k from "./helper/splitWithComma.js";
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
return
|
|
13
|
+
const A = (n) => {
|
|
14
|
+
const e = S[n];
|
|
15
|
+
return e && e?.token || "";
|
|
15
16
|
};
|
|
16
|
-
class
|
|
17
|
+
class w {
|
|
17
18
|
// propList = {};
|
|
18
19
|
className = "";
|
|
19
20
|
uClasses = [];
|
|
@@ -21,120 +22,121 @@ class x {
|
|
|
21
22
|
styles = {};
|
|
22
23
|
attrs = {};
|
|
23
24
|
_propConfig;
|
|
24
|
-
constructor(
|
|
25
|
-
const { forwardedRef: t, class:
|
|
26
|
-
this.styles = { ...l }, this._propConfig = { ...
|
|
27
|
-
let
|
|
28
|
-
if (
|
|
29
|
-
const
|
|
30
|
-
|
|
25
|
+
constructor(e) {
|
|
26
|
+
const { forwardedRef: t, class: s, className: r, lismClass: o, variant: i, style: l = {}, _propConfig: y = {}, ...c } = e;
|
|
27
|
+
this.styles = { ...l }, this._propConfig = { ...y };
|
|
28
|
+
let h = o || "";
|
|
29
|
+
if (i && o) {
|
|
30
|
+
const d = o.split(" "), a = d[0], u = `${a}--${i}`;
|
|
31
|
+
h = [a, u, ...d.slice(1)].join(" ");
|
|
31
32
|
}
|
|
32
|
-
N(c) || (this.attrs = { ...c }, this.analyzeProps()), t && (this.attrs.ref = t), this.className =
|
|
33
|
+
N(c) || (this.attrs = { ...c }, this.analyzeProps()), t && (this.attrs.ref = t), this.className = z(r || s, h, this.lismState, this.uClasses);
|
|
33
34
|
}
|
|
34
|
-
analyzeState(
|
|
35
|
-
const { className:
|
|
36
|
-
t === !0 ? this.lismState.push(
|
|
35
|
+
analyzeState(e, t) {
|
|
36
|
+
const { className: s, preset: r, presetClass: o, customVar: i, tokenKey: l } = e;
|
|
37
|
+
t === !0 ? this.lismState.push(s) : r && U(r, t) ? this.lismState.push(`${s} ${o}:${String(t)}`) : t && (this.lismState.push(s), l && i && this.addStyle(i, m(t, l)));
|
|
37
38
|
}
|
|
38
39
|
// prop解析
|
|
39
40
|
analyzeProps() {
|
|
41
|
+
const e = this.extractProp("set"), t = this.extractProp("unset");
|
|
40
42
|
Object.keys(this.attrs).forEach((s) => {
|
|
41
|
-
if (Object.hasOwn(
|
|
42
|
-
const
|
|
43
|
-
typeof
|
|
43
|
+
if (Object.hasOwn(b, s)) {
|
|
44
|
+
const r = this.extractProp(s), o = b[s];
|
|
45
|
+
typeof o == "string" ? r && this.lismState.push(o) : this.analyzeState(o, r);
|
|
44
46
|
} else if (Object.hasOwn(S, s)) {
|
|
45
|
-
const
|
|
46
|
-
delete this.attrs[s], this.analyzeLismProp(s,
|
|
47
|
+
const r = this.attrs[s];
|
|
48
|
+
delete this.attrs[s], this.analyzeLismProp(s, r);
|
|
47
49
|
} else if (s === "hov") {
|
|
48
|
-
const
|
|
49
|
-
this.setHovProps(
|
|
50
|
+
const r = this.extractProp(s);
|
|
51
|
+
this.setHovProps(r);
|
|
50
52
|
} else if (s === "css") {
|
|
51
|
-
const
|
|
52
|
-
this.addStyles(
|
|
53
|
+
const r = this.extractProp("css");
|
|
54
|
+
this.addStyles(r);
|
|
53
55
|
}
|
|
54
|
-
});
|
|
56
|
+
}), _(void 0, e, t).forEach((s) => this.lismState.push(`set--${s}`));
|
|
55
57
|
}
|
|
56
58
|
// Lism Prop 解析
|
|
57
|
-
analyzeLismProp(
|
|
59
|
+
analyzeLismProp(e, t) {
|
|
58
60
|
if (t == null) return;
|
|
59
|
-
let
|
|
60
|
-
if (
|
|
61
|
-
this._propConfig?.[
|
|
62
|
-
const { base:
|
|
63
|
-
this.setAttrs(
|
|
64
|
-
|
|
61
|
+
let s = S[e] || null;
|
|
62
|
+
if (s === null) return;
|
|
63
|
+
this._propConfig?.[e] && (s = Object.assign({}, s, this._propConfig[e]));
|
|
64
|
+
const { base: r, ...o } = E(t);
|
|
65
|
+
this.setAttrs(e, r, s), Object.keys(o).forEach((i) => {
|
|
66
|
+
s && this.setAttrs(e, o[i], s, i);
|
|
65
67
|
});
|
|
66
68
|
}
|
|
67
|
-
addUtil(
|
|
68
|
-
this.uClasses.push(
|
|
69
|
+
addUtil(e) {
|
|
70
|
+
this.uClasses.push(e);
|
|
69
71
|
}
|
|
70
|
-
addUtils(
|
|
71
|
-
this.uClasses.push(...
|
|
72
|
+
addUtils(e) {
|
|
73
|
+
this.uClasses.push(...e);
|
|
72
74
|
}
|
|
73
75
|
// addState(state) {
|
|
74
76
|
// this.stateClasses.push(state);
|
|
75
77
|
// }
|
|
76
|
-
addStyle(
|
|
77
|
-
this.styles[
|
|
78
|
+
addStyle(e, t) {
|
|
79
|
+
this.styles[e] = t;
|
|
78
80
|
}
|
|
79
|
-
addStyles(
|
|
80
|
-
this.styles = { ...this.styles, ...
|
|
81
|
+
addStyles(e) {
|
|
82
|
+
this.styles = { ...this.styles, ...e };
|
|
81
83
|
}
|
|
82
|
-
addAttrs(
|
|
83
|
-
this.addStyles(
|
|
84
|
+
addAttrs(e) {
|
|
85
|
+
this.addStyles(e.styles || {}), this.addUtils(e.utils || []);
|
|
84
86
|
}
|
|
85
|
-
extractProp(
|
|
86
|
-
const t = this.attrs[
|
|
87
|
-
return this.attrs[
|
|
87
|
+
extractProp(e) {
|
|
88
|
+
const t = this.attrs[e];
|
|
89
|
+
return this.attrs[e] === void 0 ? null : (delete this.attrs[e], t);
|
|
88
90
|
}
|
|
89
|
-
extractProps(
|
|
91
|
+
extractProps(e) {
|
|
90
92
|
const t = {};
|
|
91
|
-
return
|
|
92
|
-
this.attrs[
|
|
93
|
+
return e.forEach((s) => {
|
|
94
|
+
this.attrs[s] !== void 0 && (t[s] = this.attrs[s], delete this.attrs[s]);
|
|
93
95
|
}), t;
|
|
94
96
|
}
|
|
95
97
|
// utilクラスを追加するか、styleにセットするかの分岐処理 @base
|
|
96
98
|
// 値が null, undefined, '', false の時はスキップ
|
|
97
|
-
setAttrs(
|
|
99
|
+
setAttrs(e, t, s = {}, r = "") {
|
|
98
100
|
if (t == null || t === "" || t === !1) return;
|
|
99
|
-
let o = `--${
|
|
100
|
-
if (
|
|
101
|
-
this.addUtil(`${
|
|
101
|
+
let o = `--${e}`, i = `-${String(s.utilKey || e)}`;
|
|
102
|
+
if (r && (o = `--${e}_${r}`, i += `_${r}`), typeof t == "string" && t.startsWith(":")) {
|
|
103
|
+
this.addUtil(`${i}:${t.replace(":", "")}`);
|
|
102
104
|
return;
|
|
103
105
|
}
|
|
104
|
-
if (!
|
|
105
|
-
const { presets: u, tokenClass: O, utils: g, shorthands:
|
|
106
|
+
if (!r) {
|
|
107
|
+
const { presets: u, tokenClass: O, utils: g, shorthands: P } = s;
|
|
106
108
|
if (u && U(u, t)) {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
+
const p = typeof t == "string" || typeof t == "number" ? String(t) : "";
|
|
110
|
+
p && this.addUtil(`${i}:${p}`);
|
|
109
111
|
return;
|
|
110
112
|
}
|
|
111
|
-
if (O &&
|
|
112
|
-
const
|
|
113
|
-
|
|
113
|
+
if (O && s.token && x(s.token, t)) {
|
|
114
|
+
const p = typeof t == "string" || typeof t == "number" ? String(t) : "";
|
|
115
|
+
p && this.addUtil(`${i}:${p}`);
|
|
114
116
|
return;
|
|
115
117
|
}
|
|
116
|
-
let
|
|
117
|
-
if (g && typeof t == "string" && (
|
|
118
|
-
this.addUtil(`${
|
|
118
|
+
let f = "";
|
|
119
|
+
if (g && typeof t == "string" && (f = v(g, t)), !f && P && typeof t == "string" && (f = v(P, t, !0)), f) {
|
|
120
|
+
this.addUtil(`${i}:${f}`);
|
|
119
121
|
return;
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
124
|
if (t === !0 || t === "-") {
|
|
123
|
-
this.addUtil(
|
|
125
|
+
this.addUtil(i);
|
|
124
126
|
return;
|
|
125
127
|
}
|
|
126
|
-
const { prop: l, isVar:
|
|
128
|
+
const { prop: l, isVar: y, alwaysVar: c, token: h, bp: d } = s;
|
|
127
129
|
let a;
|
|
128
|
-
if (
|
|
129
|
-
if (
|
|
130
|
-
this.addStyle(`--${
|
|
130
|
+
if (h && (typeof t == "string" || typeof t == "number") ? a = m(t, h) : typeof t == "string" || typeof t == "number" ? a = t : a = JSON.stringify(t), !r) {
|
|
131
|
+
if (y) {
|
|
132
|
+
this.addStyle(`--${e}`, a);
|
|
131
133
|
return;
|
|
132
|
-
} else if (!
|
|
134
|
+
} else if (!d && !c) {
|
|
133
135
|
this.addStyle(l, a);
|
|
134
136
|
return;
|
|
135
137
|
}
|
|
136
138
|
}
|
|
137
|
-
this.addUtil(
|
|
139
|
+
this.addUtil(i), this.addStyle(o, a);
|
|
138
140
|
}
|
|
139
141
|
// setPassProps(passVars) {
|
|
140
142
|
// let dataList = [];
|
|
@@ -149,40 +151,40 @@ class x {
|
|
|
149
151
|
// this.addStyle(`--pass_${propName}`, value);
|
|
150
152
|
// });
|
|
151
153
|
// }
|
|
152
|
-
setHovProps(
|
|
153
|
-
|
|
154
|
+
setHovProps(e) {
|
|
155
|
+
e && (e === "-" || e === !0 ? this.addUtil("-hov") : typeof e == "string" ? k(e).forEach((t) => {
|
|
154
156
|
this.addUtil(`-hov:${t}`);
|
|
155
|
-
}) : typeof
|
|
156
|
-
const
|
|
157
|
-
if (!(
|
|
158
|
-
if (
|
|
157
|
+
}) : typeof e == "object" && Object.keys(e).forEach((t) => {
|
|
158
|
+
const s = e[t];
|
|
159
|
+
if (!(s == null || s === "" || s === !1)) {
|
|
160
|
+
if (s === "-" || s === !0)
|
|
159
161
|
this.addUtil(`-hov:${t}`);
|
|
160
162
|
else if (t === "class")
|
|
161
|
-
k(
|
|
162
|
-
this.addUtil(`-hov:${
|
|
163
|
+
k(s).forEach((r) => {
|
|
164
|
+
this.addUtil(`-hov:${r}`);
|
|
163
165
|
});
|
|
164
|
-
else if (typeof
|
|
165
|
-
const
|
|
166
|
-
this.addUtil(`-hov:${t}`), this.addStyle(`--hov-${t}`,
|
|
166
|
+
else if (typeof s == "string" || typeof s == "number") {
|
|
167
|
+
const r = m(s, A(t));
|
|
168
|
+
this.addUtil(`-hov:${t}`), this.addStyle(`--hov-${t}`, r);
|
|
167
169
|
}
|
|
168
170
|
}
|
|
169
171
|
}));
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
|
-
function
|
|
173
|
-
if (Object.keys(
|
|
174
|
+
function B(n) {
|
|
175
|
+
if (Object.keys(n).length === 0)
|
|
174
176
|
return {};
|
|
175
|
-
const { layout:
|
|
177
|
+
const { layout: e, ...t } = n, s = new w(j(e, t));
|
|
176
178
|
return {
|
|
177
179
|
...C({
|
|
178
|
-
className:
|
|
179
|
-
style: C(
|
|
180
|
+
className: s.className,
|
|
181
|
+
style: C(s.styles)
|
|
180
182
|
}),
|
|
181
|
-
...
|
|
183
|
+
...s.attrs
|
|
182
184
|
// data-* などHTMLの標準属性はそのまま渡す
|
|
183
185
|
};
|
|
184
186
|
}
|
|
185
187
|
export {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
+
w as LismPropsData,
|
|
189
|
+
B as default
|
|
188
190
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
function t(n) {
|
|
2
|
+
return n ? Array.isArray(n) ? n.flatMap((r) => t(r)) : typeof n == "string" ? n.split(/[,\s]+/).map((r) => r.trim()).filter(Boolean) : [] : [];
|
|
3
|
+
}
|
|
4
|
+
function o(n, r, s) {
|
|
5
|
+
const e = [.../* @__PURE__ */ new Set([...t(n), ...t(r)])];
|
|
6
|
+
if (e.length === 0) return [];
|
|
7
|
+
const i = t(s);
|
|
8
|
+
if (i.length === 0) return e;
|
|
9
|
+
const a = new Set(i);
|
|
10
|
+
return e.filter((f) => !a.has(f));
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
o as default
|
|
14
|
+
};
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer lism-modules{.c--accordion{--duration:var(--acc-duration,0.25s)}.c--accordion_item{--_panel-h:0px;--_icon-transform:rotate(0deg)}.c--accordion_item[data-opened]{--_icon-transform:rotate(90deg);--_panel-h:auto}.c--accordion_panel{height:var(--_panel-h);transition:height var(--duration)}[hidden]>.c--accordion_content{position:absolute}.c--accordion_icon{display:grid;height:1em;width:1em;&:after,&:before{background-color:currentColor;content:"";display:block;grid-area:1/1}&:before{height:100%;transform:var(--_icon-transform);transition:transform var(--duration);width:.1em}&:after{height:.1em;width:100%}}.c--accordion_button:focus-visible{outline:2px solid currentColor;outline-color:revert;outline-offset:-3px}@media (prefers-reduced-motion:reduce){.c--accordion_item{--duration:0s}}@media (scripting:none){.c--accordion_panel{content-visibility:visible!important;height:auto!important}.c--accordion_content{position:static!important}}}@layer lism-modules{.c--badge{--c:var(--base);--bgc:var(--text);--bdc:transparent;background-color:var(--bgc);border:1px solid var(--bdc);color:var(--c)}.c--badge--outline{--c:var(--text);--bgc:transparent;--bdc:currentColor}.c--button{--c:var(--base);--bgc:var(--text);--bdc:var(--bgc);background-color:var(--bgc);border:1px solid var(--bdc);color:var(--c);gap:var(--s10);place-content:center;place-items:center;text-decoration:none}.c--button--outline{--c:var(--text);--bgc:transparent;--bdc:var(--c)}}@layer lism-modules{:where(.c--button)>.a--icon{scale:1.05}.c--button:where(.l--grid){grid-template-columns:minmax(1em,auto) 1fr minmax(1em,auto);justify-items:center}.c--button:where(.l--grid)>:not(.a--icon){grid-column:2}}@layer lism-modules{.c--chat{--cbox-bgPct:8
|
|
1
|
+
@layer lism-modules{.c--accordion{--duration:var(--acc-duration,0.25s)}.c--accordion_item{--_panel-h:0px;--_icon-transform:rotate(0deg)}.c--accordion_item[data-opened]{--_icon-transform:rotate(90deg);--_panel-h:auto}.c--accordion_panel{height:var(--_panel-h);transition:height var(--duration)}[hidden]>.c--accordion_content{position:absolute}.c--accordion_icon{display:grid;height:1em;width:1em;&:after,&:before{background-color:currentColor;content:"";display:block;grid-area:1/1}&:before{height:100%;transform:var(--_icon-transform);transition:transform var(--duration);width:.1em}&:after{height:.1em;width:100%}}.c--accordion_button:focus-visible{outline:2px solid currentColor;outline-color:revert;outline-offset:-3px}@media (prefers-reduced-motion:reduce){.c--accordion_item{--duration:0s}}@media (scripting:none){.c--accordion_panel{content-visibility:visible!important;height:auto!important}.c--accordion_content{position:static!important}}}@layer lism-modules{.c--badge{--c:var(--base);--bgc:var(--text);--bdc:transparent;background-color:var(--bgc);border:1px solid var(--bdc);color:var(--c)}.c--badge--outline{--c:var(--text);--bgc:transparent;--bdc:currentColor}.c--button{--c:var(--base);--bgc:var(--text);--bdc:var(--bgc);background-color:var(--bgc);border:1px solid var(--bdc);color:var(--c);gap:var(--s10);place-content:center;place-items:center;text-decoration:none}.c--button--outline{--c:var(--text);--bgc:transparent;--bdc:var(--c)}}@layer lism-modules{:where(.c--button)>.a--icon{scale:1.05}.c--button:where(.l--grid){grid-template-columns:minmax(1em,auto) 1fr minmax(1em,auto);justify-items:center}.c--button:where(.l--grid)>:not(.a--icon){grid-column:2}}@layer lism-modules{.c--chat{--cbox-bgPct:8%;grid-template-areas:"avatar name" "avatar body";grid-template-columns:auto 1fr;grid-template-rows:minmax(1.5rem,auto) auto;--_avator-size:clamp(48px,32px + 5cqw,64px);--_deco-size:calc(min(var(--_avator-size), 80px)/4 + 0.25rem);--_deco-mask:none;--_deco-t:0;--_deco-scale:1;--_deco-inset-x:0;gap:0 calc(var(--_deco-size) + 1px)}.c--chat_avatar{grid-area:avatar;width:var(--_avator-size)}.c--chat_name{grid-area:name}.c--chat_body{grid-area:body}.c--chat_content{max-width:var(--sz--s)}.c--chat_deco{height:var(--_deco-size);top:var(--_deco-t);inset-inline:var(--_deco-inset-x);-webkit-mask:var(--_deco-mask) center/contain no-repeat;mask:var(--_deco-mask) center/contain no-repeat;scale:var(--_deco-scale);width:var(--_deco-size)}.c--chat--speak{--_deco-mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8"><path d="M8,8L8,8C7.4,4.8,5.4,2,2.6,0.4L2,0h6V8z"/></svg>')}[data-chat-dir=start]{--_deco-inset-x:auto calc(100% - 1px)}[data-chat-dir=end]{--_deco-scale:-1 1;--_deco-inset-x:calc(100% - 1px) auto;grid-template-areas:"name avatar" "body avatar";grid-template-columns:1fr auto}}.c--chat--speak[data-chat-dir=start]>div>.c--chat_content{border-start-start-radius:0}.c--chat--speak[data-chat-dir=end]>div>.c--chat_content{border-start-end-radius:0}@layer lism-modules{.c--navMenu{--link-td:none;--hl:var(--hl--s);--_item-p:var(--s20);--focus-offset:-1px}.c--navMenu_nest{--_item-p:inherit}.c--navMenu_link{padding:var(--_item-p)}.c--navMenu_item,.c--navMenu_nest{--bdc:inherit}.c--shapeDivider{--level:0;--_inner-offset:0px;--_inner-stretch:1;--_flipX:1;--_flipY:1;height:clamp(5px * var(--level),1cqw * var(--level),12px * var(--level));overflow:visible}}@layer lism-modules{.c--shapeDivider:where([data-flip^=X]){--_flipX:-1}.c--shapeDivider:where([data-flip$=Y]){--_flipY:-1}.c--shapeDivider_inner{--offsetY:0.5px;--offsetX:-0.5px;height:100%;scale:calc(var(--_flipX)*var(--_inner-stretch)) var(--_flipY);translate:calc(var(--offsetX) + var(--_inner-offset)) calc(var(--offsetY)*var(--_flipY));width:calc(100% + 1px)}.c--shapeDivider_svg{display:block}:where([data-has-animation=true]) .c--shapeDivider_svg{animation:lism--slideShape 12s linear infinite alternate;transform-origin:100% 0}}@keyframes lism--slideShape{0%{transform:scaleX(4)}to{transform:scaleX(4) translateX(75%)}}
|
package/dist/ui.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer lism-modules{.c--accordion{--duration: var(--acc-duration, .25s)}.c--accordion_item{--_panel-h: 0px;--_icon-transform: rotate(0deg)}.c--accordion_item[data-opened]{--_icon-transform: rotate(90deg);--_panel-h: auto}.c--accordion_panel{height:var(--_panel-h);transition:height var(--duration)}[hidden]>.c--accordion_content{position:absolute}.c--accordion_icon{display:grid;width:1em;height:1em}.c--accordion_icon:before,.c--accordion_icon:after{content:"";display:block;grid-area:1 / 1;background-color:currentColor}.c--accordion_icon:before{width:.1em;height:100%;transition:transform var(--duration);transform:var(--_icon-transform)}.c--accordion_icon:after{height:.1em;width:100%}.c--accordion_button:focus-visible{outline:solid 2px currentColor;outline-color:revert;outline-offset:-3px}@media(prefers-reduced-motion:reduce){.c--accordion_item{--duration: 0s}}@media(scripting:none){.c--accordion_panel{height:auto!important;content-visibility:visible!important}.c--accordion_content{position:static!important}}}@layer lism-modules{.c--details{--duration: var(--acc-duration, .25s);--_icon-scale: 1.1;--_icon-transform: rotate(0deg);--_content-gtr: 0fr}.c--details[open]{--_icon-transform: scaleY(-1);--_content-gtr: 1fr}.c--details_summary::-webkit-details-marker{display:none}.c--details_icon{--svg: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="1em" height="1em" fill="currentColor"><path d="M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z"></path></svg>');display:inline-grid;background-color:currentColor;-webkit-mask:var(--svg) no-repeat center center / contain;mask:var(--svg) no-repeat center center / contain;scale:var(--_icon-scale);transition:transform var(--duration);transform:var(--_icon-transform)}.c--details::details-content{display:grid;grid-template-rows:var(--_content-gtr);transition-duration:var(--duration);transition-property:content-visibility,grid-template;transition-behavior:allow-discrete}.c--details_body{overflow:hidden}}@layer lism-modules{.c--modal{--flow: 0;--duration: var(--modal-duration, .4s);width:100%;height:100%;max-width:100%;max-height:100%;overflow:unset;background:var(--backdrop-bg, rgb(0 0 0 / .6));transition-duration:var(--duration);transition-property:opacity}.c--modal::backdrop{background:none}.c--modal[open]{display:flex;flex-direction:column;justify-content:center}.c--modal_inner{--offset: 0 0;background-color:var(--base);transition:translate var(--duration);max-height:100%}.c--modal:not([data-is-open]){opacity:0}.c--modal:not([data-is-open])>.c--modal_inner{translate:var(--offset)}}@layer lism-modules{.c--navMenu{--link-td: none;--hl: var(--hl--s);--_item-p: var(--s20);--focus-offset: -1px}.c--navMenu_nest{--_item-p: inherit}.c--navMenu_link{padding:var(--_item-p)}.c--navMenu_nest,.c--navMenu_item{--bdc: inherit}}@layer lism-modules{.c--tabs{display:grid;grid:"list" "panel" / 100%}.c--tabs_list{grid-area:list;display:flex;overflow-x:auto}.c--tabs_tab[aria-selected=true]{--_notSelected: }.c--tabs_tab[aria-selected=false]{--_isSelected: }:where(.c--tabs_tab){color:var(--_notSelected, var(--text-2))}.c--tabs_panel{grid-area:panel;width:100%}.c--tabs_panel:where([aria-hidden=true]){display:none}}@layer lism-modules{.c--badge{--c: var(--base);--bgc: var(--text);--bdc: transparent;color:var(--c);background-color:var(--bgc);border:solid 1px var(--bdc)}.c--badge--outline{--c: var(--text);--bgc: transparent;--bdc: currentColor}}@layer lism-modules{.c--button{--c: var(--base);--bgc: var(--text);--bdc: var(--bgc);color:var(--c);background-color:var(--bgc);border:solid 1px var(--bdc);gap:var(--s10);text-decoration:none;place-content:center;place-items:center}.c--button--outline{--c: var(--text);--bgc: transparent;--bdc: var(--c)}:where(.c--button)>.a--icon{scale:1.05}.c--button:where(.l--grid){grid-template-columns:minmax(1em,auto) 1fr minmax(1em,auto);justify-items:center}.c--button:where(.l--grid)>:not(.a--icon){grid-column:2}}@layer lism-modules{.c--chat{--cbox-bgPct: 8
|
|
1
|
+
@layer lism-modules{.c--accordion{--duration: var(--acc-duration, .25s)}.c--accordion_item{--_panel-h: 0px;--_icon-transform: rotate(0deg)}.c--accordion_item[data-opened]{--_icon-transform: rotate(90deg);--_panel-h: auto}.c--accordion_panel{height:var(--_panel-h);transition:height var(--duration)}[hidden]>.c--accordion_content{position:absolute}.c--accordion_icon{display:grid;width:1em;height:1em}.c--accordion_icon:before,.c--accordion_icon:after{content:"";display:block;grid-area:1 / 1;background-color:currentColor}.c--accordion_icon:before{width:.1em;height:100%;transition:transform var(--duration);transform:var(--_icon-transform)}.c--accordion_icon:after{height:.1em;width:100%}.c--accordion_button:focus-visible{outline:solid 2px currentColor;outline-color:revert;outline-offset:-3px}@media(prefers-reduced-motion:reduce){.c--accordion_item{--duration: 0s}}@media(scripting:none){.c--accordion_panel{height:auto!important;content-visibility:visible!important}.c--accordion_content{position:static!important}}}@layer lism-modules{.c--details{--duration: var(--acc-duration, .25s);--_icon-scale: 1.1;--_icon-transform: rotate(0deg);--_content-gtr: 0fr}.c--details[open]{--_icon-transform: scaleY(-1);--_content-gtr: 1fr}.c--details_summary::-webkit-details-marker{display:none}.c--details_icon{--svg: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="1em" height="1em" fill="currentColor"><path d="M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z"></path></svg>');display:inline-grid;background-color:currentColor;-webkit-mask:var(--svg) no-repeat center center / contain;mask:var(--svg) no-repeat center center / contain;scale:var(--_icon-scale);transition:transform var(--duration);transform:var(--_icon-transform)}.c--details::details-content{display:grid;grid-template-rows:var(--_content-gtr);transition-duration:var(--duration);transition-property:content-visibility,grid-template;transition-behavior:allow-discrete}.c--details_body{overflow:hidden}}@layer lism-modules{.c--modal{--flow: 0;--duration: var(--modal-duration, .4s);width:100%;height:100%;max-width:100%;max-height:100%;overflow:unset;background:var(--backdrop-bg, rgb(0 0 0 / .6));transition-duration:var(--duration);transition-property:opacity}.c--modal::backdrop{background:none}.c--modal[open]{display:flex;flex-direction:column;justify-content:center}.c--modal_inner{--offset: 0 0;background-color:var(--base);transition:translate var(--duration);max-height:100%}.c--modal:not([data-is-open]){opacity:0}.c--modal:not([data-is-open])>.c--modal_inner{translate:var(--offset)}}@layer lism-modules{.c--navMenu{--link-td: none;--hl: var(--hl--s);--_item-p: var(--s20);--focus-offset: -1px}.c--navMenu_nest{--_item-p: inherit}.c--navMenu_link{padding:var(--_item-p)}.c--navMenu_nest,.c--navMenu_item{--bdc: inherit}}@layer lism-modules{.c--tabs{display:grid;grid:"list" "panel" / 100%}.c--tabs_list{grid-area:list;display:flex;overflow-x:auto}.c--tabs_tab[aria-selected=true]{--_notSelected: }.c--tabs_tab[aria-selected=false]{--_isSelected: }:where(.c--tabs_tab){color:var(--_notSelected, var(--text-2))}.c--tabs_panel{grid-area:panel;width:100%}.c--tabs_panel:where([aria-hidden=true]){display:none}}@layer lism-modules{.c--badge{--c: var(--base);--bgc: var(--text);--bdc: transparent;color:var(--c);background-color:var(--bgc);border:solid 1px var(--bdc)}.c--badge--outline{--c: var(--text);--bgc: transparent;--bdc: currentColor}}@layer lism-modules{.c--button{--c: var(--base);--bgc: var(--text);--bdc: var(--bgc);color:var(--c);background-color:var(--bgc);border:solid 1px var(--bdc);gap:var(--s10);text-decoration:none;place-content:center;place-items:center}.c--button--outline{--c: var(--text);--bgc: transparent;--bdc: var(--c)}:where(.c--button)>.a--icon{scale:1.05}.c--button:where(.l--grid){grid-template-columns:minmax(1em,auto) 1fr minmax(1em,auto);justify-items:center}.c--button:where(.l--grid)>:not(.a--icon){grid-column:2}}@layer lism-modules{.c--chat{--cbox-bgPct: 8%;grid-template-areas:"avatar name" "avatar body";grid-template-columns:auto 1fr;grid-template-rows:minmax(1.5rem,auto) auto;--_avator-size: clamp(48px, 32px + 5cqw, 64px);--_deco-size: calc(min(var(--_avator-size), 80px)/4 + .25rem) ;--_deco-mask: none;--_deco-t: 0;--_deco-scale: 1;--_deco-inset-x: 0;gap:0 calc(var(--_deco-size) + 1px)}.c--chat_avatar{grid-area:avatar;width:var(--_avator-size)}.c--chat_name{grid-area:name}.c--chat_body{grid-area:body}.c--chat_content{max-width:var(--sz--s)}.c--chat_deco{top:var(--_deco-t);inset-inline:var(--_deco-inset-x);width:var(--_deco-size);height:var(--_deco-size);scale:var(--_deco-scale);-webkit-mask:var(--_deco-mask) center / contain no-repeat;mask:var(--_deco-mask) center / contain no-repeat}.c--chat--speak{--_deco-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8"><path d="M8,8L8,8C7.4,4.8,5.4,2,2.6,0.4L2,0h6V8z"/></svg>')}[data-chat-dir=start]{--_deco-inset-x: auto calc(100% - 1px) }[data-chat-dir=end]{--_deco-scale: -1 1;--_deco-inset-x: calc(100% - 1px) auto;grid-template-areas:"name avatar" "body avatar";grid-template-columns:1fr auto}}.c--chat--speak[data-chat-dir=start]>div>.c--chat_content{border-start-start-radius:0}.c--chat--speak[data-chat-dir=end]>div>.c--chat_content{border-start-end-radius:0}@layer lism-modules{.c--shapeDivider{--level: 0;--_inner-offset: 0px;--_inner-stretch: 1;--_flipX: 1;--_flipY: 1;height:clamp(calc(5px * var(--level)),calc(1cqw * var(--level)),calc(12px * var(--level)));overflow:visible}.c--shapeDivider:where([data-flip^=X]){--_flipX: -1}.c--shapeDivider:where([data-flip$=Y]){--_flipY: -1}.c--shapeDivider_inner{--offsetY: .5px;--offsetX: -.5px;height:100%;width:calc(100% + 1px);scale:calc(var(--_flipX) * var(--_inner-stretch)) var(--_flipY);translate:calc(var(--offsetX) + var(--_inner-offset)) calc(var(--offsetY) * var(--_flipY))}.c--shapeDivider_svg{display:block}:where([data-has-animation=true]) .c--shapeDivider_svg{transform-origin:100% 0;animation:lism--slideShape 12s infinite alternate linear}}@keyframes lism--slideShape{0%{transform:scaleX(4)}to{transform:scaleX(4) translate(75%)}}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lism-css/ui",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "UI components by
|
|
3
|
+
"version": "0.12.0",
|
|
4
|
+
"description": "UI components for React and Astro, powered by Lism CSS.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "ddryo",
|
|
7
7
|
"url": "https://github.com/ddryo"
|
|
@@ -21,11 +21,10 @@
|
|
|
21
21
|
"exports": {
|
|
22
22
|
"./react": {
|
|
23
23
|
"import": "./dist/components/react.js",
|
|
24
|
-
"types": "./dist/components/
|
|
24
|
+
"types": "./dist/components/react.d.ts"
|
|
25
25
|
},
|
|
26
26
|
"./astro": {
|
|
27
|
-
"import": "./src/components/astro.
|
|
28
|
-
"types": "./dist/components/index.d.ts"
|
|
27
|
+
"import": "./src/components/astro.ts"
|
|
29
28
|
},
|
|
30
29
|
"./scripts/*": "./dist/scripts/*.js",
|
|
31
30
|
"./style.css": "./dist/style.css"
|
|
@@ -39,9 +38,13 @@
|
|
|
39
38
|
"url": "https://github.com/lism-css/lism-css/issues"
|
|
40
39
|
},
|
|
41
40
|
"dependencies": {
|
|
42
|
-
"lism-css": "0.
|
|
41
|
+
"lism-css": "0.12.0"
|
|
43
42
|
},
|
|
44
43
|
"devDependencies": {
|
|
44
|
+
"@storybook/react-vite": "^10.3.3",
|
|
45
|
+
"eslint": "^9.39.4",
|
|
46
|
+
"storybook": "^10.3.3",
|
|
47
|
+
"stylelint": "^17.4.0",
|
|
45
48
|
"@babel/cli": "^7.28.6",
|
|
46
49
|
"@babel/core": "^7.29.0",
|
|
47
50
|
"@babel/preset-env": "^7.29.0",
|
|
@@ -67,6 +70,10 @@
|
|
|
67
70
|
"format": "prettier --write . --ignore-path ../../.prettierignore",
|
|
68
71
|
"dev": "vite",
|
|
69
72
|
"build": "vite build && pnpm build:css",
|
|
70
|
-
"build:css": "node build-css.js"
|
|
73
|
+
"build:css": "node build-css.js",
|
|
74
|
+
"typecheck": "tsc --noEmit",
|
|
75
|
+
"lint": "pnpm lint:eslint && pnpm lint:style",
|
|
76
|
+
"lint:eslint": "eslint '**/*.{js,mjs,ts,tsx}'",
|
|
77
|
+
"lint:style": "stylelint '**/*.{css,scss}'"
|
|
71
78
|
}
|
|
72
79
|
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { expect, userEvent, within, waitFor } from 'storybook/test';
|
|
3
|
+
import Accordion from './react';
|
|
4
|
+
|
|
5
|
+
const meta: Meta = {
|
|
6
|
+
title: 'UI/Accordion',
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj;
|
|
12
|
+
|
|
13
|
+
export const Default: Story = {
|
|
14
|
+
render: () => (
|
|
15
|
+
<Accordion.Root>
|
|
16
|
+
<Accordion.Item>
|
|
17
|
+
<Accordion.Heading>
|
|
18
|
+
<Accordion.Button>アコーディオン 1</Accordion.Button>
|
|
19
|
+
</Accordion.Heading>
|
|
20
|
+
<Accordion.Panel>
|
|
21
|
+
<p>アコーディオン 1 のコンテンツです。</p>
|
|
22
|
+
</Accordion.Panel>
|
|
23
|
+
</Accordion.Item>
|
|
24
|
+
</Accordion.Root>
|
|
25
|
+
),
|
|
26
|
+
play: async ({ canvasElement }) => {
|
|
27
|
+
const canvas = within(canvasElement);
|
|
28
|
+
const button = canvas.getByRole('button');
|
|
29
|
+
|
|
30
|
+
// 初期状態: 閉じている
|
|
31
|
+
await expect(button).toHaveAttribute('aria-expanded', 'false');
|
|
32
|
+
|
|
33
|
+
// クリックで開く
|
|
34
|
+
await userEvent.click(button);
|
|
35
|
+
await waitFor(() => expect(button).toHaveAttribute('aria-expanded', 'true'));
|
|
36
|
+
|
|
37
|
+
// 再クリックで閉じる
|
|
38
|
+
await userEvent.click(button);
|
|
39
|
+
await waitFor(() => expect(button).toHaveAttribute('aria-expanded', 'false'));
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const Multiple: Story = {
|
|
44
|
+
name: '複数アイテム',
|
|
45
|
+
render: () => (
|
|
46
|
+
<Accordion.Root>
|
|
47
|
+
{[1, 2, 3].map((i) => (
|
|
48
|
+
<Accordion.Item key={i}>
|
|
49
|
+
<Accordion.Heading>
|
|
50
|
+
<Accordion.Button>アコーディオン {i}</Accordion.Button>
|
|
51
|
+
</Accordion.Heading>
|
|
52
|
+
<Accordion.Panel>
|
|
53
|
+
<p>アコーディオン {i} のコンテンツです。</p>
|
|
54
|
+
</Accordion.Panel>
|
|
55
|
+
</Accordion.Item>
|
|
56
|
+
))}
|
|
57
|
+
</Accordion.Root>
|
|
58
|
+
),
|
|
59
|
+
play: async ({ canvasElement }) => {
|
|
60
|
+
const canvas = within(canvasElement);
|
|
61
|
+
const buttons = canvas.getAllByRole('button');
|
|
62
|
+
const [btn1, btn2] = buttons;
|
|
63
|
+
|
|
64
|
+
// 1つ目を開く
|
|
65
|
+
await userEvent.click(btn1);
|
|
66
|
+
await waitFor(() => expect(btn1).toHaveAttribute('aria-expanded', 'true'));
|
|
67
|
+
|
|
68
|
+
// 2つ目を開く → 1つ目が閉じる(allowMultiple なし)
|
|
69
|
+
await userEvent.click(btn2);
|
|
70
|
+
await waitFor(() => expect(btn2).toHaveAttribute('aria-expanded', 'true'));
|
|
71
|
+
await waitFor(() => expect(btn1).toHaveAttribute('aria-expanded', 'false'));
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export const AllowMultiple: Story = {
|
|
76
|
+
name: 'allowMultiple(複数同時展開可)',
|
|
77
|
+
render: () => (
|
|
78
|
+
<Accordion.Root allowMultiple>
|
|
79
|
+
{[1, 2, 3].map((i) => (
|
|
80
|
+
<Accordion.Item key={i}>
|
|
81
|
+
<Accordion.Heading>
|
|
82
|
+
<Accordion.Button>アコーディオン {i}</Accordion.Button>
|
|
83
|
+
</Accordion.Heading>
|
|
84
|
+
<Accordion.Panel>
|
|
85
|
+
<p>アコーディオン {i} のコンテンツです。複数同時に開けます。</p>
|
|
86
|
+
</Accordion.Panel>
|
|
87
|
+
</Accordion.Item>
|
|
88
|
+
))}
|
|
89
|
+
</Accordion.Root>
|
|
90
|
+
),
|
|
91
|
+
play: async ({ canvasElement }) => {
|
|
92
|
+
const canvas = within(canvasElement);
|
|
93
|
+
const buttons = canvas.getAllByRole('button');
|
|
94
|
+
const [btn1, btn2] = buttons;
|
|
95
|
+
|
|
96
|
+
// 1つ目を開く
|
|
97
|
+
await userEvent.click(btn1);
|
|
98
|
+
await waitFor(() => expect(btn1).toHaveAttribute('aria-expanded', 'true'));
|
|
99
|
+
|
|
100
|
+
// 2つ目を開く → 1つ目はそのまま開いている
|
|
101
|
+
await userEvent.click(btn2);
|
|
102
|
+
await waitFor(() => expect(btn2).toHaveAttribute('aria-expanded', 'true'));
|
|
103
|
+
await expect(btn1).toHaveAttribute('aria-expanded', 'true');
|
|
104
|
+
},
|
|
105
|
+
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { Lism } from 'lism-css/astro';
|
|
3
3
|
import Icon from './Icon.astro';
|
|
4
|
-
import {
|
|
4
|
+
import { getButtonProps } from '../getProps';
|
|
5
5
|
|
|
6
6
|
// interface Props extends LismProps {}
|
|
7
7
|
const { isOpen = false, accID = '__LISM_ACC_ID__', ...props } = Astro.props || {};
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
<Lism {...
|
|
10
|
+
<Lism {...getButtonProps(props)} aria-controls={accID} aria-expanded={isOpen ? 'true' : 'false'}>
|
|
11
11
|
<slot />
|
|
12
12
|
<Icon />
|
|
13
13
|
</Lism>
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import atts from 'lism-css/lib/helper/atts';
|
|
2
|
+
import mergeSet from 'lism-css/lib/helper/mergeSet';
|
|
3
|
+
|
|
4
|
+
export type AccordionRootProps = {
|
|
5
|
+
lismClass?: string;
|
|
6
|
+
allowMultiple?: boolean;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type AccordionItemProps = {
|
|
11
|
+
lismClass?: string;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type AccordionHeadingProps = {
|
|
16
|
+
as?: string;
|
|
17
|
+
role?: string;
|
|
18
|
+
lismClass?: string;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type AccordionPanelProps = {
|
|
23
|
+
lismClass?: string;
|
|
24
|
+
_contextID?: string;
|
|
25
|
+
accID?: string;
|
|
26
|
+
isOpen?: boolean;
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export function getRootProps({ lismClass, allowMultiple, ...props }: AccordionRootProps) {
|
|
31
|
+
props.lismClass = atts(lismClass, 'c--accordion');
|
|
32
|
+
if (allowMultiple) props['data-allow-multiple'] = '';
|
|
33
|
+
return props;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function getItemProps({ lismClass, ...props }: AccordionItemProps) {
|
|
37
|
+
props.lismClass = atts(lismClass, 'c--accordion_item');
|
|
38
|
+
return props;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function getHeadingProps({ as = 'div', role, lismClass, set, unset, ...props }: AccordionHeadingProps) {
|
|
42
|
+
const returnProps = {
|
|
43
|
+
lismClass: atts(lismClass, 'c--accordion_heading'),
|
|
44
|
+
as,
|
|
45
|
+
set: mergeSet('plain', set, unset),
|
|
46
|
+
...props,
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
if (returnProps.as === 'div') {
|
|
50
|
+
(returnProps as Record<string, unknown>).role = role ?? 'heading';
|
|
51
|
+
}
|
|
52
|
+
return returnProps;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function getButtonProps({ set, unset, ...props }: Record<string, unknown>) {
|
|
56
|
+
return {
|
|
57
|
+
lismClass: 'c--accordion_button',
|
|
58
|
+
as: 'button',
|
|
59
|
+
layout: 'flex',
|
|
60
|
+
set: mergeSet('plain', set, unset),
|
|
61
|
+
g: '10',
|
|
62
|
+
w: '100%',
|
|
63
|
+
ai: 'center',
|
|
64
|
+
jc: 'between',
|
|
65
|
+
...props,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function getPanelProps({ lismClass, _contextID, accID = '__LISM_ACC_ID__', isOpen = false, ...props }: AccordionPanelProps) {
|
|
70
|
+
const panelProps = {
|
|
71
|
+
lismClass: atts(lismClass, 'c--accordion_panel'),
|
|
72
|
+
id: _contextID || accID,
|
|
73
|
+
hidden: isOpen ? undefined : ('until-found' as unknown as boolean),
|
|
74
|
+
pos: 'relative',
|
|
75
|
+
ov: 'hidden',
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const contentProps = { lismClass: 'c--accordion_content', layout: 'flow' as const, ...props };
|
|
79
|
+
|
|
80
|
+
return { panelProps, contentProps };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export const defaultProps = {
|
|
84
|
+
icon: {
|
|
85
|
+
lismClass: 'c--accordion_icon a--icon',
|
|
86
|
+
as: 'span',
|
|
87
|
+
pi: 'center',
|
|
88
|
+
fxsh: '0',
|
|
89
|
+
'aria-hidden': 'true',
|
|
90
|
+
},
|
|
91
|
+
} as const;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Lism } from 'lism-css/react';
|
|
1
|
+
import { Lism, type LismComponentProps } from 'lism-css/react';
|
|
2
2
|
import { defaultProps } from '../getProps';
|
|
3
3
|
|
|
4
4
|
// CSS疑似要素(::before / ::after)でアイコンを描画するコンポーネント
|
|
5
|
-
export default function AccIcon(props) {
|
|
5
|
+
export default function AccIcon(props: LismComponentProps) {
|
|
6
6
|
return <Lism {...defaultProps.icon} {...props} />;
|
|
7
7
|
}
|