@estiva-app/ui 0.21.1 → 0.23.0

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 (108) hide show
  1. package/README.md +21 -0
  2. package/dist/Avatar.d.ts +3 -0
  3. package/dist/Avatar.d.ts.map +1 -1
  4. package/dist/Banner.d.ts +20 -2
  5. package/dist/Banner.d.ts.map +1 -1
  6. package/dist/ChipInput.d.ts +3 -0
  7. package/dist/ChipInput.d.ts.map +1 -1
  8. package/dist/CommandPalette.d.ts +6 -0
  9. package/dist/CommandPalette.d.ts.map +1 -1
  10. package/dist/ContainerHeader.d.ts +25 -0
  11. package/dist/ContainerHeader.d.ts.map +1 -0
  12. package/dist/EmptyState.d.ts +10 -1
  13. package/dist/EmptyState.d.ts.map +1 -1
  14. package/dist/IdentityMenu.d.ts +3 -0
  15. package/dist/IdentityMenu.d.ts.map +1 -1
  16. package/dist/Menu.d.ts +7 -0
  17. package/dist/Menu.d.ts.map +1 -1
  18. package/dist/Skeleton.d.ts +2 -0
  19. package/dist/Skeleton.d.ts.map +1 -1
  20. package/dist/Toast.d.ts +5 -0
  21. package/dist/Toast.d.ts.map +1 -1
  22. package/dist/Toolbar.d.ts +4 -0
  23. package/dist/Toolbar.d.ts.map +1 -1
  24. package/dist/Tooltip.d.ts +4 -0
  25. package/dist/Tooltip.d.ts.map +1 -1
  26. package/dist/gates/app-checks.d.ts.map +1 -1
  27. package/dist/gates/{chunk-ZGJ2J5NU.js → chunk-EA33NP5B.js} +275 -11
  28. package/dist/gates/chunk-EA33NP5B.js.map +7 -0
  29. package/dist/gates/{chunk-AUXD4GCY.js → chunk-GTQZEHPC.js} +15 -1
  30. package/dist/gates/chunk-GTQZEHPC.js.map +7 -0
  31. package/dist/gates/cli.js +1 -1
  32. package/dist/gates/create-app.d.ts +2 -0
  33. package/dist/gates/create-app.d.ts.map +1 -1
  34. package/dist/gates/create-app.js +1 -1
  35. package/dist/gates/index.js +25 -3
  36. package/dist/gates/index.js.map +2 -2
  37. package/dist/gates/status.d.ts +2 -0
  38. package/dist/gates/status.d.ts.map +1 -1
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +69 -48
  42. package/dist/index.js.map +4 -4
  43. package/dist/registry/app-DQI6WLHR.js +10 -0
  44. package/dist/registry/app-DQI6WLHR.js.map +7 -0
  45. package/dist/registry/app.d.ts +21 -0
  46. package/dist/registry/app.d.ts.map +1 -0
  47. package/dist/registry/build-LGFCCOLR.js +27 -0
  48. package/dist/registry/build-LGFCCOLR.js.map +7 -0
  49. package/dist/registry/build.d.ts +95 -0
  50. package/dist/registry/build.d.ts.map +1 -0
  51. package/dist/registry/chunk-E4JNV7PC.js +155 -0
  52. package/dist/registry/chunk-E4JNV7PC.js.map +7 -0
  53. package/dist/registry/chunk-NJN4MQAM.js +397 -0
  54. package/dist/registry/chunk-NJN4MQAM.js.map +7 -0
  55. package/dist/registry/chunk-W2B2G7OE.js +188 -0
  56. package/dist/registry/chunk-W2B2G7OE.js.map +7 -0
  57. package/dist/registry/chunk-WMFF3MPP.js +648 -0
  58. package/dist/registry/chunk-WMFF3MPP.js.map +7 -0
  59. package/dist/registry/cli.d.ts +2 -0
  60. package/dist/registry/cli.d.ts.map +1 -0
  61. package/dist/registry/cli.js +176 -0
  62. package/dist/registry/cli.js.map +7 -0
  63. package/dist/registry/find.d.ts +54 -0
  64. package/dist/registry/find.d.ts.map +1 -0
  65. package/dist/registry/index.d.ts +17 -0
  66. package/dist/registry/index.d.ts.map +1 -0
  67. package/dist/registry/index.js +34 -0
  68. package/dist/registry/index.js.map +7 -0
  69. package/dist/registry/schema.d.ts +224 -0
  70. package/dist/registry/schema.d.ts.map +1 -0
  71. package/package.json +15 -2
  72. package/registry.json +4615 -0
  73. package/src/Avatar.tsx +3 -0
  74. package/src/Banner.mdx +17 -4
  75. package/src/Banner.stories.tsx +22 -0
  76. package/src/Banner.test.tsx +35 -0
  77. package/src/Banner.tsx +34 -9
  78. package/src/ChipInput.tsx +3 -0
  79. package/src/CommandPalette.tsx +6 -0
  80. package/src/ContainerHeader.mdx +56 -0
  81. package/src/ContainerHeader.stories.tsx +62 -0
  82. package/src/ContainerHeader.test.tsx +47 -0
  83. package/src/ContainerHeader.tsx +45 -0
  84. package/src/EmptyState.mdx +12 -0
  85. package/src/EmptyState.stories.tsx +6 -1
  86. package/src/EmptyState.test.tsx +18 -1
  87. package/src/EmptyState.tsx +14 -1
  88. package/src/IdentityMenu.tsx +3 -0
  89. package/src/Menu.tsx +7 -0
  90. package/src/Skeleton.tsx +2 -0
  91. package/src/Toast.tsx +5 -0
  92. package/src/Toolbar.tsx +4 -0
  93. package/src/Tooltip.tsx +4 -0
  94. package/src/gates/app-checks.ts +23 -1
  95. package/src/gates/create-app.test.ts +77 -6
  96. package/src/gates/create-app.ts +288 -15
  97. package/src/gates/status.ts +16 -0
  98. package/src/index.ts +1 -0
  99. package/src/registry/app.test.ts +562 -0
  100. package/src/registry/app.ts +854 -0
  101. package/src/registry/build.ts +679 -0
  102. package/src/registry/cli.ts +204 -0
  103. package/src/registry/find.ts +232 -0
  104. package/src/registry/index.ts +31 -0
  105. package/src/registry/registry.test.ts +448 -0
  106. package/src/registry/schema.ts +419 -0
  107. package/dist/gates/chunk-AUXD4GCY.js.map +0 -7
  108. package/dist/gates/chunk-ZGJ2J5NU.js.map +0 -7
