@stapel/search-react 0.25.0 → 0.26.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 (68) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/MODULE.md +21 -9
  3. package/README.md +71 -13
  4. package/dist/api/generated/schema.d.ts +18 -3
  5. package/dist/api/generated/schema.d.ts.map +1 -1
  6. package/dist/api/types.d.ts +39 -4
  7. package/dist/api/types.d.ts.map +1 -1
  8. package/dist/api/types.js.map +1 -1
  9. package/dist/default/FacetGroupControl.d.ts +20 -13
  10. package/dist/default/FacetGroupControl.d.ts.map +1 -1
  11. package/dist/default/FacetGroupControl.js +29 -21
  12. package/dist/default/FacetGroupControl.js.map +1 -1
  13. package/dist/default/FacetPanelPane.d.ts +15 -4
  14. package/dist/default/FacetPanelPane.d.ts.map +1 -1
  15. package/dist/default/FacetPanelPane.js +10 -5
  16. package/dist/default/FacetPanelPane.js.map +1 -1
  17. package/dist/default/SearchPage.d.ts +16 -0
  18. package/dist/default/SearchPage.d.ts.map +1 -1
  19. package/dist/default/SearchPage.js +7 -3
  20. package/dist/default/SearchPage.js.map +1 -1
  21. package/dist/headless/SearchStateProvider.d.ts +12 -2
  22. package/dist/headless/SearchStateProvider.d.ts.map +1 -1
  23. package/dist/headless/SearchStateProvider.js +58 -6
  24. package/dist/headless/SearchStateProvider.js.map +1 -1
  25. package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -1
  26. package/dist/i18n/generated/errors.es.gen.js +1 -0
  27. package/dist/i18n/generated/errors.es.gen.js.map +1 -1
  28. package/dist/i18n/generated/errors.gen.d.ts +6 -0
  29. package/dist/i18n/generated/errors.gen.d.ts.map +1 -1
  30. package/dist/i18n/generated/errors.gen.js +3 -0
  31. package/dist/i18n/generated/errors.gen.js.map +1 -1
  32. package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -1
  33. package/dist/i18n/generated/errors.ru.gen.js +1 -0
  34. package/dist/i18n/generated/errors.ru.gen.js.map +1 -1
  35. package/dist/index.d.ts +4 -4
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +3 -3
  38. package/dist/index.js.map +1 -1
  39. package/dist/model/queries.d.ts.map +1 -1
  40. package/dist/model/queries.js +9 -1
  41. package/dist/model/queries.js.map +1 -1
  42. package/dist/state/facets.d.ts +62 -11
  43. package/dist/state/facets.d.ts.map +1 -1
  44. package/dist/state/facets.js +141 -29
  45. package/dist/state/facets.js.map +1 -1
  46. package/dist/state/urlState.d.ts +77 -2
  47. package/dist/state/urlState.d.ts.map +1 -1
  48. package/dist/state/urlState.js +80 -6
  49. package/dist/state/urlState.js.map +1 -1
  50. package/llms.txt +3 -2
  51. package/manifest.json +18 -1
  52. package/nav-manifest.json +1 -1
  53. package/package.json +8 -8
  54. package/src/analytics/generated/events.json +1 -1
  55. package/src/api/generated/schema.ts +18 -3
  56. package/src/api/types.ts +42 -4
  57. package/src/default/FacetGroupControl.tsx +27 -23
  58. package/src/default/FacetPanelPane.tsx +30 -8
  59. package/src/default/SearchPage.tsx +25 -1
  60. package/src/headless/SearchStateProvider.tsx +94 -4
  61. package/src/i18n/generated/errors.es.gen.ts +1 -0
  62. package/src/i18n/generated/errors.gen.ts +3 -0
  63. package/src/i18n/generated/errors.json +9 -0
  64. package/src/i18n/generated/errors.ru.gen.ts +1 -0
  65. package/src/index.ts +13 -1
  66. package/src/model/queries.ts +11 -1
  67. package/src/state/facets.ts +173 -30
  68. package/src/state/urlState.ts +137 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @stapel/search-react
2
2
 
