@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 +44 -1
- package/dist/{chunk-KIZKZXWH.js → chunk-B7QIDGY7.js} +22 -26
- package/dist/index.js +26 -14
- package/dist/theme.js +1 -1
- package/index.d.ts +2 -2
- package/package.json +1 -1
- package/theme.d.ts +2 -1
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.
|
|
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-
|
|
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
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
24141
|
-
|
|
24142
|
-
|
|
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']
|
|
24146
|
-
|
|
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-
|
|
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:
|
|
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,
|
|
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:
|
|
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:
|
|
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
|
|
3051
|
-
|
|
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:
|
|
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:
|
|
3122
|
+
letterSpacing: textStyle.letterSpacing,
|
|
3111
3123
|
fontFamily: theme.fontFamily.familyBase,
|
|
3112
|
-
fontSize:
|
|
3113
|
-
lineHeight:
|
|
3114
|
-
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
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
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
|
|
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>
|