@mario_hahn/jumpy-ui 0.7.0 → 0.8.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
@@ -1,5 +1,48 @@
1
1
  # @mario_hahn/jumpy-ui
2
2
 
3
+ ## Field widths
4
+
5
+ Text fields, dropdowns, date pickers and time pickers fill their parent container.
6
+ Constrain the surrounding layout for compact controls, for example with a grid
7
+ column or a wrapper `maxWidth`. Calendar and time popups retain their own sizing;
8
+ they do not expand to match a wide field.
9
+
10
+ ## Sticky tables and selection
11
+
12
+ `JumpTable stickyHeader` fixes both the header and footer inside the scrollable
13
+ container. They use `--jumpy-cmp-table-backdrop-color` for a continuous background
14
+ behind the decorative cell surfaces. The default resolves to the opaque semantic
15
+ card surface in each preset. Normal cell decorations are transparent; selected
16
+ and hovered cells use their semantic interaction surfaces. The scroll container
17
+ and pinned cells share the same backdrop. Keep any custom backdrop override opaque.
18
+ Use `showHorizontalBorders` for explicit row separators in all columns.
19
+
20
+ `JumpTableCell` and `JumpTableHeaderCell` support `pinned="left"` or `pinned="right"`;
21
+ use `pinnedEdge` for the edge divider. Pinned cells use the same backdrop as the
22
+ sticky bands. Set the container's maximum height through `containerProps.style`.
23
+
24
+ Selection preserves normal text weight for table cells and list-item labels.
25
+ For deliberate emphasis, use `innerClasses.text.style.fontWeight` on a table cell
26
+ or `innerClasses.label.style.fontWeight` on a list item. Headers stay emphasized;
27
+ selection surfaces and accessibility attributes are independent of typography.
28
+
29
+ ## Button sizes
30
+
31
+ ```tsx
32
+ import { JumpButton, JumpySize } from '@mario_hahn/jumpy-ui'
33
+
34
+ <JumpButton>Standard</JumpButton>
35
+ <JumpButton size={JumpySize.medium}>Compact</JumpButton>
36
+ <JumpButton size={JumpySize.largeXL}>Large</JumpButton>
37
+ ```
38
+
39
+ `size` accepts a Jumpy sizing token, not a pixel number. The standard theme resolves
40
+ `medium` to 32px and `largeXL` to 48px. Omitting the prop preserves the existing
41
+ button layout (normally 40px). Explicit sizes adjust vertical padding; compact
42
+ buttons also use smaller typography, icons and horizontal padding. The token sets
43
+ a minimum height: content is never clipped when a very small token or larger
44
+ custom typography is used. Consumer `style` overrides retain precedence.
45
+
3
46
  ## Theme overrides
4
47
 
5
48
  Use semantic colors for brand-wide changes and action overrides for individual
@@ -42,7 +85,7 @@ Jumpy Components als ein gemeinsames UI-Paket.
42
85
  Starting with 0.5.0, Jumpy UI uses the public npmjs registry. No package token is required to install:
43
86
 
44
87
  ```bash
45
- npm install @mario_hahn/jumpy-ui@^0.7.0
88
+ npm install @mario_hahn/jumpy-ui@^0.8.1
46
89
  ```
47
90
 
48
91
  The public npm package uses the `@mario_hahn` scope. Older GitHub Packages releases
@@ -23744,7 +23744,7 @@ var providerStyles = `
23744
23744
  }
23745
23745
 
23746
23746
  [data-jumpy-theme='true'] [data-jumpy-slot='table-wrapper'] {
23747
- --jumpy-cmp-table-backdrop-color: var(--jumpy-non-interactive-background-default-floating);
23747
+ --jumpy-cmp-table-backdrop-color: var(--jumpy-color-surface-card);
23748
23748
  display: block;
23749
23749
  position: relative;
23750
23750
  width: 100%;
@@ -23756,6 +23756,7 @@ var providerStyles = `
23756
23756
  width: 100%;
23757
23757
  max-width: 100%;