3
+ ## 0.26.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d88077a: Short feature keys in the address, a vocabulary axis that is always a field, and an axis with no evidence that is no longer drawn.
8
+
9
+ **`f.make=toyota`, not `f.make_ref_select=toyota`.** The importer's type suffix carries nothing a reader can act on. stapel-search 0.14.4+ states the readable half per group (`facet_labels[slug].url_key` — the slug minus its suffix where that stays unambiguous among the features of the category in scope, the slug itself otherwise) and accepts both forms inside that scope. The codec now **writes** `url_key` and **reads either**: `parseSearchState(params, {facetKeys})`, `writeSearchState(state, base, facetKeys)`, `buildFacetKeyMap` / `facetKeyMapFromLabels` to make a map, and the server's own collision rules applied again on the client — a short form that is another slug of the same answer, or that two slugs claim, keeps the slug on both sides. The map rides the answer: `useSearchQuery` publishes it to `SearchStateProvider` (`usePublishFacetKeys` / `useFacetKeys`), which re-parses the URL with it and writes every later address through it. Nothing is renamed and nothing is stored — the request this pair sends still carries the slug — so a link written before this release, and a link written against a server that states no `url_key`, both keep working. `buildFacetGroups` matches a filter by either spelling, so the rail, the chip row, the popular-values block and the applied chips all round-trip through one key.
10
+
11
+ **A vocabulary-backed axis is always the field.** `isDictionaryFacet` counted evidence buckets, so on a leaf holding three cars the make drew three checkboxes over a vocabulary of four hundred makes. Where the values LIVE decides the control now: `ref_select`/`ref_hierarchical_select` — or a group with no def whose answer names a `vocabulary` — is a dictionary however many buckets came back, and the searchable field is the only control that can reach values the answer never enumerated. An inline `select` keeps its checkboxes or pills whatever its length. `facetGroupIsVocabularyBacked` is exported; `FacetGroup` carries `urlKey` and `vocabulary`.
12
+
13
+ **A group with zero evidence and nothing selected is not drawn.** A live laptops leaf drew six of six groups as accordions a person could open and narrow nothing by: every counted bucket zero, and the axes the facet budget skipped standing on their authored option tables with `count: null` on every row. `facetGroupIsDrawable` now asks for evidence — at least one value some candidate carries — with two exemptions: an axis the reader has already filtered on, and any vocabulary-backed axis, whose field searches its dictionary with no buckets at all (`make` on a cars leaf holding three cars, `vendor` on a laptops leaf holding one — both now KEPT where they used to be dropped, while the zero-filled inline tables beside them go). `mandatory` is not part of the rule: the live laptops leaf marks none of vendor/model/screen size required, so gating on it would have deleted the vendor picker to save the make one. Consequence worth stating: an axis the plan cut at `MAX_FACET_FIELDS` is no longer drawn from its schema table alone — raising that budget is the fix, and stapel-search 0.14.5 spends it in schema order, required first.
14
+
15
+ **Three things a storefront could not do from `<SearchPage>`.**
16
+
17
+ - `dictionaryMode` reaches the page at last, defaulted per layout: `"field"` in the column (the select-style «Any» that opens the searchable list) and `"inline"` in the phone sheet, which is already a disclosure.
18
+ - `footerBar` takes `"sticky" | "static"` (`true` still means sticky). The column layout passes `"static"`: pinned to the rail's scroll port the opaque bar sat over the last two groups, and a storefront was reaching for `!important` to lift it off. A sheet, whose port is the sheet, still pins it.
19
+ - The undrawable-axis warning is DEV-ONLY for real. The guard asked "is this not production", a browser bundle with no `process` shim answered wrong, and `facet group "complectation" has no values to draw` reached buyers' consoles once per page load. It now asks "is this a dev build".
20
+
3
21
  ## 0.25.0
4
22
 
5
23
  ### Minor Changes
package/MODULE.md CHANGED
@@ -209,15 +209,27 @@ one value.
209
209
 
210
210
  **The gap the seam does not close: EXISTENCE.** `resolveFacetLabels` names
211
211
  values; it does not enumerate them. A `ref_select` group the server did not
212
- count therefore has no options from either side — the answer counted nothing,
213
- the schema holds a pointer and `facetGroupIsDrawable` refuses to draw a
214
- heading over nothing. Measured on a live cars leaf, that is exactly the set a
215
- buyer misses (make, model, generation, body type) while every `select`-typed
216
- option keeps its schema table. The client cannot invent the values, so the fix
217
- is on the other side — the facet plan must count a required vocabulary axis —
218
- and until it does, the disappearance is reported: one `console.warn` per slug
219
- outside production, naming the axis, the missing side, and whether the schema
220
- marks it required.
212
+ count has no options from either side — the answer counted nothing, the schema
213
+ holds a pointer. Since 0.26 that is no longer a reason to take a
214
+ vocabulary-backed axis off the page: its control is a searchable field, the
215
+ field works over a dictionary the answer never enumerated, and a leaf holding
216
+ three cars is a fact about the stand rather than about the make axis. The rule
217
+ does not ask `mandatory` — the live laptops leaf marks none of vendor, model
218
+ and screen size required, and gating on it would have deleted the vendor
219
+ picker to save the make one. What the
220
+ client still cannot do is fill the list — so the fix on the other side stands
221
+ (the facet plan must count a required vocabulary axis, and stapel-search 0.14.5
222
+ now spends `MAX_FACET_FIELDS` in schema order, required first), and a host that
223
+ wants values in that field before the plan counts them wires
224
+ `resolveFacetLabels` to its vocabulary.
225
+
226
+ Every OTHER axis with no evidence is dropped: an authored option set the answer
227
+ zero-filled, or one the budget skipped, is a set of checkboxes each guaranteed
228
+ to return nothing (a live laptops leaf drew six of those and no filter). The
229
+ drop is reported: one `console.warn` per slug in development — never in
230
+ production, where the guard now asks "is this a dev build" rather than "is this
231
+ not production", because a browser bundle with no `process` shim answered the
232
+ second one wrong and shipped the warning to buyers.
221
233
 
