@luxfi/ui 6.1.3 → 7.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/accordion.cjs +213 -0
- package/dist/accordion.d.cts +74 -0
- package/dist/accordion.d.ts +74 -0
- package/dist/accordion.js +186 -0
- package/dist/alert.cjs +553 -0
- package/dist/alert.d.cts +30 -0
- package/dist/alert.d.ts +30 -0
- package/dist/alert.js +531 -0
- package/dist/avatar.cjs +149 -0
- package/dist/avatar.d.cts +25 -0
- package/dist/avatar.d.ts +25 -0
- package/dist/avatar.js +125 -0
- package/dist/badge.cjs +611 -0
- package/dist/badge.d.cts +23 -0
- package/dist/badge.d.ts +23 -0
- package/dist/badge.js +589 -0
- package/dist/bank.cjs +272 -0
- package/dist/bank.d.cts +76 -0
- package/dist/bank.d.ts +76 -0
- package/dist/bank.js +258 -0
- package/dist/button.cjs +689 -0
- package/dist/button.d.cts +52 -0
- package/dist/button.d.ts +52 -0
- package/dist/button.js +664 -0
- package/dist/checkbox.cjs +265 -0
- package/dist/checkbox.d.cts +31 -0
- package/dist/checkbox.d.ts +31 -0
- package/dist/checkbox.js +241 -0
- package/dist/close-button.cjs +73 -0
- package/dist/close-button.d.cts +9 -0
- package/dist/close-button.d.ts +9 -0
- package/dist/close-button.js +51 -0
- package/dist/collapsible.cjs +702 -0
- package/dist/collapsible.d.cts +23 -0
- package/dist/collapsible.d.ts +23 -0
- package/dist/collapsible.js +679 -0
- package/dist/color-mode.cjs +96 -0
- package/dist/color-mode.d.cts +25 -0
- package/dist/color-mode.d.ts +25 -0
- package/dist/color-mode.js +72 -0
- package/dist/dialog.cjs +279 -0
- package/dist/dialog.d.cts +66 -0
- package/dist/dialog.d.ts +66 -0
- package/dist/dialog.js +246 -0
- package/dist/drawer.cjs +207 -0
- package/dist/drawer.d.cts +36 -0
- package/dist/drawer.d.ts +36 -0
- package/dist/drawer.js +175 -0
- package/dist/empty-state.cjs +93 -0
- package/dist/empty-state.d.cts +13 -0
- package/dist/empty-state.d.ts +13 -0
- package/dist/empty-state.js +71 -0
- package/dist/expiration-selector.cjs +138 -0
- package/dist/expiration-selector.d.cts +16 -0
- package/dist/expiration-selector.d.ts +16 -0
- package/dist/expiration-selector.js +116 -0
- package/dist/field.cjs +183 -0
- package/dist/field.d.cts +24 -0
- package/dist/field.d.ts +24 -0
- package/dist/field.js +160 -0
- package/dist/greeks-display.cjs +114 -0
- package/dist/greeks-display.d.cts +14 -0
- package/dist/greeks-display.d.ts +14 -0
- package/dist/greeks-display.js +92 -0
- package/dist/heading.cjs +46 -0
- package/dist/heading.d.cts +10 -0
- package/dist/heading.d.ts +10 -0
- package/dist/heading.js +40 -0
- package/dist/icon-button.cjs +491 -0
- package/dist/icon-button.d.cts +33 -0
- package/dist/icon-button.d.ts +33 -0
- package/dist/icon-button.js +470 -0
- package/dist/image.cjs +572 -0
- package/dist/image.d.cts +57 -0
- package/dist/image.d.ts +57 -0
- package/dist/image.js +551 -0
- package/dist/index.cjs +7316 -0
- package/dist/index.d.cts +58 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.js +7137 -0
- package/dist/input-group.cjs +155 -0
- package/dist/input-group.d.cts +17 -0
- package/dist/input-group.d.ts +17 -0
- package/dist/input-group.js +133 -0
- package/dist/input.cjs +65 -0
- package/dist/input.d.cts +11 -0
- package/dist/input.d.ts +11 -0
- package/dist/input.js +59 -0
- package/dist/link.cjs +630 -0
- package/dist/link.d.cts +37 -0
- package/dist/link.d.ts +37 -0
- package/dist/link.js +606 -0
- package/dist/menu.cjs +305 -0
- package/dist/menu.d.cts +84 -0
- package/dist/menu.d.ts +84 -0
- package/dist/menu.js +269 -0
- package/dist/option-chain.cjs +221 -0
- package/dist/option-chain.d.cts +37 -0
- package/dist/option-chain.d.ts +37 -0
- package/dist/option-chain.js +199 -0
- package/dist/option-position.cjs +164 -0
- package/dist/option-position.d.cts +29 -0
- package/dist/option-position.d.ts +29 -0
- package/dist/option-position.js +142 -0
- package/dist/pin-input.cjs +182 -0
- package/dist/pin-input.d.cts +25 -0
- package/dist/pin-input.d.ts +25 -0
- package/dist/pin-input.js +160 -0
- package/dist/pnl-diagram.cjs +453 -0
- package/dist/pnl-diagram.d.cts +11 -0
- package/dist/pnl-diagram.d.ts +11 -0
- package/dist/pnl-diagram.js +431 -0
- package/dist/popover.cjs +327 -0
- package/dist/popover.d.cts +73 -0
- package/dist/popover.d.ts +73 -0
- package/dist/popover.js +294 -0
- package/dist/progress-circle.cjs +152 -0
- package/dist/progress-circle.d.cts +47 -0
- package/dist/progress-circle.d.ts +47 -0
- package/dist/progress-circle.js +128 -0
- package/dist/progress.cjs +117 -0
- package/dist/progress.d.cts +28 -0
- package/dist/progress.d.ts +28 -0
- package/dist/progress.js +94 -0
- package/dist/provider.cjs +62 -0
- package/dist/provider.d.cts +7 -0
- package/dist/provider.d.ts +7 -0
- package/dist/provider.js +40 -0
- package/dist/radio.cjs +177 -0
- package/dist/radio.d.cts +53 -0
- package/dist/radio.d.ts +53 -0
- package/dist/radio.js +153 -0
- package/dist/rating.cjs +80 -0
- package/dist/rating.d.cts +14 -0
- package/dist/rating.d.ts +14 -0
- package/dist/rating.js +58 -0
- package/dist/select.cjs +791 -0
- package/dist/select.d.cts +130 -0
- package/dist/select.d.ts +130 -0
- package/dist/select.js +757 -0
- package/dist/separator.cjs +57 -0
- package/dist/separator.d.cts +13 -0
- package/dist/separator.d.ts +13 -0
- package/dist/separator.js +51 -0
- package/dist/skeleton.cjs +370 -0
- package/dist/skeleton.d.cts +60 -0
- package/dist/skeleton.d.ts +60 -0
- package/dist/skeleton.js +346 -0
- package/dist/slider.cjs +138 -0
- package/dist/slider.d.cts +24 -0
- package/dist/slider.d.ts +24 -0
- package/dist/slider.js +115 -0
- package/dist/strategy-builder.cjs +373 -0
- package/dist/strategy-builder.d.cts +26 -0
- package/dist/strategy-builder.d.ts +26 -0
- package/dist/strategy-builder.js +351 -0
- package/dist/switch.cjs +163 -0
- package/dist/switch.d.cts +27 -0
- package/dist/switch.d.ts +27 -0
- package/dist/switch.js +140 -0
- package/dist/table.cjs +1044 -0
- package/dist/table.d.cts +107 -0
- package/dist/table.d.ts +107 -0
- package/dist/table.js +1013 -0
- package/dist/tabs.cjs +240 -0
- package/dist/tabs.d.cts +78 -0
- package/dist/tabs.d.ts +78 -0
- package/dist/tabs.js +213 -0
- package/dist/tag.cjs +651 -0
- package/dist/tag.d.cts +21 -0
- package/dist/tag.d.ts +21 -0
- package/dist/tag.js +628 -0
- package/dist/textarea.cjs +65 -0
- package/dist/textarea.d.cts +11 -0
- package/dist/textarea.d.ts +11 -0
- package/dist/textarea.js +59 -0
- package/dist/toaster.cjs +99 -0
- package/dist/toaster.d.cts +29 -0
- package/dist/toaster.d.ts +29 -0
- package/dist/toaster.js +96 -0
- package/dist/tooltip.cjs +171 -0
- package/dist/tooltip.d.cts +39 -0
- package/dist/tooltip.d.ts +39 -0
- package/dist/tooltip.js +148 -0
- package/dist/utils.cjs +11 -0
- package/dist/utils.d.cts +5 -0
- package/dist/utils.d.ts +5 -0
- package/dist/utils.js +9 -0
- package/package.json +283 -90
- package/src/accordion.tsx +285 -0
- package/src/alert.tsx +221 -0
- package/src/avatar.tsx +174 -0
- package/src/badge.tsx +158 -0
- package/src/bank.tsx +325 -0
- package/src/button.tsx +411 -0
- package/src/checkbox.tsx +307 -0
- package/src/close-button.tsx +51 -0
- package/src/collapsible.tsx +126 -0
- package/src/color-mode.tsx +125 -0
- package/src/dialog.tsx +356 -0
- package/src/drawer.tsx +186 -0
- package/src/empty-state.tsx +97 -0
- package/src/expiration-selector.tsx +163 -0
- package/src/field.tsx +202 -0
- package/src/greeks-display.tsx +138 -0
- package/src/heading.tsx +55 -0
- package/src/icon-button.tsx +192 -0
- package/src/image.tsx +280 -0
- package/src/index.ts +267 -138
- package/src/input-group.tsx +159 -0
- package/src/input.tsx +60 -0
- package/src/link.tsx +326 -0
- package/src/menu.tsx +471 -0
- package/src/option-chain.tsx +261 -0
- package/src/option-position.tsx +200 -0
- package/src/pin-input.tsx +187 -0
- package/src/pnl-diagram.tsx +458 -0
- package/src/popover.tsx +400 -0
- package/src/progress-circle.tsx +180 -0
- package/src/progress.tsx +109 -0
- package/src/provider.tsx +12 -0
- package/src/radio.tsx +175 -0
- package/src/rating.tsx +79 -0
- package/src/select.tsx +696 -0
- package/src/separator.tsx +59 -0
- package/src/skeleton.tsx +302 -0
- package/src/slider.tsx +152 -0
- package/src/strategy-builder.tsx +466 -0
- package/src/switch.tsx +158 -0
- package/src/table.tsx +621 -0
- package/src/tabs.tsx +354 -0
- package/src/tag.tsx +159 -0
- package/src/textarea.tsx +60 -0
- package/src/toaster.tsx +117 -0
- package/src/tokens.css +438 -0
- package/src/tooltip.tsx +184 -0
- package/src/utils/cn.ts +7 -0
- package/src/utils.ts +6 -0
- package/tokens.css +438 -0
- package/LICENSE +0 -122
- package/README.md +0 -109
package/dist/field.cjs
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var LabelPrimitive = require('@radix-ui/react-label');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var tailwindMerge = require('tailwind-merge');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
|
|
29
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
30
|
+
|
|
31
|
+
// src/field.tsx
|
|
32
|
+
function cn(...inputs) {
|
|
33
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
34
|
+
}
|
|
35
|
+
var space = String.fromCharCode(32);
|
|
36
|
+
function getComponentDisplayName(type) {
|
|
37
|
+
if (typeof type === "string") return void 0;
|
|
38
|
+
if ("displayName" in type) return type.displayName;
|
|
39
|
+
return void 0;
|
|
40
|
+
}
|
|
41
|
+
var Field = React__namespace.forwardRef(
|
|
42
|
+
function Field2(props, ref) {
|
|
43
|
+
const {
|
|
44
|
+
label,
|
|
45
|
+
children,
|
|
46
|
+
helperText,
|
|
47
|
+
errorText,
|
|
48
|
+
optionalText,
|
|
49
|
+
size,
|
|
50
|
+
required,
|
|
51
|
+
disabled,
|
|
52
|
+
readOnly,
|
|
53
|
+
invalid,
|
|
54
|
+
floating,
|
|
55
|
+
id,
|
|
56
|
+
className,
|
|
57
|
+
style
|
|
58
|
+
} = props;
|
|
59
|
+
if (floating && label) {
|
|
60
|
+
const injectedProps2 = {
|
|
61
|
+
className: "peer",
|
|
62
|
+
placeholder: " ",
|
|
63
|
+
size,
|
|
64
|
+
floating,
|
|
65
|
+
disabled,
|
|
66
|
+
readOnly
|
|
67
|
+
};
|
|
68
|
+
const labelElement = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
69
|
+
LabelPrimitive__namespace.Root,
|
|
70
|
+
{
|
|
71
|
+
className: cn(
|
|
72
|
+
"absolute left-3 top-1/2 -translate-y-1/2",
|
|
73
|
+
"text-[var(--color-input-placeholder,theme(colors.gray.400))]",
|
|
74
|
+
"pointer-events-none select-none",
|
|
75
|
+
"origin-top-left transition-all duration-150",
|
|
76
|
+
"peer-focus:top-1 peer-focus:translate-y-0 peer-focus:scale-75",
|
|
77
|
+
"peer-[:not(:placeholder-shown)]:top-1 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:scale-75"
|
|
78
|
+
),
|
|
79
|
+
htmlFor: id,
|
|
80
|
+
children: [
|
|
81
|
+
label,
|
|
82
|
+
required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-0.5 text-[var(--color-fg-error,theme(colors.red.500))]", "aria-hidden": "true", children: "*" }),
|
|
83
|
+
!required && optionalText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-[var(--color-text-secondary,theme(colors.gray.400))] text-sm", children: optionalText }),
|
|
84
|
+
errorText && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-0.5 text-[var(--color-fg-error,theme(colors.red.500))] text-sm", children: [
|
|
85
|
+
"-",
|
|
86
|
+
space,
|
|
87
|
+
errorText
|
|
88
|
+
] })
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
const helperTextElement = helperText ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-xs text-[var(--color-text-secondary,theme(colors.gray.400))]", children: helperText }) : null;
|
|
93
|
+
const child2 = React__namespace.Children.only(children);
|
|
94
|
+
const isInputGroup = getComponentDisplayName(child2.type) === "InputGroup";
|
|
95
|
+
if (isInputGroup) {
|
|
96
|
+
const inputElement2 = React__namespace.cloneElement(
|
|
97
|
+
React__namespace.Children.only(child2.props.children),
|
|
98
|
+
injectedProps2
|
|
99
|
+
);
|
|
100
|
+
const groupInputElement = React__namespace.cloneElement(
|
|
101
|
+
child2,
|
|
102
|
+
{},
|
|
103
|
+
inputElement2,
|
|
104
|
+
labelElement
|
|
105
|
+
);
|
|
106
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
107
|
+
"div",
|
|
108
|
+
{
|
|
109
|
+
ref,
|
|
110
|
+
id,
|
|
111
|
+
className: cn("relative w-full", className),
|
|
112
|
+
style,
|
|
113
|
+
"data-disabled": disabled || void 0,
|
|
114
|
+
"data-readonly": readOnly || void 0,
|
|
115
|
+
"data-invalid": invalid || void 0,
|
|
116
|
+
children: [
|
|
117
|
+
groupInputElement,
|
|
118
|
+
helperTextElement
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
const inputElement = React__namespace.cloneElement(child2, injectedProps2);
|
|
124
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
125
|
+
"div",
|
|
126
|
+
{
|
|
127
|
+
ref,
|
|
128
|
+
id,
|
|
129
|
+
className: cn("relative w-full", className),
|
|
130
|
+
style,
|
|
131
|
+
"data-disabled": disabled || void 0,
|
|
132
|
+
"data-readonly": readOnly || void 0,
|
|
133
|
+
"data-invalid": invalid || void 0,
|
|
134
|
+
children: [
|
|
135
|
+
inputElement,
|
|
136
|
+
labelElement,
|
|
137
|
+
helperTextElement
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
const injectedProps = {
|
|
143
|
+
size
|
|
144
|
+
};
|
|
145
|
+
const child = React__namespace.Children.only(children);
|
|
146
|
+
const clonedChild = React__namespace.cloneElement(child, injectedProps);
|
|
147
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
148
|
+
"div",
|
|
149
|
+
{
|
|
150
|
+
ref,
|
|
151
|
+
id,
|
|
152
|
+
className: cn("flex flex-col gap-1", className),
|
|
153
|
+
style,
|
|
154
|
+
"data-disabled": disabled || void 0,
|
|
155
|
+
"data-readonly": readOnly || void 0,
|
|
156
|
+
"data-invalid": invalid || void 0,
|
|
157
|
+
children: [
|
|
158
|
+
label && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
159
|
+
LabelPrimitive__namespace.Root,
|
|
160
|
+
{
|
|
161
|
+
className: cn(
|
|
162
|
+
"text-sm font-medium text-[var(--color-field-label,theme(colors.gray.700))]",
|
|
163
|
+
"dark:text-[var(--color-field-label,theme(colors.gray.300))]",
|
|
164
|
+
disabled && "opacity-40"
|
|
165
|
+
),
|
|
166
|
+
htmlFor: id,
|
|
167
|
+
children: [
|
|
168
|
+
label,
|
|
169
|
+
required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-0.5 text-[var(--color-fg-error,theme(colors.red.500))]", "aria-hidden": "true", children: "*" }),
|
|
170
|
+
!required && optionalText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-[var(--color-text-secondary,theme(colors.gray.400))] text-sm font-normal", children: optionalText })
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
),
|
|
174
|
+
clonedChild,
|
|
175
|
+
helperText && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-[var(--color-text-secondary,theme(colors.gray.400))]", children: helperText }),
|
|
176
|
+
errorText && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-[var(--color-fg-error,theme(colors.red.500))]", children: errorText })
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
exports.Field = Field;
|
package/dist/field.d.cts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { InputProps } from './input.cjs';
|
|
3
|
+
import { InputGroupProps } from './input-group.cjs';
|
|
4
|
+
|
|
5
|
+
interface FieldProps {
|
|
6
|
+
readonly label?: React.ReactNode;
|
|
7
|
+
readonly helperText?: React.ReactNode;
|
|
8
|
+
readonly errorText?: React.ReactNode;
|
|
9
|
+
readonly optionalText?: React.ReactNode;
|
|
10
|
+
readonly children: React.ReactElement<InputProps> | React.ReactElement<InputGroupProps>;
|
|
11
|
+
readonly size?: 'sm' | 'md' | 'lg' | '2xl';
|
|
12
|
+
readonly required?: boolean;
|
|
13
|
+
readonly disabled?: boolean;
|
|
14
|
+
readonly readOnly?: boolean;
|
|
15
|
+
readonly invalid?: boolean;
|
|
16
|
+
readonly floating?: boolean;
|
|
17
|
+
readonly bgColor?: string | Record<string, string>;
|
|
18
|
+
readonly id?: string;
|
|
19
|
+
readonly className?: string;
|
|
20
|
+
readonly style?: React.CSSProperties;
|
|
21
|
+
}
|
|
22
|
+
declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
|
|
24
|
+
export { Field, type FieldProps };
|
package/dist/field.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { InputProps } from './input.js';
|
|
3
|
+
import { InputGroupProps } from './input-group.js';
|
|
4
|
+
|
|
5
|
+
interface FieldProps {
|
|
6
|
+
readonly label?: React.ReactNode;
|
|
7
|
+
readonly helperText?: React.ReactNode;
|
|
8
|
+
readonly errorText?: React.ReactNode;
|
|
9
|
+
readonly optionalText?: React.ReactNode;
|
|
10
|
+
readonly children: React.ReactElement<InputProps> | React.ReactElement<InputGroupProps>;
|
|
11
|
+
readonly size?: 'sm' | 'md' | 'lg' | '2xl';
|
|
12
|
+
readonly required?: boolean;
|
|
13
|
+
readonly disabled?: boolean;
|
|
14
|
+
readonly readOnly?: boolean;
|
|
15
|
+
readonly invalid?: boolean;
|
|
16
|
+
readonly floating?: boolean;
|
|
17
|
+
readonly bgColor?: string | Record<string, string>;
|
|
18
|
+
readonly id?: string;
|
|
19
|
+
readonly className?: string;
|
|
20
|
+
readonly style?: React.CSSProperties;
|
|
21
|
+
}
|
|
22
|
+
declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
|
|
24
|
+
export { Field, type FieldProps };
|
package/dist/field.js
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
// src/field.tsx
|
|
9
|
+
function cn(...inputs) {
|
|
10
|
+
return twMerge(clsx(inputs));
|
|
11
|
+
}
|
|
12
|
+
var space = String.fromCharCode(32);
|
|
13
|
+
function getComponentDisplayName(type) {
|
|
14
|
+
if (typeof type === "string") return void 0;
|
|
15
|
+
if ("displayName" in type) return type.displayName;
|
|
16
|
+
return void 0;
|
|
17
|
+
}
|
|
18
|
+
var Field = React.forwardRef(
|
|
19
|
+
function Field2(props, ref) {
|
|
20
|
+
const {
|
|
21
|
+
label,
|
|
22
|
+
children,
|
|
23
|
+
helperText,
|
|
24
|
+
errorText,
|
|
25
|
+
optionalText,
|
|
26
|
+
size,
|
|
27
|
+
required,
|
|
28
|
+
disabled,
|
|
29
|
+
readOnly,
|
|
30
|
+
invalid,
|
|
31
|
+
floating,
|
|
32
|
+
id,
|
|
33
|
+
className,
|
|
34
|
+
style
|
|
35
|
+
} = props;
|
|
36
|
+
if (floating && label) {
|
|
37
|
+
const injectedProps2 = {
|
|
38
|
+
className: "peer",
|
|
39
|
+
placeholder: " ",
|
|
40
|
+
size,
|
|
41
|
+
floating,
|
|
42
|
+
disabled,
|
|
43
|
+
readOnly
|
|
44
|
+
};
|
|
45
|
+
const labelElement = /* @__PURE__ */ jsxs(
|
|
46
|
+
LabelPrimitive.Root,
|
|
47
|
+
{
|
|
48
|
+
className: cn(
|
|
49
|
+
"absolute left-3 top-1/2 -translate-y-1/2",
|
|
50
|
+
"text-[var(--color-input-placeholder,theme(colors.gray.400))]",
|
|
51
|
+
"pointer-events-none select-none",
|
|
52
|
+
"origin-top-left transition-all duration-150",
|
|
53
|
+
"peer-focus:top-1 peer-focus:translate-y-0 peer-focus:scale-75",
|
|
54
|
+
"peer-[:not(:placeholder-shown)]:top-1 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:scale-75"
|
|
55
|
+
),
|
|
56
|
+
htmlFor: id,
|
|
57
|
+
children: [
|
|
58
|
+
label,
|
|
59
|
+
required && /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-[var(--color-fg-error,theme(colors.red.500))]", "aria-hidden": "true", children: "*" }),
|
|
60
|
+
!required && optionalText && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[var(--color-text-secondary,theme(colors.gray.400))] text-sm", children: optionalText }),
|
|
61
|
+
errorText && /* @__PURE__ */ jsxs("span", { className: "ml-0.5 text-[var(--color-fg-error,theme(colors.red.500))] text-sm", children: [
|
|
62
|
+
"-",
|
|
63
|
+
space,
|
|
64
|
+
errorText
|
|
65
|
+
] })
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
const helperTextElement = helperText ? /* @__PURE__ */ jsx("p", { className: "mt-1.5 text-xs text-[var(--color-text-secondary,theme(colors.gray.400))]", children: helperText }) : null;
|
|
70
|
+
const child2 = React.Children.only(children);
|
|
71
|
+
const isInputGroup = getComponentDisplayName(child2.type) === "InputGroup";
|
|
72
|
+
if (isInputGroup) {
|
|
73
|
+
const inputElement2 = React.cloneElement(
|
|
74
|
+
React.Children.only(child2.props.children),
|
|
75
|
+
injectedProps2
|
|
76
|
+
);
|
|
77
|
+
const groupInputElement = React.cloneElement(
|
|
78
|
+
child2,
|
|
79
|
+
{},
|
|
80
|
+
inputElement2,
|
|
81
|
+
labelElement
|
|
82
|
+
);
|
|
83
|
+
return /* @__PURE__ */ jsxs(
|
|
84
|
+
"div",
|
|
85
|
+
{
|
|
86
|
+
ref,
|
|
87
|
+
id,
|
|
88
|
+
className: cn("relative w-full", className),
|
|
89
|
+
style,
|
|
90
|
+
"data-disabled": disabled || void 0,
|
|
91
|
+
"data-readonly": readOnly || void 0,
|
|
92
|
+
"data-invalid": invalid || void 0,
|
|
93
|
+
children: [
|
|
94
|
+
groupInputElement,
|
|
95
|
+
helperTextElement
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
const inputElement = React.cloneElement(child2, injectedProps2);
|
|
101
|
+
return /* @__PURE__ */ jsxs(
|
|
102
|
+
"div",
|
|
103
|
+
{
|
|
104
|
+
ref,
|
|
105
|
+
id,
|
|
106
|
+
className: cn("relative w-full", className),
|
|
107
|
+
style,
|
|
108
|
+
"data-disabled": disabled || void 0,
|
|
109
|
+
"data-readonly": readOnly || void 0,
|
|
110
|
+
"data-invalid": invalid || void 0,
|
|
111
|
+
children: [
|
|
112
|
+
inputElement,
|
|
113
|
+
labelElement,
|
|
114
|
+
helperTextElement
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
const injectedProps = {
|
|
120
|
+
size
|
|
121
|
+
};
|
|
122
|
+
const child = React.Children.only(children);
|
|
123
|
+
const clonedChild = React.cloneElement(child, injectedProps);
|
|
124
|
+
return /* @__PURE__ */ jsxs(
|
|
125
|
+
"div",
|
|
126
|
+
{
|
|
127
|
+
ref,
|
|
128
|
+
id,
|
|
129
|
+
className: cn("flex flex-col gap-1", className),
|
|
130
|
+
style,
|
|
131
|
+
"data-disabled": disabled || void 0,
|
|
132
|
+
"data-readonly": readOnly || void 0,
|
|
133
|
+
"data-invalid": invalid || void 0,
|
|
134
|
+
children: [
|
|
135
|
+
label && /* @__PURE__ */ jsxs(
|
|
136
|
+
LabelPrimitive.Root,
|
|
137
|
+
{
|
|
138
|
+
className: cn(
|
|
139
|
+
"text-sm font-medium text-[var(--color-field-label,theme(colors.gray.700))]",
|
|
140
|
+
"dark:text-[var(--color-field-label,theme(colors.gray.300))]",
|
|
141
|
+
disabled && "opacity-40"
|
|
142
|
+
),
|
|
143
|
+
htmlFor: id,
|
|
144
|
+
children: [
|
|
145
|
+
label,
|
|
146
|
+
required && /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-[var(--color-fg-error,theme(colors.red.500))]", "aria-hidden": "true", children: "*" }),
|
|
147
|
+
!required && optionalText && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[var(--color-text-secondary,theme(colors.gray.400))] text-sm font-normal", children: optionalText })
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
clonedChild,
|
|
152
|
+
helperText && /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--color-text-secondary,theme(colors.gray.400))]", children: helperText }),
|
|
153
|
+
errorText && /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--color-fg-error,theme(colors.red.500))]", children: errorText })
|
|
154
|
+
]
|
|
155
|
+
}
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
export { Field };
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var tailwindMerge = require('tailwind-merge');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
function _interopNamespace(e) {
|
|
10
|
+
if (e && e.__esModule) return e;
|
|
11
|
+
var n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
Object.keys(e).forEach(function (k) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return e[k]; }
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
28
|
+
|
|
29
|
+
function cn(...inputs) {
|
|
30
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
31
|
+
}
|
|
32
|
+
var GREEKS = [
|
|
33
|
+
{ key: "delta", label: "Delta", symbol: "\u0394", color: "text-blue-400", barColor: "bg-blue-500", decimals: 4, maxMagnitude: 1 },
|
|
34
|
+
{ key: "gamma", label: "Gamma", symbol: "\u0393", color: "text-purple-400", barColor: "bg-purple-500", decimals: 4, maxMagnitude: 0.1 },
|
|
35
|
+
{ key: "theta", label: "Theta", symbol: "\u0398", color: "text-red-400", barColor: "bg-red-500", decimals: 4, maxMagnitude: 1 },
|
|
36
|
+
{ key: "vega", label: "Vega", symbol: "\u03BD", color: "text-emerald-400", barColor: "bg-emerald-500", decimals: 4, maxMagnitude: 1 },
|
|
37
|
+
{ key: "rho", label: "Rho", symbol: "\u03C1", color: "text-orange-400", barColor: "bg-orange-500", decimals: 4, maxMagnitude: 1 },
|
|
38
|
+
{ key: "iv", label: "IV", symbol: "\u03C3", color: "text-amber-400", barColor: "bg-amber-500", decimals: 1, maxMagnitude: 100 }
|
|
39
|
+
];
|
|
40
|
+
function GreekItem({ def, value, compact }) {
|
|
41
|
+
const magnitude = Math.min(Math.abs(value) / def.maxMagnitude, 1);
|
|
42
|
+
const displayValue = def.key === "iv" ? `${(value * 100).toFixed(def.decimals)}%` : value.toFixed(def.decimals);
|
|
43
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
className: cn(
|
|
47
|
+
"flex items-center gap-1.5",
|
|
48
|
+
compact ? "min-w-0" : "min-w-[100px]"
|
|
49
|
+
),
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-[10px] font-semibold shrink-0", def.color), children: def.symbol }),
|
|
52
|
+
!compact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-zinc-500 shrink-0 w-[34px]", children: def.label }),
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
|
|
54
|
+
"font-mono tabular-nums text-xs text-zinc-200 shrink-0",
|
|
55
|
+
value < 0 && "text-red-400"
|
|
56
|
+
), children: displayValue }),
|
|
57
|
+
!compact && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-1 rounded-full bg-zinc-800 min-w-[24px] max-w-[48px] overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
className: cn("h-full rounded-full transition-all", def.barColor),
|
|
61
|
+
style: { width: `${magnitude * 100}%`, opacity: 0.7 }
|
|
62
|
+
}
|
|
63
|
+
) })
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
var GreeksDisplay = React__namespace.forwardRef(
|
|
69
|
+
function GreeksDisplay2(props, ref) {
|
|
70
|
+
const {
|
|
71
|
+
delta,
|
|
72
|
+
gamma,
|
|
73
|
+
theta,
|
|
74
|
+
vega,
|
|
75
|
+
rho,
|
|
76
|
+
iv,
|
|
77
|
+
compact = false,
|
|
78
|
+
className,
|
|
79
|
+
...rest
|
|
80
|
+
} = props;
|
|
81
|
+
const values = {
|
|
82
|
+
delta,
|
|
83
|
+
gamma,
|
|
84
|
+
theta,
|
|
85
|
+
vega,
|
|
86
|
+
rho,
|
|
87
|
+
iv
|
|
88
|
+
};
|
|
89
|
+
const activeGreeks = GREEKS.filter((g) => values[g.key] !== void 0);
|
|
90
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
91
|
+
"div",
|
|
92
|
+
{
|
|
93
|
+
ref,
|
|
94
|
+
className: cn(
|
|
95
|
+
"flex flex-wrap items-center",
|
|
96
|
+
compact ? "gap-3" : "gap-4",
|
|
97
|
+
className
|
|
98
|
+
),
|
|
99
|
+
...rest,
|
|
100
|
+
children: activeGreeks.map((g) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
101
|
+
GreekItem,
|
|
102
|
+
{
|
|
103
|
+
def: g,
|
|
104
|
+
value: values[g.key],
|
|
105
|
+
compact
|
|
106
|
+
},
|
|
107
|
+
g.key
|
|
108
|
+
))
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
exports.GreeksDisplay = GreeksDisplay;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface GreeksDisplayProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
readonly delta: number;
|
|
5
|
+
readonly gamma: number;
|
|
6
|
+
readonly theta: number;
|
|
7
|
+
readonly vega: number;
|
|
8
|
+
readonly rho?: number;
|
|
9
|
+
readonly iv?: number;
|
|
10
|
+
readonly compact?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const GreeksDisplay: React.ForwardRefExoticComponent<GreeksDisplayProps & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
|
|
14
|
+
export { GreeksDisplay, type GreeksDisplayProps };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface GreeksDisplayProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
readonly delta: number;
|
|
5
|
+
readonly gamma: number;
|
|
6
|
+
readonly theta: number;
|
|
7
|
+
readonly vega: number;
|
|
8
|
+
readonly rho?: number;
|
|
9
|
+
readonly iv?: number;
|
|
10
|
+
readonly compact?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const GreeksDisplay: React.ForwardRefExoticComponent<GreeksDisplayProps & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
|
|
14
|
+
export { GreeksDisplay, type GreeksDisplayProps };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function cn(...inputs) {
|
|
8
|
+
return twMerge(clsx(inputs));
|
|
9
|
+
}
|
|
10
|
+
var GREEKS = [
|
|
11
|
+
{ key: "delta", label: "Delta", symbol: "\u0394", color: "text-blue-400", barColor: "bg-blue-500", decimals: 4, maxMagnitude: 1 },
|
|
12
|
+
{ key: "gamma", label: "Gamma", symbol: "\u0393", color: "text-purple-400", barColor: "bg-purple-500", decimals: 4, maxMagnitude: 0.1 },
|
|
13
|
+
{ key: "theta", label: "Theta", symbol: "\u0398", color: "text-red-400", barColor: "bg-red-500", decimals: 4, maxMagnitude: 1 },
|
|
14
|
+
{ key: "vega", label: "Vega", symbol: "\u03BD", color: "text-emerald-400", barColor: "bg-emerald-500", decimals: 4, maxMagnitude: 1 },
|
|
15
|
+
{ key: "rho", label: "Rho", symbol: "\u03C1", color: "text-orange-400", barColor: "bg-orange-500", decimals: 4, maxMagnitude: 1 },
|
|
16
|
+
{ key: "iv", label: "IV", symbol: "\u03C3", color: "text-amber-400", barColor: "bg-amber-500", decimals: 1, maxMagnitude: 100 }
|
|
17
|
+
];
|
|
18
|
+
function GreekItem({ def, value, compact }) {
|
|
19
|
+
const magnitude = Math.min(Math.abs(value) / def.maxMagnitude, 1);
|
|
20
|
+
const displayValue = def.key === "iv" ? `${(value * 100).toFixed(def.decimals)}%` : value.toFixed(def.decimals);
|
|
21
|
+
return /* @__PURE__ */ jsxs(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
className: cn(
|
|
25
|
+
"flex items-center gap-1.5",
|
|
26
|
+
compact ? "min-w-0" : "min-w-[100px]"
|
|
27
|
+
),
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ jsx("span", { className: cn("text-[10px] font-semibold shrink-0", def.color), children: def.symbol }),
|
|
30
|
+
!compact && /* @__PURE__ */ jsx("span", { className: "text-[10px] text-zinc-500 shrink-0 w-[34px]", children: def.label }),
|
|
31
|
+
/* @__PURE__ */ jsx("span", { className: cn(
|
|
32
|
+
"font-mono tabular-nums text-xs text-zinc-200 shrink-0",
|
|
33
|
+
value < 0 && "text-red-400"
|
|
34
|
+
), children: displayValue }),
|
|
35
|
+
!compact && /* @__PURE__ */ jsx("div", { className: "flex-1 h-1 rounded-full bg-zinc-800 min-w-[24px] max-w-[48px] overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
className: cn("h-full rounded-full transition-all", def.barColor),
|
|
39
|
+
style: { width: `${magnitude * 100}%`, opacity: 0.7 }
|
|
40
|
+
}
|
|
41
|
+
) })
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
var GreeksDisplay = React.forwardRef(
|
|
47
|
+
function GreeksDisplay2(props, ref) {
|
|
48
|
+
const {
|
|
49
|
+
delta,
|
|
50
|
+
gamma,
|
|
51
|
+
theta,
|
|
52
|
+
vega,
|
|
53
|
+
rho,
|
|
54
|
+
iv,
|
|
55
|
+
compact = false,
|
|
56
|
+
className,
|
|
57
|
+
...rest
|
|
58
|
+
} = props;
|
|
59
|
+
const values = {
|
|
60
|
+
delta,
|
|
61
|
+
gamma,
|
|
62
|
+
theta,
|
|
63
|
+
vega,
|
|
64
|
+
rho,
|
|
65
|
+
iv
|
|
66
|
+
};
|
|
67
|
+
const activeGreeks = GREEKS.filter((g) => values[g.key] !== void 0);
|
|
68
|
+
return /* @__PURE__ */ jsx(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
ref,
|
|
72
|
+
className: cn(
|
|
73
|
+
"flex flex-wrap items-center",
|
|
74
|
+
compact ? "gap-3" : "gap-4",
|
|
75
|
+
className
|
|
76
|
+
),
|
|
77
|
+
...rest,
|
|
78
|
+
children: activeGreeks.map((g) => /* @__PURE__ */ jsx(
|
|
79
|
+
GreekItem,
|
|
80
|
+
{
|
|
81
|
+
def: g,
|
|
82
|
+
value: values[g.key],
|
|
83
|
+
compact
|
|
84
|
+
},
|
|
85
|
+
g.key
|
|
86
|
+
))
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
export { GreeksDisplay };
|
package/dist/heading.cjs
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var tailwindMerge = require('tailwind-merge');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
12
|
+
|
|
13
|
+
// src/heading.tsx
|
|
14
|
+
function cn(...inputs) {
|
|
15
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
16
|
+
}
|
|
17
|
+
var LEVEL_TAG = {
|
|
18
|
+
"1": "h1",
|
|
19
|
+
"2": "h2",
|
|
20
|
+
"3": "h3"
|
|
21
|
+
};
|
|
22
|
+
var LEVEL_CLASSES = {
|
|
23
|
+
"1": "text-[18px] leading-[24px] font-medium lg:text-[32px] lg:leading-[40px] lg:tracking-[-0.5px]",
|
|
24
|
+
"2": "text-[16px] leading-[24px] font-medium lg:text-[24px] lg:leading-[32px]",
|
|
25
|
+
"3": "text-[14px] leading-[20px] font-semibold lg:text-[18px] lg:leading-[24px] lg:font-medium"
|
|
26
|
+
};
|
|
27
|
+
var BASE_CLASSES = "font-heading text-heading";
|
|
28
|
+
var Heading = React__default.default.forwardRef(
|
|
29
|
+
function Heading2({ level, className, mb, size: _size, style: styleProp, ...rest }, ref) {
|
|
30
|
+
const Tag = level ? LEVEL_TAG[level] : "h2";
|
|
31
|
+
const levelClasses = level ? LEVEL_CLASSES[level] : void 0;
|
|
32
|
+
const shimStyle = { ...styleProp };
|
|
33
|
+
if (mb !== void 0) shimStyle.marginBottom = typeof mb === "number" ? `${mb * 4}px` : mb;
|
|
34
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
+
Tag,
|
|
36
|
+
{
|
|
37
|
+
ref,
|
|
38
|
+
className: cn(BASE_CLASSES, levelClasses, className),
|
|
39
|
+
style: Object.keys(shimStyle).length > 0 ? shimStyle : void 0,
|
|
40
|
+
...rest
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
exports.Heading = Heading;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
|
|
3
|
+
interface HeadingProps extends React__default.ComponentPropsWithoutRef<'h1'> {
|
|
4
|
+
level?: '1' | '2' | '3';
|
|
5
|
+
mb?: number | string;
|
|
6
|
+
size?: string;
|
|
7
|
+
}
|
|
8
|
+
declare const Heading: React__default.ForwardRefExoticComponent<HeadingProps & React__default.RefAttributes<HTMLHeadingElement>>;
|
|
9
|
+
|
|
10
|
+
export { Heading, type HeadingProps };
|