jvetrau-ds 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/button/button-presentation.cjs +17 -0
- package/components/button/button-presentation.cjs.map +1 -0
- package/components/button/button-presentation.d.ts +1 -0
- package/components/button/button-presentation.js +15 -0
- package/components/button/button-presentation.js.map +1 -0
- package/components/button/index.cjs +11 -1
- package/components/button/index.d.ts +1 -0
- package/components/button/index.js +1 -0
- package/components/flip-list/flip-list.cjs +5 -5
- package/components/flip-list/flip-list.cjs.map +1 -1
- package/components/flip-list/flip-list.css +20 -24
- package/components/flip-list/flip-list.js +4 -5
- package/components/flip-list/flip-list.js.map +1 -1
- package/components/index.cjs +5 -1
- package/components/index.d.ts +3 -2
- package/components/index.js +1 -1
- package/components/tag/tag.cjs +9 -4
- package/components/tag/tag.cjs.map +1 -1
- package/components/tag/tag.css +40 -27
- package/components/tag/tag.d.ts +2 -1
- package/components/tag/tag.js +9 -4
- package/components/tag/tag.js.map +1 -1
- package/index.cjs +4 -0
- package/index.d.ts +2 -2
- package/index.js +1 -1
- package/package.json +1 -1
- package/styles.css +59 -50
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var classnames = require('../helpers/classnames');
|
|
4
|
+
|
|
5
|
+
function buttonLink(className = "") {
|
|
6
|
+
return classnames.classnames(
|
|
7
|
+
"button",
|
|
8
|
+
className,
|
|
9
|
+
{
|
|
10
|
+
"button--link": true
|
|
11
|
+
}
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
exports.buttonLink = buttonLink;
|
|
16
|
+
//# sourceMappingURL=button-presentation.cjs.map
|
|
17
|
+
//# sourceMappingURL=button-presentation.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/button/button-presentation.ts"],"names":["classnames"],"mappings":";;;;AAEO,SAAS,UAAA,CACd,YAAY,EAAA,EACJ;AACR,EAAA,OAAOA,qBAAA;AAAA,IACL,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,cAAA,EAAgB;AAAA;AAClB,GACF;AACF","file":"button-presentation.cjs","sourcesContent":["import { classnames } from '../helpers/classnames';\n\nexport function buttonLink(\n className = '',\n): string {\n return classnames(\n 'button',\n className,\n {\n 'button--link': true,\n },\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function buttonLink(className?: string): string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { classnames } from '../helpers/classnames';
|
|
2
|
+
|
|
3
|
+
function buttonLink(className = "") {
|
|
4
|
+
return classnames(
|
|
5
|
+
"button",
|
|
6
|
+
className,
|
|
7
|
+
{
|
|
8
|
+
"button--link": true
|
|
9
|
+
}
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { buttonLink };
|
|
14
|
+
//# sourceMappingURL=button-presentation.js.map
|
|
15
|
+
//# sourceMappingURL=button-presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/button/button-presentation.ts"],"names":[],"mappings":";;AAEO,SAAS,UAAA,CACd,YAAY,EAAA,EACJ;AACR,EAAA,OAAO,UAAA;AAAA,IACL,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,cAAA,EAAgB;AAAA;AAClB,GACF;AACF","file":"button-presentation.js","sourcesContent":["import { classnames } from '../helpers/classnames';\n\nexport function buttonLink(\n className = '',\n): string {\n return classnames(\n 'button',\n className,\n {\n 'button--link': true,\n },\n );\n}\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
3
5
|
var button = require('./button');
|
|
6
|
+
var buttonPresentation = require('./button-presentation');
|
|
4
7
|
|
|
5
8
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
9
|
|
|
@@ -8,6 +11,13 @@ var button__default = /*#__PURE__*/_interopDefault(button);
|
|
|
8
11
|
|
|
9
12
|
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
Object.defineProperty(exports, "default", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return button__default.default; }
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "buttonLink", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return buttonPresentation.buttonLink; }
|
|
21
|
+
});
|
|
12
22
|
//# sourceMappingURL=index.cjs.map
|
|
13
23
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -4,10 +4,12 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
require('./flip-list.css');
|
|
6
6
|
var classnames = require('../helpers/classnames');
|
|
7
|
+
var Tag = require('../tag');
|
|
7
8
|
|
|
8
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
10
|
|
|
10
11
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
12
|
+
var Tag__default = /*#__PURE__*/_interopDefault(Tag);
|
|
11
13
|
|
|
12
14
|
function hasContent(value) {
|
|
13
15
|
return value !== null && value !== void 0;
|
|
@@ -111,6 +113,7 @@ const FlipList = ({
|
|
|
111
113
|
ref: item.id === initialOpenItemIdRef.current ? initialOpenItemRef : void 0,
|
|
112
114
|
className: itemClasses,
|
|
113
115
|
children: [
|
|
116
|
+
hasStatus && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flip-list__status", children: /* @__PURE__ */ jsxRuntime.jsx(Tag__default.default, { children: item.status }) }),
|
|
114
117
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
115
118
|
"button",
|
|
116
119
|
{
|
|
@@ -121,11 +124,8 @@ const FlipList = ({
|
|
|
121
124
|
"aria-controls": contentId,
|
|
122
125
|
onClick: () => toggleItem(item.id),
|
|
123
126
|
children: [
|
|
124
|
-
|
|
125
|
-
/* @__PURE__ */ jsxRuntime.
|
|
126
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__title", children: item.title }),
|
|
127
|
-
hasMeta && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__meta", children: item.meta })
|
|
128
|
-
] })
|
|
127
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__title", children: item.title }),
|
|
128
|
+
hasMeta && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__meta", children: item.meta })
|
|
129
129
|
]
|
|
130
130
|
}
|
|
131
131
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":["React","classnames","jsx","jsxs"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":["React","classnames","jsx","jsxs","Tag"],"mappings":";;;;;;;;;;;;;AAqEA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OAAO,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA;AACrC;AAEA,SAAS,mBAAA,CACP,OACA,MAAA,EACY;AACZ,EAAA,IACE,MAAA,KAAW,IAAA,IACX,MAAA,KAAW,MAAA,EACX;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,kBAAkB,KAAA,CAAM,IAAA;AAAA,IAC5B,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO;AAAA,GACxB;AAEA,EAAA,OAAO,kBACH,MAAA,GACA,IAAA;AACN;AAEA,MAAM,WAAoC,CAAC;AAAA,EACzC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAA,GAAsB,KAAA;AAAA,EACtB,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,WAAA,GAAcA,uBAAM,KAAA,EAAM;AAEhC,EAAA,MAAM,eACJ,MAAA,KAAW,MAAA;AAEb,EAAA,MAAM,uBACJA,sBAAA,CAAM,MAAA;AAAA,IACJ,mBAAA;AAAA,MACE,KAAA;AAAA,MACA,eACI,MAAA,GACA;AAAA;AACN,GACF;AAEF,EAAA,MAAM,wBAAA,GACJA,sBAAA,CAAM,MAAA,CAAO,mBAAmB,CAAA;AAElC,EAAA,MAAM,qBACJA,sBAAA,CAAM,MAAA;AAAA,IACJ;AAAA,GACF;AAEF,EAAA,MAAM,uBAAA,GACJA,sBAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAEpB,EAAA,MAAM;AAAA,IACJ,sBAAA;AAAA,IACA;AAAA,MACEA,sBAAA,CAAM,QAAA;AAAA,IAAqB,MAC7B,mBAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,kBAAA,GACJ,mBAAA;AAAA,IACE,KAAA;AAAA,IACA,eACI,MAAA,GACA;AAAA,GACN;AAEF,EAAAA,sBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IACE,uBAAA,CAAwB,OAAA,IACxB,CAAC,wBAAA,CAAyB,OAAA,IAC1B,qBAAqB,OAAA,KAAY,IAAA,IACjC,CAAC,kBAAA,CAAmB,OAAA,EACpB;AACA,MAAA;AAAA,IACF;AAEA,IAAA,uBAAA,CAAwB,OAAA,GAAU,IAAA;AAElC,IAAA,kBAAA,CAAmB,QAAQ,cAAA,CAAe;AAAA,MACxC,QAAA,EAAU,MAAA;AAAA,MACV,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,OAAA,GAAUC,qBAAA;AAAA,IACd,WAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,UAAA,GAAa,CACjB,MAAA,KACG;AACH,IAAA,MAAM,cAAA,GACJ,kBAAA,KAAuB,MAAA,GACnB,IAAA,GACA,MAAA;AAEN,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,yBAAA;AAAA,QACE;AAAA,OACF;AAAA,IACF;AAEA,IAAA,YAAA,GAAe,cAAc,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,cAAA,CAAC,SAAI,SAAA,EAAU,kBAAA,EACZ,gBAAM,GAAA,CAAI,CAAC,MAAM,SAAA,KAAc;AAC9B,QAAA,MAAM,MAAA,GACJ,uBAAuB,IAAA,CAAK,EAAA;AAE9B,QAAA,MAAM,SAAA,GAAY,UAAA;AAAA,UAChB,IAAA,CAAK;AAAA,SACP;AAEA,QAAA,MAAM,OAAA,GAAU,UAAA;AAAA,UACd,IAAA,CAAK;AAAA,SACP;AAEA,QAAA,MAAM,SAAA,GACJ,CAAA,EAAG,WAAW,CAAA,SAAA,EAAY,SAAS,CAAA,CAAA;AAErC,QAAA,MAAM,SAAA,GACJ,CAAA,EAAG,WAAW,CAAA,SAAA,EAAY,SAAS,CAAA,CAAA;AAErC,QAAA,MAAM,WAAA,GAAcD,qBAAA;AAAA,UAClB,iBAAA;AAAA,UACA,EAAA;AAAA,UACA;AAAA,YACE,uBAAA,EACE;AAAA;AACJ,SACF;AAEA,QAAA,uBACEE,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,GAAA,EACE,IAAA,CAAK,EAAA,KACL,oBAAA,CAAqB,UACjB,kBAAA,GACA,MAAA;AAAA,YAEN,SAAA,EAAW,WAAA;AAAA,YAEV,QAAA,EAAA;AAAA,cAAA,SAAA,oBACCD,cAAA,CAAC,SAAI,SAAA,EAAU,mBAAA,EACb,yCAACE,oBAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,QACR,CAAA,EACF,CAAA;AAAA,8BAGFD,eAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oBAAA;AAAA,kBACV,EAAA,EAAI,SAAA;AAAA,kBACJ,IAAA,EAAK,QAAA;AAAA,kBACL,eAAA,EAAe,MAAA;AAAA,kBACf,eAAA,EAAe,SAAA;AAAA,kBACf,OAAA,EAAS,MACP,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAAA,kBAGpB,QAAA,EAAA;AAAA,oCAAAD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA;AAAA,oBAEC,2BACCA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EACb,eAAK,IAAA,EACR;AAAA;AAAA;AAAA,eAEJ;AAAA,8BAEAA,cAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oBAAA;AAAA,kBACV,EAAA,EAAI,SAAA;AAAA,kBACJ,iBAAA,EAAiB,SAAA;AAAA,kBACjB,QAAQ,CAAC,MAAA;AAAA,kBAER,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA,WAAA;AAAA,UA7CK,IAAA,CAAK;AAAA,SA8CZ;AAAA,MAEJ,CAAC,CAAA,EACH;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,iBAAA,GAAQ","file":"flip-list.cjs","sourcesContent":["import React from 'react';\n\nimport './flip-list.css';\nimport { classnames } from '../helpers/classnames';\nimport Tag from '../tag';\n\nexport interface FlipListItem {\n id: React.Key;\n title: React.ReactNode;\n status?: React.ReactNode;\n meta?: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport interface FlipListProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n items: FlipListItem[];\n\n /**\n * Currently opened item in controlled mode.\n *\n * `null` means that all items are closed.\n *\n * When this prop is provided, FlipList does not\n * own the opened-item state.\n */\n openId?: React.Key | null;\n\n /**\n * Item opened during the initial render\n * in uncontrolled mode.\n *\n * Later changes to this prop do not control\n * the component state.\n */\n defaultOpenId?: React.Key;\n\n /**\n * Called when the user requests a change\n * of the opened item.\n *\n * Receives the item id when an item is opened,\n * and `null` when the currently opened item\n * is closed.\n */\n onOpenChange?: (\n id: React.Key | null,\n ) => void;\n\n /**\n * Scrolls the item that is open during\n * the initial render into view once.\n *\n * In uncontrolled mode, the initial item comes\n * from `defaultOpenId`.\n *\n * In controlled mode, the initial item comes\n * from `openId`.\n *\n * Later state changes never trigger scrolling.\n */\n scrollToInitialOpen?: boolean;\n}\n\ntype OpenItemId = React.Key | null;\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nfunction normalizeOpenItemId(\n items: FlipListItem[],\n openId: OpenItemId | undefined,\n): OpenItemId {\n if (\n openId === null ||\n openId === undefined\n ) {\n return null;\n }\n\n const hasMatchingItem = items.some(\n (item) => item.id === openId,\n );\n\n return hasMatchingItem\n ? openId\n : null;\n}\n\nconst FlipList: React.FC<FlipListProps> = ({\n items,\n openId,\n defaultOpenId,\n onOpenChange,\n scrollToInitialOpen = false,\n className = '',\n ...props\n}) => {\n const componentId = React.useId();\n\n const isControlled =\n openId !== undefined;\n\n const initialOpenItemIdRef =\n React.useRef<OpenItemId>(\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : defaultOpenId,\n ),\n );\n\n const shouldScrollInitiallyRef =\n React.useRef(scrollToInitialOpen);\n\n const initialOpenItemRef =\n React.useRef<HTMLDivElement | null>(\n null,\n );\n\n const hasScrolledInitiallyRef =\n React.useRef(false);\n\n const [\n uncontrolledOpenItemId,\n setUncontrolledOpenItemId,\n ] = React.useState<OpenItemId>(() =>\n normalizeOpenItemId(\n items,\n defaultOpenId,\n ),\n );\n\n const resolvedOpenItemId =\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : uncontrolledOpenItemId,\n );\n\n React.useEffect(() => {\n if (\n hasScrolledInitiallyRef.current ||\n !shouldScrollInitiallyRef.current ||\n initialOpenItemIdRef.current === null ||\n !initialOpenItemRef.current\n ) {\n return;\n }\n\n hasScrolledInitiallyRef.current = true;\n\n initialOpenItemRef.current.scrollIntoView({\n behavior: 'auto',\n block: 'start',\n });\n }, []);\n\n if (items.length === 0) {\n return null;\n }\n\n const classes = classnames(\n 'flip-list',\n className,\n {},\n );\n\n const toggleItem = (\n itemId: React.Key,\n ) => {\n const nextOpenItemId =\n resolvedOpenItemId === itemId\n ? null\n : itemId;\n\n if (!isControlled) {\n setUncontrolledOpenItemId(\n nextOpenItemId,\n );\n }\n\n onOpenChange?.(nextOpenItemId);\n };\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"flip-list__items\">\n {items.map((item, itemIndex) => {\n const isOpen =\n resolvedOpenItemId === item.id;\n\n const hasStatus = hasContent(\n item.status,\n );\n\n const hasMeta = hasContent(\n item.meta,\n );\n\n const triggerId =\n `${componentId}-trigger-${itemIndex}`;\n\n const contentId =\n `${componentId}-content-${itemIndex}`;\n\n const itemClasses = classnames(\n 'flip-list__item',\n '',\n {\n 'flip-list__item--open':\n isOpen,\n },\n );\n\n return (\n <div\n key={item.id}\n ref={\n item.id ===\n initialOpenItemIdRef.current\n ? initialOpenItemRef\n : undefined\n }\n className={itemClasses}\n >\n {hasStatus && (\n <div className=\"flip-list__status\">\n <Tag>\n {item.status}\n </Tag>\n </div>\n )}\n\n <button\n className=\"flip-list__trigger\"\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={contentId}\n onClick={() =>\n toggleItem(item.id)\n }\n >\n <span className=\"flip-list__title\">\n {item.title}\n </span>\n\n {hasMeta && (\n <span className=\"flip-list__meta\">\n {item.meta}\n </span>\n )}\n </button>\n\n <div\n className=\"flip-list__content\"\n id={contentId}\n aria-labelledby={triggerId}\n hidden={!isOpen}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default FlipList;\n"]}
|
|
@@ -113,7 +113,6 @@
|
|
|
113
113
|
/* typography */
|
|
114
114
|
|
|
115
115
|
/* size */
|
|
116
|
-
gap: var(--flip-list-open-content-gap);
|
|
117
116
|
|
|
118
117
|
/* border */
|
|
119
118
|
|
|
@@ -133,8 +132,9 @@
|
|
|
133
132
|
|
|
134
133
|
/* size */
|
|
135
134
|
display: flex;
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
align-items: center;
|
|
136
|
+
justify-content: space-between;
|
|
137
|
+
gap: var(--flip-list-trigger-column-gap);
|
|
138
138
|
width: 100%;
|
|
139
139
|
min-width: 0;
|
|
140
140
|
max-width: 100%;
|
|
@@ -195,27 +195,6 @@
|
|
|
195
195
|
/* motion */
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
.flip-list__main {
|
|
199
|
-
/* color */
|
|
200
|
-
|
|
201
|
-
/* typography */
|
|
202
|
-
|
|
203
|
-
/* size */
|
|
204
|
-
display: flex;
|
|
205
|
-
align-items: flex-start;
|
|
206
|
-
justify-content: space-between;
|
|
207
|
-
gap: var(--flip-list-trigger-column-gap);
|
|
208
|
-
width: 100%;
|
|
209
|
-
min-width: 0;
|
|
210
|
-
max-width: 100%;
|
|
211
|
-
|
|
212
|
-
/* border */
|
|
213
|
-
|
|
214
|
-
/* depth */
|
|
215
|
-
|
|
216
|
-
/* motion */
|
|
217
|
-
}
|
|
218
|
-
|
|
219
198
|
.flip-list__title {
|
|
220
199
|
/* color */
|
|
221
200
|
color: inherit;
|
|
@@ -384,6 +363,23 @@
|
|
|
384
363
|
/* motion */
|
|
385
364
|
}
|
|
386
365
|
|
|
366
|
+
.flip-list__item--open
|
|
367
|
+
.flip-list__content {
|
|
368
|
+
/* color */
|
|
369
|
+
|
|
370
|
+
/* typography */
|
|
371
|
+
|
|
372
|
+
/* size */
|
|
373
|
+
margin-top:
|
|
374
|
+
var(--flip-list-open-content-gap);
|
|
375
|
+
|
|
376
|
+
/* border */
|
|
377
|
+
|
|
378
|
+
/* depth */
|
|
379
|
+
|
|
380
|
+
/* motion */
|
|
381
|
+
}
|
|
382
|
+
|
|
387
383
|
.flip-list__content[hidden] {
|
|
388
384
|
/* color */
|
|
389
385
|
|
|
@@ -2,6 +2,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import './flip-list.css';
|
|
4
4
|
import { classnames } from '../helpers/classnames';
|
|
5
|
+
import Tag from '../tag';
|
|
5
6
|
|
|
6
7
|
function hasContent(value) {
|
|
7
8
|
return value !== null && value !== void 0;
|
|
@@ -105,6 +106,7 @@ const FlipList = ({
|
|
|
105
106
|
ref: item.id === initialOpenItemIdRef.current ? initialOpenItemRef : void 0,
|
|
106
107
|
className: itemClasses,
|
|
107
108
|
children: [
|
|
109
|
+
hasStatus && /* @__PURE__ */ jsx("div", { className: "flip-list__status", children: /* @__PURE__ */ jsx(Tag, { children: item.status }) }),
|
|
108
110
|
/* @__PURE__ */ jsxs(
|
|
109
111
|
"button",
|
|
110
112
|
{
|
|
@@ -115,11 +117,8 @@ const FlipList = ({
|
|
|
115
117
|
"aria-controls": contentId,
|
|
116
118
|
onClick: () => toggleItem(item.id),
|
|
117
119
|
children: [
|
|
118
|
-
|
|
119
|
-
/* @__PURE__ */
|
|
120
|
-
/* @__PURE__ */ jsx("span", { className: "flip-list__title", children: item.title }),
|
|
121
|
-
hasMeta && /* @__PURE__ */ jsx("span", { className: "flip-list__meta", children: item.meta })
|
|
122
|
-
] })
|
|
120
|
+
/* @__PURE__ */ jsx("span", { className: "flip-list__title", children: item.title }),
|
|
121
|
+
hasMeta && /* @__PURE__ */ jsx("span", { className: "flip-list__meta", children: item.meta })
|
|
123
122
|
]
|
|
124
123
|
}
|
|
125
124
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":[],"mappings":"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","file":"flip-list.js","sourcesContent":["import React from 'react';\n\nimport './flip-list.css';\nimport { classnames } from '../helpers/classnames';\nimport Tag from '../tag';\n\nexport interface FlipListItem {\n id: React.Key;\n title: React.ReactNode;\n status?: React.ReactNode;\n meta?: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport interface FlipListProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n items: FlipListItem[];\n\n /**\n * Currently opened item in controlled mode.\n *\n * `null` means that all items are closed.\n *\n * When this prop is provided, FlipList does not\n * own the opened-item state.\n */\n openId?: React.Key | null;\n\n /**\n * Item opened during the initial render\n * in uncontrolled mode.\n *\n * Later changes to this prop do not control\n * the component state.\n */\n defaultOpenId?: React.Key;\n\n /**\n * Called when the user requests a change\n * of the opened item.\n *\n * Receives the item id when an item is opened,\n * and `null` when the currently opened item\n * is closed.\n */\n onOpenChange?: (\n id: React.Key | null,\n ) => void;\n\n /**\n * Scrolls the item that is open during\n * the initial render into view once.\n *\n * In uncontrolled mode, the initial item comes\n * from `defaultOpenId`.\n *\n * In controlled mode, the initial item comes\n * from `openId`.\n *\n * Later state changes never trigger scrolling.\n */\n scrollToInitialOpen?: boolean;\n}\n\ntype OpenItemId = React.Key | null;\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nfunction normalizeOpenItemId(\n items: FlipListItem[],\n openId: OpenItemId | undefined,\n): OpenItemId {\n if (\n openId === null ||\n openId === undefined\n ) {\n return null;\n }\n\n const hasMatchingItem = items.some(\n (item) => item.id === openId,\n );\n\n return hasMatchingItem\n ? openId\n : null;\n}\n\nconst FlipList: React.FC<FlipListProps> = ({\n items,\n openId,\n defaultOpenId,\n onOpenChange,\n scrollToInitialOpen = false,\n className = '',\n ...props\n}) => {\n const componentId = React.useId();\n\n const isControlled =\n openId !== undefined;\n\n const initialOpenItemIdRef =\n React.useRef<OpenItemId>(\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : defaultOpenId,\n ),\n );\n\n const shouldScrollInitiallyRef =\n React.useRef(scrollToInitialOpen);\n\n const initialOpenItemRef =\n React.useRef<HTMLDivElement | null>(\n null,\n );\n\n const hasScrolledInitiallyRef =\n React.useRef(false);\n\n const [\n uncontrolledOpenItemId,\n setUncontrolledOpenItemId,\n ] = React.useState<OpenItemId>(() =>\n normalizeOpenItemId(\n items,\n defaultOpenId,\n ),\n );\n\n const resolvedOpenItemId =\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : uncontrolledOpenItemId,\n );\n\n React.useEffect(() => {\n if (\n hasScrolledInitiallyRef.current ||\n !shouldScrollInitiallyRef.current ||\n initialOpenItemIdRef.current === null ||\n !initialOpenItemRef.current\n ) {\n return;\n }\n\n hasScrolledInitiallyRef.current = true;\n\n initialOpenItemRef.current.scrollIntoView({\n behavior: 'auto',\n block: 'start',\n });\n }, []);\n\n if (items.length === 0) {\n return null;\n }\n\n const classes = classnames(\n 'flip-list',\n className,\n {},\n );\n\n const toggleItem = (\n itemId: React.Key,\n ) => {\n const nextOpenItemId =\n resolvedOpenItemId === itemId\n ? null\n : itemId;\n\n if (!isControlled) {\n setUncontrolledOpenItemId(\n nextOpenItemId,\n );\n }\n\n onOpenChange?.(nextOpenItemId);\n };\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"flip-list__items\">\n {items.map((item, itemIndex) => {\n const isOpen =\n resolvedOpenItemId === item.id;\n\n const hasStatus = hasContent(\n item.status,\n );\n\n const hasMeta = hasContent(\n item.meta,\n );\n\n const triggerId =\n `${componentId}-trigger-${itemIndex}`;\n\n const contentId =\n `${componentId}-content-${itemIndex}`;\n\n const itemClasses = classnames(\n 'flip-list__item',\n '',\n {\n 'flip-list__item--open':\n isOpen,\n },\n );\n\n return (\n <div\n key={item.id}\n ref={\n item.id ===\n initialOpenItemIdRef.current\n ? initialOpenItemRef\n : undefined\n }\n className={itemClasses}\n >\n {hasStatus && (\n <div className=\"flip-list__status\">\n <Tag>\n {item.status}\n </Tag>\n </div>\n )}\n\n <button\n className=\"flip-list__trigger\"\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={contentId}\n onClick={() =>\n toggleItem(item.id)\n }\n >\n <span className=\"flip-list__title\">\n {item.title}\n </span>\n\n {hasMeta && (\n <span className=\"flip-list__meta\">\n {item.meta}\n </span>\n )}\n </button>\n\n <div\n className=\"flip-list__content\"\n id={contentId}\n aria-labelledby={triggerId}\n hidden={!isOpen}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default FlipList;\n"]}
|
package/components/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var button = require('./button
|
|
3
|
+
var button = require('./button');
|
|
4
4
|
var input = require('./input/input');
|
|
5
5
|
var textarea = require('./textarea/textarea');
|
|
6
6
|
var select = require('./select/select');
|
|
@@ -65,6 +65,10 @@ Object.defineProperty(exports, "Button", {
|
|
|
65
65
|
enumerable: true,
|
|
66
66
|
get: function () { return button__default.default; }
|
|
67
67
|
});
|
|
68
|
+
Object.defineProperty(exports, "buttonLink", {
|
|
69
|
+
enumerable: true,
|
|
70
|
+
get: function () { return button.buttonLink; }
|
|
71
|
+
});
|
|
68
72
|
Object.defineProperty(exports, "Input", {
|
|
69
73
|
enumerable: true,
|
|
70
74
|
get: function () { return input__default.default; }
|
package/components/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { default as Button } from './button
|
|
2
|
-
export
|
|
1
|
+
export { default as Button } from './button';
|
|
2
|
+
export { buttonLink, } from './button';
|
|
3
|
+
export type { ButtonProps, } from './button';
|
|
3
4
|
export { default as Input } from './input/input';
|
|
4
5
|
export type { InputProps } from './input/input';
|
|
5
6
|
export { default as Textarea } from './textarea/textarea';
|
package/components/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as Button } from './button
|
|
1
|
+
export { default as Button, buttonLink } from './button';
|
|
2
2
|
export { default as Input } from './input/input';
|
|
3
3
|
export { default as Textarea } from './textarea/textarea';
|
|
4
4
|
export { default as Select } from './select/select';
|
package/components/tag/tag.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var classnames = require('../helpers/classnames');
|
|
5
|
+
require('./tag.css');
|
|
5
6
|
|
|
6
7
|
const Tag = ({
|
|
7
8
|
context = "success",
|
|
@@ -9,11 +10,15 @@ const Tag = ({
|
|
|
9
10
|
children,
|
|
10
11
|
...props
|
|
11
12
|
}) => {
|
|
12
|
-
const classes = classnames.classnames(
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const classes = classnames.classnames(
|
|
14
|
+
"tag",
|
|
15
|
+
className,
|
|
16
|
+
{
|
|
17
|
+
[`tag--context-${context}`]: Boolean(context)
|
|
18
|
+
}
|
|
19
|
+
);
|
|
15
20
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16
|
-
"
|
|
21
|
+
"span",
|
|
17
22
|
{
|
|
18
23
|
className: classes,
|
|
19
24
|
...props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/tag/tag.tsx"],"names":["classnames","jsx"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/tag/tag.tsx"],"names":["classnames","jsx"],"mappings":";;;;;;AAUA,MAAM,MAA0B,CAAC;AAAA,EAC/B,OAAA,GAAU,SAAA;AAAA,EACV,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,KAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,CAAC,CAAA,aAAA,EAAgB,OAAO,CAAA,CAAE,GACxB,QAAQ,OAAO;AAAA;AACnB,GACF;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,WAAA,GAAQ","file":"tag.cjs","sourcesContent":["import React from 'react';\n\nimport { classnames } from '../helpers/classnames';\nimport './tag.css';\n\nexport interface TagProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n context?: 'success' | 'error' | 'warning';\n}\n\nconst Tag: React.FC<TagProps> = ({\n context = 'success',\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'tag',\n className,\n {\n [`tag--context-${context}`]:\n Boolean(context),\n },\n );\n\n return (\n <span\n className={classes}\n {...props}\n >\n {children}\n </span>\n );\n};\n\nexport default Tag;\n"]}
|
package/components/tag/tag.css
CHANGED
|
@@ -10,34 +10,43 @@
|
|
|
10
10
|
--tag-font-family: var(--font-note-family);
|
|
11
11
|
--tag-font-weight: var(--font-note-weight);
|
|
12
12
|
--tag-font-size: var(--font-note-size);
|
|
13
|
-
--tag-line-height:
|
|
14
|
-
|
|
13
|
+
--tag-line-height:
|
|
14
|
+
var(--font-note-line-height);
|
|
15
|
+
--tag-letter-spacing:
|
|
16
|
+
var(--font-note-letter-spacing);
|
|
15
17
|
|
|
16
18
|
font-family: var(--tag-font-family);
|
|
17
19
|
font-size: var(--tag-font-size);
|
|
18
20
|
font-weight: var(--tag-font-weight);
|
|
19
21
|
line-height: var(--tag-line-height);
|
|
20
|
-
letter-spacing:
|
|
22
|
+
letter-spacing:
|
|
23
|
+
var(--tag-letter-spacing);
|
|
21
24
|
|
|
22
25
|
/* size */
|
|
23
26
|
--tag-gap: 0;
|
|
24
27
|
--tag-height: auto;
|
|
25
|
-
--tag-padding-x:
|
|
26
|
-
|
|
28
|
+
--tag-padding-x:
|
|
29
|
+
var(--padding-tag-horz);
|
|
30
|
+
--tag-padding-y:
|
|
31
|
+
var(--padding-tag-vert);
|
|
27
32
|
|
|
28
33
|
display: inline-flex;
|
|
29
34
|
align-items: center;
|
|
30
35
|
gap: var(--tag-gap);
|
|
31
36
|
min-height: var(--tag-height);
|
|
32
|
-
padding:
|
|
37
|
+
padding:
|
|
38
|
+
var(--tag-padding-y)
|
|
39
|
+
var(--tag-padding-x);
|
|
33
40
|
|
|
34
41
|
/* border */
|
|
35
42
|
--tag-border-width: 0;
|
|
36
|
-
--tag-border-radius:
|
|
43
|
+
--tag-border-radius:
|
|
44
|
+
var(--radius-control);
|
|
37
45
|
--tag-border-color: transparent;
|
|
38
46
|
|
|
39
47
|
border: none;
|
|
40
|
-
border-radius:
|
|
48
|
+
border-radius:
|
|
49
|
+
var(--tag-border-radius);
|
|
41
50
|
outline: none;
|
|
42
51
|
|
|
43
52
|
/* depth */
|
|
@@ -46,14 +55,23 @@
|
|
|
46
55
|
--tag-transition-duration: 0.2s;
|
|
47
56
|
|
|
48
57
|
transition:
|
|
49
|
-
border-color
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
border-color
|
|
59
|
+
var(--tag-transition-duration)
|
|
60
|
+
ease,
|
|
61
|
+
background-color
|
|
62
|
+
var(--tag-transition-duration)
|
|
63
|
+
ease,
|
|
64
|
+
color
|
|
65
|
+
var(--tag-transition-duration)
|
|
66
|
+
ease,
|
|
67
|
+
opacity
|
|
68
|
+
var(--tag-transition-duration)
|
|
69
|
+
ease;
|
|
53
70
|
}
|
|
54
71
|
|
|
55
|
-
.
|
|
72
|
+
.tag--context-error {
|
|
56
73
|
/* color */
|
|
74
|
+
--tag-bg: var(--color-bad);
|
|
57
75
|
|
|
58
76
|
/* typography */
|
|
59
77
|
|
|
@@ -66,22 +84,17 @@
|
|
|
66
84
|
/* motion */
|
|
67
85
|
}
|
|
68
86
|
|
|
69
|
-
.tag
|
|
70
|
-
|
|
87
|
+
.tag--context-warning {
|
|
88
|
+
/* color */
|
|
89
|
+
--tag-bg: var(--color-med);
|
|
71
90
|
|
|
72
|
-
|
|
73
|
-
}
|
|
91
|
+
/* typography */
|
|
74
92
|
|
|
75
|
-
|
|
76
|
-
}
|
|
93
|
+
/* size */
|
|
77
94
|
|
|
78
|
-
|
|
79
|
-
}
|
|
95
|
+
/* border */
|
|
80
96
|
|
|
81
|
-
|
|
82
|
-
--tag-bg: var(--color-bad);
|
|
83
|
-
}
|
|
97
|
+
/* depth */
|
|
84
98
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
99
|
+
/* motion */
|
|
100
|
+
}
|
package/components/tag/tag.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
import './tag.css';
|
|
3
|
+
export interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
3
4
|
context?: 'success' | 'error' | 'warning';
|
|
4
5
|
}
|
|
5
6
|
declare const Tag: React.FC<TagProps>;
|
package/components/tag/tag.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { classnames } from '../helpers/classnames';
|
|
3
|
+
import './tag.css';
|
|
3
4
|
|
|
4
5
|
const Tag = ({
|
|
5
6
|
context = "success",
|
|
@@ -7,11 +8,15 @@ const Tag = ({
|
|
|
7
8
|
children,
|
|
8
9
|
...props
|
|
9
10
|
}) => {
|
|
10
|
-
const classes = classnames(
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const classes = classnames(
|
|
12
|
+
"tag",
|
|
13
|
+
className,
|
|
14
|
+
{
|
|
15
|
+
[`tag--context-${context}`]: Boolean(context)
|
|
16
|
+
}
|
|
17
|
+
);
|
|
13
18
|
return /* @__PURE__ */ jsx(
|
|
14
|
-
"
|
|
19
|
+
"span",
|
|
15
20
|
{
|
|
16
21
|
className: classes,
|
|
17
22
|
...props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/tag/tag.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/tag/tag.tsx"],"names":[],"mappings":";;;;AAUA,MAAM,MAA0B,CAAC;AAAA,EAC/B,OAAA,GAAU,SAAA;AAAA,EACV,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,KAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,CAAC,CAAA,aAAA,EAAgB,OAAO,CAAA,CAAE,GACxB,QAAQ,OAAO;AAAA;AACnB,GACF;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,WAAA,GAAQ","file":"tag.js","sourcesContent":["import React from 'react';\n\nimport { classnames } from '../helpers/classnames';\nimport './tag.css';\n\nexport interface TagProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n context?: 'success' | 'error' | 'warning';\n}\n\nconst Tag: React.FC<TagProps> = ({\n context = 'success',\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'tag',\n className,\n {\n [`tag--context-${context}`]:\n Boolean(context),\n },\n );\n\n return (\n <span\n className={classes}\n {...props}\n >\n {children}\n </span>\n );\n};\n\nexport default Tag;\n"]}
|
package/index.cjs
CHANGED
|
@@ -89,6 +89,10 @@ Object.defineProperty(exports, "Button", {
|
|
|
89
89
|
enumerable: true,
|
|
90
90
|
get: function () { return button__default.default; }
|
|
91
91
|
});
|
|
92
|
+
Object.defineProperty(exports, "buttonLink", {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
get: function () { return button.buttonLink; }
|
|
95
|
+
});
|
|
92
96
|
Object.defineProperty(exports, "Input", {
|
|
93
97
|
enumerable: true,
|
|
94
98
|
get: function () { return input__default.default; }
|
package/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Public API of the design system
|
|
3
3
|
* Components and patterns only
|
|
4
4
|
*/
|
|
5
|
-
export { default as Button } from './components/button';
|
|
6
|
-
export type { ButtonProps } from './components/button';
|
|
5
|
+
export { default as Button, buttonLink, } from './components/button';
|
|
6
|
+
export type { ButtonProps, } from './components/button';
|
|
7
7
|
export { default as Input } from './components/input';
|
|
8
8
|
export type { InputProps } from './components/input';
|
|
9
9
|
export { default as Textarea } from './components/textarea';
|
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as Button } from './components/button';
|
|
1
|
+
export { default as Button, buttonLink } from './components/button';
|
|
2
2
|
export { default as Input } from './components/input';
|
|
3
3
|
export { default as Textarea } from './components/textarea';
|
|
4
4
|
export { default as Select } from './components/select';
|
package/package.json
CHANGED
package/styles.css
CHANGED
|
@@ -2572,7 +2572,6 @@
|
|
|
2572
2572
|
/* typography */
|
|
2573
2573
|
|
|
2574
2574
|
/* size */
|
|
2575
|
-
gap: var(--flip-list-open-content-gap);
|
|
2576
2575
|
|
|
2577
2576
|
/* border */
|
|
2578
2577
|
|
|
@@ -2592,8 +2591,9 @@
|
|
|
2592
2591
|
|
|
2593
2592
|
/* size */
|
|
2594
2593
|
display: flex;
|
|
2595
|
-
|
|
2596
|
-
|
|
2594
|
+
align-items: center;
|
|
2595
|
+
justify-content: space-between;
|
|
2596
|
+
gap: var(--flip-list-trigger-column-gap);
|
|
2597
2597
|
width: 100%;
|
|
2598
2598
|
min-width: 0;
|
|
2599
2599
|
max-width: 100%;
|
|
@@ -2654,27 +2654,6 @@
|
|
|
2654
2654
|
/* motion */
|
|
2655
2655
|
}
|
|
2656
2656
|
|
|
2657
|
-
.flip-list__main {
|
|
2658
|
-
/* color */
|
|
2659
|
-
|
|
2660
|
-
/* typography */
|
|
2661
|
-
|
|
2662
|
-
/* size */
|
|
2663
|
-
display: flex;
|
|
2664
|
-
align-items: flex-start;
|
|
2665
|
-
justify-content: space-between;
|
|
2666
|
-
gap: var(--flip-list-trigger-column-gap);
|
|
2667
|
-
width: 100%;
|
|
2668
|
-
min-width: 0;
|
|
2669
|
-
max-width: 100%;
|
|
2670
|
-
|
|
2671
|
-
/* border */
|
|
2672
|
-
|
|
2673
|
-
/* depth */
|
|
2674
|
-
|
|
2675
|
-
/* motion */
|
|
2676
|
-
}
|
|
2677
|
-
|
|
2678
2657
|
.flip-list__title {
|
|
2679
2658
|
/* color */
|
|
2680
2659
|
color: inherit;
|
|
@@ -2843,6 +2822,23 @@
|
|
|
2843
2822
|
/* motion */
|
|
2844
2823
|
}
|
|
2845
2824
|
|
|
2825
|
+
.flip-list__item--open
|
|
2826
|
+
.flip-list__content {
|
|
2827
|
+
/* color */
|
|
2828
|
+
|
|
2829
|
+
/* typography */
|
|
2830
|
+
|
|
2831
|
+
/* size */
|
|
2832
|
+
margin-top:
|
|
2833
|
+
var(--flip-list-open-content-gap);
|
|
2834
|
+
|
|
2835
|
+
/* border */
|
|
2836
|
+
|
|
2837
|
+
/* depth */
|
|
2838
|
+
|
|
2839
|
+
/* motion */
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2846
2842
|
.flip-list__content[hidden] {
|
|
2847
2843
|
/* color */
|
|
2848
2844
|
|
|
@@ -4217,34 +4213,43 @@
|
|
|
4217
4213
|
--tag-font-family: var(--font-note-family);
|
|
4218
4214
|
--tag-font-weight: var(--font-note-weight);
|
|
4219
4215
|
--tag-font-size: var(--font-note-size);
|
|
4220
|
-
--tag-line-height:
|
|
4221
|
-
|
|
4216
|
+
--tag-line-height:
|
|
4217
|
+
var(--font-note-line-height);
|
|
4218
|
+
--tag-letter-spacing:
|
|
4219
|
+
var(--font-note-letter-spacing);
|
|
4222
4220
|
|
|
4223
4221
|
font-family: var(--tag-font-family);
|
|
4224
4222
|
font-size: var(--tag-font-size);
|
|
4225
4223
|
font-weight: var(--tag-font-weight);
|
|
4226
4224
|
line-height: var(--tag-line-height);
|
|
4227
|
-
letter-spacing:
|
|
4225
|
+
letter-spacing:
|
|
4226
|
+
var(--tag-letter-spacing);
|
|
4228
4227
|
|
|
4229
4228
|
/* size */
|
|
4230
4229
|
--tag-gap: 0;
|
|
4231
4230
|
--tag-height: auto;
|
|
4232
|
-
--tag-padding-x:
|
|
4233
|
-
|
|
4231
|
+
--tag-padding-x:
|
|
4232
|
+
var(--padding-tag-horz);
|
|
4233
|
+
--tag-padding-y:
|
|
4234
|
+
var(--padding-tag-vert);
|
|
4234
4235
|
|
|
4235
4236
|
display: inline-flex;
|
|
4236
4237
|
align-items: center;
|
|
4237
4238
|
gap: var(--tag-gap);
|
|
4238
4239
|
min-height: var(--tag-height);
|
|
4239
|
-
padding:
|
|
4240
|
+
padding:
|
|
4241
|
+
var(--tag-padding-y)
|
|
4242
|
+
var(--tag-padding-x);
|
|
4240
4243
|
|
|
4241
4244
|
/* border */
|
|
4242
4245
|
--tag-border-width: 0;
|
|
4243
|
-
--tag-border-radius:
|
|
4246
|
+
--tag-border-radius:
|
|
4247
|
+
var(--radius-control);
|
|
4244
4248
|
--tag-border-color: transparent;
|
|
4245
4249
|
|
|
4246
4250
|
border: none;
|
|
4247
|
-
border-radius:
|
|
4251
|
+
border-radius:
|
|
4252
|
+
var(--tag-border-radius);
|
|
4248
4253
|
outline: none;
|
|
4249
4254
|
|
|
4250
4255
|
/* depth */
|
|
@@ -4253,14 +4258,23 @@
|
|
|
4253
4258
|
--tag-transition-duration: 0.2s;
|
|
4254
4259
|
|
|
4255
4260
|
transition:
|
|
4256
|
-
border-color
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4261
|
+
border-color
|
|
4262
|
+
var(--tag-transition-duration)
|
|
4263
|
+
ease,
|
|
4264
|
+
background-color
|
|
4265
|
+
var(--tag-transition-duration)
|
|
4266
|
+
ease,
|
|
4267
|
+
color
|
|
4268
|
+
var(--tag-transition-duration)
|
|
4269
|
+
ease,
|
|
4270
|
+
opacity
|
|
4271
|
+
var(--tag-transition-duration)
|
|
4272
|
+
ease;
|
|
4260
4273
|
}
|
|
4261
4274
|
|
|
4262
|
-
.
|
|
4275
|
+
.tag--context-error {
|
|
4263
4276
|
/* color */
|
|
4277
|
+
--tag-bg: var(--color-bad);
|
|
4264
4278
|
|
|
4265
4279
|
/* typography */
|
|
4266
4280
|
|
|
@@ -4273,24 +4287,19 @@
|
|
|
4273
4287
|
/* motion */
|
|
4274
4288
|
}
|
|
4275
4289
|
|
|
4276
|
-
.tag
|
|
4277
|
-
|
|
4290
|
+
.tag--context-warning {
|
|
4291
|
+
/* color */
|
|
4292
|
+
--tag-bg: var(--color-med);
|
|
4278
4293
|
|
|
4279
|
-
|
|
4280
|
-
}
|
|
4294
|
+
/* typography */
|
|
4281
4295
|
|
|
4282
|
-
|
|
4283
|
-
}
|
|
4296
|
+
/* size */
|
|
4284
4297
|
|
|
4285
|
-
|
|
4286
|
-
}
|
|
4298
|
+
/* border */
|
|
4287
4299
|
|
|
4288
|
-
|
|
4289
|
-
--tag-bg: var(--color-bad);
|
|
4290
|
-
}
|
|
4300
|
+
/* depth */
|
|
4291
4301
|
|
|
4292
|
-
|
|
4293
|
-
--tag-bg: var(--color-med);
|
|
4302
|
+
/* motion */
|
|
4294
4303
|
}
|
|
4295
4304
|
|
|
4296
4305
|
/* src/components/textarea/textarea.css */
|