222
234
  ## The chip row's order is the row's product
223
235
 
package/README.md CHANGED
@@ -78,6 +78,30 @@ ordered candidate set; carried across a filter change it either gets refused or,
78
78
  worse, honoured against a different set. `patchSearchState` drops it for every
79
79
  change that is not itself a page move, so no call site has to remember.
80
80
 
81
+ **Short feature keys.** The importer's type suffix carries nothing a reader can
82
+ act on — `f.make_ref_select=toyota` says *make* once and *how the column is
83
+ stored* once — so the address uses the short form the ANSWER states:
84
+
85
+ ```
86
+ /c/avtomobili?f.make=toyota&r.year=2015..2020
87
+ ```
88
+
89
+ stapel-search 0.14.4+ derives it per request inside the queried category's
90
+ scope (`facet_labels[slug].url_key`: the slug minus its suffix where that stays
91
+ unambiguous, the slug itself otherwise) and accepts both forms. This pair
92
+ **writes** `url_key` and **reads either**, so an old link keeps working and a
93
+ collision keeps the slug on both sides. Nothing is renamed and nothing is
94
+ stored: the slug is still the feature's identity, and the request this pair
95
+ sends carries it.
96
+
97
+ The map travels with the answer — `useSearchQuery` publishes it up to
98
+ `SearchStateProvider` (`usePublishFacetKeys`, `useFacetKeys`), which re-parses
99
+ the URL with it and writes every later address through it. Before the first
100
+ answer, and against a server that states none, the address is spelled in slugs
101
+ exactly as it was. The codec itself stays pure: `parseSearchState(params,
102
+ {facetKeys})`, `writeSearchState(state, base, facetKeys)`, and
103
+ `buildFacetKeyMap` / `facetKeyMapFromLabels` to make one.
104
+
81
105
  **Any router, or none.** `SearchStateProvider` takes a `SearchParamsAdapter` —
82
106
  two members, shaped exactly like react-router's `useSearchParams()`. `./router`
83
107
  ships that binding; a Next.js app, a hash router or a plain `URLSearchParams` in
@@ -188,20 +212,36 @@ one you came back for. The phone sheet passes `visibleGroups={null}`; a surface
188
212
  devoted to filtering has the room.
189
213
 
190
214
  `facetGroupIsDrawable(group)` is the one rule the rail and the chip row share
191
- for "is there anything to draw here". A group with no options is a heading over
192
- nothing after `buildFacetGroups` learned to read the schema, what is left in
193
- that state is a `ref_select` whose config is a bare `optionsRef` pointer and
194
- which the server did not count, so there is nothing to enumerate from either
195
- side. It is not drawn, and outside production it is **named**: a
196
- `console.warn` says which axis went, why, and whether the schema calls it
197
- required. That is the fault that took *make* off a live cars rail while every
198
- `select`-typed comfort option drew its own table and stayed.
215
+ for "is there anything to draw here", and the question it asks is **evidence**:
216
+ at least one value some candidate in this answer actually carries. A live
217
+ laptops leaf drew six of six groups as accordions a person could open and
218
+ narrow nothing by every counted bucket zero, and the axes the facet budget
219
+ skipped standing on their authored option tables with `count: null` on every
220
+ row. Three exemptions, and nothing else:
221
+
222
+ - an axis the reader has already **filtered on** — a constraint with no
223
+ control to remove it is worse than a bare heading;
224
+ - a **vocabulary-backed** axis: its control is a field over a dictionary the
225
+ answer never enumerated, and that box searches the dictionary rather than
226
+ the buckets — *make* on a cars leaf holding three cars, *vendor* on a
227
+ laptops leaf holding one. `mandatory` is deliberately not asked: on the live
228
+ laptops leaf not one of vendor/model/screen size carries it;
229
+ - an axis with evidence, obviously.
230
+
231
+ A dropped axis is **named** outside production: a `console.warn` says which
232
+ axis went, why, and whether the schema calls it required — the fault that took
233
+ *make* off a live cars rail while every `select`-typed comfort option drew its
234
+ own table and stayed. Note the consequence for a leaf whose plan was cut at
235
+ `MAX_FACET_FIELDS`: an axis the server never counted is not drawn unless it is
236
+ one of the two exemptions, so the way to put it back is to raise that budget
237
+ (stapel-search 0.14.5 spends it in schema order, required first).
199
238
 
