@dangerousthings/react-native 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.
Files changed (105) hide show
  1. package/dist/components/DTAccordion.d.ts +75 -0
  2. package/dist/components/DTAccordion.d.ts.map +1 -0
  3. package/dist/components/DTAccordion.js +147 -0
  4. package/dist/components/DTAccordion.js.map +1 -0
  5. package/dist/components/DTButton.d.ts +68 -0
  6. package/dist/components/DTButton.d.ts.map +1 -0
  7. package/dist/components/DTButton.js +59 -0
  8. package/dist/components/DTButton.js.map +1 -0
  9. package/dist/components/DTCard.d.ts +97 -0
  10. package/dist/components/DTCard.d.ts.map +1 -0
  11. package/dist/components/DTCard.js +81 -0
  12. package/dist/components/DTCard.js.map +1 -0
  13. package/dist/components/DTCheckbox.d.ts +63 -0
  14. package/dist/components/DTCheckbox.d.ts.map +1 -0
  15. package/dist/components/DTCheckbox.js +55 -0
  16. package/dist/components/DTCheckbox.js.map +1 -0
  17. package/dist/components/DTChip.d.ts +40 -0
  18. package/dist/components/DTChip.d.ts.map +1 -0
  19. package/dist/components/DTChip.js +55 -0
  20. package/dist/components/DTChip.js.map +1 -0
  21. package/dist/components/DTDrawer.d.ts +82 -0
  22. package/dist/components/DTDrawer.d.ts.map +1 -0
  23. package/dist/components/DTDrawer.js +146 -0
  24. package/dist/components/DTDrawer.js.map +1 -0
  25. package/dist/components/DTGallery.d.ts +83 -0
  26. package/dist/components/DTGallery.d.ts.map +1 -0
  27. package/dist/components/DTGallery.js +160 -0
  28. package/dist/components/DTGallery.js.map +1 -0
  29. package/dist/components/DTHexagon.d.ts +81 -0
  30. package/dist/components/DTHexagon.d.ts.map +1 -0
  31. package/dist/components/DTHexagon.js +110 -0
  32. package/dist/components/DTHexagon.js.map +1 -0
  33. package/dist/components/DTLabel.d.ts +100 -0
  34. package/dist/components/DTLabel.d.ts.map +1 -0
  35. package/dist/components/DTLabel.js +189 -0
  36. package/dist/components/DTLabel.js.map +1 -0
  37. package/dist/components/DTMediaFrame.d.ts +77 -0
  38. package/dist/components/DTMediaFrame.d.ts.map +1 -0
  39. package/dist/components/DTMediaFrame.js +84 -0
  40. package/dist/components/DTMediaFrame.js.map +1 -0
  41. package/dist/components/DTMenu.d.ts +119 -0
  42. package/dist/components/DTMenu.d.ts.map +1 -0
  43. package/dist/components/DTMenu.js +188 -0
  44. package/dist/components/DTMenu.js.map +1 -0
  45. package/dist/components/DTModal.d.ts +64 -0
  46. package/dist/components/DTModal.d.ts.map +1 -0
  47. package/dist/components/DTModal.js +45 -0
  48. package/dist/components/DTModal.js.map +1 -0
  49. package/dist/components/DTProgressBar.d.ts +66 -0
  50. package/dist/components/DTProgressBar.d.ts.map +1 -0
  51. package/dist/components/DTProgressBar.js +82 -0
  52. package/dist/components/DTProgressBar.js.map +1 -0
  53. package/dist/components/DTQuantityStepper.d.ts +76 -0
  54. package/dist/components/DTQuantityStepper.d.ts.map +1 -0
  55. package/dist/components/DTQuantityStepper.js +108 -0
  56. package/dist/components/DTQuantityStepper.js.map +1 -0
  57. package/dist/components/DTRadioGroup.d.ts +79 -0
  58. package/dist/components/DTRadioGroup.d.ts.map +1 -0
  59. package/dist/components/DTRadioGroup.js +107 -0
  60. package/dist/components/DTRadioGroup.js.map +1 -0
  61. package/dist/components/DTSearchInput.d.ts +72 -0
  62. package/dist/components/DTSearchInput.d.ts.map +1 -0
  63. package/dist/components/DTSearchInput.js +71 -0
  64. package/dist/components/DTSearchInput.js.map +1 -0
  65. package/dist/components/DTSwitch.d.ts +52 -0
  66. package/dist/components/DTSwitch.d.ts.map +1 -0
  67. package/dist/components/DTSwitch.js +85 -0
  68. package/dist/components/DTSwitch.js.map +1 -0
  69. package/dist/components/DTTextInput.d.ts +58 -0
  70. package/dist/components/DTTextInput.d.ts.map +1 -0
  71. package/dist/components/DTTextInput.js +85 -0
  72. package/dist/components/DTTextInput.js.map +1 -0
  73. package/dist/index.d.ts +40 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +40 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/theme/DTThemeProvider.d.ts +49 -0
  78. package/dist/theme/DTThemeProvider.d.ts.map +1 -0
  79. package/dist/theme/DTThemeProvider.js +52 -0
  80. package/dist/theme/DTThemeProvider.js.map +1 -0
  81. package/dist/theme/colors.d.ts +42 -0
  82. package/dist/theme/colors.d.ts.map +1 -0
  83. package/dist/theme/colors.js +59 -0
  84. package/dist/theme/colors.js.map +1 -0
  85. package/dist/theme/paperTheme.d.ts +39 -0
  86. package/dist/theme/paperTheme.d.ts.map +1 -0
  87. package/dist/theme/paperTheme.js +116 -0
  88. package/dist/theme/paperTheme.js.map +1 -0
  89. package/dist/theme/typography.d.ts +57 -0
  90. package/dist/theme/typography.d.ts.map +1 -0
  91. package/dist/theme/typography.js +170 -0
  92. package/dist/theme/typography.js.map +1 -0
  93. package/dist/utils/bevelPaths.d.ts +42 -0
  94. package/dist/utils/bevelPaths.d.ts.map +1 -0
  95. package/dist/utils/bevelPaths.js +105 -0
  96. package/dist/utils/bevelPaths.js.map +1 -0
  97. package/dist/utils/useComponentLayout.d.ts +18 -0
  98. package/dist/utils/useComponentLayout.d.ts.map +1 -0
  99. package/dist/utils/useComponentLayout.js +24 -0
  100. package/dist/utils/useComponentLayout.js.map +1 -0
  101. package/dist/utils/variantColors.d.ts +12 -0
  102. package/dist/utils/variantColors.d.ts.map +1 -0
  103. package/dist/utils/variantColors.js +20 -0
  104. package/dist/utils/variantColors.js.map +1 -0
  105. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DTGallery.js","sourceRoot":"","sources":["../../src/components/DTGallery.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * DT Hexagon Component
