@tscircuit/props 0.0.447 → 0.0.449

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.
@@ -0,0 +1,174 @@
1
+ import { distance, rotation } from "circuit-json"
2
+ import { expectTypesMatch } from "lib/typecheck"
3
+ import { z } from "zod"
4
+ import { point } from "./point"
5
+ import { point3 } from "./point3"
6
+
7
+ export interface KicadAt {
8
+ x: number | string
9
+ y: number | string
10
+ rotation?: number | string
11
+ }
12
+
13
+ export const kicadAt = point.extend({
14
+ rotation: rotation.optional(),
15
+ })
16
+
17
+ type InferredKicadAt = z.input<typeof kicadAt>
18
+ expectTypesMatch<KicadAt, InferredKicadAt>(true)
19
+
20
+ export interface KicadFont {
21
+ size?: { x: number | string; y: number | string }
22
+ thickness?: number | string
23
+ }
24
+
25
+ export const kicadFont = z.object({
26
+ size: point.optional(),
27
+ thickness: distance.optional(),
28
+ })
29
+
30
+ type InferredKicadFont = z.input<typeof kicadFont>
31
+ expectTypesMatch<KicadFont, InferredKicadFont>(true)
32
+
33
+ export interface KicadEffects {
34
+ font?: KicadFont
35
+ }
36
+
37
+ export const kicadEffects = z.object({
38
+ font: kicadFont.optional(),
39
+ })
40
+
41
+ type InferredKicadEffects = z.input<typeof kicadEffects>
42
+ expectTypesMatch<KicadEffects, InferredKicadEffects>(true)
43
+
44
+ export interface KicadProperty {
45
+ value: string
46
+ at?: KicadAt
47
+ layer?: string
48
+ uuid?: string
49
+ hide?: boolean
50
+ effects?: KicadEffects
51
+ }
52
+
53
+ export const kicadProperty = z.object({
54
+ value: z.string(),
55
+ at: kicadAt.optional(),
56
+ layer: z.string().optional(),
57
+ uuid: z.string().optional(),
58
+ hide: z.boolean().optional(),
59
+ effects: kicadEffects.optional(),
60
+ })
61
+
62
+ type InferredKicadProperty = z.input<typeof kicadProperty>
63
+ expectTypesMatch<KicadProperty, InferredKicadProperty>(true)
64
+
65
+ export interface KicadFootprintProperties {
66
+ Reference?: KicadProperty
67
+ Value?: KicadProperty
68
+ Datasheet?: KicadProperty
69
+ Description?: KicadProperty
70
+ }
71
+
72
+ export const kicadFootprintProperties = z.object({
73
+ Reference: kicadProperty.optional(),
74
+ Value: kicadProperty.optional(),
75
+ Datasheet: kicadProperty.optional(),
76
+ Description: kicadProperty.optional(),
77
+ })
78
+
79
+ type InferredKicadFootprintProperties = z.input<typeof kicadFootprintProperties>
80
+ expectTypesMatch<KicadFootprintProperties, InferredKicadFootprintProperties>(
81
+ true,
82
+ )
83
+
84
+ export interface KicadFootprintAttributes {
85
+ through_hole?: boolean
86
+ smd?: boolean
87
+ exclude_from_pos_files?: boolean
88
+ exclude_from_bom?: boolean
89
+ }
90
+
91
+ export const kicadFootprintAttributes = z.object({
92
+ through_hole: z.boolean().optional(),
93
+ smd: z.boolean().optional(),
94
+ exclude_from_pos_files: z.boolean().optional(),
95
+ exclude_from_bom: z.boolean().optional(),
96
+ })
97
+
98
+ type InferredKicadFootprintAttributes = z.input<typeof kicadFootprintAttributes>
99
+ expectTypesMatch<KicadFootprintAttributes, InferredKicadFootprintAttributes>(
100
+ true,
101
+ )
102
+
103
+ export interface KicadFootprintPad {
104
+ name: string
105
+ type: string
106
+ shape?: string
107
+ at?: KicadAt
108
+ size?: { x: number | string; y: number | string }
109
+ drill?: number | string
110
+ layers?: string[]
111
+ removeUnusedLayers?: boolean
112
+ uuid?: string
113
+ }
114
+
115
+ export const kicadFootprintPad = z.object({
116
+ name: z.string(),
117
+ type: z.string(),
118
+ shape: z.string().optional(),
119
+ at: kicadAt.optional(),
120
+ size: point.optional(),
121
+ drill: distance.optional(),
122
+ layers: z.array(z.string()).optional(),
123
+ removeUnusedLayers: z.boolean().optional(),
124
+ uuid: z.string().optional(),
125
+ })
126
+
127
+ type InferredKicadFootprintPad = z.input<typeof kicadFootprintPad>
128
+ expectTypesMatch<KicadFootprintPad, InferredKicadFootprintPad>(true)
129
+
130
+ export interface KicadFootprintModel {
131
+ path: string
132
+ offset?: { x: number | string; y: number | string; z: number | string }
133
+ scale?: { x: number | string; y: number | string; z: number | string }
134
+ rotate?: { x: number | string; y: number | string; z: number | string }
135
+ }
136
+
137
+ export const kicadFootprintModel = z.object({
138
+ path: z.string(),
139
+ offset: point3.optional(),
140
+ scale: point3.optional(),
141
+ rotate: point3.optional(),
142
+ })
143
+
144
+ type InferredKicadFootprintModel = z.input<typeof kicadFootprintModel>
145
+ expectTypesMatch<KicadFootprintModel, InferredKicadFootprintModel>(true)
146
+
147
+ export interface KicadFootprintMetadata {
148
+ footprintName?: string
149
+ version?: number | string
150
+ generator?: string
151
+ generatorVersion?: number | string
152
+ layer?: string
153
+ properties?: KicadFootprintProperties
154
+ attributes?: KicadFootprintAttributes
155
+ pads?: KicadFootprintPad[]
156
+ embeddedFonts?: boolean
157
+ model?: KicadFootprintModel
158
+ }
159
+
160
+ export const kicadFootprintMetadata = z.object({
161
+ footprintName: z.string().optional(),
162
+ version: z.union([z.number(), z.string()]).optional(),
163
+ generator: z.string().optional(),
164
+ generatorVersion: z.union([z.number(), z.string()]).optional(),
165
+ layer: z.string().optional(),
166
+ properties: kicadFootprintProperties.optional(),
167
+ attributes: kicadFootprintAttributes.optional(),
168
+ pads: z.array(kicadFootprintPad).optional(),
169
+ embeddedFonts: z.boolean().optional(),
170
+ model: kicadFootprintModel.optional(),
171
+ })
172
+
173
+ type InferredKicadFootprintMetadata = z.input<typeof kicadFootprintMetadata>
174
+ expectTypesMatch<KicadFootprintMetadata, InferredKicadFootprintMetadata>(true)
@@ -0,0 +1,115 @@
1
+ import { distance } from "circuit-json"
2
+ import { expectTypesMatch } from "lib/typecheck"
3
+ import { z } from "zod"
4
+ import {
5
+ kicadAt,
6
+ kicadFont,
7
+ type KicadAt,
8
+ type KicadFont,
9
+ } from "./kicadFootprintMetadata"
10
+
11
+ export interface KicadSymbolPinNumbers {
12
+ hide?: boolean
13
+ }
14
+
15
+ export const kicadSymbolPinNumbers = z.object({
16
+ hide: z.boolean().optional(),
17
+ })
18
+
19
+ type InferredKicadSymbolPinNumbers = z.input<typeof kicadSymbolPinNumbers>
20
+ expectTypesMatch<KicadSymbolPinNumbers, InferredKicadSymbolPinNumbers>(true)
21
+
22
+ export interface KicadSymbolPinNames {
23
+ offset?: number | string
24
+ hide?: boolean
25
+ }
26
+
27
+ export const kicadSymbolPinNames = z.object({
28
+ offset: distance.optional(),
29
+ hide: z.boolean().optional(),
30
+ })
31
+
32
+ type InferredKicadSymbolPinNames = z.input<typeof kicadSymbolPinNames>
33
+ expectTypesMatch<KicadSymbolPinNames, InferredKicadSymbolPinNames>(true)
34
+
35
+ export interface KicadSymbolEffects {
36
+ font?: KicadFont
37
+ justify?: string | string[]
38
+ hide?: boolean
39
+ }
40
+
41
+ export const kicadSymbolEffects = z.object({
42
+ font: kicadFont.optional(),
43
+ justify: z.union([z.string(), z.array(z.string())]).optional(),
44
+ hide: z.boolean().optional(),
45
+ })
46
+
47
+ type InferredKicadSymbolEffects = z.input<typeof kicadSymbolEffects>
48
+ expectTypesMatch<KicadSymbolEffects, InferredKicadSymbolEffects>(true)
49
+
50
+ export interface KicadSymbolProperty {
51
+ value: string
52
+ id?: number | string
53
+ at?: KicadAt
54
+ effects?: KicadSymbolEffects
55
+ }
56
+
57
+ export const kicadSymbolProperty = z.object({
58
+ value: z.string(),
59
+ id: z.union([z.number(), z.string()]).optional(),
60
+ at: kicadAt.optional(),
61
+ effects: kicadSymbolEffects.optional(),
62
+ })
63
+
64
+ type InferredKicadSymbolProperty = z.input<typeof kicadSymbolProperty>
65
+ expectTypesMatch<KicadSymbolProperty, InferredKicadSymbolProperty>(true)
66
+
67
+ export interface KicadSymbolProperties {
68
+ Reference?: KicadSymbolProperty
69
+ Value?: KicadSymbolProperty
70
+ Footprint?: KicadSymbolProperty
71
+ Datasheet?: KicadSymbolProperty
72
+ Description?: KicadSymbolProperty
73
+ ki_keywords?: KicadSymbolProperty
74
+ ki_fp_filters?: KicadSymbolProperty
75
+ }
76
+
77
+ export const kicadSymbolProperties = z.object({
78
+ Reference: kicadSymbolProperty.optional(),
79
+ Value: kicadSymbolProperty.optional(),
80
+ Footprint: kicadSymbolProperty.optional(),
81
+ Datasheet: kicadSymbolProperty.optional(),
82
+ Description: kicadSymbolProperty.optional(),
83
+ ki_keywords: kicadSymbolProperty.optional(),
84
+ ki_fp_filters: kicadSymbolProperty.optional(),
85
+ })
86
+
87
+ type InferredKicadSymbolProperties = z.input<typeof kicadSymbolProperties>
88
+ expectTypesMatch<KicadSymbolProperties, InferredKicadSymbolProperties>(true)
89
+
90
+ export interface KicadSymbolMetadata {
91
+ symbolName?: string
92
+ extends?: string
93
+ pinNumbers?: KicadSymbolPinNumbers
94
+ pinNames?: KicadSymbolPinNames
95
+ excludeFromSim?: boolean
96
+ inBom?: boolean
97
+ onBoard?: boolean
98
+ properties?: KicadSymbolProperties
99
+ embeddedFonts?: boolean
100
+ }
101
+
102
+ export const kicadSymbolMetadata = z.object({
103
+ symbolName: z.string().optional(),
104
+ extends: z.string().optional(),
105
+ pinNumbers: kicadSymbolPinNumbers.optional(),
106
+ pinNames: kicadSymbolPinNames.optional(),
107
+ excludeFromSim: z.boolean().optional(),
108
+ inBom: z.boolean().optional(),
109
+ onBoard: z.boolean().optional(),
110
+ properties: kicadSymbolProperties.optional(),
111
+ embeddedFonts: z.boolean().optional(),
112
+ })
113
+
114
+ type InferredKicadSymbolMetadata = z.input<typeof kicadSymbolMetadata>
115
+ expectTypesMatch<KicadSymbolMetadata, InferredKicadSymbolMetadata>(true)
@@ -10,6 +10,14 @@ import { pcbCoordinate } from "./distance"
10
10
  import { z } from "zod"
