@pittorica/slider-react 0.25.0 → 0.26.1

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/README.md CHANGED
@@ -4,16 +4,32 @@ The `Slider` component.
4
4
 
5
5
  ## Installation
6
6
 
7
- ```bash
7
+ \`\`\`bash
8
8
  npm install @pittorica/slider-react
9
- ```
9
+ \`\`\`
10
10
 
11
11
  ## Usage
12
12
 
13
- ```jsx
13
+ \`\`\`jsx
14
14
  import { Slider } from '@pittorica/slider-react';
15
- // TODO: Add usage example
16
- ```
15
+
16
+ function MyForm() {
17
+ return (
18
+
19
+ <form>
20
+ <Slider
21
+ min={0}
22
+ max={100}
23
+ defaultValue={50}
24
+ color="source" // Default color is now 'source'
25
+ required // Mark as required
26
+ label="Volume"
27
+ />
28
+ <button type="submit">Submit</button>
29
+ </form>
30
+ );
31
+ }
32
+ \`\`\`
17
33
 
18
34
  ## License
19
35
 
package/dist/Slider.d.ts CHANGED
@@ -10,13 +10,14 @@ export type SliderProps<E extends ElementType = 'div'> = Omit<BoxProps<E>, 'onCh
10
10
  disabled?: boolean;
11
11
  color?: PittoricaColor;
12
12
  onValueChange?: (value: number) => void;
13
+ required?: boolean;
13
14
  };
14
15
  /**
15
16
  * Slider component for numeric input via dragging.
16
17
  * Fully polymorphic and agnostic using Box foundation.
17
18
  */
18
19
  export declare const Slider: {
19
- <E extends ElementType = "div">({ value: controlledValue, defaultValue, min, max, step, disabled, color, onValueChange, className, style, as, ...props }: SliderProps<E>): import("react/jsx-runtime").JSX.Element;
20
+ <E extends ElementType = "div">({ value: controlledValue, defaultValue, min, max, step, disabled, color, onValueChange, required, className, style, as, ...props }: SliderProps<E>): import("react/jsx-runtime").JSX.Element;
20
21
  displayName: string;
21
22
  };
22
23
  //# sourceMappingURL=Slider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../src/Slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,GAAG,KAAK,IAAI,IAAI,CAC3D,QAAQ,CAAC,CAAC,CAAC,EACX,UAAU,GAAG,OAAO,GAAG,cAAc,CACtC,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM;KAAI,CAAC,SAAS,WAAW,oIAazC,WAAW,CAAC,CAAC,CAAC;;CAkFhB,CAAC"}
1
+ {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../src/Slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,GAAG,KAAK,IAAI,IAAI,CAC3D,QAAQ,CAAC,CAAC,CAAC,EACX,UAAU,GAAG,OAAO,GAAG,cAAc,CACtC,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM;KAAI,CAAC,SAAS,WAAW,8IAczC,WAAW,CAAC,CAAC,CAAC;;CAoFhB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export type { SliderProps } from './Slider.js';
2
- export { Slider } from './Slider.js';
1
+ export * from './Slider.js';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,32 +1,32 @@
1
1
  import { jsx as w, jsxs as E } from "react/jsx-runtime";
2
2
  import { useState as D, useRef as U, useCallback as W } from "react";
3
- function A(i) {
3
+ function B(i) {
4
4
  var e, a, t = "";
5
5
  if (typeof i == "string" || typeof i == "number") t += i;
6
6
  else if (typeof i == "object") if (Array.isArray(i)) {
7
7
  var s = i.length;
8
- for (e = 0; e < s; e++) i[e] && (a = A(i[e])) && (t && (t += " "), t += a);
8
+ for (e = 0; e < s; e++) i[e] && (a = B(i[e])) && (t && (t += " "), t += a);
9
9
  } else for (a in i) i[a] && (t && (t += " "), t += a);
10
10
  return t;
11
11
  }
12
12
  function I() {
13
- for (var i, e, a = 0, t = "", s = arguments.length; a < s; a++) (i = arguments[a]) && (e = A(i)) && (t && (t += " "), t += e);
13
+ for (var i, e, a = 0, t = "", s = arguments.length; a < s; a++) (i = arguments[a]) && (e = B(i)) && (t && (t += " "), t += e);
14
14
  return t;
15
15
  }
16
- function B(i) {
16
+ function j(i) {
17
17
  var e, a, t = "";
18
18
  if (typeof i == "string" || typeof i == "number") t += i;
19
19
  else if (typeof i == "object") if (Array.isArray(i)) {
20
20
  var s = i.length;
21
- for (e = 0; e < s; e++) i[e] && (a = B(i[e])) && (t && (t += " "), t += a);
21
+ for (e = 0; e < s; e++) i[e] && (a = j(i[e])) && (t && (t += " "), t += a);
22
22
  } else for (a in i) i[a] && (t && (t += " "), t += a);
23
23
  return t;
24
24
  }
25
25
  function V() {
26
- for (var i, e, a = 0, t = "", s = arguments.length; a < s; a++) (i = arguments[a]) && (e = B(i)) && (t && (t += " "), t += e);
26
+ for (var i, e, a = 0, t = "", s = arguments.length; a < s; a++) (i = arguments[a]) && (e = j(i)) && (t && (t += " "), t += e);
27
27
  return t;
28
28
  }
29
- const S = ({
29
+ const k = ({
30
30
  as: i,
31
31
  children: e,
32
32
  display: a,
@@ -36,40 +36,42 @@ const S = ({
36
36
  mb: n,
37
37
  ml: c,
38
38
  mx: u,
39
- my: g,
40
- p: b,
41
- pt: $,
39
+ my: f,
40
+ p: $,
41
+ pt: b,
42
42
  pr: x,
43
43
  pb: N,
44
- pl: f,
45
- px: d,
46
- py: m,
47
- width: h,
48
- height: y,
49
- position: T,
50
- style: M,
51
- className: L,
52
- disabled: P,
44
+ pl: T,
45
+ px: m,
46
+ py: d,
47
+ width: g,
48
+ height: h,
49
+ position: y,
50
+ style: L,
51
+ className: P,
52
+ disabled: R,
53
+ required: S,
53
54
  ...l
54
55
  }) => {
55
56
  const v = i || "div", r = {};
56
- a && (r.display = a), h && (r.width = h), y && (r.height = y), T && (r.position = T), t && (r.margin = `var(--pittorica-space-${t})`), s && (r.marginTop = `var(--pittorica-space-${s})`), p && (r.marginRight = `var(--pittorica-space-${p})`), n && (r.marginBottom = `var(--pittorica-space-${n})`), c && (r.marginLeft = `var(--pittorica-space-${c})`), u && (r.marginLeft = `var(--pittorica-space-${u})`, r.marginRight = `var(--pittorica-space-${u})`), g && (r.marginTop = `var(--pittorica-space-${g})`, r.marginBottom = `var(--pittorica-space-${g})`), b && (r.padding = `var(--pittorica-space-${b})`), $ && (r.paddingTop = `var(--pittorica-space-${$})`), x && (r.paddingRight = `var(--pittorica-space-${x})`), N && (r.paddingBottom = `var(--pittorica-space-${N})`), f && (r.paddingLeft = `var(--pittorica-space-${f})`), d && (r.paddingLeft = `var(--pittorica-space-${d})`, r.paddingRight = `var(--pittorica-space-${d})`), m && (r.paddingTop = `var(--pittorica-space-${m})`, r.paddingBottom = `var(--pittorica-space-${m})`);
57
+ a && (r.display = a), g && (r.width = g), h && (r.height = h), y && (r.position = y), t && (r.margin = `var(--pittorica-space-${t})`), s && (r.marginTop = `var(--pittorica-space-${s})`), p && (r.marginRight = `var(--pittorica-space-${p})`), n && (r.marginBottom = `var(--pittorica-space-${n})`), c && (r.marginLeft = `var(--pittorica-space-${c})`), u && (r.marginLeft = `var(--pittorica-space-${u})`, r.marginRight = `var(--pittorica-space-${u})`), f && (r.marginTop = `var(--pittorica-space-${f})`, r.marginBottom = `var(--pittorica-space-${f})`), $ && (r.padding = `var(--pittorica-space-${$})`), b && (r.paddingTop = `var(--pittorica-space-${b})`), x && (r.paddingRight = `var(--pittorica-space-${x})`), N && (r.paddingBottom = `var(--pittorica-space-${N})`), T && (r.paddingLeft = `var(--pittorica-space-${T})`), m && (r.paddingLeft = `var(--pittorica-space-${m})`, r.paddingRight = `var(--pittorica-space-${m})`), d && (r.paddingTop = `var(--pittorica-space-${d})`, r.paddingBottom = `var(--pittorica-space-${d})`);
57
58
  const o = {
58
- ...M,
59
+ ...L,
59
60
  ...r
60
61
  };
61
62
  return /* @__PURE__ */ w(
62
63
  v,
63
64
  {
64
- className: V("pittorica-box", L),
65
+ className: V("pittorica-box", P),
65
66
  style: o,
66
- disabled: P,
67
+ disabled: R,
68
+ required: S,
67
69
  ...l,
68
70
  children: e
69
71
  }
70
72
  );
71
73
  };
72
- S.displayName = "Box";
74
+ k.displayName = "Box";
73
75
  const X = ({
74
76
  value: i,
75
77
  defaultValue: e = 0,
@@ -77,42 +79,44 @@ const X = ({
77
79
  max: t = 100,
78
80
  step: s = 1,
79
81
  disabled: p = !1,
80
- color: n = "indigo",
82
+ color: n = "source",
81
83
  onValueChange: c,
82
- className: u,
83
- style: g,
84
+ required: u = !1,
85
+ className: f,
86
+ style: $,
84
87
  as: b,
85
- ...$
88
+ ...x
86
89
  }) => {
87
- const [x, N] = D(e), f = U(null), d = i !== void 0, m = d ? i : x, h = (m - a) / (t - a) * 100, y = W(
90
+ const [N, T] = D(e), m = U(null), d = i !== void 0, g = d ? i : N, h = (g - a) / (t - a) * 100, y = W(
88
91
  (l, v) => {
89
- const r = f.current || v;
92
+ const r = m.current || v;
90
93
  if (!r) return;
91
94
  const o = r.getBoundingClientRect();
92
95
  if (!o || o.width <= 0) return;
93
- const j = Math.max(0, Math.min((typeof l == "number" ? l : 0) - (o.left || 0), o.width)) / o.width * (t - a) + a, k = Math.round(j / s) * s, R = Math.max(a, Math.min(t, k));
94
- Number.isNaN(R) || (d || N(R), c == null || c(R));
96
+ const q = Math.max(0, Math.min((typeof l == "number" ? l : 0) - (o.left || 0), o.width)) / o.width * (t - a) + a, A = Math.round(q / s) * s, M = Math.max(a, Math.min(t, A));
97
+ Number.isNaN(M) || (d || T(M), c == null || c(M));
95
98
  },
96
99
  [t, a, s, d, c]
97
- ), T = (l) => {
100
+ ), L = (l) => {
98
101
  if (p) return;
99
102
  y(l.clientX, l.currentTarget);
100
103
  const v = (o) => y(o.clientX), r = () => {
101
104
  globalThis.removeEventListener("pointermove", v), globalThis.removeEventListener("pointerup", r);
102
105
  };
103
106
  globalThis.addEventListener("pointermove", v), globalThis.addEventListener("pointerup", r);
104
- }, L = n !== "inherit" && !(n != null && n.startsWith("#")) && !(n != null && n.startsWith("rgb")) ? `var(--pittorica-${n}-9)` : n;
107
+ }, R = n !== "inherit" && !(n != null && n.startsWith("#")) && !(n != null && n.startsWith("rgb")) ? `var(--pittorica-${n}-9)` : n;
105
108
  return /* @__PURE__ */ E(
106
- S,
109
+ k,
107
110
  {
108
111
  as: b || "div",
109
- className: I("pittorica-slider-root", u),
112
+ className: I("pittorica-slider-root", f),
110
113
  "data-disabled": p,
111
- onPointerDown: T,
112
- style: { "--pittorica-source-color": L, ...g },
113
- ...$,
114
+ onPointerDown: L,
115
+ "aria-required": u,
116
+ style: { "--pittorica-source-color": R, ...$ },
117
+ ...x,
114
118
  children: [
115
- /* @__PURE__ */ w("div", { className: "pittorica-slider-track", ref: f, children: /* @__PURE__ */ w(
119
+ /* @__PURE__ */ w("div", { className: "pittorica-slider-track", ref: m, children: /* @__PURE__ */ w(
116
120
  "div",
117
121
  {
118
122
  className: "pittorica-slider-range",
@@ -125,8 +129,9 @@ const X = ({
125
129
  role: "slider",
126
130
  "aria-valuemin": a,
127
131
  "aria-valuemax": t,
128
- "aria-valuenow": m,
132
+ "aria-valuenow": g,
129
133
  "aria-disabled": p,
134
+ "aria-required": u,
130
135
  tabIndex: p ? -1 : 0,
131
136
  className: "pittorica-slider-thumb",
132
137
  style: { position: "absolute", left: `calc(${h}% - 8px)` }
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@pittorica/slider-react",
3
- "version": "0.25.0",
3
+ "version": "0.26.1",
4
+ "homepage": "https://pittorica.dcdavidev.me",
4
5
  "type": "module",
5
6
  "main": "./dist/index.js",
6
7
  "module": "./dist/index.js",
@@ -10,8 +11,8 @@
10
11
  ],
11
12
  "dependencies": {
12
13
  "clsx": "^2.1.1",
13
- "@pittorica/box-react": "0.25.0",
14
- "@pittorica/text-react": "0.25.0"
14
+ "@pittorica/box-react": "0.26.1",
15
+ "@pittorica/text-react": "0.26.1"
15
16
  },
16
17
  "devDependencies": {
17
18
  "@testing-library/jest-dom": "^6.9.1",
@@ -21,10 +22,10 @@
21
22
  "@vitejs/plugin-react": "^4.0.0",
22
23
  "jsdom": "^22.0.0",
23
24
  "typescript": "^5.0.0",
24
- "vite": "^5.0.0",
25
- "vitest": "^2.1.9",
26
- "@pittorica/theme-react": "0.25.0",
27
- "pittorica": "0.25.0"
25
+ "vite": "^6.4.1",
26
+ "vitest": "^3.2.4",
27
+ "@pittorica/theme-react": "0.26.1",
28
+ "pittorica": "0.26.1"
28
29
  },
29
30
  "peerDependencies": {
30
31
  "react": ">=19",
@@ -34,7 +35,7 @@
34
35
  "build": "npm run clean && npm run build:js && npm run build:types",
35
36
  "build:js": "vite build",
36
37
  "build:types": "tsc -p tsconfig.json",
37
- "clean": "rm -rf dist",
38
+ "clean": "rm -rf dist *.tsbuildinfo",
38
39
  "test": "vitest run",
39
40
  "test:watch": "vitest"
40
41
  }
@@ -1,7 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { Slider } from './Slider';
3
- declare const meta: Meta<typeof Slider>;
4
- export default meta;
5
- export declare const Basic: StoryObj<typeof Slider>;
6
- export declare const Stepped: StoryObj<typeof Slider>;
7
- //# sourceMappingURL=Slider.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Slider.stories.d.ts","sourceRoot":"","sources":["../src/Slider.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAI7B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,MAAM,CAKzC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,OAAO,MAAM,CAO3C,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @vitest-environment jsdom
3
- */
4
- import '@testing-library/jest-dom';
5
- //# sourceMappingURL=Slider.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Slider.test.d.ts","sourceRoot":"","sources":["../src/Slider.test.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,2BAA2B,CAAC"}