@tedi-design-system/react 17.1.0-rc.1 → 17.1.0-rc.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/bundle-stats.html +1 -1
- package/index.css +1 -1
- package/package.json +5 -17
- package/src/tedi/components/form/slider/slider.cjs.js +1 -0
- package/src/tedi/components/form/slider/slider.d.ts +116 -0
- package/src/tedi/components/form/slider/slider.es.js +145 -0
- package/src/tedi/components/form/slider/slider.module.scss.cjs.js +1 -0
- package/src/tedi/components/form/slider/slider.module.scss.es.js +18 -0
- package/src/tedi/components/misc/empty-state/empty-state.cjs.js +1 -0
- package/src/tedi/components/misc/empty-state/empty-state.d.ts +51 -0
- package/src/tedi/components/misc/empty-state/empty-state.es.js +36 -0
- package/src/tedi/components/misc/empty-state/empty-state.module.scss.cjs.js +1 -0
- package/src/tedi/components/misc/empty-state/empty-state.module.scss.es.js +15 -0
- package/src/tedi/components/misc/empty-state/index.d.ts +1 -0
- package/src/tedi/components/overlays/overlay/overlay.cjs.js +1 -1
- package/src/tedi/components/overlays/overlay/overlay.d.ts +12 -0
- package/src/tedi/components/overlays/overlay/overlay.es.js +75 -74
- package/src/tedi/index.d.ts +2 -0
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +160 -156
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tedi-design-system/react",
|
|
3
|
-
"version": "17.1.0-rc.
|
|
3
|
+
"version": "17.1.0-rc.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@mui/material": "^5.15.13",
|
|
44
44
|
"@mui/x-date-pickers": "^5.0.20",
|
|
45
45
|
"@tanstack/react-table": "^8.13.2",
|
|
46
|
-
"@tedi-design-system/core": "6.0.
|
|
46
|
+
"@tedi-design-system/core": "6.0.1",
|
|
47
47
|
"classnames": "^2.5.1",
|
|
48
48
|
"draft-js": "^0.11.7",
|
|
49
49
|
"draftjs-md-converter": "^1.5.2",
|
|
@@ -81,16 +81,11 @@
|
|
|
81
81
|
"@storybook/addon-a11y": "8.4.2",
|
|
82
82
|
"@storybook/addon-designs": "^8.2.1",
|
|
83
83
|
"@storybook/addon-essentials": "8.4.2",
|
|
84
|
-
"@storybook/addon-mdx-gfm": "8.4.2",
|
|
85
84
|
"@storybook/blocks": "8.4.2",
|
|
86
85
|
"@storybook/builder-vite": "8.4.2",
|
|
87
86
|
"@storybook/react": "8.4.2",
|
|
88
87
|
"@storybook/react-vite": "8.4.2",
|
|
89
88
|
"@storybook/theming": "8.6.14",
|
|
90
|
-
"@svgr/webpack": "8.1.0",
|
|
91
|
-
"@swc-node/register": "~1.11.1",
|
|
92
|
-
"@swc/core": "~1.14.0",
|
|
93
|
-
"@swc/helpers": "~0.5.19",
|
|
94
89
|
"@testing-library/dom": "^9.3.4",
|
|
95
90
|
"@testing-library/jest-dom": "^6.4.2",
|
|
96
91
|
"@testing-library/react": "15.0.6",
|
|
@@ -103,18 +98,15 @@
|
|
|
103
98
|
"@types/node": "20.11.28",
|
|
104
99
|
"@types/react": "18.3.1",
|
|
105
100
|
"@types/react-dom": "18.3.0",
|
|
106
|
-
"@types/react-test-renderer": "^19.1.0",
|
|
107
101
|
"@types/showdown": "^2.0.6",
|
|
108
102
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
109
103
|
"@typescript-eslint/parser": "^6.21.0",
|
|
110
104
|
"@vitejs/plugin-react": "^4.3.4",
|
|
111
|
-
"baseline-browser-mapping": "^2.10.0",
|
|
112
105
|
"chromatic": "^13.3.4",
|
|
113
|
-
"cross-env": "^7.0.3",
|
|
114
106
|
"dompurify": "^3.3.0",
|
|
115
107
|
"eslint": "8.48.0",
|
|
116
108
|
"eslint-config-next": "^13.4.6",
|
|
117
|
-
"eslint-config-prettier": "
|
|
109
|
+
"eslint-config-prettier": "10.1.8",
|
|
118
110
|
"eslint-plugin-import": "^2.27.5",
|
|
119
111
|
"eslint-plugin-jsx-a11y": "^6.7.1",
|
|
120
112
|
"eslint-plugin-prettier": "^4.2.1",
|
|
@@ -143,18 +135,14 @@
|
|
|
143
135
|
"stylelint-config-recess-order": "^4.2.0",
|
|
144
136
|
"stylelint-config-standard-scss": "^14.0.0",
|
|
145
137
|
"stylelint-declaration-strict-value": "^1.9.2",
|
|
146
|
-
"to-string-loader": "^1.2.0",
|
|
147
138
|
"ts-jest": "29.1.2",
|
|
148
139
|
"ts-node": "^10.9.2",
|
|
149
|
-
"tslib": "^2.
|
|
140
|
+
"tslib": "^2.8.1",
|
|
150
141
|
"typescript": "5.9.2",
|
|
151
|
-
"typescript-plugin-css-modules": "^5.1.0",
|
|
152
142
|
"vite": "^5.4.11",
|
|
153
143
|
"vite-plugin-checker": "^0.6.4",
|
|
154
144
|
"vite-plugin-dts": "4.5.4",
|
|
155
|
-
"vite-plugin-
|
|
156
|
-
"vite-plugin-static-copy": "^2.2.0",
|
|
157
|
-
"vite-tsconfig-paths": "4.3.2"
|
|
145
|
+
"vite-plugin-static-copy": "^2.2.0"
|
|
158
146
|
},
|
|
159
147
|
"commitlint": {
|
|
160
148
|
"extends": "@commitlint/config-conventional",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),m=require("../../../../../external/classnames/index.cjs.js"),e=require("react"),ne=require("../../overlays/tooltip/tooltip.cjs.js"),de=require("../../overlays/tooltip/tooltip-content.cjs.js"),oe=require("../../overlays/tooltip/tooltip-trigger.cjs.js"),ue=require("../feedback-text/feedback-text.cjs.js"),ce=require("../form-label/form-label.cjs.js"),t=require("./slider.module.scss.cjs.js"),fe=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),F=e.forwardRef((h,M)=>{const{getCurrentBreakpointProps:V}=fe.useBreakpointProps(h.defaultServerBreakpoint),{id:E,name:P,label:x,hideLabel:R,required:_,min:l=0,max:d=100,step:D=1,value:c,defaultValue:$,onChange:o,disabled:s=!1,invalid:H=!1,minLabel:f,maxLabel:O,showCurrentValue:p=!1,valueFormatter:k,tooltip:U=!0,addonRight:j,helper:r,className:z,"aria-label":A,"aria-labelledby":G,"aria-valuetext":J}=V(h),K=e.useId(),b=E??`tedi-slider-${K}`,w=r?r.id??`${b}-helper`:void 0,[Q,W]=e.useState($??l),u=Math.min(d,Math.max(l,c??Q)),[X,L]=e.useState(!1),[Y,N]=e.useState(!1),[i,C]=e.useState(!1),S=!!U&&!s,Z=S&&(X||Y||i),ee=e.useCallback(()=>L(!0),[]),ae=e.useCallback(()=>L(!1),[]),te=e.useCallback(()=>N(!0),[]),re=e.useCallback(()=>N(!1),[]),T=e.useRef(null),n=e.useCallback(()=>{T.current=null,C(!1)},[]);e.useEffect(()=>{if(i)return window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n),()=>{window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n)}},[i,n]);const le=e.useCallback(g=>{s||(T.current=g.pointerId,C(!0))},[s]),se=e.useCallback(g=>{const B=Number(g.target.value);c===void 0&&W(B),o==null||o(B)},[o,c]),q=H||(r==null?void 0:r.type)==="error",I=d===l?0:(u-l)/(d-l)*100,y=k?k(u):u,v=p?y:O,ie=m.default(t.default["tedi-slider"],{[t.default["tedi-slider--disabled"]]:s,[t.default["tedi-slider--invalid"]]:q,[t.default["tedi-slider--dragging"]]:i&&!s},z);return a.jsxs("div",{"data-name":"slider",className:ie,children:[x&&a.jsx(ce.FormLabel,{id:b,label:x,required:_,hideLabel:R}),a.jsxs("div",{className:t.default["tedi-slider__container"],children:[a.jsxs("div",{className:t.default["tedi-slider__track-row"],children:[f!=null&&a.jsx("span",{className:t.default["tedi-slider__range-label"],"aria-hidden":"true",children:f}),a.jsxs("div",{className:t.default["tedi-slider__track"],style:{"--tedi-slider-progress":`${I}%`,"--tedi-slider-progress-ratio":`${I/100}`},children:[a.jsx("input",{ref:M,id:b,name:P,type:"range",min:l,max:d,step:D,value:u,disabled:s,required:_,"aria-invalid":q?"true":void 0,"aria-describedby":w,"aria-label":A,"aria-labelledby":G,"aria-valuetext":J,onChange:se,onMouseEnter:ee,onMouseLeave:ae,onPointerDown:le,onFocus:te,onBlur:re,className:m.default(t.default["tedi-slider__input"],{[t.default["tedi-slider__input--dragging"]]:i})}),S&&a.jsxs(ne.Tooltip,{open:Z,onToggle:()=>{},focusManager:{returnFocus:!1,initialFocus:-1},placement:"top",trackReferencePosition:!0,children:[a.jsx(oe.TooltipTrigger,{children:a.jsx("span",{className:t.default["tedi-slider__thumb-anchor"],"aria-hidden":"true",tabIndex:-1})}),a.jsx(de.TooltipContent,{children:y})]})]}),v!=null&&a.jsx("span",{className:t.default["tedi-slider__range-label"],"aria-hidden":p?void 0:"true","aria-live":p?"polite":void 0,children:v})]}),j&&a.jsx("div",{className:t.default["tedi-slider__addon"],children:j})]}),r&&a.jsx(ue.FeedbackText,{...r,id:w,className:m.default(t.default["tedi-slider__feedback"],r.className)})]})});F.displayName="Slider";exports.Slider=F;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { BreakpointSupport } from '../../../helpers';
|
|
3
|
+
import { FeedbackTextProps } from '../feedback-text/feedback-text';
|
|
4
|
+
type SliderBreakpointProps = {
|
|
5
|
+
/**
|
|
6
|
+
* Text/element rendered to the left of the track (e.g. the minimum value).
|
|
7
|
+
*/
|
|
8
|
+
minLabel?: React.ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Text/element rendered to the right of the track (e.g. the maximum value).
|
|
11
|
+
* Ignored when `showCurrentValue` is `true`.
|
|
12
|
+
*/
|
|
13
|
+
maxLabel?: React.ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* When `true`, renders the current value to the right of the track instead of `maxLabel`.
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
showCurrentValue?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Formats the current value, used by both the thumb tooltip and the `showCurrentValue` label.
|
|
21
|
+
* @default (value) => value
|
|
22
|
+
*/
|
|
23
|
+
valueFormatter?: (value: number) => React.ReactNode;
|
|
24
|
+
/**
|
|
25
|
+
* Renders a tooltip above the thumb showing the current value. Shown only while the slider is
|
|
26
|
+
* hovered, focused, or being dragged. Value is formatted via `valueFormatter`.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
tooltip?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Node rendered to the right of the slider, typically a NumberField used to edit the same value.
|
|
32
|
+
*/
|
|
33
|
+
addonRight?: React.ReactNode;
|
|
34
|
+
/**
|
|
35
|
+
* Helper text rendered below the slider.
|
|
36
|
+
*/
|
|
37
|
+
helper?: FeedbackTextProps;
|
|
38
|
+
/**
|
|
39
|
+
* Additional class name(s) applied to the root element.
|
|
40
|
+
*/
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
export interface SliderProps extends BreakpointSupport<SliderBreakpointProps> {
|
|
44
|
+
/**
|
|
45
|
+
* Unique identifier for the underlying input element.
|
|
46
|
+
* Generated automatically if not provided.
|
|
47
|
+
*/
|
|
48
|
+
id?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Name attribute of the underlying input element.
|
|
51
|
+
*/
|
|
52
|
+
name?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Label text rendered above the slider.
|
|
55
|
+
*/
|
|
56
|
+
label?: React.ReactNode;
|
|
57
|
+
/**
|
|
58
|
+
* Controls the visibility of the label. Pass `true` to hide it visually while keeping it
|
|
59
|
+
* available to assistive technology, or `'keep-space'` to reserve the vertical space.
|
|
60
|
+
*/
|
|
61
|
+
hideLabel?: boolean | 'keep-space';
|
|
62
|
+
/**
|
|
63
|
+
* Marks the field as required.
|
|
64
|
+
*/
|
|
65
|
+
required?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Minimum allowed value.
|
|
68
|
+
* @default 0
|
|
69
|
+
*/
|
|
70
|
+
min?: number;
|
|
71
|
+
/**
|
|
72
|
+
* Maximum allowed value.
|
|
73
|
+
* @default 100
|
|
74
|
+
*/
|
|
75
|
+
max?: number;
|
|
76
|
+
/**
|
|
77
|
+
* Step size.
|
|
78
|
+
* @default 1
|
|
79
|
+
*/
|
|
80
|
+
step?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Controlled value. Use together with `onChange`.
|
|
83
|
+
*/
|
|
84
|
+
value?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Default value for uncontrolled usage.
|
|
87
|
+
* @default min
|
|
88
|
+
*/
|
|
89
|
+
defaultValue?: number;
|
|
90
|
+
/**
|
|
91
|
+
* Callback fired when the value changes.
|
|
92
|
+
*/
|
|
93
|
+
onChange?: (value: number) => void;
|
|
94
|
+
/**
|
|
95
|
+
* Disables the slider.
|
|
96
|
+
*/
|
|
97
|
+
disabled?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Marks the slider as invalid for validation purposes.
|
|
100
|
+
*/
|
|
101
|
+
invalid?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Accessible label used when no visible `label` is provided.
|
|
104
|
+
*/
|
|
105
|
+
'aria-label'?: string;
|
|
106
|
+
/**
|
|
107
|
+
* ID of an element that labels the slider, used when no visible `label` is provided.
|
|
108
|
+
*/
|
|
109
|
+
'aria-labelledby'?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Human-readable text alternative of the current value.
|
|
112
|
+
*/
|
|
113
|
+
'aria-valuetext'?: string;
|
|
114
|
+
}
|
|
115
|
+
export declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLInputElement>>;
|
|
116
|
+
export default Slider;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { jsxs as o, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import _ from "../../../../../external/classnames/index.es.js";
|
|
3
|
+
import { forwardRef as oe, useId as de, useState as m, useCallback as i, useRef as ce, useEffect as ue } from "react";
|
|
4
|
+
import { Tooltip as me } from "../../overlays/tooltip/tooltip.es.js";
|
|
5
|
+
import { TooltipContent as pe } from "../../overlays/tooltip/tooltip-content.es.js";
|
|
6
|
+
import { TooltipTrigger as fe } from "../../overlays/tooltip/tooltip-trigger.es.js";
|
|
7
|
+
import { FeedbackText as ve } from "../feedback-text/feedback-text.es.js";
|
|
8
|
+
import { FormLabel as ge } from "../form-label/form-label.es.js";
|
|
9
|
+
import e from "./slider.module.scss.es.js";
|
|
10
|
+
import { useBreakpointProps as he } from "../../../helpers/hooks/use-breakpoint-props.es.js";
|
|
11
|
+
const be = oe((N, S) => {
|
|
12
|
+
const { getCurrentBreakpointProps: D } = he(N.defaultServerBreakpoint), {
|
|
13
|
+
id: R,
|
|
14
|
+
name: $,
|
|
15
|
+
label: w,
|
|
16
|
+
hideLabel: j,
|
|
17
|
+
required: L,
|
|
18
|
+
min: t = 0,
|
|
19
|
+
max: d = 100,
|
|
20
|
+
step: H = 1,
|
|
21
|
+
value: p,
|
|
22
|
+
defaultValue: q,
|
|
23
|
+
onChange: c,
|
|
24
|
+
disabled: n = !1,
|
|
25
|
+
invalid: O = !1,
|
|
26
|
+
minLabel: f,
|
|
27
|
+
maxLabel: U,
|
|
28
|
+
showCurrentValue: v = !1,
|
|
29
|
+
valueFormatter: x,
|
|
30
|
+
tooltip: z = !0,
|
|
31
|
+
addonRight: I,
|
|
32
|
+
helper: a,
|
|
33
|
+
className: A,
|
|
34
|
+
"aria-label": G,
|
|
35
|
+
"aria-labelledby": J,
|
|
36
|
+
"aria-valuetext": K
|
|
37
|
+
} = D(N), Q = de(), g = R ?? `tedi-slider-${Q}`, k = a ? a.id ?? `${g}-helper` : void 0, [W, X] = m(q ?? t), u = Math.min(d, Math.max(t, p ?? W)), [Y, y] = m(!1), [Z, F] = m(!1), [l, T] = m(!1), V = !!z && !n, ee = V && (Y || Z || l), re = i(() => y(!0), []), ae = i(() => y(!1), []), ie = i(() => F(!0), []), te = i(() => F(!1), []), B = ce(null), s = i(() => {
|
|
38
|
+
B.current = null, T(!1);
|
|
39
|
+
}, []);
|
|
40
|
+
ue(() => {
|
|
41
|
+
if (l)
|
|
42
|
+
return window.addEventListener("pointerup", s), window.addEventListener("pointercancel", s), () => {
|
|
43
|
+
window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
44
|
+
};
|
|
45
|
+
}, [l, s]);
|
|
46
|
+
const ne = i(
|
|
47
|
+
(b) => {
|
|
48
|
+
n || (B.current = b.pointerId, T(!0));
|
|
49
|
+
},
|
|
50
|
+
[n]
|
|
51
|
+
), le = i(
|
|
52
|
+
(b) => {
|
|
53
|
+
const P = Number(b.target.value);
|
|
54
|
+
p === void 0 && X(P), c == null || c(P);
|
|
55
|
+
},
|
|
56
|
+
[c, p]
|
|
57
|
+
), E = O || (a == null ? void 0 : a.type) === "error", M = d === t ? 0 : (u - t) / (d - t) * 100, C = x ? x(u) : u, h = v ? C : U, se = _(
|
|
58
|
+
e["tedi-slider"],
|
|
59
|
+
{
|
|
60
|
+
[e["tedi-slider--disabled"]]: n,
|
|
61
|
+
[e["tedi-slider--invalid"]]: E,
|
|
62
|
+
[e["tedi-slider--dragging"]]: l && !n
|
|
63
|
+
},
|
|
64
|
+
A
|
|
65
|
+
);
|
|
66
|
+
return /* @__PURE__ */ o("div", { "data-name": "slider", className: se, children: [
|
|
67
|
+
w && /* @__PURE__ */ r(ge, { id: g, label: w, required: L, hideLabel: j }),
|
|
68
|
+
/* @__PURE__ */ o("div", { className: e["tedi-slider__container"], children: [
|
|
69
|
+
/* @__PURE__ */ o("div", { className: e["tedi-slider__track-row"], children: [
|
|
70
|
+
f != null && /* @__PURE__ */ r("span", { className: e["tedi-slider__range-label"], "aria-hidden": "true", children: f }),
|
|
71
|
+
/* @__PURE__ */ o(
|
|
72
|
+
"div",
|
|
73
|
+
{
|
|
74
|
+
className: e["tedi-slider__track"],
|
|
75
|
+
style: {
|
|
76
|
+
"--tedi-slider-progress": `${M}%`,
|
|
77
|
+
"--tedi-slider-progress-ratio": `${M / 100}`
|
|
78
|
+
},
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ r(
|
|
81
|
+
"input",
|
|
82
|
+
{
|
|
83
|
+
ref: S,
|
|
84
|
+
id: g,
|
|
85
|
+
name: $,
|
|
86
|
+
type: "range",
|
|
87
|
+
min: t,
|
|
88
|
+
max: d,
|
|
89
|
+
step: H,
|
|
90
|
+
value: u,
|
|
91
|
+
disabled: n,
|
|
92
|
+
required: L,
|
|
93
|
+
"aria-invalid": E ? "true" : void 0,
|
|
94
|
+
"aria-describedby": k,
|
|
95
|
+
"aria-label": G,
|
|
96
|
+
"aria-labelledby": J,
|
|
97
|
+
"aria-valuetext": K,
|
|
98
|
+
onChange: le,
|
|
99
|
+
onMouseEnter: re,
|
|
100
|
+
onMouseLeave: ae,
|
|
101
|
+
onPointerDown: ne,
|
|
102
|
+
onFocus: ie,
|
|
103
|
+
onBlur: te,
|
|
104
|
+
className: _(e["tedi-slider__input"], {
|
|
105
|
+
[e["tedi-slider__input--dragging"]]: l
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
V && /* @__PURE__ */ o(
|
|
110
|
+
me,
|
|
111
|
+
{
|
|
112
|
+
open: ee,
|
|
113
|
+
onToggle: () => {
|
|
114
|
+
},
|
|
115
|
+
focusManager: { returnFocus: !1, initialFocus: -1 },
|
|
116
|
+
placement: "top",
|
|
117
|
+
trackReferencePosition: !0,
|
|
118
|
+
children: [
|
|
119
|
+
/* @__PURE__ */ r(fe, { children: /* @__PURE__ */ r("span", { className: e["tedi-slider__thumb-anchor"], "aria-hidden": "true", tabIndex: -1 }) }),
|
|
120
|
+
/* @__PURE__ */ r(pe, { children: C })
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
),
|
|
127
|
+
h != null && /* @__PURE__ */ r(
|
|
128
|
+
"span",
|
|
129
|
+
{
|
|
130
|
+
className: e["tedi-slider__range-label"],
|
|
131
|
+
"aria-hidden": v ? void 0 : "true",
|
|
132
|
+
"aria-live": v ? "polite" : void 0,
|
|
133
|
+
children: h
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
] }),
|
|
137
|
+
I && /* @__PURE__ */ r("div", { className: e["tedi-slider__addon"], children: I })
|
|
138
|
+
] }),
|
|
139
|
+
a && /* @__PURE__ */ r(ve, { ...a, id: k, className: _(e["tedi-slider__feedback"], a.className) })
|
|
140
|
+
] });
|
|
141
|
+
});
|
|
142
|
+
be.displayName = "Slider";
|
|
143
|
+
export {
|
|
144
|
+
be as Slider
|
|
145
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-slider":"tedi-slider-90e24e7d","tedi-slider__container":"tedi-slider__container-525c4b64","tedi-slider__track-row":"tedi-slider__track-row-95e9c2d5","tedi-slider__range-label":"tedi-slider__range-label-a2a6a43b","tedi-slider__track":"tedi-slider__track-a7afc8d6","tedi-slider__thumb-anchor":"tedi-slider__thumb-anchor-7e282370","tedi-slider__input":"tedi-slider__input-b2d1c042","tedi-slider__input--dragging":"tedi-slider__input--dragging-6a2f5f85","tedi-slider__addon":"tedi-slider__addon-6b259d81","tedi-slider__feedback":"tedi-slider__feedback-dad1545e","tedi-slider--disabled":"tedi-slider--disabled-d1da914a","tedi-slider--dragging":"tedi-slider--dragging-c82f4f25","tedi-slider--invalid":"tedi-slider--invalid-e5adda94"};exports.default=e;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const d = {
|
|
2
|
+
"tedi-slider": "tedi-slider-90e24e7d",
|
|
3
|
+
"tedi-slider__container": "tedi-slider__container-525c4b64",
|
|
4
|
+
"tedi-slider__track-row": "tedi-slider__track-row-95e9c2d5",
|
|
5
|
+
"tedi-slider__range-label": "tedi-slider__range-label-a2a6a43b",
|
|
6
|
+
"tedi-slider__track": "tedi-slider__track-a7afc8d6",
|
|
7
|
+
"tedi-slider__thumb-anchor": "tedi-slider__thumb-anchor-7e282370",
|
|
8
|
+
"tedi-slider__input": "tedi-slider__input-b2d1c042",
|
|
9
|
+
"tedi-slider__input--dragging": "tedi-slider__input--dragging-6a2f5f85",
|
|
10
|
+
"tedi-slider__addon": "tedi-slider__addon-6b259d81",
|
|
11
|
+
"tedi-slider__feedback": "tedi-slider__feedback-dad1545e",
|
|
12
|
+
"tedi-slider--disabled": "tedi-slider--disabled-d1da914a",
|
|
13
|
+
"tedi-slider--dragging": "tedi-slider--dragging-c82f4f25",
|
|
14
|
+
"tedi-slider--invalid": "tedi-slider--invalid-e5adda94"
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
d as default
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("../../../../../external/classnames/index.cjs.js"),n=require("../../base/icon/icon.cjs.js"),y=require("../../base/typography/heading/heading.cjs.js"),f=require("../../base/typography/text/text.cjs.js"),t=require("./empty-state.module.scss.cjs.js"),l=({type:c="separate",size:o="default",icon:s="spa",heading:a,children:d,actions:r,className:m})=>{const u=p.default(t.default["tedi-empty-state"],t.default[`tedi-empty-state--${c}`],t.default[`tedi-empty-state--${o}`],m),i=s===null?null:typeof s=="string"?e.jsx(n.Icon,{name:s,size:36,color:"brand"}):e.jsx(n.Icon,{size:36,color:"brand",...s});return e.jsxs("div",{"data-name":"tedi-empty-state",className:u,children:[e.jsxs("div",{className:t.default["tedi-empty-state__text"],children:[i&&e.jsx("div",{className:t.default["tedi-empty-state__icon"],children:i}),(a||d)&&e.jsxs("div",{className:t.default["tedi-empty-state__content"],children:[a&&e.jsx(y.Heading,{className:t.default["tedi-empty-state__heading"],element:"h3",modifiers:"h3",color:"brand",children:a}),d&&e.jsx(f.Text,{className:t.default["tedi-empty-state__description"],color:"secondary",modifiers:"center",children:d})]})]}),r&&e.jsx("div",{className:t.default["tedi-empty-state__actions"],children:r})]})};l.displayName="EmptyState";exports.EmptyState=l;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { IconWithoutBackgroundProps } from '../../base/icon/icon';
|
|
3
|
+
export type EmptyStateType = 'separate' | 'attached' | 'inside';
|
|
4
|
+
export type EmptyStateSize = 'default' | 'small';
|
|
5
|
+
export interface EmptyStateProps {
|
|
6
|
+
/**
|
|
7
|
+
* Container variant — matches the Figma "Types" section.
|
|
8
|
+
* - `'separate'` (default) — full border + radius, stands on its own.
|
|
9
|
+
* - `'attached'` — top border omitted so the block sits flush beneath a
|
|
10
|
+
* preceding card or table (same width + same bottom-radius).
|
|
11
|
+
* - `'inside'` — no border, no radius; intended to be placed inside another
|
|
12
|
+
* container such as a `<Card>` or `<Table>`.
|
|
13
|
+
* @default separate
|
|
14
|
+
*/
|
|
15
|
+
type?: EmptyStateType;
|
|
16
|
+
/**
|
|
17
|
+
* Padding scale. `default` = 24px, `small` = 16px.
|
|
18
|
+
* @default default
|
|
19
|
+
*/
|
|
20
|
+
size?: EmptyStateSize;
|
|
21
|
+
/**
|
|
22
|
+
* Icon rendered above the text block. Pass a Material icon name, a full
|
|
23
|
+
* `IconWithoutBackgroundProps` object to configure the underlying `Icon`,
|
|
24
|
+
* or `null` to hide the icon.
|
|
25
|
+
* @default spa
|
|
26
|
+
*/
|
|
27
|
+
icon?: string | IconWithoutBackgroundProps | null;
|
|
28
|
+
/**
|
|
29
|
+
* Optional heading rendered above the description — appears as an H3 in
|
|
30
|
+
* brand-primary text color.
|
|
31
|
+
*/
|
|
32
|
+
heading?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Main body text describing why there is nothing to show.
|
|
35
|
+
*/
|
|
36
|
+
children?: React.ReactNode;
|
|
37
|
+
/**
|
|
38
|
+
* Call-to-action slot. Typically a `<Button>` (or two) or a `<Link>`.
|
|
39
|
+
* Rendered below the text block.
|
|
40
|
+
*/
|
|
41
|
+
actions?: React.ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Additional class name on the root element.
|
|
44
|
+
*/
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
export declare const EmptyState: {
|
|
48
|
+
({ type, size, icon, heading, children, actions, className, }: EmptyStateProps): JSX.Element;
|
|
49
|
+
displayName: string;
|
|
50
|
+
};
|
|
51
|
+
export default EmptyState;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as t, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import y from "../../../../../external/classnames/index.es.js";
|
|
3
|
+
import { Icon as d } from "../../base/icon/icon.es.js";
|
|
4
|
+
import { Heading as f } from "../../base/typography/heading/heading.es.js";
|
|
5
|
+
import { Text as _ } from "../../base/typography/text/text.es.js";
|
|
6
|
+
import e from "./empty-state.module.scss.es.js";
|
|
7
|
+
const N = ({
|
|
8
|
+
type: n = "separate",
|
|
9
|
+
size: l = "default",
|
|
10
|
+
icon: s = "spa",
|
|
11
|
+
heading: a,
|
|
12
|
+
children: r,
|
|
13
|
+
actions: i,
|
|
14
|
+
className: p
|
|
15
|
+
}) => {
|
|
16
|
+
const c = y(
|
|
17
|
+
e["tedi-empty-state"],
|
|
18
|
+
e[`tedi-empty-state--${n}`],
|
|
19
|
+
e[`tedi-empty-state--${l}`],
|
|
20
|
+
p
|
|
21
|
+
), o = s === null ? null : typeof s == "string" ? /* @__PURE__ */ t(d, { name: s, size: 36, color: "brand" }) : /* @__PURE__ */ t(d, { size: 36, color: "brand", ...s });
|
|
22
|
+
return /* @__PURE__ */ m("div", { "data-name": "tedi-empty-state", className: c, children: [
|
|
23
|
+
/* @__PURE__ */ m("div", { className: e["tedi-empty-state__text"], children: [
|
|
24
|
+
o && /* @__PURE__ */ t("div", { className: e["tedi-empty-state__icon"], children: o }),
|
|
25
|
+
(a || r) && /* @__PURE__ */ m("div", { className: e["tedi-empty-state__content"], children: [
|
|
26
|
+
a && /* @__PURE__ */ t(f, { className: e["tedi-empty-state__heading"], element: "h3", modifiers: "h3", color: "brand", children: a }),
|
|
27
|
+
r && /* @__PURE__ */ t(_, { className: e["tedi-empty-state__description"], color: "secondary", modifiers: "center", children: r })
|
|
28
|
+
] })
|
|
29
|
+
] }),
|
|
30
|
+
i && /* @__PURE__ */ t("div", { className: e["tedi-empty-state__actions"], children: i })
|
|
31
|
+
] });
|
|
32
|
+
};
|
|
33
|
+
N.displayName = "EmptyState";
|
|
34
|
+
export {
|
|
35
|
+
N as EmptyState
|
|
36
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-empty-state":"tedi-empty-state-fa18a0c7","tedi-empty-state--small":"tedi-empty-state--small-cd55192d","tedi-empty-state--attached":"tedi-empty-state--attached-34f9494f","tedi-empty-state--inside":"tedi-empty-state--inside-59a35f4a","tedi-empty-state__text":"tedi-empty-state__text-3356405a","tedi-empty-state__icon":"tedi-empty-state__icon-b7c0b65c","tedi-empty-state__content":"tedi-empty-state__content-8f9e9b61","tedi-empty-state__heading":"tedi-empty-state__heading-a8adf6aa","tedi-empty-state__description":"tedi-empty-state__description-4c540947","tedi-empty-state__actions":"tedi-empty-state__actions-bff9b270"};exports.default=t;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const t = {
|
|
2
|
+
"tedi-empty-state": "tedi-empty-state-fa18a0c7",
|
|
3
|
+
"tedi-empty-state--small": "tedi-empty-state--small-cd55192d",
|
|
4
|
+
"tedi-empty-state--attached": "tedi-empty-state--attached-34f9494f",
|
|
5
|
+
"tedi-empty-state--inside": "tedi-empty-state--inside-59a35f4a",
|
|
6
|
+
"tedi-empty-state__text": "tedi-empty-state__text-3356405a",
|
|
7
|
+
"tedi-empty-state__icon": "tedi-empty-state__icon-b7c0b65c",
|
|
8
|
+
"tedi-empty-state__content": "tedi-empty-state__content-8f9e9b61",
|
|
9
|
+
"tedi-empty-state__heading": "tedi-empty-state__heading-a8adf6aa",
|
|
10
|
+
"tedi-empty-state__description": "tedi-empty-state__description-4c540947",
|
|
11
|
+
"tedi-empty-state__actions": "tedi-empty-state__actions-bff9b270"
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
t as default
|
|
15
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './empty-state';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const K=require("react/jsx-runtime"),t=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),n=require("react"),N=require("./overlay-content.cjs.js"),Q=require("./overlay-trigger.cjs.js"),X=require("../../../helpers/hooks/use-is-touch-device.cjs.js"),Y=require("../../../helpers/hooks/use-is-mounted.cjs.js"),j=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),i=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),Z=3,S=n.createContext({open:!1,onOpenChange:()=>{},isMounted:!1,openWith:"hover",reference:()=>{},floating:()=>{},focusManager:{},arrowRef:{current:null},x:0,y:0,strategy:"absolute",getReferenceProps:()=>({}),getFloatingProps:()=>({}),arrow:{width:0,height:0,x:0,y:0,centerOffset:0},placement:"top",context:{},scrollLock:void 0,contentId:""}),u=E=>{const L=X.useIsTouchDevice(),{children:W,placement:A="top",openWith:s=L?"click":"hover",defaultOpen:G=!1,open:c,onToggle:r,role:d="tooltip",arrowDimensions:e,offset:H=Z+((e==null?void 0:e.height)??0),focusManager:f,dismissible:y,scrollLock:O,trackReferencePosition:V=!1}=E,{order:M=["reference","content"],initialFocus:m,modal:g,...x}=f??{},C=m!==void 0?m:g?0:void 0,[F,R]=n.useState(G),p=n.useRef(null),P=Y.useIsMounted(),h=n.useMemo(()=>r&&typeof c<"u"?c:F,[r,c,F]),v=n.useCallback(l=>{typeof c>"u"&&R(l),r==null||r(l)},[c,R,r]),{x:q,y:I,refs:a,strategy:b,context:o,middlewareData:k,placement:w}=t.useFloating({placement:A,open:h,onOpenChange:v,middleware:[i.offset(H),i.flip(),i.shift({padding:8}),i.arrow({element:p,padding:4})],whileElementsMounted:V?(l,B,J)=>j.autoUpdate(l,B,J,{animationFrame:!0}):j.autoUpdate}),{getReferenceProps:T,getFloatingProps:U}=t.useInteractions([t.useHover(o,{enabled:s==="hover",handleClose:t.safePolygon()}),t.useClick(o,{toggle:y}),t.useFocus(o,{enabled:s==="hover"}),t.useRole(o,{role:d}),t.useDismiss(o,{enabled:y,outsidePressEvent:s==="click"?"mousedown":"pointerdown"})]),_=n.useId(),z=n.useMemo(()=>({open:h,onOpenChange:v,isMounted:P,openWith:s,focusManager:f?{order:M,modal:g,initialFocus:C,...x}:void 0,reference:a.setReference,floating:a.setFloating,arrowRef:p,x:q,y:I,strategy:b,getReferenceProps:T,getFloatingProps:U,arrow:{width:e==null?void 0:e.width,height:e==null?void 0:e.height,...k.arrow},context:o,placement:w,scrollLock:O,role:d,contentId:_}),[h,v,P,s,f,a.setReference,a.setFloating,p,q,I,b,T,U,e==null?void 0:e.width,e==null?void 0:e.height,k.arrow,o,w,O,d,_,g,M,C,x]);return K.jsx(S.Provider,{value:z,children:W})};u.Trigger=Q.OverlayTrigger;u.Content=N.OverlayContent;exports.Overlay=u;exports.OverlayContext=S;exports.default=u;
|
|
@@ -63,6 +63,18 @@ export interface OverlayProps {
|
|
|
63
63
|
* @default GAP + arrow height
|
|
64
64
|
*/
|
|
65
65
|
offset?: OffsetOptions;
|
|
66
|
+
/**
|
|
67
|
+
* Re-measure the floating element every animation frame while mounted.
|
|
68
|
+
*
|
|
69
|
+
* Enable this when the trigger/reference element's position can change without a
|
|
70
|
+
* DOM-observable event (e.g. position driven by an inherited CSS custom property on an
|
|
71
|
+
* ancestor). The default `autoUpdate` only reacts to scroll, resize, and element-size
|
|
72
|
+
* changes, so position-only movement goes unnoticed and the overlay lags behind.
|
|
73
|
+
*
|
|
74
|
+
* Opt-in because animation-frame tracking is more expensive than the default.
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
trackReferencePosition?: boolean;
|
|
66
78
|
}
|
|
67
79
|
export interface OverlayContextType {
|
|
68
80
|
open: boolean;
|