deskforge 1.0.0 → 1.0.1

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 (84) hide show
  1. package/COMPLETION_REPORT.md +426 -0
  2. package/COMPONENT_API.md +529 -0
  3. package/DELIVERY_SUMMARY.md +455 -0
  4. package/IMPLEMENTATION_GUIDE.md +385 -0
  5. package/IMPORT_GUIDE.md +404 -0
  6. package/QUICK_REFERENCE.md +352 -0
  7. package/README.md +245 -31
  8. package/README_UI_COMPLETE.md +395 -0
  9. package/TYPE_DEFINITIONS.md +671 -0
  10. package/UI_GETTING_STARTED.md +523 -0
  11. package/examples/deskforge-app/App.ts +7 -11
  12. package/examples/deskforge-app/screens/CounterApp.ts +181 -0
  13. package/examples/deskforge-app/screens/GalleryApp.ts +267 -0
  14. package/examples/deskforge-app/screens/NotesApp.ts +376 -0
  15. package/examples/deskforge-app/screens/SettingsApp.ts +226 -0
  16. package/examples/deskforge-app/screens/TodoApp.ts +288 -0
  17. package/examples/deskforge-app/screens/index.ts +50 -0
  18. package/package.json +1 -1
  19. package/packages/cli/dist/commands/start.d.ts +7 -1
  20. package/packages/cli/dist/commands/start.d.ts.map +1 -1
  21. package/packages/cli/dist/commands/start.js +75 -21
  22. package/packages/cli/dist/commands/start.js.map +1 -1
  23. package/packages/cli/src/commands/start.ts +93 -21
  24. package/packages/cli/test/start.test.js +24 -0
  25. package/packages/core/dist/index.d.ts +1 -0
  26. package/packages/core/dist/index.d.ts.map +1 -1
  27. package/packages/core/dist/index.js +1 -0
  28. package/packages/core/dist/index.js.map +1 -1
  29. package/packages/core/dist/style/StyleObject.d.ts +115 -0
  30. package/packages/core/dist/style/StyleObject.d.ts.map +1 -0
  31. package/packages/core/dist/style/StyleObject.js +6 -0
  32. package/packages/core/dist/style/StyleObject.js.map +1 -0
  33. package/packages/core/dist/style/StyleSheet.d.ts +7 -0
  34. package/packages/core/dist/style/StyleSheet.d.ts.map +1 -0
  35. package/packages/core/dist/style/StyleSheet.js +13 -0
  36. package/packages/core/dist/style/StyleSheet.js.map +1 -0
  37. package/packages/core/dist/style/index.d.ts +3 -0
  38. package/packages/core/dist/style/index.d.ts.map +1 -0
  39. package/packages/core/dist/style/index.js +21 -0
  40. package/packages/core/dist/style/index.js.map +1 -0
  41. package/packages/core/src/index.ts +2 -1
  42. package/packages/core/src/style/StyleObject.ts +134 -0
  43. package/packages/core/src/style/StyleSheet.ts +19 -0
  44. package/packages/core/src/style/index.ts +5 -0
  45. package/packages/db/src/db.ts +4 -4
  46. package/packages/deskforge/src/index.ts +95 -0
  47. package/packages/file/dist/file.d.ts +1 -1
  48. package/packages/file/dist/file.d.ts.map +1 -1
  49. package/packages/file/dist/file.js +75 -3
  50. package/packages/file/dist/file.js.map +1 -1
  51. package/packages/file/src/file.ts +96 -4
  52. package/packages/file/test/file.test.js +23 -0
  53. package/packages/router/dist/index.d.ts +1 -0
  54. package/packages/router/dist/index.d.ts.map +1 -1
  55. package/packages/router/dist/index.js +1 -0
  56. package/packages/router/dist/index.js.map +1 -1
  57. package/packages/router/dist/navigation.d.ts +23 -0
  58. package/packages/router/dist/navigation.d.ts.map +1 -0
  59. package/packages/router/dist/navigation.js +61 -0
  60. package/packages/router/dist/navigation.js.map +1 -0
  61. package/packages/router/src/index.ts +2 -1
  62. package/packages/router/src/navigation.ts +86 -0
  63. package/packages/router/test/router.test.js +21 -1
  64. package/packages/theme/src/theme.ts +23 -0
  65. package/packages/ui/src/base/Button.ts +67 -0
  66. package/packages/ui/src/base/Image.ts +59 -0
  67. package/packages/ui/src/base/Pressable.ts +69 -0
  68. package/packages/ui/src/base/Text.ts +42 -0
  69. package/packages/ui/src/base/TextInput.ts +113 -0
  70. package/packages/ui/src/base/TouchableOpacity.ts +52 -0
  71. package/packages/ui/src/base/View.ts +43 -0
  72. package/packages/ui/src/index.ts +40 -25
  73. package/packages/ui/src/input/CheckBox.ts +69 -0
  74. package/packages/ui/src/input/Slider.ts +19 -2
  75. package/packages/ui/src/input/Switch.ts +68 -0
  76. package/packages/ui/src/layout/KeyboardAvoidingView.ts +65 -0
  77. package/packages/ui/src/layout/SafeAreaView.ts +58 -0
  78. package/packages/ui/src/list/FlatList.ts +111 -0
  79. package/packages/ui/src/list/ScrollView.ts +80 -0
  80. package/packages/ui/src/list/SectionList.ts +120 -0
  81. package/packages/ui/src/overlay/ActivityIndicator.ts +70 -0
  82. package/packages/ui/src/overlay/Modal.ts +28 -6
  83. package/packages/ui/src/platform/Platform.ts +119 -0
  84. package/packages/ui/src/platform/StatusBar.ts +63 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAG5B,cAAc,mBAAmB,CAAA;AAMjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAG5B,cAAc,mBAAmB,CAAA;AAMjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA"}