@@ -0,0 +1,224 @@
1
+ /**
2
+ * The catalogue's shape (UIG-12, seam S2 in docs/GATES.md §16).
3
+ *
4
+ * A **data source read by machines first** and rendered second — not a
5
+ * documentation generator. The skill (UIG-20), the copy detector (UIG-25) and
6
+ * the merged search (UIG-19) all read this and nothing else, so the field
7
+ * names are the contract and `schemaVersion` is what makes a change to them
8
+ * detectable.
9
+ *
10
+ * Names are plain and ours. Open-sourcing is far off; when it comes, a
11
+ * renaming pass is one version bump, and guessing at a public vocabulary now
12
+ * would cost every reader between here and there.
13
+ */
14
+ /**
15
+ * Raise this whenever a field is added, removed or given a new meaning. A
16
+ * reader that knows version N and is handed N+1 must be able to say so rather
17
+ * than silently read a field that moved.
18
+ */
19
+ export declare const SCHEMA_VERSION = 2;
20
+ /** What a name is, which decides how a reader offers it. */
21
+ export type EntryKind =
22
+ /** Draws something. Used in JSX. */
23
+ 'component'
24
+ /** A React hook: `use…`, callable only inside a component. */
25
+ | 'hook'
26
+ /** A function or a constant. Neither of the above. */
27
+ | 'helper';
28
+ /** Where an entry's one-line purpose was read from. */
29
+ export type PurposeSource =
30
+ /** The `.mdx` page's opening paragraph — the name has a page of its own. */
31
+ 'page'
32
+ /** The doc comment above the export — the name is documented on a sibling's page. */
33
+ | 'comment'
34
+ /** An app's file that holds this one part: the comment at the top of the file (UIG-13). */
35
+ | 'file'
36
+ /** An app's pass-on: the part is the package's, and says so (UIG-13). */
37
+ | 'package';
38
+ /**
39
+ * Which of four kinds an app's part is (UIG-13), or that nothing uses it.
40
+ *
41
+ * Worked out from the code, never from the folder a file sits in: Peek's
42
+ * `components/ui` holds one-line pass-ons beside 187-line components.
43
+ */
44
+ export type EntryClass =
45
+ /** Its file only hands a package part on, so the app keeps its own import path. */
46
+ 're-export'
47
+ /** Used in two or more places in the app. Gets a usage page (UIG-17, UIG-18). */
48
+ | 'reusable'
49
+ /** Used in one place. Needs only its purpose line. */
50
+ | 'one-off'
51
+ /** Reusable, and everything it uses is already in the package: it could move there. Katerina rules. */
52
+ | 'promote-candidate'
53
+ /** No file of the app uses it: only its stories or tests, or nothing. Listed, never deleted by the catalogue. */
54
+ | 'unused';
55
+ /**
56
+ * What the catalogue knows about a part that lives in an app (UIG-13). `null`
57
+ * on the package's own entries.
58
+ */
59
+ export interface AppFacts {
60
+ class: EntryClass;
61
+ /** Why it has that class, in words: the evidence, or the written reason. */
62
+ reason: string;
63
+ /**
64
+ * `true` when the class is written beside the part (`@registry <class>: <reason>`
65
+ * in its comment) rather than worked out — "general, though one screen uses it yet".
66
+ */
67
+ written: boolean;
68
+ /** A pass-on's part, as `Name` for the package's and `Name from <package>` for another's. `null` otherwise. */
69
+ handsOn: string | null;
70
+ /**
71
+ * The app's files that use it, relative to the app: every file that imports it,
72
+ * and its own file when something else there draws it. Stories and tests are not
73
+ * uses — a part only they reach is unused.
74
+ */
75
+ usedIn: string[];
76
+ /**
77
+ * What ties it to this app: each import that is neither in the package's own
78
+ * dependencies nor an app file that is itself untied. Empty means it could
79
+ * live in the package as it is.
80
+ */
81
+ tiedTo: string[];
82
+ /** The package part with the same name, when there is one: the reader should see both. */
83
+ packageNamesake: string | null;
84
+ /** Imported as `import X from …` rather than `import { X } from …`. */
85
+ defaultExport: boolean;
86
+ }
87
+ /** A file in an app's target set that holds no part, and why, in words. */
88
+ export interface FileWithoutPart {
89
+ file: string;
90
+ reason: string;
91
+ }
92
+ export type EntryStatus = 'stable' | 'migrating' | 'deprecated';
93
+ /** A prop that takes one of a known set of words, and the set. */
94
+ export interface EntryVariant {
95
+ prop: string;
96
+ values: string[];
97
+ }
98
+ /**
99
+ * One prop a component declares itself.
100
+ *
101
+ * **Itself**, not what it inherits: a component that extends
102
+ * `ComponentPropsWithRef<'div'>` would otherwise drag in every DOM attribute,
103
+ * which is noise in a catalogue whose whole point is a short answer.
104
+ */
105
+ export interface EntryProp {
106
+ name: string;
107
+ /**
108
+ * What it takes, in a word a person reads: `true/false`, `number`, `text`,
109
+ * `anything`, `a handler`, the words themselves for a set (`left | right`),
110
+ * or the type as written where none of those fit.
111
+ */
112
+ takes: string;
113
+ required: boolean;
114
+ /** The first sentence of the prop's own comment, where it has one. */
115
+ note: string | null;
116
+ }
117
+ /** A behaviour this component owns, from UIG-8's enumeration. */
118
+ export interface EntryBehaviour {
119
+ /** `OwnedBehaviour.id` — `portal`, `walking`, `scroll`… */
120
+ id: string;
121
+ /** What a person notices it doing, in words. */
122
+ behaviour: string;
123
+ }
124
+ export interface RegistryEntry {
125
+ /** The exported name, exactly as `index.ts` exports it. */
126
+ name: string;
127
+ /** Which library it came from: `estiva-ui`, or the app that owns it. */
128
+ repo: string;
129
+ kind: EntryKind;
130
+ /** What a caller actually types. */
131
+ importPath: string;
132
+ /** The file the name is declared in, relative to the repo. Several names share one file. */
133
+ sourceFile: string;
134
+ /** One line: what it is for. Never empty — the build fails instead. */
135
+ purpose: string;
136
+ purposeFrom: PurposeSource;
137
+ /**
138
+ * Every prop it declares itself — what it can do. This is the field a reader
139
+ * asks "does it already do X?" of, before writing X by hand.
140
+ */
141
+ props: EntryProp[];
142
+ /**
143
+ * The subset of `props` that takes one of a known set of words, structured.
144
+ * Kept beside `props` because it is what a search ranks well on, and what a
145
+ * caller most often needs named back at them.
146
+ */
147
+ variants: EntryVariant[];
148
+ /** What it owns, so a caller never rebuilds it (UIG-8). Empty for most. */
149
+ ownsBehaviours: EntryBehaviour[];
150
+ status: EntryStatus;
151
+ /**
152
+ * Which migration stage plans to change it.
153
+ *
154
+ * Always `null` here. The migration's plan lives in `K:/Estiva/migration
155
+ * docs`, which is not in this repo and is not in CI — and a copy kept here by
156
+ * hand is the drifting list this whole project exists to remove. The field
157
+ * stays in the schema because a later ticket may have a source a build can
158
+ * read; until then a reader gets an honest `null` rather than a stale number.
159
+ */
160
+ migrationStage: number | null;
161
+ /** The `.mdx` page's Storybook id, or `null` where the name has no page of its own. */
162
+ docsId: string | null;
163
+ /** A story that shows it, by Storybook id. `null` where nothing renders it alone. */
164
+ storyId: string | null;
165
+ /** The `.mdx` path, relative to the repo, or `null`. */
166
+ docPage: string | null;
167
+ /** An app's part: its class and the evidence for it (UIG-13). `null` on the package's own entries. */
168
+ app: AppFacts | null;
169
+ }
170
+ /** A name that is exported and deliberately not an entry. Empty today; the count still has to reconcile. */
171
+ export interface RegistryExclusion {
172
+ name: string;
173
+ reason: string;
174
+ }
175
+ export interface Registry {
176
+ schemaVersion: number;
177
+ builtFrom: {
178
+ /**
179
+ * `package`: the package's catalogue, committed and shipped. `app`: one app's,
180
+ * built fresh from its code each time and never committed — Peek and Ship are
181
+ * private, the package is public (Katerina, 18 September 2026).
182
+ */
183
+ kind: 'package' | 'app';
184
+ repo: string;
185
+ /** The package the entries are imported from, or the app's own name. */
186
+ package: string;
187
+ packageVersion: string;
188
+ /**
189
+ * The package: value exports counted in `index.ts`. An app: parts found in its
190
+ * files. `entries + excluded` must equal it.
191
+ */
192
+ exports: number;
193
+ /** Type-only exports, which are not entries. Recorded so the count reconciles. `0` for an app. */
194
+ typeExports: number;
195
+ /**
196
+ * An app only: its `.tsx` files outside stories and tests. Each one either holds
197
+ * an entry or is in `filesWithoutParts`. `null` for the package.
198
+ */
199
+ files: number | null;
200
+ };
201
+ /**
202
+ * How to turn an id into a link. There is no Storybook on the internet yet
203
+ * (UIG-19), so an absolute URL committed here would resolve nowhere: the
204
+ * reader joins its own base to these.
205
+ */
206
+ storybook: {
207
+ docsPath: string;
208
+ storyPath: string;
209
+ devUrl: string;
210
+ };
211
+ entries: RegistryEntry[];
212
+ excluded: RegistryExclusion[];
213
+ /** An app's `.tsx` files that hold no part, each with its reason. Empty for the package. */
214
+ filesWithoutParts: FileWithoutPart[];
215
+ }
216
+ export declare const CLASSES: EntryClass[];
217
+ /**
218
+ * Check a registry against this schema. Returns every problem, not the first:
219
+ * a build that reports one missing purpose per run costs one run per entry.
220
+ *
221
+ * An empty list is the only pass. CI runs this on the committed file.
222
+ */
223
+ export declare function validateRegistry(value: unknown): string[];
224
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/registry/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@estiva-app/ui",
3
- "version": "0.21.1",
3
+ "version": "0.23.0",
4
4
  "description": "Estiva's design tokens (the contract) and a small set of primitives (a convenience) for every Estiva app.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -8,6 +8,7 @@