200
239
  ## A vocabulary is a dictionary, not a checkbox list
201
240
 
202
- Past eight **evidence buckets** a `ref_select` group (or an untyped group that
203
- long the live case, where no schema was threaded through) stops being a list
204
- and becomes a dictionary: the busiest values, a search box that filters them
241
+ A **vocabulary-backed** axis (`ref_select`/`ref_hierarchical_select`, whose
242
+ config is a pointer and never an option table or an untyped group the answer
243
+ came back long for, the live case where no schema was threaded through) is
244
+ always a dictionary, **however many buckets came back**: the busiest values, a search box that filters them
205
245
  locally, and the chosen values pinned above the box so a filter is never
206
246
  invisible. The box matches **across alphabets** — `тойота` finds `Toyota`,
207
247
  `тимберленд` finds `Timberland`, `ровер` finds `Land Rover` — by a prefix rule
@@ -213,6 +253,13 @@ answer — stapel-search caps a vocabulary-backed group at
213
253
  this), so a 418-term make dictionary arrives whole and the box has everything
214
254
  it filters.
215
255
 
256
+ The bucket count used to decide this, and on a leaf holding three cars the make
257
+ drew three checkboxes over a vocabulary of four hundred makes — "а если там
258
+ сотни вариантов" is a question about the DICTIONARY, and the dictionary is
259
+ large whether or not this leaf has stock. An **inline** option set is never a
260
+ dictionary, whatever its length: a `select` carries its own table, and a small
261
+ one is a list a person reads at a glance.
262
+
216
263
  A dictionary outranks the pills, too: the live `make` axis is `maxSelected: 1`
217
264
  over a 418-value vocabulary, so "pick one" used to win and the control it drew
218
265
  was four hundred pills in a 280px rail.
@@ -225,10 +272,14 @@ Escape to close. The phone sheet keeps the list inline, because the sheet is
225
272
  already the disclosure.
226
273
 
227
274
  ```tsx
228
- facetGroupShape(group) // "segmented" | "nested" | "checkbox" | "dictionary"
229
- isDictionaryFacet(group) // > FACET_DICTIONARY_THRESHOLD counted buckets
275
+ facetGroupShape(group) // "segmented" | "nested" | "checkbox" | "dictionary"
276
+ isDictionaryFacet(group) // vocabulary-backed, or untyped and long
277
+ facetGroupIsVocabularyBacked(group) // the schema's type, else the answer's `vocabulary`
230
278
  ```
231
279
 
280
+ `<SearchPage dictionaryMode>` overrides the per-layout default (`"field"` in
281
+ the column, `"inline"` in the sheet).
282
+
232
283
  ## A bounded integer is a picker, not a bare number
233
284
 
234
285
  A year is not a quantity a person computes, it is one of a hundred-odd values,
@@ -291,6 +342,13 @@ real width and every colour a `--stapel-*` custom property, so it is the
291
342
  panel's own hairline in both themes. `railScrollbarCss()` and `RAIL_CLASS` are
292
343
  exported for a host that lays out its own column.
293
344
 
345
+ The panel's footer — the live count, and the clear-all beside it — sits where
346
+ its frame wants it: `footerBar="static"` (what `<SearchPage>` passes in the
347
+ column layout) puts it after the last group, and `"sticky"` / `true` pins it to
348
+ the scroll port's floor, which is right in a sheet whose port IS the sheet. It
349
+ was pinned everywhere, and on the desktop rail an opaque bar over the last two
350
+ groups made them unreachable.
351
+
294
352
  ## The other sections are a line, and they come with the results
295
353
 
296
354
  `<SearchPage otherCategories categoryName={...}>` draws
@@ -145,6 +145,13 @@ export interface components {
145
145
  */
146
146
  radius_km?: number;
147
147
  };
