@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.
@@ -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,5 @@
1
+ import { Slider as o } from "./Slider.js";
2
+ export {
3
+ o as Slider
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -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';
@@ -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 S } from "./Buttons/Button.js";
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 Bo } from "./InputField/InputField.js";
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 { Sortable as ir } from "./Sortable/Sortable.js";
58
- import { Spinner as lr } from "./Spinner/Spinner.js";
59
- import { StatusBadge as dr } from "./StatusBadge/StatusBage.js";
60
- import { StatusPill as Br } from "./StatusPill/StatusPill.js";
61
- import { TextArea as sr } from "./TextArea/TextArea.js";
62
- import { ToggleSwitch as Cr } from "./ToggleSwitch/ToggleSwitch.js";
63
- import { Tooltip as Fr } from "./Tooltip/Tooltip.js";
64
- import { VarIndicator as Mr } from "./VarIndicator/VarIndicator.js";
65
- import { WeekSelector as Lr } from "./WeekSelector/WeekSelector.js";
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
- S as Button,
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
- Bo as InputField,
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 Sortable,
125
- lr as Spinner,
126
- dr as StatusBadge,
127
- Br as StatusPill,
128
- sr as TextArea,
129
- Cr as ToggleSwitch,
130
- Fr as Tooltip,
131
- Mr as VarIndicator,
132
- Lr as WeekSelector,
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 S } from "./components/Buttons/Button.js";
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 Bo } from "./components/InputField/InputField.js";
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 { Sortable as ir } from "./components/Sortable/Sortable.js";
58
- import { Spinner as lr } from "./components/Spinner/Spinner.js";
59
- import { StatusBadge as dr } from "./components/StatusBadge/StatusBage.js";
60
- import { StatusPill as Br } from "./components/StatusPill/StatusPill.js";
61
- import { TextArea as sr } from "./components/TextArea/TextArea.js";
62
- import { ToggleSwitch as Cr } from "./components/ToggleSwitch/ToggleSwitch.js";
63
- import { Tooltip as Fr } from "./components/Tooltip/Tooltip.js";
64
- import { VarIndicator as Mr } from "./components/VarIndicator/VarIndicator.js";
65
- import { WeekSelector as Lr } from "./components/WeekSelector/WeekSelector.js";
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
- S as Button,
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
- Bo as InputField,
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 Sortable,
125
- lr as Spinner,
126
- dr as StatusBadge,
127
- Br as StatusPill,
128
- sr as TextArea,
129
- Cr as ToggleSwitch,
130
- Fr as Tooltip,
131
- Mr as VarIndicator,
132
- Lr as WeekSelector,
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.48.0",
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.1",
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": "^22.18.8",
65
- "@types/react": "^19.2.0",
66
- "@types/react-dom": "^19.2.0",
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.0.0",
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.0",
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.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.8",
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.5",
113
- "@rollup/rollup-linux-x64-gnu": "^4.52.3",
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
  }