@lolmath/ui 1.3.0 → 2.0.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/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ComponentProps } from 'react';
3
- import { ButtonProps as ButtonProps$1, ItemProps, SelectProps as SelectProps$1, SearchFieldProps, Input, SliderProps, SwitchProps, ProgressBarProps as ProgressBarProps$1, TextFieldProps, RadioGroupProps, RadioProps, LabelProps, NumberFieldProps, Group } from 'react-aria-components';
3
+ import { ButtonProps as ButtonProps$1, ItemProps, SelectProps as SelectProps$1, SearchFieldProps, Input, SliderProps, SliderTrackProps, SliderThumbProps, SliderTrackRenderProps, SwitchProps, ProgressBarProps as ProgressBarProps$1, TextFieldProps, RadioGroupProps, RadioProps, LabelProps, NumberFieldProps, Group } from 'react-aria-components';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
 
6
6
  interface ButtonProps extends ButtonProps$1 {
@@ -21,7 +21,16 @@ declare function SearchField({ inputProps, ...props }: SearchFieldProps & {
21
21
  inputProps?: ComponentProps<typeof Input>;
22
22
  }): react_jsx_runtime.JSX.Element;
23
23
 
24
- declare function Slider({ className, label, ...props }: SliderProps & {}): react_jsx_runtime.JSX.Element;
24
+ declare function Slider({ children, sliderThumbProps, sliderTrackProps, sliderTrackBackgroundClassName, sliderTrackForegroundClassName, ...props }: SliderProps & {
25
+ sliderTrackProps?: SliderTrackProps;
26
+ sliderThumbProps?: SliderThumbProps;
27
+ sliderTrackBackgroundClassName?: string | ((values: SliderTrackRenderProps) => string);
28
+ sliderTrackForegroundClassName?: string | ((values: SliderTrackRenderProps) => string);
29
+ }): react_jsx_runtime.JSX.Element;
30
+ interface SliderLabelProps {
31
+ children?: React.ReactNode;
32
+ }
33
+ declare function SliderLabel({ children }: SliderLabelProps): react_jsx_runtime.JSX.Element;
25
34
 
26
35
  declare function Switch({ className, placeholder, children, ...props }: SwitchProps & {
27
36
  placeholder?: string;
@@ -66,4 +75,4 @@ declare function NumberField({ inputProps, groupProps, ...props }: NumberFieldPr
66
75
  groupProps: ComponentProps<typeof Group>;
67
76
  }): react_jsx_runtime.JSX.Element;
68
77
 
69
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Button, Item, Label, NumberField, ProgressBar, Radio, RadioGroup, SearchField, Select, Slider, Switch, TextField };
78
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Button, Item, Label, NumberField, ProgressBar, Radio, RadioGroup, SearchField, Select, Slider, SliderLabel, Switch, TextField };
package/dist/index.js CHANGED
@@ -152,8 +152,8 @@ import {
152
152
  import { twMerge as twMerge3 } from "tailwind-merge";
153
153
 
154
154
  // src/utilities/resolve-classname.ts
155
- function resolveClassname(props, values) {
156
- return typeof props.className === "function" ? props.className(values) : props.className;
155
+ function resolveClassname(className, values) {
156
+ return typeof className === "function" ? className(values) : className;
157
157
  }
158
158
 
159
159
  // src/components/search-field.tsx
@@ -166,7 +166,7 @@ function SearchField({
166
166
  AriaSearchField,
167
167
  {
168
168
  className: (values) => {
169
- const finalClassName = resolveClassname(props, values);
169
+ const finalClassName = resolveClassname(props.className, values);
170
170
  return twMerge3(
171
171
  "flex flex-col outline-none",
172
172
  borderClassName,
@@ -189,7 +189,10 @@ function SearchField({
189
189
  {
190
190
  ...inputProps,
191
191
  className: (values) => {
192
- const finalClassName = resolveClassname(inputProps, values);
192
+ const finalClassName = resolveClassname(
193
+ inputProps.className,
194
+ values
195
+ );
193
196
  return twMerge3(
194
197
  "bg-transparent grow py-2 px-3 text-lol-gold-50 text-xs outline-none font-spiegel tracking-wide pl-6",
195
198
  props.isDisabled && "text-lol-gray-500",
@@ -241,58 +244,114 @@ var sliderDisabled = "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAAB
241
244
 
242
245
  // src/components/slider.tsx
243
246
  import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
244
- function Slider({ className, label, ...props }) {
245
- return /* @__PURE__ */ jsx4(AriaSlider, { ...props, className: "", children: ({ state }) => /* @__PURE__ */ jsxs3(Fragment2, { children: [
246
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between font-spiegel text-xs text-[#a09b8c] font-normal tracking-wide", children: [
247
- /* @__PURE__ */ jsx4(Label, { className: "", children: label }),
248
- /* @__PURE__ */ jsx4(AriaSliderOutput, { className: "", children: state.values.map((_, i) => state.getThumbValueLabel(i)).join(" \u2013 ") })
249
- ] }),
250
- /* @__PURE__ */ jsx4(AriaSliderTrack, { className: "relative w-full h-7 group", children: ({ state: state2 }) => {
251
- const left = state2.values.length === 1 ? 0 : state2.getThumbPercent(0) * 100;
252
- const width = state2.values.length === 1 ? state2.getThumbPercent(0) * 100 : (state2.getThumbPercent(1) - state2.getThumbPercent(0)) * 100;
253
- return /* @__PURE__ */ jsxs3(Fragment2, { children: [
254
- /* @__PURE__ */ jsx4("div", { className: "absolute h-0.5 top-[50%] transform translate-y-[-50%] w-full rounded-full bg-lol-gray-950" }),
247
+ function Slider({
248
+ children,
249
+ sliderThumbProps = {},
250
+ sliderTrackProps = {},
251
+ sliderTrackBackgroundClassName,
252
+ sliderTrackForegroundClassName,
253
+ ...props
254
+ }) {
255
+ return /* @__PURE__ */ jsx4(
256
+ AriaSlider,
257
+ {
258
+ ...props,
259
+ className: (values) => {
260
+ const resolvedClassName = resolveClassname(props.className, values);
261
+ return twMerge4("", resolvedClassName);
262
+ },
263
+ children: (values) => /* @__PURE__ */ jsxs3(Fragment2, { children: [
264
+ typeof children === "function" ? children(values) : children,
255
265
  /* @__PURE__ */ jsx4(
256
- "div",
266
+ AriaSliderTrack,
257
267
  {
258
- className: twMerge4(
259
- "absolute h-0.5 top-[50%] transform translate-y-[-50%] from-[#463714] to-[#695625] bg-gradient-to-r",
260
- state2.isDisabled ? "from-transparent via-transparent to-transparent bg-[#5C5B57]" : [
261
- "group-hover:from-[#785a28] group-hover:via-[#c89b3c] group-hover:to-[#c8aa6e]",
262
- "group-active:from-[#695625] group-active:via-[#463714] group-active:to-[#463714]"
263
- ]
264
- ),
265
- style: { left: `${left}%`, width: `${width}%` }
266
- }
267
- ),
268
- state2.values.map((_, i) => {
269
- let zIndex = state2.getThumbPercent(i === 1 ? 0 : 1) === (i === 1 ? 0 : 1) ? 2 : void 0;
270
- return /* @__PURE__ */ jsx4(Fragment2, { children: /* @__PURE__ */ jsx4(
271
- AriaSliderThumb,
272
- {
273
- index: i,
274
- className: twMerge4(
275
- "bg-contain h-7 w-7 top-[50%] outline-none",
276
- "[background-image:var(--normal)]",
277
- state2.isDisabled ? "[background-image:var(--disabled)]" : [
278
- state2.isThumbDragging(i) && "[background-image:var(--active)]",
279
- !state2.isThumbDragging(0) && !state2.isThumbDragging(1) && "group-hover:[background-image:var(--hover)]"
280
- ]
281
- ),
282
- style: {
283
- "--normal": sliderNormal,
284
- "--hover": sliderHover,
285
- "--active": sliderActive,
286
- "--disabled": sliderDisabled,
287
- zIndex
288
- }
268
+ ...sliderTrackProps,
269
+ className: (sliderTrackRenderProps) => {
270
+ const resolvedClassName = resolveClassname(
271
+ sliderTrackProps.className,
272
+ sliderTrackRenderProps
273
+ );
274
+ return twMerge4("relative w-full h-7 group", resolvedClassName);
289
275
  },
290
- i
291
- ) });
292
- })
293
- ] });
294
- } })
295
- ] }) });
276
+ children: (values2) => {
277
+ const left = values2.state.values.length === 1 ? 0 : values2.state.getThumbPercent(0) * 100;
278
+ const width = values2.state.values.length === 1 ? values2.state.getThumbPercent(0) * 100 : (values2.state.getThumbPercent(1) - values2.state.getThumbPercent(0)) * 100;
279
+ return /* @__PURE__ */ jsxs3(Fragment2, { children: [
280
+ /* @__PURE__ */ jsx4(
281
+ "div",
282
+ {
283
+ className: twMerge4(
284
+ "absolute h-0.5 top-[50%] transform translate-y-[-50%] w-full rounded-full bg-lol-gray-950",
285
+ resolveClassname(sliderTrackBackgroundClassName, values2)
286
+ )
287
+ }
288
+ ),
289
+ /* @__PURE__ */ jsx4(
290
+ "div",
291
+ {
292
+ className: twMerge4(
293
+ "absolute h-0.5 top-[50%] transform translate-y-[-50%] from-[#463714] to-[#695625] bg-gradient-to-r",
294
+ values2.state.isDisabled ? "from-transparent via-transparent to-transparent bg-[#5C5B57]" : [
295
+ "group-hover:from-[#785a28] group-hover:via-[#c89b3c] group-hover:to-[#c8aa6e]",
296
+ "group-active:from-[#695625] group-active:via-[#463714] group-active:to-[#463714]"
297
+ ],
298
+ resolveClassname(sliderTrackForegroundClassName, values2)
299
+ ),
300
+ style: { left: `${left}%`, width: `${width}%` }
301
+ }
302
+ ),
303
+ values2.state.values.map((_, i) => {
304
+ let zIndex = values2.state.getThumbPercent(i === 1 ? 0 : 1) === (i === 1 ? 0 : 1) ? 2 : void 0;
305
+ return /* @__PURE__ */ jsx4(Fragment2, { children: /* @__PURE__ */ jsx4(
306
+ AriaSliderThumb,
307
+ {
308
+ index: i,
309
+ ...sliderThumbProps,
310
+ className: (sliderThumbRenderProps) => {
311
+ const resolvedClassName = resolveClassname(
312
+ sliderThumbProps.className,
313
+ sliderThumbRenderProps
314
+ );
315
+ return twMerge4(
316
+ "bg-contain h-7 w-7 top-[50%] outline-none",
317
+ "[background-image:var(--normal)]",
318
+ sliderThumbRenderProps.isDisabled ? "[background-image:var(--disabled)]" : [
319
+ sliderThumbRenderProps.state.isThumbDragging(
320
+ i
321
+ ) && "[background-image:var(--active)]",
322
+ !sliderThumbRenderProps.state.isThumbDragging(
323
+ 0
324
+ ) && !sliderThumbRenderProps.state.isThumbDragging(
325
+ 1
326
+ ) && "group-hover:[background-image:var(--hover)]"
327
+ ],
328
+ resolvedClassName
329
+ );
330
+ },
331
+ style: {
332
+ "--normal": sliderNormal,
333
+ "--hover": sliderHover,
334
+ "--active": sliderActive,
335
+ "--disabled": sliderDisabled,
336
+ zIndex
337
+ }
338
+ },
339
+ i
340
+ ) });
341
+ })
342
+ ] });
343
+ }
344
+ }
345
+ )
346
+ ] })
347
+ }
348
+ );
349
+ }
350
+ function SliderLabel({ children }) {
351
+ return /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between font-spiegel text-xs text-lol-gray-300 font-normal tracking-wide", children: [
352
+ /* @__PURE__ */ jsx4(Label, { className: "", children }),
353
+ /* @__PURE__ */ jsx4(AriaSliderOutput, { className: "", children: (sliderRenderProps) => sliderRenderProps.state.values.map((_, i) => sliderRenderProps.state.getThumbValueLabel(i)).join(" \u2013 ") })
354
+ ] });
296
355
  }
297
356
 
298
357
  // src/components/switch.tsx
@@ -497,7 +556,7 @@ function TextField({
497
556
  AriaTextField,
498
557
  {
499
558
  className: (values) => {
500
- const finalClassName = resolveClassname(props, values);
559
+ const finalClassName = resolveClassname(props.className, values);
501
560
  return twMerge8(
502
561
  "flex flex-col outline-none",
503
562
  borderClassName,
@@ -519,7 +578,10 @@ function TextField({
519
578
  {
520
579
  ...inputProps,
521
580
  className: (values) => {
522
- const finalClassName = resolveClassname(inputProps, values);
581
+ const finalClassName = resolveClassname(
582
+ inputProps.className,
583
+ values
584
+ );
523
585
  return twMerge8(
524
586
  "bg-transparent grow py-2 px-3 text-lol-gold-50 text-xs outline-none font-spiegel tracking-wide",
525
587
  values.isDisabled && "text-lol-gray-500",
@@ -548,7 +610,7 @@ function RadioGroup({ ...props }) {
548
610
  {
549
611
  ...props,
550
612
  className: (values) => {
551
- const finalClassName = resolveClassname(props, values);
613
+ const finalClassName = resolveClassname(props.className, values);
552
614
  return twMerge9("flex flex-col items-start", finalClassName);
553
615
  }
554
616
  }
@@ -560,7 +622,7 @@ function Radio({ ...props }) {
560
622
  {
561
623
  ...props,
562
624
  className: (values) => {
563
- const finalClassName = resolveClassname(props, values);
625
+ const finalClassName = resolveClassname(props.className, values);
564
626
  return twMerge9(
565
627
  "text-lol-gold-300 font-spiegel text-xs font-normal py-2 bg-no-repeat bg-[length:18px] bg-left pl-6 pr-4",
566
628
  values.isDisabled ? "text-lol-gray-500" : values.isHovered || values.isSelected ? "text-lol-gold-50" : "",
@@ -619,7 +681,7 @@ function NumberField({
619
681
  {
620
682
  ...groupProps,
621
683
  className: (values) => {
622
- const finalClassName = resolveClassname(groupProps, values);
684
+ const finalClassName = resolveClassname(groupProps.className, values);
623
685
  return twMerge11(
624
686
  "grid grid-cols-[auto_1fr_auto] outline-none gap-px p-px",
625
687
  borderClassName,
@@ -635,7 +697,10 @@ function NumberField({
635
697
  {
636
698
  ...inputProps,
637
699
  className: (values) => {
638
- const finalClassName = resolveClassname(inputProps, values);
700
+ const finalClassName = resolveClassname(
701
+ inputProps.className,
702
+ values
703
+ );
639
704
  return twMerge11(
640
705
  "bg-black w-full py-2 px-3 text-lol-gold-50 text-xs outline-none font-spiegel",
641
706
  values.isDisabled && "text-lol-gray-500 bg-lol-gray-950",
@@ -665,6 +730,7 @@ export {
665
730
  SearchField,
666
731
  Select,
667
732
  Slider,
733
+ SliderLabel,
668
734
  Switch,
669
735
  TextField
670
736
  };