148
+ /** @description The queried category in both forms an address can carry. */
149
+ CategoryResolved: {
150
+ /** @description The slash-joined ID path this answer actually filtered on — what to send back as `category`. `category=` accepts an id, an id path, a slug, a slug path and any mix, so the string the caller sent is not necessarily this one: `avtomobili` and `141/avtomobili` both answer `141/151`. */
151
+ path: string;
152
+ /** @description The same node as slug segments, root->leaf — what a readable URL is built from (`/c/avtomobili`). `null`, never partial, when any segment has no slug: half a slug path builds a wrong address and a client cannot see that by looking. `null` here with `category_names` in `degraded[]` means the names provider was unreachable, not that the node has no slug. */
153
+ slugs: string[] | null;
154
+ };
148
155
  /** @description One destination in the dropdown, ready to render and ready to follow. */
149
156
  CategorySuggestion: {
150
157
  /** @description Category id. A `listings`-graded row derives it from the path's leaf segment. */
@@ -206,8 +213,14 @@ export interface components {
206
213
  /** @description True when this filter actually narrowed the answer. A false one still contributed to each row's `match_count`. */
207
214
  applied: boolean;
208
215
  };
209
- /** @description Captions for one slug's option codes. */
216
+ /** @description The heading for one facet group, plus captions for its option codes. */
210
217
  FacetLabels: {
218
+ /** @description The feature definition's own name — the HEADING above this group's buckets. `null` when the definition carries no name: a client renders the slug only as a dev-mode fallback, because a raw slug in a heading is not a caption, and this field is how it can tell that case from a name the server has. */
219
+ label: string | null;
220
+ /** @description True when `label` is a translation KEY (`FeatureDef.translate` is `all` or `title`), false when it is literal text. Same question as `translatable`, one level up. */
221
+ label_translatable: boolean;
222
+ /** @description What to call this group in the address: `f.<url_key>` and `r.<url_key>`. The slug without the importer type suffix (`_select`, `_ref_select`, `_int`, `_bool`, `_string`) where that stays unambiguous among the features of the category in scope, and the slug itself otherwise — and always when the query names no category. Derived per request, never stored: the slug remains the feature's identity, and both forms are accepted inside the scope. */
223
+ url_key: string;
211
224
  /** @description True when `values` holds translation KEYS to run through the catalogue; false when it holds literal captions. The reader cannot tell by looking — `b.apple` and `Б/у` are both strings. */
212
225
  translatable: boolean;
213
226
  values: {
@@ -344,6 +357,8 @@ export interface components {
344
357
  /** @description The query envelope: AnchorPagination's keys, plus what search owes. */
345
358
  SearchResponse: {
346
359
  items: components["schemas"]["SearchItem"][];
360
+ /** @description The category this answer filtered on, in both addressable forms. `null` when the query named no category. */
361
+ category_resolved: components["schemas"]["CategoryResolved"] | null;
347
362
  /** @description Per-band counts in render order — `nearby` («Объявления поблизости») then `all` («Все объявления»). Present only under `geo_mode=rank`; empty when no centre was given. The rows themselves carry `band`; this is the summary a heading needs. The top-level `count` remains the WHOLE matching total, never the nearby one. */
348
363
  bands?: components["schemas"]["BandSummary"][];
349
364
  /** @description What the query's words became. Absent entirely while QUERY_UNDERSTANDING is off or `qu=off` was sent. */
@@ -354,7 +369,7 @@ export interface components {
354
369
  [key: string]: number;
355
370
  };
356
371
  };
357
- /** @description {slug: {translatable, values: {value: caption}}} for slugs whose options are inline in the category schema. Absent for a vocabulary-backed slug: its level lives outside the schema and the plan will not invent a caption it has not read. */
372
+ /** @description {slug: {label, label_translatable, url_key, translatable, values: {value: caption}}} — one entry for EVERY group in `facets`. `url_key` is the group's key in the address. `label` is the group's heading and is null when the definition has no name; `values` is empty for a slug whose options are not inline in the category schema and whose vocabulary resolved nothing, because this module will not invent a caption it has not read. */
358
373
  facet_labels: {
359
374
  [key: string]: components["schemas"]["FacetLabels"];
360
375
  };
@@ -425,7 +440,7 @@ export interface operations {
425
440
  anchor?: string;
426
441
  /** @description minLat,minLon,maxLat,maxLon. minLon > maxLon means the box crosses +/-180. For an anonymous caller the rectangle is grown OUTWARD to whole ~1.1km cells of the public geo grid, so it can only ever ask about the area a public card publishes: a box EXCLUDES rows, and halving one around a listing would otherwise converge on the seller's pin in a few dozen requests. */
427
442
  bbox?: string;
428
- /** @description root/leaf path; a prefix filter, so a parent finds its descendants. */
443
+ /** @description root/leaf path; a prefix filter, so a parent finds its descendants. Segments are node IDS or SLUGS, in any mix: a bare node id is resolved to that node's full path (`166` == `141/151/166`), and a slug is a whole address on its own because slugs are globally unique (`avtomobili` == `transport/avtomobili` == `141/151`). The form that answered is echoed in `category_resolved`. A segment no category has is a 400, never an empty answer. */
429
444
  category?: string;
430
445
  /** @description next | prev. */
431
446
  direction?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":"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"}
@@ -22,11 +22,14 @@ export type Schemas = components["schemas"];
22
22
  * slug either; ABSENT is a server too old to send one, and both read the same
23
23
  * way here (fall through to the schema).
24
24
  *
25
- * WHAT THE GENERATOR LOST: the field is newer than this pair's pinned
26
- * `schema.json`, so it is declared here as optional-and-nullable rather than
27
- * regenerated into a shape a deployed older server does not send.
25
+ * WHY IT IS NOT THE GENERATED SHAPE: stapel-search 0.14.5's `schema.json`
26
+ * declares this field REQUIRED, but the contract this pair announces is
27
+ * `>=0.14 <0.15`, and a 0.14.0 server inside that range sends no `label` at
28
+ * all. The generated member is therefore `Omit`ted and re-declared here as
29
+ * optional-and-nullable — a type must not promise a field a server the pair
30
+ * says it supports does not send.
28
31
  */
29
- export type FacetLabels = Schemas["FacetLabels"] & {
32
+ export type FacetLabels = Omit<Schemas["FacetLabels"], "label" | "label_translatable" | "url_key"> & {
30
33
  readonly label?: string | null;
31
34
  /**
32
35
  * Whether {@link label} is a translation KEY rather than a caption, the way
@@ -41,6 +44,38 @@ export type FacetLabels = Schemas["FacetLabels"] & {
41
44
  * fixture captured from the wire is not a type error.
42
45
  */
43
46
  readonly label_translatable?: boolean;
47
+ /**
48
+ * What this group is called IN THE ADDRESS: `f.<url_key>`, `r.<url_key>`.
49
+ *
50
+ * The slug minus the type suffix an importer mints (`_select`,
51
+ * `_ref_select`, `_int`, `_bool`, `_string`) where dropping it stays
52
+ * unambiguous among the features of the category in scope, and the slug
53
+ * itself otherwise — and always when the query names no category
54
+ * (stapel-search 0.14.4+, `facets.url_keys`). Derived per request, never
55
+ * stored: the slug remains the feature's identity and both forms are
56
+ * accepted inside the scope, which is what lets a client write the short
57
+ * one without a migration behind it.
58
+ *
59
+ * WHY IT IS NOT THE GENERATED SHAPE: 0.14.5 declares it REQUIRED, and the
60
+ * announced contract is `>=0.14 <0.15` — a 0.14.0 server in that range
61
+ * states no `url_key`, and the codec's whole point is that such a link
62
+ * still works. `Omit`ted from the generated member and re-declared
63
+ * optional here. Measured on a live answer 2026-09-04:
64
+ * `make_ref_select` → `make`, `fuel_type_ref_select` → `fuel_type`,
65
+ * `model` → `model`.
66
+ */
67
+ readonly url_key?: string | null;
68
+ /**
69
+ * The vocabulary this group's values are drawn from, when the server names
70
+ * one.
71
+ *
72
+ * The one fact that decides whether an axis is a DICTIONARY rather than a
73
+ * list, and the client's second-best source for it: the first is the
74
+ * category schema's own `optionsRef`, which a host that threaded no schema
75
+ * does not have. Absent on every server that does not state it — absence
76
+ * is not "inline", it is "unsaid", and the schema is asked next.
77
+ */
78
+ readonly vocabulary?: string | null;
44
79
  };
45
80
  /** `facet_labels` as a whole: `{slug: {label, translatable, values}}`. */
46
81
  export type FacetLabelsMap = Readonly<Record<string, FacetLabels>>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAiMA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiC;IAC5D,OAAO,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC9C,CAAC;AAQD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,UAAU;CACX,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAuOA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiC;IAC5D,OAAO,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC9C,CAAC;AAQD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,UAAU;CACX,CAAC"}
@@ -24,14 +24,21 @@ export interface FacetOptionNode {
24
24
  readonly depth: number;
25
25
  }
26
26
  /**
27
- * Is this group a DICTIONARY — a vocabulary's level, too long to scroll?
27
+ * Is this group a DICTIONARY — an axis whose values live in a vocabulary?
28
28
  *
29
- * Two ways to be one, because the schema is an optional slot and the live
30
- * case is the one where it is empty:
29
+ * Two ways to be one, and only the second one counts anything:
31
30
  *
32
- * - the def types the slug `ref_select`/`ref_hierarchical_select`, i.e. its
33
- * config is a POINTER into a vocabulary and there was never an option
34
- * table to draw;
31
+ * - the axis is VOCABULARY-BACKED (`facetGroupIsVocabularyBacked`): the def
32
+ * types it `ref_select`/`ref_hierarchical_select`, so its config is a
33
+ * POINTER and there was never an option table to draw — or there is no def
34
+ * and the answer named the vocabulary itself. **However many buckets came
35
+ * back.** This threshold used to be counted against the answer's evidence,
36
+ * and on a stand holding three cars the make axis has three buckets, drew
37
+ * three checkboxes, and hid the other four hundred makes behind nothing at
38
+ * all: the founder's "what if there are hundreds of options" is a question about the DICTIONARY,
39
+ * and the dictionary is large whether or not this leaf has stock. The
40
+ * field is also the only control that can search values the answer never
41
+ * enumerated, which is exactly the case a thin stand produces;
35
42
  * - there is NO def at all and the answer came back with more values than a
36
43
  * fold. At a live classified's cars branch the storefront passed an empty
37
44
  * feature list, so the 418 makes arrived as an unnamed, untyped group of
@@ -39,10 +46,10 @@ export interface FacetOptionNode {
39
46
  * answers that, and refusing to draw one because the schema is missing
40
47
  * punishes the buyer for the wiring.
41
48
  *
42
- * Either way it takes more than {@link FACET_DICTIONARY_THRESHOLD} EVIDENCE
43
- * buckets values the answer actually counted. A zero-filled option table or
44
- * a schema-only tail is a list a person can already read, and a box over it
45
- * would search for values no document carries.
49
+ * An INLINE option set is never one, whatever its length: a `select` carries
50
+ * its own table, that table is the whole of the axis, and a small one
51
+ * (≤ {@link FACET_DICTIONARY_THRESHOLD} options) is a list a person reads at
52
+ * a glance rather than types into.
46
53
  */
47
54
  export declare function isDictionaryFacet(group: FacetGroup): boolean;
48
55
  /**
@@ -56,9 +63,9 @@ export declare function isDictionaryFacet(group: FacetGroup): boolean;
56
63
  * `maxSelected: 1` over a 418-value vocabulary, so "pick one" won and the
57
64
  * control it produced was four hundred pills in a 280px rail — a wall
58
65
  * with a different border radius. Above the fold the shape a person needs
59
- * is a search box, whether or not they may tick two; below it,
60
- * single-choice still means pills, because `isDictionaryFacet` requires
61
- * more than {@link FACET_DICTIONARY_THRESHOLD} counted buckets;
66
+ * is a search box, whether or not they may tick two. A single-choice axis
67
+ * with an INLINE option table still means pills, because a dictionary is
68
+ * now about where the values live and not about how many came back;
62
69
  * - and a dictionary is a dictionary before it is a checkbox list, because
63
70
  * the checkbox list is the shape it was drawn as when nobody could pick a
64
71
  * make.
@@ -1 +1 @@
1
- {"version":3,"file":"FacetGroupControl.d.ts","sourceRoot":"","sources":["../../src/default/FacetGroupControl.tsx"],"names":[],"mappings":"AAiEA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAUzD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIlE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAA8B,CAAC;AAExE,2CAA2C;AAC3C,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,QAAQ,GACR,UAAU,GACV,YAAY,CAAC;AAEjB,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAwCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAS5D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAOlE;AAWD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,eAAe,EAAE,CAkC9E;AA2XD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD;2EACuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;gFAC4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;uEACmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC9C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA2I7E"}
1
+ {"version":3,"file":"FacetGroupControl.d.ts","sourceRoot":"","sources":["../../src/default/FacetGroupControl.tsx"],"names":[],"mappings":"AAiEA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAOzD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIlE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAA8B,CAAC;AAExE,2CAA2C;AAC3C,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,QAAQ,GACR,UAAU,GACV,YAAY,CAAC;AAEjB,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAwCD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAS5D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAOlE;AAWD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,eAAe,EAAE,CAkC9E;AA2XD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD;2EACuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;gFAC4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;uEACmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC9C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA2I7E"}
@@ -67,7 +67,8 @@ import { useState } from "react";
67
67
  import { Button, Checkbox, Flex, Input, Typography } from "antd";
68
68
  import { useT } from "@stapel/core";
69
69
  import { controls, cssVar, radii, spacing } from "@stapel/tokens";
70
- import { VOCABULARY_BACKED_TYPES, featureConfig, featureType, } from "@stapel/attributes-react";
70
+ import { featureConfig, featureType } from "@stapel/attributes-react";
71
+ import { facetGroupIsVocabularyBacked } from "../state/facets.js";
71
72
  import { translitPrefixMatch } from "../state/translit.js";
72
73
  import { SEARCH_I18N_KEYS } from "../i18n/keys.js";
73
74
  /**
@@ -120,14 +121,21 @@ function singleChoice(feature) {
120
121
  return numberish(featureConfig(feature)["maxSelected"]) === 1;
121
122
  }
122
123
  /**
123
- * Is this group a DICTIONARY — a vocabulary's level, too long to scroll?
124
+ * Is this group a DICTIONARY — an axis whose values live in a vocabulary?
124
125
  *
125
- * Two ways to be one, because the schema is an optional slot and the live
126
- * case is the one where it is empty:
126
+ * Two ways to be one, and only the second one counts anything:
127
127
  *
128
- * - the def types the slug `ref_select`/`ref_hierarchical_select`, i.e. its
129
- * config is a POINTER into a vocabulary and there was never an option
130
- * table to draw;
128
+ * - the axis is VOCABULARY-BACKED (`facetGroupIsVocabularyBacked`): the def
129
+ * types it `ref_select`/`ref_hierarchical_select`, so its config is a
130
+ * POINTER and there was never an option table to draw — or there is no def
131
+ * and the answer named the vocabulary itself. **However many buckets came
132
+ * back.** This threshold used to be counted against the answer's evidence,
133
+ * and on a stand holding three cars the make axis has three buckets, drew
134
+ * three checkboxes, and hid the other four hundred makes behind nothing at
135
+ * all: the founder's "what if there are hundreds of options" is a question about the DICTIONARY,
136
+ * and the dictionary is large whether or not this leaf has stock. The
137
+ * field is also the only control that can search values the answer never
138
+ * enumerated, which is exactly the case a thin stand produces;
131
139
  * - there is NO def at all and the answer came back with more values than a
132
140
  * fold. At a live classified's cars branch the storefront passed an empty
133
141
  * feature list, so the 418 makes arrived as an unnamed, untyped group of
@@ -135,20 +143,20 @@ function singleChoice(feature) {
135
143
  * answers that, and refusing to draw one because the schema is missing
136
144
  * punishes the buyer for the wiring.
137
145
  *
138
- * Either way it takes more than {@link FACET_DICTIONARY_THRESHOLD} EVIDENCE
139
- * buckets values the answer actually counted. A zero-filled option table or
140
- * a schema-only tail is a list a person can already read, and a box over it
141
- * would search for values no document carries.
146
+ * An INLINE option set is never one, whatever its length: a `select` carries
147
+ * its own table, that table is the whole of the axis, and a small one
148
+ * (≤ {@link FACET_DICTIONARY_THRESHOLD} options) is a list a person reads at
149
+ * a glance rather than types into.
142
150
  */
143
151
  export function isDictionaryFacet(group) {
144
- const buckets = group.options.filter((option) => option.count !== null && option.count > 0).length;
145
- if (buckets <= FACET_DICTIONARY_THRESHOLD)
146
- return false;
147
- const feature = group.feature;
148
- if (feature === undefined)
152
+ if (facetGroupIsVocabularyBacked(group))
149
153
  return true;
150
- const type = featureType(feature);
151
- return type !== undefined && VOCABULARY_BACKED_TYPES.includes(type);
154
+ // A typed def that is not vocabulary-backed carries its options inline:
155
+ // checkboxes or pills, however many there are.
156
+ if (group.feature !== undefined)
157
+ return false;
158
+ const buckets = group.options.filter((option) => option.count !== null && option.count > 0).length;
159
+ return buckets > FACET_DICTIONARY_THRESHOLD;
152
160
  }
153
161
  /**
154
162
  * Which of the four shapes a group takes.
@@ -161,9 +169,9 @@ export function isDictionaryFacet(group) {
161
169
  * `maxSelected: 1` over a 418-value vocabulary, so "pick one" won and the
162
170
  * control it produced was four hundred pills in a 280px rail — a wall
163
171
  * with a different border radius. Above the fold the shape a person needs
164
- * is a search box, whether or not they may tick two; below it,
165
- * single-choice still means pills, because `isDictionaryFacet` requires
166
- * more than {@link FACET_DICTIONARY_THRESHOLD} counted buckets;
172
+ * is a search box, whether or not they may tick two. A single-choice axis
173
+ * with an INLINE option table still means pills, because a dictionary is
174
+ * now about where the values live and not about how many came back;
167
175
  * - and a dictionary is a dictionary before it is a checkbox list, because
168
176
  * the checkbox list is the shape it was drawn as when nobody could pick a
169
177
  * make.