11
11
  import { type CadModelProp, cadModelProp } from "./cadModel"
12
12
  import { type FootprintProp, footprintProp } from "./footprintProp"
13
+ import {
14
+ type KicadFootprintMetadata,
15
+ kicadFootprintMetadata,
16
+ } from "./kicadFootprintMetadata"
17
+ import {
18
+ type KicadSymbolMetadata,
19
+ kicadSymbolMetadata,
20
+ } from "./kicadSymbolMetadata"
13
21
  import { pcbStyle, type PcbStyle } from "./pcbStyle"
14
22
  import { schStyle, type SchStyle } from "./schStyle"
15
23
  import { type SymbolProp, symbolProp } from "./symbolProp"
@@ -248,6 +256,8 @@ export interface CommonComponentProps<PinLabel extends string = string>
248
256
  pinAttributes?: Record<PinLabel, PinAttributeMap>
249
257
  supplierPartNumbers?: SupplierPartNumbers
250
258
  cadModel?: CadModelProp
259
+ kicadFootprintMetadata?: KicadFootprintMetadata
260
+ kicadSymbolMetadata?: KicadSymbolMetadata
251
261
  children?: any
252
262
  symbolName?: string
253
263
  doNotPlace?: boolean
@@ -271,6 +281,8 @@ export const commonComponentProps = commonLayoutProps
271
281
  displayName: z.string().optional(),
272
282
  datasheetUrl: z.string().optional(),
273
283
  cadModel: cadModelProp.optional(),
284
+ kicadFootprintMetadata: kicadFootprintMetadata.optional(),
285
+ kicadSymbolMetadata: kicadSymbolMetadata.optional(),
274
286
  children: z.any().optional(),
275
287
  symbolName: z.string().optional(),
276
288
  doNotPlace: z.boolean().optional(),
package/lib/index.ts CHANGED
@@ -14,6 +14,8 @@ export * from "./common/schematicPinStyle"
14
14
  export * from "./common/cadModel"
15
15
  export * from "./common/schematicPinLabel"
16
16
  export * from "./common/schematicSize"
17
+ export * from "./common/kicadFootprintMetadata"
18
+ export * from "./common/kicadSymbolMetadata"
17
19
 
18
20
  export * from "./components/board"
19
21
  export * from "./components/panel"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/props",
3
- "version": "0.0.447",
3
+ "version": "0.0.449",
4
4
  "description": "Props for tscircuit builtin component types",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",