8
8
  "dist",
9
9
  "src",
10
10
  "stories",
11
+ "registry.json",
11
12
  "tailwind-preset.js",
12
13
  "tokens.css",
13
14
  "base.css",
@@ -27,6 +28,11 @@
27
28
  "types": "./dist/gates/index.d.ts",
28
29
  "default": "./dist/gates/index.js"
29
30
  },
31
+ "./registry": {
32
+ "types": "./dist/registry/index.d.ts",
33
+ "default": "./dist/registry/index.js"
34
+ },
35
+ "./registry.json": "./registry.json",
30
36
  "./tailwind-preset": "./tailwind-preset.js",
31
37
  "./tokens.css": "./tokens.css",
32
38
  "./package.json": "./package.json",
@@ -34,7 +40,8 @@
34
40
  },
35
41
  "bin": {
36
42
  "create-estiva-app": "dist/gates/create-app.js",
37
- "estiva-gates": "dist/gates/cli.js"
43
+ "estiva-gates": "dist/gates/cli.js",
44
+ "estiva-ui": "dist/registry/cli.js"
38
45
  },
39
46
  "scripts": {
40
47
  "build": "node build.mjs && tsc -p tsconfig.build.json",
@@ -54,6 +61,12 @@
54
61
  "gates:status": "node dist/gates/cli.js status",
55
62
  "pregates:compare": "node build.mjs",
56
63
  "gates:compare": "node scripts/gates-compare.mjs",
64
+ "preregistry": "node build.mjs",
65
+ "registry": "node dist/registry/cli.js build",
66
+ "preregistry:check": "node build.mjs",
67
+ "registry:check": "node dist/registry/cli.js check",
68
+ "preui:find": "node build.mjs",
69
+ "ui:find": "node dist/registry/cli.js find --also peek=../peek --also ship=../ship/web",
57
70
  "prepublishOnly": "npm run build"
58
71
  },
59
72
  "peerDependencies": {