@zseven-w/pen-sdk 0.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 (3) hide show
  1. package/README.md +56 -0
  2. package/package.json +28 -0
  3. package/src/index.ts +195 -0
package/README.md ADDED
@@ -0,0 +1,56 @@
1
+ # @zseven-w/pen-sdk
2
+
3
+ The umbrella SDK for [OpenPencil](https://github.com/nicepkg/openpencil). One import gives you everything — types, document operations, code generation, Figma import, and rendering.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @zseven-w/pen-sdk
9
+ ```
10
+
11
+ ## What's Included
12
+
13
+ This package re-exports all OpenPencil packages:
14
+
15
+ | Package | Provides |
16
+ |---|---|
17
+ | `@zseven-w/pen-types` | TypeScript types for the document model |
18
+ | `@zseven-w/pen-core` | Tree operations, layout engine, variables, boolean ops |
19
+ | `@zseven-w/pen-codegen` | Code generators (React, HTML, Vue, Svelte, Flutter, SwiftUI, Compose, RN) |
20
+ | `@zseven-w/pen-figma` | Figma `.fig` parser and converter |
21
+ | `@zseven-w/pen-renderer` | CanvasKit/Skia GPU renderer |
22
+
23
+ ## Usage
24
+
25
+ ```ts
26
+ import {
27
+ // Types
28
+ type PenDocument,
29
+ type PenNode,
30
+
31
+ // Document operations
32
+ createEmptyDocument,
33
+ findNodeInTree,
34
+ insertNodeInTree,
35
+ normalizePenDocument,
36
+
37
+ // Code generation
38
+ generateReactFromDocument,
39
+ generateHTMLFromDocument,
40
+ generateFlutterFromDocument,
41
+
42
+ // Figma import
43
+ parseFigFile,
44
+ figmaAllPagesToPenDocument,
45
+
46
+ // Rendering
47
+ loadCanvasKit,
48
+ PenRenderer,
49
+ } from '@zseven-w/pen-sdk'
50
+ ```
51
+
52
+ Or install individual packages for smaller bundles — see each package's README for details.
53
+
54
+ ## License
55
+
56
+ MIT
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@zseven-w/pen-sdk",
3
+ "version": "0.0.1",
4
+ "description": "OpenPencil SDK — parse, manipulate, and generate code from .op design files",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./src/index.ts",
9
+ "import": "./src/index.ts"
10
+ }
11
+ },
12
+ "files": [
13
+ "src"
14
+ ],
15
+ "scripts": {
16
+ "typecheck": "tsc --noEmit"
17
+ },
18
+ "dependencies": {
19
+ "@zseven-w/pen-types": "0.0.1",
20
+ "@zseven-w/pen-core": "0.0.1",
21
+ "@zseven-w/pen-codegen": "0.0.1",
22
+ "@zseven-w/pen-figma": "0.0.1",
23
+ "@zseven-w/pen-renderer": "0.0.1"
24
+ },
25
+ "devDependencies": {
26
+ "typescript": "^5.7.2"
27
+ }
28
+ }
package/src/index.ts ADDED
@@ -0,0 +1,195 @@
1
+ /**
2
+ * @zseven-w/pen-sdk — OpenPencil SDK
3
+ *
4
+ * High-level API for working with OpenPencil (.op) design files.
5
+ * Combines types, document operations, code generation, and Figma import.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import {
10
+ * type PenDocument,
11
+ * createEmptyDocument,
12
+ * normalizePenDocument,
13
+ * generateReactFromDocument,
14
+ * parseFigFile,
15
+ * } from '@zseven-w/pen-sdk'
16
+ * ```
17
+ */
18
+
19
+ // ── Types ──────────────────────────────────────────────────────────────
20
+ export type {
21
+ // Document model
22
+ PenDocument,
23
+ PenNode,
24
+ PenNodeType,
25
+ PenPage,
26
+ PenNodeBase,
27
+ ContainerProps,
28
+ SizingBehavior,
29
+ FrameNode,
30
+ GroupNode,
31
+ RectangleNode,
32
+ EllipseNode,
33
+ LineNode,
34
+ PolygonNode,
35
+ PathNode,
36
+ TextNode,
37
+ ImageNode,
38
+ ImageFitMode,
39
+ IconFontNode,
40
+ RefNode,
41
+ // Styles
42
+ PenFill,
43
+ PenStroke,
44
+ PenEffect,
45
+ SolidFill,
46
+ LinearGradientFill,
47
+ RadialGradientFill,
48
+ ImageFill,
49
+ GradientStop,
50
+ BlendMode,
51
+ BlurEffect,
52
+ ShadowEffect,
53
+ StyledTextSegment,
54
+ // Variables
55
+ VariableDefinition,
56
+ VariableValue,
57
+ ThemedValue,
58
+ // Canvas
59
+ ToolType,
60
+ ViewportState,
61
+ // UIKit
62
+ UIKit,
63
+ KitComponent,
64
+ ComponentCategory,
65
+ // Theme presets
66
+ ThemePreset,
67
+ ThemePresetFile,
68
+ } from '@zseven-w/pen-types'
69
+
70
+ // ── Core: Document operations ──────────────────────────────────────────
71
+ export {
72
+ // ID generation
73
+ generateId,
74
+ // Document creation & tree operations
75
+ createEmptyDocument,
76
+ DEFAULT_FRAME_ID,
77
+ DEFAULT_PAGE_ID,
78
+ findNodeInTree,
79
+ findParentInTree,
80
+ removeNodeFromTree,
81
+ updateNodeInTree,
82
+ flattenNodes,
83
+ insertNodeInTree,
84
+ isDescendantOf,
85
+ getNodeBounds,
86
+ // Page operations
87
+ getActivePage,
88
+ getActivePageChildren,
89
+ setActivePageChildren,
90
+ getAllChildren,
91
+ migrateToPages,
92
+ ensureDocumentNodeIds,
93
+ // Variables
94
+ isVariableRef,
95
+ getDefaultTheme,
96
+ resolveVariableRef,
97
+ resolveColorRef,
98
+ resolveNumericRef,
99
+ resolveNodeForCanvas,
100
+ replaceVariableRefsInTree,
101
+ // Normalization
102
+ normalizePenDocument,
103
+ // Layout
104
+ type Padding,
105
+ resolvePadding,
106
+ computeLayoutPositions,
107
+ getNodeWidth,
108
+ getNodeHeight,
109
+ inferLayout,
110
+ // Text measurement
111
+ parseSizing,
112
+ defaultLineHeight,
113
+ estimateTextWidth,
114
+ estimateTextHeight,
115
+ resolveTextContent,
116
+ hasCjkText,
117
+ // Arc path
118
+ buildEllipseArcPath,
119
+ isArcEllipse,
120
+ // Boolean operations
121
+ type BooleanOpType,
122
+ canBooleanOp,
123
+ executeBooleanOp,
124
+ } from '@zseven-w/pen-core'
125
+
126
+ // ── Codegen: Multi-platform code generation ────────────────────────────
127
+ export {
128
+ // CSS Variables
129
+ variableNameToCSS,
130
+ generateCSSVariables,
131
+ // React + Tailwind
132
+ generateReactCode,
133
+ generateReactFromDocument,
134
+ // HTML + CSS
135
+ generateHTMLCode,
136
+ generateHTMLFromDocument,
137
+ // Vue 3
138
+ generateVueCode,
139
+ generateVueFromDocument,
140
+ // Svelte
141
+ generateSvelteCode,
142
+ generateSvelteFromDocument,
143
+ // Flutter
144
+ generateFlutterCode,
145
+ generateFlutterFromDocument,
146
+ // SwiftUI
147
+ generateSwiftUICode,
148
+ generateSwiftUIFromDocument,
149
+ // Android Compose
150
+ generateComposeCode,
151
+ generateComposeFromDocument,
152
+ // React Native
153
+ generateReactNativeCode,
154
+ generateReactNativeFromDocument,
155
+ } from '@zseven-w/pen-codegen'
156
+
157
+ // ── Figma: .fig file import ────────────────────────────────────────────
158
+ export {
159
+ parseFigFile,
160
+ figmaToPenDocument,
161
+ figmaAllPagesToPenDocument,
162
+ getFigmaPages,
163
+ figmaNodeChangesToPenNodes,
164
+ isFigmaClipboardHtml,
165
+ extractFigmaClipboardData,
166
+ figmaClipboardToNodes,
167
+ resolveImageBlobs,
168
+ setIconLookup,
169
+ type FigmaDecodedFile,
170
+ type FigmaImportLayoutMode,
171
+ } from '@zseven-w/pen-figma'
172
+
173
+ // ── Renderer: CanvasKit/Skia rendering engine ────────────────────────
174
+ export {
175
+ // Primary API
176
+ loadCanvasKit,
177
+ PenRenderer,
178
+ // Low-level
179
+ SkiaNodeRenderer,
180
+ SkiaFontManager,
181
+ SkiaImageLoader,
182
+ SpatialIndex,
183
+ flattenToRenderNodes,
184
+ resolveRefs,
185
+ premeasureTextHeights,
186
+ // Viewport
187
+ viewportMatrix,
188
+ screenToScene,
189
+ sceneToScreen,
190
+ zoomToPoint,
191
+ // Types
192
+ type RenderNode,
193
+ type PenRendererOptions,
194
+ type IconLookupFn,
195
+ } from '@zseven-w/pen-renderer'