@svadmin/create 0.40.3 → 0.41.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.
@@ -4,6 +4,17 @@ Read `DESIGN.md` before creating, revising, or reviewing any UI. It is the
4
4
  authority for visual language, page hierarchy, feedback ownership, and
5
5
  acceptance checks in this project.
6
6
 
7
+ ## Product-first generation
8
+
9
+ Read `PRODUCT.md` before converting a schema, API, or feature list into pages. Build the product brief, workflows, resources, actions, surfaces, and menu in that order. Resources are data contracts; they are not automatic pages or menu entries.
10
+
11
+ - Keep one primary purpose and one dominant next action per surface.
12
+ - Give every core workflow a serving surface or contextual entry.
13
+ - Declare loading, empty, error, forbidden, and success states before writing markup.
14
+ - Menu count is determined by actual business needs. Never apply a fixed global cap; use roles, task frequency, placement, grouping, and context to keep it legible.
15
+ - Run `svadmin vibe review ./svadmin.product.json` before generating UI and `svadmin vibe plan ./svadmin.product.json --role <role-id>` to inspect role-specific navigation.
16
+ - Treat review warnings as prompts for product judgment. Do not silently delete business-required workflows or menu entries to make a count pass.
17
+
7
18
  ## Platform entrypoints
8
19
 
9
20
  Before generating or modifying application code, read these stable files
@@ -0,0 +1,29 @@
1
+ # Product-first generation rules
2
+
3
+ svadmin generates an admin application from business decisions, not from a raw resource list. Read this file before turning an API, database schema, or feature request into UI.
4
+
5
+ ## Decision order
6
+
7
+ 1. Write the product brief: primary outcome, audience, constraints, non-goals, and assumptions.
8
+ 2. List the real workflows in actor language. Each core workflow needs a trigger, goal, steps, success criteria, exceptions, priority, and frequency.
9
+ 3. Register resources as data contracts. A resource can be contextual or internal; it does not automatically become a page or menu item.
10
+ 4. Define actions with an owning workflow and role visibility.
11
+ 5. Define surfaces by purpose. Keep one primary action per surface, declare empty/loading/error/forbidden/success states, and move secondary actions into context or More.
12
+ 6. Define menu nodes last. Every node should point to a workflow, resource, or surface and declare the roles that need it.
13
+
14
+ ## Menu policy
15
+
16
+ There is no fixed menu-count limit. A small product may need one entry; a large operational product may need many. Do not delete business-required entries to satisfy an arbitrary count. Use role visibility, workflow frequency, placement, grouping, and contextual entries to keep the navigation legible. Backend authorization remains authoritative; menu visibility is only a UI hint.
17
+
18
+ ## CLI review loop
19
+
20
+ Store the plan as JSON using schema version `product/v1`, then run:
21
+
22
+ - `svadmin vibe review ./svadmin.product.json` to report orphan resources, unserved workflows, unknown references, missing states, and dense surfaces.
23
+ - `svadmin vibe plan ./svadmin.product.json --role operator` to inspect the role-specific menu and generated page plans.
24
+
25
+ Fix product review errors before generating Svelte markup. Warnings are review prompts, not automatic page deletion rules.
26
+
27
+ ## Visual acceptance
28
+
29
+ Generated pages must have one clear purpose, one dominant next action, and an explicit state contract. Prefer the existing `@svadmin/ui` page families and semantic tokens. Inspect long labels, dense tables, empty results, denied permissions, failures, and mobile layouts before accepting the result.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@svadmin/create",
3
- "version": "0.40.3",
3
+ "version": "0.41.1",
4
4
  "description": "Scaffolding tool for svadmin projects",
5
5
  "type": "module",
6
6
  "bin": {
@@ -30,7 +30,7 @@
30
30
  "@types/node": "^26.4.0",
31
31
  "@types/prompts": "^2.4.9",
32
32
  "typescript": "^7.0.2",
33
- "@svadmin/core": "^0.60.0"
33
+ "@svadmin/core": "^0.61.1"
34
34
  },
35
35
  "keywords": [
36
36
  "svadmin",
@@ -10,10 +10,10 @@
10
10
  "check": "svelte-check --tsconfig ./tsconfig.json"
11
11
  },
12
12
  "dependencies": {
13
- "@svadmin/core": "^0.60.0",
14
- "@svadmin/app": "^0.2.3",
15
- "@svadmin/ai-elements": "^0.11.1",
16
- "@svadmin/ui": "^0.83.2",
13
+ "@svadmin/core": "^0.61.1",
14
+ "@svadmin/app": "^0.2.5",
15
+ "@svadmin/ai-elements": "^0.11.3",
16
+ "@svadmin/ui": "^0.84.1",
17
17
  "typebox": "^1.3.34",
18
18
  "@tanstack/svelte-query": "^6.1.48",
19
19
  "@lucide/svelte": "^1.35.0"
@@ -42,76 +42,76 @@
42
42
  "graphql": "^16.8.0"
43
43
  },