@@ -27,4 +27,5 @@ __exportStar(require("./scheduler/index"), exports);
27
27
  // Animation — fluid motion system
28
28
  __exportStar(require("./animation/index"), exports);
29
29
  __exportStar(require("./component/index"), exports);
30
+ __exportStar(require("./style/index"), exports);
30
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,4CAA4C;AAC5C,yCAAyC;;;;;;;;;;;;;;;;AAEzC,6CAA6C;AAC7C,8CAA2B;AAC3B,+CAA4B;AAE5B,8CAA8C;AAC9C,oDAAiC;AAEjC,qCAAqC;AACrC,gCAAgC;AAEhC,kCAAkC;AAClC,oDAAiC;AAEjC,oDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,4CAA4C;AAC5C,yCAAyC;;;;;;;;;;;;;;;;AAEzC,6CAA6C;AAC7C,8CAA2B;AAC3B,+CAA4B;AAE5B,8CAA8C;AAC9C,oDAAiC;AAEjC,qCAAqC;AACrC,gCAAgC;AAEhC,kCAAkC;AAClC,oDAAiC;AAEjC,oDAAiC;AACjC,gDAA6B"}
@@ -0,0 +1,115 @@
1
+ export type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';
2
+ export type JustifyContent = 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
3
+ export type AlignItems = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline';
4
+ export type AlignSelf = 'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline';
5
+ export type Overflow = 'visible' | 'hidden' | 'scroll';
6
+ export type Position = 'absolute' | 'relative';
7
+ export type TextAlign = 'auto' | 'left' | 'right' | 'center' | 'justify';
8
+ export type FontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
9
+ export type TextDecorationLine = 'none' | 'underline' | 'line-through' | 'underline line-through';
10
+ export type TextTransform = 'none' | 'capitalize' | 'uppercase' | 'lowercase';
11
+ export type BorderStyle = 'solid' | 'dotted' | 'dashed';
12
+ export type Visibility = 'visible' | 'hidden';
13
+ export type Display = 'flex' | 'none';
14
+ export type Direction = 'inherit' | 'ltr' | 'rtl';
15
+ export type WritingDirection = 'auto' | 'ltr' | 'rtl';
16
+ export type BackdropFilter = 'none' | string;
17
+ export interface StyleObject {
18
+ display?: Display;
19
+ visibility?: Visibility;
20
+ direction?: Direction;
21
+ writingDirection?: WritingDirection;
22
+ flex?: number;
23
+ flexDirection?: FlexDirection;
24
+ justifyContent?: JustifyContent;
25
+ alignItems?: AlignItems;
26
+ alignSelf?: AlignSelf;
27
+ flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
28
+ flexGrow?: number;
29
+ flexShrink?: number;
30
+ flexBasis?: number | 'auto';
31
+ gap?: number;
32
+ rowGap?: number;
33
+ columnGap?: number;
34
+ width?: number | `${number}%` | 'auto';
35
+ height?: number | `${number}%` | 'auto';
36
+ minWidth?: number | `${number}%`;
37
+ maxWidth?: number | `${number}%`;
38
+ minHeight?: number | `${number}%`;
39
+ maxHeight?: number | `${number}%`;
40
+ margin?: number;
41
+ marginTop?: number;
42
+ marginBottom?: number;
43
+ marginLeft?: number;
44
+ marginRight?: number;
45
+ marginHorizontal?: number;
46
+ marginVertical?: number;
47
+ padding?: number;
48
+ paddingTop?: number;
49
+ paddingBottom?: number;
50
+ paddingLeft?: number;
51
+ paddingRight?: number;
52
+ paddingHorizontal?: number;
53
+ paddingVertical?: number;
54
+ backgroundColor?: string;
55
+ borderRadius?: number;
56
+ borderTopLeftRadius?: number;
57
+ borderTopRightRadius?: number;
58
+ borderBottomLeftRadius?: number;
59
+ borderBottomRightRadius?: number;
60
+ borderWidth?: number;
61
+ borderTopWidth?: number;
62
+ borderBottomWidth?: number;
63
+ borderLeftWidth?: number;
64
+ borderRightWidth?: number;
65
+ borderColor?: string;
66
+ borderTopColor?: string;
67
+ borderBottomColor?: string;
68
+ borderLeftColor?: string;
69
+ borderRightColor?: string;
70
+ borderStyle?: BorderStyle;
71
+ opacity?: number;
72
+ overflow?: Overflow;
73
+ zIndex?: number;
74
+ shadowColor?: string;
75
+ shadowOpacity?: number;
76
+ shadowRadius?: number;
77
+ shadowOffset?: {
78
+ width: number;
79
+ height: number;
80
+ };
81
+ elevation?: number;
82
+ position?: Position;
83
+ top?: number;
84
+ bottom?: number;
85
+ left?: number;
86
+ right?: number;
87
+ fontSize?: number;
88
+ fontWeight?: FontWeight;
89
+ fontFamily?: string;
90
+ color?: string;
91
+ textAlign?: TextAlign;
92
+ lineHeight?: number;
93
+ letterSpacing?: number;
94
+ textDecorationLine?: TextDecorationLine;
95
+ textTransform?: TextTransform;
96
+ includeFontPadding?: boolean;
97
+ backfaceVisibility?: 'visible' | 'hidden';
98
+ transform?: Array<Record<string, unknown>>;
99
+ transformOrigin?: string;
100
+ resizeMode?: 'cover' | 'contain' | 'stretch' | 'repeat' | 'center';
101
+ aspectRatio?: number;
102
+ pointerEvents?: 'auto' | 'none' | 'box-none' | 'box-only';
103
+ cursor?: string;
104
+ userSelect?: 'auto' | 'none' | 'text' | 'all';
105
+ whiteSpace?: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line';
106
+ textOverflow?: 'clip' | 'ellipsis';
107
+ backdropFilter?: BackdropFilter;
108
+ boxShadow?: string;
109
+ outline?: string;
110
+ outlineColor?: string;
111
+ outlineOffset?: number;
112
+ outlineStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double';
113
+ }
114
+ export type StyleObjectLike = StyleObject | null | undefined;
115
+ //# sourceMappingURL=StyleObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleObject.d.ts","sourceRoot":"","sources":["../../src/style/StyleObject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // StyleObject.ts
3
+ // Strongly typed style definitions for DeskForge UI components.
4
+ // This mirrors the React Native style surface while remaining plain TypeScript.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=StyleObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleObject.js","sourceRoot":"","sources":["../../src/style/StyleObject.ts"],"names":[],"mappings":";AAAA,iBAAiB;AACjB,gEAAgE;AAChE,gFAAgF"}
@@ -0,0 +1,7 @@
1
+ import type { StyleObject } from './StyleObject';
2
+ export interface StyleSheetStatic {
3
+ create<T extends Record<string, StyleObject>>(styles: T): Readonly<T>;
4
+ }
5
+ export declare const StyleSheet: StyleSheetStatic;
6
+ export type { StyleObject };
7
+ //# sourceMappingURL=StyleSheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleSheet.d.ts","sourceRoot":"","sources":["../../src/style/StyleSheet.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;CACtE;AAMD,eAAO,MAAM,UAAU,EAAE,gBAExB,CAAA;AAED,YAAY,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ // StyleSheet.ts
3
+ // Creates reusable style maps for DeskForge UI components.
4
+ // The implementation stays lightweight and runtime-safe for the current monorepo.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StyleSheet = void 0;
7
+ function create(styles) {
8
+ return Object.freeze({ ...styles });
9
+ }
10
+ exports.StyleSheet = {
11
+ create,
12
+ };
13
+ //# sourceMappingURL=StyleSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleSheet.js","sourceRoot":"","sources":["../../src/style/StyleSheet.ts"],"names":[],"mappings":";AAAA,gBAAgB;AAChB,2DAA2D;AAC3D,kFAAkF;;;AAQlF,SAAS,MAAM,CAAwC,MAAS;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAgB,CAAA;AACpD,CAAC;AAEY,QAAA,UAAU,GAAqB;IAC1C,MAAM;CACP,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './StyleObject';
2
+ export * from './StyleSheet';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/style/index.ts"],"names":[],"mappings":"AAGA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ // index.ts
3
+ // Public style exports for the core package.
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ __exportStar(require("./StyleObject"), exports);
20
+ __exportStar(require("./StyleSheet"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/style/index.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,6CAA6C;;;;;;;;;;;;;;;;AAE7C,gDAA6B;AAC7B,+CAA4B"}
@@ -15,4 +15,5 @@ export * from './scheduler/index'
15
15
  // Animation — fluid motion system
16
16
  export * from './animation/index'
17
17
 
18
- export * from './component/index'
18
+ export * from './component/index'
19
+ export * from './style/index'
@@ -0,0 +1,134 @@
1
+ // StyleObject.ts
2
+ // Strongly typed style definitions for DeskForge UI components.
3
+ // This mirrors the React Native style surface while remaining plain TypeScript.
4
+
5
+ export type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse'
6
+ export type JustifyContent =
7
+ | 'flex-start'
8
+ | 'flex-end'
9
+ | 'center'
10
+ | 'space-between'
11
+ | 'space-around'
12
+ | 'space-evenly'
13
+ export type AlignItems = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline'
14
+ export type AlignSelf = 'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline'
15
+ export type Overflow = 'visible' | 'hidden' | 'scroll'
16
+ export type Position = 'absolute' | 'relative'
17
+ export type TextAlign = 'auto' | 'left' | 'right' | 'center' | 'justify'
18
+ export type FontWeight =
19
+ | 'normal'
20
+ | 'bold'
21
+ | '100'
22
+ | '200'
23
+ | '300'
24
+ | '400'
25
+ | '500'
26
+ | '600'
27
+ | '700'
28
+ | '800'
29
+ | '900'
30
+ export type TextDecorationLine = 'none' | 'underline' | 'line-through' | 'underline line-through'
31
+ export type TextTransform = 'none' | 'capitalize' | 'uppercase' | 'lowercase'
32
+ export type BorderStyle = 'solid' | 'dotted' | 'dashed'
33
+ export type Visibility = 'visible' | 'hidden'
34
+ export type Display = 'flex' | 'none'
35
+ export type Direction = 'inherit' | 'ltr' | 'rtl'
36
+ export type WritingDirection = 'auto' | 'ltr' | 'rtl'
37
+ export type BackdropFilter = 'none' | string
38
+
39
+ export interface StyleObject {
40
+ display?: Display
41
+ visibility?: Visibility
42
+ direction?: Direction
43
+ writingDirection?: WritingDirection
44
+ flex?: number
45
+ flexDirection?: FlexDirection
46
+ justifyContent?: JustifyContent
47
+ alignItems?: AlignItems
48
+ alignSelf?: AlignSelf
49
+ flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse'
50
+ flexGrow?: number
51
+ flexShrink?: number
52
+ flexBasis?: number | 'auto'
53
+ gap?: number
54
+ rowGap?: number
55
+ columnGap?: number
56
+ width?: number | `${number}%` | 'auto'
57
+ height?: number | `${number}%` | 'auto'
58
+ minWidth?: number | `${number}%`
59
+ maxWidth?: number | `${number}%`
60
+ minHeight?: number | `${number}%`
61
+ maxHeight?: number | `${number}%`
62
+ margin?: number
63
+ marginTop?: number
64
+ marginBottom?: number
65
+ marginLeft?: number
66
+ marginRight?: number
67
+ marginHorizontal?: number
68
+ marginVertical?: number
69
+ padding?: number
70
+ paddingTop?: number
71
+ paddingBottom?: number
72
+ paddingLeft?: number
73
+ paddingRight?: number
74
+ paddingHorizontal?: number
75
+ paddingVertical?: number
76
+ backgroundColor?: string
77
+ borderRadius?: number
78
+ borderTopLeftRadius?: number
79
+ borderTopRightRadius?: number
80
+ borderBottomLeftRadius?: number
81
+ borderBottomRightRadius?: number
82
+ borderWidth?: number
83
+ borderTopWidth?: number
84
+ borderBottomWidth?: number
85
+ borderLeftWidth?: number
86
+ borderRightWidth?: number
87
+ borderColor?: string
88
+ borderTopColor?: string
89
+ borderBottomColor?: string
90
+ borderLeftColor?: string
91
+ borderRightColor?: string
92
+ borderStyle?: BorderStyle
93
+ opacity?: number
94
+ overflow?: Overflow
95
+ zIndex?: number
96
+ shadowColor?: string
97
+ shadowOpacity?: number
98
+ shadowRadius?: number
99
+ shadowOffset?: { width: number; height: number }
100
+ elevation?: number
101
+ position?: Position
102
+ top?: number
103
+ bottom?: number
104
+ left?: number
105
+ right?: number
106
+ fontSize?: number
107
+ fontWeight?: FontWeight
108
+ fontFamily?: string
109
+ color?: string
110
+ textAlign?: TextAlign
111
+ lineHeight?: number
112
+ letterSpacing?: number
113
+ textDecorationLine?: TextDecorationLine
114
+ textTransform?: TextTransform
115
+ includeFontPadding?: boolean
116
+ backfaceVisibility?: 'visible' | 'hidden'
117
+ transform?: Array<Record<string, unknown>>
118
+ transformOrigin?: string
119
+ resizeMode?: 'cover' | 'contain' | 'stretch' | 'repeat' | 'center'
120
+ aspectRatio?: number
121
+ pointerEvents?: 'auto' | 'none' | 'box-none' | 'box-only'
122
+ cursor?: string
123
+ userSelect?: 'auto' | 'none' | 'text' | 'all'
124
+ whiteSpace?: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line'
125
+ textOverflow?: 'clip' | 'ellipsis'
126
+ backdropFilter?: BackdropFilter
127
+ boxShadow?: string
128
+ outline?: string
129
+ outlineColor?: string
130
+ outlineOffset?: number
131
+ outlineStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double'
132
+ }
133
+
134
+ export type StyleObjectLike = StyleObject | null | undefined
@@ -0,0 +1,19 @@
1
+ // StyleSheet.ts
2
+ // Creates reusable style maps for DeskForge UI components.
3
+ // The implementation stays lightweight and runtime-safe for the current monorepo.
4
+
5
+ import type { StyleObject } from './StyleObject'
6
+
7
+ export interface StyleSheetStatic {
8
+ create<T extends Record<string, StyleObject>>(styles: T): Readonly<T>
9
+ }
10
+
11
+ function create<T extends Record<string, StyleObject>>(styles: T): Readonly<T> {
12
+ return Object.freeze({ ...styles }) as Readonly<T>
13
+ }
14
+
15
+ export const StyleSheet: StyleSheetStatic = {
16
+ create,
17
+ }
18
+
19
+ export type { StyleObject }
@@ -0,0 +1,5 @@
1
+ // index.ts
2
+ // Public style exports for the core package.
3
+
4
+ export * from './StyleObject'
5
+ export * from './StyleSheet'
@@ -100,9 +100,9 @@ function dbQuery<T = Record<string, unknown>>(
100
100
  }
101
101
 
102
102
  // Inserts a record into a table
103
- async function insert(
103
+ async function insert<T extends object>(
104
104
  table: string,
105
- record: Record<string, unknown>
105
+ record: T
106
106
  ): Promise<string> {
107
107
  const connection = connections.get(activeConnection)
108
108
 
@@ -115,10 +115,10 @@ async function insert(
115
115
  }
116
116
 
117
117
  // Updates a record by ID
118
- async function update(
118
+ async function update<T extends object>(
119
119
  table: string,
120
120
  id: string | number,
121
- changes: Record<string, unknown>
121
+ changes: T
122
122
  ): Promise<void> {
123
123
  console.log('[DeskForge DB] UPDATE', table, id, changes)
124
124
  }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * DeskForge Main Package
3
+ *
4
+ * One-stop import for all DeskForge functionality.
5
+ *
6
+ * Usage:
7
+ * import { View, Text, State, Router, DB } from 'deskforge'
8
+ */
9
+
10
+ // UI Components
11
+ export { View, Text, Pressable, Button, TouchableOpacity, Image, TextInput } from '@deskforge/ui'
12
+ export { ScrollView, FlatList, SectionList } from '@deskforge/ui'
13
+ export { SafeAreaView, KeyboardAvoidingView } from '@deskforge/ui'
14
+ export { Modal, ActivityIndicator } from '@deskforge/ui'
15
+ export { Switch, Slider, CheckBox } from '@deskforge/ui'
16
+ export { StatusBar, Platform } from '@deskforge/ui'
17
+
18
+ // UI Types
19
+ export type {
20
+ StyleObject,
21
+ DFNode,
22
+ PressHandlers,
23
+ TextInputProps,
24
+ ScrollViewProps,
25
+ FlatListProps,
26
+ SectionListProps,
27
+ Section,
28
+ SafeAreaViewProps,
29
+ KeyboardAvoidingViewProps,
30
+ ModalProps,
31
+ ActivityIndicatorProps,
32
+ SwitchProps,
33
+ SliderProps,
34
+ CheckBoxProps,
35
+ StatusBarProps,
36
+ PlatformOS,
37
+ PlatformSelectOptions,
38
+ ImageSource
39
+ } from '@deskforge/ui'
40
+
41
+ // State Management
42
+ export { State, Computed, Watch, Effect, Ref, Store, Context, Reducer } from '@deskforge/state'
43
+ export type { StateProxy, ComputedRef, WatchHandle, EffectHandle, StoreConfig } from '@deskforge/state'
44
+
45
+ // Router
46
+ export { Router, Screen, Navigation } from '@deskforge/router'
47
+ export type { Route, NavigationStack } from '@deskforge/router'
48
+
49
+ // Database
50
+ export { DB } from '@deskforge/db'
51
+ export type { DBQuery, DBAdapter } from '@deskforge/db'
52
+
53
+ // Notifications
54
+ export { Notify, Toast, Push, SMS, Email, ContactPicker } from '@deskforge/notifications'
55
+
56
+ // File System
57
+ export { File } from '@deskforge/file'
58
+
59
+ // Networking
60
+ export { Network, P2P, mDNS } from '@deskforge/network'
61
+
62
+ // AI
63
+ export { createBrain } from '@deskforge/ai'
64
+
65
+ // Theme
66
+ export { Theme } from '@deskforge/theme'
67
+ export type { ThemeTokens } from '@deskforge/theme'
68
+
69
+ // Security
70
+ export { Biometric, Encrypt, Decrypt } from '@deskforge/security'
71
+
72
+ // Bridge to other languages
73
+ export { Bridge } from '@deskforge/bridge'
74
+
75
+ // Background tasks
76
+ export { Background, Schedule } from '@deskforge/background'
77
+
78
+ // Payments
79
+ export { Payment } from '@deskforge/payments'
80
+
81
+ // Internationalization
82
+ export { i18n } from '@deskforge/i18n'
83
+
84
+ // Logger
85
+ export { Logger } from '@deskforge/logger'
86
+
87
+ // Updater
88
+ export { Updater } from '@deskforge/updater'
89
+
90
+ // CLI (available in Node/CLI contexts only)
91
+ export { CLI } from '@deskforge/cli'
92
+
93
+ // Core utilities
94
+ export { createNode, generateId } from '@deskforge/core'
95
+ export { StyleSheet } from '@deskforge/core'
@@ -26,7 +26,7 @@ declare function pick(config: FilePickConfig): Promise<string | string[] | null>
26
26
  declare function save(content: string, config?: FileSaveConfig): Promise<string | null>;
27
27
  declare function move(from: string, to: string): Promise<void>;
28
28
  declare function copy(from: string, to: string): Promise<void>;
29
- declare function rename(path: string, newName: string): Promise<void>;
29
+ declare function rename(oldPath: string, newPath: string): Promise<void>;
30
30
  declare function del(path: string): Promise<void>;
31
31
  declare function watch(path: string, handler: (event: FileWatchEvent) => void): () => void;
32
32
  declare function drop(config: {
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAOA,KAAK,QAAQ,GACT,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,UAAU,GACV,MAAM,CAAA;AAGV,UAAU,cAAc;IAEtB,IAAI,EAAO,QAAQ,GAAG,QAAQ,EAAE,CAAA;IAGhC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAGD,UAAU,cAAc;IAEtB,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAGD,UAAU,cAAc;IAEtB,IAAI,EAAK,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;IAGvD,IAAI,EAAK,MAAM,CAAA;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD,UAAU,UAAU;IAClB,IAAI,EAAM,MAAM,CAAA;IAChB,IAAI,EAAM,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAqBD,iBAAe,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMjD;AAID,iBAAe,KAAK,CAClB,IAAI,EAAK,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAGf;AAID,iBAAe,IAAI,CACjB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAKnC;AAID,iBAAe,IAAI,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAGD,iBAAe,IAAI,CACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAI,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf;AAGD,iBAAe,IAAI,CACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAI,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf;AAGD,iBAAe,MAAM,CACnB,IAAI,EAAK,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAEf;AAGD,iBAAe,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;AAKD,iBAAS,KAAK,CACZ,IAAI,EAAK,MAAM,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GACvC,MAAM,IAAI,CAQZ;AAID,iBAAS,IAAI,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAClC,GAAG,IAAI,CAEP;AAGD,iBAAS,MAAM,IAAI,UAAU,EAAE,CAE9B;AAGD,iBAAe,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpD;AAGD,iBAAe,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjD;AAGD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;CAcT,CAAA;AAED,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EACxC,cAAc,EAAE,UAAU,EAAE,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAUA,KAAK,QAAQ,GACT,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,UAAU,GACV,MAAM,CAAA;AAGV,UAAU,cAAc;IAEtB,IAAI,EAAO,QAAQ,GAAG,QAAQ,EAAE,CAAA;IAGhC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAGD,UAAU,cAAc;IAEtB,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAGD,UAAU,cAAc;IAEtB,IAAI,EAAK,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;IAGvD,IAAI,EAAK,MAAM,CAAA;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD,UAAU,UAAU;IAClB,IAAI,EAAM,MAAM,CAAA;IAChB,IAAI,EAAM,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAqBD,iBAAe,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMjD;AAID,iBAAe,KAAK,CAClB,IAAI,EAAK,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAGf;AAID,iBAAe,IAAI,CACjB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAKnC;AAID,iBAAe,IAAI,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAGD,iBAAe,IAAI,CACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAI,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf;AAGD,iBAAe,IAAI,CACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAI,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf;AAGD,iBAAe,MAAM,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAyBf;AAqED,iBAAe,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;AAKD,iBAAS,KAAK,CACZ,IAAI,EAAK,MAAM,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GACvC,MAAM,IAAI,CAQZ;AAID,iBAAS,IAAI,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAClC,GAAG,IAAI,CAEP;AAGD,iBAAS,MAAM,IAAI,UAAU,EAAE,CAE9B;AAGD,iBAAe,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpD;AAGD,iBAAe,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjD;AAGD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;CAcT,CAAA;AAED,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EACxC,cAAc,EAAE,UAAU,EAAE,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -6,6 +6,8 @@
6
6
  // Works on desktop and mobile with platform-appropriate dialogs.
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.File = void 0;
9
+ const fs = require("fs");
10
+ const path = require("path");
9
11
  // Recent files list — max 10
10
12
  const recentFiles = [];
11
13
  // Adds a file to the recent list
@@ -56,9 +58,79 @@ async function move(from, to) {
56
58
  async function copy(from, to) {
57
59
  console.log('[DeskForge File] Copy:', from, '→', to);
58
60
  }
59
- // Renames a file
60
- async function rename(path, newName) {
61
- console.log('[DeskForge File] Rename:', path, '→', newName);
61
+ // Renames a file and updates local imports that reference it
62
+ async function rename(oldPath, newPath) {
63
+ const resolvedOldPath = path.resolve(oldPath);
64
+ const resolvedNewPath = path.resolve(newPath);
65
+ if (!fs.existsSync(resolvedOldPath)) {
66
+ throw new Error(`[DeskForge File] Cannot rename missing file: ${resolvedOldPath}`);
67
+ }
68
+ const parentDir = path.dirname(resolvedNewPath);
69
+ fs.mkdirSync(parentDir, { recursive: true });
70
+ fs.renameSync(resolvedOldPath, resolvedNewPath);
71
+ const workspaceRoot = path.dirname(resolvedOldPath);
72
+ const files = walkFiles(workspaceRoot);
73
+ for (const file of files) {
74
+ const content = fs.readFileSync(file, 'utf8');
75
+ const updated = rewriteImportReferences(content, file, resolvedOldPath, resolvedNewPath);
76
+ if (updated !== content) {
77
+ fs.writeFileSync(file, updated);
78
+ }
79
+ }
80
+ console.log('[DeskForge File] Rename:', oldPath, '→', newPath);
81
+ }
82
+ function walkFiles(root) {
83
+ if (!fs.existsSync(root))
84
+ return [];
85
+ const results = [];
86
+ const stack = [root];
87
+ while (stack.length > 0) {
88
+ const current = stack.pop();
89
+ if (!current)
90
+ continue;
91
+ const entries = fs.readdirSync(current, { withFileTypes: true });
92
+ for (const entry of entries) {
93
+ const fullPath = path.join(current, entry.name);
94
+ if (entry.isDirectory()) {
95
+ stack.push(fullPath);
96
+ }
97
+ else if (entry.isFile() && /\.(ts|tsx|js|jsx|json|md)$/i.test(entry.name)) {
98
+ results.push(fullPath);
99
+ }
100
+ }
101
+ }
102
+ return results;
103
+ }
104
+ function toPosixPath(filePath) {
105
+ return filePath.split(path.sep).join('/');
106
+ }
107
+ function rewriteImportReferences(content, filePath, oldPath, newPath) {
108
+ const fileDir = path.dirname(filePath);
109
+ const oldBase = path.basename(oldPath);
110
+ const newBase = path.basename(newPath);
111
+ const oldBaseNoExt = path.basename(oldPath, path.extname(oldPath));
112
+ const newBaseNoExt = path.basename(newPath, path.extname(newPath));
113
+ const oldRelative = toPosixPath(path.relative(fileDir, oldPath));
114
+ const newRelative = toPosixPath(path.relative(fileDir, newPath));
115
+ const replacements = [
116
+ { from: oldRelative, to: newRelative },
117
+ { from: `./${oldBase}`, to: `./${newBase}` },
118
+ { from: `../${oldBase}`, to: `../${newBase}` },
119
+ { from: `./${oldBaseNoExt}`, to: `./${newBaseNoExt}` },
120
+ { from: `../${oldBaseNoExt}`, to: `../${newBaseNoExt}` },
121
+ { from: oldBase, to: newBase },
122
+ { from: oldBaseNoExt, to: newBaseNoExt },
123
+ ];
124
+ let updated = content;
125
+ for (const { from, to } of replacements) {
126
+ if (from && from !== to) {
127
+ updated = updated.replace(new RegExp(escapeRegExp(from), 'g'), to);
128
+ }
129
+ }
130
+ return updated;
131
+ }
132
+ function escapeRegExp(value) {
133
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
62
134
  }
63
135
  // Deletes a file
64
136
  async function del(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"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"}