@tedi-design-system/react 17.1.0-rc.1 → 17.1.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/bundle-stats.html +1 -1
  2. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  3. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  4. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  5. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  6. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  7. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  8. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  9. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  10. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  11. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  12. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  13. package/external/prop-types/external/react-is/index.es.js +1 -1
  14. package/index.css +1 -1
  15. package/package.json +5 -17
  16. package/src/tedi/components/form/slider/slider.cjs.js +1 -0
  17. package/src/tedi/components/form/slider/slider.d.ts +116 -0
  18. package/src/tedi/components/form/slider/slider.es.js +145 -0
  19. package/src/tedi/components/form/slider/slider.module.scss.cjs.js +1 -0
  20. package/src/tedi/components/form/slider/slider.module.scss.es.js +18 -0
  21. package/src/tedi/components/overlays/overlay/overlay.cjs.js +1 -1
  22. package/src/tedi/components/overlays/overlay/overlay.d.ts +12 -0
  23. package/src/tedi/components/overlays/overlay/overlay.es.js +75 -74
  24. package/src/tedi/index.d.ts +1 -0
  25. package/tedi.cjs.js +1 -1
  26. package/tedi.es.js +146 -144
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedi-design-system/react",
3
- "version": "17.1.0-rc.1",
3
+ "version": "17.1.0-rc.2",
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.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": "9.1.0",
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.3.0",
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-eslint": "^1.8.1",
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
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const V=require("react/jsx-runtime"),t=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),n=require("react"),z=require("./overlay-content.cjs.js"),B=require("./overlay-trigger.cjs.js"),J=require("../../../helpers/hooks/use-is-touch-device.cjs.js"),K=require("../../../helpers/hooks/use-is-mounted.cjs.js"),N=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),a=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),Q=3,j=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:""}),i=S=>{const E=J.useIsTouchDevice(),{children:L,placement:W="top",openWith:s=E?"click":"hover",defaultOpen:A=!1,open:c,onToggle:r,role:u="tooltip",arrowDimensions:e,offset:G=Q+((e==null?void 0:e.height)??0),focusManager:d,dismissible:v,scrollLock:y}=S,{order:O=["reference","content"],initialFocus:M,modal:f,...x}=d??{},C=M!==void 0?M:f?0:void 0,[m,F]=n.useState(A),g=n.useRef(null),R=K.useIsMounted(),p=n.useMemo(()=>r&&typeof c<"u"?c:m,[r,c,m]),h=n.useCallback(U=>{typeof c>"u"&&F(U),r==null||r(U)},[c,F,r]),{x:q,y:I,refs:l,strategy:P,context:o,middlewareData:b,placement:w}=t.useFloating({placement:W,open:p,onOpenChange:h,middleware:[a.offset(G),a.flip(),a.shift({padding:8}),a.arrow({element:g,padding:4})],whileElementsMounted:N.autoUpdate}),{getReferenceProps:k,getFloatingProps:T}=t.useInteractions([t.useHover(o,{enabled:s==="hover",handleClose:t.safePolygon()}),t.useClick(o,{toggle:v}),t.useFocus(o,{enabled:s==="hover"}),t.useRole(o,{role:u}),t.useDismiss(o,{enabled:v,outsidePressEvent:s==="click"?"mousedown":"pointerdown"})]),_=n.useId(),H=n.useMemo(()=>({open:p,onOpenChange:h,isMounted:R,openWith:s,focusManager:d?{order:O,modal:f,initialFocus:C,...x}:void 0,reference:l.setReference,floating:l.setFloating,arrowRef:g,x:q,y:I,strategy:P,getReferenceProps:k,getFloatingProps:T,arrow:{width:e==null?void 0:e.width,height:e==null?void 0:e.height,...b.arrow},context:o,placement:w,scrollLock:y,role:u,contentId:_}),[p,h,R,s,d,l.setReference,l.setFloating,g,q,I,P,k,T,e==null?void 0:e.width,e==null?void 0:e.height,b.arrow,o,w,y,u,_,f,O,C,x]);return V.jsx(j.Provider,{value:H,children:L})};i.Trigger=B.OverlayTrigger;i.Content=z.OverlayContent;exports.Overlay=i;exports.OverlayContext=j;exports.default=i;
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;
@@ -1,13 +1,13 @@
1
- import { jsx as U } from "react/jsx-runtime";
2
- import { useFloating as V, useInteractions as q, useHover as z, safePolygon as B, useClick as J, useFocus as K, useRole as N, useDismiss as Q } from "../../../../../external/@floating-ui/react/dist/floating-ui.react.es.js";
3
- import { useState as X, useRef as Y, useMemo as T, useCallback as Z, useId as _, createContext as $ } from "react";
4
- import { OverlayContent as D } from "./overlay-content.es.js";
5
- import { OverlayTrigger as ee } from "./overlay-trigger.es.js";
6
- import { useIsTouchDevice as te } from "../../../helpers/hooks/use-is-touch-device.es.js";
7
- import { useIsMounted as oe } from "../../../helpers/hooks/use-is-mounted.es.js";
8
- import { autoUpdate as ne } from "../../../../../external/@floating-ui/dom/dist/floating-ui.dom.es.js";
9
- import { offset as re, flip as se, shift as ce, arrow as le } from "../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js";
10
- const ae = 3, ie = $({
1
+ import { jsx as B } from "react/jsx-runtime";
2
+ import { useFloating as J, useInteractions as K, useHover as N, safePolygon as Q, useClick as X, useFocus as Y, useRole as Z, useDismiss as _ } from "../../../../../external/@floating-ui/react/dist/floating-ui.react.es.js";
3
+ import { useState as $, useRef as D, useMemo as T, useCallback as ee, useId as te, createContext as oe } from "react";
4
+ import { OverlayContent as ne } from "./overlay-content.es.js";
5
+ import { OverlayTrigger as re } from "./overlay-trigger.es.js";
6
+ import { useIsTouchDevice as se } from "../../../helpers/hooks/use-is-touch-device.es.js";
7
+ import { useIsMounted as ae } from "../../../helpers/hooks/use-is-mounted.es.js";
8
+ import { autoUpdate as E } from "../../../../../external/@floating-ui/dom/dist/floating-ui.dom.es.js";
9
+ import { offset as ce, flip as le, shift as ie, arrow as fe } from "../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js";
10
+ const ue = 3, de = oe({
11
11
  open: !1,
12
12
  onOpenChange: () => {
13
13
  },
@@ -35,120 +35,121 @@ const ae = 3, ie = $({
35
35
  context: {},
36
36
  scrollLock: void 0,
37
37
  contentId: ""
38
- }), E = (L) => {
39
- const W = te(), {
40
- children: j,
41
- placement: A = "top",
42
- openWith: n = W ? "click" : "hover",
43
- defaultOpen: G = !1,
38
+ }), L = (W) => {
39
+ const j = se(), {
40
+ children: A,
41
+ placement: G = "top",
42
+ openWith: n = j ? "click" : "hover",
43
+ defaultOpen: H = !1,
44
44
  open: r,
45
45
  onToggle: o,
46
46
  role: c = "tooltip",
47
47
  arrowDimensions: e,
48
- offset: H = ae + ((e == null ? void 0 : e.height) ?? 0),
48
+ offset: S = ue + ((e == null ? void 0 : e.height) ?? 0),
49
49
  focusManager: l,
50
- dismissible: d,
51
- scrollLock: p
52
- } = L, { order: g = ["reference", "content"], initialFocus: h, modal: a, ...m } = l ?? {}, v = h !== void 0 ? h : a ? 0 : void 0, [y, O] = X(G), i = Y(null), x = oe(), f = T(() => o && typeof r < "u" ? r : y, [o, r, y]), u = Z(
53
- (k) => {
54
- typeof r > "u" && O(k), o == null || o(k);
50
+ dismissible: p,
51
+ scrollLock: g,
52
+ trackReferencePosition: U = !1
53
+ } = W, { order: h = ["reference", "content"], initialFocus: m, modal: i, ...v } = l ?? {}, y = m !== void 0 ? m : i ? 0 : void 0, [O, x] = $(H), f = D(null), F = ae(), u = T(() => o && typeof r < "u" ? r : O, [o, r, O]), d = ee(
54
+ (a) => {
55
+ typeof r > "u" && x(a), o == null || o(a);
55
56
  },
56
- [r, O, o]
57
- ), { x: F, y: C, refs: s, strategy: M, context: t, middlewareData: P, placement: R } = V({
58
- placement: A,
59
- open: f,
60
- onOpenChange: u,
57
+ [r, x, o]
58
+ ), { x: C, y: M, refs: s, strategy: P, context: t, middlewareData: R, placement: k } = J({
59
+ placement: G,
60
+ open: u,
61
+ onOpenChange: d,
61
62
  middleware: [
62
- re(H),
63
- se(),
64
- ce({ padding: 8 }),
65
- le({
66
- element: i,
63
+ ce(S),
64
+ le(),
65
+ ie({ padding: 8 }),
66
+ fe({
67
+ element: f,
67
68
  padding: 4
68
69
  })
69
70
  ],
70
- whileElementsMounted: ne
71
- }), { getReferenceProps: w, getFloatingProps: I } = q([
72
- z(t, {
71
+ whileElementsMounted: U ? (a, q, z) => E(a, q, z, { animationFrame: !0 }) : E
72
+ }), { getReferenceProps: w, getFloatingProps: I } = K([
73
+ N(t, {
73
74
  enabled: n === "hover",
74
- handleClose: B()
75
+ handleClose: Q()
75
76
  }),
76
- J(t, {
77
- toggle: d
77
+ X(t, {
78
+ toggle: p
78
79
  }),
79
- K(t, {
80
+ Y(t, {
80
81
  enabled: n === "hover"
81
82
  }),
82
- N(t, { role: c }),
83
- Q(t, {
84
- enabled: d,
83
+ Z(t, { role: c }),
84
+ _(t, {
85
+ enabled: p,
85
86
  outsidePressEvent: n === "click" ? "mousedown" : "pointerdown"
86
87
  })
87
- ]), b = _(), S = T(
88
+ ]), b = te(), V = T(
88
89
  () => ({
89
- open: f,
90
- onOpenChange: u,
91
- isMounted: x,
90
+ open: u,
91
+ onOpenChange: d,
92
+ isMounted: F,
92
93
  openWith: n,
93
94
  focusManager: l ? {
94
- order: g,
95
- modal: a,
96
- initialFocus: v,
97
- ...m
95
+ order: h,
96
+ modal: i,
97
+ initialFocus: y,
98
+ ...v
98
99
  } : void 0,
99
100
  reference: s.setReference,
100
101
  floating: s.setFloating,
101
- arrowRef: i,
102
- x: F,
103
- y: C,
104
- strategy: M,
102
+ arrowRef: f,
103
+ x: C,
104
+ y: M,
105
+ strategy: P,
105
106
  getReferenceProps: w,
106
107
  getFloatingProps: I,
107
108
  arrow: {
108
109
  width: e == null ? void 0 : e.width,
109
110
  height: e == null ? void 0 : e.height,
110
- ...P.arrow
111
+ ...R.arrow
111
112
  },
112
113
  context: t,
113
- placement: R,
114
- scrollLock: p,
114
+ placement: k,
115
+ scrollLock: g,
115
116
  role: c,
116
117
  contentId: b
117
118
  }),
118
119
  [
119
- f,
120
120
  u,
121
- x,
121
+ d,
122
+ F,
122
123
  n,
123
124
  l,
124
125
  s.setReference,
125
126
  s.setFloating,
126
- i,
127
- F,
127
+ f,
128
128
  C,
129
129
  M,
130
+ P,
130
131
  w,
131
132
  I,
132
133
  e == null ? void 0 : e.width,
133
134
  e == null ? void 0 : e.height,
134
- P.arrow,
135
+ R.arrow,
135
136
  t,
136
- R,
137
- p,
137
+ k,
138
+ g,
138
139
  c,
139
140
  b,
140
- a,
141
- g,
142
- v,
143
- m
141
+ i,
142
+ h,
143
+ y,
144
+ v
144
145
  ]
145
146
  );
146
- return /* @__PURE__ */ U(ie.Provider, { value: S, children: j });
147
+ return /* @__PURE__ */ B(de.Provider, { value: V, children: A });
147
148
  };
148
- E.Trigger = ee;
149
- E.Content = D;
149
+ L.Trigger = re;
150
+ L.Content = ne;
150
151
  export {
151
- E as Overlay,
152
- ie as OverlayContext,
153
- E as default
152
+ L as Overlay,
153
+ de as OverlayContext,
154
+ L as default
154
155
  };
@@ -38,6 +38,7 @@ export * from './components/form/file-upload/file-upload';
38
38
  export * from './components/form/file-dropzone/file-dropzone';
39
39
  export * from './components/form/select/select';
40
40
  export * from './components/form/checkbox/checkbox';
41
+ export * from './components/form/slider/slider';
41
42
  export * from './components/form/input-group';
42
43
  export * from './components/form/field/field';
43
44
  export * from './components/overlays/tooltip';