@almadar/core 10.42.0 → 10.44.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-07-28T16:34:50.202Z",
3
+ "exportedAt": "2026-07-29T19:32:01.461Z",
4
4
  "mappings": {
5
5
  "page-header": {
6
6
  "component": "PageHeader",
@@ -1378,6 +1378,11 @@
1378
1378
  "component": "DrawGroup",
1379
1379
  "importPath": "@/components/game/atoms/DrawGroup",
1380
1380
  "category": "game"
1381
+ },
1382
+ "emoji-picker": {
1383
+ "component": "EmojiPicker",
1384
+ "importPath": "@/components/core/molecules/EmojiPicker",
1385
+ "category": "component"
1381
1386
  }
1382
1387
  }
1383
1388
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-07-28T16:34:50.202Z",
3
+ "exportedAt": "2026-07-29T19:32:01.461Z",
4
4
  "contracts": {
5
5
  "form": {
6
6
  "emits": [
@@ -1,10 +1,10 @@
1
- import { A as AnyPatternConfig, h as RenderBinding, F as FieldValue, a$ as PatternType, J as JsonValue } from '../effect-D4os99OL.js';
2
- export { aU as PATTERN_TYPES, aY as PatternConfig, aZ as PatternProps, a_ as PatternPropsMap, cR as isValidPatternType } from '../effect-D4os99OL.js';
3
- import { d as EventPayloadValue, a as EventPayload } from '../expression-DpAj1RzP.js';
1
+ import { A as AnyPatternConfig, h as RenderBinding, F as FieldValue, aY as PatternType } from '../effect-NbTgX2yB.js';
2
+ export { aR as PATTERN_TYPES, aV as PatternConfig, aW as PatternProps, aX as PatternPropsMap, cL as isValidPatternType } from '../effect-NbTgX2yB.js';
3
+ import { d as EventPayloadValue, a as EventPayload, J as JsonValue } from '../expression-Yf7qvvOs.js';
4
4
  import 'zod';
5
5
 
6
6
  var version$3 = "1.0.0";
7
- var exportedAt$3 = "2026-07-28T16:34:50.202Z";
7
+ var exportedAt$3 = "2026-07-29T19:32:01.461Z";
8
8
  var patterns = {
9
9
  "entity-table": {
10
10
  type: "entity-table",
@@ -8531,6 +8531,25 @@ var patterns = {
8531
8531
  description: "Show arrow",
8532
8532
  "default": true
8533
8533
  },
8534
+ open: {
8535
+ types: [
8536
+ "boolean"
8537
+ ],
8538
+ description: "Controlled open state. When set, the host owns visibility and the popover reports intent through onOpenChange instead of toggling itself."
8539
+ },
8540
+ onOpenChange: {
8541
+ types: [
8542
+ "function"
8543
+ ],
8544
+ description: "Fired when the popover wants to change visibility (trigger click, outside click)",
8545
+ kind: "callback",
8546
+ callbackArgs: [
8547
+ {
8548
+ name: "open",
8549
+ type: "boolean"
8550
+ }
8551
+ ]
8552
+ },
8534
8553
  className: {
8535
8554
  types: [
8536
8555
  "string"
@@ -33631,6 +33650,13 @@ var patterns = {
33631
33650
  ],
33632
33651
  description: "Max inline action buttons before the rest collapse into a \"⋯\" overflow menu. Omit = all inline."
33633
33652
  },
33653
+ itemClickEvent: {
33654
+ types: [
33655
+ "string"
33656
+ ],
33657
+ description: "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract.",
33658
+ kind: "event"
33659
+ },
33634
33660
  selectable: {
33635
33661
  types: [
33636
33662
  "boolean"
@@ -35151,9 +35177,22 @@ var patterns = {
35151
35177
  types: [
35152
35178
  "number"
35153
35179
  ],
35154
- description: "Render scale (0.4 = 40% zoom). Ignored by `free`/`side` (world-pixel-direct).",
35180
+ description: "Render scale, legacy-squared semantics: on-screen cell ≈ `256 × scale²` px (the authored contract every board tuned its value for). Converted internally to the single camera zoom against the board's native tile width, so the cell pitch follows the asset while the on-screen size stays as authored. Ignored when `fit` is on; passed through raw for `free`/`side` (world-pixel-direct).",
35155
35181
  "default": 0.4
35156
35182
  },
35183
+ tileWidth: {
35184
+ types: [
35185
+ "number"
35186
+ ],
35187
+ description: "Native tile/cell width in source px for this board's asset (e.g. 16 for Kenney tiny-dungeon, ~128 for iso blocks). The grid cell pitch follows the asset, so tile textures map 1:1 (crisp, no stretch). Defaults to the detected atlas tile width, else 256."
35188
+ },
35189
+ fit: {
35190
+ types: [
35191
+ "boolean"
35192
+ ],
35193
+ description: "Auto-fit the board's grid extent to the viewport (default false — boards render at their authored `scale` and overflow → pan). Opt in for whole-board-overview boards. User wheel/pinch zoom always wins after the initial fit.",
35194
+ "default": false
35195
+ },
35157
35196
  showMinimap: {
35158
35197
  types: [
35159
35198
  "boolean"
@@ -39609,13 +39648,13 @@ var patterns = {
39609
39648
  types: [
39610
39649
  "number"
39611
39650
  ],
39612
- description: "Draw width in world units (fractions of `projector.tileWidth`); omittedresolved source width in px."
39651
+ description: "Draw width in world units (fractions of `projector.tileWidth`). Omittedone cell on tile grids (`flat`/`iso`/`hex`); native source px on `free`/`side`."
39613
39652
  },
39614
39653
  height: {
39615
39654
  types: [
39616
39655
  "number"
39617
39656
  ],
39618
- description: "Draw height in world units (fractions of `projector.tileWidth`); omittedresolved source height in px."
39657
+ description: "Draw height in world units (fractions of `projector.tileWidth`). Omittedone cell on tile grids (`flat`/`iso`/`hex`); native source px on `free`/`side`."
39619
39658
  },
39620
39659
  frame: {
39621
39660
  types: [
@@ -40358,6 +40397,18 @@ var patterns = {
40358
40397
  ],
40359
40398
  description: "Minimap overlay (2D)."
40360
40399
  },
40400
+ fit: {
40401
+ types: [
40402
+ "boolean"
40403
+ ],
40404
+ description: "Auto-fit the board's grid extent to the viewport (2D grid layouts; default false — boards render at their authored `camera.zoom` scale)."
40405
+ },
40406
+ tileWidth: {
40407
+ types: [
40408
+ "number"
40409
+ ],
40410
+ description: "Native tile/cell width in source px of the board's asset (2D grid layouts; defaults to the detected atlas tile width, else 256)."
40411
+ },
40361
40412
  backgroundImage: {
40362
40413
  types: [
40363
40414
  "asset",
@@ -41142,6 +41193,60 @@ var patterns = {
41142
41193
  },
41143
41194
  drawable: true,
41144
41195
  drawHost: true
41196
+ },
41197
+ "emoji-picker": {
41198
+ type: "emoji-picker",
41199
+ category: "component",
41200
+ tier: "molecules",
41201
+ family: "core",
41202
+ description: "EmojiPicker component",
41203
+ suggestedFor: [
41204
+ "emoji",
41205
+ "picker",
41206
+ "emoji picker"
41207
+ ],
41208
+ typicalSize: "medium",
41209
+ propsSchema: {
41210
+ pickEvent: {
41211
+ types: [
41212
+ "string"
41213
+ ],
41214
+ description: "Declarative event name — picking an emoji emits UI:{pickEvent} with { emoji } via eventBus",
41215
+ kind: "event"
41216
+ },
41217
+ position: {
41218
+ types: [
41219
+ "string"
41220
+ ],
41221
+ description: "Which side of the trigger the panel opens on",
41222
+ enumValues: [
41223
+ "top",
41224
+ "bottom"
41225
+ ],
41226
+ "default": "top"
41227
+ },
41228
+ triggerIcon: {
41229
+ types: [
41230
+ "icon",
41231
+ "string"
41232
+ ],
41233
+ description: "Icon shown on the trigger button",
41234
+ "default": "smile"
41235
+ },
41236
+ triggerLabel: {
41237
+ types: [
41238
+ "string"
41239
+ ],
41240
+ description: "Accessible label for the trigger button",
41241
+ "default": "Add emoji"
41242
+ },
41243
+ className: {
41244
+ types: [
41245
+ "string"
41246
+ ],
41247
+ description: "Additional CSS classes applied to the trigger button"
41248
+ }
41249
+ }
41145
41250
  }
41146
41251
  };
41147
41252
  var categories$1 = [
@@ -42069,7 +42174,7 @@ var integratorsRegistry = {
42069
42174
  };
42070
42175
 
42071
42176
  var version$1 = "1.0.0";
42072
- var exportedAt$1 = "2026-07-28T16:34:50.202Z";
42177
+ var exportedAt$1 = "2026-07-29T19:32:01.461Z";
42073
42178
  var mappings = {
42074
42179
  "page-header": {
42075
42180
  component: "PageHeader",
@@ -43447,6 +43552,11 @@ var mappings = {
43447
43552
  component: "DrawGroup",
43448
43553
  importPath: "@/components/game/atoms/DrawGroup",
43449
43554
  category: "game"
43555
+ },
43556
+ "emoji-picker": {
43557
+ component: "EmojiPicker",
43558
+ importPath: "@/components/core/molecules/EmojiPicker",
43559
+ category: "component"
43450
43560
  }
43451
43561
  };
43452
43562
  var componentMapping = {
@@ -43456,7 +43566,7 @@ var componentMapping = {
43456
43566
  };
43457
43567
 
43458
43568
  var version = "1.0.0";
43459
- var exportedAt = "2026-07-28T16:34:50.202Z";
43569
+ var exportedAt = "2026-07-29T19:32:01.461Z";
43460
43570
  var contracts = {
43461
43571
  form: {
43462
43572
  emits: [
@@ -44954,6 +45064,15 @@ type SelectionChangePayload = EventPayload & {
44954
45064
  * destructure without runtime checks.
44955
45065
  */
44956
45066
  type LoadMoreRequestPayload = EventPayload;
45067
+ /**
45068
+ * Payload dispatched by an emoji-choosing pattern (`pickEvent` on
45069
+ * EmojiPicker) when the user picks a glyph. The receiving trait appends
45070
+ * the glyph to a draft, records a reaction, etc.
45071
+ */
45072
+ type EmojiPickPayload = EventPayload & {
45073
+ /** The chosen emoji glyph (e.g. "😀"). */
45074
+ emoji: string;
45075
+ };
44957
45076
  /**
44958
45077
  * Payload dispatched by a schema-driven `Form` on successful submit
44959
45078
  * (`submitEvent`). `data` holds the form's collected field values.
@@ -50350,6 +50469,19 @@ declare const registry: {
50350
50469
  description: string;
50351
50470
  default: boolean;
50352
50471
  };
50472
+ open: {
50473
+ types: string[];
50474
+ description: string;
50475
+ };
50476
+ onOpenChange: {
50477
+ types: string[];
50478
+ description: string;
50479
+ kind: string;
50480
+ callbackArgs: {
50481
+ name: string;
50482
+ type: string;
50483
+ }[];
50484
+ };
50353
50485
  className: {
50354
50486
  types: string[];
50355
50487
  description: string;
@@ -65735,6 +65867,11 @@ declare const registry: {
65735
65867
  types: string[];
65736
65868
  description: string;
65737
65869
  };
65870
+ itemClickEvent: {
65871
+ types: string[];
65872
+ description: string;
65873
+ kind: string;
65874
+ };
65738
65875
  selectable: {
65739
65876
  types: string[];
65740
65877
  description: string;
@@ -66683,6 +66820,15 @@ declare const registry: {
66683
66820
  description: string;
66684
66821
  default: number;
66685
66822
  };
66823
+ tileWidth: {
66824
+ types: string[];
66825
+ description: string;
66826
+ };
66827
+ fit: {
66828
+ types: string[];
66829
+ description: string;
66830
+ default: boolean;
66831
+ };
66686
66832
  showMinimap: {
66687
66833
  types: string[];
66688
66834
  description: string;
@@ -69825,6 +69971,14 @@ declare const registry: {
69825
69971
  types: string[];
69826
69972
  description: string;
69827
69973
  };
69974
+ fit: {
69975
+ types: string[];
69976
+ description: string;
69977
+ };
69978
+ tileWidth: {
69979
+ types: string[];
69980
+ description: string;
69981
+ };
69828
69982
  backgroundImage: {
69829
69983
  types: string[];
69830
69984
  description: string;
@@ -70314,6 +70468,42 @@ declare const registry: {
70314
70468
  drawable: boolean;
70315
70469
  drawHost: boolean;
70316
70470
  };
70471
+ "emoji-picker": {
70472
+ type: string;
70473
+ category: string;
70474
+ tier: string;
70475
+ family: string;
70476
+ description: string;
70477
+ suggestedFor: string[];
70478
+ typicalSize: string;
70479
+ propsSchema: {
70480
+ pickEvent: {
70481
+ types: string[];
70482
+ description: string;
70483
+ kind: string;
70484
+ };
70485
+ position: {
70486
+ types: string[];
70487
+ description: string;
70488
+ enumValues: string[];
70489
+ default: string;
70490
+ };
70491
+ triggerIcon: {
70492
+ types: string[];
70493
+ description: string;
70494
+ default: string;
70495
+ };
70496
+ triggerLabel: {
70497
+ types: string[];
70498
+ description: string;
70499
+ default: string;
70500
+ };
70501
+ className: {
70502
+ types: string[];
70503
+ description: string;
70504
+ };
70505
+ };
70506
+ };
70317
70507
  };
70318
70508
  categories: string[];
70319
70509
  };
@@ -75490,6 +75680,19 @@ declare const PATTERN_REGISTRY: {
75490
75680
  description: string;
75491
75681
  default: boolean;
75492
75682
  };
75683
+ open: {
75684
+ types: string[];
75685
+ description: string;
75686
+ };
75687
+ onOpenChange: {
75688
+ types: string[];
75689
+ description: string;
75690
+ kind: string;
75691
+ callbackArgs: {
75692
+ name: string;
75693
+ type: string;
75694
+ }[];
75695
+ };
75493
75696
  className: {
75494
75697
  types: string[];
75495
75698
  description: string;
@@ -90875,6 +91078,11 @@ declare const PATTERN_REGISTRY: {
90875
91078
  types: string[];
90876
91079
  description: string;
90877
91080
  };
91081
+ itemClickEvent: {
91082
+ types: string[];
91083
+ description: string;
91084
+ kind: string;
91085
+ };
90878
91086
  selectable: {
90879
91087
  types: string[];
90880
91088
  description: string;
@@ -91823,6 +92031,15 @@ declare const PATTERN_REGISTRY: {
91823
92031
  description: string;
91824
92032
  default: number;
91825
92033
  };
92034
+ tileWidth: {
92035
+ types: string[];
92036
+ description: string;
92037
+ };
92038
+ fit: {
92039
+ types: string[];
92040
+ description: string;
92041
+ default: boolean;
92042
+ };
91826
92043
  showMinimap: {
91827
92044
  types: string[];
91828
92045
  description: string;
@@ -94965,6 +95182,14 @@ declare const PATTERN_REGISTRY: {
94965
95182
  types: string[];
94966
95183
  description: string;
94967
95184
  };
95185
+ fit: {
95186
+ types: string[];
95187
+ description: string;
95188
+ };
95189
+ tileWidth: {
95190
+ types: string[];
95191
+ description: string;
95192
+ };
94968
95193
  backgroundImage: {
94969
95194
  types: string[];
94970
95195
  description: string;
@@ -95454,6 +95679,42 @@ declare const PATTERN_REGISTRY: {
95454
95679
  drawable: boolean;
95455
95680
  drawHost: boolean;
95456
95681
  };
95682
+ "emoji-picker": {
95683
+ type: string;
95684
+ category: string;
95685
+ tier: string;
95686
+ family: string;
95687
+ description: string;
95688
+ suggestedFor: string[];
95689
+ typicalSize: string;
95690
+ propsSchema: {
95691
+ pickEvent: {
95692
+ types: string[];
95693
+ description: string;
95694
+ kind: string;
95695
+ };
95696
+ position: {
95697
+ types: string[];
95698
+ description: string;
95699
+ enumValues: string[];
95700
+ default: string;
95701
+ };
95702
+ triggerIcon: {
95703
+ types: string[];
95704
+ description: string;
95705
+ default: string;
95706
+ };
95707
+ triggerLabel: {
95708
+ types: string[];
95709
+ description: string;
95710
+ default: string;
95711
+ };
95712
+ className: {
95713
+ types: string[];
95714
+ description: string;
95715
+ };
95716
+ };
95717
+ };
95457
95718
  };
95458
95719
  categories: string[];
95459
95720
  };
@@ -97532,6 +97793,11 @@ declare const COMPONENT_MAPPING: {
97532
97793
  importPath: string;
97533
97794
  category: string;
97534
97795
  };
97796
+ "emoji-picker": {
97797
+ component: string;
97798
+ importPath: string;
97799
+ category: string;
97800
+ };
97535
97801
  };
97536
97802
  };
97537
97803
  declare const EVENT_CONTRACTS: {
@@ -98289,4 +98555,4 @@ declare function isDrawablePattern(patternType: string): boolean;
98289
98555
  */
98290
98556
  declare function isDrawHostPattern(patternType: string): boolean;
98291
98557
 
98292
- export { AnyPatternConfig, COMPONENT_MAPPING, EVENT_CONTRACTS, type FormSubmitPayload, INTEGRATORS_REGISTRY, type ItemActionPayload, type LoadMoreRequestPayload, PATTERN_REGISTRY, type PatternCallbackArg, type PatternEntry, type PatternPayloadField, type PatternPropDef, type PatternRecommendation, type PatternSwapGate, PatternType, type PropKind, type RecommendationContext, type RenderUiPayload, type SelectionChangePayload, buildRecommendationContext, collectRenderUiPatternTypes, componentMapping, eventContracts, findCompatiblePatterns, formatRecommendationsForPrompt, generatePatternDescription, getAllPatternTypes, getComponentForPattern, getEmittedEvents, getEntityCardinality, getOrbAllowedPatterns, getOrbAllowedPatternsCompact, getOrbAllowedPatternsFiltered, getOrbAllowedPatternsSlim, getPatternActionsRef, getPatternDefinition, getPatternMetadata, getPatternPropsCompact, getPatternsGroupedByCategory, integratorsRegistry, isContentBodyPattern, isContentBodyPatternType, isDrawHostPattern, isDrawablePattern, isEntityAwarePattern, isMainSlotRenderUi, patternsRegistry, recommendPatterns, registry, renderUiPatternTypesOf };
98558
+ export { AnyPatternConfig, COMPONENT_MAPPING, EVENT_CONTRACTS, type EmojiPickPayload, type FormSubmitPayload, INTEGRATORS_REGISTRY, type ItemActionPayload, type LoadMoreRequestPayload, PATTERN_REGISTRY, type PatternCallbackArg, type PatternEntry, type PatternPayloadField, type PatternPropDef, type PatternRecommendation, type PatternSwapGate, PatternType, type PropKind, type RecommendationContext, type RenderUiPayload, type SelectionChangePayload, buildRecommendationContext, collectRenderUiPatternTypes, componentMapping, eventContracts, findCompatiblePatterns, formatRecommendationsForPrompt, generatePatternDescription, getAllPatternTypes, getComponentForPattern, getEmittedEvents, getEntityCardinality, getOrbAllowedPatterns, getOrbAllowedPatternsCompact, getOrbAllowedPatternsFiltered, getOrbAllowedPatternsSlim, getPatternActionsRef, getPatternDefinition, getPatternMetadata, getPatternPropsCompact, getPatternsGroupedByCategory, integratorsRegistry, isContentBodyPattern, isContentBodyPatternType, isDrawHostPattern, isDrawablePattern, isEntityAwarePattern, isMainSlotRenderUi, patternsRegistry, recommendPatterns, registry, renderUiPatternTypesOf };
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  // src/patterns/patterns-registry.json
4
4
  var patterns_registry_default = {
5
5
  version: "1.0.0",
6
- exportedAt: "2026-07-28T16:34:50.202Z",
6
+ exportedAt: "2026-07-29T19:32:01.461Z",
7
7
  patterns: {
8
8
  "entity-table": {
9
9
  type: "entity-table",
@@ -8498,6 +8498,25 @@ var patterns_registry_default = {
8498
8498
  description: "Show arrow",
8499
8499
  default: true
8500
8500
  },
8501
+ open: {
8502
+ types: [
8503
+ "boolean"
8504
+ ],
8505
+ description: "Controlled open state. When set, the host owns visibility and the popover reports intent through onOpenChange instead of toggling itself."
8506
+ },
8507
+ onOpenChange: {
8508
+ types: [
8509
+ "function"
8510
+ ],
8511
+ description: "Fired when the popover wants to change visibility (trigger click, outside click)",
8512
+ kind: "callback",
8513
+ callbackArgs: [
8514
+ {
8515
+ name: "open",
8516
+ type: "boolean"
8517
+ }
8518
+ ]
8519
+ },
8501
8520
  className: {
8502
8521
  types: [
8503
8522
  "string"
@@ -33550,6 +33569,13 @@ var patterns_registry_default = {
33550
33569
  ],
33551
33570
  description: 'Max inline action buttons before the rest collapse into a "\u22EF" overflow menu. Omit = all inline.'
33552
33571
  },
33572
+ itemClickEvent: {
33573
+ types: [
33574
+ "string"
33575
+ ],
33576
+ description: "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract.",
33577
+ kind: "event"
33578
+ },
33553
33579
  selectable: {
33554
33580
  types: [
33555
33581
  "boolean"
@@ -35068,9 +35094,22 @@ var patterns_registry_default = {
35068
35094
  types: [
35069
35095
  "number"
35070
35096
  ],
35071
- description: "Render scale (0.4 = 40% zoom). Ignored by `free`/`side` (world-pixel-direct).",
35097
+ description: "Render scale, legacy-squared semantics: on-screen cell \u2248 `256 \xD7 scale\xB2` px (the authored contract every board tuned its value for). Converted internally to the single camera zoom against the board's native tile width, so the cell pitch follows the asset while the on-screen size stays as authored. Ignored when `fit` is on; passed through raw for `free`/`side` (world-pixel-direct).",
35072
35098
  default: 0.4
35073
35099
  },
35100
+ tileWidth: {
35101
+ types: [
35102
+ "number"
35103
+ ],
35104
+ description: "Native tile/cell width in source px for this board's asset (e.g. 16 for Kenney tiny-dungeon, ~128 for iso blocks). The grid cell pitch follows the asset, so tile textures map 1:1 (crisp, no stretch). Defaults to the detected atlas tile width, else 256."
35105
+ },
35106
+ fit: {
35107
+ types: [
35108
+ "boolean"
35109
+ ],
35110
+ description: "Auto-fit the board's grid extent to the viewport (default false \u2014 boards render at their authored `scale` and overflow \u2192 pan). Opt in for whole-board-overview boards. User wheel/pinch zoom always wins after the initial fit.",
35111
+ default: false
35112
+ },
35074
35113
  showMinimap: {
35075
35114
  types: [
35076
35115
  "boolean"
@@ -39506,13 +39545,13 @@ var patterns_registry_default = {
39506
39545
  types: [
39507
39546
  "number"
39508
39547
  ],
39509
- description: "Draw width in world units (fractions of `projector.tileWidth`); omitted \u2192 resolved source width in px."
39548
+ description: "Draw width in world units (fractions of `projector.tileWidth`). Omitted \u2192 one cell on tile grids (`flat`/`iso`/`hex`); native source px on `free`/`side`."
39510
39549
  },
39511
39550
  height: {
39512
39551
  types: [
39513
39552
  "number"
39514
39553
  ],
39515
- description: "Draw height in world units (fractions of `projector.tileWidth`); omitted \u2192 resolved source height in px."
39554
+ description: "Draw height in world units (fractions of `projector.tileWidth`). Omitted \u2192 one cell on tile grids (`flat`/`iso`/`hex`); native source px on `free`/`side`."
39516
39555
  },
39517
39556
  frame: {
39518
39557
  types: [
@@ -40255,6 +40294,18 @@ var patterns_registry_default = {
40255
40294
  ],
40256
40295
  description: "Minimap overlay (2D)."
40257
40296
  },
40297
+ fit: {
40298
+ types: [
40299
+ "boolean"
40300
+ ],
40301
+ description: "Auto-fit the board's grid extent to the viewport (2D grid layouts; default false \u2014 boards render at their authored `camera.zoom` scale)."
40302
+ },
40303
+ tileWidth: {
40304
+ types: [
40305
+ "number"
40306
+ ],
40307
+ description: "Native tile/cell width in source px of the board's asset (2D grid layouts; defaults to the detected atlas tile width, else 256)."
40308
+ },
40258
40309
  backgroundImage: {
40259
40310
  types: [
40260
40311
  "asset",
@@ -41035,6 +41086,60 @@ var patterns_registry_default = {
41035
41086
  },
41036
41087
  drawable: true,
41037
41088
  drawHost: true
41089
+ },
41090
+ "emoji-picker": {
41091
+ type: "emoji-picker",
41092
+ category: "component",
41093
+ tier: "molecules",
41094
+ family: "core",
41095
+ description: "EmojiPicker component",
41096
+ suggestedFor: [
41097
+ "emoji",
41098
+ "picker",
41099
+ "emoji picker"
41100
+ ],
41101
+ typicalSize: "medium",
41102
+ propsSchema: {
41103
+ pickEvent: {
41104
+ types: [
41105
+ "string"
41106
+ ],
41107
+ description: "Declarative event name \u2014 picking an emoji emits UI:{pickEvent} with { emoji } via eventBus",
41108
+ kind: "event"
41109
+ },
41110
+ position: {
41111
+ types: [
41112
+ "string"
41113
+ ],
41114
+ description: "Which side of the trigger the panel opens on",
41115
+ enumValues: [
41116
+ "top",
41117
+ "bottom"
41118
+ ],
41119
+ default: "top"
41120
+ },
41121
+ triggerIcon: {
41122
+ types: [
41123
+ "icon",
41124
+ "string"
41125
+ ],
41126
+ description: "Icon shown on the trigger button",
41127
+ default: "smile"
41128
+ },
41129
+ triggerLabel: {
41130
+ types: [
41131
+ "string"
41132
+ ],
41133
+ description: "Accessible label for the trigger button",
41134
+ default: "Add emoji"
41135
+ },
41136
+ className: {
41137
+ types: [
41138
+ "string"
41139
+ ],
41140
+ description: "Additional CSS classes applied to the trigger button"
41141
+ }
41142
+ }
41038
41143
  }
41039
41144
  },
41040
41145
  categories: [
@@ -41956,7 +42061,7 @@ var integrators_registry_default = {
41956
42061
  // src/patterns/component-mapping.json
41957
42062
  var component_mapping_default = {
41958
42063
  version: "1.0.0",
41959
- exportedAt: "2026-07-28T16:34:50.202Z",
42064
+ exportedAt: "2026-07-29T19:32:01.461Z",
41960
42065
  mappings: {
41961
42066
  "page-header": {
41962
42067
  component: "PageHeader",
@@ -43334,6 +43439,11 @@ var component_mapping_default = {
43334
43439
  component: "DrawGroup",
43335
43440
  importPath: "@/components/game/atoms/DrawGroup",
43336
43441
  category: "game"
43442
+ },
43443
+ "emoji-picker": {
43444
+ component: "EmojiPicker",
43445
+ importPath: "@/components/core/molecules/EmojiPicker",
43446
+ category: "component"
43337
43447
  }
43338
43448
  }
43339
43449
  };
@@ -43341,7 +43451,7 @@ var component_mapping_default = {
43341
43451
  // src/patterns/event-contracts.json
43342
43452
  var event_contracts_default = {
43343
43453
  version: "1.0.0",
43344
- exportedAt: "2026-07-28T16:34:50.202Z",
43454
+ exportedAt: "2026-07-29T19:32:01.461Z",
43345
43455
  contracts: {
43346
43456
  form: {
43347
43457
  emits: [
@@ -44581,6 +44691,7 @@ var PATTERN_TYPES = [
44581
44691
  "drawer",
44582
44692
  "drawer-slot",
44583
44693
  "edge-decoration",
44694
+ "emoji-picker",
44584
44695
  "empty-state",
44585
44696
  "entity-cards",
44586
44697
  "entity-list",