@decodadev02/scoreui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +28 -0
- package/lib/ScoreUIProvider.d.ts +2 -0
- package/lib/ScoreUIProvider.js +25 -0
- package/lib/ScoreUIProvider.js.map +1 -0
- package/lib/components/ScoreBadge.d.ts +5 -0
- package/lib/components/ScoreBadge.js +17 -0
- package/lib/components/ScoreBadge.js.map +1 -0
- package/lib/components/ScoreBottomNav.d.ts +6 -0
- package/lib/components/ScoreBottomNav.js +46 -0
- package/lib/components/ScoreBottomNav.js.map +1 -0
- package/lib/components/ScoreButton.d.ts +9 -0
- package/lib/components/ScoreButton.js +32 -0
- package/lib/components/ScoreButton.js.map +1 -0
- package/lib/components/ScoreCalendar.d.ts +13 -0
- package/lib/components/ScoreCalendar.js +70 -0
- package/lib/components/ScoreCalendar.js.map +1 -0
- package/lib/components/ScoreCheckbox.d.ts +7 -0
- package/lib/components/ScoreCheckbox.js +16 -0
- package/lib/components/ScoreCheckbox.js.map +1 -0
- package/lib/components/ScoreDropdown.d.ts +12 -0
- package/lib/components/ScoreDropdown.js +21 -0
- package/lib/components/ScoreDropdown.js.map +1 -0
- package/lib/components/ScoreGameCard.d.ts +8 -0
- package/lib/components/ScoreGameCard.js +23 -0
- package/lib/components/ScoreGameCard.js.map +1 -0
- package/lib/components/ScoreSkeleton.d.ts +4 -0
- package/lib/components/ScoreSkeleton.js +38 -0
- package/lib/components/ScoreSkeleton.js.map +1 -0
- package/lib/components/ScoreStepper.d.ts +10 -0
- package/lib/components/ScoreStepper.js +34 -0
- package/lib/components/ScoreStepper.js.map +1 -0
- package/lib/components/ScoreSwitch.d.ts +7 -0
- package/lib/components/ScoreSwitch.js +16 -0
- package/lib/components/ScoreSwitch.js.map +1 -0
- package/lib/components/ScoreTextField.d.ts +17 -0
- package/lib/components/ScoreTextField.js +11 -0
- package/lib/components/ScoreTextField.js.map +1 -0
- package/lib/index.d.ts +24 -0
- package/lib/index.js +31 -0
- package/lib/index.js.map +1 -0
- package/lib/theme.d.ts +83 -0
- package/lib/theme.js +51 -0
- package/lib/theme.js.map +1 -0
- package/lib/useReducedMotion.d.ts +1 -0
- package/lib/useReducedMotion.js +22 -0
- package/lib/useReducedMotion.js.map +1 -0
- package/package.json +41 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2015-present 650 Industries, Inc. (aka Expo)
|
|
4
|
+
Copyright (c) 2026 MarianellaGL
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @decodadev02/scoreui
|
|
2
|
+
|
|
3
|
+
Componentes de Tablescore para aplicaciones Expo y React Native con React Native Paper.
|
|
4
|
+
|
|
5
|
+
## Instalación
|
|
6
|
+
|
|
7
|
+
En una aplicación Expo SDK 57:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add @decodadev02/scoreui react-native-paper @expo/vector-icons
|
|
11
|
+
pnpm expo install expo-font
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Uso
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { ScoreButton, ScoreUIProvider } from '@decodadev02/scoreui';
|
|
18
|
+
|
|
19
|
+
export default function App() {
|
|
20
|
+
return (
|
|
21
|
+
<ScoreUIProvider>
|
|
22
|
+
<ScoreButton label="Nueva partida" onPress={() => {}} />
|
|
23
|
+
</ScoreUIProvider>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Incluye tokens, tema, botón, badge, inputs, checkbox, switch, dropdown, tarjeta de partida, control de puntos, navegación inferior, skeleton y calendario. El catálogo y las stories están en el [repositorio](https://github.com/MarianellaGL/scoreUI).
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreUIProvider = ScoreUIProvider;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
7
|
+
const expo_font_1 = require("expo-font");
|
|
8
|
+
const inter_1 = require("@expo-google-fonts/inter");
|
|
9
|
+
const cinzel_1 = require("@expo-google-fonts/cinzel");
|
|
10
|
+
const cinzel_decorative_1 = require("@expo-google-fonts/cinzel-decorative");
|
|
11
|
+
const theme_1 = require("./theme");
|
|
12
|
+
function ScoreUIProvider({ children }) {
|
|
13
|
+
const [loaded, error] = (0, expo_font_1.useFonts)({
|
|
14
|
+
Inter_400Regular: inter_1.Inter_400Regular,
|
|
15
|
+
Inter_500Medium: inter_1.Inter_500Medium,
|
|
16
|
+
Inter_600SemiBold: inter_1.Inter_600SemiBold,
|
|
17
|
+
Cinzel_700Bold: cinzel_1.Cinzel_700Bold,
|
|
18
|
+
CinzelDecorative_700Bold: cinzel_decorative_1.CinzelDecorative_700Bold,
|
|
19
|
+
});
|
|
20
|
+
if (!loaded && !error) {
|
|
21
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1, backgroundColor: theme_1.tokens.color.canvas } });
|
|
22
|
+
}
|
|
23
|
+
return (0, jsx_runtime_1.jsx)(react_native_paper_1.PaperProvider, { theme: theme_1.scoreUITheme, children: children });
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ScoreUIProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreUIProvider.js","sourceRoot":"","sources":["../../src/ScoreUIProvider.tsx"],"names":[],"mappings":";;AAUA,0CAcC;;AAvBD,+CAAoC;AACpC,2DAAmD;AACnD,yCAAqC;AACrC,oDAAgG;AAChG,sDAA2D;AAC3D,4EAAgF;AAEhF,mCAA+C;AAE/C,SAAgB,eAAe,CAAC,EAAE,QAAQ,EAAqB;IAC7D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAA,oBAAQ,EAAC;QAC/B,gBAAgB,EAAhB,wBAAgB;QAChB,eAAe,EAAf,uBAAe;QACf,iBAAiB,EAAjB,yBAAiB;QACjB,cAAc,EAAd,uBAAc;QACd,wBAAwB,EAAxB,4CAAwB;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,uBAAC,mBAAI,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAI,CAAC;IAC5E,CAAC;IAED,OAAO,uBAAC,kCAAa,IAAC,KAAK,EAAE,oBAAY,YAAG,QAAQ,GAAiB,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreBadge = ScoreBadge;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
7
|
+
const theme_1 = require("../theme");
|
|
8
|
+
function ScoreBadge({ label, tone = 'neutral' }) {
|
|
9
|
+
const backgroundColor = tone === 'success' ? theme_1.tokens.color.successSoft : tone === 'warning' ? theme_1.tokens.color.warningSoft : theme_1.tokens.color.elevated;
|
|
10
|
+
const color = tone === 'success' ? theme_1.tokens.color.success : tone === 'warning' ? theme_1.tokens.color.warning : theme_1.tokens.color.gold;
|
|
11
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [styles.badge, { backgroundColor }], children: (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: [styles.label, { color }], children: label }) }));
|
|
12
|
+
}
|
|
13
|
+
const styles = react_native_1.StyleSheet.create({
|
|
14
|
+
badge: { alignSelf: 'flex-start', borderRadius: 99, paddingHorizontal: 12, paddingVertical: 7 },
|
|
15
|
+
label: { fontFamily: theme_1.tokens.font.semibold, fontSize: 12 },
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=ScoreBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreBadge.js","sourceRoot":"","sources":["../../../src/components/ScoreBadge.tsx"],"names":[],"mappings":";;AAUA,gCAQC;;AAlBD,+CAAgD;AAChD,2DAA0C;AAE1C,oCAAkC;AAOlC,SAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,EAAmB;IACrE,MAAM,eAAe,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC9I,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACxH,OAAO,CACL,uBAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,CAAC,YAC9C,uBAAC,yBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,YAAG,KAAK,GAAQ,GACjD,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE;IAC/F,KAAK,EAAE,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;CAC1D,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type ScoreTab = 'home' | 'history' | 'new-game' | 'score' | 'profile';
|
|
2
|
+
export type ScoreBottomNavProps = {
|
|
3
|
+
active: ScoreTab;
|
|
4
|
+
onSelect?: (tab: ScoreTab) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare function ScoreBottomNav({ active, onSelect }: ScoreBottomNavProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreBottomNav = ScoreBottomNav;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const vector_icons_1 = require("@expo/vector-icons");
|
|
7
|
+
const react_native_1 = require("react-native");
|
|
8
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
9
|
+
const theme_1 = require("../theme");
|
|
10
|
+
const useReducedMotion_1 = require("../useReducedMotion");
|
|
11
|
+
const items = [
|
|
12
|
+
{ key: 'home', label: 'Inicio', icon: 'home-outline' },
|
|
13
|
+
{ key: 'history', label: 'Historial', icon: 'history' },
|
|
14
|
+
{ key: 'new-game', label: 'Nueva partida', icon: 'plus' },
|
|
15
|
+
{ key: 'score', label: 'Puntuar', icon: 'file-document-edit-outline' },
|
|
16
|
+
{ key: 'profile', label: 'Perfil', icon: 'account-outline' },
|
|
17
|
+
];
|
|
18
|
+
function TabItem({ item, selected, onSelect, reducedMotion }) {
|
|
19
|
+
const [scale] = (0, react_1.useState)(() => new react_native_1.Animated.Value(selected ? 1.07 : 1));
|
|
20
|
+
const center = item.key === 'new-game';
|
|
21
|
+
const tint = selected ? theme_1.tokens.color.gold : theme_1.tokens.color.secondaryText;
|
|
22
|
+
(0, react_1.useEffect)(() => {
|
|
23
|
+
if (reducedMotion) {
|
|
24
|
+
scale.setValue(1);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
react_native_1.Animated.spring(scale, { toValue: selected ? 1.07 : 1, speed: 22, bounciness: 3, useNativeDriver: true }).start();
|
|
28
|
+
}, [reducedMotion, scale, selected]);
|
|
29
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.Pressable, { accessibilityRole: "tab", accessibilityState: { selected }, accessibilityLabel: item.label, onPress: () => onSelect?.(item.key), style: [styles.item, center && styles.centerItem], children: [(0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: { transform: [{ scale }] }, children: center ? ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.die, children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.pipLeft }), (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.pipRight }), (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.pipBottomLeft }), (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.pipBottomRight }), (0, jsx_runtime_1.jsx)(vector_icons_1.MaterialCommunityIcons, { name: "plus", color: theme_1.tokens.color.primaryText, size: 25 })] })) : (0, jsx_runtime_1.jsx)(vector_icons_1.MaterialCommunityIcons, { name: item.icon, color: tint, size: 24 }) }), (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { numberOfLines: 1, style: [styles.label, { color: center ? theme_1.tokens.color.primaryText : tint }], children: item.label })] }));
|
|
30
|
+
}
|
|
31
|
+
function ScoreBottomNav({ active, onSelect }) {
|
|
32
|
+
const reducedMotion = (0, useReducedMotion_1.useReducedMotion)();
|
|
33
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.nav, children: items.map((item) => (0, jsx_runtime_1.jsx)(TabItem, { item: item, selected: item.key === active, onSelect: onSelect, reducedMotion: reducedMotion }, item.key)) }));
|
|
34
|
+
}
|
|
35
|
+
const styles = react_native_1.StyleSheet.create({
|
|
36
|
+
nav: { minHeight: 96, backgroundColor: theme_1.tokens.color.canvas, borderTopColor: theme_1.tokens.color.border, borderTopWidth: 1, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-around', paddingHorizontal: 4 },
|
|
37
|
+
item: { minWidth: 58, minHeight: 72, flex: 1, alignItems: 'center', justifyContent: 'center', gap: 5 },
|
|
38
|
+
centerItem: { flex: 1.4 },
|
|
39
|
+
label: { fontFamily: theme_1.tokens.font.medium, fontSize: 12, letterSpacing: 0.4, textAlign: 'center' },
|
|
40
|
+
die: { width: 44, height: 44, borderRadius: 10, backgroundColor: theme_1.tokens.color.redDark, alignItems: 'center', justifyContent: 'center', marginTop: -10 },
|
|
41
|
+
pipLeft: { position: 'absolute', width: 3, height: 3, borderRadius: 2, backgroundColor: theme_1.tokens.color.primaryText, left: 6, top: 6 },
|
|
42
|
+
pipRight: { position: 'absolute', width: 3, height: 3, borderRadius: 2, backgroundColor: theme_1.tokens.color.primaryText, right: 6, top: 6 },
|
|
43
|
+
pipBottomLeft: { position: 'absolute', width: 3, height: 3, borderRadius: 2, backgroundColor: theme_1.tokens.color.primaryText, left: 6, bottom: 6 },
|
|
44
|
+
pipBottomRight: { position: 'absolute', width: 3, height: 3, borderRadius: 2, backgroundColor: theme_1.tokens.color.primaryText, right: 6, bottom: 6 },
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=ScoreBottomNav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreBottomNav.js","sourceRoot":"","sources":["../../../src/components/ScoreBottomNav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ScoreButtonProps = {
|
|
2
|
+
label: string;
|
|
3
|
+
variant?: 'primary' | 'secondary' | 'danger';
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
loading?: boolean;
|
|
6
|
+
icon?: string;
|
|
7
|
+
onPress?: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare function ScoreButton({ label, variant, disabled, loading, icon, onPress, }: ScoreButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreButton = ScoreButton;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_native_1 = require("react-native");
|
|
7
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
8
|
+
const theme_1 = require("../theme");
|
|
9
|
+
const useReducedMotion_1 = require("../useReducedMotion");
|
|
10
|
+
function ScoreButton({ label, variant = 'primary', disabled = false, loading = false, icon, onPress, }) {
|
|
11
|
+
const outlined = variant === 'secondary';
|
|
12
|
+
const [scale] = (0, react_1.useState)(() => new react_native_1.Animated.Value(1));
|
|
13
|
+
const reducedMotion = (0, useReducedMotion_1.useReducedMotion)();
|
|
14
|
+
function animatePress(toValue) {
|
|
15
|
+
if (reducedMotion || disabled)
|
|
16
|
+
return;
|
|
17
|
+
react_native_1.Animated.spring(scale, {
|
|
18
|
+
toValue,
|
|
19
|
+
speed: 28,
|
|
20
|
+
bounciness: 2,
|
|
21
|
+
useNativeDriver: true,
|
|
22
|
+
}).start();
|
|
23
|
+
}
|
|
24
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: { transform: [{ scale }] }, children: (0, jsx_runtime_1.jsx)(react_native_paper_1.Button, { mode: outlined ? 'outlined' : 'contained', icon: icon, disabled: disabled, loading: loading, onPress: onPress, onPressIn: () => animatePress(0.97), onPressOut: () => animatePress(1), buttonColor: variant === 'danger' ? theme_1.tokens.color.redDark : theme_1.tokens.color.red, textColor: outlined ? theme_1.tokens.color.gold : theme_1.tokens.color.canvas, style: [styles.button, outlined && styles.outlined], contentStyle: styles.content, labelStyle: styles.label, children: label }) }));
|
|
25
|
+
}
|
|
26
|
+
const styles = react_native_1.StyleSheet.create({
|
|
27
|
+
button: { borderRadius: theme_1.tokens.radius.small },
|
|
28
|
+
outlined: { borderColor: theme_1.tokens.color.gold },
|
|
29
|
+
content: { minHeight: 52 },
|
|
30
|
+
label: { fontFamily: theme_1.tokens.font.semibold, fontSize: 14, marginVertical: 0 },
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=ScoreButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreButton.js","sourceRoot":"","sources":["../../../src/components/ScoreButton.tsx"],"names":[],"mappings":";;AAgBA,kCA0CC;;AA1DD,iCAAiC;AACjC,+CAAoD;AACpD,2DAA4C;AAE5C,oCAAkC;AAClC,0DAAuD;AAWvD,SAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,GAAG,SAAS,EACnB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,IAAI,EACJ,OAAO,GACU;IACjB,MAAM,QAAQ,GAAG,OAAO,KAAK,WAAW,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,uBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,IAAA,mCAAgB,GAAE,CAAC;IAEzC,SAAS,YAAY,CAAC,OAAe;QACnC,IAAI,aAAa,IAAI,QAAQ;YAAE,OAAO;QACtC,uBAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;YACrB,OAAO;YACP,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,CAAC;YACb,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAED,OAAO,CACL,uBAAC,uBAAQ,CAAC,IAAI,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,YAChD,uBAAC,2BAAM,IACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EACzC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EACnC,UAAU,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EACjC,WAAW,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,GAAG,EAC3E,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAM,CAAC,KAAK,CAAC,MAAM,EAC7D,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EACnD,YAAY,EAAE,MAAM,CAAC,OAAO,EAC5B,UAAU,EAAE,MAAM,CAAC,KAAK,YAEvB,KAAK,GACC,GACO,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE,EAAE,YAAY,EAAE,cAAM,CAAC,MAAM,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,EAAE,WAAW,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC1B,KAAK,EAAE,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE;CAC7E,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type ScoreCalendarProps = {
|
|
2
|
+
selectedDate?: string | null;
|
|
3
|
+
onSelect?: (date: string) => void;
|
|
4
|
+
initialMonth?: string;
|
|
5
|
+
onMonthChange?: (month: string) => void;
|
|
6
|
+
minDate?: string;
|
|
7
|
+
maxDate?: string;
|
|
8
|
+
markedDates?: string[];
|
|
9
|
+
firstDayOfWeek?: 0 | 1;
|
|
10
|
+
locale?: string;
|
|
11
|
+
accentColor?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function ScoreCalendar({ selectedDate, onSelect, initialMonth, onMonthChange, minDate, maxDate, markedDates, firstDayOfWeek, locale, accentColor, }: ScoreCalendarProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreCalendar = ScoreCalendar;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const vector_icons_1 = require("@expo/vector-icons");
|
|
7
|
+
const react_native_1 = require("react-native");
|
|
8
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
9
|
+
const theme_1 = require("../theme");
|
|
10
|
+
const two = (value) => String(value).padStart(2, '0');
|
|
11
|
+
const keyOf = (year, month, day) => `${year}-${two(month + 1)}-${two(day)}`;
|
|
12
|
+
const monthKey = (year, month) => `${year}-${two(month + 1)}`;
|
|
13
|
+
function readMonth(input) {
|
|
14
|
+
if (input && /^\d{4}-\d{2}/.test(input)) {
|
|
15
|
+
const year = Number(input.slice(0, 4));
|
|
16
|
+
const month = Number(input.slice(5, 7)) - 1;
|
|
17
|
+
if (month >= 0 && month < 12)
|
|
18
|
+
return { year, month };
|
|
19
|
+
}
|
|
20
|
+
const now = new Date();
|
|
21
|
+
return { year: now.getFullYear(), month: now.getMonth() };
|
|
22
|
+
}
|
|
23
|
+
function ScoreCalendar({ selectedDate = null, onSelect, initialMonth, onMonthChange, minDate, maxDate, markedDates = [], firstDayOfWeek = 1, locale = 'es-AR', accentColor = theme_1.tokens.color.gold, }) {
|
|
24
|
+
const [visible, setVisible] = (0, react_1.useState)(() => readMonth(initialMonth ?? selectedDate));
|
|
25
|
+
const first = new Date(Date.UTC(visible.year, visible.month, 1)).getUTCDay();
|
|
26
|
+
const offset = (first - firstDayOfWeek + 7) % 7;
|
|
27
|
+
const count = new Date(Date.UTC(visible.year, visible.month + 1, 0)).getUTCDate();
|
|
28
|
+
const cells = Array.from({ length: Math.ceil((offset + count) / 7) * 7 }, (_, index) => {
|
|
29
|
+
const day = index - offset + 1;
|
|
30
|
+
return day > 0 && day <= count ? day : null;
|
|
31
|
+
});
|
|
32
|
+
const title = new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric', timeZone: 'UTC' }).format(new Date(Date.UTC(visible.year, visible.month, 1)));
|
|
33
|
+
const weekdays = Array.from({ length: 7 }, (_, index) => {
|
|
34
|
+
const sundayBased = (index + firstDayOfWeek) % 7;
|
|
35
|
+
return new Intl.DateTimeFormat(locale, { weekday: 'short', timeZone: 'UTC' }).format(new Date(Date.UTC(2024, 0, 7 + sundayBased)));
|
|
36
|
+
});
|
|
37
|
+
const today = new Date();
|
|
38
|
+
const todayKey = keyOf(today.getFullYear(), today.getMonth(), today.getDate());
|
|
39
|
+
const marks = new Set(markedDates);
|
|
40
|
+
function moveMonth(delta) {
|
|
41
|
+
const next = new Date(Date.UTC(visible.year, visible.month + delta, 1));
|
|
42
|
+
const month = { year: next.getUTCFullYear(), month: next.getUTCMonth() };
|
|
43
|
+
setVisible(month);
|
|
44
|
+
onMonthChange?.(monthKey(month.year, month.month));
|
|
45
|
+
}
|
|
46
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.calendar, children: [(0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.header, children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.title, children: title }), (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.monthButtons, children: [(0, jsx_runtime_1.jsx)(react_native_1.Pressable, { accessibilityRole: "button", accessibilityLabel: "Mes anterior", onPress: () => moveMonth(-1), style: styles.monthButton, children: (0, jsx_runtime_1.jsx)(vector_icons_1.MaterialCommunityIcons, { name: "chevron-left", size: 24, color: theme_1.tokens.color.primaryText }) }), (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { accessibilityRole: "button", accessibilityLabel: "Mes siguiente", onPress: () => moveMonth(1), style: styles.monthButton, children: (0, jsx_runtime_1.jsx)(vector_icons_1.MaterialCommunityIcons, { name: "chevron-right", size: 24, color: theme_1.tokens.color.primaryText }) })] })] }), (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.grid, children: [weekdays.map((name, index) => (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.cell, children: (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.weekday, children: name }) }, `weekday-${index}`)), cells.map((day, index) => {
|
|
47
|
+
if (day === null)
|
|
48
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.cell }, `blank-${index}`);
|
|
49
|
+
const date = keyOf(visible.year, visible.month, day);
|
|
50
|
+
const selected = selectedDate === date;
|
|
51
|
+
const disabled = (minDate !== undefined && date < minDate) || (maxDate !== undefined && date > maxDate);
|
|
52
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.cell, children: (0, jsx_runtime_1.jsxs)(react_native_1.Pressable, { accessibilityRole: "button", accessibilityLabel: new Intl.DateTimeFormat(locale, { dateStyle: 'full', timeZone: 'UTC' }).format(new Date(Date.UTC(visible.year, visible.month, day))), accessibilityState: { selected, disabled }, disabled: disabled, hitSlop: 4, onPress: () => onSelect?.(date), style: [styles.day, date === todayKey && !selected && { borderColor: accentColor, borderWidth: 1 }, selected && { backgroundColor: accentColor }], children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: [styles.dayText, disabled && styles.disabledText, selected && styles.selectedText], children: day }), marks.has(date) && (0, jsx_runtime_1.jsx)(react_native_1.View, { style: [styles.mark, { backgroundColor: selected ? theme_1.tokens.color.canvas : accentColor }] })] }) }, date);
|
|
53
|
+
})] })] }));
|
|
54
|
+
}
|
|
55
|
+
const styles = react_native_1.StyleSheet.create({
|
|
56
|
+
calendar: { backgroundColor: theme_1.tokens.color.surface, borderRadius: theme_1.tokens.radius.large, padding: 16, gap: 14 },
|
|
57
|
+
header: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' },
|
|
58
|
+
title: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.heading, fontSize: 20, textTransform: 'capitalize' },
|
|
59
|
+
monthButtons: { flexDirection: 'row', gap: 4 },
|
|
60
|
+
monthButton: { width: 44, height: 44, alignItems: 'center', justifyContent: 'center' },
|
|
61
|
+
grid: { flexDirection: 'row', flexWrap: 'wrap' },
|
|
62
|
+
cell: { width: '14.2857%', height: 48, alignItems: 'center', justifyContent: 'center' },
|
|
63
|
+
weekday: { color: theme_1.tokens.color.secondaryText, fontFamily: theme_1.tokens.font.semibold, fontSize: 12, textTransform: 'uppercase' },
|
|
64
|
+
day: { width: '100%', maxWidth: 44, aspectRatio: 1, borderRadius: 22, alignItems: 'center', justifyContent: 'center' },
|
|
65
|
+
dayText: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.medium, fontSize: 14 },
|
|
66
|
+
disabledText: { color: theme_1.tokens.color.border },
|
|
67
|
+
selectedText: { color: theme_1.tokens.color.canvas, fontFamily: theme_1.tokens.font.semibold },
|
|
68
|
+
mark: { position: 'absolute', bottom: 5, width: 4, height: 4, borderRadius: 2 },
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=ScoreCalendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreCalendar.js","sourceRoot":"","sources":["../../../src/components/ScoreCalendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type ScoreCheckboxProps = {
|
|
2
|
+
label: string;
|
|
3
|
+
checked: boolean;
|
|
4
|
+
onChange?: (checked: boolean) => void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function ScoreCheckbox({ label, checked, onChange, disabled }: ScoreCheckboxProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreCheckbox = ScoreCheckbox;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
7
|
+
const theme_1 = require("../theme");
|
|
8
|
+
function ScoreCheckbox({ label, checked, onChange, disabled = false }) {
|
|
9
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.row, children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Checkbox, { status: checked ? 'checked' : 'unchecked', onPress: () => onChange?.(!checked), disabled: disabled, color: theme_1.tokens.color.gold, uncheckedColor: theme_1.tokens.color.secondaryText }), (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: [styles.label, disabled && styles.disabled], onPress: () => !disabled && onChange?.(!checked), children: label })] }));
|
|
10
|
+
}
|
|
11
|
+
const styles = react_native_1.StyleSheet.create({
|
|
12
|
+
row: { minHeight: 48, flexDirection: 'row', alignItems: 'center' },
|
|
13
|
+
label: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.body, flex: 1 },
|
|
14
|
+
disabled: { opacity: 0.45 },
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=ScoreCheckbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreCheckbox.js","sourceRoot":"","sources":["../../../src/components/ScoreCheckbox.tsx"],"names":[],"mappings":";;AAYA,sCAaC;;AAzBD,+CAAgD;AAChD,2DAAoD;AAEpD,oCAAkC;AASlC,SAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAsB;IAC9F,OAAO,CACL,wBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,GAAG,aACrB,uBAAC,6BAAQ,IACP,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EACzC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,EACxB,cAAc,EAAE,cAAM,CAAC,KAAK,CAAC,aAAa,GAC1C,EACF,uBAAC,yBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,YAAG,KAAK,GAAQ,IACrH,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;IAClE,KAAK,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;IACjF,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CAC5B,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type ScoreDropdownOption = {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
};
|
|
5
|
+
export type ScoreDropdownProps = {
|
|
6
|
+
label: string;
|
|
7
|
+
value: string;
|
|
8
|
+
options: ScoreDropdownOption[];
|
|
9
|
+
onChange?: (value: string) => void;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function ScoreDropdown({ label, value, options, onChange, disabled }: ScoreDropdownProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreDropdown = ScoreDropdown;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_native_1 = require("react-native");
|
|
7
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
8
|
+
const theme_1 = require("../theme");
|
|
9
|
+
function ScoreDropdown({ label, value, options, onChange, disabled = false }) {
|
|
10
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
11
|
+
const selected = options.find((option) => option.value === value)?.label ?? 'Seleccionar';
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.root, children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.label, children: label }), (0, jsx_runtime_1.jsx)(react_native_paper_1.Menu, { visible: open, onDismiss: () => setOpen(false), contentStyle: styles.menu, anchor: (0, jsx_runtime_1.jsx)(react_native_paper_1.Button, { mode: "outlined", disabled: disabled, onPress: () => setOpen(true), icon: "chevron-down", textColor: theme_1.tokens.color.primaryText, style: styles.button, contentStyle: styles.buttonContent, children: selected }), children: options.map((option) => (0, jsx_runtime_1.jsx)(react_native_paper_1.Menu.Item, { title: option.label, onPress: () => { onChange?.(option.value); setOpen(false); } }, option.value)) })] }));
|
|
13
|
+
}
|
|
14
|
+
const styles = react_native_1.StyleSheet.create({
|
|
15
|
+
root: { gap: 8 },
|
|
16
|
+
label: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.semibold, fontSize: 14 },
|
|
17
|
+
menu: { backgroundColor: theme_1.tokens.color.elevated },
|
|
18
|
+
button: { borderColor: theme_1.tokens.color.border, borderRadius: theme_1.tokens.radius.small, backgroundColor: theme_1.tokens.color.surface },
|
|
19
|
+
buttonContent: { minHeight: 52, justifyContent: 'space-between', flexDirection: 'row-reverse' },
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=ScoreDropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreDropdown.js","sourceRoot":"","sources":["../../../src/components/ScoreDropdown.tsx"],"names":[],"mappings":";;AAeA,sCAgBC;;AA/BD,iCAAiC;AACjC,+CAAgD;AAChD,2DAAwD;AAExD,oCAAkC;AAWlC,SAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAsB;IACrG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,aAAa,CAAC;IAC1F,OAAO,CACL,wBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,aACtB,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAQ,EACzC,uBAAC,yBAAI,IACH,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC/B,YAAY,EAAE,MAAM,CAAC,IAAI,EACzB,MAAM,EAAE,uBAAC,2BAAM,IAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAC,cAAc,EAAC,SAAS,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,aAAa,YAAG,QAAQ,GAAU,YAEvN,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,uBAAC,yBAAI,CAAC,IAAI,IAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAA/F,MAAM,CAAC,KAAK,CAAuF,CAAC,GACxI,IACF,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;IAChB,KAAK,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1F,IAAI,EAAE,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;IAChD,MAAM,EAAE,EAAE,WAAW,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,cAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,OAAO,EAAE;IACtH,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE;CAChG,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreGameCard = ScoreGameCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
7
|
+
const theme_1 = require("../theme");
|
|
8
|
+
function ScoreGameCard({ title, detail, score, label = 'PARTIDA EN CURSO', featured = false }) {
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)(react_native_paper_1.Card, { style: [styles.card, featured && styles.featured], mode: "contained", children: (0, jsx_runtime_1.jsxs)(react_native_paper_1.Card.Content, { style: styles.content, children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.eyebrow, children: label }), (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.title, children: title }), (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.detail, children: detail }), (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.divider }), (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.footer, children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.scoreLabel, children: "PUNTAJE" }), (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.score, children: score })] })] }) }));
|
|
10
|
+
}
|
|
11
|
+
const styles = react_native_1.StyleSheet.create({
|
|
12
|
+
card: { backgroundColor: theme_1.tokens.color.surface, borderRadius: theme_1.tokens.radius.large },
|
|
13
|
+
featured: { borderColor: theme_1.tokens.color.gold, borderWidth: 1 },
|
|
14
|
+
content: { gap: 12, padding: 24 },
|
|
15
|
+
eyebrow: { color: theme_1.tokens.color.gold, fontFamily: theme_1.tokens.font.medium, fontSize: 12 },
|
|
16
|
+
title: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.heading, fontSize: 25, textTransform: 'uppercase' },
|
|
17
|
+
detail: { color: theme_1.tokens.color.secondaryText, fontFamily: theme_1.tokens.font.body, fontSize: 14 },
|
|
18
|
+
divider: { backgroundColor: theme_1.tokens.color.border, height: 1, marginTop: 3 },
|
|
19
|
+
footer: { alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between' },
|
|
20
|
+
scoreLabel: { color: theme_1.tokens.color.secondaryText, fontFamily: theme_1.tokens.font.medium, fontSize: 12 },
|
|
21
|
+
score: { color: theme_1.tokens.color.gold, fontFamily: theme_1.tokens.font.heading, fontSize: 30 },
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=ScoreGameCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreGameCard.js","sourceRoot":"","sources":["../../../src/components/ScoreGameCard.tsx"],"names":[],"mappings":";;AAaA,sCAeC;;AA5BD,+CAAgD;AAChD,2DAAgD;AAEhD,oCAAkC;AAUlC,SAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,kBAAkB,EAAE,QAAQ,GAAG,KAAK,EAAsB;IACtH,OAAO,CACL,uBAAC,yBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAC,WAAW,YACvE,wBAAC,yBAAI,CAAC,OAAO,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,aACjC,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,KAAK,GAAQ,EAC3C,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAQ,EACzC,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,MAAM,GAAQ,EAC3C,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAI,EAC/B,wBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACxB,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,wBAAgB,EAC9C,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAQ,IACpC,IACM,GACV,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,cAAM,CAAC,MAAM,CAAC,KAAK,EAAE;IAClF,QAAQ,EAAE,EAAE,WAAW,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;IAC5D,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACjC,OAAO,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnF,KAAK,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE;IACrH,MAAM,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzF,OAAO,EAAE,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;IAC1E,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE;IACvF,UAAU,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/F,KAAK,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;CACnF,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreSkeleton = ScoreSkeleton;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_native_1 = require("react-native");
|
|
7
|
+
const theme_1 = require("../theme");
|
|
8
|
+
const useReducedMotion_1 = require("../useReducedMotion");
|
|
9
|
+
function ScoreSkeleton({ variant = 'text' }) {
|
|
10
|
+
const [opacity] = (0, react_1.useState)(() => new react_native_1.Animated.Value(1));
|
|
11
|
+
const reducedMotion = (0, useReducedMotion_1.useReducedMotion)();
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
|
+
if (reducedMotion) {
|
|
14
|
+
opacity.setValue(1);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const pulse = react_native_1.Animated.loop(react_native_1.Animated.sequence([
|
|
18
|
+
react_native_1.Animated.timing(opacity, { toValue: 0.5, duration: 700, useNativeDriver: true }),
|
|
19
|
+
react_native_1.Animated.timing(opacity, { toValue: 1, duration: 700, useNativeDriver: true }),
|
|
20
|
+
]));
|
|
21
|
+
pulse.start();
|
|
22
|
+
return () => pulse.stop();
|
|
23
|
+
}, [opacity, reducedMotion]);
|
|
24
|
+
if (variant === 'text')
|
|
25
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { accessibilityLabel: "Cargando", style: [styles.bar, { width: '72%', opacity }] });
|
|
26
|
+
if (variant === 'list')
|
|
27
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.View, { accessibilityLabel: "Cargando lista", style: styles.list, children: [0, 1, 2].map((item) => (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.row, children: [(0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [styles.circle, { opacity }] }), (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.lines, children: [(0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [styles.bar, { width: '80%', opacity }] }), (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [styles.bar, { width: '55%', opacity }] })] })] }, item)) });
|
|
28
|
+
return (0, jsx_runtime_1.jsxs)(react_native_1.View, { accessibilityLabel: "Cargando tarjeta", style: styles.card, children: [(0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [styles.bar, { width: '35%', opacity }] }), (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [styles.bar, { width: '75%', height: 28, opacity }] }), (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [styles.bar, { width: '95%', opacity }] }), (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [styles.bar, { width: '50%', opacity }] })] });
|
|
29
|
+
}
|
|
30
|
+
const styles = react_native_1.StyleSheet.create({
|
|
31
|
+
bar: { backgroundColor: theme_1.tokens.color.elevated, height: 16, borderRadius: 8 },
|
|
32
|
+
list: { backgroundColor: theme_1.tokens.color.surface, padding: 16, borderRadius: theme_1.tokens.radius.medium, gap: 18 },
|
|
33
|
+
row: { flexDirection: 'row', gap: 12, alignItems: 'center' },
|
|
34
|
+
circle: { backgroundColor: theme_1.tokens.color.elevated, width: 42, height: 42, borderRadius: 21 },
|
|
35
|
+
lines: { flex: 1, gap: 9 },
|
|
36
|
+
card: { backgroundColor: theme_1.tokens.color.surface, padding: 24, borderRadius: theme_1.tokens.radius.large, gap: 17 },
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=ScoreSkeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreSkeleton.js","sourceRoot":"","sources":["../../../src/components/ScoreSkeleton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ScoreStepperProps = {
|
|
2
|
+
player: string;
|
|
3
|
+
detail?: string;
|
|
4
|
+
value: number;
|
|
5
|
+
onChange?: (value: number) => void;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function ScoreStepper({ player, detail, value, onChange, min, max, disabled }: ScoreStepperProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreStepper = ScoreStepper;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_native_1 = require("react-native");
|
|
7
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
8
|
+
const theme_1 = require("../theme");
|
|
9
|
+
const useReducedMotion_1 = require("../useReducedMotion");
|
|
10
|
+
function ScoreStepper({ player, detail, value, onChange, min = 0, max = 999, disabled = false }) {
|
|
11
|
+
const adjust = (delta) => onChange?.(Math.max(min, Math.min(max, value + delta)));
|
|
12
|
+
const [scale] = (0, react_1.useState)(() => new react_native_1.Animated.Value(1));
|
|
13
|
+
const previous = (0, react_1.useRef)(value);
|
|
14
|
+
const reducedMotion = (0, useReducedMotion_1.useReducedMotion)();
|
|
15
|
+
(0, react_1.useEffect)(() => {
|
|
16
|
+
if (previous.current !== value && !reducedMotion) {
|
|
17
|
+
scale.setValue(1.16);
|
|
18
|
+
react_native_1.Animated.spring(scale, { toValue: 1, speed: 24, bounciness: 4, useNativeDriver: true }).start();
|
|
19
|
+
}
|
|
20
|
+
previous.current = value;
|
|
21
|
+
}, [value, reducedMotion, scale]);
|
|
22
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: [styles.row, disabled && styles.disabled], children: [(0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.person, children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.name, children: player }), detail && (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.detail, children: detail })] }), (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { accessibilityRole: "button", accessibilityLabel: `Restar un punto a ${player}`, disabled: disabled || value <= min, onPress: () => adjust(-1), style: styles.control, children: (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.symbol, children: "\u2212" }) }), (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: { transform: [{ scale }] }, children: (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { accessibilityLabel: `${value} puntos`, style: styles.value, children: value }) }), (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { accessibilityRole: "button", accessibilityLabel: `Sumar un punto a ${player}`, disabled: disabled || value >= max, onPress: () => adjust(1), style: styles.control, children: (0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: styles.symbol, children: "+" }) })] }));
|
|
23
|
+
}
|
|
24
|
+
const styles = react_native_1.StyleSheet.create({
|
|
25
|
+
row: { minHeight: 88, backgroundColor: theme_1.tokens.color.surface, borderRadius: theme_1.tokens.radius.medium, paddingHorizontal: 14, flexDirection: 'row', alignItems: 'center', gap: 6 },
|
|
26
|
+
disabled: { opacity: 0.45 },
|
|
27
|
+
person: { flex: 1, gap: 4 },
|
|
28
|
+
name: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.semibold, fontSize: 14 },
|
|
29
|
+
detail: { color: theme_1.tokens.color.secondaryText, fontFamily: theme_1.tokens.font.body, fontSize: 12 },
|
|
30
|
+
control: { width: 44, height: 44, borderRadius: 22, backgroundColor: theme_1.tokens.color.elevated, alignItems: 'center', justifyContent: 'center' },
|
|
31
|
+
symbol: { color: theme_1.tokens.color.gold, fontFamily: theme_1.tokens.font.medium, fontSize: 24 },
|
|
32
|
+
value: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.semibold, minWidth: 30, textAlign: 'center' },
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=ScoreStepper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreStepper.js","sourceRoot":"","sources":["../../../src/components/ScoreStepper.tsx"],"names":[],"mappings":";;AAiBA,oCAuCC;;AAxDD,iCAAoD;AACpD,+CAAqE;AACrE,2DAA0C;AAE1C,oCAAkC;AAClC,0DAAuD;AAYvD,SAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,QAAQ,GAAG,KAAK,EAAqB;IACvH,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,uBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,aAAa,GAAG,IAAA,mCAAgB,GAAE,CAAC;IAEzC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACjD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,uBAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAClG,CAAC;QACD,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAElC,OAAO,CACL,wBAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,aACpD,wBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACxB,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,MAAM,GAAQ,EACxC,MAAM,IAAI,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,MAAM,GAAQ,IACjD,EACP,uBAAC,wBAAS,IACR,iBAAiB,EAAC,QAAQ,EAC1B,kBAAkB,EAAE,qBAAqB,MAAM,EAAE,EACjD,QAAQ,EAAE,QAAQ,IAAI,KAAK,IAAI,GAAG,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACzB,KAAK,EAAE,MAAM,CAAC,OAAO,YACtB,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,uBAAU,GAAY,EACjD,uBAAC,uBAAQ,CAAC,IAAI,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,YAC9C,uBAAC,yBAAI,IAAC,kBAAkB,EAAE,GAAG,KAAK,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAQ,GAClE,EAChB,uBAAC,wBAAS,IACR,iBAAiB,EAAC,QAAQ,EAC1B,kBAAkB,EAAE,oBAAoB,MAAM,EAAE,EAChD,QAAQ,EAAE,QAAQ,IAAI,KAAK,IAAI,GAAG,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACxB,KAAK,EAAE,MAAM,CAAC,OAAO,YACtB,uBAAC,yBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,kBAAU,GAAY,IAC5C,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,cAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;IAC5K,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC3B,IAAI,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzF,MAAM,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzF,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE;IAC5I,MAAM,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClF,KAAK,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;CAChH,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreSwitch = ScoreSwitch;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
7
|
+
const theme_1 = require("../theme");
|
|
8
|
+
function ScoreSwitch({ label, value, onChange, disabled = false }) {
|
|
9
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.row, children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.Text, { style: [styles.label, disabled && styles.disabled], children: label }), (0, jsx_runtime_1.jsx)(react_native_paper_1.Switch, { value: value, onValueChange: onChange, disabled: disabled, color: theme_1.tokens.color.red })] }));
|
|
10
|
+
}
|
|
11
|
+
const styles = react_native_1.StyleSheet.create({
|
|
12
|
+
row: { minHeight: 56, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' },
|
|
13
|
+
label: { color: theme_1.tokens.color.primaryText, fontFamily: theme_1.tokens.font.body, flex: 1 },
|
|
14
|
+
disabled: { opacity: 0.45 },
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=ScoreSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreSwitch.js","sourceRoot":"","sources":["../../../src/components/ScoreSwitch.tsx"],"names":[],"mappings":";;AAYA,kCAOC;;AAnBD,+CAAgD;AAChD,2DAAkD;AAElD,oCAAkC;AASlC,SAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAoB;IACxF,OAAO,CACL,wBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,GAAG,aACrB,uBAAC,yBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAG,KAAK,GAAQ,EACxE,uBAAC,2BAAM,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,GAAG,GAAI,IACzF,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE;IACnG,KAAK,EAAE,EAAE,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,cAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;IACjF,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CAC5B,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TextInput } from 'react-native-paper';
|
|
2
|
+
export type ScoreTextFieldProps = {
|
|
3
|
+
mode?: 'outlined';
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
onChangeText?: (text: string) => void;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
helperText?: string;
|
|
9
|
+
errorText?: string;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
keyboardType?: React.ComponentProps<typeof TextInput>['keyboardType'];
|
|
12
|
+
autoCapitalize?: React.ComponentProps<typeof TextInput>['autoCapitalize'];
|
|
13
|
+
returnKeyType?: React.ComponentProps<typeof TextInput>['returnKeyType'];
|
|
14
|
+
onSubmitEditing?: React.ComponentProps<typeof TextInput>['onSubmitEditing'];
|
|
15
|
+
style?: React.ComponentProps<typeof TextInput>['style'];
|
|
16
|
+
};
|
|
17
|
+
export declare function ScoreTextField({ label, value, onChangeText, placeholder, helperText, errorText, disabled, keyboardType, autoCapitalize, returnKeyType, onSubmitEditing, style }: ScoreTextFieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreTextField = ScoreTextField;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
7
|
+
const theme_1 = require("../theme");
|
|
8
|
+
function ScoreTextField({ label, value, onChangeText, placeholder, helperText, errorText, disabled, keyboardType, autoCapitalize, returnKeyType, onSubmitEditing, style }) {
|
|
9
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { children: [(0, jsx_runtime_1.jsx)(react_native_paper_1.TextInput, { mode: "outlined", label: label, value: value, onChangeText: onChangeText, placeholder: placeholder, disabled: disabled, keyboardType: keyboardType, autoCapitalize: autoCapitalize, returnKeyType: returnKeyType, onSubmitEditing: onSubmitEditing, error: Boolean(errorText), textColor: theme_1.tokens.color.primaryText, outlineColor: theme_1.tokens.color.border, activeOutlineColor: theme_1.tokens.color.gold, style: [{ backgroundColor: theme_1.tokens.color.surface }, style] }), (errorText || helperText) && (0, jsx_runtime_1.jsx)(react_native_paper_1.HelperText, { type: errorText ? 'error' : 'info', visible: true, children: errorText || helperText })] }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ScoreTextField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScoreTextField.js","sourceRoot":"","sources":["../../../src/components/ScoreTextField.tsx"],"names":[],"mappings":";;AAqBA,wCAuBC;;AA5CD,+CAAoC;AACpC,2DAA2D;AAE3D,oCAAkC;AAkBlC,SAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAuB;IACnM,OAAO,CACL,wBAAC,mBAAI,eACH,uBAAC,8BAAS,IACR,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EACzB,SAAS,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW,EACnC,YAAY,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM,EACjC,kBAAkB,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,EACrC,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,cAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,GACzD,EACD,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,uBAAC,+BAAU,IAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,kBAAE,SAAS,IAAI,UAAU,GAAc,IACvH,CACR,CAAC;AACJ,CAAC"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { ScoreUIProvider } from './ScoreUIProvider';
|
|
2
|
+
export { scoreUITheme, tokens } from './theme';
|
|
3
|
+
export { ScoreButton } from './components/ScoreButton';
|
|
4
|
+
export type { ScoreButtonProps } from './components/ScoreButton';
|
|
5
|
+
export { ScoreBadge } from './components/ScoreBadge';
|
|
6
|
+
export type { ScoreBadgeProps } from './components/ScoreBadge';
|
|
7
|
+
export { ScoreTextField } from './components/ScoreTextField';
|
|
8
|
+
export type { ScoreTextFieldProps } from './components/ScoreTextField';
|
|
9
|
+
export { ScoreGameCard } from './components/ScoreGameCard';
|
|
10
|
+
export type { ScoreGameCardProps } from './components/ScoreGameCard';
|
|
11
|
+
export { ScoreStepper } from './components/ScoreStepper';
|
|
12
|
+
export type { ScoreStepperProps } from './components/ScoreStepper';
|
|
13
|
+
export { ScoreBottomNav } from './components/ScoreBottomNav';
|
|
14
|
+
export type { ScoreBottomNavProps, ScoreTab } from './components/ScoreBottomNav';
|
|
15
|
+
export { ScoreCheckbox } from './components/ScoreCheckbox';
|
|
16
|
+
export type { ScoreCheckboxProps } from './components/ScoreCheckbox';
|
|
17
|
+
export { ScoreSwitch } from './components/ScoreSwitch';
|
|
18
|
+
export type { ScoreSwitchProps } from './components/ScoreSwitch';
|
|
19
|
+
export { ScoreDropdown } from './components/ScoreDropdown';
|
|
20
|
+
export type { ScoreDropdownProps, ScoreDropdownOption } from './components/ScoreDropdown';
|
|
21
|
+
export { ScoreSkeleton } from './components/ScoreSkeleton';
|
|
22
|
+
export type { ScoreSkeletonProps } from './components/ScoreSkeleton';
|
|
23
|
+
export { ScoreCalendar } from './components/ScoreCalendar';
|
|
24
|
+
export type { ScoreCalendarProps } from './components/ScoreCalendar';
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScoreCalendar = exports.ScoreSkeleton = exports.ScoreDropdown = exports.ScoreSwitch = exports.ScoreCheckbox = exports.ScoreBottomNav = exports.ScoreStepper = exports.ScoreGameCard = exports.ScoreTextField = exports.ScoreBadge = exports.ScoreButton = exports.tokens = exports.scoreUITheme = exports.ScoreUIProvider = void 0;
|
|
4
|
+
var ScoreUIProvider_1 = require("./ScoreUIProvider");
|
|
5
|
+
Object.defineProperty(exports, "ScoreUIProvider", { enumerable: true, get: function () { return ScoreUIProvider_1.ScoreUIProvider; } });
|
|
6
|
+
var theme_1 = require("./theme");
|
|
7
|
+
Object.defineProperty(exports, "scoreUITheme", { enumerable: true, get: function () { return theme_1.scoreUITheme; } });
|
|
8
|
+
Object.defineProperty(exports, "tokens", { enumerable: true, get: function () { return theme_1.tokens; } });
|
|
9
|
+
var ScoreButton_1 = require("./components/ScoreButton");
|
|
10
|
+
Object.defineProperty(exports, "ScoreButton", { enumerable: true, get: function () { return ScoreButton_1.ScoreButton; } });
|
|
11
|
+
var ScoreBadge_1 = require("./components/ScoreBadge");
|
|
12
|
+
Object.defineProperty(exports, "ScoreBadge", { enumerable: true, get: function () { return ScoreBadge_1.ScoreBadge; } });
|
|
13
|
+
var ScoreTextField_1 = require("./components/ScoreTextField");
|
|
14
|
+
Object.defineProperty(exports, "ScoreTextField", { enumerable: true, get: function () { return ScoreTextField_1.ScoreTextField; } });
|
|
15
|
+
var ScoreGameCard_1 = require("./components/ScoreGameCard");
|
|
16
|
+
Object.defineProperty(exports, "ScoreGameCard", { enumerable: true, get: function () { return ScoreGameCard_1.ScoreGameCard; } });
|
|
17
|
+
var ScoreStepper_1 = require("./components/ScoreStepper");
|
|
18
|
+
Object.defineProperty(exports, "ScoreStepper", { enumerable: true, get: function () { return ScoreStepper_1.ScoreStepper; } });
|
|
19
|
+
var ScoreBottomNav_1 = require("./components/ScoreBottomNav");
|
|
20
|
+
Object.defineProperty(exports, "ScoreBottomNav", { enumerable: true, get: function () { return ScoreBottomNav_1.ScoreBottomNav; } });
|
|
21
|
+
var ScoreCheckbox_1 = require("./components/ScoreCheckbox");
|
|
22
|
+
Object.defineProperty(exports, "ScoreCheckbox", { enumerable: true, get: function () { return ScoreCheckbox_1.ScoreCheckbox; } });
|
|
23
|
+
var ScoreSwitch_1 = require("./components/ScoreSwitch");
|
|
24
|
+
Object.defineProperty(exports, "ScoreSwitch", { enumerable: true, get: function () { return ScoreSwitch_1.ScoreSwitch; } });
|
|
25
|
+
var ScoreDropdown_1 = require("./components/ScoreDropdown");
|
|
26
|
+
Object.defineProperty(exports, "ScoreDropdown", { enumerable: true, get: function () { return ScoreDropdown_1.ScoreDropdown; } });
|
|
27
|
+
var ScoreSkeleton_1 = require("./components/ScoreSkeleton");
|
|
28
|
+
Object.defineProperty(exports, "ScoreSkeleton", { enumerable: true, get: function () { return ScoreSkeleton_1.ScoreSkeleton; } });
|
|
29
|
+
var ScoreCalendar_1 = require("./components/ScoreCalendar");
|
|
30
|
+
Object.defineProperty(exports, "ScoreCalendar", { enumerable: true, get: function () { return ScoreCalendar_1.ScoreCalendar; } });
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,iCAA+C;AAAtC,qGAAA,YAAY,OAAA;AAAE,+FAAA,MAAM,OAAA;AAC7B,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AAEpB,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AAEnB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AAEvB,4DAA2D;AAAlD,8GAAA,aAAa,OAAA;AAEtB,0DAAyD;AAAhD,4GAAA,YAAY,OAAA;AAErB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AAEvB,4DAA2D;AAAlD,8GAAA,aAAa,OAAA;AAEtB,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AAEpB,4DAA2D;AAAlD,8GAAA,aAAa,OAAA;AAEtB,4DAA2D;AAAlD,8GAAA,aAAa,OAAA;AAEtB,4DAA2D;AAAlD,8GAAA,aAAa,OAAA"}
|
package/lib/theme.d.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export declare const tokens: {
|
|
2
|
+
readonly color: {
|
|
3
|
+
readonly canvas: "#100D19";
|
|
4
|
+
readonly surface: "#231928";
|
|
5
|
+
readonly elevated: "#322233";
|
|
6
|
+
readonly primaryText: "#FFF4E1";
|
|
7
|
+
readonly secondaryText: "#BCAFB9";
|
|
8
|
+
readonly gold: "#FFD47A";
|
|
9
|
+
readonly red: "#F4511E";
|
|
10
|
+
readonly redDark: "#B5253C";
|
|
11
|
+
readonly border: "#65464C";
|
|
12
|
+
readonly success: "#65D88B";
|
|
13
|
+
readonly successSoft: "#1B402D";
|
|
14
|
+
readonly warning: "#FF6F66";
|
|
15
|
+
readonly warningSoft: "#562026";
|
|
16
|
+
};
|
|
17
|
+
readonly radius: {
|
|
18
|
+
readonly small: 8;
|
|
19
|
+
readonly medium: 14;
|
|
20
|
+
readonly large: 18;
|
|
21
|
+
};
|
|
22
|
+
readonly space: {
|
|
23
|
+
readonly xs: 4;
|
|
24
|
+
readonly sm: 8;
|
|
25
|
+
readonly md: 16;
|
|
26
|
+
readonly lg: 24;
|
|
27
|
+
readonly xl: 32;
|
|
28
|
+
};
|
|
29
|
+
readonly font: {
|
|
30
|
+
readonly body: "Inter_400Regular";
|
|
31
|
+
readonly medium: "Inter_500Medium";
|
|
32
|
+
readonly semibold: "Inter_600SemiBold";
|
|
33
|
+
readonly heading: "Cinzel_700Bold";
|
|
34
|
+
readonly brand: "CinzelDecorative_700Bold";
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export declare const scoreUITheme: {
|
|
38
|
+
roundness: 14;
|
|
39
|
+
colors: {
|
|
40
|
+
primary: "#F4511E";
|
|
41
|
+
onPrimary: "#100D19";
|
|
42
|
+
primaryContainer: "#B5253C";
|
|
43
|
+
onPrimaryContainer: "#FFF4E1";
|
|
44
|
+
secondary: "#FFD47A";
|
|
45
|
+
onSecondary: "#100D19";
|
|
46
|
+
background: "#100D19";
|
|
47
|
+
surface: "#231928";
|
|
48
|
+
surfaceVariant: "#322233";
|
|
49
|
+
onSurface: "#FFF4E1";
|
|
50
|
+
onSurfaceVariant: "#BCAFB9";
|
|
51
|
+
outline: "#65464C";
|
|
52
|
+
error: "#FF6F66";
|
|
53
|
+
secondaryContainer: string;
|
|
54
|
+
tertiary: string;
|
|
55
|
+
tertiaryContainer: string;
|
|
56
|
+
surfaceDisabled: string;
|
|
57
|
+
errorContainer: string;
|
|
58
|
+
onSecondaryContainer: string;
|
|
59
|
+
onTertiary: string;
|
|
60
|
+
onTertiaryContainer: string;
|
|
61
|
+
onSurfaceDisabled: string;
|
|
62
|
+
onError: string;
|
|
63
|
+
onErrorContainer: string;
|
|
64
|
+
onBackground: string;
|
|
65
|
+
outlineVariant: string;
|
|
66
|
+
inverseSurface: string;
|
|
67
|
+
inverseOnSurface: string;
|
|
68
|
+
inversePrimary: string;
|
|
69
|
+
shadow: string;
|
|
70
|
+
scrim: string;
|
|
71
|
+
backdrop: string;
|
|
72
|
+
elevation: import("react-native-paper/lib/typescript/types").MD3ElevationColors;
|
|
73
|
+
};
|
|
74
|
+
dark: boolean;
|
|
75
|
+
mode?: "adaptive" | "exact";
|
|
76
|
+
animation: {
|
|
77
|
+
scale: number;
|
|
78
|
+
defaultAnimationDuration?: number;
|
|
79
|
+
};
|
|
80
|
+
version: 3;
|
|
81
|
+
isV3: true;
|
|
82
|
+
fonts: import("react-native-paper/lib/typescript/types").MD3Typescale;
|
|
83
|
+
};
|
package/lib/theme.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoreUITheme = exports.tokens = void 0;
|
|
4
|
+
const react_native_paper_1 = require("react-native-paper");
|
|
5
|
+
exports.tokens = {
|
|
6
|
+
color: {
|
|
7
|
+
canvas: '#100D19',
|
|
8
|
+
surface: '#231928',
|
|
9
|
+
elevated: '#322233',
|
|
10
|
+
primaryText: '#FFF4E1',
|
|
11
|
+
secondaryText: '#BCAFB9',
|
|
12
|
+
gold: '#FFD47A',
|
|
13
|
+
red: '#F4511E',
|
|
14
|
+
redDark: '#B5253C',
|
|
15
|
+
border: '#65464C',
|
|
16
|
+
success: '#65D88B',
|
|
17
|
+
successSoft: '#1B402D',
|
|
18
|
+
warning: '#FF6F66',
|
|
19
|
+
warningSoft: '#562026',
|
|
20
|
+
},
|
|
21
|
+
radius: { small: 8, medium: 14, large: 18 },
|
|
22
|
+
space: { xs: 4, sm: 8, md: 16, lg: 24, xl: 32 },
|
|
23
|
+
font: {
|
|
24
|
+
body: 'Inter_400Regular',
|
|
25
|
+
medium: 'Inter_500Medium',
|
|
26
|
+
semibold: 'Inter_600SemiBold',
|
|
27
|
+
heading: 'Cinzel_700Bold',
|
|
28
|
+
brand: 'CinzelDecorative_700Bold',
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
exports.scoreUITheme = {
|
|
32
|
+
...react_native_paper_1.MD3DarkTheme,
|
|
33
|
+
roundness: exports.tokens.radius.medium,
|
|
34
|
+
colors: {
|
|
35
|
+
...react_native_paper_1.MD3DarkTheme.colors,
|
|
36
|
+
primary: exports.tokens.color.red,
|
|
37
|
+
onPrimary: exports.tokens.color.canvas,
|
|
38
|
+
primaryContainer: exports.tokens.color.redDark,
|
|
39
|
+
onPrimaryContainer: exports.tokens.color.primaryText,
|
|
40
|
+
secondary: exports.tokens.color.gold,
|
|
41
|
+
onSecondary: exports.tokens.color.canvas,
|
|
42
|
+
background: exports.tokens.color.canvas,
|
|
43
|
+
surface: exports.tokens.color.surface,
|
|
44
|
+
surfaceVariant: exports.tokens.color.elevated,
|
|
45
|
+
onSurface: exports.tokens.color.primaryText,
|
|
46
|
+
onSurfaceVariant: exports.tokens.color.secondaryText,
|
|
47
|
+
outline: exports.tokens.color.border,
|
|
48
|
+
error: exports.tokens.color.warning,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=theme.js.map
|
package/lib/theme.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/theme.ts"],"names":[],"mappings":";;;AAAA,2DAAkD;AAErC,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE;QACL,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,SAAS;KACvB;IACD,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC/C,IAAI,EAAE;QACJ,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,0BAA0B;KAClC;CACO,CAAC;AAEE,QAAA,YAAY,GAAG;IAC1B,GAAG,iCAAY;IACf,SAAS,EAAE,cAAM,CAAC,MAAM,CAAC,MAAM;IAC/B,MAAM,EAAE;QACN,GAAG,iCAAY,CAAC,MAAM;QACtB,OAAO,EAAE,cAAM,CAAC,KAAK,CAAC,GAAG;QACzB,SAAS,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM;QAC9B,gBAAgB,EAAE,cAAM,CAAC,KAAK,CAAC,OAAO;QACtC,kBAAkB,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW;QAC5C,SAAS,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI;QAC5B,WAAW,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM;QAChC,UAAU,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM;QAC/B,OAAO,EAAE,cAAM,CAAC,KAAK,CAAC,OAAO;QAC7B,cAAc,EAAE,cAAM,CAAC,KAAK,CAAC,QAAQ;QACrC,SAAS,EAAE,cAAM,CAAC,KAAK,CAAC,WAAW;QACnC,gBAAgB,EAAE,cAAM,CAAC,KAAK,CAAC,aAAa;QAC5C,OAAO,EAAE,cAAM,CAAC,KAAK,CAAC,MAAM;QAC5B,KAAK,EAAE,cAAM,CAAC,KAAK,CAAC,OAAO;KAC5B;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useReducedMotion(): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useReducedMotion = useReducedMotion;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
function useReducedMotion() {
|
|
7
|
+
const [reduced, setReduced] = (0, react_1.useState)(false);
|
|
8
|
+
(0, react_1.useEffect)(() => {
|
|
9
|
+
let mounted = true;
|
|
10
|
+
react_native_1.AccessibilityInfo.isReduceMotionEnabled().then((value) => {
|
|
11
|
+
if (mounted)
|
|
12
|
+
setReduced(value);
|
|
13
|
+
}).catch(() => undefined);
|
|
14
|
+
const subscription = react_native_1.AccessibilityInfo.addEventListener('reduceMotionChanged', setReduced);
|
|
15
|
+
return () => {
|
|
16
|
+
mounted = false;
|
|
17
|
+
subscription.remove();
|
|
18
|
+
};
|
|
19
|
+
}, []);
|
|
20
|
+
return reduced;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=useReducedMotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReducedMotion.js","sourceRoot":"","sources":["../../src/useReducedMotion.ts"],"names":[],"mappings":";;AAGA,4CAgBC;AAnBD,iCAA4C;AAC5C,+CAAiD;AAEjD,SAAgB,gBAAgB;IAC9B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,gCAAiB,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACvD,IAAI,OAAO;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,gCAAiB,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;QAC3F,OAAO,GAAG,EAAE;YACV,OAAO,GAAG,KAAK,CAAC;YAChB,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@decodadev02/scoreui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Componentes móviles de Tablescore para React Native y Expo",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "./lib/index.js",
|
|
7
|
+
"types": "./lib/index.d.ts",
|
|
8
|
+
"react-native": "./lib/index.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"lib",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"keywords": [
|
|
14
|
+
"react-native",
|
|
15
|
+
"expo",
|
|
16
|
+
"react-native-paper",
|
|
17
|
+
"design-system",
|
|
18
|
+
"tablescore"
|
|
19
|
+
],
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/MarianellaGL/scoreUI.git"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@expo-google-fonts/cinzel": "^0.4.2",
|
|
29
|
+
"@expo-google-fonts/cinzel-decorative": "^0.4.1",
|
|
30
|
+
"@expo-google-fonts/inter": "^0.4.2"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"@expo/vector-icons": "^15.1.1",
|
|
34
|
+
"expo": "~57.0.0",
|
|
35
|
+
"expo-font": "~57.0.0",
|
|
36
|
+
"react": "^19.2.0",
|
|
37
|
+
"react-native": "^0.86.0",
|
|
38
|
+
"react-native-paper": "^5.15.0"
|
|
39
|
+
},
|
|
40
|
+
"sideEffects": false
|
|
41
|
+
}
|