@lolmath/ui 1.3.0 → 2.0.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/dist/index.cjs CHANGED
@@ -34,6 +34,7 @@ __export(src_exports, {
34
34
  SearchField: () => SearchField,
35
35
  Select: () => Select,
36
36
  Slider: () => Slider,
37
+ SliderLabel: () => SliderLabel,
37
38
  Switch: () => Switch,
38
39
  TextField: () => TextField
39
40
  });
@@ -179,8 +180,8 @@ var import_react_aria_components3 = require("react-aria-components");
179
180
  var import_tailwind_merge3 = require("tailwind-merge");
180
181
 
181
182
  // src/utilities/resolve-classname.ts
182
- function resolveClassname(props, values) {
183
- return typeof props.className === "function" ? props.className(values) : props.className;
183
+ function resolveClassname(className, values) {
184
+ return typeof className === "function" ? className(values) : className;
184
185
  }
185
186
 
186
187
  // src/components/search-field.tsx
@@ -193,7 +194,7 @@ function SearchField({
193
194
  import_react_aria_components3.SearchField,
194
195
  {
195
196
  className: (values) => {
196
- const finalClassName = resolveClassname(props, values);
197
+ const finalClassName = resolveClassname(props.className, values);
197
198
  return (0, import_tailwind_merge3.twMerge)(
198
199
  "flex flex-col outline-none",
199
200
  borderClassName,
@@ -216,7 +217,10 @@ function SearchField({
216
217
  {
217
218
  ...inputProps,
218
219
  className: (values) => {
219
- const finalClassName = resolveClassname(inputProps, values);
220
+ const finalClassName = resolveClassname(
221
+ inputProps.className,
222
+ values
223
+ );
220
224
  return (0, import_tailwind_merge3.twMerge)(
221
225
  "bg-transparent grow py-2 px-3 text-lol-gold-50 text-xs outline-none font-spiegel tracking-wide pl-6",
222
226
  props.isDisabled && "text-lol-gray-500",
@@ -262,58 +266,114 @@ var sliderDisabled = "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAAB
262
266
 
263
267
  // src/components/slider.tsx
264
268
  var import_jsx_runtime4 = require("react/jsx-runtime");
265
- function Slider({ className, label, ...props }) {
266
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_aria_components4.Slider, { ...props, className: "", children: ({ state }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
267
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center justify-between font-spiegel text-xs text-[#a09b8c] font-normal tracking-wide", children: [
268
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_aria_components4.Label, { className: "", children: label }),
269
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_aria_components4.SliderOutput, { className: "", children: state.values.map((_, i) => state.getThumbValueLabel(i)).join(" \u2013 ") })
270
- ] }),
271
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_aria_components4.SliderTrack, { className: "relative w-full h-7 group", children: ({ state: state2 }) => {
272
- const left = state2.values.length === 1 ? 0 : state2.getThumbPercent(0) * 100;
273
- const width = state2.values.length === 1 ? state2.getThumbPercent(0) * 100 : (state2.getThumbPercent(1) - state2.getThumbPercent(0)) * 100;
274
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
275
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "absolute h-0.5 top-[50%] transform translate-y-[-50%] w-full rounded-full bg-lol-gray-950" }),
269
+ function Slider({
270
+ children,
271
+ sliderThumbProps = {},
272
+ sliderTrackProps = {},
273
+ sliderTrackBackgroundClassName,
274
+ sliderTrackForegroundClassName,
275
+ ...props
276
+ }) {
277
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
278
+ import_react_aria_components4.Slider,
279
+ {
280
+ ...props,
281
+ className: (values) => {
282
+ const resolvedClassName = resolveClassname(props.className, values);
283
+ return (0, import_tailwind_merge4.twMerge)("", resolvedClassName);
284
+ },
285
+ children: (values) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
286
+ typeof children === "function" ? children(values) : children,
276
287
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
277
- "div",
288
+ import_react_aria_components4.SliderTrack,
278
289
  {
279
- className: (0, import_tailwind_merge4.twMerge)(
280
- "absolute h-0.5 top-[50%] transform translate-y-[-50%] from-[#463714] to-[#695625] bg-gradient-to-r",
281
- state2.isDisabled ? "from-transparent via-transparent to-transparent bg-[#5C5B57]" : [
282
- "group-hover:from-[#785a28] group-hover:via-[#c89b3c] group-hover:to-[#c8aa6e]",
283
- "group-active:from-[#695625] group-active:via-[#463714] group-active:to-[#463714]"
284
- ]
285
- ),
286
- style: { left: `${left}%`, width: `${width}%` }
287
- }
288
- ),
289
- state2.values.map((_, i) => {
290
- let zIndex = state2.getThumbPercent(i === 1 ? 0 : 1) === (i === 1 ? 0 : 1) ? 2 : void 0;
291
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
292
- import_react_aria_components4.SliderThumb,
293
- {
294
- index: i,
295
- className: (0, import_tailwind_merge4.twMerge)(
296
- "bg-contain h-7 w-7 top-[50%] outline-none",
297
- "[background-image:var(--normal)]",
298
- state2.isDisabled ? "[background-image:var(--disabled)]" : [
299
- state2.isThumbDragging(i) && "[background-image:var(--active)]",
300
- !state2.isThumbDragging(0) && !state2.isThumbDragging(1) && "group-hover:[background-image:var(--hover)]"
301
- ]
302
- ),
303
- style: {
304
- "--normal": sliderNormal,
305
- "--hover": sliderHover,
306
- "--active": sliderActive,
307
- "--disabled": sliderDisabled,
308
- zIndex
309
- }
290
+ ...sliderTrackProps,
291
+ className: (sliderTrackRenderProps) => {
292
+ const resolvedClassName = resolveClassname(
293
+ sliderTrackProps.className,
294
+ sliderTrackRenderProps
295
+ );
296
+ return (0, import_tailwind_merge4.twMerge)("relative w-full h-7 group", resolvedClassName);
310
297
  },
311
- i
312
- ) });
313
- })
314
- ] });
315
- } })
316
- ] }) });
298
+ children: (values2) => {
299
+ const left = values2.state.values.length === 1 ? 0 : values2.state.getThumbPercent(0) * 100;
300
+ const width = values2.state.values.length === 1 ? values2.state.getThumbPercent(0) * 100 : (values2.state.getThumbPercent(1) - values2.state.getThumbPercent(0)) * 100;
301
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
302
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
303
+ "div",
304
+ {
305
+ className: (0, import_tailwind_merge4.twMerge)(
306
+ "absolute h-0.5 top-[50%] transform translate-y-[-50%] w-full rounded-full bg-lol-gray-950",
307
+ resolveClassname(sliderTrackBackgroundClassName, values2)
308
+ )
309
+ }
310
+ ),
311
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
312
+ "div",
313
+ {
314
+ className: (0, import_tailwind_merge4.twMerge)(
315
+ "absolute h-0.5 top-[50%] transform translate-y-[-50%] from-[#463714] to-[#695625] bg-gradient-to-r",
316
+ values2.state.isDisabled ? "from-transparent via-transparent to-transparent bg-[#5C5B57]" : [
317
+ "group-hover:from-[#785a28] group-hover:via-[#c89b3c] group-hover:to-[#c8aa6e]",
318
+ "group-active:from-[#695625] group-active:via-[#463714] group-active:to-[#463714]"
319
+ ],
320
+ resolveClassname(sliderTrackForegroundClassName, values2)
321
+ ),
322
+ style: { left: `${left}%`, width: `${width}%` }
323
+ }
324
+ ),
325
+ values2.state.values.map((_, i) => {
326
+ let zIndex = values2.state.getThumbPercent(i === 1 ? 0 : 1) === (i === 1 ? 0 : 1) ? 2 : void 0;
327
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
328
+ import_react_aria_components4.SliderThumb,
329
+ {
330
+ index: i,
331
+ ...sliderThumbProps,
332
+ className: (sliderThumbRenderProps) => {
333
+ const resolvedClassName = resolveClassname(
334
+ sliderThumbProps.className,
335
+ sliderThumbRenderProps
336
+ );
337
+ return (0, import_tailwind_merge4.twMerge)(
338
+ "bg-contain h-7 w-7 top-[50%] outline-none",
339
+ "[background-image:var(--normal)]",
340
+ sliderThumbRenderProps.isDisabled ? "[background-image:var(--disabled)]" : [
341
+ sliderThumbRenderProps.state.isThumbDragging(
342
+ i
343
+ ) && "[background-image:var(--active)]",
344
+ !sliderThumbRenderProps.state.isThumbDragging(
345
+ 0
346
+ ) && !sliderThumbRenderProps.state.isThumbDragging(
347
+ 1
348
+ ) && "group-hover:[background-image:var(--hover)]"
349
+ ],
350
+ resolvedClassName
351
+ );
352
+ },
353
+ style: {
354
+ "--normal": sliderNormal,
355
+ "--hover": sliderHover,
356
+ "--active": sliderActive,
357
+ "--disabled": sliderDisabled,
358
+ zIndex
359
+ }
360
+ },
361
+ i
362
+ ) });
363
+ })
364
+ ] });
365
+ }
366
+ }
367
+ )
368
+ ] })
369
+ }
370
+ );
371
+ }
372
+ function SliderLabel({ children }) {
373
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center justify-between font-spiegel text-xs text-lol-gray-300 font-normal tracking-wide", children: [
374
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_aria_components4.Label, { className: "", children }),
375
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_aria_components4.SliderOutput, { className: "", children: (sliderRenderProps) => sliderRenderProps.state.values.map((_, i) => sliderRenderProps.state.getThumbValueLabel(i)).join(" \u2013 ") })
376
+ ] });
317
377
  }
