trix-ui 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 (115) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +215 -0
  3. package/dist/commands/add-section.d.ts +2 -0
  4. package/dist/commands/add-section.js +94 -0
  5. package/dist/commands/add-section.js.map +1 -0
  6. package/dist/commands/add-wrapper.d.ts +2 -0
  7. package/dist/commands/add-wrapper.js +94 -0
  8. package/dist/commands/add-wrapper.js.map +1 -0
  9. package/dist/commands/add.d.ts +2 -0
  10. package/dist/commands/add.js +53 -0
  11. package/dist/commands/add.js.map +1 -0
  12. package/dist/commands/build.d.ts +2 -0
  13. package/dist/commands/build.js +105 -0
  14. package/dist/commands/build.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +2 -0
  16. package/dist/commands/doctor.js +63 -0
  17. package/dist/commands/doctor.js.map +1 -0
  18. package/dist/commands/init.d.ts +2 -0
  19. package/dist/commands/init.js +44 -0
  20. package/dist/commands/init.js.map +1 -0
  21. package/dist/commands/list-sections.d.ts +2 -0
  22. package/dist/commands/list-sections.js +25 -0
  23. package/dist/commands/list-sections.js.map +1 -0
  24. package/dist/commands/list-wrappers.d.ts +2 -0
  25. package/dist/commands/list-wrappers.js +25 -0
  26. package/dist/commands/list-wrappers.js.map +1 -0
  27. package/dist/commands/list.d.ts +2 -0
  28. package/dist/commands/list.js +20 -0
  29. package/dist/commands/list.js.map +1 -0
  30. package/dist/commands/remove-section.d.ts +2 -0
  31. package/dist/commands/remove-section.js +62 -0
  32. package/dist/commands/remove-section.js.map +1 -0
  33. package/dist/commands/remove-wrapper.d.ts +2 -0
  34. package/dist/commands/remove-wrapper.js +62 -0
  35. package/dist/commands/remove-wrapper.js.map +1 -0
  36. package/dist/commands/remove.d.ts +2 -0
  37. package/dist/commands/remove.js +61 -0
  38. package/dist/commands/remove.js.map +1 -0
  39. package/dist/icons/index.d.ts +1 -0
  40. package/dist/icons/index.js +2 -0
  41. package/dist/icons/index.js.map +1 -0
  42. package/dist/icons/libraries.d.ts +37 -0
  43. package/dist/icons/libraries.js +35 -0
  44. package/dist/icons/libraries.js.map +1 -0
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.js +36 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/lib/config.d.ts +21 -0
  49. package/dist/lib/config.js +61 -0
  50. package/dist/lib/config.js.map +1 -0
  51. package/dist/lib/fs.d.ts +6 -0
  52. package/dist/lib/fs.js +43 -0
  53. package/dist/lib/fs.js.map +1 -0
  54. package/dist/lib/install.d.ts +19 -0
  55. package/dist/lib/install.js +48 -0
  56. package/dist/lib/install.js.map +1 -0
  57. package/dist/lib/lockfile.d.ts +16 -0
  58. package/dist/lib/lockfile.js +44 -0
  59. package/dist/lib/lockfile.js.map +1 -0
  60. package/dist/lib/paths.d.ts +11 -0
  61. package/dist/lib/paths.js +25 -0
  62. package/dist/lib/paths.js.map +1 -0
  63. package/dist/lib/registry.d.ts +26 -0
  64. package/dist/lib/registry.js +20 -0
  65. package/dist/lib/registry.js.map +1 -0
  66. package/dist/schema/index.d.ts +1128 -0
  67. package/dist/schema/index.js +239 -0
  68. package/dist/schema/index.js.map +1 -0
  69. package/dist/styles/create-style-map.d.ts +4 -0
  70. package/dist/styles/create-style-map.js +69 -0
  71. package/dist/styles/create-style-map.js.map +1 -0
  72. package/dist/styles/transform-style-map.d.ts +3 -0
  73. package/dist/styles/transform-style-map.js +429 -0
  74. package/dist/styles/transform-style-map.js.map +1 -0
  75. package/dist/styles/transform.d.ts +10 -0
  76. package/dist/styles/transform.js +16 -0
  77. package/dist/styles/transform.js.map +1 -0
  78. package/dist/utils/index.d.ts +6 -0
  79. package/dist/utils/index.js +6 -0
  80. package/dist/utils/index.js.map +1 -0
  81. package/dist/utils/transformers/transform-icons.d.ts +2 -0
  82. package/dist/utils/transformers/transform-icons.js +165 -0
  83. package/dist/utils/transformers/transform-icons.js.map +1 -0
  84. package/dist/utils/transformers/transform-menu.d.ts +2 -0
  85. package/dist/utils/transformers/transform-menu.js +40 -0
  86. package/dist/utils/transformers/transform-menu.js.map +1 -0
  87. package/dist/utils/transformers/transform-render.d.ts +2 -0
  88. package/dist/utils/transformers/transform-render.js +98 -0
  89. package/dist/utils/transformers/transform-render.js.map +1 -0
  90. package/dist/utils/transformers/types.d.ts +14 -0
  91. package/dist/utils/transformers/types.js +2 -0
  92. package/dist/utils/transformers/types.js.map +1 -0
  93. package/package.json +59 -0
  94. package/registry/index.json +242 -0
  95. package/tailwind.css +95 -0
  96. package/templates/components/ui/badge.tsx +32 -0
  97. package/templates/components/ui/button.tsx +44 -0
  98. package/templates/components/ui/card.tsx +75 -0
  99. package/templates/components/ui/checkbox.tsx +33 -0
  100. package/templates/components/ui/dialog.tsx +92 -0
  101. package/templates/components/ui/dropdown.tsx +75 -0
  102. package/templates/components/ui/input.tsx +23 -0
  103. package/templates/components/ui/select.tsx +24 -0
  104. package/templates/components/ui/switch.tsx +27 -0
  105. package/templates/components/ui/tabs.tsx +50 -0
  106. package/templates/components/ui/textarea.tsx +22 -0
  107. package/templates/components/ui/toast.tsx +100 -0
  108. package/templates/lib/utils.ts +6 -0
  109. package/templates/sections/cta.tsx +22 -0
  110. package/templates/sections/feature-grid.tsx +62 -0
  111. package/templates/sections/hero.tsx +63 -0
  112. package/templates/styles/globals.css +75 -0
  113. package/templates/wrappers/border-wrapper.tsx +34 -0
  114. package/templates/wrappers/glow-wrapper.tsx +31 -0
  115. package/templates/wrappers/lift-wrapper.tsx +27 -0
