@lahat-group/cli 1.0.0 → 1.1.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 (2) hide show
  1. package/dist/index.js +1124 -1202
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -7229,184 +7229,178 @@ var NEVER = INVALID;
7229
7229
  // ../../packages/shared/src/materialIds.ts
7230
7230
  init_esm_shims();
7231
7231
  var MATERIAL_IDS = [
7232
- // Interior-only colors (current product catalog)
7232
+ // Interior-only colors (current product catalog) — generated
7233
+ // <generated:interior-ids>
7234
+ "interior-ph158-sm",
7235
+ "interior-ph159-sm",
7236
+ "interior-ph163-sm",
7237
+ "interior-kh62-dt",
7238
+ // </generated:interior-ids>
7239
+ // Replaced interior colors (2026-08-14) — kept so frozen order snapshots still resolve a
7240
+ // label + supplier code; normalized to DEFAULT_INTERNAL_MATERIAL_ID at consumption.
7233
7241
  "interior-eco-white",
7234
7242
  "interior-champagne",
7235
7243
  "interior-bright-grey",
7236
7244
  "interior-oak-natue",
7237
7245
  // Interior-only melamine (legacy — kept for backward-compat with saved designs;
7238
- // normalized to interior-eco-white via normalizeInternalMaterialId at consumption)
7246
+ // normalized to DEFAULT_INTERNAL_MATERIAL_ID via normalizeInternalMaterialId at consumption)
7239
7247
  "white-melamine",
7240
7248
  "oak-veneer",
7241
7249
  "walnut-veneer",
7242
- // Melamine — Portalline collection (SM'art + Kaindl)
7243
- // Soho (SM'art, NT)
7244
- "ml-soho-natural",
7245
- "ml-soho-brown",
7246
- "ml-soho-grey",
7247
- // Amazon Ash (SM'art, NT)
7248
- "ml-amazon-ash-bleached",
7249
- "ml-amazon-ash-brown",
7250
- "ml-amazon-ash-chestnut",
7251
- "ml-amazon-ash-grey",
7252
- "ml-amazon-ash-taupe",
7253
- // Saqqara (SM'art, NT)
7254
- "ml-saqqara-bleached",
7255
- "ml-saqqara-natural",
7256
- "ml-saqqara-red",
7257
- "ml-saqqara-light-brown",
7258
- "ml-saqqara-chestnut",
7259
- // Allon DT (Kaindl)
7260
- "kl-oak-natural",
7261
- "kl-oak-split-natural",
7262
- "kl-oak-split-smoked",
7263
- "kl-oak-cognac",
7264
- "kl-oak-trunk",
7265
- // Allon / Vinto NT (Kaindl)
7266
- "kl-oak-light",
7267
- "kl-oak-brown",
7268
- "kl-oak-dark-brown",
7269
- "kl-oak-greyish",
7270
- "kl-vinto-cortina",
7271
- // Horsh (Kaindl, DT)
7272
- "kl-oak-bronze",
7273
- "kl-oak-platinum",
7274
- "kl-oak-white",
7275
- "kl-oak-split",
7276
- "kl-teak",
7277
- "kl-ash-grey",
7278
- // Aks DT (SM'art, pattern)
7279
- "ml-aks-khaki",
7280
- "ml-aks-black",
7281
- "ml-aks-white",
7282
- // Acrylic PURE — matte flat (Bluran/SENOSAN, מניפה 6)
7283
- "acrylic-mocha-matte",
7284
- "acrylic-khaki-grey-matte",
7285
- "acrylic-sahara-matte",
7286
- "acrylic-light-grey-matte",
7287
- "acrylic-antique-blue-matte",
7288
- "acrylic-antique-green-matte",
7289
- "acrylic-ivory-matte",
7290
- "acrylic-coffee-matte",
7291
- "acrylic-white-matte",
7292
- "acrylic-grayish-matte",
7293
- "acrylic-smoky-grey-matte",
7294
- "acrylic-indigo-blue-matte",
7295
- "acrylic-pearl-white-matte",
7296
- "acrylic-greige-matte",
7297
- "acrylic-forest-green-matte",
7298
- "acrylic-earth-brown-matte",
7299
- "acrylic-dark-grey-matte",
7300
- "acrylic-dark-black-matte",
7301
- // Acrylic PURE — glossy flat (Bluran/SENOSAN, מניפה 36)
7302
- "acrylic-pure-white-gloss",
7303
- "acrylic-ivory-gloss",
7304
- "acrylic-light-grey-gloss",
7305
- "acrylic-cream-gloss",
7306
- "acrylic-off-white-gloss",
7307
- "acrylic-sahara-gloss",
7308
- "acrylic-mocha-gloss",
7309
- "acrylic-antique-blue-gloss",
7310
- "acrylic-dark-grey-gloss",
7311
- "acrylic-khaki-grey-gloss",
7312
- // Acrylic Fantasy — metallic (Bluran/SENOSAN, מניפה 40)
7313
- "acrylic-metallic-grey",
7314
- "acrylic-bronze",
7315
- "acrylic-metallic-silver",
7316
- "acrylic-metallic-white",
7317
- "acrylic-champagne-silk",
7318
- "acrylic-peach-gold",
7319
- "acrylic-rose-gold",
7320
- "acrylic-metallic-champagne"
7250
+ // <generated:exterior-ids>
7251
+ // Acrylic — flat shades
7252
+ "acrylic-za35-sm",
7253
+ "acrylic-za71-sm",
7254
+ "acrylic-za05-sm",
7255
+ "acrylic-za72-sm",
7256
+ "acrylic-za310-sm",
7257
+ "acrylic-za07-sm",
7258
+ "acrylic-za85-sm",
7259
+ "acrylic-za86-sm",
7260
+ "acrylic-za70-sm",
7261
+ "acrylic-za08-sm",
7262
+ "acrylic-za69-sm",
7263
+ "acrylic-za06-sm",
7264
+ "acrylic-za301-sm",
7265
+ "acrylic-za03-sm",
7266
+ "acrylic-za04-sm",
7267
+ "acrylic-za38-sm",
7268
+ "acrylic-za300-sm",
7269
+ "acrylic-za02-sm",
7270
+ "acrylic-za36-sm",
7271
+ "acrylic-za39-sm",
7272
+ "acrylic-za37-sm",
7273
+ // Melamine — wood grain
7274
+ "mel-kl67-nt",
7275
+ "mel-kh69-dt",
7276
+ "mel-kh63-dt",
7277
+ "mel-kh61-dt",
7278
+ "mel-kh14-dt",
7279
+ "mel-kh68-dt",
7280
+ "mel-kh62-dt",
7281
+ "mel-kh31-dt",
7282
+ "mel-kh32-dt",
7283
+ "mel-kh65-dt",
7284
+ "mel-kh66-dt",
7285
+ "mel-kh74-dt",
7286
+ "mel-kh37-dt",
7287
+ "mel-kh30-dt",
7288
+ "mel-kh64-dt",
7289
+ "mel-kh15-dt",
7290
+ "mel-kh75-dt",
7291
+ "mel-kh33-dt",
7292
+ // Melamine — flat shades
7293
+ "mel-ph158-sm",
7294
+ "mel-ph159-sm",
7295
+ "mel-ph160-sm",
7296
+ "mel-ph161-sm",
7297
+ "mel-ph162-sm",
7298
+ "mel-ph163-sm",
7299
+ "mel-ph164-sm",
7300
+ "mel-ph165-sm",
7301
+ "mel-ph166-sm",
7302
+ "mel-ph167-sm",
7303
+ "mel-ph168-sm",
7304
+ "mel-ph169-sm",
7305
+ "mel-ph170-sm",
7306
+ "mel-ph171-sm",
7307
+ "mel-ph172-sm",
7308
+ "mel-ah07-tap",
7309
+ "mel-ah04-tap",
7310
+ "mel-ah01-tap",
7311
+ "mel-ah05-tap",
7312
+ "mel-ah06-tap"
7313
+ // </generated:exterior-ids>
7321
7314
  ];
7322
7315
  var INTERNAL_MATERIAL_IDS = [
7323
- "interior-eco-white",
7324
- "interior-champagne",
7325
- "interior-bright-grey",
7326
- "interior-oak-natue"
7316
+ // <generated:internal-id-list>
7317
+ "interior-ph158-sm",
7318
+ "interior-ph159-sm",
7319
+ "interior-ph163-sm",
7320
+ "interior-kh62-dt"
7321
+ // </generated:internal-id-list>
7327
7322
  ];
7328
- var DEFAULT_INTERNAL_MATERIAL_ID = "interior-eco-white";
7323
+ var DEFAULT_INTERNAL_MATERIAL_ID = "interior-kh62-dt";
7329
7324
  function normalizeInternalMaterialId(id) {
7330
7325
  if (id && INTERNAL_MATERIAL_IDS.includes(id)) {
7331
7326
  return id;
7332
7327
  }
7333
7328
  return DEFAULT_INTERNAL_MATERIAL_ID;
7334
7329
  }
7330
+ var EVER_INTERIOR_MATERIAL_IDS = /* @__PURE__ */ new Set([
7331
+ ...INTERNAL_MATERIAL_IDS,
7332
+ "interior-eco-white",
7333
+ "interior-champagne",
7334
+ "interior-bright-grey",
7335
+ "interior-oak-natue"
7336
+ ]);
7335
7337
  var EXTERNAL_MATERIAL_IDS = [
7336
- // Melamine — Portalline collection
7337
- "ml-soho-natural",
7338
- "ml-soho-brown",
7339
- "ml-soho-grey",
7340
- "ml-amazon-ash-bleached",
7341
- "ml-amazon-ash-brown",
7342
- "ml-amazon-ash-chestnut",
7343
- "ml-amazon-ash-grey",
7344
- "ml-amazon-ash-taupe",
7345
- "ml-saqqara-bleached",
7346
- "ml-saqqara-natural",
7347
- "ml-saqqara-red",
7348
- "ml-saqqara-light-brown",
7349
- "ml-saqqara-chestnut",
7350
- "kl-oak-natural",
7351
- "kl-oak-split-natural",
7352
- "kl-oak-split-smoked",
7353
- "kl-oak-cognac",
7354
- "kl-oak-trunk",
7355
- "kl-oak-light",
7356
- "kl-oak-brown",
7357
- "kl-oak-dark-brown",
7358
- "kl-oak-greyish",
7359
- "kl-vinto-cortina",
7360
- "kl-oak-bronze",
7361
- "kl-oak-platinum",
7362
- "kl-oak-white",
7363
- "kl-oak-split",
7364
- "kl-teak",
7365
- "kl-ash-grey",
7366
- "ml-aks-khaki",
7367
- "ml-aks-black",
7368
- "ml-aks-white",
7369
- // Acrylic PURE — matte flat
7370
- "acrylic-mocha-matte",
7371
- "acrylic-khaki-grey-matte",
7372
- "acrylic-sahara-matte",
7373
- "acrylic-light-grey-matte",
7374
- "acrylic-antique-blue-matte",
7375
- "acrylic-antique-green-matte",
7376
- "acrylic-ivory-matte",
7377
- "acrylic-coffee-matte",
7378
- "acrylic-white-matte",
7379
- "acrylic-grayish-matte",
7380
- "acrylic-smoky-grey-matte",
7381
- "acrylic-indigo-blue-matte",
7382
- "acrylic-pearl-white-matte",
7383
- "acrylic-greige-matte",
7384
- "acrylic-forest-green-matte",
7385
- "acrylic-earth-brown-matte",
7386
- "acrylic-dark-grey-matte",
7387
- "acrylic-dark-black-matte",
7388
- // Acrylic PURE — glossy flat
7389
- "acrylic-pure-white-gloss",
7390
- "acrylic-ivory-gloss",
7391
- "acrylic-light-grey-gloss",
7392
- "acrylic-cream-gloss",
7393
- "acrylic-off-white-gloss",
7394
- "acrylic-sahara-gloss",
7395
- "acrylic-mocha-gloss",
7396
- "acrylic-antique-blue-gloss",
7397
- "acrylic-dark-grey-gloss",
7398
- "acrylic-khaki-grey-gloss",
7399
- // Acrylic Fantasy — metallic
7400
- "acrylic-metallic-grey",
7401
- "acrylic-bronze",
7402
- "acrylic-metallic-silver",
7403
- "acrylic-metallic-white",
7404
- "acrylic-champagne-silk",
7405
- "acrylic-peach-gold",
7406
- "acrylic-rose-gold",
7407
- "acrylic-metallic-champagne"
7338
+ // <generated:external-id-list>
7339
+ // Acrylic — flat shades
7340
+ "acrylic-za35-sm",
7341
+ "acrylic-za71-sm",
7342
+ "acrylic-za05-sm",
7343
+ "acrylic-za72-sm",
7344
+ "acrylic-za310-sm",
7345
+ "acrylic-za07-sm",
7346
+ "acrylic-za85-sm",
7347
+ "acrylic-za86-sm",
7348
+ "acrylic-za70-sm",
7349
+ "acrylic-za08-sm",
7350
+ "acrylic-za69-sm",
7351
+ "acrylic-za06-sm",
7352
+ "acrylic-za301-sm",
7353
+ "acrylic-za03-sm",
7354
+ "acrylic-za04-sm",
7355
+ "acrylic-za38-sm",
7356
+ "acrylic-za300-sm",
7357
+ "acrylic-za02-sm",
7358
+ "acrylic-za36-sm",
7359
+ "acrylic-za39-sm",
7360
+ "acrylic-za37-sm",
7361
+ // Melamine — wood grain
7362
+ "mel-kl67-nt",
7363
+ "mel-kh69-dt",
7364
+ "mel-kh63-dt",
7365
+ "mel-kh61-dt",
7366
+ "mel-kh14-dt",
7367
+ "mel-kh68-dt",
7368
+ "mel-kh62-dt",
7369
+ "mel-kh31-dt",
7370
+ "mel-kh32-dt",
7371
+ "mel-kh65-dt",
7372
+ "mel-kh66-dt",
7373
+ "mel-kh74-dt",
7374
+ "mel-kh37-dt",
7375
+ "mel-kh30-dt",
7376
+ "mel-kh64-dt",
7377
+ "mel-kh15-dt",
7378
+ "mel-kh75-dt",
7379
+ "mel-kh33-dt",
7380
+ // Melamine — flat shades
7381
+ "mel-ph158-sm",
7382
+ "mel-ph159-sm",
7383
+ "mel-ph160-sm",
7384
+ "mel-ph161-sm",
7385
+ "mel-ph162-sm",
7386
+ "mel-ph163-sm",
7387
+ "mel-ph164-sm",
7388
+ "mel-ph165-sm",
7389
+ "mel-ph166-sm",
7390
+ "mel-ph167-sm",
7391
+ "mel-ph168-sm",
7392
+ "mel-ph169-sm",
7393
+ "mel-ph170-sm",
7394
+ "mel-ph171-sm",
7395
+ "mel-ph172-sm",
7396
+ "mel-ah07-tap",
7397
+ "mel-ah04-tap",
7398
+ "mel-ah01-tap",
7399
+ "mel-ah05-tap",
7400
+ "mel-ah06-tap"
7401
+ // </generated:external-id-list>
7408
7402
  ];
7409
- var DEFAULT_EXTERNAL_MATERIAL_ID = "ml-aks-white";
7403
+ var DEFAULT_EXTERNAL_MATERIAL_ID = "mel-ph172-sm";
7410
7404
  function normalizeExternalMaterialId(id) {
7411
7405
  if (id && EXTERNAL_MATERIAL_IDS.includes(id)) {
7412
7406
  return id;
@@ -7419,8 +7413,9 @@ init_esm_shims();
7419
7413
 
7420
7414
  // ../../packages/shared/src/bomConstants.ts
7421
7415
  init_esm_shims();
7422
- var STANDARD_PANEL_MM = 17;
7416
+ var STANDARD_PANEL_MM = 18;
7423
7417
  var DOOR_THICKNESS_MM = 18;
7418
+ var DOOR_DEPTH_ALLOWANCE_MM = 20;
7424
7419
 
7425
7420
  // ../../packages/shared/src/drawerDepth.ts
7426
7421
  init_esm_shims();
@@ -7460,8 +7455,33 @@ var SHALLOW_DRAWER_DEPTH_BAND = {
7460
7455
  };
7461
7456
  var SHALLOW_DRAWER_MAX_SLOTS = 2;
7462
7457
  var RULE_VERSION_FREE_DIMENSIONS = "4.0";
7458
+ var RULE_VERSION_TOTAL_DEPTH = "5.0";
7459
+ var CURRENT_RULE_VERSION = RULE_VERSION_TOTAL_DEPTH;
7460
+ var FREE_DIMENSION_VERSIONS = [
7461
+ RULE_VERSION_FREE_DIMENSIONS,
7462
+ RULE_VERSION_TOTAL_DEPTH
7463
+ ];
7464
+ function isFreeDimensionConfig(config) {
7465
+ return FREE_DIMENSION_VERSIONS.includes(config.ruleVersion);
7466
+ }
7467
+ function depthIncludesDoors(config) {
7468
+ return config.ruleVersion === RULE_VERSION_TOTAL_DEPTH;
7469
+ }
7470
+ var DOOR_DEPTH_ALLOWANCE_CM = DOOR_DEPTH_ALLOWANCE_MM / 10;
7471
+ function toBodyDepthCm(configuredCm, config) {
7472
+ return depthIncludesDoors(config) ? configuredCm - DOOR_DEPTH_ALLOWANCE_CM : configuredCm;
7473
+ }
7474
+ function toConfiguredDepthCm(bodyCm, config) {
7475
+ return depthIncludesDoors(config) ? bodyCm + DOOR_DEPTH_ALLOWANCE_CM : bodyCm;
7476
+ }
7477
+ function configuredDepthLimitsCm(config) {
7478
+ return {
7479
+ min: toConfiguredDepthCm(DIMENSION_LIMITS.bodyDepthCm.min, config),
7480
+ max: toConfiguredDepthCm(DIMENSION_LIMITS.bodyDepthCm.max, config)
7481
+ };
7482
+ }
7463
7483
  function getColumnDepthCm(config, column) {
7464
- return column.depth ?? config.depth;
7484
+ return toBodyDepthCm(column.depth ?? config.depth, config);
7465
7485
  }
7466
7486
 
7467
7487
  // ../../packages/shared/src/commissions.ts
@@ -7561,13 +7581,14 @@ var WardrobeConfigSchema = external_exports.object({
7561
7581
  widthMode: external_exports.enum(["min-columns", "min-doors"]).default("min-doors"),
7562
7582
  handleSku: external_exports.string().optional()
7563
7583
  }).superRefine((data, ctx) => {
7564
- if (data.ruleVersion !== RULE_VERSION_FREE_DIMENSIONS) return;
7565
- const { columnWidthCm, heightCm, bodyDepthCm } = DIMENSION_LIMITS;
7584
+ if (!isFreeDimensionConfig(data)) return;
7585
+ const { columnWidthCm, heightCm } = DIMENSION_LIMITS;
7586
+ const bodyDepthCm = configuredDepthLimitsCm(data);
7566
7587
  if (!Number.isInteger(data.height) || data.height < heightCm.min || data.height > heightCm.max) {
7567
7588
  ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["height"], message: `v4 height must be a whole-cm integer between ${heightCm.min} and ${heightCm.max}` });
7568
7589
  }
7569
7590
  if (!Number.isInteger(data.depth) || data.depth < bodyDepthCm.min || data.depth > bodyDepthCm.max) {
7570
- ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["depth"], message: `v4 depth must be a whole-cm integer between ${bodyDepthCm.min} and ${bodyDepthCm.max}` });
7591
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["depth"], message: `depth must be a whole-cm integer between ${bodyDepthCm.min} and ${bodyDepthCm.max}` });
7571
7592
  }
