@frosted-ui/react-native 0.0.1-canary.100
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 +160 -0
- package/dist/components/accordion.d.ts +21 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +94 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +67 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +170 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +4 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +4 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.d.ts +23 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +128 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +15 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +81 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +14 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +81 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/callout.d.ts +23 -0
- package/dist/components/callout.d.ts.map +1 -0
- package/dist/components/callout.js +128 -0
- package/dist/components/callout.js.map +1 -0
- package/dist/components/card.d.ts +9 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +41 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox.d.ts +12 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +100 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/circular-progress.d.ts +21 -0
- package/dist/components/circular-progress.d.ts.map +1 -0
- package/dist/components/circular-progress.js +78 -0
- package/dist/components/circular-progress.js.map +1 -0
- package/dist/components/code.d.ts +18 -0
- package/dist/components/code.d.ts.map +1 -0
- package/dist/components/code.js +83 -0
- package/dist/components/code.js.map +1 -0
- package/dist/components/context-menu.d.ts +65 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +441 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/dialog.d.ts +49 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +141 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +65 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +441 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/heading.d.ts +15 -0
- package/dist/components/heading.d.ts.map +1 -0
- package/dist/components/heading.js +8 -0
- package/dist/components/heading.js.map +1 -0
- package/dist/components/hover-card.d.ts +24 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +49 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/icon-button.d.ts +14 -0
- package/dist/components/icon-button.d.ts.map +1 -0
- package/dist/components/icon-button.js +81 -0
- package/dist/components/icon-button.js.map +1 -0
- package/dist/components/icon.d.ts +27 -0
- package/dist/components/icon.d.ts.map +1 -0
- package/dist/components/icon.js +30 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/index.d.ts +37 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +49 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/label.d.ts +8 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +26 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/link.d.ts +19 -0
- package/dist/components/link.d.ts.map +1 -0
- package/dist/components/link.js +68 -0
- package/dist/components/link.js.map +1 -0
- package/dist/components/list.d.ts +37 -0
- package/dist/components/list.d.ts.map +1 -0
- package/dist/components/list.js +112 -0
- package/dist/components/list.js.map +1 -0
- package/dist/components/native-only-animated-view.d.ts +219 -0
- package/dist/components/native-only-animated-view.d.ts.map +1 -0
- package/dist/components/native-only-animated-view.js +26 -0
- package/dist/components/native-only-animated-view.js.map +1 -0
- package/dist/components/popover.d.ts +24 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +52 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +14 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +52 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +18 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +122 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/segmented-control.d.ts +21 -0
- package/dist/components/segmented-control.d.ts.map +1 -0
- package/dist/components/segmented-control.js +113 -0
- package/dist/components/segmented-control.js.map +1 -0
- package/dist/components/select.d.ts +58 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +491 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +12 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +47 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/skeleton.d.ts +28 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +137 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +30 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +248 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/spinner.d.ts +17 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +199 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/switch.d.ts +12 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +188 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/tabs.d.ts +26 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +125 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text-area.d.ts +16 -0
- package/dist/components/text-area.d.ts.map +1 -0
- package/dist/components/text-area.js +121 -0
- package/dist/components/text-area.js.map +1 -0
- package/dist/components/text-field.d.ts +35 -0
- package/dist/components/text-field.d.ts.map +1 -0
- package/dist/components/text-field.js +300 -0
- package/dist/components/text-field.js.map +1 -0
- package/dist/components/text.d.ts +23 -0
- package/dist/components/text.d.ts.map +1 -0
- package/dist/components/text.js +44 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/tooltip.d.ts +24 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +63 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/button-styles.d.ts +13 -0
- package/dist/lib/button-styles.d.ts.map +1 -0
- package/dist/lib/button-styles.js +115 -0
- package/dist/lib/button-styles.js.map +1 -0
- package/dist/lib/color-utils.d.ts +26 -0
- package/dist/lib/color-utils.d.ts.map +1 -0
- package/dist/lib/color-utils.js +48 -0
- package/dist/lib/color-utils.js.map +1 -0
- package/dist/lib/dialog-styles.d.ts +42 -0
- package/dist/lib/dialog-styles.d.ts.map +1 -0
- package/dist/lib/dialog-styles.js +162 -0
- package/dist/lib/dialog-styles.js.map +1 -0
- package/dist/lib/full-window-overlay.d.ts +11 -0
- package/dist/lib/full-window-overlay.d.ts.map +1 -0
- package/dist/lib/full-window-overlay.js +16 -0
- package/dist/lib/full-window-overlay.js.map +1 -0
- package/dist/lib/panel-styles.d.ts +32 -0
- package/dist/lib/panel-styles.d.ts.map +1 -0
- package/dist/lib/panel-styles.js +96 -0
- package/dist/lib/panel-styles.js.map +1 -0
- package/dist/lib/text-input-styles.d.ts +36 -0
- package/dist/lib/text-input-styles.d.ts.map +1 -0
- package/dist/lib/text-input-styles.js +88 -0
- package/dist/lib/text-input-styles.js.map +1 -0
- package/dist/lib/theme-context.d.ts +80 -0
- package/dist/lib/theme-context.d.ts.map +1 -0
- package/dist/lib/theme-context.js +97 -0
- package/dist/lib/theme-context.js.map +1 -0
- package/dist/lib/theme-tokens.d.ts +222 -0
- package/dist/lib/theme-tokens.d.ts.map +1 -0
- package/dist/lib/theme-tokens.js +158 -0
- package/dist/lib/theme-tokens.js.map +1 -0
- package/dist/lib/theme.d.ts +40 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +194 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/types.d.ts +18 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/use-theme-tokens.d.ts +593 -0
- package/dist/lib/use-theme-tokens.d.ts.map +1 -0
- package/dist/lib/use-theme-tokens.js +44 -0
- package/dist/lib/use-theme-tokens.js.map +1 -0
- package/docs/llm/COLOR_SYSTEM.md +799 -0
- package/docs/llm/COMPONENTS.md +1329 -0
- package/docs/llm/DESIGN_PATTERNS.md +2567 -0
- package/docs/llm/README.md +118 -0
- package/docs/llm/TYPOGRAPHY.md +516 -0
- package/package.json +106 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { NativeOnlyAnimatedView } from '../components/native-only-animated-view';
|
|
2
|
+
import { Text } from '../components/text';
|
|
3
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
4
|
+
import * as TooltipPrimitive from '@rn-primitives/tooltip';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { Platform, StyleSheet, View } from 'react-native';
|
|
7
|
+
import { FadeIn, FadeOut } from 'react-native-reanimated';
|
|
8
|
+
import { FullWindowOverlay as RNFullWindowOverlay } from 'react-native-screens';
|
|
9
|
+
const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
|
|
10
|
+
/**
|
|
11
|
+
* Tooltip component matching web version.
|
|
12
|
+
* Uses reversed theme appearance (light mode shows dark tooltip, dark mode shows light tooltip).
|
|
13
|
+
*/
|
|
14
|
+
function Tooltip({ children, content, delayDuration = 400, sideOffset = 4, side = 'top', portalHost, ...rootProps }) {
|
|
15
|
+
const { invertedColors } = useThemeTokens();
|
|
16
|
+
// Use inverted theme colors - tooltip shows opposite of current theme
|
|
17
|
+
const backgroundColor = invertedColors.background;
|
|
18
|
+
const textColor = invertedColors.palettes.gray['12'];
|
|
19
|
+
// Shadow style
|
|
20
|
+
const shadowStyle = Platform.select({
|
|
21
|
+
web: {
|
|
22
|
+
boxShadow: `
|
|
23
|
+
0 4px 16px -8px rgba(0, 0, 0, 0.08),
|
|
24
|
+
0 3px 12px -4px rgba(0, 0, 0, 0.05),
|
|
25
|
+
0 2px 3px -2px rgba(0, 0, 61, 0.05)
|
|
26
|
+
`.trim(),
|
|
27
|
+
},
|
|
28
|
+
default: {
|
|
29
|
+
shadowColor: '#000',
|
|
30
|
+
shadowOffset: { width: 0, height: 2 },
|
|
31
|
+
shadowOpacity: 0.1,
|
|
32
|
+
shadowRadius: 8,
|
|
33
|
+
elevation: 4,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const contentStyle = {
|
|
37
|
+
backgroundColor,
|
|
38
|
+
paddingVertical: 4, // space-1
|
|
39
|
+
paddingHorizontal: 8, // space-2
|
|
40
|
+
borderRadius: 10, // radius-4
|
|
41
|
+
...shadowStyle,
|
|
42
|
+
};
|
|
43
|
+
return (<TooltipPrimitive.Root delayDuration={delayDuration} {...rootProps}>
|
|
44
|
+
<TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>
|
|
45
|
+
<TooltipPrimitive.Portal hostName={portalHost}>
|
|
46
|
+
<FullWindowOverlay>
|
|
47
|
+
<TooltipPrimitive.Overlay style={Platform.select({ native: StyleSheet.absoluteFill })}>
|
|
48
|
+
<NativeOnlyAnimatedView entering={FadeIn.duration(100)} exiting={FadeOut.duration(100)}>
|
|
49
|
+
<TooltipPrimitive.Content sideOffset={sideOffset} side={side}>
|
|
50
|
+
<View style={contentStyle}>
|
|
51
|
+
<Text size="2" style={{ color: textColor }}>
|
|
52
|
+
{content}
|
|
53
|
+
</Text>
|
|
54
|
+
</View>
|
|
55
|
+
</TooltipPrimitive.Content>
|
|
56
|
+
</NativeOnlyAnimatedView>
|
|
57
|
+
</TooltipPrimitive.Overlay>
|
|
58
|
+
</FullWindowOverlay>
|
|
59
|
+
</TooltipPrimitive.Portal>
|
|
60
|
+
</TooltipPrimitive.Root>);
|
|
61
|
+
}
|
|
62
|
+
export { Tooltip };
|
|
63
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AAiBvF;;;GAGG;AACH,SAAS,OAAO,CAAC,EACf,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,GAAG,EACnB,UAAU,GAAG,CAAC,EACd,IAAI,GAAG,KAAK,EACZ,UAAU,EACV,GAAG,SAAS,EACC;IACb,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAE5C,sEAAsE;IACtE,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC;IAClD,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErD,eAAe;IACf,MAAM,WAAW,GAAc,QAAQ,CAAC,MAAM,CAAC;QAC7C,GAAG,EAAE;YACH,SAAS,EAAE;;;;OAIV,CAAC,IAAI,EAAE;SACI;QACd,OAAO,EAAE;YACP,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YACrC,aAAa,EAAE,GAAG;YAClB,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;SACb;KACF,CAAc,CAAC;IAEhB,MAAM,YAAY,GAAc;QAC9B,eAAe;QACf,eAAe,EAAE,CAAC,EAAE,UAAU;QAC9B,iBAAiB,EAAE,CAAC,EAAE,UAAU;QAChC,YAAY,EAAE,EAAE,EAAE,WAAW;QAC7B,GAAG,WAAW;KACf,CAAC;IAEF,OAAO,CACL,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,SAAS,CAAC,CACjE;MAAA,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,OAAO,CACtE;MAAA,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAC5C;QAAA,CAAC,iBAAiB,CAChB;UAAA,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CACpF;YAAA,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACrF;cAAA,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAC3D;gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CACxB;kBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CACzC;oBAAA,CAAC,OAAO,CACV;kBAAA,EAAE,IAAI,CACR;gBAAA,EAAE,IAAI,CACR;cAAA,EAAE,gBAAgB,CAAC,OAAO,CAC5B;YAAA,EAAE,sBAAsB,CAC1B;UAAA,EAAE,gBAAgB,CAAC,OAAO,CAC5B;QAAA,EAAE,iBAAiB,CACrB;MAAA,EAAE,gBAAgB,CAAC,MAAM,CAC3B;IAAA,EAAE,gBAAgB,CAAC,IAAI,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './components';
|
|
2
|
+
export { isSemanticColor, resolveAccentFromColor } from './lib/color-utils';
|
|
3
|
+
export * from './lib/types';
|
|
4
|
+
export * from './lib/use-theme-tokens';
|
|
5
|
+
export { defaultSemanticColors, ThemeProvider, useTheme } from './lib/theme-context';
|
|
6
|
+
export type { ColorScheme, DangerColor, InfoColor, SemanticColorConfig, SuccessColor, ThemeContextValue, ThemeProviderProps, WarningColor, } from './lib/theme-context';
|
|
7
|
+
export { NAV_THEME, useNavTheme } from './lib/theme';
|
|
8
|
+
export { PortalHost } from '@rn-primitives/portal';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAC;AAI7B,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AAIvC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACrF,YAAY,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// COMPONENTS
|
|
2
|
+
//------------------------------------------------------------------------------
|
|
3
|
+
export * from './components';
|
|
4
|
+
// UTILITIES
|
|
5
|
+
//------------------------------------------------------------------------------
|
|
6
|
+
export { isSemanticColor, resolveAccentFromColor } from './lib/color-utils';
|
|
7
|
+
export * from './lib/types';
|
|
8
|
+
export * from './lib/use-theme-tokens';
|
|
9
|
+
// THEME
|
|
10
|
+
//------------------------------------------------------------------------------
|
|
11
|
+
export { defaultSemanticColors, ThemeProvider, useTheme } from './lib/theme-context';
|
|
12
|
+
// NAVIGATION
|
|
13
|
+
//------------------------------------------------------------------------------
|
|
14
|
+
export { NAV_THEME, useNavTheme } from './lib/theme';
|
|
15
|
+
// PORTAL
|
|
16
|
+
//------------------------------------------------------------------------------
|
|
17
|
+
export { PortalHost } from '@rn-primitives/portal';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,gFAAgF;AAChF,cAAc,cAAc,CAAC;AAE7B,YAAY;AACZ,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AAEvC,QAAQ;AACR,gFAAgF;AAChF,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAYrF,aAAa;AACb,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErD,SAAS;AACT,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
2
|
+
import type { ViewStyle } from 'react-native';
|
|
3
|
+
export type ButtonSize = '1' | '2' | '3' | '4';
|
|
4
|
+
export type ButtonVariant = 'solid' | 'soft' | 'surface' | 'ghost';
|
|
5
|
+
type Palette = ReturnType<typeof useThemeTokens>['colors']['palettes']['gray'];
|
|
6
|
+
export declare function getButtonSizeStyle(size: ButtonSize, isIconButton?: boolean): ViewStyle;
|
|
7
|
+
export declare function getButtonVariantStyle(variant: ButtonVariant, colors: ReturnType<typeof useThemeTokens>['colors'], palette: Palette, gray: Palette, disabled: boolean, pressed: boolean, hovered: boolean): ViewStyle;
|
|
8
|
+
export declare function getButtonShadowStyle(variant: ButtonVariant, disabled: boolean, pressed: boolean): ViewStyle | undefined;
|
|
9
|
+
export declare function getButtonFocusStyle(palette: Palette, focused: boolean, disabled: boolean): ViewStyle | undefined;
|
|
10
|
+
export declare function getButtonPressedFilter(variant: ButtonVariant, pressed: boolean, disabled: boolean): ViewStyle | undefined;
|
|
11
|
+
export declare function getButtonTextColor(variant: ButtonVariant, palette: Palette, gray: Palette, disabled: boolean): string;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=button-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-styles.d.ts","sourceRoot":"","sources":["../../src/lib/button-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAGnE,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,UAAQ,GAAG,SAAS,CA+BpF;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,QAAQ,CAAC,EACnD,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,SAAS,CA+CX;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,GACf,SAAS,GAAG,SAAS,CAWvB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,GAChB,SAAS,GAAG,SAAS,CAUvB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,GAChB,SAAS,GAAG,SAAS,CAKvB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,OAAO,GAChB,MAAM,CAQR"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
export function getButtonSizeStyle(size, isIconButton = false) {
|
|
3
|
+
// Based on web CSS:
|
|
4
|
+
// Size 1: height=space-5(24), gap=space-1(4), padding=space-2(8), radius=6
|
|
5
|
+
// Size 2: height=space-6(32), gap=space-1*1.5(6), padding=space-3(12), radius=8
|
|
6
|
+
// Size 3: height=space-7(40), gap=space-2(8), padding=space-4(16), radius=10
|
|
7
|
+
// Size 4: height=space-8(48), gap=space-3(12), padding=space-4(16), radius=14
|
|
8
|
+
const baseSize = size === '1'
|
|
9
|
+
? { height: 24, borderRadius: 6, gap: 4 }
|
|
10
|
+
: size === '2'
|
|
11
|
+
? { height: 32, borderRadius: 8, gap: 6 }
|
|
12
|
+
: size === '3'
|
|
13
|
+
? { height: 40, borderRadius: 10, gap: 8 }
|
|
14
|
+
: { height: 48, borderRadius: 14, gap: 12 };
|
|
15
|
+
if (isIconButton) {
|
|
16
|
+
// IconButton: square (width = height), no horizontal padding
|
|
17
|
+
return {
|
|
18
|
+
...baseSize,
|
|
19
|
+
width: baseSize.height,
|
|
20
|
+
paddingHorizontal: 0,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
// Regular Button: horizontal padding based on size
|
|
24
|
+
const paddingHorizontal = size === '1' ? 8 : size === '2' ? 12 : size === '3' ? 16 : 16;
|
|
25
|
+
return {
|
|
26
|
+
...baseSize,
|
|
27
|
+
paddingHorizontal,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function getButtonVariantStyle(variant, colors, palette, gray, disabled, pressed, hovered) {
|
|
31
|
+
let backgroundColor;
|
|
32
|
+
let borderColor;
|
|
33
|
+
let borderWidth;
|
|
34
|
+
if (disabled) {
|
|
35
|
+
switch (variant) {
|
|
36
|
+
case 'solid':
|
|
37
|
+
case 'soft':
|
|
38
|
+
backgroundColor = gray.a3;
|
|
39
|
+
break;
|
|
40
|
+
case 'surface':
|
|
41
|
+
backgroundColor = gray.a2;
|
|
42
|
+
borderColor = gray.a6;
|
|
43
|
+
borderWidth = 1;
|
|
44
|
+
break;
|
|
45
|
+
case 'ghost':
|
|
46
|
+
backgroundColor = 'transparent';
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
switch (variant) {
|
|
52
|
+
case 'solid':
|
|
53
|
+
backgroundColor = pressed ? palette['10'] : hovered ? palette['10'] : palette['9'];
|
|
54
|
+
break;
|
|
55
|
+
case 'soft':
|
|
56
|
+
backgroundColor = pressed ? palette.a5 : hovered ? palette.a4 : palette.a3;
|
|
57
|
+
break;
|
|
58
|
+
case 'surface':
|
|
59
|
+
// Default: panelSolid bg, gray-a5 border (stroke), outer shadow
|
|
60
|
+
// Hover: same bg, gray-a7 border, outer shadow
|
|
61
|
+
// Pressed: gray-a3 bg, gray-a6 border, no outer shadow
|
|
62
|
+
backgroundColor = pressed ? gray['3'] : colors.panelSolid;
|
|
63
|
+
borderColor = pressed ? gray.a6 : hovered ? gray.a7 : gray.a5;
|
|
64
|
+
borderWidth = 1;
|
|
65
|
+
break;
|
|
66
|
+
case 'ghost':
|
|
67
|
+
backgroundColor = pressed ? palette.a4 : hovered ? palette.a3 : undefined;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
backgroundColor,
|
|
73
|
+
borderColor,
|
|
74
|
+
borderWidth,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export function getButtonShadowStyle(variant, disabled, pressed) {
|
|
78
|
+
if (!disabled && !pressed && variant === 'surface') {
|
|
79
|
+
return {
|
|
80
|
+
shadowColor: '#000000',
|
|
81
|
+
shadowOpacity: 0.05,
|
|
82
|
+
shadowOffset: { width: 0, height: 1 },
|
|
83
|
+
shadowRadius: 2,
|
|
84
|
+
elevation: 2,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
export function getButtonFocusStyle(palette, focused, disabled) {
|
|
90
|
+
if (focused && !disabled) {
|
|
91
|
+
return {
|
|
92
|
+
outlineWidth: 2,
|
|
93
|
+
outlineStyle: 'solid',
|
|
94
|
+
outlineColor: palette.a8,
|
|
95
|
+
outlineOffset: 2,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
export function getButtonPressedFilter(variant, pressed, disabled) {
|
|
101
|
+
if (Platform.OS === 'web' && pressed && !disabled && variant === 'solid') {
|
|
102
|
+
return { filter: 'brightness(0.92) saturate(1.1)' };
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
export function getButtonTextColor(variant, palette, gray, disabled) {
|
|
107
|
+
if (disabled) {
|
|
108
|
+
return gray.a8;
|
|
109
|
+
}
|
|
110
|
+
if (variant === 'solid') {
|
|
111
|
+
return palette['9-contrast'];
|
|
112
|
+
}
|
|
113
|
+
return palette.a11 || palette['11'];
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=button-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-styles.js","sourceRoot":"","sources":["../../src/lib/button-styles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type SemanticColorConfig } from './theme-context';
|
|
2
|
+
import type { AccentColor, Color, SemanticColor } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves a Color (which can be an AccentColor or SemanticColor) to an AccentColor.
|
|
5
|
+
* Semantic colors are resolved using the provided semantic color configuration.
|
|
6
|
+
*
|
|
7
|
+
* @param color - The color to resolve (can be 'danger', 'warning', 'success', 'info', or any AccentColor)
|
|
8
|
+
* @param semanticColors - The semantic color configuration from ThemeProvider (optional, uses defaults if not provided)
|
|
9
|
+
* @param defaultColor - The default color to return if no color is provided (defaults to 'blue')
|
|
10
|
+
* @returns The resolved AccentColor
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveAccentFromColor(color: Color | undefined, semanticColors?: SemanticColorConfig, defaultColor?: AccentColor): AccentColor;
|
|
13
|
+
/**
|
|
14
|
+
* Checks if a color is a semantic color.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isSemanticColor(color: Color): color is SemanticColor;
|
|
17
|
+
/**
|
|
18
|
+
* Hook that returns a function to resolve colors using the current theme's semantic color configuration.
|
|
19
|
+
* Use this in components to properly respect ThemeProvider's color settings.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const resolveColor = useResolveColor();
|
|
23
|
+
* const accentColor = resolveColor(props.color); // Respects ThemeProvider config
|
|
24
|
+
*/
|
|
25
|
+
export declare function useResolveColor(): (color: Color | undefined, defaultColor?: AccentColor) => AccentColor;
|
|
26
|
+
//# sourceMappingURL=color-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../src/lib/color-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,cAAc,GAAE,mBAA2C,EAC3D,YAAY,GAAE,WAAoB,GACjC,WAAW,CAiBb;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,aAAa,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,YAKjB,KAAK,GAAG,SAAS,iBAAgB,WAAW,KAAY,WAAW,CAIhF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { defaultSemanticColors, useSemanticColors, } from './theme-context';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves a Color (which can be an AccentColor or SemanticColor) to an AccentColor.
|
|
5
|
+
* Semantic colors are resolved using the provided semantic color configuration.
|
|
6
|
+
*
|
|
7
|
+
* @param color - The color to resolve (can be 'danger', 'warning', 'success', 'info', or any AccentColor)
|
|
8
|
+
* @param semanticColors - The semantic color configuration from ThemeProvider (optional, uses defaults if not provided)
|
|
9
|
+
* @param defaultColor - The default color to return if no color is provided (defaults to 'blue')
|
|
10
|
+
* @returns The resolved AccentColor
|
|
11
|
+
*/
|
|
12
|
+
export function resolveAccentFromColor(color, semanticColors = defaultSemanticColors, defaultColor = 'blue') {
|
|
13
|
+
if (!color)
|
|
14
|
+
return defaultColor;
|
|
15
|
+
switch (color) {
|
|
16
|
+
case 'accent':
|
|
17
|
+
return semanticColors.accentColor;
|
|
18
|
+
case 'danger':
|
|
19
|
+
return semanticColors.dangerColor;
|
|
20
|
+
case 'warning':
|
|
21
|
+
return semanticColors.warningColor;
|
|
22
|
+
case 'success':
|
|
23
|
+
return semanticColors.successColor;
|
|
24
|
+
case 'info':
|
|
25
|
+
return semanticColors.infoColor;
|
|
26
|
+
default:
|
|
27
|
+
return color;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Checks if a color is a semantic color.
|
|
32
|
+
*/
|
|
33
|
+
export function isSemanticColor(color) {
|
|
34
|
+
return color === 'danger' || color === 'warning' || color === 'success' || color === 'info';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Hook that returns a function to resolve colors using the current theme's semantic color configuration.
|
|
38
|
+
* Use this in components to properly respect ThemeProvider's color settings.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* const resolveColor = useResolveColor();
|
|
42
|
+
* const accentColor = resolveColor(props.color); // Respects ThemeProvider config
|
|
43
|
+
*/
|
|
44
|
+
export function useResolveColor() {
|
|
45
|
+
const semanticColors = useSemanticColors();
|
|
46
|
+
return useMemo(() => (color, defaultColor = 'blue') => resolveAccentFromColor(color, semanticColors, defaultColor), [semanticColors]);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=color-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-utils.js","sourceRoot":"","sources":["../../src/lib/color-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAGzB;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAwB,EACxB,iBAAsC,qBAAqB,EAC3D,eAA4B,MAAM;IAElC,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC;IAEhC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,WAAW,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,WAAW,CAAC;QACpC,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,YAAY,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,YAAY,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,SAAS,CAAC;QAClC;YACE,OAAO,KAAoB,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC;AAC9F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,CAAC,KAAwB,EAAE,eAA4B,MAAM,EAAe,EAAE,CAC5E,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,CAAC,EAC/D,CAAC,cAAc,CAAC,CACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
2
|
+
export type DialogSize = '1' | '2' | '3' | '4';
|
|
3
|
+
interface ThemeColors {
|
|
4
|
+
panelSolid: string;
|
|
5
|
+
palettes: {
|
|
6
|
+
gray: {
|
|
7
|
+
a3: string;
|
|
8
|
+
a6: string;
|
|
9
|
+
a7: string;
|
|
10
|
+
};
|
|
11
|
+
black: {
|
|
12
|
+
a3: string;
|
|
13
|
+
a4: string;
|
|
14
|
+
a6: string;
|
|
15
|
+
a11: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare function getDialogSizeStyles(size: DialogSize): {
|
|
20
|
+
padding: number;
|
|
21
|
+
borderRadius: number;
|
|
22
|
+
titleMarginBottom: number;
|
|
23
|
+
descriptionMarginBottom: number;
|
|
24
|
+
minWidth: number;
|
|
25
|
+
};
|
|
26
|
+
export declare function getDialogTitleSize(size: DialogSize): '3' | '5' | '6';
|
|
27
|
+
export declare function getDialogDescriptionSize(size: DialogSize): '1' | '2' | '3';
|
|
28
|
+
export declare function getDialogShadowStyle(gray: {
|
|
29
|
+
a3: string;
|
|
30
|
+
a6: string;
|
|
31
|
+
a7: string;
|
|
32
|
+
}, black: {
|
|
33
|
+
a3: string;
|
|
34
|
+
a4: string;
|
|
35
|
+
a6: string;
|
|
36
|
+
a11: string;
|
|
37
|
+
}, isDark: boolean): ViewStyle;
|
|
38
|
+
export declare function getDialogOverlayStyle(): ViewStyle;
|
|
39
|
+
export declare function getDialogBackdropStyle(): ViewStyle;
|
|
40
|
+
export declare function getDialogContentStyle(size: DialogSize, colors: ThemeColors, isDark: boolean, windowWidth: number, userStyle?: StyleProp<ViewStyle>): ViewStyle;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=dialog-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-styles.d.ts","sourceRoot":"","sources":["../../src/lib/dialog-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMxE,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;QACF,KAAK,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;CACH;AAMD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU;;;;;;EAmCnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAUpE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAU1E;AAMD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5C,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC1D,MAAM,EAAE,OAAO,GACd,SAAS,CAoBX;AAMD,wBAAgB,qBAAqB,IAAI,SAAS,CAejD;AAED,wBAAgB,sBAAsB,IAAI,SAAS,CAsBlD;AAMD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAC/B,SAAS,CAsCX"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Size helpers
|
|
4
|
+
// ============================================================================
|
|
5
|
+
export function getDialogSizeStyles(size) {
|
|
6
|
+
switch (size) {
|
|
7
|
+
case '1':
|
|
8
|
+
return {
|
|
9
|
+
padding: 12, // space-3
|
|
10
|
+
borderRadius: 8,
|
|
11
|
+
titleMarginBottom: 4, // space-1
|
|
12
|
+
descriptionMarginBottom: 12, // space-3
|
|
13
|
+
minWidth: 200,
|
|
14
|
+
};
|
|
15
|
+
case '2':
|
|
16
|
+
return {
|
|
17
|
+
padding: 16, // space-4
|
|
18
|
+
borderRadius: 12,
|
|
19
|
+
titleMarginBottom: 8, // space-2
|
|
20
|
+
descriptionMarginBottom: 16, // space-4
|
|
21
|
+
minWidth: 240,
|
|
22
|
+
};
|
|
23
|
+
case '3':
|
|
24
|
+
return {
|
|
25
|
+
padding: 20,
|
|
26
|
+
borderRadius: 16,
|
|
27
|
+
titleMarginBottom: 12, // space-3
|
|
28
|
+
descriptionMarginBottom: 20,
|
|
29
|
+
minWidth: 280,
|
|
30
|
+
};
|
|
31
|
+
case '4':
|
|
32
|
+
return {
|
|
33
|
+
padding: 24, // space-5
|
|
34
|
+
borderRadius: 20,
|
|
35
|
+
titleMarginBottom: 12, // space-3
|
|
36
|
+
descriptionMarginBottom: 24, // space-5
|
|
37
|
+
minWidth: 320,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function getDialogTitleSize(size) {
|
|
42
|
+
switch (size) {
|
|
43
|
+
case '1':
|
|
44
|
+
return '3';
|
|
45
|
+
case '2':
|
|
46
|
+
case '3':
|
|
47
|
+
return '5';
|
|
48
|
+
case '4':
|
|
49
|
+
return '6';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function getDialogDescriptionSize(size) {
|
|
53
|
+
switch (size) {
|
|
54
|
+
case '1':
|
|
55
|
+
return '1';
|
|
56
|
+
case '2':
|
|
57
|
+
case '3':
|
|
58
|
+
return '2';
|
|
59
|
+
case '4':
|
|
60
|
+
return '3';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// Shadow helper (shadow-6)
|
|
65
|
+
// ============================================================================
|
|
66
|
+
export function getDialogShadowStyle(gray, black, isDark) {
|
|
67
|
+
if (Platform.OS === 'web') {
|
|
68
|
+
const boxShadow = isDark
|
|
69
|
+
? `0 0 0 1px ${gray.a6}, 0 12px 60px ${black.a4}, 0 16px 64px ${black.a6}, 0 16px 36px -20px ${black.a11}`
|
|
70
|
+
: `0 0 0 1px ${gray.a3}, 0 12px 60px ${black.a3}, 0 16px 64px ${gray.a3}, 0 16px 36px -20px ${gray.a7}`;
|
|
71
|
+
return { boxShadow };
|
|
72
|
+
}
|
|
73
|
+
// Native shadow approximation
|
|
74
|
+
return {
|
|
75
|
+
shadowColor: '#000',
|
|
76
|
+
shadowOffset: { width: 0, height: 16 },
|
|
77
|
+
shadowOpacity: isDark ? 0.5 : 0.25,
|
|
78
|
+
shadowRadius: 32,
|
|
79
|
+
elevation: 24,
|
|
80
|
+
// Add border for native
|
|
81
|
+
borderWidth: 1,
|
|
82
|
+
borderColor: isDark ? gray.a6 : gray.a3,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// Overlay styles
|
|
87
|
+
// ============================================================================
|
|
88
|
+
export function getDialogOverlayStyle() {
|
|
89
|
+
return {
|
|
90
|
+
position: Platform.OS === 'web' ? 'fixed' : 'absolute',
|
|
91
|
+
top: 0,
|
|
92
|
+
left: 0,
|
|
93
|
+
right: 0,
|
|
94
|
+
bottom: 0,
|
|
95
|
+
zIndex: 50,
|
|
96
|
+
alignItems: 'center',
|
|
97
|
+
justifyContent: 'center',
|
|
98
|
+
paddingTop: 16, // space-4
|
|
99
|
+
paddingBottom: 32, // max(space-4, 4vh) approximation
|
|
100
|
+
paddingLeft: 16, // space-4
|
|
101
|
+
paddingRight: 16, // space-4
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function getDialogBackdropStyle() {
|
|
105
|
+
if (Platform.OS === 'web') {
|
|
106
|
+
return {
|
|
107
|
+
position: 'absolute',
|
|
108
|
+
top: 0,
|
|
109
|
+
left: 0,
|
|
110
|
+
right: 0,
|
|
111
|
+
bottom: 0,
|
|
112
|
+
backdropFilter: 'blur(3px) brightness(0.7)',
|
|
113
|
+
WebkitBackdropFilter: 'blur(3px) brightness(0.7)',
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// Native: semi-transparent black backdrop
|
|
117
|
+
return {
|
|
118
|
+
position: 'absolute',
|
|
119
|
+
top: 0,
|
|
120
|
+
left: 0,
|
|
121
|
+
right: 0,
|
|
122
|
+
bottom: 0,
|
|
123
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// Content styles
|
|
128
|
+
// ============================================================================
|
|
129
|
+
export function getDialogContentStyle(size, colors, isDark, windowWidth, userStyle) {
|
|
130
|
+
const sizeStyles = getDialogSizeStyles(size);
|
|
131
|
+
const gray = colors.palettes.gray;
|
|
132
|
+
const black = colors.palettes.black;
|
|
133
|
+
const shadowStyle = getDialogShadowStyle(gray, black, isDark);
|
|
134
|
+
// Calculate available width (screen width minus overlay padding)
|
|
135
|
+
const overlayPadding = 16; // space-4
|
|
136
|
+
const availableWidth = windowWidth - overlayPadding * 2;
|
|
137
|
+
const defaultMaxWidth = 580;
|
|
138
|
+
// Extract maxWidth from style prop if provided
|
|
139
|
+
const flatStyle = userStyle
|
|
140
|
+
? Array.isArray(userStyle)
|
|
141
|
+
? Object.assign({}, ...userStyle.filter((s) => s != null && typeof s === 'object'))
|
|
142
|
+
: typeof userStyle === 'object' && userStyle != null
|
|
143
|
+
? userStyle
|
|
144
|
+
: {}
|
|
145
|
+
: {};
|
|
146
|
+
const userMaxWidth = flatStyle.maxWidth;
|
|
147
|
+
const effectiveMaxWidth = typeof userMaxWidth === 'number' ? userMaxWidth : defaultMaxWidth;
|
|
148
|
+
return {
|
|
149
|
+
// On web, width: '100%' works with flexbox centering
|
|
150
|
+
// On native, we calculate a fixed width based on available space and maxWidth
|
|
151
|
+
width: Platform.OS === 'web' ? '100%' : Math.min(availableWidth, effectiveMaxWidth),
|
|
152
|
+
minWidth: sizeStyles.minWidth,
|
|
153
|
+
maxWidth: defaultMaxWidth,
|
|
154
|
+
backgroundColor: colors.panelSolid,
|
|
155
|
+
padding: sizeStyles.padding,
|
|
156
|
+
borderRadius: sizeStyles.borderRadius,
|
|
157
|
+
overflow: Platform.OS === 'web' ? 'auto' : 'hidden',
|
|
158
|
+
zIndex: 1,
|
|
159
|
+
...shadowStyle,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=dialog-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-styles.js","sourceRoot":"","sources":["../../src/lib/dialog-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAC;AAyBxE,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAClD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO;gBACL,OAAO,EAAE,EAAE,EAAE,UAAU;gBACvB,YAAY,EAAE,CAAC;gBACf,iBAAiB,EAAE,CAAC,EAAE,UAAU;gBAChC,uBAAuB,EAAE,EAAE,EAAE,UAAU;gBACvC,QAAQ,EAAE,GAAG;aACd,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,OAAO,EAAE,EAAE,EAAE,UAAU;gBACvB,YAAY,EAAE,EAAE;gBAChB,iBAAiB,EAAE,CAAC,EAAE,UAAU;gBAChC,uBAAuB,EAAE,EAAE,EAAE,UAAU;gBACvC,QAAQ,EAAE,GAAG;aACd,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,EAAE;gBAChB,iBAAiB,EAAE,EAAE,EAAE,UAAU;gBACjC,uBAAuB,EAAE,EAAE;gBAC3B,QAAQ,EAAE,GAAG;aACd,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,OAAO,EAAE,EAAE,EAAE,UAAU;gBACvB,YAAY,EAAE,EAAE;gBAChB,iBAAiB,EAAE,EAAE,EAAE,UAAU;gBACjC,uBAAuB,EAAE,EAAE,EAAE,UAAU;gBACvC,QAAQ,EAAE,GAAG;aACd,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,GAAG,CAAC;QACb,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,GAAG,CAAC;QACb,KAAK,GAAG;YACN,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAgB;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,GAAG,CAAC;QACb,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,GAAG,CAAC;QACb,KAAK,GAAG;YACN,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,UAAU,oBAAoB,CAClC,IAA4C,EAC5C,KAA0D,EAC1D,MAAe;IAEf,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM;YACtB,CAAC,CAAC,aAAa,IAAI,CAAC,EAAE,iBAAiB,KAAK,CAAC,EAAE,iBAAiB,KAAK,CAAC,EAAE,uBAAuB,KAAK,CAAC,GAAG,EAAE;YAC1G,CAAC,CAAC,aAAa,IAAI,CAAC,EAAE,iBAAiB,KAAK,CAAC,EAAE,iBAAiB,IAAI,CAAC,EAAE,uBAAuB,IAAI,CAAC,EAAE,EAAE,CAAC;QAE1G,OAAO,EAAE,SAAS,EAAe,CAAC;IACpC,CAAC;IAED,8BAA8B;IAC9B,OAAO;QACL,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QAClC,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,wBAAwB;QACxB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAE,OAAiC,CAAC,CAAC,CAAC,UAAU;QACjF,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,EAAE,EAAE,UAAU;QAC1B,aAAa,EAAE,EAAE,EAAE,kCAAkC;QACrD,WAAW,EAAE,EAAE,EAAE,UAAU;QAC3B,YAAY,EAAE,EAAE,EAAE,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,UAAmB;YAC7B,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,cAAc,EAAE,2BAA2B;YAC3C,oBAAoB,EAAE,2BAA2B;SACrC,CAAC;IACjB,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACL,QAAQ,EAAE,UAAmB;QAC7B,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,eAAe,EAAE,oBAAoB;KACtC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,UAAU,qBAAqB,CACnC,IAAgB,EAChB,MAAmB,EACnB,MAAe,EACf,WAAmB,EACnB,SAAgC;IAEhC,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IACpC,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE9D,iEAAiE;IACjE,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,UAAU;IACrC,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,GAAG,CAAC;IAE5B,+CAA+C;IAC/C,MAAM,SAAS,GAAG,SAAS;QACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACxB,CAAC,CAAC,MAAM,CAAC,MAAM,CACX,EAAE,EACF,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAC/E;YACH,CAAC,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI;gBAClD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE;QACR,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,YAAY,GAAI,SAAuB,CAAC,QAAQ,CAAC;IACvD,MAAM,iBAAiB,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC;IAE5F,OAAO;QACL,qDAAqD;QACrD,8EAA8E;QAC9E,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC;QACnF,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,QAAQ,EAAE,eAAe;QACzB,eAAe,EAAE,MAAM,CAAC,UAAU;QAClC,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,QAAQ,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAE,MAA8B,CAAC,CAAC,CAAC,QAAQ;QAC5E,MAAM,EAAE,CAAC;QACT,GAAG,WAAW;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A wrapper that uses FullWindowOverlay on iOS and a Fragment on other platforms.
|
|
4
|
+
* This is implemented as a component rather than a top-level constant to avoid
|
|
5
|
+
* accessing Platform.OS at module load time, which can cause issues in monorepos
|
|
6
|
+
* where modules are loaded before React Native is fully initialized.
|
|
7
|
+
*/
|
|
8
|
+
export declare function FullWindowOverlay({ children }: {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
}): React.JSX.Element;
|
|
11
|
+
//# sourceMappingURL=full-window-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"full-window-overlay.d.ts","sourceRoot":"","sources":["../../src/lib/full-window-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAK5E"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
|
+
import { FullWindowOverlay as RNFullWindowOverlay } from 'react-native-screens';
|
|
4
|
+
/**
|
|
5
|
+
* A wrapper that uses FullWindowOverlay on iOS and a Fragment on other platforms.
|
|
6
|
+
* This is implemented as a component rather than a top-level constant to avoid
|
|
7
|
+
* accessing Platform.OS at module load time, which can cause issues in monorepos
|
|
8
|
+
* where modules are loaded before React Native is fully initialized.
|
|
9
|
+
*/
|
|
10
|
+
export function FullWindowOverlay({ children }) {
|
|
11
|
+
if (Platform.OS === 'ios') {
|
|
12
|
+
return <RNFullWindowOverlay>{children}</RNFullWindowOverlay>;
|
|
13
|
+
}
|
|
14
|
+
return <>{children}</>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=full-window-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"full-window-overlay.js","sourceRoot":"","sources":["../../src/lib/full-window-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAiC;IAC3E,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ViewStyle } from 'react-native';
|
|
2
|
+
type PanelSize = '1' | '2' | '3' | '4';
|
|
3
|
+
type PanelVariant = 'solid' | 'translucent';
|
|
4
|
+
interface ThemeColors {
|
|
5
|
+
panelSolid: string;
|
|
6
|
+
panelTranslucent: string;
|
|
7
|
+
palettes: {
|
|
8
|
+
gray: {
|
|
9
|
+
a6: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
interface PanelStyleOptions {
|
|
14
|
+
size: PanelSize;
|
|
15
|
+
variant: PanelVariant;
|
|
16
|
+
colors: ThemeColors;
|
|
17
|
+
isDark: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get padding and border radius for panel content based on size
|
|
21
|
+
*/
|
|
22
|
+
declare function getPanelSizeStyle(size: PanelSize): {
|
|
23
|
+
padding: number;
|
|
24
|
+
borderRadius: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Get complete panel content style
|
|
28
|
+
*/
|
|
29
|
+
declare function getPanelContentStyle(options: PanelStyleOptions): ViewStyle;
|
|
30
|
+
export { getPanelContentStyle, getPanelSizeStyle };
|
|
31
|
+
export type { PanelSize, PanelStyleOptions, PanelVariant };
|
|
32
|
+
//# sourceMappingURL=panel-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-styles.d.ts","sourceRoot":"","sources":["../../src/lib/panel-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAExD,KAAK,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACvC,KAAK,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;AAE5C,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;KACH,CAAC;CACH;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,iBAAS,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAWrF;AA6DD;;GAEG;AACH,iBAAS,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CA0BnE;AAED,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC"}
|