@uva-glass/component-library 3.48.0 → 3.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/Slider.css +1 -0
- package/dist/components/Slider/Slider.d.ts +14 -0
- package/dist/components/Slider/Slider.js +111 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/Slider.stories.d.ts +5 -0
- package/dist/components/Slider/Slider.stories.js +39 -0
- package/dist/components/Slider/Slider.stories.js.map +1 -0
- package/dist/components/Slider/index.d.ts +1 -0
- package/dist/components/Slider/index.js +5 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +24 -22
- package/dist/components/index.js.map +1 -1
- package/dist/index.js +24 -22
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._slider_wrapper_43bdt_1{align-items:center;display:flex;gap:1rem;width:100%}._slider_button_43bdt_8{align-items:center;appearance:none;aspect-ratio:1 / 1;background:none;border:1px solid transparent;border-radius:.25rem;color:var(--new-color-grey-700);cursor:pointer;display:flex;height:2rem;justify-content:center;width:2rem}._slider_button_43bdt_8:focus-visible{outline:.125rem dotted var(--new-color-navy-600);outline-offset:.125rem}._slider_button_43bdt_8:hover{border-color:var(--new-color-grey-700)}._slider_button_43bdt_8:disabled,._slider_button_43bdt_8:disabled:hover{border:none;cursor:not-allowed}._slider_trackwrapper_43bdt_38{display:flex;position:relative;width:100%}._slider_balloon_43bdt_44{color:var(--new-color-grey-700);position:absolute;text-align:center;top:-1.8125rem;white-space:nowrap}._slider_input_43bdt_52{appearance:none;background:var(--new-color-grey-400);flex-grow:1;height:.25rem}._slider_input_43bdt_52:focus-visible{outline:.125rem dotted var(--new-color-navy-600);outline-offset:.125rem}._slider_input_43bdt_52:disabled{cursor:not-allowed}._slider_input_43bdt_52::-webkit-slider-runnable-track{appearance:none;color:var(--new-color-navy-600);cursor:pointer;height:2rem;margin-top:-.125rem}._slider_input_43bdt_52:disabled::-webkit-slider-runnable-track{cursor:not-allowed}._slider_input_43bdt_52::-webkit-slider-thumb{appearance:none;background:var(--new-color-uva-white);border:2px solid var(--new-color-navy-800);border-radius:.125rem;cursor:pointer;height:var(--thumb-size);margin-top:calc(.5rem + 1px);position:relative;width:var(--thumb-size)}._slider_input_43bdt_52:disabled::-webkit-slider-thumb,._slider_input_43bdt_52:disabled:hover::-webkit-slider-thumb{background:var(--new-color-grey-700);border:2px solid var(--new-color-grey-700);cursor:not-allowed}._slider_input_43bdt_52::-moz-range-thumb{appearance:none;background:var(--new-color-uva-white);border:2px solid var(--new-color-navy-800);border-radius:.125rem;cursor:pointer;height:var(--thumb-size);margin-top:calc(-.25rem - 1px);position:relative;width:var(--thumb-size)}._slider_input_43bdt_52:disabled::-moz-range-thumb,._slider_input_43bdt_52:hover:disabled::-moz-range-thumb{background:var(--new-color-grey-700);border:2px solid var(--new-color-grey-700);cursor:not-allowed}._slider_input_43bdt_52::-ms-thumb{appearance:none;background:var(--new-color-uva-white);border:2px solid var(--new-color-navy-800);border-radius:.125rem;cursor:pointer;height:var(--thumb-size);margin-top:calc(-.25rem - 1px);position:relative;width:var(--thumb-size)}._slider_input_43bdt_52:disabled::-ms-thumb,._slider_input_43bdt_52:hover:disabled::-ms-thumb{background:var(--new-color-grey-700);border:2px solid var(--new-color-grey-700);cursor:not-allowed}._slider_input_43bdt_52::-webkit-slider-thumb:hover{background:var(--new-color-navy-200)}._slider_input_43bdt_52::-moz-range-thumb:hover{background:var(--new-color-navy-200)}._slider_input_43bdt_52::-ms-thumb:hover{background:var(--new-color-navy-200)}._slider_input_43bdt_52::-moz-range-progress{background-color:var(--new-color-navy-600)}._slider_input_43bdt_52::-moz-range-track{background-color:var(--new-color-grey-400)}._slider_input_43bdt_52::-ms-fill-lower{background-color:var(--new-color-navy-600)}._slider_input_43bdt_52::-ms-fill-upper{background-color:var(--new-color-grey-400)}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface SliderProps {
|
|
2
|
+
min: number;
|
|
3
|
+
max: number;
|
|
4
|
+
value?: number;
|
|
5
|
+
step?: number;
|
|
6
|
+
units?: string;
|
|
7
|
+
navigationLabels?: {
|
|
8
|
+
increase: string;
|
|
9
|
+
decrease: string;
|
|
10
|
+
};
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
onChange?: (value: number) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const Slider: ({ min, max, value, step, units, navigationLabels, disabled, onChange, }: SliderProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { jsxs as g, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { useState as S, useRef as m, useEffectEvent as x, useEffect as B } from "react";
|
|
3
|
+
import { c as H } from "../../clsx-OuTLNxxd.js";
|
|
4
|
+
import { Icon as E } from "../Icon/Icon.js";
|
|
5
|
+
import '../../assets/Slider.css';const T = "_slider_wrapper_43bdt_1", j = "_slider_button_43bdt_8", C = "_slider_trackwrapper_43bdt_38", D = "_slider_balloon_43bdt_44", F = "_slider_input_43bdt_52", l = {
|
|
6
|
+
slider_wrapper: T,
|
|
7
|
+
slider_button: j,
|
|
8
|
+
slider_trackwrapper: C,
|
|
9
|
+
slider_balloon: D,
|
|
10
|
+
slider_input: F
|
|
11
|
+
}, v = 0.5, I = 100, p = 16, U = 16, G = ({
|
|
12
|
+
min: t,
|
|
13
|
+
max: o,
|
|
14
|
+
value: i,
|
|
15
|
+
step: k = 1,
|
|
16
|
+
units: c,
|
|
17
|
+
navigationLabels: d,
|
|
18
|
+
disabled: n = !1,
|
|
19
|
+
onChange: _
|
|
20
|
+
}) => {
|
|
21
|
+
const [s, f] = S(i !== void 0 ? i : (t + o) * v), [V, P] = S(""), u = m(null), w = m(null), b = m(null), N = (r) => {
|
|
22
|
+
const e = s + r * k;
|
|
23
|
+
e >= t && e <= o && (f(e), h(e), y(e), _ && _(e));
|
|
24
|
+
}, R = (r) => {
|
|
25
|
+
const e = Number(r.target.value);
|
|
26
|
+
f(e), h(e), y(e), _ && _(e);
|
|
27
|
+
}, h = (r) => {
|
|
28
|
+
if (!u.current) return;
|
|
29
|
+
const e = (r - t) / (o - t) * I;
|
|
30
|
+
n ? u.current.style.background = `linear-gradient(
|
|
31
|
+
to right,
|
|
32
|
+
var(--new-color-grey-700) 0%,
|
|
33
|
+
var(--new-color-grey-700) ${e}%,
|
|
34
|
+
var(--new-color-grey-400) ${e}%,
|
|
35
|
+
var(--new-color-grey-400) 100%)` : u.current.style.background = `linear-gradient(
|
|
36
|
+
to right,
|
|
37
|
+
var(--new-color-navy-600) 0%,
|
|
38
|
+
var(--new-color-navy-600) ${e}%,
|
|
39
|
+
var(--new-color-grey-400) ${e}%,
|
|
40
|
+
var(--new-color-grey-400) 100%)`;
|
|
41
|
+
}, y = (r) => {
|
|
42
|
+
if (w.current && b.current) {
|
|
43
|
+
const e = b.current.clientWidth, $ = w.current.clientWidth - p, W = (r - t) / (o - t) * $ - (e - p) * v, z = Math.max(0, Math.min(W, $ - e + p * v));
|
|
44
|
+
P(`${z}px`);
|
|
45
|
+
}
|
|
46
|
+
}, M = x((r) => {
|
|
47
|
+
f(r), h(r), y(r);
|
|
48
|
+
});
|
|
49
|
+
return B(() => {
|
|
50
|
+
i !== void 0 && M(i);
|
|
51
|
+
}, [i, n]), /* @__PURE__ */ g("div", { className: l.slider_wrapper, children: [
|
|
52
|
+
/* @__PURE__ */ a(
|
|
53
|
+
"button",
|
|
54
|
+
{
|
|
55
|
+
className: l.slider_button,
|
|
56
|
+
onClick: () => N(-1),
|
|
57
|
+
"aria-label": d?.decrease ? d.decrease : "Verlaag waarde",
|
|
58
|
+
disabled: n,
|
|
59
|
+
children: /* @__PURE__ */ a(E, { name: "Minus", size: 20 })
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ g("div", { className: l.slider_trackwrapper, ref: w, children: [
|
|
63
|
+
/* @__PURE__ */ g(
|
|
64
|
+
"div",
|
|
65
|
+
{
|
|
66
|
+
className: H(l.slider_balloon, { [l["slider_balloon--disabled"]]: n }),
|
|
67
|
+
style: { left: V },
|
|
68
|
+
ref: b,
|
|
69
|
+
children: [
|
|
70
|
+
s,
|
|
71
|
+
c && /* @__PURE__ */ a("span", { className: l.slider_units, children: c })
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
/* @__PURE__ */ a(
|
|
76
|
+
"input",
|
|
77
|
+
{
|
|
78
|
+
type: "range",
|
|
79
|
+
className: l.slider_input,
|
|
80
|
+
min: t,
|
|
81
|
+
max: o,
|
|
82
|
+
step: k,
|
|
83
|
+
value: s,
|
|
84
|
+
onChange: R,
|
|
85
|
+
ref: u,
|
|
86
|
+
style: { "--thumb-size": `${p / U}rem` },
|
|
87
|
+
"aria-valuemin": t,
|
|
88
|
+
"aria-valuemax": o,
|
|
89
|
+
"aria-valuenow": s,
|
|
90
|
+
"aria-valuetext": c ? `${s} ${c}` : `${s}`,
|
|
91
|
+
"aria-label": "Slider",
|
|
92
|
+
disabled: n
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ a(
|
|
97
|
+
"button",
|
|
98
|
+
{
|
|
99
|
+
className: l.slider_button,
|
|
100
|
+
onClick: () => N(1),
|
|
101
|
+
"aria-label": d?.increase ? d.increase : "Verhoog waarde",
|
|
102
|
+
disabled: n,
|
|
103
|
+
children: /* @__PURE__ */ a(E, { name: "Plus", size: 20 })
|
|
104
|
+
}
|
|
105
|
+
)
|
|
106
|
+
] });
|
|
107
|
+
};
|
|
108
|
+
export {
|
|
109
|
+
G as Slider
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=Slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.js","sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useRef, useState } from 'react';\r\nimport { clsx } from 'clsx';\r\n\r\nimport type { CSSProperties } from 'react';\r\n\r\nimport styles from './Slider.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface SliderProps {\r\n /* The minimum value of the slider */\r\n min: number;\r\n /* The maximum value of the slider */\r\n max: number;\r\n /* The current value of the slider */\r\n value?: number;\r\n /* The step value of the slider */\r\n step?: number;\r\n /* The units to display next to the value */\r\n units?: string;\r\n /* aria-label labels for navigation buttons */\r\n navigationLabels?: { increase: string; decrease: string };\r\n /* Whether the slider is disabled */\r\n disabled?: boolean;\r\n /* Callback function when the value changes */\r\n onChange?: (value: number) => void;\r\n}\r\n\r\nconst HALF_STEP = 0.5;\r\nconst HUNDRED = 100;\r\nconst THUMB_SIZE = 16;\r\nconst REM = 16;\r\n\r\nexport const Slider = ({\r\n min,\r\n max,\r\n value,\r\n step = 1,\r\n units,\r\n navigationLabels,\r\n disabled = false,\r\n onChange,\r\n}: SliderProps) => {\r\n const [sliderValue, setSliderValue] = useState(value !== undefined ? value : (min + max) * HALF_STEP);\r\n const [balloonLeftPosition, setBalloonLeftPosition] = useState('');\r\n const sliderRef = useRef<HTMLInputElement>(null);\r\n const trackWrapperRef = useRef<HTMLDivElement>(null);\r\n const balloonRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleButtonClick = (direction: number) => {\r\n const newValue = sliderValue + direction * step;\r\n if (newValue >= min && newValue <= max) {\r\n setSliderValue(newValue);\r\n paintValueOnTrack(newValue);\r\n setFloaterPosition(newValue);\r\n if (onChange) {\r\n onChange(newValue);\r\n }\r\n }\r\n };\r\n\r\n const handleSliderChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = Number(event.target.value);\r\n setSliderValue(newValue);\r\n paintValueOnTrack(newValue);\r\n setFloaterPosition(newValue);\r\n if (onChange) {\r\n onChange(newValue);\r\n }\r\n };\r\n\r\n const paintValueOnTrack = (valueToPaint: number) => {\r\n if (!sliderRef.current) return;\r\n const percentage = ((valueToPaint - min) / (max - min)) * HUNDRED;\r\n if (disabled) {\r\n sliderRef.current.style.background = `linear-gradient(\r\n to right, \r\n var(--new-color-grey-700) 0%, \r\n var(--new-color-grey-700) ${percentage}%, \r\n var(--new-color-grey-400) ${percentage}%, \r\n var(--new-color-grey-400) 100%)`;\r\n } else {\r\n sliderRef.current.style.background = `linear-gradient(\r\n to right, \r\n var(--new-color-navy-600) 0%, \r\n var(--new-color-navy-600) ${percentage}%, \r\n var(--new-color-grey-400) ${percentage}%, \r\n var(--new-color-grey-400) 100%)`;\r\n }\r\n };\r\n\r\n const setFloaterPosition = (value: number) => {\r\n if (trackWrapperRef.current && balloonRef.current) {\r\n const balloonWidth = balloonRef.current.clientWidth;\r\n const trackWidth = trackWrapperRef.current.clientWidth - THUMB_SIZE;\r\n const position = ((value - min) / (max - min)) * trackWidth;\r\n const leftPosition = position - (balloonWidth - THUMB_SIZE) * HALF_STEP;\r\n const clampedLeft = Math.max(0, Math.min(leftPosition, trackWidth - balloonWidth + THUMB_SIZE * HALF_STEP));\r\n setBalloonLeftPosition(`${clampedLeft}px`);\r\n }\r\n };\r\n\r\n const initializeSlider = useEffectEvent((value: number) => {\r\n setSliderValue(value);\r\n paintValueOnTrack(value);\r\n setFloaterPosition(value);\r\n });\r\n\r\n useEffect(() => {\r\n if (value !== undefined) {\r\n initializeSlider(value);\r\n }\r\n }, [value, disabled]);\r\n\r\n return (\r\n <div className={styles['slider_wrapper']}>\r\n <button\r\n className={styles['slider_button']}\r\n onClick={() => handleButtonClick(-1)}\r\n aria-label={navigationLabels?.decrease ? navigationLabels.decrease : 'Verlaag waarde'}\r\n disabled={disabled}\r\n >\r\n <Icon name=\"Minus\" size={20} />\r\n </button>\r\n <div className={styles['slider_trackwrapper']} ref={trackWrapperRef}>\r\n <div\r\n className={clsx(styles['slider_balloon'], { [styles['slider_balloon--disabled']]: disabled })}\r\n style={{ left: balloonLeftPosition }}\r\n ref={balloonRef}\r\n >\r\n {sliderValue}\r\n {units && <span className={styles['slider_units']}>{units}</span>}\r\n </div>\r\n <input\r\n type=\"range\"\r\n className={styles['slider_input']}\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={sliderValue}\r\n onChange={handleSliderChange}\r\n ref={sliderRef}\r\n style={{ '--thumb-size': `${THUMB_SIZE / REM}rem` } as CSSProperties}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={sliderValue}\r\n aria-valuetext={units ? `${sliderValue} ${units}` : `${sliderValue}`}\r\n aria-label=\"Slider\"\r\n disabled={disabled}\r\n />\r\n </div>\r\n <button\r\n className={styles['slider_button']}\r\n onClick={() => handleButtonClick(1)}\r\n aria-label={navigationLabels?.increase ? navigationLabels.increase : 'Verhoog waarde'}\r\n disabled={disabled}\r\n >\r\n <Icon name=\"Plus\" size={20} />\r\n </button>\r\n </div>\r\n );\r\n};\r\n"],"names":["HALF_STEP","HUNDRED","THUMB_SIZE","REM","Slider","min","max","value","step","units","navigationLabels","disabled","onChange","sliderValue","setSliderValue","useState","balloonLeftPosition","setBalloonLeftPosition","sliderRef","useRef","trackWrapperRef","balloonRef","handleButtonClick","direction","newValue","paintValueOnTrack","setFloaterPosition","handleSliderChange","event","valueToPaint","percentage","balloonWidth","trackWidth","leftPosition","clampedLeft","initializeSlider","useEffectEvent","useEffect","jsxs","styles","jsx","Icon","clsx"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Meta } from '@storybook/react';
|
|
2
|
+
import { SliderProps } from './Slider';
|
|
3
|
+
declare const _default: Meta<SliderProps>;
|
|
4
|
+
export default _default;
|
|
5
|
+
export declare const SliderExample: import('storybook/internal/csf').AnnotatedStoryFn<import('@storybook/react').ReactRenderer, SliderProps>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsxs as o, Fragment as a, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Slider as i } from "./Slider.js";
|
|
3
|
+
const l = "<Slider min={number} max={number} value?={number} step?={number} units?={string} onChange?={(value: number) => void} />", h = {
|
|
4
|
+
title: "Atoms/Slider",
|
|
5
|
+
component: i,
|
|
6
|
+
argTypes: {
|
|
7
|
+
onChange: {
|
|
8
|
+
action: "Slider value",
|
|
9
|
+
table: {
|
|
10
|
+
disable: !0
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
parameters: {
|
|
15
|
+
inspectComponent: i,
|
|
16
|
+
codeString: l
|
|
17
|
+
}
|
|
18
|
+
}, d = (n) => {
|
|
19
|
+
const t = (r) => {
|
|
20
|
+
n.onChange && n.onChange(r);
|
|
21
|
+
};
|
|
22
|
+
return /* @__PURE__ */ o(a, { children: [
|
|
23
|
+
/* @__PURE__ */ e("div", { style: { width: "150px" }, children: /* @__PURE__ */ e(i, { ...n, onChange: t }) }),
|
|
24
|
+
/* @__PURE__ */ e("div", { style: { width: "300px", marginTop: "40px" }, children: /* @__PURE__ */ e(i, { ...n, onChange: t, value: 40 }) }),
|
|
25
|
+
/* @__PURE__ */ e("div", { style: { width: "600px", marginTop: "40px" }, children: /* @__PURE__ */ e(i, { ...n, onChange: t, value: 60 }) })
|
|
26
|
+
] });
|
|
27
|
+
}, m = d.bind({});
|
|
28
|
+
m.args = {
|
|
29
|
+
min: 0,
|
|
30
|
+
max: 100,
|
|
31
|
+
step: 5,
|
|
32
|
+
units: "%",
|
|
33
|
+
value: 80
|
|
34
|
+
};
|
|
35
|
+
export {
|
|
36
|
+
m as SliderExample,
|
|
37
|
+
h as default
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=Slider.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.stories.js","sources":["../../../src/components/Slider/Slider.stories.tsx"],"sourcesContent":["import type { Meta, StoryFn } from '@storybook/react';\r\nimport type { SliderProps } from './Slider';\r\n\r\nimport { Slider } from './Slider';\r\n\r\nconst codeString =\r\n '<Slider min={number} max={number} value?={number} step?={number} units?={string} onChange?={(value: number) => void} />';\r\n\r\n// eslint-disable-next-line import/no-default-export\r\nexport default {\r\n title: 'Atoms/Slider',\r\n component: Slider,\r\n argTypes: {\r\n onChange: {\r\n action: 'Slider value',\r\n table: {\r\n disable: true,\r\n },\r\n },\r\n },\r\n parameters: {\r\n inspectComponent: Slider,\r\n codeString: codeString,\r\n },\r\n} as Meta<SliderProps>;\r\n\r\nconst Template: StoryFn<SliderProps> = (args) => {\r\n const handleSliderChange = (value: number) => {\r\n if (args.onChange) {\r\n args.onChange(value);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div style={{ width: '150px' }}>\r\n <Slider {...args} onChange={handleSliderChange} />\r\n </div>\r\n <div style={{ width: '300px', marginTop: '40px' }}>\r\n <Slider {...args} onChange={handleSliderChange} value={40} />\r\n </div>\r\n <div style={{ width: '600px', marginTop: '40px' }}>\r\n <Slider {...args} onChange={handleSliderChange} value={60} />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport const SliderExample = Template.bind({});\r\nSliderExample.args = {\r\n min: 0,\r\n max: 100,\r\n step: 5,\r\n units: '%',\r\n value: 80,\r\n};\r\n"],"names":["codeString","Slider_stories","Slider","Template","args","handleSliderChange","value","jsxs","Fragment","jsx","SliderExample"],"mappings":";;AAKA,MAAMA,IACJ,2HAGFC,IAAe;AAAA,EACb,OAAO;AAAA,EACP,WAAWC;AAAA,EACX,UAAU;AAAA,IACR,UAAU;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAAA,EAEF,YAAY;AAAA,IACV,kBAAkBA;AAAA,IAClB,YAAAF;AAAA,EAAA;AAEJ,GAEMG,IAAiC,CAACC,MAAS;AAC/C,QAAMC,IAAqB,CAACC,MAAkB;AAC5C,IAAIF,EAAK,YACPA,EAAK,SAASE,CAAK;AAAA,EAEvB;AAEA,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,OAAO,EAAE,OAAO,QAAA,GACnB,UAAA,gBAAAA,EAACP,GAAA,EAAQ,GAAGE,GAAM,UAAUC,EAAA,CAAoB,GAClD;AAAA,sBACC,OAAA,EAAI,OAAO,EAAE,OAAO,SAAS,WAAW,UACvC,UAAA,gBAAAI,EAACP,KAAQ,GAAGE,GAAM,UAAUC,GAAoB,OAAO,IAAI,GAC7D;AAAA,sBACC,OAAA,EAAI,OAAO,EAAE,OAAO,SAAS,WAAW,UACvC,UAAA,gBAAAI,EAACP,KAAQ,GAAGE,GAAM,UAAUC,GAAoB,OAAO,IAAI,EAAA,CAC7D;AAAA,EAAA,GACF;AAEJ,GAEaK,IAAgBP,EAAS,KAAK,CAAA,CAAE;AAC7CO,EAAc,OAAO;AAAA,EACnB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AACT;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Slider';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -52,6 +52,7 @@ export * from './SearchField';
|
|
|
52
52
|
export * from './SectionNotification';
|
|
53
53
|
export * from './SelectListbox';
|
|
54
54
|
export * from './SelectListbox/SelectProvider';
|
|
55
|
+
export * from './Slider';
|
|
55
56
|
export * from './Sortable';
|
|
56
57
|
export * from './Spinner';
|
|
57
58
|
export * from './StatusBadge';
|
package/dist/components/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { AppStatusBar as a } from "./AppStatusBar/AppStatusBar.js";
|
|
|
5
5
|
import { Attention as n } from "./Attention/Attention.js";
|
|
6
6
|
import { Backdrop as c } from "./Backdrop/Backdrop.js";
|
|
7
7
|
import { ButtonGroup as u } from "./ButtonGroup/ButtonGroup.js";
|
|
8
|
-
import { Button as
|
|
8
|
+
import { Button as B } from "./Buttons/Button.js";
|
|
9
9
|
import { LinkButton as b } from "./Buttons/LinkButton.js";
|
|
10
10
|
import { MenuButton as k } from "./Buttons/MenuButton.js";
|
|
11
11
|
import { Card as I } from "./Card/Card.js";
|
|
@@ -31,7 +31,7 @@ import { IconButton as fo } from "./IconButton/IconButton.js";
|
|
|
31
31
|
import { InfoBanner as ao } from "./InfoBanner/InfoBanner.js";
|
|
32
32
|
import { InfoMessage as no } from "./InfoMessage/InfoMessage.js";
|
|
33
33
|
import { Input as co } from "./Input/Input.js";
|
|
34
|
-
import { InputField as
|
|
34
|
+
import { InputField as So } from "./InputField/InputField.js";
|
|
35
35
|
import { Label as so } from "./Label/Label.js";
|
|
36
36
|
import { MenuLink as Co } from "./MenuLink/MenuLink.js";
|
|
37
37
|
import { MetaDataList as Fo } from "./MetaDataList/MetaDataList.js";
|
|
@@ -54,15 +54,16 @@ import { SearchField as or } from "./SearchField/SearchField.js";
|
|
|
54
54
|
import { SectionNotification as er } from "./SectionNotification/SectionNotification.js";
|
|
55
55
|
import { SelectListbox as pr } from "./SelectListbox/SelectListbox.js";
|
|
56
56
|
import { SelectProvider as fr, useSelect as mr } from "./SelectListbox/SelectProvider.js";
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
57
|
+
import { Slider as ir } from "./Slider/Slider.js";
|
|
58
|
+
import { Sortable as lr } from "./Sortable/Sortable.js";
|
|
59
|
+
import { Spinner as dr } from "./Spinner/Spinner.js";
|
|
60
|
+
import { StatusBadge as Sr } from "./StatusBadge/StatusBage.js";
|
|
61
|
+
import { StatusPill as sr } from "./StatusPill/StatusPill.js";
|
|
62
|
+
import { TextArea as Cr } from "./TextArea/TextArea.js";
|
|
63
|
+
import { ToggleSwitch as Fr } from "./ToggleSwitch/ToggleSwitch.js";
|
|
64
|
+
import { Tooltip as Mr } from "./Tooltip/Tooltip.js";
|
|
65
|
+
import { VarIndicator as Lr } from "./VarIndicator/VarIndicator.js";
|
|
66
|
+
import { WeekSelector as Rr } from "./WeekSelector/WeekSelector.js";
|
|
66
67
|
export {
|
|
67
68
|
e as Accordion,
|
|
68
69
|
p as AccordionCard,
|
|
@@ -70,7 +71,7 @@ export {
|
|
|
70
71
|
a as AppStatusBar,
|
|
71
72
|
n as Attention,
|
|
72
73
|
c as Backdrop,
|
|
73
|
-
|
|
74
|
+
B as Button,
|
|
74
75
|
u as ButtonGroup,
|
|
75
76
|
I as Card,
|
|
76
77
|
g as Checkbox,
|
|
@@ -95,7 +96,7 @@ export {
|
|
|
95
96
|
ao as InfoBanner,
|
|
96
97
|
no as InfoMessage,
|
|
97
98
|
co as Input,
|
|
98
|
-
|
|
99
|
+
So as InputField,
|
|
99
100
|
so as Label,
|
|
100
101
|
b as LinkButton,
|
|
101
102
|
k as MenuButton,
|
|
@@ -121,15 +122,16 @@ export {
|
|
|
121
122
|
er as SectionNotification,
|
|
122
123
|
pr as SelectListbox,
|
|
123
124
|
fr as SelectProvider,
|
|
124
|
-
ir as
|
|
125
|
-
lr as
|
|
126
|
-
dr as
|
|
127
|
-
|
|
128
|
-
sr as
|
|
129
|
-
Cr as
|
|
130
|
-
Fr as
|
|
131
|
-
Mr as
|
|
132
|
-
Lr as
|
|
125
|
+
ir as Slider,
|
|
126
|
+
lr as Sortable,
|
|
127
|
+
dr as Spinner,
|
|
128
|
+
Sr as StatusBadge,
|
|
129
|
+
sr as StatusPill,
|
|
130
|
+
Cr as TextArea,
|
|
131
|
+
Fr as ToggleSwitch,
|
|
132
|
+
Mr as Tooltip,
|
|
133
|
+
Lr as VarIndicator,
|
|
134
|
+
Rr as WeekSelector,
|
|
133
135
|
mr as useSelect
|
|
134
136
|
};
|
|
135
137
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { AppStatusBar as a } from "./components/AppStatusBar/AppStatusBar.js";
|
|
|
5
5
|
import { Attention as n } from "./components/Attention/Attention.js";
|
|
6
6
|
import { Backdrop as c } from "./components/Backdrop/Backdrop.js";
|
|
7
7
|
import { ButtonGroup as u } from "./components/ButtonGroup/ButtonGroup.js";
|
|
8
|
-
import { Button as
|
|
8
|
+
import { Button as B } from "./components/Buttons/Button.js";
|
|
9
9
|
import { LinkButton as b } from "./components/Buttons/LinkButton.js";
|
|
10
10
|
import { MenuButton as k } from "./components/Buttons/MenuButton.js";
|
|
11
11
|
import { Card as I } from "./components/Card/Card.js";
|
|
@@ -31,7 +31,7 @@ import { IconButton as fo } from "./components/IconButton/IconButton.js";
|
|
|
31
31
|
import { InfoBanner as ao } from "./components/InfoBanner/InfoBanner.js";
|
|
32
32
|
import { InfoMessage as no } from "./components/InfoMessage/InfoMessage.js";
|
|
33
33
|
import { Input as co } from "./components/Input/Input.js";
|
|
34
|
-
import { InputField as
|
|
34
|
+
import { InputField as So } from "./components/InputField/InputField.js";
|
|
35
35
|
import { Label as so } from "./components/Label/Label.js";
|
|
36
36
|
import { MenuLink as Co } from "./components/MenuLink/MenuLink.js";
|
|
37
37
|
import { MetaDataList as Fo } from "./components/MetaDataList/MetaDataList.js";
|
|
@@ -54,15 +54,16 @@ import { SearchField as or } from "./components/SearchField/SearchField.js";
|
|
|
54
54
|
import { SectionNotification as er } from "./components/SectionNotification/SectionNotification.js";
|
|
55
55
|
import { SelectListbox as pr } from "./components/SelectListbox/SelectListbox.js";
|
|
56
56
|
import { SelectProvider as fr, useSelect as mr } from "./components/SelectListbox/SelectProvider.js";
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
57
|
+
import { Slider as ir } from "./components/Slider/Slider.js";
|
|
58
|
+
import { Sortable as lr } from "./components/Sortable/Sortable.js";
|
|
59
|
+
import { Spinner as dr } from "./components/Spinner/Spinner.js";
|
|
60
|
+
import { StatusBadge as Sr } from "./components/StatusBadge/StatusBage.js";
|
|
61
|
+
import { StatusPill as sr } from "./components/StatusPill/StatusPill.js";
|
|
62
|
+
import { TextArea as Cr } from "./components/TextArea/TextArea.js";
|
|
63
|
+
import { ToggleSwitch as Fr } from "./components/ToggleSwitch/ToggleSwitch.js";
|
|
64
|
+
import { Tooltip as Mr } from "./components/Tooltip/Tooltip.js";
|
|
65
|
+
import { VarIndicator as Lr } from "./components/VarIndicator/VarIndicator.js";
|
|
66
|
+
import { WeekSelector as Rr } from "./components/WeekSelector/WeekSelector.js";
|
|
66
67
|
export {
|
|
67
68
|
e as Accordion,
|
|
68
69
|
p as AccordionCard,
|
|
@@ -70,7 +71,7 @@ export {
|
|
|
70
71
|
a as AppStatusBar,
|
|
71
72
|
n as Attention,
|
|
72
73
|
c as Backdrop,
|
|
73
|
-
|
|
74
|
+
B as Button,
|
|
74
75
|
u as ButtonGroup,
|
|
75
76
|
I as Card,
|
|
76
77
|
g as Checkbox,
|
|
@@ -95,7 +96,7 @@ export {
|
|
|
95
96
|
ao as InfoBanner,
|
|
96
97
|
no as InfoMessage,
|
|
97
98
|
co as Input,
|
|
98
|
-
|
|
99
|
+
So as InputField,
|
|
99
100
|
so as Label,
|
|
100
101
|
b as LinkButton,
|
|
101
102
|
k as MenuButton,
|
|
@@ -121,15 +122,16 @@ export {
|
|
|
121
122
|
er as SectionNotification,
|
|
122
123
|
pr as SelectListbox,
|
|
123
124
|
fr as SelectProvider,
|
|
124
|
-
ir as
|
|
125
|
-
lr as
|
|
126
|
-
dr as
|
|
127
|
-
|
|
128
|
-
sr as
|
|
129
|
-
Cr as
|
|
130
|
-
Fr as
|
|
131
|
-
Mr as
|
|
132
|
-
Lr as
|
|
125
|
+
ir as Slider,
|
|
126
|
+
lr as Sortable,
|
|
127
|
+
dr as Spinner,
|
|
128
|
+
Sr as StatusBadge,
|
|
129
|
+
sr as StatusPill,
|
|
130
|
+
Cr as TextArea,
|
|
131
|
+
Fr as ToggleSwitch,
|
|
132
|
+
Mr as Tooltip,
|
|
133
|
+
Lr as VarIndicator,
|
|
134
|
+
Rr as WeekSelector,
|
|
133
135
|
mr as useSelect
|
|
134
136
|
};
|
|
135
137
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@uva-glass/component-library",
|
|
3
3
|
"author": "Team Glass - Frontend vrienden",
|
|
4
4
|
"private": false,
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.49.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@commitlint/config-conventional": "^20.0.0",
|
|
48
48
|
"@react-aria/button": "^3.14.2",
|
|
49
49
|
"@react-aria/dialog": "^3.5.31",
|
|
50
|
-
"@react-aria/focus": "^3.21.
|
|
50
|
+
"@react-aria/focus": "^3.21.2",
|
|
51
51
|
"@react-aria/overlays": "^3.30.0",
|
|
52
52
|
"@react-types/dialog": "^3.5.22",
|
|
53
53
|
"@semantic-release/git": "^10.0.1",
|
|
@@ -61,16 +61,16 @@
|
|
|
61
61
|
"@testing-library/jest-dom": "^6.9.1",
|
|
62
62
|
"@testing-library/react": "^16.3.0",
|
|
63
63
|
"@types/jest": "^30.0.0",
|
|
64
|
-
"@types/node": "^
|
|
65
|
-
"@types/react": "^19.2.
|
|
66
|
-
"@types/react-dom": "^19.2.
|
|
64
|
+
"@types/node": "^24.7.0",
|
|
65
|
+
"@types/react": "^19.2.2",
|
|
66
|
+
"@types/react-dom": "^19.2.1",
|
|
67
67
|
"@uva-glass/eslint-config": "^1.3.11",
|
|
68
68
|
"@uva-glass/stylelint-config": "^1.2.3",
|
|
69
69
|
"@vitejs/plugin-react": "^5.0.4",
|
|
70
70
|
"babel-jest": "^30.2.0",
|
|
71
71
|
"babel-plugin-transform-vite-meta-env": "^1.0.3",
|
|
72
72
|
"clsx": "^2.1.1",
|
|
73
|
-
"eslint-plugin-react-hooks": "^6.
|
|
73
|
+
"eslint-plugin-react-hooks": "^6.1.1",
|
|
74
74
|
"glob": "^11.0.3",
|
|
75
75
|
"husky": "^9.1.7",
|
|
76
76
|
"identity-obj-proxy": "^3.0.0",
|
|
@@ -84,14 +84,14 @@
|
|
|
84
84
|
"react-router": "^7.9.3",
|
|
85
85
|
"semantic-release": "^24.2.9",
|
|
86
86
|
"storybook": "^9.1.10",
|
|
87
|
-
"style-dictionary": "^5.1.
|
|
87
|
+
"style-dictionary": "^5.1.1",
|
|
88
88
|
"stylelint": "^16.24.0",
|
|
89
89
|
"stylelint-config-recommended": "^17.0.0",
|
|
90
|
-
"stylelint-config-standard": "^39.0.
|
|
90
|
+
"stylelint-config-standard": "^39.0.1",
|
|
91
91
|
"stylelint-order": "^7.0.0",
|
|
92
92
|
"ts-node": "^10.9.2",
|
|
93
93
|
"typescript": "^5.9.3",
|
|
94
|
-
"vite": "^7.1.
|
|
94
|
+
"vite": "^7.1.9",
|
|
95
95
|
"vite-plugin-dts": "^4.5.4",
|
|
96
96
|
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
97
97
|
"vite-plugin-static-copy": "^3.1.3",
|
|
@@ -109,8 +109,8 @@
|
|
|
109
109
|
"lexical": "^0.36.2"
|
|
110
110
|
},
|
|
111
111
|
"optionalDependencies": {
|
|
112
|
-
"@ast-grep/napi-linux-x64-gnu": "0.39.
|
|
113
|
-
"@rollup/rollup-linux-x64-gnu": "^4.52.
|
|
112
|
+
"@ast-grep/napi-linux-x64-gnu": "0.39.6",
|
|
113
|
+
"@rollup/rollup-linux-x64-gnu": "^4.52.4",
|
|
114
114
|
"@rspack/binding-darwin-arm64": "1.5.8",
|
|
115
115
|
"@rspack/binding-linux-x64-gnu": "1.5.8"
|
|
116
116
|
}
|