@frosted-ui/react-native 0.0.1-canary.91 → 0.0.1-canary.94
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 +72 -14
- package/dist/components/accordion.js +2 -2
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/alert-dialog.js +2 -2
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/avatar.d.ts.map +1 -1
- package/dist/components/avatar.js +5 -20
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.d.ts +2 -4
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/badge.js +8 -22
- package/dist/components/badge.js.map +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +13 -17
- package/dist/components/button.js.map +1 -1
- package/dist/components/callout.d.ts +2 -4
- package/dist/components/callout.d.ts.map +1 -1
- package/dist/components/callout.js +6 -24
- package/dist/components/callout.js.map +1 -1
- package/dist/components/card.d.ts +1 -2
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +4 -4
- package/dist/components/card.js.map +1 -1
- package/dist/components/checkbox.d.ts +1 -2
- package/dist/components/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox.js +5 -21
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/code.d.ts +6 -8
- package/dist/components/code.d.ts.map +1 -1
- package/dist/components/code.js +7 -7
- package/dist/components/code.js.map +1 -1
- package/dist/components/context-menu.js +9 -9
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/dialog.js +2 -2
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dropdown-menu.js +9 -9
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/heading.d.ts +6 -6
- package/dist/components/heading.d.ts.map +1 -1
- package/dist/components/heading.js +2 -2
- package/dist/components/heading.js.map +1 -1
- package/dist/components/hover-card.js +2 -2
- package/dist/components/hover-card.js.map +1 -1
- package/dist/components/icon-button.d.ts +2 -2
- package/dist/components/icon-button.d.ts.map +1 -1
- package/dist/components/icon-button.js +13 -17
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/icon.d.ts +6 -7
- package/dist/components/icon.d.ts.map +1 -1
- package/dist/components/icon.js +9 -24
- package/dist/components/icon.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/label.js +2 -2
- package/dist/components/label.js.map +1 -1
- 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 +0 -4
- package/dist/components/native-only-animated-view.d.ts.map +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +1 -2
- package/dist/components/progress.d.ts.map +1 -1
- package/dist/components/progress.js +5 -21
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.d.ts +1 -2
- package/dist/components/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group.js +7 -23
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/segmented-control.js +3 -3
- package/dist/components/segmented-control.js.map +1 -1
- package/dist/components/select.d.ts.map +1 -1
- package/dist/components/select.js +11 -13
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.d.ts +1 -1
- package/dist/components/separator.d.ts.map +1 -1
- package/dist/components/separator.js +4 -21
- package/dist/components/separator.js.map +1 -1
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +10 -26
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/spinner.js +2 -2
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/switch.d.ts +1 -2
- package/dist/components/switch.d.ts.map +1 -1
- package/dist/components/switch.js +5 -21
- package/dist/components/switch.js.map +1 -1
- package/dist/components/tabs.d.ts +4 -3
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +10 -9
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/text-area.d.ts.map +1 -1
- package/dist/components/text-area.js +13 -9
- package/dist/components/text-area.js.map +1 -1
- package/dist/components/text-field.d.ts.map +1 -1
- package/dist/components/text-field.js +62 -18
- package/dist/components/text-field.js.map +1 -1
- package/dist/components/text.d.ts +6 -6
- package/dist/components/text.d.ts.map +1 -1
- package/dist/components/text.js +22 -11
- package/dist/components/text.js.map +1 -1
- package/dist/components/tooltip.js +2 -2
- package/dist/components/tooltip.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/button-styles.d.ts +6 -6
- package/dist/lib/button-styles.d.ts.map +1 -1
- package/dist/lib/button-styles.js +1 -17
- package/dist/lib/button-styles.js.map +1 -1
- package/dist/lib/color-utils.d.ts +19 -14
- package/dist/lib/color-utils.d.ts.map +1 -1
- package/dist/lib/color-utils.js +37 -73
- package/dist/lib/color-utils.js.map +1 -1
- 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/text-input-styles.d.ts +9 -8
- package/dist/lib/text-input-styles.d.ts.map +1 -1
- package/dist/lib/text-input-styles.js +4 -23
- package/dist/lib/text-input-styles.js.map +1 -1
- 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-vars.d.ts → theme-tokens.d.ts} +2 -2
- package/dist/lib/theme-tokens.d.ts.map +1 -0
- package/dist/lib/{theme-vars.js → theme-tokens.js} +4 -19
- package/dist/lib/theme-tokens.js.map +1 -0
- package/dist/lib/theme.d.ts +14 -54
- package/dist/lib/theme.d.ts.map +1 -1
- package/dist/lib/theme.js +98 -66
- package/dist/lib/theme.js.map +1 -1
- package/dist/lib/types.d.ts +6 -2
- package/dist/lib/types.d.ts.map +1 -1
- 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 +1183 -0
- package/docs/llm/DESIGN_PATTERNS.md +2466 -0
- package/docs/llm/README.md +117 -0
- package/docs/llm/TYPOGRAPHY.md +516 -0
- package/package.json +11 -21
- package/dist/lib/native-colors.d.ts +0 -8
- package/dist/lib/native-colors.d.ts.map +0 -1
- package/dist/lib/native-colors.js +0 -67
- package/dist/lib/native-colors.js.map +0 -1
- package/dist/lib/theme-vars.d.ts.map +0 -1
- package/dist/lib/theme-vars.js.map +0 -1
- package/dist/lib/use-theme-vars.d.ts +0 -325
- package/dist/lib/use-theme-vars.d.ts.map +0 -1
- package/dist/lib/use-theme-vars.js +0 -17
- package/dist/lib/use-theme-vars.js.map +0 -1
- package/dist/lib/utils.d.ts +0 -3
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -17
- package/dist/lib/utils.js.map +0 -1
- package/global.css +0 -1813
- package/tailwind-preset.js +0 -310
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Text } from '../components/text';
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
2
|
+
import { themeTokens } from '../lib/theme-tokens';
|
|
3
|
+
import type { Color } from '../lib/types';
|
|
4
4
|
import type * as React from 'react';
|
|
5
|
-
type HeadingSize = keyof typeof
|
|
6
|
-
type HeadingWeight = keyof typeof
|
|
5
|
+
type HeadingSize = keyof typeof themeTokens.typography;
|
|
6
|
+
type HeadingWeight = keyof typeof themeTokens.fontWeights;
|
|
7
7
|
type HeadingProps = Omit<React.ComponentProps<typeof Text>, 'variant' | 'color'> & {
|
|
8
8
|
size?: HeadingSize;
|
|
9
9
|
weight?: HeadingWeight;
|
|
10
|
-
color?:
|
|
10
|
+
color?: Color;
|
|
11
11
|
};
|
|
12
|
-
declare function Heading({ size, weight, color,
|
|
12
|
+
declare function Heading({ size, weight, color, role: roleProp, ...props }: HeadingProps): React.JSX.Element;
|
|
13
13
|
export { Heading };
|
|
14
14
|
export type { HeadingProps };
|
|
15
15
|
//# sourceMappingURL=heading.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,KAAK,WAAW,GAAG,MAAM,OAAO,WAAW,CAAC,UAAU,CAAC;AACvD,KAAK,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC,WAAW,CAAC;AAE1D,KAAK,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IACjF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,iBAAS,OAAO,CAAC,EAAE,IAAU,EAAE,MAAe,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,qBAI9F;AAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Text } from '../components/text';
|
|
2
2
|
import { Platform } from 'react-native';
|
|
3
|
-
function Heading({ size = '6', weight = 'bold', color,
|
|
3
|
+
function Heading({ size = '6', weight = 'bold', color, role: roleProp, ...props }) {
|
|
4
4
|
const role = Platform.OS === 'web' ? (roleProp ?? 'heading') : roleProp;
|
|
5
|
-
return
|
|
5
|
+
return <Text size={size} weight={weight} color={color} role={role} {...props}/>;
|
|
6
6
|
}
|
|
7
7
|
export { Heading };
|
|
8
8
|
//# sourceMappingURL=heading.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.js","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAWxC,SAAS,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"heading.js","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAWxC,SAAS,OAAO,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAgB;IAC7F,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAExE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACnF,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NativeOnlyAnimatedView } from '../components/native-only-animated-view';
|
|
2
2
|
import { getPanelContentStyle } from '../lib/panel-styles';
|
|
3
|
-
import {
|
|
3
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
4
4
|
import * as HoverCardPrimitive from '@rn-primitives/hover-card';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { Platform, StyleSheet, View } from 'react-native';
|
|
@@ -18,7 +18,7 @@ const HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
|
18
18
|
// ============================================================================
|
|
19
19
|
const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
|
|
20
20
|
function HoverCardContent({ size = '2', variant = 'translucent', align = 'start', sideOffset = 8, style, children, ...props }) {
|
|
21
|
-
const { colors, isDark } =
|
|
21
|
+
const { colors, isDark } = useThemeTokens();
|
|
22
22
|
const contentStyle = getPanelContentStyle({
|
|
23
23
|
size: size,
|
|
24
24
|
variant,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hover-card.js","sourceRoot":"","sources":["../../src/components/hover-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAqC,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hover-card.js","sourceRoot":"","sources":["../../src/components/hover-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Color } from '../lib/types';
|
|
2
1
|
import { type ButtonSize, type ButtonVariant } from '../lib/button-styles';
|
|
2
|
+
import type { Color } from '../lib/types';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Pressable, type StyleProp, type ViewStyle } from 'react-native';
|
|
5
5
|
type IconButtonProps = Omit<React.ComponentProps<typeof Pressable>, 'style'> & {
|
|
@@ -8,7 +8,7 @@ type IconButtonProps = Omit<React.ComponentProps<typeof Pressable>, 'style'> & {
|
|
|
8
8
|
color?: Color;
|
|
9
9
|
style?: StyleProp<ViewStyle>;
|
|
10
10
|
};
|
|
11
|
-
declare function IconButton({
|
|
11
|
+
declare function IconButton({ variant, size, color, style, disabled, children, onPressIn, onPressOut, onFocus, onBlur, onHoverIn, onHoverOut, ...pressableProps }: IconButtonProps): React.JSX.Element;
|
|
12
12
|
export { IconButton };
|
|
13
13
|
export type { IconButtonProps };
|
|
14
14
|
//# sourceMappingURL=icon-button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-button.d.ts","sourceRoot":"","sources":["../../src/components/icon-button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"icon-button.d.ts","sourceRoot":"","sources":["../../src/components/icon-button.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnF,KAAK,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAC7E,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAEF,iBAAS,UAAU,CAAC,EAClB,OAAmB,EACnB,IAAU,EACV,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,OAAO,EACP,MAAM,EACN,SAAS,EACT,UAAU,EACV,GAAG,cAAc,EAClB,EAAE,eAAe,qBAgIjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { TextStyleContext } from '../components/text';
|
|
2
|
-
import { getButtonFocusStyle, getButtonPressedFilter, getButtonShadowStyle, getButtonSizeStyle, getButtonTextColor, getButtonVariantStyle,
|
|
3
|
-
import {
|
|
4
|
-
import { cn } from '../lib/utils';
|
|
2
|
+
import { getButtonFocusStyle, getButtonPressedFilter, getButtonShadowStyle, getButtonSizeStyle, getButtonTextColor, getButtonVariantStyle, } from '../lib/button-styles';
|
|
3
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
5
4
|
import * as React from 'react';
|
|
6
|
-
import { Platform, Pressable
|
|
7
|
-
function IconButton({
|
|
8
|
-
const { colors } =
|
|
5
|
+
import { Platform, Pressable } from 'react-native';
|
|
6
|
+
function IconButton({ variant = 'surface', size = '3', color, style, disabled, children, onPressIn, onPressOut, onFocus, onBlur, onHoverIn, onHoverOut, ...pressableProps }) {
|
|
7
|
+
const { colors } = useThemeTokens();
|
|
9
8
|
const [pressed, setPressed] = React.useState(false);
|
|
10
9
|
const [hovered, setHovered] = React.useState(false);
|
|
11
10
|
const [focused, setFocused] = React.useState(false);
|
|
12
|
-
const accentColor = resolveAccentFromColor(color);
|
|
13
11
|
const gray = colors.palettes.gray;
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
const palette = colors.palettes[
|
|
12
|
+
// Semantic colors (accent, danger, etc.) are added by useThemeTokens
|
|
13
|
+
// Fallback to gray if palette key doesn't exist
|
|
14
|
+
const palette = colors.palettes[color ?? 'accent'] ?? gray;
|
|
17
15
|
const textColor = getButtonTextColor(variant, palette, gray, disabled ?? false);
|
|
18
16
|
// Base layout
|
|
19
17
|
const baseStyle = {
|
|
@@ -69,17 +67,15 @@ function IconButton({ className, variant = 'surface', size = '2', color, style,
|
|
|
69
67
|
setFocused(false);
|
|
70
68
|
onBlur?.(e);
|
|
71
69
|
}, [onBlur]);
|
|
72
|
-
return (<
|
|
73
|
-
<TextStyleContext.Provider value={{
|
|
70
|
+
return (<TextStyleContext.Provider value={{
|
|
74
71
|
size: size,
|
|
75
72
|
weight: 'medium',
|
|
76
73
|
color: textColor,
|
|
77
74
|
}}>
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
</View>);
|
|
75
|
+
<Pressable style={[combinedStyle, style]} role="button" disabled={disabled} onPressIn={handlePressIn} onPressOut={handlePressOut} onHoverIn={handleHoverIn} onHoverOut={handleHoverOut} onFocus={handleFocus} onBlur={handleBlur} {...pressableProps}>
|
|
76
|
+
{children}
|
|
77
|
+
</Pressable>
|
|
78
|
+
</TextStyleContext.Provider>);
|
|
83
79
|
}
|
|
84
80
|
export { IconButton };
|
|
85
81
|
//# sourceMappingURL=icon-button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-button.js","sourceRoot":"","sources":["../../src/components/icon-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"icon-button.js","sourceRoot":"","sources":["../../src/components/icon-button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,25 +4,24 @@ type IconProps = LucideProps & {
|
|
|
4
4
|
as: LucideIcon;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
|
-
* A wrapper component for Lucide icons
|
|
7
|
+
* A wrapper component for Lucide icons.
|
|
8
8
|
*
|
|
9
|
-
* This component allows you to render any Lucide icon
|
|
10
|
-
*
|
|
9
|
+
* This component allows you to render any Lucide icon with automatic color
|
|
10
|
+
* inheritance from TextStyleContext.
|
|
11
11
|
*
|
|
12
12
|
* @component
|
|
13
13
|
* @example
|
|
14
14
|
* ```tsx
|
|
15
15
|
* import { ArrowRight } from 'lucide-react-native';
|
|
16
|
-
* import { Icon } from '
|
|
16
|
+
* import { Icon } from '@frosted-ui/react-native';
|
|
17
17
|
*
|
|
18
|
-
* <Icon as={ArrowRight}
|
|
18
|
+
* <Icon as={ArrowRight} size={16} />
|
|
19
19
|
* ```
|
|
20
20
|
*
|
|
21
21
|
* @param {LucideIcon} as - The Lucide icon component to render.
|
|
22
|
-
* @param {string} className - Utility classes to style the icon using Nativewind.
|
|
23
22
|
* @param {number} size - Icon size (defaults to 14).
|
|
24
23
|
* @param {...LucideProps} ...props - Additional Lucide icon props passed to the "as" icon.
|
|
25
24
|
*/
|
|
26
|
-
declare function Icon({ as: IconComponent,
|
|
25
|
+
declare function Icon({ as: IconComponent, size, color, ...props }: IconProps): React.JSX.Element;
|
|
27
26
|
export { Icon };
|
|
28
27
|
//# sourceMappingURL=icon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../src/components/icon.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../src/components/icon.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,SAAS,GAAG,WAAW,GAAG;IAC7B,EAAE,EAAE,UAAU,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,qBAQzE;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/components/icon.js
CHANGED
|
@@ -1,45 +1,30 @@
|
|
|
1
1
|
import { TextStyleContext } from '../components/text';
|
|
2
|
-
import {
|
|
3
|
-
import { cn } from '../lib/utils';
|
|
4
|
-
import { cssInterop } from 'nativewind';
|
|
2
|
+
import { themeTokens } from '../lib/theme-tokens';
|
|
5
3
|
import * as React from 'react';
|
|
6
|
-
function IconImpl({ as: IconComponent, ...props }) {
|
|
7
|
-
return <IconComponent {...props}/>;
|
|
8
|
-
}
|
|
9
|
-
cssInterop(IconImpl, {
|
|
10
|
-
className: {
|
|
11
|
-
target: 'style',
|
|
12
|
-
nativeStyleToProp: {
|
|
13
|
-
height: 'size',
|
|
14
|
-
width: 'size',
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
4
|
/**
|
|
19
|
-
* A wrapper component for Lucide icons
|
|
5
|
+
* A wrapper component for Lucide icons.
|
|
20
6
|
*
|
|
21
|
-
* This component allows you to render any Lucide icon
|
|
22
|
-
*
|
|
7
|
+
* This component allows you to render any Lucide icon with automatic color
|
|
8
|
+
* inheritance from TextStyleContext.
|
|
23
9
|
*
|
|
24
10
|
* @component
|
|
25
11
|
* @example
|
|
26
12
|
* ```tsx
|
|
27
13
|
* import { ArrowRight } from 'lucide-react-native';
|
|
28
|
-
* import { Icon } from '
|
|
14
|
+
* import { Icon } from '@frosted-ui/react-native';
|
|
29
15
|
*
|
|
30
|
-
* <Icon as={ArrowRight}
|
|
16
|
+
* <Icon as={ArrowRight} size={16} />
|
|
31
17
|
* ```
|
|
32
18
|
*
|
|
33
19
|
* @param {LucideIcon} as - The Lucide icon component to render.
|
|
34
|
-
* @param {string} className - Utility classes to style the icon using Nativewind.
|
|
35
20
|
* @param {number} size - Icon size (defaults to 14).
|
|
36
21
|
* @param {...LucideProps} ...props - Additional Lucide icon props passed to the "as" icon.
|
|
37
22
|
*/
|
|
38
|
-
function Icon({ as: IconComponent,
|
|
23
|
+
function Icon({ as: IconComponent, size = 14, color, ...props }) {
|
|
39
24
|
const textStyleContext = React.useContext(TextStyleContext);
|
|
40
25
|
// Use color from context if available, otherwise default to gray-12
|
|
41
|
-
const resolvedColor = color ?? textStyleContext?.color ??
|
|
42
|
-
return
|
|
26
|
+
const resolvedColor = color ?? textStyleContext?.color ?? themeTokens.colors.light.palettes.gray['12'];
|
|
27
|
+
return <IconComponent size={size} color={resolvedColor} {...props}/>;
|
|
43
28
|
}
|
|
44
29
|
export { Icon };
|
|
45
30
|
//# sourceMappingURL=icon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../src/components/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../src/components/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,EAAa;IACxE,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE5D,oEAAoE;IACpE,MAAM,aAAa,GACjB,KAAK,IAAI,gBAAgB,EAAE,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACxE,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './aspect-ratio';
|
|
2
2
|
export * from './heading';
|
|
3
|
+
export * from './link';
|
|
3
4
|
export * from './text';
|
|
4
5
|
export * from './code';
|
|
5
6
|
export * from './checkbox';
|
|
@@ -25,6 +26,7 @@ export * from './callout';
|
|
|
25
26
|
export * from './card';
|
|
26
27
|
export * from './icon';
|
|
27
28
|
export * from './icon-button';
|
|
29
|
+
export * from './list';
|
|
28
30
|
export * from './segmented-control';
|
|
29
31
|
export * from './separator';
|
|
30
32
|
export * from './skeleton';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAC;AAI/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AAIvB,cAAc,QAAQ,CAAC;AAIvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAI7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAI1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAC;AAI/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAIvB,cAAc,QAAQ,CAAC;AAIvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAI7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAI1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from './aspect-ratio';
|
|
|
4
4
|
// TYPOGRAPHY
|
|
5
5
|
//------------------------------------------------------------------------------
|
|
6
6
|
export * from './heading';
|
|
7
|
+
export * from './link';
|
|
7
8
|
export * from './text';
|
|
8
9
|
// FORMATTING
|
|
9
10
|
//------------------------------------------------------------------------------
|
|
@@ -37,6 +38,7 @@ export * from './callout';
|
|
|
37
38
|
export * from './card';
|
|
38
39
|
export * from './icon';
|
|
39
40
|
export * from './icon-button';
|
|
41
|
+
export * from './list';
|
|
40
42
|
export * from './segmented-control';
|
|
41
43
|
export * from './separator';
|
|
42
44
|
export * from './skeleton';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,gFAAgF;AAChF,cAAc,gBAAgB,CAAC;AAE/B,aAAa;AACb,gFAAgF;AAChF,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AAEvB,aAAa;AACb,gFAAgF;AAChF,cAAc,QAAQ,CAAC;AAEvB,QAAQ;AACR,gFAAgF;AAChF,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,WAAW;AACX,gFAAgF;AAChF,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAE1B,aAAa;AACb,gFAAgF;AAChF,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,gFAAgF;AAChF,cAAc,gBAAgB,CAAC;AAE/B,aAAa;AACb,gFAAgF;AAChF,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAEvB,aAAa;AACb,gFAAgF;AAChF,cAAc,QAAQ,CAAC;AAEvB,QAAQ;AACR,gFAAgF;AAChF,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,WAAW;AACX,gFAAgF;AAChF,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAE1B,aAAa;AACb,gFAAgF;AAChF,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
package/dist/components/label.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
2
2
|
import * as LabelPrimitive from '@rn-primitives/label';
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
4
|
function Label({ onPress, onLongPress, onPressIn, onPressOut, disabled, style, ...props }) {
|
|
5
|
-
const { colors, typography, fontWeights } =
|
|
5
|
+
const { colors, typography, fontWeights } = useThemeTokens();
|
|
6
6
|
const rootStyle = {
|
|
7
7
|
flexDirection: 'row',
|
|
8
8
|
alignItems: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAkC,MAAM,cAAc,CAAC;AAM1E,SAAS,KAAK,CAAC,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACG;IACX,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IAE7D,MAAM,SAAS,GAAc;QAC3B,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,CAAC;QACN,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAwB;KACtE,CAAC;IAEF,MAAM,SAAS,GAAc;QAC3B,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ;QAClC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU;QACtC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,aAAa;QAC5C,UAAU,EAAE,WAAW,CAAC,MAAM;KAC/B,CAAC;IAEF,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjE,OAAO,CACL,CAAC,cAAc,CAAC,IAAI,CAClB,KAAK,CAAC,CAAC,SAAS,CAAC,CACjB,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB;MAAA,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,KAAK,CAAC,EAC3D;IAAA,EAAE,cAAc,CAAC,IAAI,CAAC,CACvB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { themeTokens } from '../lib/theme-tokens';
|
|
2
|
+
import type { Color } from '../lib/types';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { type TextProps as RNTextProps, type TextStyle } from 'react-native';
|
|
5
|
+
type LinkSize = keyof typeof themeTokens.typography;
|
|
6
|
+
type LinkWeight = keyof typeof themeTokens.fontWeights;
|
|
7
|
+
type LinkUnderline = 'auto' | 'hover' | 'always';
|
|
8
|
+
type LinkProps = Omit<RNTextProps, 'style'> & {
|
|
9
|
+
size?: LinkSize;
|
|
10
|
+
weight?: LinkWeight;
|
|
11
|
+
color?: Color;
|
|
12
|
+
underline?: LinkUnderline;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
style?: TextStyle;
|
|
15
|
+
};
|
|
16
|
+
declare function Link({ size, weight, color, underline, children, style, disabled, onPress, onPressIn, onPressOut, ...textProps }: LinkProps): React.JSX.Element;
|
|
17
|
+
export { Link };
|
|
18
|
+
export type { LinkProps, LinkSize, LinkUnderline };
|
|
19
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAIL,KAAK,SAAS,IAAI,WAAW,EAC7B,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,QAAQ,GAAG,MAAM,OAAO,WAAW,CAAC,UAAU,CAAC;AACpD,KAAK,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC,WAAW,CAAC;AACvD,KAAK,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD,KAAK,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG;IAC5C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,iBAAS,IAAI,CAAC,EACZ,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAkB,EAClB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,GAAG,SAAS,EACb,EAAE,SAAS,qBA6FX;AAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { TextStyleContext } from '../components/text';
|
|
2
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Platform, Text as RNText, } from 'react-native';
|
|
5
|
+
function Link({ size, weight, color, underline = 'auto', children, style, disabled, onPress, onPressIn, onPressOut, ...textProps }) {
|
|
6
|
+
const { colors, typography, fontWeights } = useThemeTokens();
|
|
7
|
+
const textStyleContext = React.useContext(TextStyleContext);
|
|
8
|
+
const [hovered, setHovered] = React.useState(false);
|
|
9
|
+
const [pressed, setPressed] = React.useState(false);
|
|
10
|
+
// Inherit size from context, fallback to '3'
|
|
11
|
+
const effectiveSize = size ?? textStyleContext?.size ?? '3';
|
|
12
|
+
const effectiveWeight = weight ?? textStyleContext?.weight;
|
|
13
|
+
// Resolve color palette - default to accent
|
|
14
|
+
const palette = colors.palettes[color ?? 'accent'] ?? colors.palettes.accent;
|
|
15
|
+
const gray = colors.palettes.gray;
|
|
16
|
+
// Text color: accent a11 by default
|
|
17
|
+
const textColor = palette.a11;
|
|
18
|
+
// Underline color: mix of accent and gray (approximating the CSS color-mix)
|
|
19
|
+
const underlineColor = palette.a7;
|
|
20
|
+
// Typography
|
|
21
|
+
const typo = typography[effectiveSize];
|
|
22
|
+
const fontWeightValue = effectiveWeight ? fontWeights[effectiveWeight] : undefined;
|
|
23
|
+
// Determine if underline should show
|
|
24
|
+
// - 'always': always show
|
|
25
|
+
// - 'auto'/'hover': show on hover (web) or press (mobile)
|
|
26
|
+
const isInteracting = hovered || pressed;
|
|
27
|
+
const showUnderline = underline === 'always' || ((underline === 'auto' || underline === 'hover') && isInteracting);
|
|
28
|
+
const textStyle = {
|
|
29
|
+
fontSize: typo.fontSize,
|
|
30
|
+
lineHeight: typo.lineHeight,
|
|
31
|
+
letterSpacing: typo.letterSpacing,
|
|
32
|
+
color: disabled ? gray.a8 : textColor,
|
|
33
|
+
...(fontWeightValue ? { fontWeight: fontWeightValue } : {}),
|
|
34
|
+
...(showUnderline
|
|
35
|
+
? {
|
|
36
|
+
textDecorationLine: 'underline',
|
|
37
|
+
textDecorationColor: underlineColor,
|
|
38
|
+
textDecorationStyle: 'solid',
|
|
39
|
+
}
|
|
40
|
+
: {}),
|
|
41
|
+
...style,
|
|
42
|
+
};
|
|
43
|
+
const handlePressIn = React.useCallback((e) => {
|
|
44
|
+
setPressed(true);
|
|
45
|
+
onPressIn?.(e);
|
|
46
|
+
}, [onPressIn]);
|
|
47
|
+
const handlePressOut = React.useCallback((e) => {
|
|
48
|
+
setPressed(false);
|
|
49
|
+
onPressOut?.(e);
|
|
50
|
+
}, [onPressOut]);
|
|
51
|
+
const handlePress = React.useCallback((e) => {
|
|
52
|
+
if (!disabled) {
|
|
53
|
+
onPress?.(e);
|
|
54
|
+
}
|
|
55
|
+
}, [disabled, onPress]);
|
|
56
|
+
// Web-specific hover handlers
|
|
57
|
+
const webProps = Platform.OS === 'web'
|
|
58
|
+
? {
|
|
59
|
+
onMouseEnter: () => setHovered(true),
|
|
60
|
+
onMouseLeave: () => setHovered(false),
|
|
61
|
+
}
|
|
62
|
+
: {};
|
|
63
|
+
return (<RNText style={textStyle} onPress={handlePress} onPressIn={handlePressIn} onPressOut={handlePressOut} suppressHighlighting {...webProps} {...textProps}>
|
|
64
|
+
{children}
|
|
65
|
+
</RNText>);
|
|
66
|
+
}
|
|
67
|
+
export { Link };
|
|
68
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type CardVariant } from '../components/card';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { type PressableProps, type TextProps, type TextStyle, type ViewProps, type ViewStyle } from 'react-native';
|
|
4
|
+
type ListRootProps = ViewProps & {
|
|
5
|
+
variant?: CardVariant;
|
|
6
|
+
};
|
|
7
|
+
declare function ListRoot({ variant, style, children, ...props }: ListRootProps): React.JSX.Element;
|
|
8
|
+
type ListItemProps = Omit<PressableProps, 'style'> & {
|
|
9
|
+
style?: ViewStyle;
|
|
10
|
+
};
|
|
11
|
+
declare function ListItem({ children, onPress, disabled, style, ...props }: ListItemProps): React.JSX.Element;
|
|
12
|
+
type ListItemSlotProps = ViewProps;
|
|
13
|
+
declare function ListItemSlot({ children, style, ...props }: ListItemSlotProps): React.JSX.Element;
|
|
14
|
+
type ListItemContentProps = ViewProps;
|
|
15
|
+
declare function ListItemContent({ children, style, ...props }: ListItemContentProps): React.JSX.Element;
|
|
16
|
+
type ListItemTitleProps = Omit<TextProps, 'style'> & {
|
|
17
|
+
style?: TextStyle;
|
|
18
|
+
};
|
|
19
|
+
declare function ListItemTitle({ children, style, ...props }: ListItemTitleProps): React.JSX.Element;
|
|
20
|
+
type ListItemDescriptionProps = Omit<TextProps, 'style'> & {
|
|
21
|
+
style?: TextStyle;
|
|
22
|
+
};
|
|
23
|
+
declare function ListItemDescription({ children, style, ...props }: ListItemDescriptionProps): React.JSX.Element;
|
|
24
|
+
type ListSeparatorProps = ViewProps;
|
|
25
|
+
declare function ListSeparator({ style, ...props }: ListSeparatorProps): React.JSX.Element;
|
|
26
|
+
declare const List: {
|
|
27
|
+
Root: typeof ListRoot;
|
|
28
|
+
Item: typeof ListItem;
|
|
29
|
+
ItemSlot: typeof ListItemSlot;
|
|
30
|
+
ItemContent: typeof ListItemContent;
|
|
31
|
+
ItemTitle: typeof ListItemTitle;
|
|
32
|
+
ItemDescription: typeof ListItemDescription;
|
|
33
|
+
Separator: typeof ListSeparator;
|
|
34
|
+
};
|
|
35
|
+
export { List };
|
|
36
|
+
export type { ListItemContentProps, ListItemDescriptionProps, ListItemProps, ListItemSlotProps, ListItemTitleProps, ListRootProps, ListSeparatorProps, };
|
|
37
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/components/list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAMtB,KAAK,aAAa,GAAG,SAAS,GAAG;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAAE,OAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAMlF;AAMD,KAAK,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IACnD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAyChF;AAMD,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAEnC,iBAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,qBAkBrE;AAMD,KAAK,oBAAoB,GAAG,SAAS,CAAC;AAEtC,iBAAS,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,qBAY3E;AAMD,KAAK,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG;IACnD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAiBvE;AAMD,KAAK,wBAAwB,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG;IACzD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,iBAAS,mBAAmB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,wBAAwB,qBAgBnF;AAMD,KAAK,kBAAkB,GAAG,SAAS,CAAC;AAEpC,iBAAS,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAS7D;AAMD,QAAA,MAAM,IAAI;;;;;;;;CAQT,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Card } from '../components/card';
|
|
2
|
+
import { TextStyleContext } from '../components/text';
|
|
3
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { Platform, Pressable, Text, View, } from 'react-native';
|
|
6
|
+
function ListRoot({ variant = 'surface', style, children, ...props }) {
|
|
7
|
+
return (<Card variant={variant} style={[{ padding: 0 }, style]} {...props}>
|
|
8
|
+
{children}
|
|
9
|
+
</Card>);
|
|
10
|
+
}
|
|
11
|
+
function ListItem({ children, onPress, disabled, style, ...props }) {
|
|
12
|
+
const { colors } = useThemeTokens();
|
|
13
|
+
const [pressed, setPressed] = React.useState(false);
|
|
14
|
+
const [hovered, setHovered] = React.useState(false);
|
|
15
|
+
const isInteractive = !!onPress && !disabled;
|
|
16
|
+
const isHighlighted = isInteractive && (pressed || hovered);
|
|
17
|
+
const itemStyle = {
|
|
18
|
+
flexDirection: 'row',
|
|
19
|
+
alignItems: 'center',
|
|
20
|
+
gap: 12,
|
|
21
|
+
paddingVertical: 12,
|
|
22
|
+
paddingHorizontal: 16,
|
|
23
|
+
backgroundColor: isHighlighted ? colors.palettes.gray.a3 : undefined,
|
|
24
|
+
...(Platform.OS === 'web' && isInteractive
|
|
25
|
+
? { cursor: 'pointer', userSelect: 'none' }
|
|
26
|
+
: {}),
|
|
27
|
+
};
|
|
28
|
+
// Web hover handlers
|
|
29
|
+
const webProps = Platform.OS === 'web' && isInteractive
|
|
30
|
+
? {
|
|
31
|
+
onMouseEnter: () => setHovered(true),
|
|
32
|
+
onMouseLeave: () => setHovered(false),
|
|
33
|
+
}
|
|
34
|
+
: {};
|
|
35
|
+
return (<Pressable onPress={onPress} onPressIn={() => setPressed(true)} onPressOut={() => setPressed(false)} disabled={disabled || !onPress} style={[itemStyle, style]} {...webProps} {...props}>
|
|
36
|
+
{children}
|
|
37
|
+
</Pressable>);
|
|
38
|
+
}
|
|
39
|
+
function ListItemSlot({ children, style, ...props }) {
|
|
40
|
+
const { colors } = useThemeTokens();
|
|
41
|
+
const slotStyle = {
|
|
42
|
+
alignItems: 'center',
|
|
43
|
+
justifyContent: 'center',
|
|
44
|
+
minWidth: 24,
|
|
45
|
+
minHeight: 24,
|
|
46
|
+
};
|
|
47
|
+
// Provide icon color context
|
|
48
|
+
return (<TextStyleContext.Provider value={{ color: colors.palettes.gray.a11 }}>
|
|
49
|
+
<View style={[slotStyle, style]} {...props}>
|
|
50
|
+
{children}
|
|
51
|
+
</View>
|
|
52
|
+
</TextStyleContext.Provider>);
|
|
53
|
+
}
|
|
54
|
+
function ListItemContent({ children, style, ...props }) {
|
|
55
|
+
const contentStyle = {
|
|
56
|
+
flex: 1,
|
|
57
|
+
gap: 2,
|
|
58
|
+
justifyContent: 'center',
|
|
59
|
+
};
|
|
60
|
+
return (<View style={[contentStyle, style]} {...props}>
|
|
61
|
+
{children}
|
|
62
|
+
</View>);
|
|
63
|
+
}
|
|
64
|
+
function ListItemTitle({ children, style, ...props }) {
|
|
65
|
+
const { colors, typography, fontWeights } = useThemeTokens();
|
|
66
|
+
const typo = typography['3'];
|
|
67
|
+
const titleStyle = {
|
|
68
|
+
fontSize: typo.fontSize,
|
|
69
|
+
lineHeight: typo.lineHeight,
|
|
70
|
+
letterSpacing: typo.letterSpacing,
|
|
71
|
+
fontWeight: fontWeights.medium,
|
|
72
|
+
color: colors.palettes.gray['12'],
|
|
73
|
+
};
|
|
74
|
+
return (<Text style={[titleStyle, style]} {...props}>
|
|
75
|
+
{children}
|
|
76
|
+
</Text>);
|
|
77
|
+
}
|
|
78
|
+
function ListItemDescription({ children, style, ...props }) {
|
|
79
|
+
const { colors, typography } = useThemeTokens();
|
|
80
|
+
const typo = typography['2'];
|
|
81
|
+
const descriptionStyle = {
|
|
82
|
+
fontSize: typo.fontSize,
|
|
83
|
+
lineHeight: typo.lineHeight,
|
|
84
|
+
letterSpacing: typo.letterSpacing,
|
|
85
|
+
color: colors.palettes.gray.a11,
|
|
86
|
+
};
|
|
87
|
+
return (<Text style={[descriptionStyle, style]} {...props}>
|
|
88
|
+
{children}
|
|
89
|
+
</Text>);
|
|
90
|
+
}
|
|
91
|
+
function ListSeparator({ style, ...props }) {
|
|
92
|
+
const { colors } = useThemeTokens();
|
|
93
|
+
const separatorStyle = {
|
|
94
|
+
height: 1,
|
|
95
|
+
backgroundColor: colors.stroke,
|
|
96
|
+
};
|
|
97
|
+
return <View style={[separatorStyle, style]} {...props}/>;
|
|
98
|
+
}
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Exports
|
|
101
|
+
// ============================================================================
|
|
102
|
+
const List = {
|
|
103
|
+
Root: ListRoot,
|
|
104
|
+
Item: ListItem,
|
|
105
|
+
ItemSlot: ListItemSlot,
|
|
106
|
+
ItemContent: ListItemContent,
|
|
107
|
+
ItemTitle: ListItemTitle,
|
|
108
|
+
ItemDescription: ListItemDescription,
|
|
109
|
+
Separator: ListSeparator,
|
|
110
|
+
};
|
|
111
|
+
export { List };
|
|
112
|
+
//# sourceMappingURL=list.js.map
|