3
+ *
4
+ * Decorative hexagon shape following the Dangerous Things design language.
5
+ * No RNP equivalent — purely SVG-based.
6
+ *
7
+ * Web CSS reference (AnimatedHexagon / HexagonHamburgerMenu):
8
+ * - Flat-top hexagon shape
9
+ * - Optional rotation and pulse animations
10
+ * - Used for loading indicators, backgrounds, menu icons
11
+ */
12
+ import { ViewStyle, StyleProp } from 'react-native';
13
+ import { type DTVariant } from '../utils/variantColors';
14
+ interface DTHexagonProps {
15
+ /**
16
+ * Hexagon diameter in pixels
17
+ */
18
+ size: number;
19
+ /**
20
+ * Visual variant
21
+ * @default 'normal'
22
+ */
23
+ variant?: DTVariant;
24
+ /**
25
+ * Whether the hexagon has a solid fill
26
+ * @default true
27
+ */
28
+ filled?: boolean;
29
+ /**
30
+ * Whether to animate
31
+ * @default false
32
+ */
33
+ animated?: boolean;
34
+ /**
35
+ * Animation type
36
+ * @default 'none'
37
+ */
38
+ animationType?: 'rotate' | 'pulse' | 'none';
39
+ /**
40
+ * Animation duration in milliseconds
41
+ * @default 2000
42
+ */
43
+ animationDuration?: number;
44
+ /**
45
+ * Stroke/border width when not filled
46
+ * @default 2
47
+ */
48
+ borderWidth?: number;
49
+ /**
50
+ * Custom color (overrides variant)
51
+ */
52
+ color?: string;
53
+ /**
54
+ * Opacity
55
+ * @default 1
56
+ */
57
+ opacity?: number;
58
+ /**
59
+ * Additional styles
60
+ */
61
+ style?: StyleProp<ViewStyle>;
62
+ /**
63
+ * Content rendered centered inside the hexagon
64
+ */
65
+ children?: React.ReactNode;
66
+ }
67
+ /**
68
+ * DT-styled decorative Hexagon
69
+ *
70
+ * @example
71
+ * <DTHexagon size={60} variant="normal" />
72
+ *
73
+ * @example
74
+ * <DTHexagon size={40} variant="emphasis" animated animationType="rotate" />
75
+ *
76
+ * @example
77
+ * <DTHexagon size={80} variant="success" filled={false} animated animationType="pulse" />
78
+ */
79
+ export declare function DTHexagon({ size, variant, filled, animated, animationType, animationDuration, borderWidth, color, opacity: opacityProp, style, children, }: DTHexagonProps): import("react/jsx-runtime").JSX.Element;
80
+ export {};
81
+ //# sourceMappingURL=DTHexagon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DTHexagon.d.ts","sourceRoot":"","sources":["../../src/components/DTHexagon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAW,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AAEvE,UAAU,cAAc;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAoBD;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAkB,EAClB,MAAa,EACb,QAAgB,EAChB,aAAsB,EACtB,iBAAwB,EACxB,WAAe,EACf,KAAK,EACL,OAAO,EAAE,WAAe,EACxB,KAAK,EACL,QAAQ,GACT,EAAE,cAAc,2CAwFhB"}
@@ -0,0 +1,110 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * DT Hexagon Component
4
+ *
5
+ * Decorative hexagon shape following the Dangerous Things design language.
6
+ * No RNP equivalent — purely SVG-based.
7
+ *
8
+ * Web CSS reference (AnimatedHexagon / HexagonHamburgerMenu):
9
+ * - Flat-top hexagon shape
10
+ * - Optional rotation and pulse animations
11
+ * - Used for loading indicators, backgrounds, menu icons
12
+ */
13
+ import { useRef, useEffect } from 'react';
14
+ import { StyleSheet, View, Animated } from 'react-native';
15
+ import Svg, { Polygon } from 'react-native-svg';
16
+ import { getVariantColor } from '../utils/variantColors';
17
+ /**
18
+ * Build flat-top hexagon SVG polygon points
19
+ */
20
+ function buildHexagonPoints(size) {
21
+ const cx = size / 2;
22
+ const cy = size / 2;
23
+ const r = size / 2;
24
+ return [0, 1, 2, 3, 4, 5]
25
+ .map(i => {
26
+ const angle = (Math.PI / 3) * i - Math.PI / 6; // flat-top orientation
27
+ const x = cx + r * Math.cos(angle);
28
+ const y = cy + r * Math.sin(angle);
29
+ return `${x},${y}`;
30
+ })
31
+ .join(' ');
32
+ }
33
+ /**
34
+ * DT-styled decorative Hexagon
35
+ *
36
+ * @example
37
+ * <DTHexagon size={60} variant="normal" />
38
+ *
39
+ * @example
40
+ * <DTHexagon size={40} variant="emphasis" animated animationType="rotate" />
41
+ *
42
+ * @example
43
+ * <DTHexagon size={80} variant="success" filled={false} animated animationType="pulse" />
44
+ */
45
+ export function DTHexagon({ size, variant = 'normal', filled = true, animated = false, animationType = 'none', animationDuration = 2000, borderWidth = 2, color, opacity: opacityProp = 1, style, children, }) {
46
+ const accentColor = getVariantColor(variant, color);
47
+ const rotateAnim = useRef(new Animated.Value(0)).current;
48
+ const pulseAnim = useRef(new Animated.Value(1)).current;
49
+ useEffect(() => {
50
+ if (!animated) {
51
+ rotateAnim.setValue(0);
52
+ pulseAnim.setValue(1);
53
+ return;
54
+ }
55
+ if (animationType === 'rotate') {
56
+ const animation = Animated.loop(Animated.timing(rotateAnim, {
57
+ toValue: 1,
58
+ duration: animationDuration,
59
+ useNativeDriver: true,
60
+ }));
61
+ animation.start();
62
+ return () => {
63
+ animation.stop();
64
+ rotateAnim.setValue(0);
65
+ };
66
+ }
67
+ if (animationType === 'pulse') {
68
+ const animation = Animated.loop(Animated.sequence([
69
+ Animated.timing(pulseAnim, {
70
+ toValue: 0.3,
71
+ duration: animationDuration / 2,
72
+ useNativeDriver: true,
73
+ }),
74
+ Animated.timing(pulseAnim, {
75
+ toValue: 1,
76
+ duration: animationDuration / 2,
77
+ useNativeDriver: true,
78
+ }),
79
+ ]));
80
+ animation.start();
81
+ return () => {
82
+ animation.stop();
83
+ pulseAnim.setValue(1);
84
+ };
85
+ }
86
+ }, [animated, animationType, animationDuration, rotateAnim, pulseAnim]);
87
+ const rotation = rotateAnim.interpolate({
88
+ inputRange: [0, 1],
89
+ outputRange: ['0deg', '360deg'],
90
+ });
91
+ const animatedOpacity = animated && animationType === 'pulse' ? pulseAnim : opacityProp;
92
+ const transform = animated && animationType === 'rotate'
93
+ ? [{ rotate: rotation }]
94
+ : [];
95
+ const points = buildHexagonPoints(size);
96
+ return (_jsxs(Animated.View, { style: [
97
+ styles.container,
98
+ { width: size, height: size, opacity: animatedOpacity },
99
+ transform.length > 0 ? { transform } : undefined,
100
+ style,
101
+ ], children: [_jsx(Svg, { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: _jsx(Polygon, { points: points, fill: filled ? accentColor : 'transparent', stroke: accentColor, strokeWidth: filled ? 0 : borderWidth }) }), children && (_jsx(View, { style: [StyleSheet.absoluteFill, styles.childrenContainer], children: children }))] }));
102
+ }
103
+ const styles = StyleSheet.create({
104
+ container: {},
105
+ childrenContainer: {
106
+ justifyContent: 'center',
107
+ alignItems: 'center',
108
+ },
109
+ });
110
+ //# sourceMappingURL=DTHexagon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DTHexagon.js","sourceRoot":"","sources":["../../src/components/DTHexagon.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * DT Label Component
3
+ *
4
+ * A themed label following the Dangerous Things design language
5
+ * with an SVG-based beveled top-right corner.
6
+ *
7
+ * Web CSS reference (CyberLabel):
8
+ * - Top-right bevel: 1em (~16px)
9
+ * - Solid filled background using mode color
10
+ * - Black text on colored background
11
+ */
12
+ import { ReactNode } from 'react';
13
+ import { ViewStyle, StyleProp } from 'react-native';
14
+ import { type DTVariant } from '../utils/variantColors';
15
+ type DTLabelSize = 'small' | 'medium' | 'large';
16
+ interface DTLabelProps {
17
+ /**
18
+ * Primary text content
19
+ */
20
+ primaryText: ReactNode;
21
+ /**
22
+ * Secondary text (displayed bold, after primary)
23
+ */
24
+ secondaryText?: ReactNode;
25
+ /**
26
+ * Color mode for the label
27
+ * @default 'normal'
28
+ */
29
+ mode?: DTVariant;
30
+ /**
31
+ * Size of the label - affects text size and scales all dimensions
32
+ * @default 'medium'
33
+ */
34
+ size?: DTLabelSize;
35
+ /**
36
+ * Whether the label should fill its container width
37
+ * @default false
38
+ */
39
+ fullWidth?: boolean;
40
+ /**
41
+ * Whether to animate the label on mount
42
+ * @default true
43
+ */
44
+ animated?: boolean;
45
+ /**
46
+ * Animation delay in milliseconds
47
+ * @default 100
48
+ */
49
+ animationDelay?: number;
50
+ /**
51
+ * Animation duration in milliseconds
52
+ * @default 330
53
+ */
54
+ animationDuration?: number;
55
+ /**
56
+ * Whether to show the pinging indicator
57
+ * @default true
58
+ */
59
+ showIndicator?: boolean;
60
+ /**
61
+ * Top-right bevel size in pixels (overrides size-based default)
62
+ */
63
+ bevelSize?: number;
64
+ /**
65
+ * Additional styles for the label container
66
+ */
67
+ style?: StyleProp<ViewStyle>;
68
+ }
69
+ /**
70
+ * DT-styled Label component with SVG beveled top-right corner
71
+ *
72
+ * Based on CyberLabel from the Dangerous Things web storefront.
73
+ * Features a solid colored background with black text and an optional
74
+ * animated ping indicator.
75
+ *
76
+ * @example
77
+ * <DTLabel primaryText="Detected" secondaryText="NTAG215" mode="normal" />
78
+ *
79
+ * @example
80
+ * <DTLabel primaryText="Status" secondaryText="Ready to scan" mode="success" fullWidth />
81
+ *
82
+ * @example
83
+ * <DTLabel primaryText="Warning" mode="warning" showIndicator={false} />
84
+ *
85
+ * @example
86
+ * <DTLabel primaryText="Small label" size="small" />
87
+ *
88
+ * @example
89
+ * <DTLabel primaryText="Large label" size="large" mode="emphasis" />
90
+ */
91
+ export declare function DTLabel({ primaryText, secondaryText, mode, size, fullWidth, animated, animationDelay, animationDuration, showIndicator, bevelSize, style, }: DTLabelProps): import("react/jsx-runtime").JSX.Element;
92
+ /**
93
+ * DT Label design constants matching web CSS
94
+ */
95
+ export declare const DTLabelClipPath: {
96
+ css: string;
97
+ bevelSize: number;
98
+ };
99
+ export {};
100
+ //# sourceMappingURL=DTLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DTLabel.d.ts","sourceRoot":"","sources":["../../src/components/DTLabel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAC,SAAS,EAAoB,MAAM,OAAO,CAAC;AACnD,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAW,MAAM,cAAc,CAAC;AAI9E,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AAIvE,KAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AA0ChD,UAAU,YAAY;IACpB;;OAEG;IACH,WAAW,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,OAAO,CAAC,EACtB,WAAW,EACX,aAAa,EACb,IAAe,EACf,IAAe,EACf,SAAiB,EACjB,QAAe,EACf,cAAoB,EACpB,iBAAuB,EACvB,aAAoB,EACpB,SAAS,EACT,KAAK,GACN,EAAE,YAAY,2CA8Gd;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;CAW3B,CAAC"}
@@ -0,0 +1,189 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * DT Label Component
4
+ *
5
+ * A themed label following the Dangerous Things design language
6
+ * with an SVG-based beveled top-right corner.
7
+ *
8
+ * Web CSS reference (CyberLabel):
9
+ * - Top-right bevel: 1em (~16px)
10
+ * - Solid filled background using mode color
11
+ * - Black text on colored background
12
+ */
13
+ import { useEffect, useRef } from 'react';
14
+ import { StyleSheet, View, Animated } from 'react-native';
15
+ import { Text } from 'react-native-paper';
16
+ import Svg, { Path } from 'react-native-svg';
17
+ import { DTColors } from '../theme/colors';
18
+ import { getVariantColor } from '../utils/variantColors';
19
+ import { buildLabelBevelPath } from '../utils/bevelPaths';
20
+ import { useComponentLayout } from '../utils/useComponentLayout';
21
+ const sizeConfigs = {
22
+ small: {
23
+ fontSize: 11,
24
+ fontSizeSecondary: 11,
25
+ paddingHorizontal: 8,
26
+ paddingVertical: 4,
27
+ bevel: 10,
28
+ indicatorWidth: 12,
29
+ gap: 3,
30
+ },
31
+ medium: {
32
+ fontSize: 14,
33
+ fontSizeSecondary: 14,
34
+ paddingHorizontal: 12,
35
+ paddingVertical: 8,
36
+ bevel: 16,
37
+ indicatorWidth: 16,
38
+ gap: 4,
39
+ },
40
+ large: {
41
+ fontSize: 18,
42
+ fontSizeSecondary: 18,
43
+ paddingHorizontal: 16,
44
+ paddingVertical: 12,
45
+ bevel: 22,
46
+ indicatorWidth: 20,
47
+ gap: 6,
48
+ },
49
+ };
50
+ /**
51
+ * DT-styled Label component with SVG beveled top-right corner
52
+ *
53
+ * Based on CyberLabel from the Dangerous Things web storefront.
54
+ * Features a solid colored background with black text and an optional
55
+ * animated ping indicator.
56
+ *
57
+ * @example
58
+ * <DTLabel primaryText="Detected" secondaryText="NTAG215" mode="normal" />
59
+ *
60
+ * @example
61
+ * <DTLabel primaryText="Status" secondaryText="Ready to scan" mode="success" fullWidth />
62
+ *
63
+ * @example
64
+ * <DTLabel primaryText="Warning" mode="warning" showIndicator={false} />
65
+ *
66
+ * @example
67
+ * <DTLabel primaryText="Small label" size="small" />
68
+ *
69
+ * @example
70
+ * <DTLabel primaryText="Large label" size="large" mode="emphasis" />
71
+ */
72
+ export function DTLabel({ primaryText, secondaryText, mode = 'normal', size = 'medium', fullWidth = false, animated = true, animationDelay = 100, animationDuration = 330, showIndicator = true, bevelSize, style, }) {
73
+ const { dimensions, onLayout, hasDimensions } = useComponentLayout();
74
+ const scaleAnim = useRef(new Animated.Value(animated ? 0 : 1)).current;
75
+ const pingAnim = useRef(new Animated.Value(1)).current;
76
+ const backgroundColor = getVariantColor(mode);
77
+ const sizeConfig = sizeConfigs[size];
78
+ const effectiveBevelSize = bevelSize ?? sizeConfig.bevel;
79
+ // Mount animation
80
+ useEffect(() => {
81
+ if (animated) {
82
+ Animated.timing(scaleAnim, {
83
+ toValue: 1,
84
+ duration: animationDuration,
85
+ delay: animationDelay,
86
+ useNativeDriver: true,
87
+ }).start();
88
+ }
89
+ }, [animated, animationDelay, animationDuration, scaleAnim]);
90
+ // Ping animation loop
91
+ useEffect(() => {
92
+ if (showIndicator) {
93
+ const pingAnimation = Animated.loop(Animated.sequence([
94
+ Animated.timing(pingAnim, {
95
+ toValue: 0.3,
96
+ duration: 1000,
97
+ useNativeDriver: true,
98
+ }),
99
+ Animated.timing(pingAnim, {
100
+ toValue: 1,
101
+ duration: 1000,
102
+ useNativeDriver: true,
103
+ }),
104
+ ]));
105
+ pingAnimation.start();
106
+ return () => {
107
+ pingAnimation.stop();
108
+ pingAnim.setValue(1);
109
+ };
110
+ }
111
+ pingAnim.setValue(1);
112
+ }, [showIndicator, pingAnim]);
113
+ const { width, height } = dimensions;
114
+ return (_jsxs(Animated.View, { style: [
115
+ styles.container,
116
+ fullWidth && styles.fullWidth,
117
+ { transform: [{ scale: scaleAnim }] },
118
+ style,
119
+ ], onLayout: onLayout, children: [hasDimensions && (_jsx(Svg, { style: StyleSheet.absoluteFill, width: width, height: height, viewBox: `0 0 ${width} ${height}`, children: _jsx(Path, { d: buildLabelBevelPath(width, height, effectiveBevelSize), fill: backgroundColor }) })), _jsxs(View, { style: styles.innerContainer, children: [_jsxs(View, { style: [
120
+ styles.textContainer,
121
+ {
122
+ paddingHorizontal: sizeConfig.paddingHorizontal,
123
+ paddingVertical: sizeConfig.paddingVertical,
124
+ gap: sizeConfig.gap,
125
+ },
126
+ ], children: [_jsx(Text, { style: [
127
+ styles.primaryText,
128
+ { fontSize: sizeConfig.fontSize },
129
+ ], children: primaryText }), secondaryText && (_jsx(Text, { style: [
130
+ styles.secondaryText,
131
+ { fontSize: sizeConfig.fontSizeSecondary },
132
+ ], children: secondaryText }))] }), showIndicator && (_jsx(Animated.View, { style: [
133
+ styles.indicator,
134
+ { opacity: pingAnim, paddingLeft: sizeConfig.paddingHorizontal / 1.5 },
135
+ ], children: _jsx(View, { style: [
136
+ styles.indicatorLine,
137
+ { borderColor: DTColors.dark, width: sizeConfig.indicatorWidth },
138
+ ] }) }))] })] }));
139
+ }
140
+ /**
141
+ * DT Label design constants matching web CSS
142
+ */
143
+ export const DTLabelClipPath = {
144
+ // CSS-style clip path (for web reference)
145
+ css: `polygon(
146
+ 0% 0%,
147
+ calc(100% - 1em) 0%,
148
+ 100% 1em,
149
+ 100% 100%,
150
+ 0% 100%
151
+ )`,
152
+ // Default bevel size in pixels (matching 1em at 16px base)
153
+ bevelSize: 16,
154
+ };
155
+ const styles = StyleSheet.create({
156
+ container: {
157
+ position: 'relative',
158
+ alignSelf: 'flex-start',
159
+ margin: 8,
160
+ },
161
+ fullWidth: {
162
+ alignSelf: 'stretch',
163
+ },
164
+ innerContainer: {
165
+ flexDirection: 'row',
166
+ justifyContent: 'space-between',
167
+ alignItems: 'center',
168
+ position: 'relative',
169
+ zIndex: 1,
170
+ },
171
+ textContainer: {
172
+ flexDirection: 'row',
173
+ flexWrap: 'wrap',
174
+ alignItems: 'center',
175
+ },
176
+ primaryText: {
177
+ color: DTColors.dark,
178
+ fontWeight: '500',
179
+ },
180
+ secondaryText: {
181
+ color: DTColors.dark,
182
+ fontWeight: '800',
183
+ },
184
+ indicator: {},
185
+ indicatorLine: {
186
+ borderBottomWidth: 2,
187
+ },
188
+ });
189
+ //# sourceMappingURL=DTLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DTLabel.js","sourceRoot":"","sources":["../../src/components/DTLabel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * DT MediaFrame Component
3
+ *
4
+ * A beveled frame for images and video content following the
5
+ * Dangerous Things design language. No RNP equivalent.
6
+ *
7
+ * Web CSS reference (CyberMediaFrame / .media-frame-clipped):
8
+ * - Top-left + bottom-right diagonal symmetry bevels
9
+ * - Colored border with dark inner background
10
+ * - Optional mount scale animation
11
+ */
12
+ import { ReactNode } from 'react';
13
+ import { ViewStyle, StyleProp } from 'react-native';
14
+ import { type DTVariant } from '../utils/variantColors';
15
+ interface DTMediaFrameProps {
16
+ /**
17
+ * Content to frame (Image, Video, etc.)
18
+ */
19
+ children: ReactNode;
20
+ /**
21
+ * Visual variant
22
+ * @default 'normal'
23
+ */
24
+ variant?: DTVariant;
25
+ /**
26
+ * Aspect ratio (e.g., 16/9, 1, 4/3)
27
+ */
28
+ aspectRatio?: number;
29
+ /**
30
+ * Border width in pixels
31
+ * @default 3
32
+ */
33
+ borderWidth?: number;
34
+ /**
35
+ * Bevel size in pixels (top-left and bottom-right)
36
+ * @default 32
37
+ */
38
+ bevelSize?: number;
39
+ /**
40
+ * Whether to animate on mount
41
+ * @default true
42
+ */
43
+ animated?: boolean;
44
+ /**
45
+ * Animation delay in milliseconds
46
+ * @default 0
47
+ */
48
+ animationDelay?: number;
49
+ /**
50
+ * Custom color (overrides variant)
51
+ */
52
+ color?: string;
53
+ /**
54
+ * Additional styles for outer container
55
+ */
56
+ style?: StyleProp<ViewStyle>;
57
+ /**
58
+ * Additional styles for the content area
59
+ */
60
+ contentStyle?: StyleProp<ViewStyle>;
61
+ }
62
+ /**
63
+ * DT-styled MediaFrame with diagonal-symmetry beveled corners
64
+ *
65
+ * @example
66
+ * <DTMediaFrame variant="normal" aspectRatio={16/9}>
67
+ * <Image source={{uri: imageUrl}} style={{flex: 1}} />
68
+ * </DTMediaFrame>
69
+ *
70
+ * @example
71
+ * <DTMediaFrame variant="emphasis" bevelSize={24}>
72
+ * <Video source={videoSource} />
73
+ * </DTMediaFrame>
74
+ */
75
+ export declare function DTMediaFrame({ children, variant, aspectRatio, borderWidth, bevelSize, animated, animationDelay, color, style, contentStyle, }: DTMediaFrameProps): import("react/jsx-runtime").JSX.Element;
76
+ export {};
77
+ //# sourceMappingURL=DTMediaFrame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DTMediaFrame.d.ts","sourceRoot":"","sources":["../../src/components/DTMediaFrame.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAC,SAAS,EAAoB,MAAM,OAAO,CAAC;AACnD,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAW,MAAM,cAAc,CAAC;AAG9E,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AAIvE,UAAU,iBAAiB;IACzB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAkB,EAClB,WAAW,EACX,WAAe,EACf,SAAc,EACd,QAAe,EACf,cAAkB,EAClB,KAAK,EACL,KAAK,EACL,YAAY,GACb,EAAE,iBAAiB,2CAsGnB"}