44
44
  "simple-rest": {
45
- "@svadmin/simple-rest": "^0.12.4",
45
+ "@svadmin/simple-rest": "^0.12.6",
46
46
  "@refinedev/simple-rest": "^6.0.1"
47
47
  },
48
48
  "supabase": {
49
- "@svadmin/supabase": "^0.19.1",
49
+ "@svadmin/supabase": "^0.19.3",
50
50
  "@supabase/supabase-js": "^2.112.4",
51
51
  "@refinedev/supabase": "^6.0.2"
52
52
  },
53
53
  "graphql": {
54
- "@svadmin/graphql": "^0.12.4",
54
+ "@svadmin/graphql": "^0.12.6",
55
55
  "@refinedev/graphql": "^8.0.1",
56
56
  "graphql-request": "^7.4.0",
57
57
  "graphql": "^16.8.0"
58
58
  },
59
59
  "rest": {
60
- "@svadmin/rest": "^0.2.3",
60
+ "@svadmin/rest": "^0.2.5",
61
61
  "@refinedev/rest": "^2.1.1",
62
62
  "@nestjsx/crud-request": "^5.0.0-alpha.3"
63
63
  },
64
64
  "airtable": {
65
- "@svadmin/airtable": "^0.12.4",
65
+ "@svadmin/airtable": "^0.12.6",
66
66
  "@refinedev/airtable": "^5.0.1"
67
67
  },
68
68
  "appwrite": {
69
- "@svadmin/appwrite": "^0.11.4",
69
+ "@svadmin/appwrite": "^0.11.6",
70
70
  "appwrite": ">=26.2.0",
71
71
  "@refinedev/appwrite": "^8.0.1"
72
72
  },
73
73
  "directus": {
74
- "@svadmin/directus": "^0.11.4"
74
+ "@svadmin/directus": "^0.11.6"
75
75
  },
76
76
  "drizzle": {
77
- "@svadmin/drizzle": "^0.14.1",
77
+ "@svadmin/drizzle": "^0.14.3",
78
78
  "drizzle-orm": "^1.0.0-rc.1",
79
79
  "refine-sqlx": "^0.10.3"
80
80
  },
81
81
  "elysia": {
82
- "@svadmin/elysia": "^0.14.4",
82
+ "@svadmin/elysia": "^0.14.6",
83
83
  "elysia": ">=1.4.30",
84
84
  "@elysiajs/eden": ">=1.4.9"
85
85
  },
86
86
  "firebase": {
87
- "@svadmin/firebase": "^0.12.4"
87
+ "@svadmin/firebase": "^0.12.6"
88
88
  },
89
89
  "hasura": {
90
- "@svadmin/hasura": "^0.12.4",
90
+ "@svadmin/hasura": "^0.12.6",
91
91
  "@refinedev/hasura": "^7.0.1",
92
92
  "graphql-request": "^7.4.0"
93
93
  },
94
94
  "medusa": {
95
- "@svadmin/medusa": "^0.12.4",
95
+ "@svadmin/medusa": "^0.12.6",
96
96
  "@refinedev/medusa": "^5.0.0"
97
97
  },
98
98
  "nestjs-query": {
99
- "@svadmin/nestjs-query": "^0.12.4",
99
+ "@svadmin/nestjs-query": "^0.12.6",
100
100
  "@refinedev/nestjs-query": "^5.0.0"
101
101
  },
102
102
  "nestjsx-crud": {
103
- "@svadmin/nestjsx-crud": "^0.12.4",
103
+ "@svadmin/nestjsx-crud": "^0.12.6",
104
104
  "@refinedev/nestjsx-crud": "^6.0.1"
105
105
  },
106
106
  "pocketbase": {
107
- "@svadmin/pocketbase": "^0.13.1",
107
+ "@svadmin/pocketbase": "^0.13.3",
108
108
  "pocketbase": ">=0.28.0"
109
109
  },
110
110
  "sanity": {
111
- "@svadmin/sanity": "^0.11.4"
111
+ "@svadmin/sanity": "^0.11.6"
112
112
  },
113
113
  "strapi": {
114
- "@svadmin/strapi": "^0.12.4",
114
+ "@svadmin/strapi": "^0.12.6",
115
115
  "@refinedev/strapi-v4": "^7.0.1"
116
116
  }
117
117
  },