318
378
 
319
379
  // src/components/switch.tsx
@@ -512,7 +572,7 @@ function TextField({
512
572
  import_react_aria_components7.TextField,
513
573
  {
514
574
  className: (values) => {
515
- const finalClassName = resolveClassname(props, values);
575
+ const finalClassName = resolveClassname(props.className, values);
516
576
  return (0, import_tailwind_merge8.twMerge)(
517
577
  "flex flex-col outline-none",
518
578
  borderClassName,
@@ -534,7 +594,10 @@ function TextField({
534
594
  {
535
595
  ...inputProps,
536
596
  className: (values) => {
537
- const finalClassName = resolveClassname(inputProps, values);
597
+ const finalClassName = resolveClassname(
598
+ inputProps.className,
599
+ values
600
+ );
538
601
  return (0, import_tailwind_merge8.twMerge)(
539
602
  "bg-transparent grow py-2 px-3 text-lol-gold-50 text-xs outline-none font-spiegel tracking-wide",
540
603
  values.isDisabled && "text-lol-gray-500",
@@ -560,7 +623,7 @@ function RadioGroup({ ...props }) {
560
623
  {
561
624
  ...props,
562
625
  className: (values) => {
563
- const finalClassName = resolveClassname(props, values);
626
+ const finalClassName = resolveClassname(props.className, values);
564
627
  return (0, import_tailwind_merge9.twMerge)("flex flex-col items-start", finalClassName);
565
628
  }
566
629
  }
@@ -572,7 +635,7 @@ function Radio({ ...props }) {
572
635
  {
573
636
  ...props,
574
637
  className: (values) => {
575
- const finalClassName = resolveClassname(props, values);
638
+ const finalClassName = resolveClassname(props.className, values);
576
639
  return (0, import_tailwind_merge9.twMerge)(
577
640
  "text-lol-gold-300 font-spiegel text-xs font-normal py-2 bg-no-repeat bg-[length:18px] bg-left pl-6 pr-4",
578
641
  values.isDisabled ? "text-lol-gray-500" : values.isHovered || values.isSelected ? "text-lol-gold-50" : "",
@@ -624,7 +687,7 @@ function NumberField({
624
687
  {
625
688
  ...groupProps,
626
689
  className: (values) => {
627
- const finalClassName = resolveClassname(groupProps, values);
690
+ const finalClassName = resolveClassname(groupProps.className, values);
628
691
  return (0, import_tailwind_merge11.twMerge)(
629
692
  "grid grid-cols-[auto_1fr_auto] outline-none gap-px p-px",
630
693
  borderClassName,
@@ -640,7 +703,10 @@ function NumberField({
640
703
  {
641
704
  ...inputProps,
642
705
  className: (values) => {
643
- const finalClassName = resolveClassname(inputProps, values);
706
+ const finalClassName = resolveClassname(
707
+ inputProps.className,
708
+ values
709
+ );
644
710
  return (0, import_tailwind_merge11.twMerge)(
645
711
  "bg-black w-full py-2 px-3 text-lol-gold-50 text-xs outline-none font-spiegel",
646
712
  values.isDisabled && "text-lol-gray-500 bg-lol-gray-950",
@@ -671,6 +737,7 @@ function NumberField({
671
737
  SearchField,
672
738
  Select,
673
739
  Slider,
740
+ SliderLabel,
674
741
  Switch,
675
742
  TextField
676
743
  });