@cdx-ui/components 0.3.1 → 0.3.3
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 +2 -2
- package/coverage.svg +1 -1
- package/docs/components/bottom-sheet/content.md +2 -2
- package/docs/components/content.md +2 -0
- package/docs/components/currency-input/content.md +94 -5
- package/docs/components/data-grid/content.md +125 -1
- package/docs/components/insight/content.md +644 -0
- package/docs/components/insight-stack/content.md +231 -0
- package/docs/foundations/styles/tokens/all-tokens/content.md +23 -3
- package/docs/llms.txt +4 -0
- package/docs/patterns/forms/content.md +255 -0
- package/docs/resources/release-notes/0.3.1/content.md +13 -0
- package/docs/resources/release-notes/0.3.2/content.md +17 -0
- package/docs/resources/release-notes/content.md +2 -0
- package/lib/commonjs/components/BottomSheet/index.js +63 -16
- package/lib/commonjs/components/BottomSheet/index.js.map +1 -1
- package/lib/commonjs/components/CurrencyInput/index.js +35 -10
- package/lib/commonjs/components/CurrencyInput/index.js.map +1 -1
- package/lib/commonjs/components/CurrencyInput/styles.js +40 -3
- package/lib/commonjs/components/CurrencyInput/styles.js.map +1 -1
- package/lib/commonjs/components/Insight/index.js +438 -0
- package/lib/commonjs/components/Insight/index.js.map +1 -0
- package/lib/commonjs/components/Insight/insetRadius.js +35 -0
- package/lib/commonjs/components/Insight/insetRadius.js.map +1 -0
- package/lib/commonjs/components/Insight/styles.js +186 -0
- package/lib/commonjs/components/Insight/styles.js.map +1 -0
- package/lib/commonjs/components/InsightStack/index.js +93 -0
- package/lib/commonjs/components/InsightStack/index.js.map +1 -0
- package/lib/commonjs/components/InsightStack/styles.js +61 -0
- package/lib/commonjs/components/InsightStack/styles.js.map +1 -0
- package/lib/commonjs/components/index.js +24 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/figma/CurrencyInput.figma.js +8 -8
- package/lib/commonjs/figma/CurrencyInput.figma.js.map +1 -1
- package/lib/commonjs/figma/Insight.figma.js +73 -0
- package/lib/commonjs/figma/Insight.figma.js.map +1 -0
- package/lib/commonjs/figma/InsightStack.figma.js +39 -0
- package/lib/commonjs/figma/InsightStack.figma.js.map +1 -0
- package/lib/module/components/BottomSheet/index.js +64 -17
- package/lib/module/components/BottomSheet/index.js.map +1 -1
- package/lib/module/components/CurrencyInput/index.js +37 -12
- package/lib/module/components/CurrencyInput/index.js.map +1 -1
- package/lib/module/components/CurrencyInput/styles.js +38 -3
- package/lib/module/components/CurrencyInput/styles.js.map +1 -1
- package/lib/module/components/Insight/index.js +433 -0
- package/lib/module/components/Insight/index.js.map +1 -0
- package/lib/module/components/Insight/insetRadius.js +30 -0
- package/lib/module/components/Insight/insetRadius.js.map +1 -0
- package/lib/module/components/Insight/styles.js +183 -0
- package/lib/module/components/Insight/styles.js.map +1 -0
- package/lib/module/components/InsightStack/index.js +89 -0
- package/lib/module/components/InsightStack/index.js.map +1 -0
- package/lib/module/components/InsightStack/styles.js +58 -0
- package/lib/module/components/InsightStack/styles.js.map +1 -0
- package/lib/module/components/index.js +2 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/figma/CurrencyInput.figma.js +8 -8
- package/lib/module/figma/CurrencyInput.figma.js.map +1 -1
- package/lib/module/figma/Insight.figma.js +67 -0
- package/lib/module/figma/Insight.figma.js.map +1 -0
- package/lib/module/figma/InsightStack.figma.js +33 -0
- package/lib/module/figma/InsightStack.figma.js.map +1 -0
- package/lib/typescript/components/BottomSheet/index.d.ts.map +1 -1
- package/lib/typescript/components/CurrencyInput/index.d.ts +4 -1
- package/lib/typescript/components/CurrencyInput/index.d.ts.map +1 -1
- package/lib/typescript/components/CurrencyInput/styles.d.ts +17 -6
- package/lib/typescript/components/CurrencyInput/styles.d.ts.map +1 -1
- package/lib/typescript/components/Insight/index.d.ts +87 -0
- package/lib/typescript/components/Insight/index.d.ts.map +1 -0
- package/lib/typescript/components/Insight/insetRadius.d.ts +8 -0
- package/lib/typescript/components/Insight/insetRadius.d.ts.map +1 -0
- package/lib/typescript/components/Insight/styles.d.ts +33 -0
- package/lib/typescript/components/Insight/styles.d.ts.map +1 -0
- package/lib/typescript/components/InsightStack/index.d.ts +21 -0
- package/lib/typescript/components/InsightStack/index.d.ts.map +1 -0
- package/lib/typescript/components/InsightStack/styles.d.ts +11 -0
- package/lib/typescript/components/InsightStack/styles.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +2 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/figma/CurrencyInput.figma.d.ts.map +1 -1
- package/lib/typescript/figma/Insight.figma.d.ts +8 -0
- package/lib/typescript/figma/Insight.figma.d.ts.map +1 -0
- package/lib/typescript/figma/InsightStack.figma.d.ts +8 -0
- package/lib/typescript/figma/InsightStack.figma.d.ts.map +1 -0
- package/package.json +5 -5
- package/src/components/BottomSheet/index.tsx +88 -13
- package/src/components/CurrencyInput/index.tsx +36 -12
- package/src/components/CurrencyInput/styles.ts +51 -4
- package/src/components/Insight/index.tsx +531 -0
- package/src/components/Insight/insetRadius.ts +30 -0
- package/src/components/Insight/styles.ts +193 -0
- package/src/components/InsightStack/index.tsx +86 -0
- package/src/components/InsightStack/styles.ts +61 -0
- package/src/components/index.ts +2 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { cva, type VariantProps } from '@cdx-ui/utils';
|
|
2
|
+
import { DISABLED_CURSOR } from '../../styles/constants';
|
|
3
|
+
|
|
4
|
+
/** Ring width in px; must match the frame's `p-0.5`. */
|
|
5
|
+
export const FRAME_WIDTH = 2;
|
|
6
|
+
|
|
7
|
+
// Fallback for when `--border-radius-default` can't be read; the surface style overrides it.
|
|
8
|
+
const SURFACE_RADIUS = 'rounded-[calc(var(--border-radius-default)-2px)]';
|
|
9
|
+
|
|
10
|
+
// Figma measures padding from inside the 2px stroke, and the frame's `p-0.5` is that stroke, so
|
|
11
|
+
// these are the Figma values as-is. `min-h-14` is the natural one-line height: 12 + 32 + 12.
|
|
12
|
+
const SUMMARY_BODY = 'flex-row items-start gap-2.5 min-h-14 pt-2.5 pb-3 ps-2.5 pe-3';
|
|
13
|
+
|
|
14
|
+
// The standard web focus ring (2px `stroke-focus`, 2px clear of the card's edge) and disabled
|
|
15
|
+
// cursor, on whichever element takes focus. That element sits inside the 2px frame, and a
|
|
16
|
+
// `ring-offset` would paint its offset colour over the frame, so the ring is an outline: its
|
|
17
|
+
// offset stays transparent and it follows the surface radius. Figma has no hover or press tint
|
|
18
|
+
// for the card; the press scale is its only press feedback.
|
|
19
|
+
const PRESS_REGION_STATE = [
|
|
20
|
+
'web:outline-none',
|
|
21
|
+
DISABLED_CURSOR,
|
|
22
|
+
'web:data-[focus-visible=true]:outline-2 web:data-[focus-visible=true]:outline-solid web:data-[focus-visible=true]:outline-stroke-focus web:data-[focus-visible=true]:outline-offset-4',
|
|
23
|
+
].join(' ');
|
|
24
|
+
|
|
25
|
+
// ── Frame ───────────────────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
// The frame dims as a whole when disabled: dimming only the surface would let the frame's fill
|
|
28
|
+
// show through it.
|
|
29
|
+
export const insightFrameVariants = cva(
|
|
30
|
+
[
|
|
31
|
+
'relative p-0.5',
|
|
32
|
+
'rounded-[var(--border-radius-default)]',
|
|
33
|
+
'data-[disabled=true]:opacity-[var(--opacity-disabled)]',
|
|
34
|
+
],
|
|
35
|
+
{
|
|
36
|
+
variants: {
|
|
37
|
+
layout: {
|
|
38
|
+
summary: '',
|
|
39
|
+
// Reserves the tag overhang (11px above the outer edge) so a scroll container's top
|
|
40
|
+
// edge does not clip it.
|
|
41
|
+
detail: 'mt-[11px]',
|
|
42
|
+
},
|
|
43
|
+
color: {
|
|
44
|
+
info: '',
|
|
45
|
+
warning: '',
|
|
46
|
+
danger: '',
|
|
47
|
+
},
|
|
48
|
+
aiGenerated: {
|
|
49
|
+
true: 'bg-gradient-to-r from-stroke-ai-start to-stroke-ai-end',
|
|
50
|
+
false: '',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
compoundVariants: [
|
|
54
|
+
{ aiGenerated: false, color: 'info', className: 'bg-stroke-info-subtle' },
|
|
55
|
+
{ aiGenerated: false, color: 'warning', className: 'bg-stroke-warning-subtle' },
|
|
56
|
+
{ aiGenerated: false, color: 'danger', className: 'bg-stroke-danger-subtle' },
|
|
57
|
+
// The AI glow takes the insight's colour; the gradient ring does not.
|
|
58
|
+
{
|
|
59
|
+
aiGenerated: true,
|
|
60
|
+
color: 'info',
|
|
61
|
+
className: 'shadow-[0_0_3px_var(--color-surface-info-subtle)]',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
aiGenerated: true,
|
|
65
|
+
color: 'warning',
|
|
66
|
+
className: 'shadow-[0_0_3px_var(--color-surface-warning-subtle)]',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
aiGenerated: true,
|
|
70
|
+
color: 'danger',
|
|
71
|
+
className: 'shadow-[0_0_3px_var(--color-surface-danger-subtle)]',
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
defaultVariants: {
|
|
75
|
+
layout: 'summary',
|
|
76
|
+
color: 'info',
|
|
77
|
+
aiGenerated: false,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
// ── Surface ─────────────────────────────────────────────────
|
|
83
|
+
|
|
84
|
+
export const insightSurfaceVariants = cva(['bg-surface-primary', SURFACE_RADIUS], {
|
|
85
|
+
variants: {
|
|
86
|
+
layout: {
|
|
87
|
+
summary: '',
|
|
88
|
+
detail: 'pt-5 px-3 pb-3 gap-4',
|
|
89
|
+
},
|
|
90
|
+
// A split summary moves the body layout onto the press region.
|
|
91
|
+
split: {
|
|
92
|
+
true: '',
|
|
93
|
+
false: '',
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
// A split summary's surface only mirrors the press region's state, so the region styles it.
|
|
97
|
+
compoundVariants: [
|
|
98
|
+
{ layout: 'summary', split: false, className: [SUMMARY_BODY, PRESS_REGION_STATE] },
|
|
99
|
+
],
|
|
100
|
+
defaultVariants: {
|
|
101
|
+
layout: 'summary',
|
|
102
|
+
split: false,
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Web-only radius: the region has no fill, so the radius only shapes the web focus outline, and
|
|
107
|
+
// on native a runtime `px` override turns the `calc()` into NaN.
|
|
108
|
+
export const insightPressRegionVariants = cva([
|
|
109
|
+
SUMMARY_BODY,
|
|
110
|
+
'web:rounded-[calc(var(--border-radius-default)-2px)]',
|
|
111
|
+
PRESS_REGION_STATE,
|
|
112
|
+
]);
|
|
113
|
+
|
|
114
|
+
// ── Summary medallion icon ──────────────────────────────────
|
|
115
|
+
|
|
116
|
+
// `size-5` overrides Avatar md's `size-4`: the Figma medallion glyph is 20px.
|
|
117
|
+
export const insightIconVariants = cva(['size-5'], {
|
|
118
|
+
variants: {
|
|
119
|
+
color: {
|
|
120
|
+
info: 'text-content-info-on-subtle',
|
|
121
|
+
warning: 'text-content-warning-on-subtle',
|
|
122
|
+
danger: 'text-content-danger-on-subtle',
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
defaultVariants: {
|
|
126
|
+
color: 'info',
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// ── Summary text column ─────────────────────────────────────
|
|
131
|
+
|
|
132
|
+
// Figma's text row is a 32px-min band, centred, starting 2px below the medallion's top. One line
|
|
133
|
+
// sits centred against the medallion; longer copy grows downward while the medallion stays put.
|
|
134
|
+
export const insightSummaryTextVariants = cva(['flex-1 min-w-0 mt-0.5 min-h-8 justify-center'], {
|
|
135
|
+
variants: {
|
|
136
|
+
hasClose: {
|
|
137
|
+
true: 'pe-7',
|
|
138
|
+
false: '',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
defaultVariants: {
|
|
142
|
+
hasClose: false,
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// ── Tag ─────────────────────────────────────────────────────
|
|
147
|
+
|
|
148
|
+
// Positioned against the frame's outer edge: the 24px chip centres on the 2px stroke (-11px) and
|
|
149
|
+
// starts 12px from the outer start edge.
|
|
150
|
+
export const insightTagVariants = cva(['absolute z-10 -top-[11px] start-3']);
|
|
151
|
+
|
|
152
|
+
export const insightTagIconVariants = cva([], {
|
|
153
|
+
variants: {
|
|
154
|
+
color: {
|
|
155
|
+
info: 'text-content-info-on-subtle',
|
|
156
|
+
warning: 'text-content-warning-on-subtle',
|
|
157
|
+
danger: 'text-content-danger-on-subtle',
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
defaultVariants: {
|
|
161
|
+
color: 'info',
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// ── Close ───────────────────────────────────────────────────
|
|
166
|
+
|
|
167
|
+
// Positioned against the surface (inside the ring): 4px from its top and end, as in Figma.
|
|
168
|
+
export const insightCloseVariants = cva(['absolute top-1 end-1']);
|
|
169
|
+
|
|
170
|
+
// ── Header / Title / Description / Content / Footer ─────────
|
|
171
|
+
|
|
172
|
+
export const insightHeaderVariants = cva(['gap-0.5 min-h-8 justify-center']);
|
|
173
|
+
|
|
174
|
+
export const insightTitleVariants = cva(['heading-sm text-content-primary'], {
|
|
175
|
+
variants: {
|
|
176
|
+
hasClose: {
|
|
177
|
+
true: 'pe-7',
|
|
178
|
+
false: '',
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
defaultVariants: {
|
|
182
|
+
hasClose: false,
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
export const insightDescriptionVariants = cva(['body-md text-content-primary']);
|
|
187
|
+
|
|
188
|
+
export const insightContentVariants = cva([]);
|
|
189
|
+
|
|
190
|
+
// Wraps so actions keep their natural widths at narrow widths instead of overflowing the start edge.
|
|
191
|
+
export const insightFooterVariants = cva(['flex-row flex-wrap items-center justify-end gap-2']);
|
|
192
|
+
|
|
193
|
+
export type InsightFrameVariantProps = VariantProps<typeof insightFrameVariants>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { cloneElement, forwardRef, isValidElement, type ReactElement, type ReactNode } from 'react';
|
|
2
|
+
import { View, type ViewProps } from 'react-native';
|
|
3
|
+
import { Slot, dataAttributes, mergeDataAttributes } from '@cdx-ui/primitives';
|
|
4
|
+
import { cn } from '@cdx-ui/utils';
|
|
5
|
+
import {
|
|
6
|
+
insightStackFrontVariants,
|
|
7
|
+
insightStackLayerVariants,
|
|
8
|
+
insightStackRootVariants,
|
|
9
|
+
} from './styles';
|
|
10
|
+
|
|
11
|
+
type LayerCount = 0 | 1 | 2;
|
|
12
|
+
|
|
13
|
+
const layerCountFor = (count: number): LayerCount => (count >= 3 ? 2 : count >= 2 ? 1 : 0);
|
|
14
|
+
|
|
15
|
+
export interface InsightStackProps extends ViewProps {
|
|
16
|
+
/**
|
|
17
|
+
* How many insights the stack stands for. `1` or less draws no layers, `2` draws one, and `3`
|
|
18
|
+
* or more draws two. The layers are decorative, so put the count in the front Insight's
|
|
19
|
+
* accessible label or hint.
|
|
20
|
+
*/
|
|
21
|
+
count: number;
|
|
22
|
+
/** Merges the root props onto a single child element instead of rendering a `View`. */
|
|
23
|
+
asChild?: boolean;
|
|
24
|
+
className?: string;
|
|
25
|
+
/** The front card, usually a summary `Insight`. */
|
|
26
|
+
children?: ReactNode;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function InsightStackLayer({ depth, layers }: { depth: 1 | 2; layers: 1 | 2 }) {
|
|
30
|
+
return (
|
|
31
|
+
<View
|
|
32
|
+
aria-hidden
|
|
33
|
+
accessibilityElementsHidden
|
|
34
|
+
importantForAccessibility="no-hide-descendants"
|
|
35
|
+
className={insightStackLayerVariants({ depth, layers })}
|
|
36
|
+
{...dataAttributes({ slot: 'insight-stack-layer' })}
|
|
37
|
+
/>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function InsightStackBody({ layers, children }: { layers: LayerCount; children?: ReactNode }) {
|
|
42
|
+
return (
|
|
43
|
+
<>
|
|
44
|
+
{layers === 2 ? <InsightStackLayer depth={2} layers={2} /> : null}
|
|
45
|
+
{layers === 0 ? null : <InsightStackLayer depth={1} layers={layers} />}
|
|
46
|
+
<View className={insightStackFrontVariants()}>{children}</View>
|
|
47
|
+
</>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Draws up to two decorative cards behind a summary Insight to show that more insights exist.
|
|
53
|
+
* The root adds no role, so the front Insight stays the only interactive element.
|
|
54
|
+
*/
|
|
55
|
+
export const InsightStack = forwardRef<View, InsightStackProps>(
|
|
56
|
+
({ count, asChild = false, className, style, children, ...props }, ref) => {
|
|
57
|
+
const layers = layerCountFor(count);
|
|
58
|
+
const rootProps = {
|
|
59
|
+
className: cn(insightStackRootVariants({ layers }), className),
|
|
60
|
+
style,
|
|
61
|
+
...props,
|
|
62
|
+
...mergeDataAttributes(props, dataAttributes({ slot: 'insight-stack' })),
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
if (asChild && isValidElement(children)) {
|
|
66
|
+
const child = children as ReactElement<{ children?: ReactNode }>;
|
|
67
|
+
return (
|
|
68
|
+
<Slot ref={ref} {...rootProps}>
|
|
69
|
+
{cloneElement(
|
|
70
|
+
child,
|
|
71
|
+
undefined,
|
|
72
|
+
<InsightStackBody layers={layers}>{child.props.children}</InsightStackBody>,
|
|
73
|
+
)}
|
|
74
|
+
</Slot>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<View ref={ref} {...rootProps}>
|
|
80
|
+
<InsightStackBody layers={layers}>{children}</InsightStackBody>
|
|
81
|
+
</View>
|
|
82
|
+
);
|
|
83
|
+
},
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
InsightStack.displayName = 'InsightStack';
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { cva, type VariantProps } from '@cdx-ui/utils';
|
|
2
|
+
|
|
3
|
+
// ── Root ────────────────────────────────────────────────────
|
|
4
|
+
|
|
5
|
+
// The bottom padding is the room the layers peek into: 6px per layer, matching Figma.
|
|
6
|
+
export const insightStackRootVariants = cva(['relative'], {
|
|
7
|
+
variants: {
|
|
8
|
+
layers: {
|
|
9
|
+
0: '',
|
|
10
|
+
1: 'pb-1.5',
|
|
11
|
+
2: 'pb-3',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
layers: 0,
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// ── Front ───────────────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
// Keeps the front Insight painted above the layers on Android.
|
|
22
|
+
export const insightStackFrontVariants = cva(['relative z-10']);
|
|
23
|
+
|
|
24
|
+
// ── Layer ───────────────────────────────────────────────────
|
|
25
|
+
|
|
26
|
+
// Each layer is anchored to the root's bottom, so it peeks 6px per depth below the front card
|
|
27
|
+
// whatever that card's height. Both start at `top-5`, below where any front card begins: a detail
|
|
28
|
+
// Insight's frame sits 11px down (its tag reserve), and the layer's 6px glow needs room above
|
|
29
|
+
// that, so the layer tops stay hidden behind the opaque front card (at least 60px tall). The insets
|
|
30
|
+
// are symmetric, so RTL needs no mirroring.
|
|
31
|
+
export const insightStackLayerVariants = cva(
|
|
32
|
+
[
|
|
33
|
+
'absolute',
|
|
34
|
+
'bg-surface-primary',
|
|
35
|
+
'border-2 border-stroke-secondary',
|
|
36
|
+
'rounded-[var(--border-radius-default)]',
|
|
37
|
+
'shadow-[0_0_6px_var(--color-surface-neutral-subtle)]',
|
|
38
|
+
],
|
|
39
|
+
{
|
|
40
|
+
variants: {
|
|
41
|
+
depth: {
|
|
42
|
+
1: 'inset-x-1 top-5',
|
|
43
|
+
2: 'inset-x-2 top-5 bottom-0',
|
|
44
|
+
},
|
|
45
|
+
layers: {
|
|
46
|
+
1: '',
|
|
47
|
+
2: '',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
compoundVariants: [
|
|
51
|
+
{ depth: 1, layers: 1, className: 'bottom-0' },
|
|
52
|
+
{ depth: 1, layers: 2, className: 'bottom-1.5' },
|
|
53
|
+
],
|
|
54
|
+
defaultVariants: {
|
|
55
|
+
depth: 1,
|
|
56
|
+
layers: 1,
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
export type InsightStackLayerVariantProps = VariantProps<typeof insightStackLayerVariants>;
|
package/src/components/index.ts
CHANGED
|
@@ -34,6 +34,8 @@ export * from './Field';
|
|
|
34
34
|
export * from './Form';
|
|
35
35
|
export * from './FullScreenDialog';
|
|
36
36
|
export * from './Image';
|
|
37
|
+
export * from './Insight';
|
|
38
|
+
export * from './InsightStack';
|
|
37
39
|
export * from './InsuranceDisclosure';
|
|
38
40
|
export * from './Input';
|
|
39
41
|
export * from './OtpInput';
|