7572
7593
  data.columns.forEach((col, i) => {
7573
7594
  const offGrid = Math.abs(col.width * 10 - Math.round(col.width * 10)) > 1e-6;
@@ -7575,7 +7596,7 @@ var WardrobeConfigSchema = external_exports.object({
7575
7596
  ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["columns", i, "width"], message: `v4 column width must be on the 1mm grid between ${columnWidthCm.min} and ${columnWidthCm.max}` });
7576
7597
  }
7577
7598
  if (col.depth !== void 0 && (!Number.isInteger(col.depth) || col.depth < bodyDepthCm.min || col.depth > bodyDepthCm.max)) {
7578
- ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["columns", i, "depth"], message: `v4 column depth must be a whole-cm integer between ${bodyDepthCm.min} and ${bodyDepthCm.max}` });
7599
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["columns", i, "depth"], message: `column depth must be a whole-cm integer between ${bodyDepthCm.min} and ${bodyDepthCm.max}` });
7579
7600
  }
7580
7601
  });
7581
7602
  }).transform((data) => ({
@@ -7702,7 +7723,11 @@ var MBomLineItemSchema = external_exports.object({
7702
7723
  // V2 frozen-snapshot fields (optional — legacy orders and old engine output stay valid)
7703
7724
  material: external_exports.string().optional(),
7704
7725
  thicknessMm: external_exports.number().optional(),
7705
- areaM2: external_exports.number().optional()
7726
+ areaM2: external_exports.number().optional(),
7727
+ name: external_exports.string().optional(),
7728
+ columnIndex: external_exports.number().optional(),
7729
+ /** Present on sections of a part cut down to its material size limit. */
7730
+ segment: external_exports.object({ index: external_exports.number(), count: external_exports.number() }).optional()
7706
7731
  });
7707
7732
  var ManufacturingBOMColumnSchema = external_exports.object({
7708
7733
  columnIndex: external_exports.number(),
@@ -7766,6 +7791,18 @@ var UpdateProjectSchema = external_exports.object({
7766
7791
  var CreateInvitationSchema = external_exports.object({
7767
7792
  inviteeEmail: external_exports.string().email().max(254)
7768
7793
  });
7794
+ var ProjectEventTypeSchema = external_exports.enum(["message", "system"]);
7795
+ var ProjectEventSystemActionSchema = external_exports.enum([
7796
+ "design.created",
7797
+ "design.updated",
7798
+ "member.joined"
7799
+ ]);
7800
+ var CreateProjectEventSchema = external_exports.object({
7801
+ text: external_exports.string().min(1).max(4e3)
7802
+ });
7803
+ var MarkProjectEventsReadSchema = external_exports.object({
7804
+ eventId: external_exports.string().min(1)
7805
+ });
7769
7806
  var CreateOrderItemSchema = external_exports.object({
7770
7807
  designId: external_exports.string().min(1),
7771
7808
  screenshotColorId: external_exports.string().min(1),
@@ -7827,6 +7864,27 @@ var PdfTemplatePreviewBodySchema = external_exports.object({
7827
7864
  footerHtml: external_exports.string().max(2e4),
7828
7865
  termsHtml: external_exports.string().max(2e4).optional()
7829
7866
  });
7867
+ var EmailTemplateConfigSchema = external_exports.object({
7868
+ event: external_exports.string(),
7869
+ subject: external_exports.string(),
7870
+ body: external_exports.string(),
7871
+ to: external_exports.string(),
7872
+ cc: external_exports.string(),
7873
+ version: external_exports.number().int().nonnegative(),
7874
+ updatedAt: external_exports.string().nullable()
7875
+ });
7876
+ var EmailTemplatePatchBodySchema = external_exports.object({
7877
+ version: external_exports.number().int().nonnegative(),
7878
+ patch: external_exports.object({
7879
+ subject: external_exports.string().max(2e3).optional(),
7880
+ to: external_exports.string().max(2e3).optional(),
7881
+ cc: external_exports.string().max(2e3).optional(),
7882
+ body: external_exports.string().max(2e4).optional()
7883
+ }).strict().refine(
7884
+ (p) => Object.keys(p).length > 0,
7885
+ { message: "patch must contain at least one field" }
7886
+ )
7887
+ });
7830
7888
  var CustomerDetailsSchema = external_exports.object({
7831
7889
  email: external_exports.string().email().max(254),
7832
7890
  phone: external_exports.string().min(3).max(30),
@@ -7855,6 +7913,65 @@ init_esm_shims();
7855
7913
  init_esm_shims();
7856
7914
  var MATERIALS = {
7857
7915
  // ─── Interior-only colors (current product catalog) ──────────────────
7916
+ // Generated — see `npm run prep:material-images --workspace=api`.
7917
+ // These entries deliberately carry no `substrate`: materialLimitKey() is
7918
+ // `MATERIALS[id].substrate ?? id`, so a substrate here would resolve interior parts to the
7919
+ // exterior melamine sheet-limit row.
7920
+ // <generated:interior-materials>
7921
+ "interior-ph158-sm": {
7922
+ id: "interior-ph158-sm",
7923
+ label: "\u05DC\u05D1\u05DF \u05E6\u05D3\u05E3",
7924
+ priceMultiplier: 1,
7925
+ fallbackColor: "#fafbf5",
7926
+ category: "solid",
7927
+ surfaceTexture: "soft-matte",
7928
+ textureRepeat: { u: 1, v: 1 },
7929
+ sourceRef: "PH158-SM",
7930
+ thumbnail: "materials/interior-ph158-sm/thumbnail.jpg"
7931
+ },
7932
+ "interior-ph159-sm": {
7933
+ id: "interior-ph159-sm",
7934
+ label: "\u05D0\u05E4\u05D5\u05E8 \u05D1\u05D4\u05D9\u05E8",
7935
+ priceMultiplier: 1,
7936
+ fallbackColor: "#d2cbc1",
7937
+ category: "solid",
7938
+ surfaceTexture: "soft-matte",
7939
+ textureRepeat: { u: 1, v: 1 },
7940
+ sourceRef: "PH159-SM",
7941
+ thumbnail: "materials/interior-ph159-sm/thumbnail.jpg"
7942
+ },
7943
+ "interior-ph163-sm": {
7944
+ id: "interior-ph163-sm",
7945
+ label: "\u05D2\u05E8\u05D9\u05D9\u05D6\u05F3",
7946
+ priceMultiplier: 1,
7947
+ fallbackColor: "#cec6b6",
7948
+ category: "solid",
7949
+ surfaceTexture: "soft-matte",
7950
+ textureRepeat: { u: 1, v: 1 },
7951
+ sourceRef: "PH163-SM",
7952
+ thumbnail: "materials/interior-ph163-sm/thumbnail.jpg"
7953
+ },
7954
+ "interior-kh62-dt": {
7955
+ id: "interior-kh62-dt",
7956
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D7\u05DD \u05DE\u05D9\u05E7\u05E1",
7957
+ priceMultiplier: 1,
7958
+ fallbackColor: "#875f3b",
7959
+ textureSet: {
7960
+ baseColor: "materials/interior-kh62-dt/baseColor.jpg",
7961
+ normal: "materials/interior-kh62-dt/normal.jpg",
7962
+ roughness: "materials/interior-kh62-dt/roughness.jpg"
7963
+ },
7964
+ category: "wood-grain",
7965
+ surfaceTexture: "deep-texture",
7966
+ textureRepeat: { u: 1, v: 1 },
7967
+ sourceRef: "KH62-DT",
7968
+ thumbnail: "materials/interior-kh62-dt/thumbnail.jpg"
7969
+ },
7970
+ // </generated:interior-materials>
7971
+ // ─── Interior-only colors (replaced 2026-08-14 — kept for frozen order snapshots) ─────
7972
+ // Not selectable (absent from INTERNAL_MATERIAL_IDS). Order.items[].manufacturingBom stores
7973
+ // the material id at order time, and the CSV Color/Material columns resolve through here, so
7974
+ // removing these would blank those columns on every historical interior row.
7858
7975
  "interior-eco-white": {
7859
7976
  id: "interior-eco-white",
7860
7977
  label: "Eco White",
@@ -7952,1173 +8069,806 @@ var MATERIALS = {
7952
8069
  textureRepeat: { u: 3, v: 4 },
7953
8070
  thumbnail: "materials/walnut-veneer/thumbnail.jpg"
7954
8071
  },
7955
- // ─── Melamine — Portalline collection (SM'art + Kaindl) ──────────────
7956
- // Soho (SM'art, NT)
7957
- "ml-soho-natural": {
7958
- id: "ml-soho-natural",
7959
- label: "Soho Natural",
7960
- priceMultiplier: 1.2,
7961
- fallbackColor: "#c8a882",
7962
- textureSet: {
7963
- baseColor: "materials/ml-soho-natural/baseColor.ktx2",
7964
- normal: "materials/ml-soho-natural/normal.ktx2",
7965
- roughness: "materials/ml-soho-natural/roughness.ktx2"
7966
- },
7967
- category: "wood-grain",
7968
- surfaceTexture: "pore",
7969
- textureRepeat: { u: 3, v: 4 },
7970
- sourceRef: "ML34NT19",
7971
- thumbnail: "materials/ml-soho-natural/thumbnail.jpg",
7972
- substrate: "melamine"
8072
+ // <generated:exterior-materials>
8073
+ "acrylic-za35-sm": {
8074
+ id: "acrylic-za35-sm",
8075
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D2\u05E8\u05D9\u05D9\u05D6\u05F3",
8076
+ priceMultiplier: 1,
8077
+ fallbackColor: "#cec7be",
8078
+ category: "solid",
8079
+ surfaceTexture: "soft-matte",
8080
+ textureRepeat: { u: 1, v: 1 },
8081
+ sourceRef: "ZA35-SM",
8082
+ thumbnail: "materials/acrylic-za35-sm/thumbnail.jpg",
8083
+ substrate: "acrylic"
7973
8084
  },
7974
- "ml-soho-brown": {
7975
- id: "ml-soho-brown",
7976
- label: "Soho Brown",
7977
- priceMultiplier: 1.2,
7978
- fallbackColor: "#7b5838",
7979
- textureSet: {
7980
- baseColor: "materials/ml-soho-brown/baseColor.ktx2",
7981
- normal: "materials/ml-soho-brown/normal.ktx2",
7982
- roughness: "materials/ml-soho-brown/roughness.ktx2"
7983
- },
7984
- category: "wood-grain",
7985
- surfaceTexture: "pore",
7986
- textureRepeat: { u: 3, v: 4 },
7987
- sourceRef: "ML35NT19",
7988
- thumbnail: "materials/ml-soho-brown/thumbnail.jpg",
7989
- substrate: "melamine"
8085
+ "acrylic-za71-sm": {
8086
+ id: "acrylic-za71-sm",
8087
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D0\u05E4\u05D5\u05E8 \u05D1\u05D4\u05D9\u05E8",
8088
+ priceMultiplier: 1,
8089
+ fallbackColor: "#d2cbc1",
8090
+ category: "solid",
8091
+ surfaceTexture: "soft-matte",
8092
+ textureRepeat: { u: 1, v: 1 },
8093
+ sourceRef: "ZA71-SM",
8094
+ thumbnail: "materials/acrylic-za71-sm/thumbnail.jpg",
8095
+ substrate: "acrylic"
7990
8096
  },
7991
- "ml-soho-grey": {
7992
- id: "ml-soho-grey",
7993
- label: "Soho Grey",
7994
- priceMultiplier: 1.2,
7995
- fallbackColor: "#7b8b8b",
7996
- textureSet: {
7997
- baseColor: "materials/ml-soho-grey/baseColor.ktx2",
7998
- normal: "materials/ml-soho-grey/normal.ktx2",
7999
- roughness: "materials/ml-soho-grey/roughness.ktx2"
8000
- },
8001
- category: "wood-grain",
8002
- surfaceTexture: "pore",
8003
- textureRepeat: { u: 3, v: 4 },
8004
- sourceRef: "ML36NT19",
8005
- thumbnail: "materials/ml-soho-grey/thumbnail.jpg",
8006
- substrate: "melamine"
8097
+ "acrylic-za05-sm": {
8098
+ id: "acrylic-za05-sm",
8099
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D0\u05E4\u05D5\u05E8 \u05D7\u05D0\u05E7\u05D9",
8100
+ priceMultiplier: 1,
8101
+ fallbackColor: "#696357",
8102
+ category: "solid",
8103
+ surfaceTexture: "soft-matte",
8104
+ textureRepeat: { u: 1, v: 1 },
8105
+ sourceRef: "ZA05-SM",
8106
+ thumbnail: "materials/acrylic-za05-sm/thumbnail.jpg",
8107
+ substrate: "acrylic"
8007
8108
  },
8008
- // Amazon Ash (SM'art, NT)
8009
- "ml-amazon-ash-bleached": {
8010
- id: "ml-amazon-ash-bleached",
8011
- label: "Amazon Ash Bleached",
8012
- priceMultiplier: 1.3,
8013
- fallbackColor: "#e8e0d8",
8014
- textureSet: {
8015
- baseColor: "materials/ml-amazon-ash-bleached/baseColor.ktx2",
8016
- normal: "materials/ml-amazon-ash-bleached/normal.ktx2",
8017
- roughness: "materials/ml-amazon-ash-bleached/roughness.ktx2"
8018
- },
8019
- category: "wood-grain",
8020
- surfaceTexture: "pore",
8021
- textureRepeat: { u: 3, v: 4 },
8022
- sourceRef: "ML28NT19",
8023
- thumbnail: "materials/ml-amazon-ash-bleached/thumbnail.jpg",
8024
- substrate: "melamine"
8109
+ "acrylic-za72-sm": {
8110
+ id: "acrylic-za72-sm",
8111
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D0\u05E4\u05D5\u05E8 \u05DB\u05D4\u05D4",
8112
+ priceMultiplier: 1,
8113
+ fallbackColor: "#282423",
8114
+ category: "solid",
8115
+ surfaceTexture: "soft-matte",
8116
+ textureRepeat: { u: 1, v: 1 },
8117
+ sourceRef: "ZA72-SM",
8118
+ thumbnail: "materials/acrylic-za72-sm/thumbnail.jpg",
8119
+ substrate: "acrylic"
8025
8120
  },
8026
- "ml-amazon-ash-brown": {
8027
- id: "ml-amazon-ash-brown",
8028
- label: "Amazon Ash Brown",
8029
- priceMultiplier: 1.3,
8030
- fallbackColor: "#8b6b50",
8031
- textureSet: {
8032
- baseColor: "materials/ml-amazon-ash-brown/baseColor.ktx2",
8033
- normal: "materials/ml-amazon-ash-brown/normal.ktx2",
8034
- roughness: "materials/ml-amazon-ash-brown/roughness.ktx2"
8035
- },
8036
- category: "wood-grain",
8037
- surfaceTexture: "pore",
8038
- textureRepeat: { u: 3, v: 4 },
8039
- sourceRef: "ML29NT19",
8040
- thumbnail: "materials/ml-amazon-ash-brown/thumbnail.jpg",
8041
- substrate: "melamine"
8121
+ "acrylic-za310-sm": {
8122
+ id: "acrylic-za310-sm",
8123
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D0\u05E4\u05D5\u05E8 \u05DE\u05E2\u05D5\u05E9\u05DF",
8124
+ priceMultiplier: 1,
8125
+ fallbackColor: "#55565a",
8126
+ category: "solid",
8127
+ surfaceTexture: "soft-matte",
8128
+ textureRepeat: { u: 1, v: 1 },
8129
+ sourceRef: "ZA310-SM",
8130
+ thumbnail: "materials/acrylic-za310-sm/thumbnail.jpg",
8131
+ substrate: "acrylic"
8042
8132
  },
8043
- "ml-amazon-ash-chestnut": {
8044
- id: "ml-amazon-ash-chestnut",
8045
- label: "Amazon Ash Chestnut",
8046
- priceMultiplier: 1.3,
8047
- fallbackColor: "#7b4a28",
8048
- textureSet: {
8049
- baseColor: "materials/ml-amazon-ash-chestnut/baseColor.ktx2",
8050
- normal: "materials/ml-amazon-ash-chestnut/normal.ktx2",
8051
- roughness: "materials/ml-amazon-ash-chestnut/roughness.ktx2"
8052
- },
8053
- category: "wood-grain",
8054
- surfaceTexture: "pore",
8055
- textureRepeat: { u: 3, v: 4 },
8056
- sourceRef: "ML30NT19",
8057
- thumbnail: "materials/ml-amazon-ash-chestnut/thumbnail.jpg",
8058
- substrate: "melamine"
8133
+ "acrylic-za07-sm": {
8134
+ id: "acrylic-za07-sm",
8135
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D0\u05E4\u05E8\u05E4\u05E8",
8136
+ priceMultiplier: 1,
8137
+ fallbackColor: "#9e9a99",
8138
+ category: "solid",
8139
+ surfaceTexture: "soft-matte",
8140
+ textureRepeat: { u: 1, v: 1 },
8141
+ sourceRef: "ZA07-SM",
8142
+ thumbnail: "materials/acrylic-za07-sm/thumbnail.jpg",
8143
+ substrate: "acrylic"
8059
8144
  },
8060
- "ml-amazon-ash-grey": {
8061
- id: "ml-amazon-ash-grey",
8062
- label: "Amazon Ash Grey",
8063
- priceMultiplier: 1.3,
8064
- fallbackColor: "#9b9b90",
8065
- textureSet: {
8066
- baseColor: "materials/ml-amazon-ash-grey/baseColor.ktx2",
8067
- normal: "materials/ml-amazon-ash-grey/normal.ktx2",
8068
- roughness: "materials/ml-amazon-ash-grey/roughness.ktx2"
8069
- },
8070
- category: "wood-grain",
8071
- surfaceTexture: "pore",
8072
- textureRepeat: { u: 3, v: 4 },
8073
- sourceRef: "ML31NT19",
8074
- thumbnail: "materials/ml-amazon-ash-grey/thumbnail.jpg",
8075
- substrate: "melamine"
8145
+ "acrylic-za85-sm": {
8146
+ id: "acrylic-za85-sm",
8147
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D7\u05D5\u05DD \u05D0\u05D3\u05DE\u05D4",
8148
+ priceMultiplier: 1,
8149
+ fallbackColor: "#604440",
8150
+ category: "solid",
8151
+ surfaceTexture: "soft-matte",
8152
+ textureRepeat: { u: 1, v: 1 },
8153
+ sourceRef: "ZA85-SM",
8154
+ thumbnail: "materials/acrylic-za85-sm/thumbnail.jpg",
8155
+ substrate: "acrylic"
8076
8156
  },
8077
- "ml-amazon-ash-taupe": {
8078
- id: "ml-amazon-ash-taupe",
8079
- label: "Amazon Ash Taupe",
8080
- priceMultiplier: 1.3,
8081
- fallbackColor: "#8b7b6b",
8082
- textureSet: {
8083
- baseColor: "materials/ml-amazon-ash-taupe/baseColor.ktx2",
8084
- normal: "materials/ml-amazon-ash-taupe/normal.ktx2",
8085
- roughness: "materials/ml-amazon-ash-taupe/roughness.ktx2"
8086
- },
8087
- category: "wood-grain",
8088
- surfaceTexture: "pore",
8089
- textureRepeat: { u: 3, v: 4 },
8090
- sourceRef: "ML33NT19",
8091
- thumbnail: "materials/ml-amazon-ash-taupe/thumbnail.jpg",
8092
- substrate: "melamine"
8157
+ "acrylic-za86-sm": {
8158
+ id: "acrylic-za86-sm",
8159
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D9\u05E8\u05D5\u05E7 \u05D9\u05E2\u05E8",
8160
+ priceMultiplier: 1,
8161
+ fallbackColor: "#3d423c",
8162
+ category: "solid",
8163
+ surfaceTexture: "soft-matte",
8164
+ textureRepeat: { u: 1, v: 1 },
8165
+ sourceRef: "ZA86-SM",
8166
+ thumbnail: "materials/acrylic-za86-sm/thumbnail.jpg",
8167
+ substrate: "acrylic"
8093
8168
  },
8094
- // Saqqara (SM'art, NT)
8095
- "ml-saqqara-bleached": {
8096
- id: "ml-saqqara-bleached",
8097
- label: "Saqqara Bleached",
8098
- priceMultiplier: 1.3,
8099
- fallbackColor: "#ece8e0",
8100
- textureSet: {
8101
- baseColor: "materials/ml-saqqara-bleached/baseColor.ktx2",
8102
- normal: "materials/ml-saqqara-bleached/normal.ktx2",
8103
- roughness: "materials/ml-saqqara-bleached/roughness.ktx2"
8104
- },
8105
- category: "wood-grain",
8106
- surfaceTexture: "pore",
8107
- textureRepeat: { u: 3, v: 4 },
8108
- sourceRef: "ML46NT",
8109
- thumbnail: "materials/ml-saqqara-bleached/thumbnail.jpg",
8110
- substrate: "melamine"
8169
+ "acrylic-za70-sm": {
8170
+ id: "acrylic-za70-sm",
8171
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05D9\u05E8\u05D5\u05E7 \u05E2\u05EA\u05D9\u05E7",
8172
+ priceMultiplier: 1,
8173
+ fallbackColor: "#94a3a0",
8174
+ category: "solid",
8175
+ surfaceTexture: "soft-matte",
8176
+ textureRepeat: { u: 1, v: 1 },
8177
+ sourceRef: "ZA70-SM",
8178
+ thumbnail: "materials/acrylic-za70-sm/thumbnail.jpg",
8179
+ substrate: "acrylic"
8111
8180
  },
8112
- "ml-saqqara-natural": {
8113
- id: "ml-saqqara-natural",
8114
- label: "Saqqara Natural",
8115
- priceMultiplier: 1.3,
8116
- fallbackColor: "#d4b890",
8117
- textureSet: {
8118
- baseColor: "materials/ml-saqqara-natural/baseColor.ktx2",
8119
- normal: "materials/ml-saqqara-natural/normal.ktx2",
8120
- roughness: "materials/ml-saqqara-natural/roughness.ktx2"
8121
- },
8122
- category: "wood-grain",
8123
- surfaceTexture: "pore",
8124
- textureRepeat: { u: 3, v: 4 },
8125
- sourceRef: "ML48NT",
8126
- thumbnail: "materials/ml-saqqara-natural/thumbnail.jpg",
8127
- substrate: "melamine"
8181
+ "acrylic-za08-sm": {
8182
+ id: "acrylic-za08-sm",
8183
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05DB\u05D7\u05D5\u05DC \u05D0\u05D9\u05E0\u05D3\u05D9\u05D2\u05D5",
8184
+ priceMultiplier: 1,
8185
+ fallbackColor: "#333645",
8186
+ category: "solid",
8187
+ surfaceTexture: "soft-matte",
8188
+ textureRepeat: { u: 1, v: 1 },
8189
+ sourceRef: "ZA08-SM",
8190
+ thumbnail: "materials/acrylic-za08-sm/thumbnail.jpg",
8191
+ substrate: "acrylic"
8128
8192
  },
8129
- "ml-saqqara-red": {
8130
- id: "ml-saqqara-red",
8131
- label: "Saqqara Red",
8132
- priceMultiplier: 1.3,
8133
- fallbackColor: "#a07050",
8134
- textureSet: {
8135
- baseColor: "materials/ml-saqqara-red/baseColor.ktx2",
8136
- normal: "materials/ml-saqqara-red/normal.ktx2",
8137
- roughness: "materials/ml-saqqara-red/roughness.ktx2"
8138
- },
8139
- category: "wood-grain",
8140
- surfaceTexture: "pore",
8141
- textureRepeat: { u: 3, v: 4 },
8142
- sourceRef: "ML49NT",
8143
- thumbnail: "materials/ml-saqqara-red/thumbnail.jpg",
8144
- substrate: "melamine"
8193
+ "acrylic-za69-sm": {
8194
+ id: "acrylic-za69-sm",
8195
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05DB\u05D7\u05D5\u05DC \u05E2\u05EA\u05D9\u05E7",
8196
+ priceMultiplier: 1,
8197
+ fallbackColor: "#939aa0",
8198
+ category: "solid",
8199
+ surfaceTexture: "soft-matte",
8200
+ textureRepeat: { u: 1, v: 1 },
8201
+ sourceRef: "ZA69-SM",
8202
+ thumbnail: "materials/acrylic-za69-sm/thumbnail.jpg",
8203
+ substrate: "acrylic"
8145
8204
  },
8146
- "ml-saqqara-light-brown": {
8147
- id: "ml-saqqara-light-brown",
8148
- label: "Saqqara Light Brown",
8149
- priceMultiplier: 1.3,
8150
- fallbackColor: "#b89070",
8151
- textureSet: {
8152
- baseColor: "materials/ml-saqqara-light-brown/baseColor.ktx2",
8153
- normal: "materials/ml-saqqara-light-brown/normal.ktx2",
8154
- roughness: "materials/ml-saqqara-light-brown/roughness.ktx2"
8155
- },
8156
- category: "wood-grain",
8157
- surfaceTexture: "pore",
8158
- textureRepeat: { u: 3, v: 4 },
8159
- sourceRef: "ML50NT",
8160
- thumbnail: "materials/ml-saqqara-light-brown/thumbnail.jpg",
8161
- substrate: "melamine"
8205
+ "acrylic-za06-sm": {
8206
+ id: "acrylic-za06-sm",
8207
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05DC\u05D1\u05DF",
8208
+ priceMultiplier: 1,
8209
+ fallbackColor: "#ffffff",
8210
+ category: "solid",
8211
+ surfaceTexture: "soft-matte",
8212
+ textureRepeat: { u: 1, v: 1 },
8213
+ sourceRef: "ZA06-SM",
8214
+ thumbnail: "materials/acrylic-za06-sm/thumbnail.jpg",
8215
+ substrate: "acrylic"
8162
8216
  },
8163
- "ml-saqqara-chestnut": {
8164
- id: "ml-saqqara-chestnut",
8165
- label: "Saqqara Chestnut",
8166
- priceMultiplier: 1.3,
8167
- fallbackColor: "#6b4830",
8168
- textureSet: {
8169
- baseColor: "materials/ml-saqqara-chestnut/baseColor.ktx2",
8170
- normal: "materials/ml-saqqara-chestnut/normal.ktx2",
8171
- roughness: "materials/ml-saqqara-chestnut/roughness.ktx2"
8172
- },
8173
- category: "wood-grain",
8174
- surfaceTexture: "pore",
8175
- textureRepeat: { u: 3, v: 4 },
8176
- sourceRef: "ML51NT",
8177
- thumbnail: "materials/ml-saqqara-chestnut/thumbnail.jpg",
8178
- substrate: "melamine"
8217
+ "acrylic-za301-sm": {
8218
+ id: "acrylic-za301-sm",
8219
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05DC\u05D1\u05DF \u05E6\u05D3\u05E3",
8220
+ priceMultiplier: 1,
8221
+ fallbackColor: "#f3eddf",
8222
+ category: "solid",
8223
+ surfaceTexture: "soft-matte",
8224
+ textureRepeat: { u: 1, v: 1 },
8225
+ sourceRef: "ZA301-SM",
8226
+ thumbnail: "materials/acrylic-za301-sm/thumbnail.jpg",
8227
+ substrate: "acrylic"
8179
8228
  },
8180
- // Allon DT (Kaindl)
8181
- "kl-oak-natural": {
8182
- id: "kl-oak-natural",
8183
- label: "Oak Natural",
8184
- priceMultiplier: 1.4,
8185
- fallbackColor: "#d4a870",
8186
- textureSet: {
8187
- baseColor: "materials/kl-oak-natural/baseColor.ktx2",
8188
- normal: "materials/kl-oak-natural/normal.ktx2",
8189
- roughness: "materials/kl-oak-natural/roughness.ktx2"
8190
- },
8191
- category: "wood-grain",
8192
- surfaceTexture: "pore",
8193
- textureRepeat: { u: 3, v: 4 },
8194
- sourceRef: "KL32NT/KH32DT",
8195
- thumbnail: "materials/kl-oak-natural/thumbnail.jpg",
8196
- substrate: "melamine"
8229
+ "acrylic-za03-sm": {
8230
+ id: "acrylic-za03-sm",
8231
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05DE\u05D5\u05E7\u05D4",
8232
+ priceMultiplier: 1,
8233
+ fallbackColor: "#b39e83",
8234
+ category: "solid",
8235
+ surfaceTexture: "soft-matte",
8236
+ textureRepeat: { u: 1, v: 1 },
8237
+ sourceRef: "ZA03-SM",
8238
+ thumbnail: "materials/acrylic-za03-sm/thumbnail.jpg",
8239
+ substrate: "acrylic"
8197
8240
  },
8198
- "kl-oak-split-natural": {
8199
- id: "kl-oak-split-natural",
8200
- label: "Oak Split Natural",
8201
- priceMultiplier: 1.4,
8202
- fallbackColor: "#c89860",
8203
- textureSet: {
8204
- baseColor: "materials/kl-oak-split-natural/baseColor.ktx2",
8205
- normal: "materials/kl-oak-split-natural/normal.ktx2",
8206
- roughness: "materials/kl-oak-split-natural/roughness.ktx2"
8207
- },
8208
- category: "wood-grain",
8209
- surfaceTexture: "pore",
8210
- textureRepeat: { u: 3, v: 4 },
8211
- sourceRef: "KL31NT/KH31DT",
8212
- thumbnail: "materials/kl-oak-split-natural/thumbnail.jpg",
8213
- substrate: "melamine"
8241
+ "acrylic-za04-sm": {
8242
+ id: "acrylic-za04-sm",
8243
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05E1\u05D4\u05E8\u05D4",
8244
+ priceMultiplier: 1,
8245
+ fallbackColor: "#cdbeab",
8246
+ category: "solid",
8247
+ surfaceTexture: "soft-matte",
8248
+ textureRepeat: { u: 1, v: 1 },
8249
+ sourceRef: "ZA04-SM",
8250
+ thumbnail: "materials/acrylic-za04-sm/thumbnail.jpg",
8251
+ substrate: "acrylic"
8214
8252
  },
8215
- "kl-oak-split-smoked": {
8216
- id: "kl-oak-split-smoked",
8217
- label: "Oak Split Smoked",
8218
- priceMultiplier: 1.4,
8219
- fallbackColor: "#8b7058",
8220
- textureSet: {
8221
- baseColor: "materials/kl-oak-split-smoked/baseColor.ktx2",
8222
- normal: "materials/kl-oak-split-smoked/normal.ktx2",
8223
- roughness: "materials/kl-oak-split-smoked/roughness.ktx2"
8224
- },
8225
- category: "wood-grain",
8226
- surfaceTexture: "pore",
8227
- textureRepeat: { u: 3, v: 4 },
8228
- sourceRef: "KL30NT/KH30DT",
8229
- thumbnail: "materials/kl-oak-split-smoked/thumbnail.jpg",
8230
- substrate: "melamine"
8253
+ "acrylic-za38-sm": {
8254
+ id: "acrylic-za38-sm",
8255
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05E7\u05E4\u05D4",
8256
+ priceMultiplier: 1,
8257
+ fallbackColor: "#afa49a",
8258
+ category: "solid",
8259
+ surfaceTexture: "soft-matte",
8260
+ textureRepeat: { u: 1, v: 1 },
8261
+ sourceRef: "ZA38-SM",
8262
+ thumbnail: "materials/acrylic-za38-sm/thumbnail.jpg",
8263
+ substrate: "acrylic"
8231
8264
  },
8232
- "kl-oak-cognac": {
8233
- id: "kl-oak-cognac",
8234
- label: "Oak Cognac",
8235
- priceMultiplier: 1.5,
8236
- fallbackColor: "#7b4a28",
8237
- textureSet: {
8238
- baseColor: "materials/kl-oak-cognac/baseColor.ktx2",
8239
- normal: "materials/kl-oak-cognac/normal.ktx2",
8240
- roughness: "materials/kl-oak-cognac/roughness.ktx2"
8241
- },
8242
- category: "wood-grain",
8243
- surfaceTexture: "pore",
8244
- textureRepeat: { u: 3, v: 4 },
8245
- sourceRef: "KL15NT/KH15DT",
8246
- thumbnail: "materials/kl-oak-cognac/thumbnail.jpg",
8247
- substrate: "melamine"
8265
+ "acrylic-za300-sm": {
8266
+ id: "acrylic-za300-sm",
8267
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05E9\u05D7\u05D5\u05E8 \u05DB\u05D4\u05D4",
8268
+ priceMultiplier: 1,
8269
+ fallbackColor: "#1e1e1e",
8270
+ category: "solid",
8271
+ surfaceTexture: "soft-matte",
8272
+ textureRepeat: { u: 1, v: 1 },
8273
+ sourceRef: "ZA300-SM",
8274
+ thumbnail: "materials/acrylic-za300-sm/thumbnail.jpg",
8275
+ substrate: "acrylic"
8248
8276
  },
8249
- "kl-oak-trunk": {
8250
- id: "kl-oak-trunk",
8251
- label: "Oak Trunk",
8252
- priceMultiplier: 1.4,
8253
- fallbackColor: "#c09060",
8254
- textureSet: {
8255
- baseColor: "materials/kl-oak-trunk/baseColor.ktx2",
8256
- normal: "materials/kl-oak-trunk/normal.ktx2",
8257
- roughness: "materials/kl-oak-trunk/roughness.ktx2"
8258
- },
8259
- category: "wood-grain",
8260
- surfaceTexture: "deep-texture",
8261
- textureRepeat: { u: 3, v: 4 },
8262
- sourceRef: "KL14NT/KH14DT",
8263
- thumbnail: "materials/kl-oak-trunk/thumbnail.jpg",
8264
- substrate: "melamine"
8277
+ "acrylic-za02-sm": {
8278
+ id: "acrylic-za02-sm",
8279
+ label: "\u05D0\u05E7\u05E8\u05D9\u05DC \u05E9\u05E0\u05D4\u05D1",
8280
+ priceMultiplier: 1,
8281
+ fallbackColor: "#ffeccc",
8282
+ category: "solid",
8283
+ surfaceTexture: "soft-matte",
8284
+ textureRepeat: { u: 1, v: 1 },
8285
+ sourceRef: "ZA02-SM",
8286
+ thumbnail: "materials/acrylic-za02-sm/thumbnail.jpg",
8287
+ substrate: "acrylic"
8265
8288
  },
8266
- // Allon / Vinto NT (Kaindl)
8267
- "kl-oak-light": {
8268
- id: "kl-oak-light",
8269
- label: "Oak Light",
8270
- priceMultiplier: 1.4,
8271
- fallbackColor: "#d8c8a8",
8272
- textureSet: {
8273
- baseColor: "materials/kl-oak-light/baseColor.ktx2",
8274
- normal: "materials/kl-oak-light/normal.ktx2",
8275
- roughness: "materials/kl-oak-light/roughness.ktx2"
8276
- },
8277
- category: "wood-grain",
8278
- surfaceTexture: "pore",
8279
- textureRepeat: { u: 3, v: 4 },
8280
- sourceRef: "ML58NT",
8281
- thumbnail: "materials/kl-oak-light/thumbnail.jpg",
8282
- substrate: "melamine"
8289
+ "acrylic-za36-sm": {
8290
+ id: "acrylic-za36-sm",
8291
+ label: "\u05D7\u05D5\u05DC",
8292
+ priceMultiplier: 1,
8293
+ fallbackColor: "#e3ddcf",
8294
+ category: "solid",
8295
+ surfaceTexture: "soft-matte",
8296
+ textureRepeat: { u: 1, v: 1 },
8297
+ sourceRef: "ZA36-SM",
8298
+ thumbnail: "materials/acrylic-za36-sm/thumbnail.jpg",
8299
+ substrate: "acrylic"
8283
8300
  },
8284
- "kl-oak-brown": {
8285
- id: "kl-oak-brown",
8286
- label: "Oak Brown",
8287
- priceMultiplier: 1.4,
8288
- fallbackColor: "#9b7050",
8289
- textureSet: {
8290
- baseColor: "materials/kl-oak-brown/baseColor.ktx2",
8291
- normal: "materials/kl-oak-brown/normal.ktx2",
8292
- roughness: "materials/kl-oak-brown/roughness.ktx2"
8293
- },
8294
- category: "wood-grain",
8295
- surfaceTexture: "pore",
8296
- textureRepeat: { u: 3, v: 4 },
8297
- sourceRef: "ML59NT",
8298
- thumbnail: "materials/kl-oak-brown/thumbnail.jpg",
8299
- substrate: "melamine"
8301
+ "acrylic-za39-sm": {
8302
+ id: "acrylic-za39-sm",
8303
+ label: "\u05D7\u05DC\u05D5\u05E7 \u05E0\u05D7\u05DC",
8304
+ priceMultiplier: 1,
8305
+ fallbackColor: "#d0cfca",
8306
+ category: "solid",
8307
+ surfaceTexture: "soft-matte",
8308
+ textureRepeat: { u: 1, v: 1 },
8309
+ sourceRef: "ZA39-SM",
8310
+ thumbnail: "materials/acrylic-za39-sm/thumbnail.jpg",
8311
+ substrate: "acrylic"
8300
8312
  },
8301
- "kl-oak-dark-brown": {
8302
- id: "kl-oak-dark-brown",
8303
- label: "Oak Dark Brown",
8304
- priceMultiplier: 1.4,
8305
- fallbackColor: "#7b5038",
8306
- textureSet: {
8307
- baseColor: "materials/kl-oak-dark-brown/baseColor.ktx2",
8308
- normal: "materials/kl-oak-dark-brown/normal.ktx2",
8309
- roughness: "materials/kl-oak-dark-brown/roughness.ktx2"
8310
- },
8311
- category: "wood-grain",
8312
- surfaceTexture: "pore",
8313
- textureRepeat: { u: 3, v: 4 },
8314
- sourceRef: "ML60NT",
8315
- thumbnail: "materials/kl-oak-dark-brown/thumbnail.jpg",
8316
- substrate: "melamine"
8313
+ "acrylic-za37-sm": {
8314
+ id: "acrylic-za37-sm",
8315
+ label: "\u05D7\u05E8\u05E1",
8316
+ priceMultiplier: 1,
8317
+ fallbackColor: "#dfdbd2",
8318
+ category: "solid",
8319
+ surfaceTexture: "soft-matte",
8320
+ textureRepeat: { u: 1, v: 1 },
8321
+ sourceRef: "ZA37-SM",
8322
+ thumbnail: "materials/acrylic-za37-sm/thumbnail.jpg",
8323
+ substrate: "acrylic"
8317
8324
  },
8318
- "kl-oak-greyish": {
8319
- id: "kl-oak-greyish",
8320
- label: "Oak Greyish",
8321
- priceMultiplier: 1.4,
8322
- fallbackColor: "#9b9080",
8325
+ "mel-kl67-nt": {
8326
+ id: "mel-kl67-nt",
8327
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D3\u05D1\u05E9 \u05D1\u05D4\u05D9\u05E8 \u05DE\u05D9\u05E7\u05E1",
8328
+ priceMultiplier: 1,
8329
+ fallbackColor: "#bd9055",
8323
8330
  textureSet: {
8324
- baseColor: "materials/kl-oak-greyish/baseColor.ktx2",
8325
- normal: "materials/kl-oak-greyish/normal.ktx2",
8326
- roughness: "materials/kl-oak-greyish/roughness.ktx2"
8331
+ baseColor: "materials/mel-kl67-nt/baseColor.jpg",
8332
+ normal: "materials/mel-kl67-nt/normal.jpg",
8333
+ roughness: "materials/mel-kl67-nt/roughness.jpg"
8327
8334
  },
8328
8335
  category: "wood-grain",
8329
8336
  surfaceTexture: "pore",
8330
8337
  textureRepeat: { u: 3, v: 4 },
8331
- sourceRef: "ML61NT",
8332
- thumbnail: "materials/kl-oak-greyish/thumbnail.jpg",
8338
+ sourceRef: "KL67-NT",
8339
+ thumbnail: "materials/mel-kl67-nt/thumbnail.jpg",
8333
8340
  substrate: "melamine"
8334
8341
  },
8335
- "kl-vinto-cortina": {
8336
- id: "kl-vinto-cortina",
8337
- label: "Vinto Cortina",
8338
- priceMultiplier: 1.4,
8339
- fallbackColor: "#c8a050",
8342
+ "mel-kh69-dt": {
8343
+ id: "mel-kh69-dt",
8344
+ label: "\u05D0\u05D2\u05D5\u05D6 \u05DB\u05D4\u05D4 \u05E4\u05E1\u05D9\u05DD \u05E4\u05E8\u05D0\u05D9",
8345
+ priceMultiplier: 1,
8346
+ fallbackColor: "#635037",
8340
8347
  textureSet: {
8341
- baseColor: "materials/kl-vinto-cortina/baseColor.ktx2",
8342
- normal: "materials/kl-vinto-cortina/normal.ktx2",
8343
- roughness: "materials/kl-vinto-cortina/roughness.ktx2"
8348
+ baseColor: "materials/mel-kh69-dt/baseColor.jpg",
8349
+ normal: "materials/mel-kh69-dt/normal.jpg",
8350
+ roughness: "materials/mel-kh69-dt/roughness.jpg"
8344
8351
  },
8345
8352
  category: "wood-grain",
8346
8353
  surfaceTexture: "deep-texture",
8347
8354
  textureRepeat: { u: 3, v: 4 },
8348
- sourceRef: "ML15DT",
8349
- thumbnail: "materials/kl-vinto-cortina/thumbnail.jpg",
8350
- substrate: "melamine"
8351
- },
8352
- // Horsh (Kaindl, DT)
8353
- "kl-oak-bronze": {
8354
- id: "kl-oak-bronze",
8355
- label: "Oak Bronze",
8356
- priceMultiplier: 1.5,
8357
- fallbackColor: "#6b4028",
8358
- textureSet: {
8359
- baseColor: "materials/kl-oak-bronze/baseColor.ktx2",
8360
- normal: "materials/kl-oak-bronze/normal.ktx2",
8361
- roughness: "materials/kl-oak-bronze/roughness.ktx2"
8362
- },
8363
- category: "wood-grain",
8364
- surfaceTexture: "deep-pore",
8365
- textureRepeat: { u: 3, v: 4 },
8366
- sourceRef: "KL04NT/KH04DT",
8367
- thumbnail: "materials/kl-oak-bronze/thumbnail.jpg",
8355
+ sourceRef: "KH69-DT",
8356
+ thumbnail: "materials/mel-kh69-dt/thumbnail.jpg",
8368
8357
  substrate: "melamine"
8369
8358
  },
8370
- "kl-oak-platinum": {
8371
- id: "kl-oak-platinum",
8372
- label: "Oak Platinum",
8373
- priceMultiplier: 1.5,
8374
- fallbackColor: "#c0b8a8",
8375
- textureSet: {
8376
- baseColor: "materials/kl-oak-platinum/baseColor.ktx2",
8377
- normal: "materials/kl-oak-platinum/normal.ktx2",
8378
- roughness: "materials/kl-oak-platinum/roughness.ktx2"
8379
- },
8380
- category: "wood-grain",
8381
- surfaceTexture: "deep-pore",
8382
- textureRepeat: { u: 3, v: 4 },
8383
- sourceRef: "KL03NT/KH03DT",
8384
- thumbnail: "materials/kl-oak-platinum/thumbnail.jpg",
8385
- substrate: "melamine"
8386
- },
8387
- "kl-oak-white": {
8388
- id: "kl-oak-white",
8389
- label: "Oak White",
8390
- priceMultiplier: 1.5,
8391
- fallbackColor: "#ece8e0",
8392
- textureSet: {
8393
- baseColor: "materials/kl-oak-white/baseColor.ktx2",
8394
- normal: "materials/kl-oak-white/normal.ktx2",
8395
- roughness: "materials/kl-oak-white/roughness.ktx2"
8396
- },
8397
- category: "wood-grain",
8398
- surfaceTexture: "deep-pore",
8399
- textureRepeat: { u: 3, v: 4 },
8400
- sourceRef: "KL01NT/KH01DT",
8401
- thumbnail: "materials/kl-oak-white/thumbnail.jpg",
8402
- substrate: "melamine"
8403
- },
8404
- "kl-oak-split": {
8405
- id: "kl-oak-split",
8406
- label: "Oak Split",
8407
- priceMultiplier: 1.5,
8408
- fallbackColor: "#c09868",
8409
- textureSet: {
8410
- baseColor: "materials/kl-oak-split/baseColor.ktx2",
8411
- normal: "materials/kl-oak-split/normal.ktx2",
8412
- roughness: "materials/kl-oak-split/roughness.ktx2"
8413
- },
8414
- category: "wood-grain",
8415
- surfaceTexture: "deep-pore",
8416
- textureRepeat: { u: 3, v: 4 },
8417
- sourceRef: "KL07NT/KH07DT",
8418
- thumbnail: "materials/kl-oak-split/thumbnail.jpg",
8419
- substrate: "melamine"
8420
- },
8421
- "kl-teak": {
8422
- id: "kl-teak",
8423
- label: "Teak",
8424
- priceMultiplier: 1.8,
8425
- fallbackColor: "#4a3020",
8426
- textureSet: {
8427
- baseColor: "materials/kl-teak/baseColor.ktx2",
8428
- normal: "materials/kl-teak/normal.ktx2",
8429
- roughness: "materials/kl-teak/roughness.ktx2"
8430
- },
8431
- category: "wood-grain",
8432
- surfaceTexture: "deep-pore",
8433
- textureRepeat: { u: 3, v: 4 },
8434
- sourceRef: "KL02NT/KH02DT",
8435
- thumbnail: "materials/kl-teak/thumbnail.jpg",
8436
- substrate: "melamine"
8437
- },
8438
- "kl-ash-grey": {
8439
- id: "kl-ash-grey",
8440
- label: "Ash Grey",
8441
- priceMultiplier: 1.5,
8442
- fallbackColor: "#9b9898",
8443
- textureSet: {
8444
- baseColor: "materials/kl-ash-grey/baseColor.ktx2",
8445
- normal: "materials/kl-ash-grey/normal.ktx2",
8446
- roughness: "materials/kl-ash-grey/roughness.ktx2"
8447
- },
8448
- category: "wood-grain",
8449
- surfaceTexture: "deep-pore",
8450
- textureRepeat: { u: 3, v: 4 },
8451
- sourceRef: "KL33NT/KH33DT",
8452
- thumbnail: "materials/kl-ash-grey/thumbnail.jpg",
8453
- substrate: "melamine"
8454
- },
8455
- // Aks DT (SM'art, pattern)
8456
- "ml-aks-khaki": {
8457
- id: "ml-aks-khaki",
8458
- label: "Aks Khaki",
8359
+ "mel-kh63-dt": {
8360
+ id: "mel-kh63-dt",
8361
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D0\u05D2\u05D5\u05D6\u05D9 \u05DE\u05D9\u05E7\u05E1",
8459
8362
  priceMultiplier: 1,
8460
- fallbackColor: "#9b9880",
8363
+ fallbackColor: "#614728",
8461
8364
  textureSet: {
8462
- baseColor: "materials/ml-aks-khaki/baseColor.ktx2",
8463
- normal: "materials/ml-aks-khaki/normal.ktx2",
8464
- roughness: "materials/ml-aks-khaki/roughness.ktx2"
8365
+ baseColor: "materials/mel-kh63-dt/baseColor.jpg",
8366
+ normal: "materials/mel-kh63-dt/normal.jpg",
8367
+ roughness: "materials/mel-kh63-dt/roughness.jpg"
8465
8368
  },
8466
- category: "pattern",
8369
+ category: "wood-grain",
8467
8370
  surfaceTexture: "deep-texture",
8468
- textureRepeat: { u: 2, v: 2 },
8469
- sourceRef: "ML07DT",
8470
- thumbnail: "materials/ml-aks-khaki/thumbnail.jpg",
8371
+ textureRepeat: { u: 3, v: 4 },
8372
+ sourceRef: "KH63-DT",
8373
+ thumbnail: "materials/mel-kh63-dt/thumbnail.jpg",
8471
8374
  substrate: "melamine"
8472
8375
  },
8473
- "ml-aks-black": {
8474
- id: "ml-aks-black",
8475
- label: "Aks Black",
8376
+ "mel-kh61-dt": {
8377
+ id: "mel-kh61-dt",
8378
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D1\u05D4\u05D9\u05E8 \u05DE\u05D9\u05E7\u05E1",
8476
8379
  priceMultiplier: 1,
8477
- fallbackColor: "#1a1a1a",
8380
+ fallbackColor: "#a8824d",
8478
8381
  textureSet: {
8479
- baseColor: "materials/ml-aks-black/baseColor.ktx2",
8480
- normal: "materials/ml-aks-black/normal.ktx2",
8481
- roughness: "materials/ml-aks-black/roughness.ktx2"
8382
+ baseColor: "materials/mel-kh61-dt/baseColor.jpg",
8383
+ normal: "materials/mel-kh61-dt/normal.jpg",
8384
+ roughness: "materials/mel-kh61-dt/roughness.jpg"
8482
8385
  },
8483
- category: "pattern",
8386
+ category: "wood-grain",
8484
8387
  surfaceTexture: "deep-texture",
8485
- textureRepeat: { u: 2, v: 2 },
8486
- sourceRef: "ML09DT",
8487
- thumbnail: "materials/ml-aks-black/thumbnail.jpg",
8388
+ textureRepeat: { u: 3, v: 4 },
8389
+ sourceRef: "KH61-DT",
8390
+ thumbnail: "materials/mel-kh61-dt/thumbnail.jpg",
8488
8391
  substrate: "melamine"
8489
8392
  },
8490
- "ml-aks-white": {
8491
- id: "ml-aks-white",
8492
- label: "Aks White",
8393
+ "mel-kh14-dt": {
8394
+ id: "mel-kh14-dt",
8395
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D2\u05D3\u05E2",
8493
8396
  priceMultiplier: 1,
8494
- fallbackColor: "#f5f5f5",
8397
+ fallbackColor: "#916c3a",
8495
8398
  textureSet: {
8496
- baseColor: "materials/ml-aks-white/baseColor.ktx2",
8497
- normal: "materials/ml-aks-white/normal.ktx2",
8498
- roughness: "materials/ml-aks-white/roughness.ktx2"
8399
+ baseColor: "materials/mel-kh14-dt/baseColor.jpg",
8400
+ normal: "materials/mel-kh14-dt/normal.jpg",
8401
+ roughness: "materials/mel-kh14-dt/roughness.jpg"
8499
8402
  },
8500
- category: "pattern",
8403
+ category: "wood-grain",
8501
8404
  surfaceTexture: "deep-texture",
8502
- textureRepeat: { u: 2, v: 2 },
8503
- sourceRef: "ML06DT",
8504
- thumbnail: "materials/ml-aks-white/thumbnail.jpg",
8405
+ textureRepeat: { u: 3, v: 4 },
8406
+ sourceRef: "KH14-DT",
8407
+ thumbnail: "materials/mel-kh14-dt/thumbnail.jpg",
8505
8408
  substrate: "melamine"
8506
8409
  },
8507
- // ─── Acrylic PURE — matte flat (Bluran/SENOSAN, מניפה 6) ────────────
8508
- "acrylic-mocha-matte": {
8509
- id: "acrylic-mocha-matte",
8510
- label: "Mocha Matte",
8511
- priceMultiplier: 1,
8512
- fallbackColor: "#8b6b4e",
8513
- textureSet: {
8514
- baseColor: "materials/acrylic-mocha-matte/baseColor.ktx2",
8515
- normal: "materials/acrylic-mocha-matte/normal.ktx2",
8516
- roughness: "materials/acrylic-mocha-matte/roughness.ktx2"
8517
- },
8518
- category: "solid",
8519
- surfaceTexture: "soft-matte",
8520
- textureRepeat: { u: 1, v: 1 },
8521
- sourceRef: "ZA03SM",
8522
- thumbnail: "materials/acrylic-mocha-matte/thumbnail.jpg",
8523
- substrate: "acrylic"
8524
- },
8525
- "acrylic-khaki-grey-matte": {
8526
- id: "acrylic-khaki-grey-matte",
8527
- label: "Khaki Grey Matte",
8528
- priceMultiplier: 1,
8529
- fallbackColor: "#8b8b7a",
8530
- textureSet: {
8531
- baseColor: "materials/acrylic-khaki-grey-matte/baseColor.ktx2",
8532
- normal: "materials/acrylic-khaki-grey-matte/normal.ktx2",
8533
- roughness: "materials/acrylic-khaki-grey-matte/roughness.ktx2"
8534
- },
8535
- category: "solid",
8536
- surfaceTexture: "soft-matte",
8537
- textureRepeat: { u: 1, v: 1 },
8538
- sourceRef: "ZA05SM",
8539
- thumbnail: "materials/acrylic-khaki-grey-matte/thumbnail.jpg",
8540
- substrate: "acrylic"
8541
- },
8542
- "acrylic-sahara-matte": {
8543
- id: "acrylic-sahara-matte",
8544
- label: "Sahara Matte",
8410
+ "mel-kh68-dt": {
8411
+ id: "mel-kh68-dt",
8412
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D7\u05D5\u05DD \u05D0\u05D3\u05DE\u05D3\u05DD \u05DE\u05D9\u05E7\u05E1",
8545
8413
  priceMultiplier: 1,
8546
- fallbackColor: "#c4a882",
8414
+ fallbackColor: "#725337",
8547
8415
  textureSet: {
8548
- baseColor: "materials/acrylic-sahara-matte/baseColor.ktx2",
8549
- normal: "materials/acrylic-sahara-matte/normal.ktx2",
8550
- roughness: "materials/acrylic-sahara-matte/roughness.ktx2"
8416
+ baseColor: "materials/mel-kh68-dt/baseColor.jpg",
8417
+ normal: "materials/mel-kh68-dt/normal.jpg",
8418
+ roughness: "materials/mel-kh68-dt/roughness.jpg"
8551
8419
  },
8552
- category: "solid",
8553
- surfaceTexture: "soft-matte",
8554
- textureRepeat: { u: 1, v: 1 },
8555
- sourceRef: "ZA04SM",
8556
- thumbnail: "materials/acrylic-sahara-matte/thumbnail.jpg",
8557
- substrate: "acrylic"
8558
- },
8559
- "acrylic-light-grey-matte": {
8560
- id: "acrylic-light-grey-matte",
8561
- label: "Light Grey Matte",
8562
- priceMultiplier: 1,
8563
- fallbackColor: "#afafaf",
8564
- textureSet: {
8565
- baseColor: "materials/acrylic-light-grey-matte/baseColor.ktx2",
8566
- normal: "materials/acrylic-light-grey-matte/normal.ktx2",
8567
- roughness: "materials/acrylic-light-grey-matte/roughness.ktx2"
8568
- },
8569
- category: "solid",
8570
- surfaceTexture: "soft-matte",
8571
- textureRepeat: { u: 1, v: 1 },
8572
- sourceRef: "ZA71SM",
8573
- thumbnail: "materials/acrylic-light-grey-matte/thumbnail.jpg",
8574
- substrate: "acrylic"
8420
+ category: "wood-grain",
8421
+ surfaceTexture: "deep-texture",
8422
+ textureRepeat: { u: 3, v: 4 },
8423
+ sourceRef: "KH68-DT",
8424
+ thumbnail: "materials/mel-kh68-dt/thumbnail.jpg",
8425
+ substrate: "melamine"
8575
8426
  },
8576
- "acrylic-antique-blue-matte": {
8577
- id: "acrylic-antique-blue-matte",
8578
- label: "Antique Blue Matte",
8427
+ "mel-kh62-dt": {
8428
+ id: "mel-kh62-dt",
8429
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D7\u05DD \u05DE\u05D9\u05E7\u05E1",
8579
8430
  priceMultiplier: 1,
8580
- fallbackColor: "#5b7b8b",
8431
+ fallbackColor: "#875f3b",
8581
8432
  textureSet: {
8582
- baseColor: "materials/acrylic-antique-blue-matte/baseColor.ktx2",
8583
- normal: "materials/acrylic-antique-blue-matte/normal.ktx2",
8584
- roughness: "materials/acrylic-antique-blue-matte/roughness.ktx2"
8433
+ baseColor: "materials/mel-kh62-dt/baseColor.jpg",
8434
+ normal: "materials/mel-kh62-dt/normal.jpg",
8435
+ roughness: "materials/mel-kh62-dt/roughness.jpg"
8585
8436
  },
8586
- category: "solid",
8587
- surfaceTexture: "soft-matte",
8588
- textureRepeat: { u: 1, v: 1 },
8589
- sourceRef: "ZA69SM",
8590
- thumbnail: "materials/acrylic-antique-blue-matte/thumbnail.jpg",
8591
- substrate: "acrylic"
8437
+ category: "wood-grain",
8438
+ surfaceTexture: "deep-texture",
8439
+ textureRepeat: { u: 3, v: 4 },
8440
+ sourceRef: "KH62-DT",
8441
+ thumbnail: "materials/mel-kh62-dt/thumbnail.jpg",
8442
+ substrate: "melamine"
8592
8443
  },
8593
- "acrylic-antique-green-matte": {
8594
- id: "acrylic-antique-green-matte",
8595
- label: "Antique Green Matte",
8444
+ "mel-kh31-dt": {
8445
+ id: "mel-kh31-dt",
8446
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D8\u05D1\u05E2\u05D9 \u05DE\u05D1\u05D5\u05E7\u05E2",
8596
8447
  priceMultiplier: 1,
8597
- fallbackColor: "#6b8b7a",
8448
+ fallbackColor: "#c4a985",
8598
8449
  textureSet: {
8599
- baseColor: "materials/acrylic-antique-green-matte/baseColor.ktx2",
8600
- normal: "materials/acrylic-antique-green-matte/normal.ktx2",
8601
- roughness: "materials/acrylic-antique-green-matte/roughness.ktx2"
8450
+ baseColor: "materials/mel-kh31-dt/baseColor.jpg",
8451
+ normal: "materials/mel-kh31-dt/normal.jpg",
8452
+ roughness: "materials/mel-kh31-dt/roughness.jpg"
8602
8453
  },
8603
- category: "solid",
8604
- surfaceTexture: "soft-matte",
8605
- textureRepeat: { u: 1, v: 1 },
8606
- sourceRef: "ZA70SM",
8607
- thumbnail: "materials/acrylic-antique-green-matte/thumbnail.jpg",
8608
- substrate: "acrylic"
8454
+ category: "wood-grain",
8455
+ surfaceTexture: "deep-texture",
8456
+ textureRepeat: { u: 3, v: 4 },
8457
+ sourceRef: "KH31-DT",
8458
+ thumbnail: "materials/mel-kh31-dt/thumbnail.jpg",
8459
+ substrate: "melamine"
8609
8460
  },
8610
- "acrylic-ivory-matte": {
8611
- id: "acrylic-ivory-matte",
8612
- label: "Ivory Matte",
8461
+ "mel-kh32-dt": {
8462
+ id: "mel-kh32-dt",
8463
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D8\u05D1\u05E2\u05D9 \u05DE\u05D9\u05E7\u05E1",
8613
8464
  priceMultiplier: 1,
8614
- fallbackColor: "#ede8d5",
8465
+ fallbackColor: "#be9562",
8615
8466
  textureSet: {
8616
- baseColor: "materials/acrylic-ivory-matte/baseColor.ktx2",
8617
- normal: "materials/acrylic-ivory-matte/normal.ktx2",
8618
- roughness: "materials/acrylic-ivory-matte/roughness.ktx2"
8467
+ baseColor: "materials/mel-kh32-dt/baseColor.jpg",
8468
+ normal: "materials/mel-kh32-dt/normal.jpg",
8469
+ roughness: "materials/mel-kh32-dt/roughness.jpg"
8619
8470
  },
8620
- category: "solid",
8621
- surfaceTexture: "soft-matte",
8622
- textureRepeat: { u: 1, v: 1 },
8623
- sourceRef: "ZA02SM",
8624
- thumbnail: "materials/acrylic-ivory-matte/thumbnail.jpg",
8625
- substrate: "acrylic"
8471
+ category: "wood-grain",
8472
+ surfaceTexture: "deep-texture",
8473
+ textureRepeat: { u: 3, v: 4 },
8474
+ sourceRef: "KH32-DT",
8475
+ thumbnail: "materials/mel-kh32-dt/thumbnail.jpg",
8476
+ substrate: "melamine"
8626
8477
  },
8627
- "acrylic-coffee-matte": {
8628
- id: "acrylic-coffee-matte",
8629
- label: "Coffee Matte",
8478
+ "mel-kh65-dt": {
8479
+ id: "mel-kh65-dt",
8480
+ label: "\u05D0\u05DC\u05D5\u05DF \u05D8\u05E8\u05D8\u05D5\u05E4\u05D5 \u05DE\u05D9\u05E7\u05E1",
8630
8481
  priceMultiplier: 1,
8631
- fallbackColor: "#6b4a3a",
8482
+ fallbackColor: "#6f5d46",
8632
8483
  textureSet: {
8633
- baseColor: "materials/acrylic-coffee-matte/baseColor.ktx2",
8634
- normal: "materials/acrylic-coffee-matte/normal.ktx2",
8635
- roughness: "materials/acrylic-coffee-matte/roughness.ktx2"
8484
+ baseColor: "materials/mel-kh65-dt/baseColor.jpg",
8485
+ normal: "materials/mel-kh65-dt/normal.jpg",
8486
+ roughness: "materials/mel-kh65-dt/roughness.jpg"
8636
8487
  },
8637
- category: "solid",
8638
- surfaceTexture: "soft-matte",
8639
- textureRepeat: { u: 1, v: 1 },
8640
- sourceRef: "ZA38SM",
8641
- thumbnail: "materials/acrylic-coffee-matte/thumbnail.jpg",
8642
- substrate: "acrylic"
8488
+ category: "wood-grain",
8489
+ surfaceTexture: "deep-texture",
8490
+ textureRepeat: { u: 3, v: 4 },
8491
+ sourceRef: "KH65-DT",
8492
+ thumbnail: "materials/mel-kh65-dt/thumbnail.jpg",
8493
+ substrate: "melamine"
8643
8494
  },
8644
- "acrylic-white-matte": {
8645
- id: "acrylic-white-matte",
8646
- label: "White Matte",
8495
+ "mel-kh66-dt": {
8496
+ id: "mel-kh66-dt",
8497
+ label: "\u05D0\u05DC\u05D5\u05DF \u05DB\u05D4\u05D4 \u05DE\u05D9\u05E7\u05E1",
8647
8498
  priceMultiplier: 1,
8648
- fallbackColor: "#f5f5f5",
8499
+ fallbackColor: "#140c09",
8649
8500
  textureSet: {
8650
- baseColor: "materials/acrylic-white-matte/baseColor.ktx2",
8651
- normal: "materials/acrylic-white-matte/normal.ktx2",
8652
- roughness: "materials/acrylic-white-matte/roughness.ktx2"
8501
+ baseColor: "materials/mel-kh66-dt/baseColor.jpg",
8502
+ normal: "materials/mel-kh66-dt/normal.jpg",
8503
+ roughness: "materials/mel-kh66-dt/roughness.jpg"
8653
8504
  },
8654
- category: "solid",
8655
- surfaceTexture: "soft-matte",
8656
- textureRepeat: { u: 1, v: 1 },
8657
- sourceRef: "ZA06SM",
8658
- thumbnail: "materials/acrylic-white-matte/thumbnail.jpg",
8659
- substrate: "acrylic"
8505
+ category: "wood-grain",
8506
+ surfaceTexture: "deep-texture",
8507
+ textureRepeat: { u: 3, v: 4 },
8508
+ sourceRef: "KH66-DT",
8509
+ thumbnail: "materials/mel-kh66-dt/thumbnail.jpg",
8510
+ substrate: "melamine"
8660
8511
  },
8661
- "acrylic-grayish-matte": {
8662
- id: "acrylic-grayish-matte",
8663
- label: "Grayish Matte",
8512
+ "mel-kh74-dt": {
8513
+ id: "mel-kh74-dt",
8514
+ label: "\u05D0\u05DC\u05D5\u05DF \u05DB\u05DE\u05D4\u05D9\u05DF \u05DE\u05D9\u05E7\u05E1",
8664
8515
  priceMultiplier: 1,
8665
- fallbackColor: "#c8c8c8",
8516
+ fallbackColor: "#47382a",
8666
8517
  textureSet: {
8667
- baseColor: "materials/acrylic-grayish-matte/baseColor.ktx2",
8668
- normal: "materials/acrylic-grayish-matte/normal.ktx2",
8669
- roughness: "materials/acrylic-grayish-matte/roughness.ktx2"
8518
+ baseColor: "materials/mel-kh74-dt/baseColor.jpg",
8519
+ normal: "materials/mel-kh74-dt/normal.jpg",
8520
+ roughness: "materials/mel-kh74-dt/roughness.jpg"
8670
8521
  },
8671
- category: "solid",
8672
- surfaceTexture: "soft-matte",
8673
- textureRepeat: { u: 1, v: 1 },
8674
- sourceRef: "ZA07SM",
8675
- thumbnail: "materials/acrylic-grayish-matte/thumbnail.jpg",
8676
- substrate: "acrylic"
8522
+ category: "wood-grain",
8523
+ surfaceTexture: "deep-texture",
8524
+ textureRepeat: { u: 3, v: 4 },
8525
+ sourceRef: "KH74-DT",
8526
+ thumbnail: "materials/mel-kh74-dt/thumbnail.jpg",
8527
+ substrate: "melamine"
8677
8528
  },
8678
- "acrylic-smoky-grey-matte": {
8679
- id: "acrylic-smoky-grey-matte",
8680
- label: "Smoky Grey Matte",
8529
+ "mel-kh37-dt": {
8530
+ id: "mel-kh37-dt",
8531
+ label: "\u05D0\u05DC\u05D5\u05DF \u05DB\u05E4\u05E8\u05D9 \u05DE\u05D1\u05D5\u05E7\u05E2",
8681
8532
  priceMultiplier: 1,
8682
- fallbackColor: "#8b8b8b",
8533
+ fallbackColor: "#92714f",
8683
8534
  textureSet: {
8684
- baseColor: "materials/acrylic-smoky-grey-matte/baseColor.ktx2",
8685
- normal: "materials/acrylic-smoky-grey-matte/normal.ktx2",
8686
- roughness: "materials/acrylic-smoky-grey-matte/roughness.ktx2"
8535
+ baseColor: "materials/mel-kh37-dt/baseColor.jpg",
8536
+ normal: "materials/mel-kh37-dt/normal.jpg",
8537
+ roughness: "materials/mel-kh37-dt/roughness.jpg"
8687
8538
  },
8688
- category: "solid",
8689
- surfaceTexture: "soft-matte",
8690
- textureRepeat: { u: 1, v: 1 },
8691
- sourceRef: "ZA310SM",
8692
- thumbnail: "materials/acrylic-smoky-grey-matte/thumbnail.jpg",
8693
- substrate: "acrylic"
8539
+ category: "wood-grain",
8540
+ surfaceTexture: "deep-texture",
8541
+ textureRepeat: { u: 3, v: 4 },
8542
+ sourceRef: "KH37-DT",
8543
+ thumbnail: "materials/mel-kh37-dt/thumbnail.jpg",
8544
+ substrate: "melamine"
8694
8545
  },
8695
- "acrylic-indigo-blue-matte": {
8696
- id: "acrylic-indigo-blue-matte",
8697
- label: "Indigo Blue Matte",
8546
+ "mel-kh30-dt": {
8547
+ id: "mel-kh30-dt",
8548
+ label: "\u05D0\u05DC\u05D5\u05DF \u05DE\u05E2\u05D5\u05E9\u05DF \u05DE\u05D1\u05D5\u05E7\u05E2",
8698
8549
  priceMultiplier: 1,
8699
- fallbackColor: "#3b4b7b",
8550
+ fallbackColor: "#9f865d",
8700
8551
  textureSet: {
8701
- baseColor: "materials/acrylic-indigo-blue-matte/baseColor.ktx2",
8702
- normal: "materials/acrylic-indigo-blue-matte/normal.ktx2",
8703
- roughness: "materials/acrylic-indigo-blue-matte/roughness.ktx2"
8552
+ baseColor: "materials/mel-kh30-dt/baseColor.jpg",
8553
+ normal: "materials/mel-kh30-dt/normal.jpg",
8554
+ roughness: "materials/mel-kh30-dt/roughness.jpg"
8704
8555
  },
8705
- category: "solid",
8706
- surfaceTexture: "soft-matte",
8707
- textureRepeat: { u: 1, v: 1 },
8708
- sourceRef: "ZA08SM",
8709
- thumbnail: "materials/acrylic-indigo-blue-matte/thumbnail.jpg",
8710
- substrate: "acrylic"
8556
+ category: "wood-grain",
8557
+ surfaceTexture: "deep-texture",
8558
+ textureRepeat: { u: 3, v: 4 },
8559
+ sourceRef: "KH30-DT",
8560
+ thumbnail: "materials/mel-kh30-dt/thumbnail.jpg",
8561
+ substrate: "melamine"
8711
8562
  },
8712
- "acrylic-pearl-white-matte": {
8713
- id: "acrylic-pearl-white-matte",
8714
- label: "Pearl White Matte",
8563
+ "mel-kh64-dt": {
8564
+ id: "mel-kh64-dt",
8565
+ label: "\u05D0\u05DC\u05D5\u05DF \u05DE\u05E2\u05D5\u05E9\u05DF \u05DE\u05D9\u05E7\u05E1",
8715
8566
  priceMultiplier: 1,
8716
- fallbackColor: "#f0ede8",
8567
+ fallbackColor: "#6b573f",
8717
8568
  textureSet: {
8718
- baseColor: "materials/acrylic-pearl-white-matte/baseColor.ktx2",
8719
- normal: "materials/acrylic-pearl-white-matte/normal.ktx2",
8720
- roughness: "materials/acrylic-pearl-white-matte/roughness.ktx2"
8569
+ baseColor: "materials/mel-kh64-dt/baseColor.jpg",
8570
+ normal: "materials/mel-kh64-dt/normal.jpg",
8571
+ roughness: "materials/mel-kh64-dt/roughness.jpg"
8721
8572
  },
8722
- category: "solid",
8723
- surfaceTexture: "soft-matte",
8724
- textureRepeat: { u: 1, v: 1 },
8725
- sourceRef: "ZA301SM",
8726
- thumbnail: "materials/acrylic-pearl-white-matte/thumbnail.jpg",
8727
- substrate: "acrylic"
8573
+ category: "wood-grain",
8574
+ surfaceTexture: "deep-texture",
8575
+ textureRepeat: { u: 3, v: 4 },
8576
+ sourceRef: "KH64-DT",
8577
+ thumbnail: "materials/mel-kh64-dt/thumbnail.jpg",
8578
+ substrate: "melamine"
8728
8579
  },
8729
- "acrylic-greige-matte": {
8730
- id: "acrylic-greige-matte",
8731
- label: "Greige Matte",
8580
+ "mel-kh15-dt": {
8581
+ id: "mel-kh15-dt",
8582
+ label: "\u05D0\u05DC\u05D5\u05DF \u05E7\u05D5\u05E0\u05D9\u05D0\u05E7 \u05D2\u05D3\u05E2",
8732
8583
  priceMultiplier: 1,
8733
- fallbackColor: "#bfbaa8",
8584
+ fallbackColor: "#503622",
8734
8585
  textureSet: {
8735
- baseColor: "materials/acrylic-greige-matte/baseColor.ktx2",
8736
- normal: "materials/acrylic-greige-matte/normal.ktx2",
8737
- roughness: "materials/acrylic-greige-matte/roughness.ktx2"
8586
+ baseColor: "materials/mel-kh15-dt/baseColor.jpg",
8587
+ normal: "materials/mel-kh15-dt/normal.jpg",
8588
+ roughness: "materials/mel-kh15-dt/roughness.jpg"
8738
8589
  },
8739
- category: "solid",
8740
- surfaceTexture: "soft-matte",
8741
- textureRepeat: { u: 1, v: 1 },
8742
- sourceRef: "ZA35SM",
8743
- thumbnail: "materials/acrylic-greige-matte/thumbnail.jpg",
8744
- substrate: "acrylic"
8590
+ category: "wood-grain",
8591
+ surfaceTexture: "deep-texture",
8592
+ textureRepeat: { u: 3, v: 4 },
8593
+ sourceRef: "KH15-DT",
8594
+ thumbnail: "materials/mel-kh15-dt/thumbnail.jpg",
8595
+ substrate: "melamine"
8745
8596
  },
8746
- "acrylic-forest-green-matte": {
8747
- id: "acrylic-forest-green-matte",
8748
- label: "Forest Green Matte",
8597
+ "mel-kh75-dt": {
8598
+ id: "mel-kh75-dt",
8599
+ label: "\u05D0\u05DC\u05D5\u05DF \u05E9\u05D9\u05D8\u05D0\u05E7\u05D9 \u05DE\u05D9\u05E7\u05E1",
8749
8600
  priceMultiplier: 1,
8750
- fallbackColor: "#4a6b5a",
8601
+ fallbackColor: "#88766b",
8751
8602
  textureSet: {
8752
- baseColor: "materials/acrylic-forest-green-matte/baseColor.ktx2",
8753
- normal: "materials/acrylic-forest-green-matte/normal.ktx2",
8754
- roughness: "materials/acrylic-forest-green-matte/roughness.ktx2"
8603
+ baseColor: "materials/mel-kh75-dt/baseColor.jpg",
8604
+ normal: "materials/mel-kh75-dt/normal.jpg",
8605
+ roughness: "materials/mel-kh75-dt/roughness.jpg"
8755
8606
  },
8756
- category: "solid",
8757
- surfaceTexture: "soft-matte",
8758
- textureRepeat: { u: 1, v: 1 },
8759
- sourceRef: "ZA86SM",
8760
- thumbnail: "materials/acrylic-forest-green-matte/thumbnail.jpg",
8761
- substrate: "acrylic"
8607
+ category: "wood-grain",
8608
+ surfaceTexture: "deep-texture",
8609
+ textureRepeat: { u: 3, v: 4 },
8610
+ sourceRef: "KH75-DT",
8611
+ thumbnail: "materials/mel-kh75-dt/thumbnail.jpg",
8612
+ substrate: "melamine"
8762
8613
  },
8763
- "acrylic-earth-brown-matte": {
8764
- id: "acrylic-earth-brown-matte",
8765
- label: "Earth Brown Matte",
8614
+ "mel-kh33-dt": {
8615
+ id: "mel-kh33-dt",
8616
+ label: "\u05D0\u05E9\u05D0 \u05D0\u05E4\u05D5\u05E8",
8766
8617
  priceMultiplier: 1,
8767
- fallbackColor: "#7b5b4a",
8618
+ fallbackColor: "#978769",
8768
8619
  textureSet: {
8769
- baseColor: "materials/acrylic-earth-brown-matte/baseColor.ktx2",
8770
- normal: "materials/acrylic-earth-brown-matte/normal.ktx2",
8771
- roughness: "materials/acrylic-earth-brown-matte/roughness.ktx2"
8620
+ baseColor: "materials/mel-kh33-dt/baseColor.jpg",
8621
+ normal: "materials/mel-kh33-dt/normal.jpg",
8622
+ roughness: "materials/mel-kh33-dt/roughness.jpg"
8772
8623
  },
8773
- category: "solid",
8774
- surfaceTexture: "soft-matte",
8775
- textureRepeat: { u: 1, v: 1 },
8776
- sourceRef: "ZA85SM",
8777
- thumbnail: "materials/acrylic-earth-brown-matte/thumbnail.jpg",
8778
- substrate: "acrylic"
8624
+ category: "wood-grain",
8625
+ surfaceTexture: "deep-texture",
8626
+ textureRepeat: { u: 3, v: 4 },
8627
+ sourceRef: "KH33-DT",
8628
+ thumbnail: "materials/mel-kh33-dt/thumbnail.jpg",
8629
+ substrate: "melamine"
8779
8630
  },
8780
- "acrylic-dark-grey-matte": {
8781
- id: "acrylic-dark-grey-matte",
8782
- label: "Dark Grey Matte",
8631
+ "mel-ph158-sm": {
8632
+ id: "mel-ph158-sm",
8633
+ label: "\u05DC\u05D1\u05DF \u05E6\u05D3\u05E3",
8783
8634
  priceMultiplier: 1,
8784
- fallbackColor: "#6b6b6b",
8785
- textureSet: {
8786
- baseColor: "materials/acrylic-dark-grey-matte/baseColor.ktx2",
8787
- normal: "materials/acrylic-dark-grey-matte/normal.ktx2",
8788
- roughness: "materials/acrylic-dark-grey-matte/roughness.ktx2"
8789
- },
8635
+ fallbackColor: "#fafbf5",
8790
8636
  category: "solid",
8791
8637
  surfaceTexture: "soft-matte",
8792
8638
  textureRepeat: { u: 1, v: 1 },
8793
- sourceRef: "ZA72SM",
8794
- thumbnail: "materials/acrylic-dark-grey-matte/thumbnail.jpg",
8795
- substrate: "acrylic"
8639
+ sourceRef: "PH158-SM",
8640
+ thumbnail: "materials/mel-ph158-sm/thumbnail.jpg",
8641
+ substrate: "melamine"
8796
8642
  },
8797
- "acrylic-dark-black-matte": {
8798
- id: "acrylic-dark-black-matte",
8799
- label: "Dark Black Matte",
8643
+ "mel-ph159-sm": {
8644
+ id: "mel-ph159-sm",
8645
+ label: "\u05D0\u05E4\u05D5\u05E8 \u05D1\u05D4\u05D9\u05E8",
8800
8646
  priceMultiplier: 1,
8801
- fallbackColor: "#1a1a1a",
8802
- textureSet: {
8803
- baseColor: "materials/acrylic-dark-black-matte/baseColor.ktx2",
8804
- normal: "materials/acrylic-dark-black-matte/normal.ktx2",
8805
- roughness: "materials/acrylic-dark-black-matte/roughness.ktx2"
8806
- },
8647
+ fallbackColor: "#d2cbc1",
8807
8648
  category: "solid",
8808
8649
  surfaceTexture: "soft-matte",
8809
8650
  textureRepeat: { u: 1, v: 1 },
8810
- sourceRef: "ZA300SM",
8811
- thumbnail: "materials/acrylic-dark-black-matte/thumbnail.jpg",
8812
- substrate: "acrylic"
8651
+ sourceRef: "PH159-SM",
8652
+ thumbnail: "materials/mel-ph159-sm/thumbnail.jpg",
8653
+ substrate: "melamine"
8813
8654
  },
8814
- // ─── Acrylic PURE — glossy flat (Bluran/SENOSAN, מניפה 36) ──────────
8815
- "acrylic-pure-white-gloss": {
8816
- id: "acrylic-pure-white-gloss",
8817
- label: "Pure White Gloss",
8655
+ "mel-ph160-sm": {
8656
+ id: "mel-ph160-sm",
8657
+ label: "\u05DC\u05D1\u05DF \u05D0\u05E4\u05E8\u05E4\u05E8",
8818
8658
  priceMultiplier: 1,
8819
- fallbackColor: "#ffffff",
8820
- textureSet: {
8821
- baseColor: "materials/acrylic-pure-white-gloss/baseColor.ktx2",
8822
- normal: "materials/acrylic-pure-white-gloss/normal.ktx2",
8823
- roughness: "materials/acrylic-pure-white-gloss/roughness.ktx2"
8824
- },
8659
+ fallbackColor: "#fbfaf6",
8825
8660
  category: "solid",
8826
- surfaceTexture: "smooth",
8661
+ surfaceTexture: "soft-matte",
8827
8662
  textureRepeat: { u: 1, v: 1 },
8828
- sourceRef: "ZA12HG",
8829
- thumbnail: "materials/acrylic-pure-white-gloss/thumbnail.jpg",
8830
- substrate: "acrylic"
8663
+ sourceRef: "PH160-SM",
8664
+ thumbnail: "materials/mel-ph160-sm/thumbnail.jpg",
8665
+ substrate: "melamine"
8831
8666
  },
8832
- "acrylic-ivory-gloss": {
8833
- id: "acrylic-ivory-gloss",
8834
- label: "Ivory Gloss",
8667
+ "mel-ph161-sm": {
8668
+ id: "mel-ph161-sm",
8669
+ label: "\u05E9\u05E0\u05D4\u05D1",
8835
8670
  priceMultiplier: 1,
8836
- fallbackColor: "#ede8d5",
8837
- textureSet: {
8838
- baseColor: "materials/acrylic-ivory-gloss/baseColor.ktx2",
8839
- normal: "materials/acrylic-ivory-gloss/normal.ktx2",
8840
- roughness: "materials/acrylic-ivory-gloss/roughness.ktx2"
8841
- },
8671
+ fallbackColor: "#fff5e3",
8842
8672
  category: "solid",
8843
- surfaceTexture: "smooth",
8673
+ surfaceTexture: "soft-matte",
8844
8674
  textureRepeat: { u: 1, v: 1 },
8845
- sourceRef: "ZA53HG",
8846
- thumbnail: "materials/acrylic-ivory-gloss/thumbnail.jpg",
8847
- substrate: "acrylic"
8675
+ sourceRef: "PH161-SM",
8676
+ thumbnail: "materials/mel-ph161-sm/thumbnail.jpg",
8677
+ substrate: "melamine"
8848
8678
  },
8849
- "acrylic-light-grey-gloss": {
8850
- id: "acrylic-light-grey-gloss",
8851
- label: "Light Grey Gloss",
8679
+ "mel-ph162-sm": {
8680
+ id: "mel-ph162-sm",
8681
+ label: "\u05D0\u05E4\u05D5\u05E8 \u05DB\u05D4\u05D4",
8852
8682
  priceMultiplier: 1,
8853
- fallbackColor: "#afafaf",
8854
- textureSet: {
8855
- baseColor: "materials/acrylic-light-grey-gloss/baseColor.ktx2",
8856
- normal: "materials/acrylic-light-grey-gloss/normal.ktx2",
8857
- roughness: "materials/acrylic-light-grey-gloss/roughness.ktx2"
8858
- },
8683
+ fallbackColor: "#2f2b2c",
8859
8684
  category: "solid",
8860
- surfaceTexture: "smooth",
8685
+ surfaceTexture: "soft-matte",
8861
8686
  textureRepeat: { u: 1, v: 1 },
8862
- sourceRef: "ZA16HG",
8863
- thumbnail: "materials/acrylic-light-grey-gloss/thumbnail.jpg",
8864
- substrate: "acrylic"
8687
+ sourceRef: "PH162-SM",
8688
+ thumbnail: "materials/mel-ph162-sm/thumbnail.jpg",
8689
+ substrate: "melamine"
8865
8690
  },
8866
- "acrylic-cream-gloss": {
8867
- id: "acrylic-cream-gloss",
8868
- label: "Cream Gloss",
8691
+ "mel-ph163-sm": {
8692
+ id: "mel-ph163-sm",
8693
+ label: "\u05D2\u05E8\u05D9\u05D9\u05D6\u05F3",
8869
8694
  priceMultiplier: 1,
8870
- fallbackColor: "#f0e8d0",
8871
- textureSet: {
8872
- baseColor: "materials/acrylic-cream-gloss/baseColor.ktx2",
8873
- normal: "materials/acrylic-cream-gloss/normal.ktx2",
8874
- roughness: "materials/acrylic-cream-gloss/roughness.ktx2"
8875
- },
8695
+ fallbackColor: "#cec6b6",
8876
8696
  category: "solid",
8877
- surfaceTexture: "smooth",
8697
+ surfaceTexture: "soft-matte",
8878
8698
  textureRepeat: { u: 1, v: 1 },
8879
- sourceRef: "ZA13HG",
8880
- thumbnail: "materials/acrylic-cream-gloss/thumbnail.jpg",
8881
- substrate: "acrylic"
8699
+ sourceRef: "PH163-SM",
8700
+ thumbnail: "materials/mel-ph163-sm/thumbnail.jpg",
8701
+ substrate: "melamine"
8882
8702
  },
8883
- "acrylic-off-white-gloss": {
8884
- id: "acrylic-off-white-gloss",
8885
- label: "Off-White Gloss",
8703
+ "mel-ph164-sm": {
8704
+ id: "mel-ph164-sm",
8705
+ label: "\u05D7\u05D5\u05DD \u05D0\u05D3\u05DE\u05D4",
8886
8706
  priceMultiplier: 1,
8887
- fallbackColor: "#f5f0e8",
8888
- textureSet: {
8889
- baseColor: "materials/acrylic-off-white-gloss/baseColor.ktx2",
8890
- normal: "materials/acrylic-off-white-gloss/normal.ktx2",
8891
- roughness: "materials/acrylic-off-white-gloss/roughness.ktx2"
8892
- },
8707
+ fallbackColor: "#604440",
8893
8708
  category: "solid",
8894
- surfaceTexture: "smooth",
8709
+ surfaceTexture: "soft-matte",
8895
8710
  textureRepeat: { u: 1, v: 1 },
8896
- sourceRef: "ZA52HG",
8897
- thumbnail: "materials/acrylic-off-white-gloss/thumbnail.jpg",
8898
- substrate: "acrylic"
8711
+ sourceRef: "PH164-SM",
8712
+ thumbnail: "materials/mel-ph164-sm/thumbnail.jpg",
8713
+ substrate: "melamine"
8899
8714
  },
8900
- "acrylic-sahara-gloss": {
8901
- id: "acrylic-sahara-gloss",
8902
- label: "Sahara Gloss",
8715
+ "mel-ph165-sm": {
8716
+ id: "mel-ph165-sm",
8717
+ label: "\u05D0\u05E4\u05E8\u05E4\u05E8",
8903
8718
  priceMultiplier: 1,
8904
- fallbackColor: "#c4a882",
8905
- textureSet: {
8906
- baseColor: "materials/acrylic-sahara-gloss/baseColor.ktx2",
8907
- normal: "materials/acrylic-sahara-gloss/normal.ktx2",
8908
- roughness: "materials/acrylic-sahara-gloss/roughness.ktx2"
8909
- },
8719
+ fallbackColor: "#848889",
8910
8720
  category: "solid",
8911
- surfaceTexture: "smooth",
8721
+ surfaceTexture: "soft-matte",
8912
8722
  textureRepeat: { u: 1, v: 1 },
8913
- sourceRef: "ZA15HG",
8914
- thumbnail: "materials/acrylic-sahara-gloss/thumbnail.jpg",
8915
- substrate: "acrylic"
8723
+ sourceRef: "PH165-SM",
8724
+ thumbnail: "materials/mel-ph165-sm/thumbnail.jpg",
8725
+ substrate: "melamine"
8916
8726
  },
8917
- "acrylic-mocha-gloss": {
8918
- id: "acrylic-mocha-gloss",
8919
- label: "Mocha Gloss",
8727
+ "mel-ph166-sm": {
8728
+ id: "mel-ph166-sm",
8729
+ label: "\u05DB\u05D7\u05D5\u05DC \u05D0\u05D9\u05E0\u05D3\u05D9\u05D2\u05D5",
8920
8730
  priceMultiplier: 1,
8921
- fallbackColor: "#8b6b4e",
8922
- textureSet: {
8923
- baseColor: "materials/acrylic-mocha-gloss/baseColor.ktx2",
8924
- normal: "materials/acrylic-mocha-gloss/normal.ktx2",
8925
- roughness: "materials/acrylic-mocha-gloss/roughness.ktx2"
8926
- },
8731
+ fallbackColor: "#333645",
8927
8732
  category: "solid",
8928
- surfaceTexture: "smooth",
8733
+ surfaceTexture: "soft-matte",
8929
8734
  textureRepeat: { u: 1, v: 1 },
8930
- sourceRef: "ZA14HG",
8931
- thumbnail: "materials/acrylic-mocha-gloss/thumbnail.jpg",
8932
- substrate: "acrylic"
8735
+ sourceRef: "PH166-SM",
8736
+ thumbnail: "materials/mel-ph166-sm/thumbnail.jpg",
8737
+ substrate: "melamine"
8933
8738
  },
8934
- "acrylic-antique-blue-gloss": {
8935
- id: "acrylic-antique-blue-gloss",
8936
- label: "Antique Blue Gloss",
8739
+ "mel-ph167-sm": {
8740
+ id: "mel-ph167-sm",
8741
+ label: "\u05E7\u05E4\u05D4 \u05D0\u05D5-\u05DC\u05D4",
8937
8742
  priceMultiplier: 1,
8938
- fallbackColor: "#5b7b8b",
8939
- textureSet: {
8940
- baseColor: "materials/acrylic-antique-blue-gloss/baseColor.ktx2",
8941
- normal: "materials/acrylic-antique-blue-gloss/normal.ktx2",
8942
- roughness: "materials/acrylic-antique-blue-gloss/roughness.ktx2"
8943
- },
8743
+ fallbackColor: "#cac1a2",
8944
8744
  category: "solid",
8945
- surfaceTexture: "smooth",
8745
+ surfaceTexture: "soft-matte",
8946
8746
  textureRepeat: { u: 1, v: 1 },
8947
- sourceRef: "ZA20HG",
8948
- thumbnail: "materials/acrylic-antique-blue-gloss/thumbnail.jpg",
8949
- substrate: "acrylic"
8747
+ sourceRef: "PH167-SM",
8748
+ thumbnail: "materials/mel-ph167-sm/thumbnail.jpg",
8749
+ substrate: "melamine"
8950
8750
  },
8951
- "acrylic-dark-grey-gloss": {
8952
- id: "acrylic-dark-grey-gloss",
8953
- label: "Dark Grey Gloss",
8751
+ "mel-ph168-sm": {
8752
+ id: "mel-ph168-sm",
8753
+ label: "\u05D9\u05E8\u05D5\u05E7 \u05D9\u05E2\u05E8",
8954
8754
  priceMultiplier: 1,
8955
- fallbackColor: "#6b6b6b",
8956
- textureSet: {
8957
- baseColor: "materials/acrylic-dark-grey-gloss/baseColor.ktx2",
8958
- normal: "materials/acrylic-dark-grey-gloss/normal.ktx2",
8959
- roughness: "materials/acrylic-dark-grey-gloss/roughness.ktx2"
8960
- },
8755
+ fallbackColor: "#3e453d",
8961
8756
  category: "solid",
8962
- surfaceTexture: "smooth",
8757
+ surfaceTexture: "soft-matte",
8963
8758
  textureRepeat: { u: 1, v: 1 },
8964
- sourceRef: "ZA18HG",
8965
- thumbnail: "materials/acrylic-dark-grey-gloss/thumbnail.jpg",
8966
- substrate: "acrylic"
8759
+ sourceRef: "PH168-SM",
8760
+ thumbnail: "materials/mel-ph168-sm/thumbnail.jpg",
8761
+ substrate: "melamine"
8967
8762
  },
8968
- "acrylic-khaki-grey-gloss": {
8969
- id: "acrylic-khaki-grey-gloss",
8970
- label: "Khaki Grey Gloss",
8763
+ "mel-ph169-sm": {
8764
+ id: "mel-ph169-sm",
8765
+ label: "\u05D0\u05E4\u05D5\u05E8 \u05DE\u05E2\u05D5\u05E9\u05DF",
8971
8766
  priceMultiplier: 1,
8972
- fallbackColor: "#8b8b7a",
8973
- textureSet: {
8974
- baseColor: "materials/acrylic-khaki-grey-gloss/baseColor.ktx2",
8975
- normal: "materials/acrylic-khaki-grey-gloss/normal.ktx2",
8976
- roughness: "materials/acrylic-khaki-grey-gloss/roughness.ktx2"
8977
- },
8767
+ fallbackColor: "#55565a",
8978
8768
  category: "solid",
8979
- surfaceTexture: "smooth",
8769
+ surfaceTexture: "soft-matte",
8980
8770
  textureRepeat: { u: 1, v: 1 },
8981
- sourceRef: "ZA17HG",
8982
- thumbnail: "materials/acrylic-khaki-grey-gloss/thumbnail.jpg",
8983
- substrate: "acrylic"
8771
+ sourceRef: "PH169-SM",
8772
+ thumbnail: "materials/mel-ph169-sm/thumbnail.jpg",
8773
+ substrate: "melamine"
8984
8774
  },
8985
- // ─── Acrylic Fantasy — metallic (Bluran/SENOSAN, מניפה 40) ──────────
8986
- "acrylic-metallic-grey": {
8987
- id: "acrylic-metallic-grey",
8988
- label: "Metallic Grey",
8775
+ "mel-ph170-sm": {
8776
+ id: "mel-ph170-sm",
8777
+ label: "\u05D0\u05E4\u05D5\u05E8 \u05D7\u05D0\u05E7\u05D9",
8989
8778
  priceMultiplier: 1,
8990
- fallbackColor: "#8b8b8b",
8991
- textureSet: {
8992
- baseColor: "materials/acrylic-metallic-grey/baseColor.ktx2",
8993
- normal: "materials/acrylic-metallic-grey/normal.ktx2",
8994
- roughness: "materials/acrylic-metallic-grey/roughness.ktx2"
8995
- },
8779
+ fallbackColor: "#696357",
8996
8780
  category: "solid",
8997
- surfaceTexture: "smooth",
8781
+ surfaceTexture: "soft-matte",
8998
8782
  textureRepeat: { u: 1, v: 1 },
8999
- sourceRef: "ZA78SM",
9000
- thumbnail: "materials/acrylic-metallic-grey/thumbnail.jpg",
9001
- substrate: "acrylic"
8783
+ sourceRef: "PH170-SM",
8784
+ thumbnail: "materials/mel-ph170-sm/thumbnail.jpg",
8785
+ substrate: "melamine"
9002
8786
  },
9003
- "acrylic-bronze": {
9004
- id: "acrylic-bronze",
9005
- label: "Bronze",
8787
+ "mel-ph171-sm": {
8788
+ id: "mel-ph171-sm",
8789
+ label: "\u05E1\u05D4\u05E8\u05D4",
9006
8790
  priceMultiplier: 1,
9007
- fallbackColor: "#8b6b3a",
9008
- textureSet: {
9009
- baseColor: "materials/acrylic-bronze/baseColor.ktx2",
9010
- normal: "materials/acrylic-bronze/normal.ktx2",
9011
- roughness: "materials/acrylic-bronze/roughness.ktx2"
9012
- },
8791
+ fallbackColor: "#c9bdaf",
9013
8792
  category: "solid",
9014
- surfaceTexture: "smooth",
8793
+ surfaceTexture: "soft-matte",
9015
8794
  textureRepeat: { u: 1, v: 1 },
9016
- sourceRef: "ZA84SM",
9017
- thumbnail: "materials/acrylic-bronze/thumbnail.jpg",
9018
- substrate: "acrylic"
8795
+ sourceRef: "PH171-SM",
8796
+ thumbnail: "materials/mel-ph171-sm/thumbnail.jpg",
8797
+ substrate: "melamine"
9019
8798
  },
9020
- "acrylic-metallic-silver": {
9021
- id: "acrylic-metallic-silver",
9022
- label: "Metallic Silver",
8799
+ "mel-ph172-sm": {
8800
+ id: "mel-ph172-sm",
8801
+ label: "\u05D8\u05D5\u05E8\u05E7\u05D9\u05D6",
9023
8802
  priceMultiplier: 1,
9024
- fallbackColor: "#c0c0c0",
9025
- textureSet: {
9026
- baseColor: "materials/acrylic-metallic-silver/baseColor.ktx2",
9027
- normal: "materials/acrylic-metallic-silver/normal.ktx2",
9028
- roughness: "materials/acrylic-metallic-silver/roughness.ktx2"
9029
- },
8803
+ fallbackColor: "#cad3d0",
9030
8804
  category: "solid",
9031
- surfaceTexture: "smooth",
8805
+ surfaceTexture: "soft-matte",
9032
8806
  textureRepeat: { u: 1, v: 1 },
9033
- sourceRef: "ZA27HG",
9034
- thumbnail: "materials/acrylic-metallic-silver/thumbnail.jpg",
9035
- substrate: "acrylic"
8807
+ sourceRef: "PH172-SM",
8808
+ thumbnail: "materials/mel-ph172-sm/thumbnail.jpg",
8809
+ substrate: "melamine"
9036
8810
  },
9037
- "acrylic-metallic-white": {
9038
- id: "acrylic-metallic-white",
9039
- label: "Metallic White",
8811
+ "mel-ah07-tap": {
8812
+ id: "mel-ah07-tap",
8813
+ label: "\u05D0\u05E4\u05D5\u05E8",
9040
8814
  priceMultiplier: 1,
9041
- fallbackColor: "#f0f0f0",
9042
- textureSet: {
9043
- baseColor: "materials/acrylic-metallic-white/baseColor.ktx2",
9044
- normal: "materials/acrylic-metallic-white/normal.ktx2",
9045
- roughness: "materials/acrylic-metallic-white/roughness.ktx2"
9046
- },
8815
+ fallbackColor: "#e0dcd9",
9047
8816
  category: "solid",
9048
- surfaceTexture: "smooth",
8817
+ surfaceTexture: "soft-matte",
9049
8818
  textureRepeat: { u: 1, v: 1 },
9050
- sourceRef: "ZA25HG",
9051
- thumbnail: "materials/acrylic-metallic-white/thumbnail.jpg",
9052
- substrate: "acrylic"
8819
+ sourceRef: "AH07-TAP",
8820
+ thumbnail: "materials/mel-ah07-tap/thumbnail.jpg",
8821
+ substrate: "melamine"
9053
8822
  },
9054
- "acrylic-champagne-silk": {
9055
- id: "acrylic-champagne-silk",
9056
- label: "Champagne Silk",
8823
+ "mel-ah04-tap": {
8824
+ id: "mel-ah04-tap",
8825
+ label: "\u05D1\u05D6\u05F3",
9057
8826
  priceMultiplier: 1,
9058
- fallbackColor: "#c8b89a",
9059
- textureSet: {
9060
- baseColor: "materials/acrylic-champagne-silk/baseColor.ktx2",
9061
- normal: "materials/acrylic-champagne-silk/normal.ktx2",
9062
- roughness: "materials/acrylic-champagne-silk/roughness.ktx2"
9063
- },
8827
+ fallbackColor: "#d8d0cb",
9064
8828
  category: "solid",
9065
- surfaceTexture: "smooth",
8829
+ surfaceTexture: "soft-matte",
9066
8830
  textureRepeat: { u: 1, v: 1 },
9067
- sourceRef: "ZA10SM",
9068
- thumbnail: "materials/acrylic-champagne-silk/thumbnail.jpg",
9069
- substrate: "acrylic"
8831
+ sourceRef: "AH04-TAP",
8832
+ thumbnail: "materials/mel-ah04-tap/thumbnail.jpg",
8833
+ substrate: "melamine"
9070
8834
  },
9071
- "acrylic-peach-gold": {
9072
- id: "acrylic-peach-gold",
9073
- label: "Peach Gold",
8835
+ "mel-ah01-tap": {
8836
+ id: "mel-ah01-tap",
8837
+ label: "\u05D2\u05E8\u05E4\u05D9\u05D8",
9074
8838
  priceMultiplier: 1,
9075
- fallbackColor: "#d4a878",
9076
- textureSet: {
9077
- baseColor: "materials/acrylic-peach-gold/baseColor.ktx2",
9078
- normal: "materials/acrylic-peach-gold/normal.ktx2",
9079
- roughness: "materials/acrylic-peach-gold/roughness.ktx2"
9080
- },
8839
+ fallbackColor: "#57585a",
9081
8840
  category: "solid",
9082
- surfaceTexture: "smooth",
8841
+ surfaceTexture: "soft-matte",
9083
8842
  textureRepeat: { u: 1, v: 1 },
9084
- sourceRef: "ZA83SM",
9085
- thumbnail: "materials/acrylic-peach-gold/thumbnail.jpg",
9086
- substrate: "acrylic"
8843
+ sourceRef: "AH01-TAP",
8844
+ thumbnail: "materials/mel-ah01-tap/thumbnail.jpg",
8845
+ substrate: "melamine"
9087
8846
  },
9088
- "acrylic-rose-gold": {
9089
- id: "acrylic-rose-gold",
9090
- label: "Rose Gold",
8847
+ "mel-ah05-tap": {
8848
+ id: "mel-ah05-tap",
8849
+ label: "\u05D7\u05D5\u05DC",
9091
8850
  priceMultiplier: 1,
9092
- fallbackColor: "#c8a090",
9093
- textureSet: {
9094
- baseColor: "materials/acrylic-rose-gold/baseColor.ktx2",
9095
- normal: "materials/acrylic-rose-gold/normal.ktx2",
9096
- roughness: "materials/acrylic-rose-gold/roughness.ktx2"
9097
- },
8851
+ fallbackColor: "#e5ddd6",
9098
8852
  category: "solid",
9099
- surfaceTexture: "smooth",
8853
+ surfaceTexture: "soft-matte",
9100
8854
  textureRepeat: { u: 1, v: 1 },
9101
- sourceRef: "ZA82SM",
9102
- thumbnail: "materials/acrylic-rose-gold/thumbnail.jpg",
9103
- substrate: "acrylic"
8855
+ sourceRef: "AH05-TAP",
8856
+ thumbnail: "materials/mel-ah05-tap/thumbnail.jpg",
8857
+ substrate: "melamine"
9104
8858
  },
9105
- "acrylic-metallic-champagne": {
9106
- id: "acrylic-metallic-champagne",
9107
- label: "Metallic Champagne",
8859
+ "mel-ah06-tap": {
8860
+ id: "mel-ah06-tap",
8861
+ label: "\u05DC\u05D1\u05DF",
9108
8862
  priceMultiplier: 1,
9109
- fallbackColor: "#c0a878",
9110
- textureSet: {
9111
- baseColor: "materials/acrylic-metallic-champagne/baseColor.ktx2",
9112
- normal: "materials/acrylic-metallic-champagne/normal.ktx2",
9113
- roughness: "materials/acrylic-metallic-champagne/roughness.ktx2"
9114
- },
8863
+ fallbackColor: "#f8f9fc",
9115
8864
  category: "solid",
9116
- surfaceTexture: "smooth",
8865
+ surfaceTexture: "soft-matte",
9117
8866
  textureRepeat: { u: 1, v: 1 },
9118
- sourceRef: "ZA26HG",
9119
- thumbnail: "materials/acrylic-metallic-champagne/thumbnail.jpg",
9120
- substrate: "acrylic"
8867
+ sourceRef: "AH06-TAP",
8868
+ thumbnail: "materials/mel-ah06-tap/thumbnail.jpg",
8869
+ substrate: "melamine"
9121
8870
  }
8871
+ // </generated:exterior-materials>
9122
8872
  };
9123
8873
 
9124
8874
  // ../../packages/shared/src/surfaceTextures.ts
@@ -9190,40 +8940,80 @@ var MATERIAL_LABELS_HE = {
9190
8940
  // Interior-only melamine (legacy)
9191
8941
  "white-melamine": "\u05DE\u05DC\u05DE\u05D9\u05DF \u05DC\u05D1\u05DF",
9192
8942
  "oak-veneer": "\u05E4\u05D5\u05E8\u05E0\u05D9\u05E8 \u05D0\u05DC\u05D5\u05DF",
9193
- "walnut-veneer": "\u05E4\u05D5\u05E8\u05E0\u05D9\u05E8 \u05D0\u05D2\u05D5\u05D6",
9194
- // Melamine — Portalline collection
9195
- "ml-soho-natural": "\u05E1\u05D5\u05D4\u05D5 \u05D8\u05D1\u05E2\u05D9",
9196
- "ml-soho-brown": "\u05E1\u05D5\u05D4\u05D5 \u05D7\u05D5\u05DD",
9197
- "ml-soho-grey": "\u05E1\u05D5\u05D4\u05D5 \u05D0\u05E4\u05D5\u05E8",
9198
- "ml-amazon-ash-bleached": "\u05D0\u05DE\u05D6\u05D5\u05DF \u05D0\u05E9 \u05DE\u05D5\u05DC\u05D1\u05DF",
9199
- "ml-amazon-ash-brown": "\u05D0\u05DE\u05D6\u05D5\u05DF \u05D0\u05E9 \u05D7\u05D5\u05DD",
9200
- "ml-amazon-ash-chestnut": "\u05D0\u05DE\u05D6\u05D5\u05DF \u05D0\u05E9 \u05E2\u05E8\u05DE\u05D5\u05DF",
9201
- "ml-amazon-ash-grey": "\u05D0\u05DE\u05D6\u05D5\u05DF \u05D0\u05E9 \u05D0\u05E4\u05D5\u05E8",
9202
- "ml-amazon-ash-taupe": "\u05D0\u05DE\u05D6\u05D5\u05DF \u05D0\u05E9 \u05D8\u05D0\u05D5\u05E4",
9203
- "ml-saqqara-bleached": "\u05E1\u05E7\u05E8\u05D4 \u05DE\u05D5\u05DC\u05D1\u05DF",
9204
- "ml-saqqara-natural": "\u05E1\u05E7\u05E8\u05D4 \u05D8\u05D1\u05E2\u05D9",
9205
- "ml-saqqara-red": "\u05E1\u05E7\u05E8\u05D4 \u05D0\u05D3\u05D5\u05DD",
9206
- "ml-saqqara-light-brown": "\u05E1\u05E7\u05E8\u05D4 \u05D7\u05D5\u05DD \u05D1\u05D4\u05D9\u05E8",
9207
- "ml-saqqara-chestnut": "\u05E1\u05E7\u05E8\u05D4 \u05E2\u05E8\u05DE\u05D5\u05DF",
9208
- "kl-oak-natural": "\u05D0\u05DC\u05D5\u05DF \u05D8\u05D1\u05E2\u05D9",
9209
- "kl-oak-split-natural": "\u05D0\u05DC\u05D5\u05DF \u05E1\u05E4\u05DC\u05D9\u05D8 \u05D8\u05D1\u05E2\u05D9",
9210
- "kl-oak-split-smoked": "\u05D0\u05DC\u05D5\u05DF \u05E1\u05E4\u05DC\u05D9\u05D8 \u05DE\u05E2\u05D5\u05E9\u05DF",
9211
- "kl-oak-cognac": "\u05D0\u05DC\u05D5\u05DF \u05E7\u05D5\u05E0\u05D9\u05D0\u05E7",
9212
- "kl-oak-trunk": "\u05D0\u05DC\u05D5\u05DF \u05D2\u05D6\u05E2",
9213
- "kl-oak-light": "\u05D0\u05DC\u05D5\u05DF \u05D1\u05D4\u05D9\u05E8",
9214
- "kl-oak-brown": "\u05D0\u05DC\u05D5\u05DF \u05D7\u05D5\u05DD",
9215
- "kl-oak-dark-brown": "\u05D0\u05DC\u05D5\u05DF \u05D7\u05D5\u05DD \u05DB\u05D4\u05D4",
9216
- "kl-oak-greyish": "\u05D0\u05DC\u05D5\u05DF \u05D0\u05E4\u05E8\u05E4\u05E8",
9217
- "kl-vinto-cortina": "\u05D5\u05D9\u05E0\u05D8\u05D5 \u05E7\u05D5\u05E8\u05D8\u05D9\u05E0\u05D4",
9218
- "kl-oak-bronze": "\u05D0\u05DC\u05D5\u05DF \u05D1\u05E8\u05D5\u05E0\u05D6\u05D4",
9219
- "kl-oak-platinum": "\u05D0\u05DC\u05D5\u05DF \u05E4\u05DC\u05D8\u05D9\u05E0\u05D4",
9220
- "kl-oak-white": "\u05D0\u05DC\u05D5\u05DF \u05DC\u05D1\u05DF",
9221
- "kl-oak-split": "\u05D0\u05DC\u05D5\u05DF \u05E1\u05E4\u05DC\u05D9\u05D8",
9222
- "kl-teak": "\u05D8\u05D9\u05E7",
9223
- "kl-ash-grey": "\u05D0\u05E4\u05E8 \u05D0\u05E4\u05D5\u05E8",
9224
- "ml-aks-khaki": "\u05D0\u05E7\u05E1 \u05D7\u05D0\u05E7\u05D9",
9225
- "ml-aks-black": "\u05D0\u05E7\u05E1 \u05E9\u05D7\u05D5\u05E8",
9226
- "ml-aks-white": "\u05D0\u05E7\u05E1 \u05DC\u05D1\u05DF"
8943
+ "walnut-veneer": "\u05E4\u05D5\u05E8\u05E0\u05D9\u05E8 \u05D0\u05D2\u05D5\u05D6"
8944
+ };
8945
+ var MATERIAL_LABELS_EN = {
8946
+ // <generated:interior-labels-en>
8947
+ "interior-ph158-sm": "Pearl White",
8948
+ "interior-ph159-sm": "Light Grey",
8949
+ "interior-ph163-sm": "Greige",
8950
+ "interior-kh62-dt": "Warm Oak Mix",
8951
+ // </generated:interior-labels-en>
8952
+ "interior-eco-white": "Eco White",
8953
+ "interior-champagne": "Champagne",
8954
+ "interior-bright-grey": "Bright Grey",
8955
+ "interior-oak-natue": "Oak Natue",
8956
+ // <generated:material-labels-en>
8957
+ "acrylic-za35-sm": "Greige",
8958
+ "acrylic-za71-sm": "Light Grey",
8959
+ "acrylic-za05-sm": "Khaki Grey",
8960
+ "acrylic-za72-sm": "Dark Grey",
8961
+ "acrylic-za310-sm": "Smoky Grey",
8962
+ "acrylic-za07-sm": "Greyish",
8963
+ "acrylic-za85-sm": "Earth Brown",
8964
+ "acrylic-za86-sm": "Forest Green",
8965
+ "acrylic-za70-sm": "Antique Green",
8966
+ "acrylic-za08-sm": "Indigo Blue",
8967
+ "acrylic-za69-sm": "Antique Blue",
8968
+ "acrylic-za06-sm": "White",
8969
+ "acrylic-za301-sm": "Pearl White",
8970
+ "acrylic-za03-sm": "Mocha",
8971
+ "acrylic-za04-sm": "Sahara",
8972
+ "acrylic-za38-sm": "Coffee",
8973
+ "acrylic-za300-sm": "Dark Black",
8974
+ "acrylic-za02-sm": "Ivory",
8975
+ "acrylic-za36-sm": "Sand",
8976
+ "acrylic-za39-sm": "River Pebble",
8977
+ "acrylic-za37-sm": "Clay",
8978
+ "mel-kl67-nt": "Light Honey Oak Mix",
8979
+ "mel-kh69-dt": "Dark Walnut Wild Stripe",
8980
+ "mel-kh63-dt": "Nutty Oak Mix",
8981
+ "mel-kh61-dt": "Light Oak Mix",
8982
+ "mel-kh14-dt": "Oak Trunk",
8983
+ "mel-kh68-dt": "Reddish Brown Oak Mix",
8984
+ "mel-kh62-dt": "Warm Oak Mix",
8985
+ "mel-kh31-dt": "Oak Split Natural",
8986
+ "mel-kh32-dt": "Oak Natural Mix",
8987
+ "mel-kh65-dt": "Tartufo Oak Mix",
8988
+ "mel-kh66-dt": "Dark Oak Mix",
8989
+ "mel-kh74-dt": "Truffle Oak Mix",
8990
+ "mel-kh37-dt": "Rustic Split Oak",
8991
+ "mel-kh30-dt": "Oak Split Smoked",
8992
+ "mel-kh64-dt": "Smoked Oak Mix",
8993
+ "mel-kh15-dt": "Oak Cognac Trunk",
8994
+ "mel-kh75-dt": "Shiitake Oak Mix",
8995
+ "mel-kh33-dt": "Ash Grey",
8996
+ "mel-ph158-sm": "Pearl White",
8997
+ "mel-ph159-sm": "Light Grey",
8998
+ "mel-ph160-sm": "Greyish White",
8999
+ "mel-ph161-sm": "Ivory",
9000
+ "mel-ph162-sm": "Dark Grey",
9001
+ "mel-ph163-sm": "Greige",
9002
+ "mel-ph164-sm": "Earth Brown",
9003
+ "mel-ph165-sm": "Greyish",
9004
+ "mel-ph166-sm": "Indigo Blue",
9005
+ "mel-ph167-sm": "Caf\xE9 au Lait",
9006
+ "mel-ph168-sm": "Forest Green",
9007
+ "mel-ph169-sm": "Smoky Grey",
9008
+ "mel-ph170-sm": "Khaki Grey",
9009
+ "mel-ph171-sm": "Sahara",
9010
+ "mel-ph172-sm": "Turquoise",
9011
+ "mel-ah07-tap": "Grey",
9012
+ "mel-ah04-tap": "Beige",
9013
+ "mel-ah01-tap": "Graphite",
9014
+ "mel-ah05-tap": "Sand",
9015
+ "mel-ah06-tap": "White"
9016
+ // </generated:material-labels-en>
9227
9017
  };
9228
9018
  function describeWardrobe(config, locale = "en") {
9229
9019
  if (locale === "he") return describeWardrobeHe(config);
@@ -9232,12 +9022,16 @@ function describeWardrobe(config, locale = "en") {
9232
9022
  lines.push(`${posLabel} wardrobe, ${config.width} \xD7 ${config.height} \xD7 ${config.depth} cm`);
9233
9023
  const intId = config.materialInternal ?? config.material;
9234
9024
  const extId = config.materialExternal ?? config.material;
9235
- const intLabel = MATERIALS[intId].label;
9236
- const extLabel = MATERIALS[extId].label;
9025
+ const intLabel = MATERIAL_LABELS_EN[intId] ?? MATERIALS[intId].label;
9026
+ const extLabel = MATERIAL_LABELS_EN[extId] ?? MATERIALS[extId].label;
9027
+ const intCode = MATERIALS[intId]?.sourceRef;
9028
+ const intText = intCode ? `${intLabel} (${intCode})` : intLabel;
9029
+ const extCode = MATERIALS[extId]?.sourceRef;
9030
+ const extText = extCode ? `${extLabel} (${extCode})` : extLabel;
9237
9031
  if (intId === extId) {
9238
- lines.push(`Material: ${intLabel}`);
9032
+ lines.push(`Material: ${intText}`);
9239
9033
  } else {
9240
- lines.push(`Material: ${intLabel} (interior) / ${extLabel} (exterior)`);
9034
+ lines.push(`Material: ${intText} (interior) / ${extText} (exterior)`);
9241
9035
  }
9242
9036
  const colWidths = config.columns.map((c) => `${c.width}`).join(" + ");
9243
9037
  lines.push(
@@ -9271,10 +9065,14 @@ function describeWardrobeHe(config) {
9271
9065
  const extId = config.materialExternal ?? config.material;
9272
9066
  const intLabel = MATERIAL_LABELS_HE[intId] ?? MATERIALS[intId].label;
9273
9067
  const extLabel = MATERIAL_LABELS_HE[extId] ?? MATERIALS[extId].label;
9068
+ const intCode = MATERIALS[intId]?.sourceRef;
9069
+ const intText = intCode ? `${intLabel} (${intCode})` : intLabel;
9070
+ const extCode = MATERIALS[extId]?.sourceRef;
9071
+ const extText = extCode ? `${extLabel} (${extCode})` : extLabel;
9274
9072
  if (intId === extId) {
9275
- lines.push(`\u05D7\u05D5\u05DE\u05E8: ${intLabel}`);
9073
+ lines.push(`\u05D7\u05D5\u05DE\u05E8: ${intText}`);
9276
9074
  } else {
9277
- lines.push(`\u05D7\u05D5\u05DE\u05E8: ${intLabel} (\u05E4\u05E0\u05D9\u05DD) / ${extLabel} (\u05D7\u05D5\u05E5)`);
9075
+ lines.push(`\u05D7\u05D5\u05DE\u05E8: ${intText} (\u05E4\u05E0\u05D9\u05DD) / ${extText} (\u05D7\u05D5\u05E5)`);
9278
9076
  }
9279
9077
  const colWidths = config.columns.map((c) => `${c.width}`).join(" + ");
9280
9078
  const colWord = config.columns.length === 1 ? "\u05E2\u05DE\u05D5\u05D3\u05D4" : "\u05E2\u05DE\u05D5\u05D3\u05D5\u05EA";
@@ -9373,13 +9171,16 @@ function groupModulesHe(modules, columnDepthCm, hasDoors) {
9373
9171
  // ../../packages/shared/src/bom.ts
9374
9172
  init_esm_shims();
9375
9173
 
9174
+ // ../../packages/shared/src/grain.ts
9175
+ init_esm_shims();
9176
+
9376
9177
  // ../../packages/shared/src/normalizeConfig.ts
9377
9178
  init_esm_shims();
9378
9179
 
9379
9180
  // ../../packages/shared/src/shelfSpacing.ts
9380
9181
  init_esm_shims();
9381
- var SHELF_THICKNESS_CM = 2.8;
9382
- var FIXED_SHELF_GAPS_CM = [37.4, 34.2, 34.2];
9182
+ var SHELF_THICKNESS_CM = 2.5;
9183
+ var FIXED_SHELF_GAPS_CM = [37.4, 34.5, 34.5];
9383
9184
  var UPPER_COMPARTMENT_BRACKETS = [
9384
9185
  { maxHeightCm: 170, compartments: 1 },
9385
9186
  // 1241 < h ≤ 1700
@@ -9448,6 +9249,17 @@ init_esm_shims();
9448
9249
  // ../../packages/shared/src/manufacturingBom/drawerComponents.ts
9449
9250
  init_esm_shims();
9450
9251
 
9252
+ // ../../packages/shared/src/manufacturingBom/splitToLimits.ts
9253
+ init_esm_shims();
9254
+ var MIN_SEGMENT_MM = 150;
9255
+
9256
+ // ../../packages/shared/src/manufacturingBom/translateV2.ts
9257
+ var CUT_LABEL = {
9258
+ "column-height": "cut at column height",
9259
+ "max-length": "cut at material max length",
9260
+ "min-segment": `cut to keep the small section at ${MIN_SEGMENT_MM}mm`
9261
+ };
9262
+
9451
9263
  // ../../packages/shared/src/manufacturingBom/handleLookup.ts
9452
9264
  init_esm_shims();
9453
9265
 
@@ -9456,6 +9268,17 @@ init_esm_shims();
9456
9268
 
9457
9269
  // ../../packages/shared/src/orderWorkflow.ts
9458
9270
  init_esm_shims();
9271
+ var ORDER_STATUSES = [
9272
+ "created",
9273
+ "pending_contact",
9274
+ "paid",
9275
+ "sent_to_manufacturing",
9276
+ "in_manufacturing",
9277
+ "provided",
9278
+ "cancelled"
9279
+ ];
9280
+ var MEASUREMENT_STATUSES = ["pending_appointment", "appointment_set", "measured"];
9281
+ var LOGISTICS_STATUSES = ["pending_coordination", "coordinated", "done"];
9459
9282
  var OFFICE = ["admin", "support"];
9460
9283
  var TRANSITIONS = [
9461
9284
  // Main pipeline
@@ -9488,6 +9311,34 @@ var TRANSITIONS = [
9488
9311
  { track: "logistics", from: "coordinated", to: "done", roles: OFFICE }
9489
9312
  ];
9490
9313
 
9314
+ // ../../packages/shared/src/orderEmailEvents.ts
9315
+ init_esm_shims();
9316
+ var MAIN_LABELS = {
9317
+ created: "\u05D4\u05D6\u05DE\u05E0\u05D4 \u05E0\u05D5\u05E6\u05E8\u05D4",
9318
+ pending_contact: "\u05DE\u05DE\u05EA\u05D9\u05DF \u05DC\u05D9\u05E6\u05D9\u05E8\u05EA \u05E7\u05E9\u05E8",
9319
+ paid: "\u05E9\u05D5\u05DC\u05DD",
9320
+ sent_to_manufacturing: "\u05E0\u05E9\u05DC\u05D7 \u05DC\u05D9\u05D9\u05E6\u05D5\u05E8",
9321
+ in_manufacturing: "\u05D1\u05D9\u05D9\u05E6\u05D5\u05E8",
9322
+ provided: "\u05E1\u05D5\u05E4\u05E7",
9323
+ cancelled: "\u05D1\u05D5\u05D8\u05DC"
9324
+ };
9325
+ var MEASUREMENT_LABELS = {
9326
+ pending_appointment: "\u05DE\u05DE\u05EA\u05D9\u05DF \u05DC\u05EA\u05D9\u05D0\u05D5\u05DD \u05DE\u05D3\u05D9\u05D3\u05D4",
9327
+ appointment_set: "\u05DE\u05D3\u05D9\u05D3\u05D4 \u05E0\u05E7\u05D1\u05E2\u05D4",
9328
+ measured: "\u05E0\u05DE\u05D3\u05D3"
9329
+ };
9330
+ var LOGISTICS_LABELS = {
9331
+ pending_coordination: "\u05DE\u05DE\u05EA\u05D9\u05DF \u05DC\u05EA\u05D9\u05D0\u05D5\u05DD \u05D4\u05D5\u05D1\u05DC\u05D4",
9332
+ coordinated: "\u05D4\u05D5\u05D1\u05DC\u05D4 \u05EA\u05D5\u05D0\u05DE\u05D4",
9333
+ done: "\u05D4\u05D5\u05E9\u05DC\u05DD"
9334
+ };
9335
+ var ORDER_EMAIL_EVENTS = [
9336
+ ...ORDER_STATUSES.map((s) => ({ event: s, track: "main", label: MAIN_LABELS[s] })),
9337
+ ...MEASUREMENT_STATUSES.map((s) => ({ event: s, track: "measurement", label: MEASUREMENT_LABELS[s] })),
9338
+ ...LOGISTICS_STATUSES.map((s) => ({ event: s, track: "logistics", label: LOGISTICS_LABELS[s] }))
9339
+ ];
9340
+ var ALL_ORDER_EMAIL_EVENTS = ORDER_EMAIL_EVENTS.map((e) => e.event);
9341
+
9491
9342
  // ../../packages/shared/src/manufacturingBom/index.ts
9492
9343
  init_esm_shims();
9493
9344
 
@@ -9549,6 +9400,7 @@ var HandleCreateBodySchema = external_exports.object({
9549
9400
  costPrice: external_exports.number().nonnegative().max(1e6).default(0),
9550
9401
  sellPrice: external_exports.number().nonnegative().max(1e6).default(0),
9551
9402
  isPushToOpen: external_exports.boolean().default(false),
9403
+ isNoHandle: external_exports.boolean().default(false),
9552
9404
  isDefault: external_exports.boolean().default(false),
9553
9405
  active: external_exports.boolean().default(true)
9554
9406
  });
@@ -9632,6 +9484,40 @@ var DrawerBucketPatchBodySchema = external_exports.object({
9632
9484
  active: external_exports.boolean().optional()
9633
9485
  }).strict().refine((p) => Object.keys(p).length > 0, { message: "patch must contain at least one field" })
9634
9486
  });
9487
+ var MaterialLimitCreateBodySchema = external_exports.object({
9488
+ key: external_exports.string().trim().min(1).max(64),
9489
+ label: external_exports.string().max(120).default(""),
9490
+ sheetLengthMm: external_exports.number().int().positive().max(1e4),
9491
+ sheetWidthMm: external_exports.number().int().positive().max(1e4),
9492
+ maxPartLengthMm: external_exports.number().int().positive().max(1e4),
9493
+ maxPartWidthMm: external_exports.number().int().positive().max(1e4),
9494
+ grainDirectional: external_exports.boolean().default(false),
9495
+ allowBody: external_exports.boolean().default(true),
9496
+ allowDoor: external_exports.boolean().default(true),
9497
+ allowCladding: external_exports.boolean().default(true),
9498
+ allowClosures: external_exports.boolean().default(true),
9499
+ allowHandle: external_exports.boolean().default(true),
9500
+ comment: external_exports.string().max(500).default(""),
9501
+ active: external_exports.boolean().default(true)
9502
+ });
9503
+ var MaterialLimitPatchBodySchema = external_exports.object({
9504
+ version: external_exports.number().int().nonnegative(),
9505
+ patch: external_exports.object({
9506
+ label: external_exports.string().max(120).optional(),
9507
+ sheetLengthMm: external_exports.number().int().positive().max(1e4).optional(),
9508
+ sheetWidthMm: external_exports.number().int().positive().max(1e4).optional(),
9509
+ maxPartLengthMm: external_exports.number().int().positive().max(1e4).optional(),
9510
+ maxPartWidthMm: external_exports.number().int().positive().max(1e4).optional(),
9511
+ grainDirectional: external_exports.boolean().optional(),
9512
+ allowBody: external_exports.boolean().optional(),
9513
+ allowDoor: external_exports.boolean().optional(),
9514
+ allowCladding: external_exports.boolean().optional(),
9515
+ allowClosures: external_exports.boolean().optional(),
9516
+ allowHandle: external_exports.boolean().optional(),
9517
+ comment: external_exports.string().max(500).optional(),
9518
+ active: external_exports.boolean().optional()
9519
+ }).strict().refine((p) => Object.keys(p).length > 0, { message: "patch must contain at least one field" })
9520
+ });
9635
9521
 
9636
9522
  // ../../packages/shared/src/manufacturingBom/importSchemas.ts
9637
9523
  init_esm_shims();
@@ -9686,6 +9572,12 @@ init_esm_shims();
9686
9572
  // ../../packages/shared/src/manufacturingBom/drawerBucketLookup.ts
9687
9573
  init_esm_shims();
9688
9574
 
9575
+ // ../../packages/shared/src/manufacturingBom/materialLimitsLookup.ts
9576
+ init_esm_shims();
9577
+
9578
+ // ../../packages/shared/src/manufacturingBom/seams.ts
9579
+ init_esm_shims();
9580
+
9689
9581
  // ../../packages/shared/src/export/index.ts
9690
9582
  init_esm_shims();
9691
9583
 
@@ -10004,9 +9896,11 @@ var columnRules = [
10004
9896
  const depth = getColumnDepthCm(model.source, sourceCol);
10005
9897
  const { min, max } = DIMENSION_LIMITS.bodyDepthCm;
10006
9898
  if (depth < min || depth > max) {
9899
+ const limits = configuredDepthLimitsCm(model.source);
9900
+ const configured = toConfiguredDepthCm(depth, model.source);
10007
9901
  return [{
10008
9902
  path: `columns[${colIdx}]`,
10009
- message: `Column ${colIdx + 1} body depth (${depth}cm) must be between ${min}cm and ${max}cm.`,
9903
+ message: `Column ${colIdx + 1} depth (${configured}cm) must be between ${limits.min}cm and ${limits.max}cm.`,
10010
9904
  severity: "error",
10011
9905
  ruleId: "column-depth-range"
10012
9906
  }];
@@ -10648,7 +10542,7 @@ var PRESET_MAP = new Map(
10648
10542
  function buildDefaultConfig(opts = {}) {
10649
10543
  const width = opts.width ?? 100;
10650
10544
  const height = opts.height ?? 240;
10651
- const depth = opts.depth ?? 60;
10545
+ const depth = opts.depth ?? 62;
10652
10546
  const usableHeight = height - OVERHEAD_CM;
10653
10547
  const columnWidths = deriveColumnLayout(width);
10654
10548
  const columns = columnWidths.map((w) => ({
@@ -10665,7 +10559,7 @@ function buildDefaultConfig(opts = {}) {
10665
10559
  materialInternal: DEFAULT_INTERNAL_MATERIAL_ID,
10666
10560
  materialExternal: DEFAULT_EXTERNAL_MATERIAL_ID,
10667
10561
  columns,
10668
- ruleVersion: RULE_VERSION_FREE_DIMENSIONS
10562
+ ruleVersion: CURRENT_RULE_VERSION
10669
10563
  };
10670
10564
  const result = validateConfig(config);
10671
10565
  return result.correctedConfig ?? config;
@@ -11555,7 +11449,7 @@ import { setTimeout as delay2 } from "timers/promises";
11555
11449
 
11556
11450
  // src/apiClient.ts
11557
11451
  init_esm_shims();
11558
- var DEFAULT_API_URL = "https://spaces.lahat.group/api";
11452
+ var DEFAULT_API_URL = "https://pro.lahat.group/api";
11559
11453
  function resolveApiUrl() {
11560
11454
  return process.env.WARDROBE_API_URL ?? DEFAULT_API_URL;
11561
11455
  }
@@ -11665,7 +11559,7 @@ To authorize this CLI, visit:
11665
11559
  const body = err instanceof HTTPError ? await err.response.json().catch(() => ({})) : {};
11666
11560
  const error = body.error;
11667
11561
  if (error === "authorization_pending") continue;
11668
- if (error === "slow_down") {
11562
+ if (error === "slow_down" || err instanceof HTTPError && err.response.status === 429) {
11669
11563
  interval += 5;
11670
11564
  continue;
11671
11565
  }
@@ -11680,12 +11574,12 @@ init_esm_shims();
11680
11574
  async function whoami(opts = {}) {
11681
11575
  const client3 = createClient(readConfig()?.accessToken ?? null);
11682
11576
  const me = await client3.get("auth/me").json();
11683
- emit(
11684
- me,
11685
- !!opts.json,
11686
- () => process.stdout.write(`${me.displayName} <${me.email}> (${me.role})
11687
- `)
11688
- );
11577
+ emit(me, !!opts.json, () => {
11578
+ process.stdout.write(`${me.displayName} <${me.email}> \u2014 account role: ${me.role}
11579
+ `);
11580
+ if (me.agent) process.stdout.write(`Agent key scopes: ${me.agent.scopes.join(", ")}
11581
+ `);
11582
+ });
11689
11583
  }
11690
11584
  function logout(opts = {}) {
11691
11585
  clearConfig();
@@ -11788,8 +11682,35 @@ function skillInstall(opts) {
11788
11682
  });
11789
11683
  }
11790
11684
 
11685
+ // src/errors.ts
11686
+ init_esm_shims();
11687
+ async function readErrorBody(err) {
11688
+ if (!(err instanceof HTTPError)) return null;
11689
+ try {
11690
+ return await err.response.json();
11691
+ } catch {
11692
+ return null;
11693
+ }
11694
+ }
11695
+ async function formatCliError(err, json) {
11696
+ const body = await readErrorBody(err);
11697
+ if (json) {
11698
+ return JSON.stringify(body ? { error: body.error ?? "request_failed", ...body } : { error: err.message }, null, 2);
11699
+ }
11700
+ if (!body) return `Error: ${err.message}`;
11701
+ const parts = [body.error ?? "Request failed"];
11702
+ if (body.detail) parts.push(body.detail);
11703
+ if (body.fix_hint) parts.push(`fix: ${body.fix_hint}`);
11704
+ if (body.issues) parts.push(JSON.stringify(body.issues));
11705
+ return `Error: ${parts.join(" \u2014 ")}`;
11706
+ }
11707
+
11708
+ // src/version.ts
11709
+ init_esm_shims();
11710
+ var CLI_VERSION = "1.1.1";
11711
+
11791
11712
  // src/index.ts
11792
- program.name("wardrobe").description("Wardrobe configurator CLI").version("1.0.0");
11713
+ program.name("wardrobe").description("Wardrobe configurator CLI").version(CLI_VERSION);
11793
11714
  program.command("login").description("Authenticate via the OAuth device flow").option("--json", "machine-readable output").action((o) => login(o));
11794
11715
  program.command("whoami").description("Show the authenticated user").option("--json", "machine-readable output").action((o) => whoami(o));
11795
11716
  program.command("logout").description("Remove the stored agent key").option("--json", "machine-readable output").action((o) => logout(o));
@@ -11827,8 +11748,9 @@ var projects = program.command("projects").description("Manage projects");
11827
11748
  projects.command("list").description("List accessible projects").option("--json", "machine-readable output").action((o) => listProjects(o));
11828
11749
  var skill = program.command("skill").description("Manage the bundled Claude Skill");
11829
11750
  skill.command("install").description("Install the wardrobe-configurator Skill for Claude Code").option("--project", "install into ./.claude/skills instead of ~/.claude/skills").option("--json", "machine-readable output").action((o) => skillInstall(o));
11830
- program.parseAsync().catch((err) => {
11831
- process.stderr.write(`Error: ${err.message}
11751
+ program.parseAsync().catch(async (err) => {
11752
+ const message = await formatCliError(err, process.argv.includes("--json"));
11753
+ process.stderr.write(`${message}
11832
11754
  `);
11833
11755
  process.exit(1);
11834
11756
  });