@mario_hahn/jumpy-ui 0.15.0 → 0.15.2

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.
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  JumpField,
3
3
  JumpyFieldContext
4
- } from "./chunk-K4DXYTVW.js";
4
+ } from "./chunk-ONQSFWRA.js";
5
5
  import {
6
6
  JumpySpacing,
7
7
  spacingValue,
8
8
  useJumpyTheme
9
- } from "./chunk-YAOAIT3N.js";
9
+ } from "./chunk-YWENJWF3.js";
10
10
 
11
11
  // editor.js
12
12
  import { useContext, useRef as useRef2, useState as useState2 } from "react";
@@ -18,7 +18,7 @@ import {
18
18
  textStyleValue,
19
19
  themeToCSSVariables,
20
20
  useJumpyTheme
21
- } from "./chunk-YAOAIT3N.js";
21
+ } from "./chunk-YWENJWF3.js";
22
22
  import {
23
23
  cn
24
24
  } from "./chunk-3DBKYKP2.js";
@@ -2722,7 +2722,7 @@ function JumpCheckbox({ label, children, checked, defaultChecked = false, indete
2722
2722
  }
2723
2723
  );
2724
2724
  }
2725
- function JumpSwitch({ label, children, checked, defaultChecked = false, onCheckedChange, labelPlacement = "end", innerClasses = {}, className = "", disabled = false, readOnly = false, style, ...props }) {
2725
+ function JumpSwitch({ label, children, checked, defaultChecked = false, onCheckedChange, labelPlacement = "end", variant = "inline", innerClasses = {}, className = "", disabled = false, readOnly = false, style, ...props }) {
2726
2726
  const theme = useJumpyTheme();
2727
2727
  const bodyMedium = textStyleValue(theme, JumpyTextStyle.bodyMedium);
2728
2728
  const [uncontrolledChecked, setUncontrolledChecked] = useState(Boolean(defaultChecked));
@@ -2732,6 +2732,7 @@ function JumpSwitch({ label, children, checked, defaultChecked = false, onChecke
2732
2732
  const selectorState = disabled ? "disabled" : isReadonly ? "readOnly" : "default";
2733
2733
  const selectorTokens = isChecked ? theme.selectors.active[selectorState] : theme.selectors.inactive[selectorState];
2734
2734
  const labelContent = children ?? label;
2735
+ const fieldRow = variant === "field";
2735
2736
  return /* @__PURE__ */ jsxs(
2736
2737
  "label",
2737
2738
  {
@@ -2739,7 +2740,8 @@ function JumpSwitch({ label, children, checked, defaultChecked = false, onChecke
2739
2740
  "data-checked": isChecked ? "true" : "false",
2740
2741
  "data-disabled": disabled ? "true" : void 0,
2741
2742
  "data-readonly": isReadonly ? "true" : void 0,
2742
- "data-label-placement": labelPlacement,
2743
+ "data-label-placement": fieldRow ? "start" : labelPlacement,
2744
+ "data-variant": variant,
2743
2745
  className: cn(className),
2744
2746
  style: {
2745
2747
  "--jumpy-cmp-switch-thumb-size": `${sizeValue(theme, JumpySize.small2XS)}px`,
@@ -2761,6 +2763,7 @@ function JumpSwitch({ label, children, checked, defaultChecked = false, onChecke
2761
2763
  fontSize: bodyMedium.fontSize,
2762
2764
  lineHeight: bodyMedium.lineHeight,
2763
2765
  fontWeight: bodyMedium.fontWeight,
2766
+ ...fieldRow ? { ...getFieldShellStyles(theme, disabled, "regular", false, readOnly), justifyContent: "space-between", paddingRight: spacingValue(theme, JumpySpacing.large), cursor: disabled || readOnly ? "default" : "pointer", "--jumpy-cmp-switch-label-color": "var(--jumpy-color-text-primary)" } : {},
2764
2767
  ...style || {}
2765
2768
  },
2766
2769
  children: [
@@ -2876,17 +2879,45 @@ function formatTimeValue(value, format = "HH:mm") {
2876
2879
  const hours12 = hours24 % 12 || 12;
2877
2880
  return format.includes("aa") ? format.replace("hh", String(hours12).padStart(2, "0")).replace("mm", minutes).replace("aa", period) : format.replace("HH", String(hours24).padStart(2, "0")).replace("mm", minutes);
2878
2881
  }
2879
- function parseDateValue(text, format = "MM/dd/yyyy") {
2882
+ var MASK_TOKENS = { yyyy: { max: 4 }, MM: { max: 2, padAbove: "1" }, dd: { max: 2, padAbove: "3" }, HH: { max: 2, padAbove: "2" }, mm: { max: 2, padAbove: "5" } };
2883
+ function maskDigitsToFormat(text, format) {
2884
+ const digits = text.replace(/\D/g, "");
2885
+ const typedSeparator = /\D$/.test(text);
2886
+ const parts = format.split(/(yyyy|MM|dd|HH|mm)/).filter(Boolean);
2887
+ let out = "";
2888
+ let index = 0;
2889
+ for (let i = 0; i < parts.length; i += 1) {
2890
+ const rule = MASK_TOKENS[parts[i]];
2891
+ if (!rule) continue;
2892
+ if (index >= digits.length) break;
2893
+ let chunk;
2894
+ if (rule.padAbove && digits[index] > rule.padAbove) {
2895
+ chunk = `0${digits[index]}`;
2896
+ index += 1;
2897
+ } else {
2898
+ chunk = digits.slice(index, index + rule.max);
2899
+ index += chunk.length;
2900
+ if (rule.padAbove && chunk.length === 1 && typedSeparator && index === digits.length) chunk = `0${chunk}`;
2901
+ }
2902
+ out += chunk;
2903
+ if (chunk.length < rule.max) break;
2904
+ const next = parts.findIndex((part, position) => position > i && MASK_TOKENS[part]);
2905
+ if (next !== -1 && (index < digits.length || typedSeparator)) out += parts.slice(i + 1, next).join("");
2906
+ }
2907
+ return out;
2908
+ }
2909
+ function parseDateValue(text, format = "MM/dd/yyyy", { shortYear = false } = {}) {
2880
2910
  const value = text.trim();
2881
2911
  if (!value) return null;
2882
2912
  const activeFormat = Array.isArray(format) ? format[0] : format;
2883
2913
  const escaped = activeFormat.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
2884
- const pattern = escaped.replace("dd", "(?<dd>\\d{1,2})").replace("MM", "(?<MM>\\d{1,2})").replace("yyyy", "(?<yyyy>\\d{4})");
2914
+ const pattern = escaped.replace("dd", "(?<dd>\\d{1,2})").replace("MM", "(?<MM>\\d{1,2})").replace("yyyy", shortYear ? "(?<yyyy>\\d{4}|\\d{2})" : "(?<yyyy>\\d{4})");
2885
2915
  const match = value.match(new RegExp(`^${pattern}$`));
2886
2916
  if (!match?.groups) return null;
2887
2917
  const day = Number(match.groups.dd);
2888
2918
  const month = Number(match.groups.MM) - 1;
2889
- const year = Number(match.groups.yyyy);
2919
+ let year = Number(match.groups.yyyy);
2920
+ if (match.groups.yyyy.length === 2) year += year <= (/* @__PURE__ */ new Date()).getFullYear() % 100 + 10 ? 2e3 : 1900;
2890
2921
  const date = new Date(year, month, day);
2891
2922
  return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day ? date : null;
2892
2923
  }
@@ -3004,12 +3035,14 @@ function JumpDatePicker({ label = "Date", hint, value, defaultValue = null, onCh
3004
3035
  readOnly,
3005
3036
  disabled,
3006
3037
  "data-has-value": selectedTime !== null,
3038
+ "data-jumpy-floating": isOpen,
3007
3039
  value: draft,
3008
3040
  placeholder: props.placeholder || (Array.isArray(format) ? format[0] : format),
3009
3041
  autoComplete: "off",
3010
3042
  inputMode: "numeric",
3011
3043
  onChange: (event) => {
3012
- const text = event.target.value;
3044
+ const typed = event.target.value;
3045
+ const text = typed.length > draft.length && event.target.selectionStart === typed.length ? maskDigitsToFormat(typed, resolvedFormat) || typed : typed;
3013
3046
  setDraft(text);
3014
3047
  const parsedDate = parseDateValue(text, format);
3015
3048
  typedValue.current = void 0;
@@ -3023,7 +3056,15 @@ function JumpDatePicker({ label = "Date", hint, value, defaultValue = null, onCh
3023
3056
  },
3024
3057
  onBlur: (event) => {
3025
3058
  typedValue.current = void 0;
3026
- setDraft(inputValue);
3059
+ const shortDate = parseDateValue(draft, format) ? null : parseDateValue(draft, format, { shortYear: true });
3060
+ if (shortDate && shortDate.getTime() !== selectedTime && !dateIsUnavailable(shortDate, { minDate, maxDate, disabledDates, isDateDisabled })) {
3061
+ const next = coerceDateOutput(shortDate, value ?? defaultValue);
3062
+ setDraft(formatDateValue(shortDate, resolvedFormat));
3063
+ if (!isControlled) setInternalValue(next);
3064
+ onChange?.(next);
3065
+ } else {
3066
+ setDraft(inputValue);
3067
+ }
3027
3068
  props.onBlur?.(event);
3028
3069
  },
3029
3070
  onClick: (event) => {
@@ -3138,12 +3179,14 @@ function JumpTimePicker({ label = "Time", hint, value, defaultValue = null, onCh
3138
3179
  readOnly,
3139
3180
  disabled,
3140
3181
  "data-has-value": selectedTime !== null,
3182
+ "data-jumpy-floating": isOpen,
3141
3183
  value: draft,
3142
3184
  placeholder: props.placeholder || resolvedFormat,
3143
3185
  autoComplete: "off",
3144
3186
  inputMode: resolvedFormat.includes("aa") ? "text" : "numeric",
3145
3187
  onChange: (event) => {
3146
- const text = event.target.value;
3188
+ const typed = event.target.value;
3189
+ const text = !resolvedFormat.includes("aa") && typed.length > draft.length && event.target.selectionStart === typed.length ? maskDigitsToFormat(typed, resolvedFormat) || typed : typed;
3147
3190
  setDraft(text);
3148
3191
  const parsedDate = parseTimeValue(text, resolvedFormat);
3149
3192
  typedValue.current = void 0;
@@ -3890,7 +3933,8 @@ function JumpBaseInput({ label, hint, children, className = "", error = false, h
3890
3933
  const disabled = Boolean(child.props.disabled);
3891
3934
  const isDropdownTrigger = child.props["data-jumpy-dropdown-trigger"] === true || child.props["data-jumpy-dropdown-trigger"] === "true";
3892
3935
  const readOnly = Boolean(child.props.readOnly) && !isDropdownTrigger;
3893
- const floating = focused && !readOnly || hasValue || Boolean(props.slots?.content);
3936
+ const keepFloating = child.props["data-jumpy-floating"] === true || child.props["data-jumpy-floating"] === "true";
3937
+ const floating = focused && !readOnly || hasValue || childHasValue || keepFloating || Boolean(props.slots?.content);
3894
3938
  const isTextarea = child.type === JumpTextarea || child.props["data-jumpy-token-editor"] && child.props.multiline;
3895
3939
  const isDropdown = isDropdownTrigger || child.props["data-jumpy-component"] === "dropdown";
3896
3940
  const status = error ? "alarm" : props.status || "regular";
@@ -15690,6 +15690,20 @@ var providerStyles = `
15690
15690
  isolation: isolate;
15691
15691
  }
15692
15692
 
15693
+ [data-jumpy-theme='true'] [data-jumpy-component='switch'][data-variant='field'] {
15694
+ --jumpy-cmp-base-input-border-color: var(--jumpy-input-regular-default-border);
15695
+ --jumpy-cmp-base-input-surface-color: var(--jumpy-input-regular-default-surface);
15696
+ }
15697
+
15698
+ [data-jumpy-theme='true'] [data-jumpy-component='switch'][data-variant='field']:hover:not([data-disabled='true']):not([data-readonly='true']) {
15699
+ --jumpy-cmp-base-input-border-color: var(--jumpy-input-regular-hover-border);
15700
+ --jumpy-cmp-base-input-surface-color: var(--jumpy-input-regular-hover-surface);
15701
+ }
15702
+
15703
+ [data-jumpy-theme='true'] [data-jumpy-component='switch'][data-variant='field']:has([data-jumpy-slot='switch-input']:focus-visible) {
15704
+ --jumpy-cmp-base-input-border-color: var(--jumpy-input-regular-focus-border);
15705
+ }
15706
+
15693
15707
  [data-jumpy-theme='true'] [data-jumpy-component='switch'][data-label-placement='start'] {
15694
15708
  flex-direction: row-reverse;
15695
15709
  }
@@ -16658,18 +16672,18 @@ function createCardTokens(theme) {
16658
16672
  if (presetCard?.inactive && presetCard?.active) {
16659
16673
  return {
16660
16674
  inactive: {
16661
- default: normalizeTokenState(presetCard.inactive.default),
16662
- hover: normalizeTokenState(presetCard.inactive.hover),
16663
- pressed: normalizeTokenState(presetCard.inactive.pressed),
16664
- focus: normalizeTokenState(presetCard.inactive.focus),
16665
- disabled: normalizeTokenState(presetCard.inactive.disabled)
16675
+ default: resolveGeneratedState(presetCard.inactive.default, "card-inactive-default", theme),
16676
+ hover: resolveGeneratedState(presetCard.inactive.hover, "card-inactive-hover", theme),
16677
+ pressed: resolveGeneratedState(presetCard.inactive.pressed, "card-inactive-pressed", theme),
16678
+ focus: resolveGeneratedState(presetCard.inactive.focus, "card-inactive-focus", theme),
16679
+ disabled: resolveGeneratedState(presetCard.inactive.disabled, "card-inactive-disabled", theme)
16666
16680
  },
16667
16681
  active: {
16668
- default: normalizeTokenState(presetCard.active.default),
16669
- hover: normalizeTokenState(presetCard.active.hover),
16670
- pressed: normalizeTokenState(presetCard.active.pressed),
16671
- focus: normalizeTokenState(presetCard.active.focus),
16672
- disabled: normalizeTokenState(presetCard.active.disabled)
16682
+ default: resolveGeneratedState(presetCard.active.default, "card-active-default", theme),
16683
+ hover: resolveGeneratedState(presetCard.active.hover, "card-active-hover", theme),
16684
+ pressed: resolveGeneratedState(presetCard.active.pressed, "card-active-pressed", theme),
16685
+ focus: resolveGeneratedState(presetCard.active.focus, "card-active-focus", theme),
16686
+ disabled: resolveGeneratedState(presetCard.active.disabled, "card-active-disabled", theme)
16673
16687
  }
16674
16688
  };
16675
16689
  }
@@ -16697,18 +16711,18 @@ function createListItemTokens(theme) {
16697
16711
  if (presetInactiveRegular && presetActiveRegular) {
16698
16712
  return {
16699
16713
  inactive: {
16700
- default: normalizeTokenState(presetInactiveRegular.default),
16701
- hover: normalizeTokenState(presetInactiveRegular.hover),
16702
- pressed: normalizeTokenState(presetInactiveRegular.pressed),
16703
- focus: normalizeTokenState(presetInactiveRegular.focus),
16704
- disabled: normalizeTokenState(presetInactiveRegular.disabled)
16714
+ default: resolveGeneratedState(presetInactiveRegular.default, "interactive-inactive-regular-default", theme),
16715
+ hover: resolveGeneratedState(presetInactiveRegular.hover, "interactive-inactive-regular-hover", theme),
16716
+ pressed: resolveGeneratedState(presetInactiveRegular.pressed, "interactive-inactive-regular-pressed", theme),
16717
+ focus: resolveGeneratedState(presetInactiveRegular.focus, "interactive-inactive-regular-focus", theme),
16718
+ disabled: resolveGeneratedState(presetInactiveRegular.disabled, "interactive-inactive-regular-disabled", theme)
16705
16719
  },
16706
16720
  active: {
16707
- default: normalizeTokenState(presetActiveRegular.default),
16708
- hover: normalizeTokenState(presetActiveRegular.hover),
16709
- pressed: normalizeTokenState(presetActiveRegular.pressed),
16710
- focus: normalizeTokenState(presetActiveRegular.focus),
16711
- disabled: normalizeTokenState(presetActiveRegular.disabled)
16721
+ default: resolveGeneratedState(presetActiveRegular.default, "interactive-active-regular-default", theme),
16722
+ hover: resolveGeneratedState(presetActiveRegular.hover, "interactive-active-regular-hover", theme),
16723
+ pressed: resolveGeneratedState(presetActiveRegular.pressed, "interactive-active-regular-pressed", theme),
16724
+ focus: resolveGeneratedState(presetActiveRegular.focus, "interactive-active-regular-focus", theme),
16725
+ disabled: resolveGeneratedState(presetActiveRegular.disabled, "interactive-active-regular-disabled", theme)
16712
16726
  }
16713
16727
  };
16714
16728
  }
@@ -16729,25 +16743,41 @@ function createListItemTokens(theme) {
16729
16743
  }
16730
16744
  };
16731
16745
  }
16746
+ function resolveGeneratedState(state, prefix, theme) {
16747
+ const normalized = normalizeTokenState(state);
16748
+ if (!normalized) return normalized;
16749
+ const sources = { ...color_sources_default.base, ...color_sources_default.presets?.[theme.__tokenPresetName || "default-light"] };
16750
+ const slots = { surface: "surface", border: "border", text: "text", subtext: "subtext", icon: "icon", handle: "handle", focusRing: "focus-ring", hoverRing: "hover-ring" };
16751
+ const resolved = { ...normalized };
16752
+ for (const [slot, cssSlot] of Object.entries(slots)) {
16753
+ const source = sources[`jumpy-${prefix}-${cssSlot}`];
16754
+ if (source && theme.color?.[source] !== void 0) resolved[slot] = theme.color[source];
16755
+ }
16756
+ return resolved;
16757
+ }
16758
+ function resolveSelectorState(state, group, name, theme) {
16759
+ return resolveGeneratedState(state, `selectors-${group}-${name}`, theme);
16760
+ }
16732
16761
  function createSelectorTokens(theme) {
16733
16762
  const presetSelectors = getWebPresetTokenRoot(theme.__tokenPresetName || "default-light")?.selectors;
16734
16763
  if (presetSelectors?.inactive && presetSelectors?.active) {
16764
+ const state = (group, name, key = name) => resolveSelectorState(presetSelectors[group][key], group, name, theme);
16735
16765
  return {
16736
16766
  inactive: {
16737
- default: normalizeTokenState(presetSelectors.inactive.default),
16738
- disabled: normalizeTokenState(presetSelectors.inactive.disabled),
16739
- focus: normalizeTokenState(presetSelectors.inactive.focus),
16740
- hover: normalizeTokenState(presetSelectors.inactive.hover),
16741
- pressed: normalizeTokenState(presetSelectors.inactive.pressed),
16742
- readOnly: normalizeTokenState(presetSelectors.inactive.read?.only)
16767
+ default: state("inactive", "default"),
16768
+ disabled: state("inactive", "disabled"),
16769
+ focus: state("inactive", "focus"),
16770
+ hover: state("inactive", "hover"),
16771
+ pressed: state("inactive", "pressed"),
16772
+ readOnly: resolveSelectorState(presetSelectors.inactive.read?.only, "inactive", "read-only", theme)
16743
16773
  },
16744
16774
  active: {
16745
- default: normalizeTokenState(presetSelectors.active.default),
16746
- disabled: normalizeTokenState(presetSelectors.active.disabled),
16747
- focus: normalizeTokenState(presetSelectors.active.focus),
16748
- hover: normalizeTokenState(presetSelectors.active.hover),
16749
- pressed: normalizeTokenState(presetSelectors.active.pressed),
16750
- readOnly: normalizeTokenState(presetSelectors.active.read?.only)
16775
+ default: state("active", "default"),
16776
+ disabled: state("active", "disabled"),
16777
+ focus: state("active", "focus"),
16778
+ hover: state("active", "hover"),
16779
+ pressed: state("active", "pressed"),
16780
+ readOnly: resolveSelectorState(presetSelectors.active.read?.only, "active", "read-only", theme)
16751
16781
  }
16752
16782
  };
16753
16783
  }
@@ -74,7 +74,7 @@ import {
74
74
  getSortOrder,
75
75
  isRowFullySelected,
76
76
  useJumpSnackbar
77
- } from "./chunk-K4DXYTVW.js";
77
+ } from "./chunk-ONQSFWRA.js";
78
78
  import {
79
79
  JumpyAnimation,
80
80
  JumpyAnimationDelay,
@@ -105,7 +105,7 @@ import {
105
105
  textStyleValue,
106
106
  themeToCSSVariables,
107
107
  useJumpyTheme
108
- } from "./chunk-YAOAIT3N.js";
108
+ } from "./chunk-YWENJWF3.js";
109
109
  import "./chunk-3DBKYKP2.js";
110
110
  import {
111
111
  jumpyThemeInventory
package/dist/editor.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import {
3
3
  JumpTokenInput
4
- } from "./chunk-NK6N6UY5.js";
5
- import "./chunk-K4DXYTVW.js";
6
- import "./chunk-YAOAIT3N.js";
4
+ } from "./chunk-CEG6MK6U.js";
5
+ import "./chunk-ONQSFWRA.js";
6
+ import "./chunk-YWENJWF3.js";
7
7
  import "./chunk-3DBKYKP2.js";
8
8
  import "./chunk-XDTVYUWG.js";
9
9
  export {
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  JumpTokenInput
4
- } from "./chunk-NK6N6UY5.js";
4
+ } from "./chunk-CEG6MK6U.js";
5
5
  import {
6
6
  BrandMark,
7
7
  JumpAppShell,
@@ -77,7 +77,7 @@ import {
77
77
  getSortOrder,
78
78
  isRowFullySelected,
79
79
  useJumpSnackbar
80
- } from "./chunk-K4DXYTVW.js";
80
+ } from "./chunk-ONQSFWRA.js";
81
81
  import {
82
82
  JumpyAnimation,
83
83
  JumpyAnimationDelay,
@@ -108,7 +108,7 @@ import {
108
108
  textStyleValue,
109
109
  themeToCSSVariables,
110
110
  useJumpyTheme
111
- } from "./chunk-YAOAIT3N.js";
111
+ } from "./chunk-YWENJWF3.js";
112
112
  import "./chunk-3DBKYKP2.js";
113
113
  import {
114
114
  jumpyThemeInventory
package/dist/theme.js CHANGED
@@ -30,7 +30,7 @@ import {
30
30
  textStyleValue,
31
31
  themeToCSSVariables,
32
32
  useJumpyTheme
33
- } from "./chunk-YAOAIT3N.js";
33
+ } from "./chunk-YWENJWF3.js";
34
34
  export {
35
35
  JumpyAnimation,
36
36
  JumpyAnimationDelay,
package/index.d.ts CHANGED
@@ -127,7 +127,7 @@ export declare function JumpSectionFooter(props: HTMLAttributes<HTMLElement> & {
127
127
  export declare function JumpTag(props: HTMLAttributes<HTMLSpanElement> & { size?: 'small' | 'medium'; status?: 'regular' | 'positive' | 'warning' | 'alarm'; disabled?: boolean; children: ReactNode }): ReactNode
128
128
  export declare function JumpChip(props: ButtonHTMLAttributes<HTMLButtonElement> & { selected?: boolean; disabled?: boolean; children: ReactNode }): ReactNode
129
129
  export declare function JumpCheckbox(props: Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'children'> & { label?: ReactNode; children?: ReactNode; checked?: boolean; defaultChecked?: boolean; indeterminate?: boolean; onCheckedChange?: (checked: boolean) => void; onIndeterminateChange?: (indeterminate: boolean) => void; disabled?: boolean; readOnly?: boolean; labelPlacement?: 'start' | 'end'; innerClasses?: Partial<Record<'container' | 'input' | 'icons', { className?: string; style?: import('react').CSSProperties }>> }): ReactNode
130
- export declare function JumpSwitch(props: Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'role' | 'children'> & { label?: ReactNode; children?: ReactNode; checked?: boolean; defaultChecked?: boolean; onChange?: (event: unknown) => void; onCheckedChange?: (checked: boolean) => void; disabled?: boolean; readOnly?: boolean; labelPlacement?: 'start' | 'end'; innerClasses?: JumpSwitchInnerClasses }): ReactNode
130
+ export declare function JumpSwitch(props: Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'role' | 'children'> & { label?: ReactNode; children?: ReactNode; checked?: boolean; defaultChecked?: boolean; onChange?: (event: unknown) => void; onCheckedChange?: (checked: boolean) => void; disabled?: boolean; readOnly?: boolean; labelPlacement?: 'start' | 'end'; variant?: 'inline' | 'field'; innerClasses?: JumpSwitchInnerClasses }): ReactNode
131
131
  export declare function JumpRadioGroup(props: HTMLAttributes<HTMLDivElement> & { name?: string; value?: string; defaultValue?: string; onValueChange?: (value: string) => void; disabled?: boolean; readOnly?: boolean; direction?: 'horizontal' | 'vertical'; innerClasses?: JumpRadioInnerClasses; options: Array<{ value: string; label: ReactNode; disabled?: boolean }> }): ReactNode
132
132
  export type JumpDropdownItemValue = string | number
133
133
  export interface JumpDropdownItem<TValue extends JumpDropdownItemValue = JumpDropdownItemValue> { label: string; value: TValue; children?: Array<JumpDropdownItem<TValue>>; metadata?: Record<string, unknown>; disabled?: boolean }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mario_hahn/jumpy-ui",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": ["**/*.css"],