@@ -0,0 +1,239 @@
1
+ import { z } from "zod";
2
+ // Note: if you edit the schema here, you must also edit the schema in the
3
+ // apps/v4/public/schema/registry-item.json file.
4
+ export const registryConfigItemSchema = z.union([
5
+ // Simple string format: "https://example.com/{name}.json"
6
+ z.string().refine((s) => s.includes("{name}"), {
7
+ message: "Registry URL must include {name} placeholder",
8
+ }),
9
+ // Advanced object format with auth options
10
+ z.object({
11
+ url: z.string().refine((s) => s.includes("{name}"), {
12
+ message: "Registry URL must include {name} placeholder",
13
+ }),
14
+ params: z.record(z.string(), z.string()).optional(),
15
+ headers: z.record(z.string(), z.string()).optional(),
16
+ }),
17
+ ]);
18
+ export const registryConfigSchema = z.record(z.string().refine((key) => key.startsWith("@"), {
19
+ message: "Registry names must start with @ (e.g., @v0, @acme)",
20
+ }), registryConfigItemSchema);
21
+ export const rawConfigSchema = z
22
+ .object({
23
+ $schema: z.string().optional(),
24
+ style: z.string(),
25
+ rsc: z.coerce.boolean().default(false),
26
+ tsx: z.coerce.boolean().default(true),
27
+ tailwind: z.object({
28
+ config: z.string().optional(),
29
+ css: z.string(),
30
+ baseColor: z.string(),
31
+ cssVariables: z.boolean().default(true),
32
+ prefix: z.string().default("").optional(),
33
+ }),
34
+ iconLibrary: z.string().optional(),
35
+ menuColor: z.enum(["default", "inverted"]).default("default").optional(),
36
+ menuAccent: z.enum(["subtle", "bold"]).default("subtle").optional(),
37
+ aliases: z.object({
38
+ components: z.string(),
39
+ utils: z.string(),
40
+ ui: z.string().optional(),
41
+ lib: z.string().optional(),
42
+ hooks: z.string().optional(),
43
+ }),
44
+ registries: registryConfigSchema.optional(),
45
+ })
46
+ .strict();
47
+ const rawConfigSchemaDeepPartial = rawConfigSchema
48
+ .partial()
49
+ .extend({
50
+ tailwind: rawConfigSchema.shape.tailwind.partial().optional(),
51
+ aliases: rawConfigSchema.shape.aliases.partial().optional(),
52
+ });
53
+ export const configSchema = rawConfigSchema.extend({
54
+ resolvedPaths: z.object({
55
+ cwd: z.string(),
56
+ tailwindConfig: z.string(),
57
+ tailwindCss: z.string(),
58
+ utils: z.string(),
59
+ components: z.string(),
60
+ lib: z.string(),
61
+ hooks: z.string(),
62
+ ui: z.string(),
63
+ }),
64
+ });
65
+ // TODO: type the key.
66
+ // Okay for now since I don't want a breaking change.
67
+ export const workspaceConfigSchema = z.record(z.string(), configSchema);
68
+ export const registryItemTypeSchema = z.enum([
69
+ "registry:lib",
70
+ "registry:block",
71
+ "registry:component",
72
+ "registry:ui",
73
+ "registry:hook",
74
+ "registry:page",
75
+ "registry:file",
76
+ "registry:theme",
77
+ "registry:style",
78
+ "registry:item",
79
+ "registry:base",
80
+ "registry:font",
81
+ // Internal use only.
82
+ "registry:example",
83
+ "registry:internal",
84
+ ]);
85
+ export const registryItemFileSchema = z.discriminatedUnion("type", [
86
+ // Target is required for registry:file and registry:page
87
+ z.object({
88
+ path: z.string(),
89
+ content: z.string().optional(),
90
+ type: z.enum(["registry:file", "registry:page"]),
91
+ target: z.string(),
92
+ }),
93
+ z.object({
94
+ path: z.string(),
95
+ content: z.string().optional(),
96
+ type: registryItemTypeSchema.exclude(["registry:file", "registry:page"]),
97
+ target: z.string().optional(),
98
+ }),
99
+ ]);
100
+ export const registryItemTailwindSchema = z.object({
101
+ config: z
102
+ .object({
103
+ content: z.array(z.string()).optional(),
104
+ theme: z.record(z.string(), z.any()).optional(),
105
+ plugins: z.array(z.string()).optional(),
106
+ })
107
+ .optional(),
108
+ });
109
+ export const registryItemCssVarsSchema = z.object({
110
+ theme: z.record(z.string(), z.string()).optional(),
111
+ light: z.record(z.string(), z.string()).optional(),
112
+ dark: z.record(z.string(), z.string()).optional(),
113
+ });
114
+ // Recursive type for CSS properties that supports empty objects at any level.
115
+ const cssValueSchema = z.lazy(() => z.union([
116
+ z.string(),
117
+ z.array(z.union([z.string(), z.record(z.string(), z.string())])),
118
+ z.record(z.string(), cssValueSchema),
119
+ ]));
120
+ export const registryItemCssSchema = z.record(z.string(), cssValueSchema);
121
+ export const registryItemEnvVarsSchema = z.record(z.string(), z.string());
122
+ // Font metadata schema for registry:font items.
123
+ export const registryItemFontSchema = z.object({
124
+ family: z.string(),
125
+ provider: z.literal("google"),
126
+ import: z.string(),
127
+ variable: z.string(),
128
+ weight: z.array(z.string()).optional(),
129
+ subsets: z.array(z.string()).optional(),
130
+ });
131
+ // Common fields shared by all registry items.
132
+ export const registryItemCommonSchema = z.object({
133
+ $schema: z.string().optional(),
134
+ extends: z.string().optional(),
135
+ name: z.string(),
136
+ title: z.string().optional(),
137
+ author: z.string().min(2).optional(),
138
+ description: z.string().optional(),
139
+ dependencies: z.array(z.string()).optional(),
140
+ devDependencies: z.array(z.string()).optional(),
141
+ registryDependencies: z.array(z.string()).optional(),
142
+ files: z.array(registryItemFileSchema).optional(),
143
+ tailwind: registryItemTailwindSchema.optional(),
144
+ cssVars: registryItemCssVarsSchema.optional(),
145
+ css: registryItemCssSchema.optional(),
146
+ envVars: registryItemEnvVarsSchema.optional(),
147
+ meta: z.record(z.string(), z.any()).optional(),
148
+ docs: z.string().optional(),
149
+ categories: z.array(z.string()).optional(),
150
+ });
151
+ // registry:base has a config field, registry:font has a font field.
152
+ export const registryItemSchema = z.discriminatedUnion("type", [
153
+ registryItemCommonSchema.extend({
154
+ type: z.literal("registry:base"),
155
+ config: rawConfigSchemaDeepPartial.optional(),
156
+ }),
157
+ registryItemCommonSchema.extend({
158
+ type: z.literal("registry:font"),
159
+ font: registryItemFontSchema,
160
+ }),
161
+ registryItemCommonSchema.extend({
162
+ type: registryItemTypeSchema.exclude(["registry:base", "registry:font"]),
163
+ }),
164
+ ]);
165
+ export const registrySchema = z.object({
166
+ name: z.string(),
167
+ homepage: z.string(),
168
+ items: z.array(registryItemSchema),
169
+ });
170
+ export const registryIndexSchema = z.array(registryItemSchema);
171
+ export const stylesSchema = z.array(z.object({
172
+ name: z.string(),
173
+ label: z.string(),
174
+ }));
175
+ export const iconsSchema = z.record(z.string(), z.record(z.string(), z.string()));
176
+ export const registryBaseColorSchema = z.object({
177
+ inlineColors: z.object({
178
+ light: z.record(z.string(), z.string()),
179
+ dark: z.record(z.string(), z.string()),
180
+ }),
181
+ cssVars: registryItemCssVarsSchema,
182
+ cssVarsV4: registryItemCssVarsSchema.optional(),
183
+ inlineColorsTemplate: z.string(),
184
+ cssVarsTemplate: z.string(),
185
+ });
186
+ export const registryResolvedItemsTreeSchema = registryItemCommonSchema
187
+ .pick({
188
+ dependencies: true,
189
+ devDependencies: true,
190
+ files: true,
191
+ tailwind: true,
192
+ cssVars: true,
193
+ css: true,
194
+ envVars: true,
195
+ docs: true,
196
+ })
197
+ .extend({
198
+ fonts: z
199
+ .array(registryItemCommonSchema.extend({
200
+ type: z.literal("registry:font"),
201
+ font: registryItemFontSchema,
202
+ }))
203
+ .optional(),
204
+ });
205
+ export const searchResultItemSchema = z.object({
206
+ name: z.string(),
207
+ type: z.string().optional(),
208
+ description: z.string().optional(),
209
+ registry: z.string(),
210
+ addCommandArgument: z.string(),
211
+ });
212
+ export const searchResultsSchema = z.object({
213
+ pagination: z.object({
214
+ total: z.number(),
215
+ offset: z.number(),
216
+ limit: z.number(),
217
+ hasMore: z.boolean(),
218
+ }),
219
+ items: z.array(searchResultItemSchema),
220
+ });
221
+ export const registriesIndexSchema = z.record(z.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/), z.string());
222
+ export const presetSchema = z.object({
223
+ name: z.string(),
224
+ title: z.string(),
225
+ description: z.string(),
226
+ base: z.string(),
227
+ style: z.string(),
228
+ baseColor: z.string(),
229
+ theme: z.string(),
230
+ iconLibrary: z.string(),
231
+ font: z.string(),
232
+ menuAccent: z.enum(["subtle", "bold"]),
233
+ menuColor: z.enum(["default", "inverted"]),
234
+ radius: z.string(),
235
+ });
236
+ export const configJsonSchema = z.object({
237
+ presets: z.array(presetSchema),
238
+ });
239
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { z } from "zod";
2
+ export declare const styleMapSchema: z.ZodRecord<z.ZodString, z.ZodString>;
3
+ export type StyleMap = z.infer<typeof styleMapSchema>;
4
+ export declare function createStyleMap(input: string): Record<string, string>;
@@ -0,0 +1,69 @@
1
+ import postcss from "postcss";
2
+ import selectorParser from "postcss-selector-parser";
3
+ import { z } from "zod";
4
+ const CN_PREFIX = "cn-";
5
+ export const styleMapSchema = z.record(z.string().startsWith(CN_PREFIX), z.string());
6
+ export function createStyleMap(input) {
7
+ const root = postcss.parse(input);
8
+ const result = {};
9
+ root.walkRules((rule) => {
10
+ const selectors = rule.selectors ?? [];
11
+ if (selectors.length === 0) {
12
+ return;
13
+ }
14
+ const tailwindClasses = extractTailwindClasses(rule);
15
+ if (!tailwindClasses) {
16
+ return;
17
+ }
18
+ for (const selector of selectors) {
19
+ const normalizedSelector = normalizeSelector(selector);
20
+ selectorParser((selectorsRoot) => {
21
+ selectorsRoot.each((sel) => {
22
+ const targetClass = findSubjectClass(sel);
23
+ if (!targetClass) {
24
+ return;
25
+ }
26
+ const className = targetClass.value;
27
+ if (!className.startsWith(CN_PREFIX)) {
28
+ return;
29
+ }
30
+ result[className] = result[className]
31
+ ? `${tailwindClasses} ${result[className]}`
32
+ : tailwindClasses;
33
+ });
34
+ }).processSync(normalizedSelector);
35
+ }
36
+ });
37
+ return styleMapSchema.parse(result);
38
+ }
39
+ function normalizeSelector(selector) {
40
+ return selector.replace(/\s*&\s*/g, "").trim();
41
+ }
42
+ function extractTailwindClasses(rule) {
43
+ const classes = [];
44
+ for (const node of rule.nodes || []) {
45
+ if (node.type === "atrule" && node.name === "apply") {
46
+ const value = node.params.trim();
47
+ if (value) {
48
+ classes.push(value);
49
+ }
50
+ }
51
+ }
52
+ if (classes.length === 0) {
53
+ return null;
54
+ }
55
+ return classes.join(" ");
56
+ }
57
+ function findSubjectClass(selector) {
58
+ const classNodes = [];
59
+ selector.walkClasses((classNode) => {
60
+ if (classNode.value.startsWith(CN_PREFIX)) {
61
+ classNodes.push(classNode);
62
+ }
63
+ });
64
+ if (classNodes.length === 0) {
65
+ return null;
66
+ }
67
+ return classNodes[classNodes.length - 1];
68
+ }
69
+ //# sourceMappingURL=create-style-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-style-map.js","sourceRoot":"","sources":["../../src/styles/create-style-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { TransformerStyle } from "./transform.js";
2
+ import { type SourceFile } from "ts-morph";
3
+ export declare const transformStyleMap: TransformerStyle<SourceFile>;