23758
23758
  overflow: auto;
23759
+ background-color: var(--jumpy-cmp-table-backdrop-color);
23759
23760
  }
23760
23761
 
23761
23762
  [data-jumpy-theme='true'] [data-jumpy-slot='table-container'][data-sticky-header='true'] {
@@ -23765,13 +23766,21 @@ var providerStyles = `
23765
23766
  [data-jumpy-theme='true'] [data-jumpy-slot='table-container'][data-sticky-header='true'] thead,
23766
23767
  [data-jumpy-theme='true'] [data-jumpy-slot='table-container'][data-sticky-header='true'] tfoot {
23767
23768
  position: sticky;
23768
- z-index: 10;
23769
+ /* Above pinned body cells (z-index 10), with a full-width opaque surface. */
23770
+ z-index: 20;
23771
+ /* The inset decorative cell surfaces are not an occluding backdrop. */
23772
+ background-color: var(--jumpy-cmp-table-backdrop-color);
23769
23773
  }
23770
23774
 
23771
23775
  [data-jumpy-theme='true'] [data-jumpy-slot='table-container'][data-sticky-header='true'] thead {
23772
23776
  top: 0;
23773
23777
  }
23774
23778
 
23779
+ [data-jumpy-theme='true'] [data-jumpy-slot='table-container'][data-sticky-header='true'] :is(thead, tfoot) > [data-jumpy-component='table-row'] > :is([data-jumpy-component='table-cell'], [data-jumpy-component='table-header-cell']):is(:first-child, :last-child) {
23780
+ /* Only the decorative surface is rounded; sticky backdrops are rectangular. */
23781
+ border-radius: 0;
23782
+ }
23783
+
23775
23784
  [data-jumpy-theme='true'] [data-jumpy-slot='table-container'][data-sticky-header='true'] tfoot {
23776
23785
  bottom: 0;
23777
23786
  }
@@ -23820,7 +23829,7 @@ var providerStyles = `
23820
23829
 
23821
23830
  [data-jumpy-theme='true'] [data-jumpy-component='table-cell'],
23822
23831
  [data-jumpy-theme='true'] [data-jumpy-component='table-header-cell'] {
23823
- --jumpy-cmp-table-cell-surface-color: var(--jumpy-interactive-inactive-regular-default-surface, transparent);
23832
+ --jumpy-cmp-table-cell-surface-color: transparent;
23824
23833
  display: table-cell;
23825
23834
  position: relative;
23826
23835
  height: var(--jumpy-spacing-size-2xlarge);
@@ -23832,7 +23841,7 @@ var providerStyles = `
23832
23841
  }
23833
23842
 
23834
23843
  [data-jumpy-theme='true'] [data-jumpy-component='table-header-cell'] {
23835
- --jumpy-cmp-table-cell-surface-color: color-mix(in srgb, var(--jumpy-color-neutral-ultralight) calc(var(--jumpy-opacity-medium) * 100%), transparent);
23844
+ --jumpy-cmp-table-cell-surface-color: color-mix(in srgb, var(--jumpy-color-surface-field) calc(var(--jumpy-opacity-medium) * 100%), transparent);
23836
23845
  }
23837
23846
 
23838
23847
  [data-jumpy-theme='true'] [data-jumpy-component='table-cell'][data-align='start'],
@@ -23867,9 +23876,10 @@ var providerStyles = `
23867
23876
  [data-jumpy-theme='true'] [data-jumpy-component='table-cell']::before,
23868
23877
  [data-jumpy-theme='true'] [data-jumpy-component='table-header-cell']::before {
23869
23878
  position: absolute;
23879
+ z-index: 1;
23870
23880
  inset-inline: 0;
23871
23881
  bottom: 0;
23872
- background-color: var(--jumpy-color-neutral-ultralight, var(--jumpy-color-border-subtle));
23882
+ background-color: var(--jumpy-color-border-subtle);
23873
23883
  height: var(--jumpy-spacing-outline-small);
23874
23884
  content: '';
23875
23885
  }
@@ -24119,31 +24129,17 @@ var providerStyles = `
24119
24129
 
24120
24130
  [data-jumpy-theme='true'] [data-jumpy-component='table-footer'] {
24121
24131
  position: relative;
24122
- background-color: var(--jumpy-interactive-inactive-regular-default-surface);
24123
- }
24124
-
24125
- [data-jumpy-theme='true'] [data-jumpy-component='table-footer']::before,
24126
- [data-jumpy-theme='true'] [data-jumpy-component='table-footer']::after {
24127
- position: absolute;
24128
- right: 0;
24129
- left: 0;
24130
- z-index: 1;
24131
- background-color: var(--jumpy-interactive-inactive-regular-default-border);
24132
- height: var(--jumpy-spacing-outline-small);
24133
- content: '';
24134
- }
24135
-
24136
- [data-jumpy-theme='true'] [data-jumpy-component='table-footer']::before {
24137
- top: 0;
24132
+ background-color: var(--jumpy-cmp-table-backdrop-color);
24138
24133
  }
24139
24134
 
24140
- [data-jumpy-theme='true'] [data-jumpy-component='table-footer']::after {
24141
- display: none;
24142
- bottom: 0;
24135
+ /* Native cell borders paint consistently on either side of pinned boundaries.
24136
+ A section pseudo-element would be covered only by the sticky cells. */
24137
+ [data-jumpy-theme='true'] [data-jumpy-component='table-footer'] > [data-jumpy-component='table-row']:first-child > :is([data-jumpy-component='table-cell'], [data-jumpy-component='table-header-cell']) {
24138
+ border-top: var(--jumpy-spacing-outline-small) solid var(--jumpy-color-border-subtle);
24143
24139
  }
24144
24140
 
24145
- [data-jumpy-theme='true'] [data-jumpy-component='table'][data-horizontal-borders='true'] [data-jumpy-component='table-footer']::after {
24146
- display: block;
24141
+ [data-jumpy-theme='true'] [data-jumpy-component='table'][data-horizontal-borders='true'] > [data-jumpy-component='table-footer'] > [data-jumpy-component='table-row']:last-child > :is([data-jumpy-component='table-cell'], [data-jumpy-component='table-header-cell']) {
24142
+ border-bottom: var(--jumpy-spacing-outline-small) solid var(--jumpy-color-border-subtle);
24147
24143
  }
24148
24144
 
24149
24145
  [data-jumpy-theme='true'] [data-jumpy-component='table-footer'] [data-jumpy-component='table-cell']::before {
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ import {
28
28
  textStyleValue,
29
29
  themeToCSSVariables,
30
30
  useJumpyTheme
31
- } from "./chunk-KIZKZXWH.js";
31
+ } from "./chunk-B7QIDGY7.js";
32
32
  import {
33
33
  cn
34
34
  } from "./chunk-3DBKYKP2.js";
@@ -680,7 +680,6 @@ function JumpListItem({ as, children, className = "", selected = false, disabled
680
680
  const isDisabled = disabled || readOnly;
681
681
  const bodyMedium = textStyleValue(theme, JumpyTextStyle.bodyMedium);
682
682
  const bodySmall = textStyleValue(theme, JumpyTextStyle.bodySmall);
683
- const bodyMediumEmphasized = textStyleValue(theme, JumpyTextStyle.bodyMediumEmphasized);
684
683
  const iconSize = sizeValue(theme, JumpySize.small2XS);
685
684
  const handleExpandedChange = () => {
686
685
  const nextCollapsed = !isNestedCollapsed;
@@ -750,7 +749,7 @@ function JumpListItem({ as, children, className = "", selected = false, disabled
750
749
  resolvedSelector ? /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "selector", "aria-hidden": props.role === "option" || props.role === "treeitem" ? "true" : void 0, className: innerClasses.selector?.className, style: { display: "inline-flex", pointerEvents: "none", color: "var(--jumpy-list-item-icon-color, var(--jumpy-list-item-default-icon))", ...innerClasses.selector?.style || {} }, children: resolvedSelector }) : null,
751
750
  resolvedLeading ? /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "leading", "aria-hidden": "true", className: innerClasses.leading?.className, style: { display: "inline-flex", width: iconSize, height: iconSize, color: "var(--jumpy-list-item-icon-color, var(--jumpy-list-item-default-icon))", ...innerClasses.leading?.style || {} }, children: resolvedLeading }) : null,
752
751
  /* @__PURE__ */ jsxs("span", { style: { display: "grid", minWidth: 0 }, children: [
753
- /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "label", "data-truncate": truncateTexts ? "true" : void 0, "data-text": typeof children === "string" ? children : void 0, className: innerClasses.label?.className, style: { minWidth: 0, maxWidth: "100%", overflowWrap: "anywhere", wordBreak: "break-word", fontWeight: selected ? bodyMediumEmphasized.fontWeight : bodyMedium.fontWeight, ...innerClasses.label?.style || {} }, children }),
752
+ /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "label", "data-truncate": truncateTexts ? "true" : void 0, "data-text": typeof children === "string" ? children : void 0, className: innerClasses.label?.className, style: { minWidth: 0, maxWidth: "100%", overflowWrap: "anywhere", wordBreak: "break-word", fontWeight: bodyMedium.fontWeight, ...innerClasses.label?.style || {} }, children }),
754
753
  resolvedDescription ? /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "description", className: innerClasses.description?.className, style: { color: selected ? theme.listItem.active.default.subtext : theme.listItem.inactive.default.subtext, fontSize: bodySmall.fontSize, lineHeight: bodySmall.lineHeight, ...innerClasses.description?.style || {} }, children: resolvedDescription }) : null
755
754
  ] }),
756
755
  resolvedMetadata ? /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "metadata", className: innerClasses.metadata?.className, style: { color: selected ? theme.listItem.active.default.subtext : theme.listItem.inactive.default.subtext, whiteSpace: "nowrap", fontSize: bodySmall.fontSize, lineHeight: bodySmall.lineHeight, ...innerClasses.metadata?.style || {} }, children: resolvedMetadata }) : null,
@@ -1770,7 +1769,7 @@ function JumpTableCell({ as, children, selected = false, disabled = false, align
1770
1769
  /* @__PURE__ */ jsxs("span", { "data-jumpy-slot": "table-cell-inner", "data-align": resolvedAlign, className: innerClasses.inner?.className, style: innerClasses.inner?.style, children: [
1771
1770
  cellLeading ? /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "table-cell-leading", className: innerClasses.leading?.className, style: innerClasses.leading?.style, children: cellLeading }) : null,
1772
1771
  /* @__PURE__ */ jsxs("span", { "data-jumpy-slot": "table-cell-content", className: innerClasses.content?.className, style: innerClasses.content?.style, children: [
1773
- /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "table-cell-text", className: innerClasses.text?.className, style: tableCellTextStyle(theme, selected, innerClasses.text?.style), children }),
1772
+ /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "table-cell-text", className: innerClasses.text?.className, style: tableCellTextStyle(theme, false, innerClasses.text?.style), children }),
1774
1773
  cellDescription ? /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "table-cell-description", className: innerClasses.description?.className, style: tableCellTextStyle(theme, false, innerClasses.description?.style), children: cellDescription }) : null
1775
1774
  ] }),
1776
1775
  cellTrailing ? /* @__PURE__ */ jsx("span", { "data-jumpy-slot": "table-cell-trailing", className: innerClasses.trailing?.className, style: innerClasses.trailing?.style, children: cellTrailing }) : null
@@ -2493,7 +2492,7 @@ function JumpDatePicker({ label = "Date", hint, value, defaultValue = null, onCh
2493
2492
  setOpen(false);
2494
2493
  }
2495
2494
  const trailing = readOnly ? void 0 : /* @__PURE__ */ jsx(PickerTrailingIcon, { type: "date", open: isOpen });
2496
- return /* @__PURE__ */ jsxs("div", { ref: refs.setReference, "data-jumpy-component": "date-picker", style: { position: "relative", width: 312, maxWidth: "100%" }, children: [
2495
+ return /* @__PURE__ */ jsxs("div", { ref: refs.setReference, "data-jumpy-component": "date-picker", style: { position: "relative", width: "100%", maxWidth: "100%" }, children: [
2497
2496
  /* @__PURE__ */ jsx(JumpField, { label, hint, status, error, hideClearIcon, onClear, className, trailing, children: /* @__PURE__ */ jsx(
2498
2497
  JumpInput,
2499
2498
  {
@@ -2615,7 +2614,7 @@ function JumpTimePicker({ label = "Time", hint, value, defaultValue = null, onCh
2615
2614
  onChange?.(output);
2616
2615
  }
2617
2616
  const trailing = readOnly ? void 0 : /* @__PURE__ */ jsx(PickerTrailingIcon, { type: "time", open: isOpen });
2618
- return /* @__PURE__ */ jsxs("div", { ref: refs.setReference, "data-jumpy-component": "time-picker", style: { position: "relative", width: 340, maxWidth: "100%" }, children: [
2617
+ return /* @__PURE__ */ jsxs("div", { ref: refs.setReference, "data-jumpy-component": "time-picker", style: { position: "relative", width: "100%", maxWidth: "100%" }, children: [
2619
2618
  /* @__PURE__ */ jsx(JumpField, { label, hint, status, error, hideClearIcon, onClear, className, trailing, children: /* @__PURE__ */ jsx(
2620
2619
  JumpInput,
2621
2620
  {
@@ -3044,11 +3043,14 @@ function JumpLoader({ label = "Jumpy UI wird geladen", fullScreen = false, class
3044
3043
  /* @__PURE__ */ jsx(JumpCard, { className: cn("px-10 py-9", decorativeBackground && "relative z-10"), children: content })
3045
3044
  ] });
3046
3045
  }
3047
- function JumpButton({ as, variant = "primary", status = "regular", className = "", isLoading = false, disabled, elevated = false, slots, leadingIcon, trailingIcon, children, ...props }) {
3046
+ function JumpButton({ as, size: size2, variant = "primary", status = "regular", className = "", isLoading = false, disabled, elevated = false, slots, leadingIcon, trailingIcon, children, ...props }) {
3048
3047
  const theme = useJumpyTheme();
3049
3048
  const variantStyles = getButtonVariantStyles(theme, variant, status);
3050
- const bodyMediumEmphasized = textStyleValue(theme, JumpyTextStyle.bodyMediumEmphasized);
3051
- const iconSize = sizeValue(theme, JumpySize.small2XS);
3049
+ const height = sizeValue(theme, size2 ?? JumpySize.large);
3050
+ if (!Number.isFinite(height) || height < 0) throw new Error(`Invalid JumpButton size token: ${size2}`);
3051
+ const compact = height < sizeValue(theme, JumpySize.large);
3052
+ const textStyle = textStyleValue(theme, compact ? JumpyTextStyle.bodySmallEmphasized : JumpyTextStyle.bodyMediumEmphasized);
3053
+ const iconSize = sizeValue(theme, compact ? JumpySize.small3XS : JumpySize.small2XS);
3052
3054
  const [pressed, setPressed] = useState(false);
3053
3055
  const leading = slots?.leading ?? leadingIcon;
3054
3056
  const trailing = slots?.trailing ?? trailingIcon;
@@ -3057,6 +3059,15 @@ function JumpButton({ as, variant = "primary", status = "regular", className = "
3057
3059
  const isDisabled = disabled || isLoading;
3058
3060
  const spacing = getButtonSpacing(theme, variant, Boolean(leading), Boolean(trailing));
3059
3061
  const hasBorder = variant === "secondary" || variant === "tertiary";
3062
+ if (size2 !== void 0) {
3063
+ const border = hasBorder ? borderWidthValue(theme, JumpyBorderWidth.small) : 0;
3064
+ const contentHeight = Math.max(textStyle.fontSize * textStyle.lineHeight, leading || trailing ? iconSize : 0);
3065
+ spacing.paddingTop = spacing.paddingBottom = Math.max(0, (height - contentHeight - border * 2) / 2);
3066
+ if (compact) {
3067
+ spacing.gap = spacingValue(theme, JumpySpacing.small3XS);
3068
+ spacing.paddingLeft = spacing.paddingRight = spacingValue(theme, variant === "borderless" ? JumpySpacing.zero : JumpySpacing.medium);
3069
+ }
3070
+ }
3060
3071
  const content = /* @__PURE__ */ jsxs("span", { style: { display: "inline-flex", flexDirection: "row", alignItems: "center", justifyContent: "center", gap: spacing.gap, whiteSpace: "nowrap" }, children: [
3061
3072
  leading ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "inline-flex shrink-0 items-center justify-center", style: { width: iconSize, height: iconSize, lineHeight: 0, fontSize: iconSize }, children: leading }) : null,
3062
3073
  /* @__PURE__ */ jsx("span", { children }),
@@ -3072,6 +3083,7 @@ function JumpButton({ as, variant = "primary", status = "regular", className = "
3072
3083
  "data-status": status,
3073
3084
  "data-elevated": elevated ? "true" : "false",
3074
3085
  "data-loading": isLoading ? "true" : "false",
3086
+ "data-size": size2,
3075
3087
  "data-pressed": pressed ? "true" : "false",
3076
3088
  "aria-busy": isLoading || void 0,
3077
3089
  "aria-disabled": !isButton && isDisabled ? true : props["aria-disabled"],
@@ -3098,7 +3110,7 @@ function JumpButton({ as, variant = "primary", status = "regular", className = "
3098
3110
  display: "inline-flex",
3099
3111
  alignItems: "center",
3100
3112
  justifyContent: "center",
3101
- minHeight: sizeValue(theme, JumpySize.large),
3113
+ minHeight: height,
3102
3114
  appearance: "none",
3103
3115
  WebkitAppearance: "none",
3104
3116
  boxSizing: "border-box",
@@ -3107,11 +3119,11 @@ function JumpButton({ as, variant = "primary", status = "regular", className = "
3107
3119
  paddingTop: spacing.paddingTop,
3108
3120
  paddingBottom: spacing.paddingBottom,
3109
3121
  borderRadius: radiusValue(theme, JumpyRadius.small),
3110
- letterSpacing: bodyMediumEmphasized.letterSpacing,
3122
+ letterSpacing: textStyle.letterSpacing,
3111
3123
  fontFamily: theme.fontFamily.familyBase,
3112
- fontSize: bodyMediumEmphasized.fontSize,
3113
- lineHeight: bodyMediumEmphasized.lineHeight,
3114
- fontWeight: bodyMediumEmphasized.fontWeight,
3124
+ fontSize: textStyle.fontSize,
3125
+ lineHeight: textStyle.lineHeight,
3126
+ fontWeight: textStyle.fontWeight,
3115
3127
  opacity: isDisabled ? opacityValue(theme, JumpyOpacity.medium) : opacityValue(theme, JumpyOpacity.solid),
3116
3128
  borderWidth: hasBorder ? borderWidthValue(theme, JumpyBorderWidth.small) : 0,
3117
3129
  borderStyle: hasBorder ? "solid" : "none",
package/dist/theme.js CHANGED
@@ -28,7 +28,7 @@ import {
28
28
  textStyleValue,
29
29
  themeToCSSVariables,
30
30
  useJumpyTheme
31
- } from "./chunk-KIZKZXWH.js";
31
+ } from "./chunk-B7QIDGY7.js";
32
32
  export {
33
33
  JumpyAnimation,
34
34
  JumpyAnimationDelay,
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes, InputHTMLAttributes, ReactNode, Ref, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes } from 'react'
2
- export type { JumpyTheme } from './theme.js'
2
+ export type { JumpyTheme, JumpySizeToken } from './theme.js'
3
3
  type ElementTag = keyof HTMLElementTagNameMap
4
4
  type JumpResponsiveValue<T> = T | { small?: T; medium?: T; large?: T; xLarge?: T }
5
5
  type JumpGridSpacing = number | string | [row: number | string, column: number | string]
@@ -128,7 +128,7 @@ export type JumpDialogInnerPart = 'illustration' | 'body' | 'icon' | 'title' | '
128
128
  export type JumpDialogInnerClasses = Partial<Record<JumpDialogInnerPart, { className?: string; style?: import('react').CSSProperties }>>
129
129
  export declare function JumpDialog(props: HTMLAttributes<HTMLElement> & { as?: ElementTag; visible?: boolean; onVisibleChange?: (visible: boolean) => void; title?: ReactNode; description?: ReactNode; footer?: ReactNode; disableBackdropClick?: boolean; disableContentScroll?: boolean; fullScreen?: boolean; overlayProps?: HTMLAttributes<HTMLDivElement>; slots?: { illustration?: ReactNode; icon?: ReactNode; title?: ReactNode; description?: ReactNode; footer?: ReactNode }; innerClasses?: JumpDialogInnerClasses; children?: ReactNode }): ReactNode
130
130
  export declare function JumpLoader(props: { label?: string; fullScreen?: boolean; className?: string; decorativeBackground?: boolean }): ReactNode
131
- export declare function JumpButton(props: JumpPolymorphicButtonAttributes & { as?: ElementTag; variant?: 'primary' | 'secondary' | 'tertiary' | 'borderless'; status?: 'regular' | 'alarm'; isLoading?: boolean; elevated?: boolean; slots?: JumpButtonSlots; leadingIcon?: ReactNode; trailingIcon?: ReactNode }): ReactNode
131
+ export declare function JumpButton(props: JumpPolymorphicButtonAttributes & { as?: ElementTag; size?: import('./theme.js').JumpySizeToken; variant?: 'primary' | 'secondary' | 'tertiary' | 'borderless'; status?: 'regular' | 'alarm'; isLoading?: boolean; elevated?: boolean; slots?: JumpButtonSlots; leadingIcon?: ReactNode; trailingIcon?: ReactNode }): ReactNode
132
132
  export declare function JumpIconButton(props: JumpPolymorphicButtonAttributes & { as?: ElementTag; variant?: 'primary' | 'secondary' | 'tertiary' | 'borderless'; status?: 'regular' | 'alarm'; alternateHover?: boolean; elevated?: boolean }): ReactNode
133
133
  export declare function JumpLinkButton(props: AnchorHTMLAttributes<HTMLAnchorElement> & { href: string; variant?: 'primary' | 'secondary' | 'tertiary' | 'borderless'; status?: 'regular' | 'alarm'; leadingIcon?: ReactNode; trailingIcon?: ReactNode }): ReactNode
134
134
  export declare const JumpInput: import('react').ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & { status?: JumpInputStatus } & import('react').RefAttributes<HTMLInputElement>>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mario_hahn/jumpy-ui",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
package/theme.d.ts CHANGED
@@ -19,7 +19,8 @@ export type JumpyTheme = {
19
19
  }
20
20
 
21
21
  export declare const JumpySpacing: Record<string, string>
22
- export declare const JumpySize: Record<string, string>
22
+ export type JumpySizeToken = 'none' | 'small5XS' | 'small4XS' | 'small3XS' | 'small2XS' | 'smallXS' | 'small' | 'medium' | 'large' | 'largeXL' | 'large2XL' | 'large3XL' | 'large4XL' | 'large5XL' | 'large6XL' | 'large7XL' | 'large8XL'
23
+ export declare const JumpySize: { readonly [Key in JumpySizeToken]: Key }
23
24
  export declare const JumpyRadius: Record<string, string>
24
25
  export declare const JumpyOpacity: Record<string, string>
25
26
  export declare const JumpyBorderWidth: Record<string, string>