@likec4/styles 1.41.0 → 1.42.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.
package/dist/preset.mjs CHANGED
@@ -3870,15 +3870,10 @@ function getSemanticTokens(darkMode, autoP3, colorScales = []) {
3870
3870
  ).map((scale) => {
3871
3871
  let lightScale = void 0;
3872
3872
  let darkScale = void 0;
3873
- let p3Scale = void 0;
3874
3873
  if (darkMode && !scale.dark && !scale.tags.includes("light"))
3875
3874
  darkScale = scales.find(
3876
3875
  (x) => x.name === scale.name && x.alpha === scale.alpha && x.p3 === scale.p3 && x.dark
3877
3876
  );
3878
- if (!darkScale && autoP3 && !scale.p3)
3879
- p3Scale = scales.find(
3880
- (x) => x.name === scale.name && x.alpha === scale.alpha && x.dark === scale.dark && x.p3
3881
- );
3882
3877
  if (darkScale)
3883
3878
  lightScale = scale.tags.includes("light") ? scale : scales.find(
3884
3879
  (x) => x.name === scale.name && x.alpha === scale.alpha && x.dark === scale.dark && x.p3 === scale.p3 && x.tags.includes("light")
@@ -3894,11 +3889,6 @@ function getSemanticTokens(darkMode, autoP3, colorScales = []) {
3894
3889
  base: `{colors.${lightScale.path}.${i}}`,
3895
3890
  _dark: `{colors.${darkScale.path}.${i}}`
3896
3891
  };
3897
- if (p3Scale)
3898
- value = {
3899
- base: color,
3900
- _p3: `{colors.${p3Scale.path}.${i}}`
3901
- };
3902
3892
  return {
3903
3893
  [i]: {
3904
3894
  value
@@ -4774,9 +4764,9 @@ const paletteGlobalVars = {
4774
4764
  "--likec4-palette-stroke": "#2563eb",
4775
4765
  "--likec4-palette-hiContrast": "#eff6ff",
4776
4766
  "--likec4-palette-loContrast": "#bfdbfe",
4777
- "--likec4-palette-relation-stroke": "#3b82f6",
4778
- "--likec4-palette-relation-label": "#60a5fa",
4779
- "--likec4-palette-relation-label-bg": "#172554"
4767
+ "--likec4-palette-relation-stroke": "#6E6E6E",
4768
+ "--likec4-palette-relation-label": "#C6C6C6",
4769
+ "--likec4-palette-relation-label-bg": "#18191b"
4780
4770
  };
4781
4771
  const conditions = {
4782
4772
  extend: {
@@ -4979,21 +4969,16 @@ const layerStyles = defineLayerStyles({
4979
4969
  paddingBlock: "1",
4980
4970
  paddingInline: "xs",
4981
4971
  borderRadius: "0",
4982
- backgroundColor: {
4983
- base: "likec4.panel.bg",
4984
- _reduceGraphicsOnPan: "likec4.panel.bg.whenPanning"
4985
- },
4972
+ backgroundColor: "likec4.panel.bg",
4986
4973
  border: "1px solid {colors.likec4.panel.border}",
4987
4974
  "@/sm": {
4988
4975
  boxShadow: "lg",
4989
4976
  borderRadius: "md",
4990
- padding: "2xs",
4991
- backdropFilter: "blur(10px)"
4977
+ padding: "2xs"
4992
4978
  },
4993
4979
  _whenPanning: {
4994
4980
  boxShadow: "none",
4995
- borderRadius: "0",
4996
- backdropFilter: "none"
4981
+ borderRadius: "0"
4997
4982
  }
4998
4983
  }
4999
4984
  },
@@ -5110,7 +5095,7 @@ const borderWidth = {
5110
5095
  var: "--_border-width",
5111
5096
  ref: "var(--_border-width)"
5112
5097
  };
5113
- const borderRadius = {
5098
+ const borderRadius$1 = {
5114
5099
  var: "--_border-radius",
5115
5100
  ref: "var(--_border-radius)"
5116
5101
  };
@@ -5130,7 +5115,7 @@ const compoundColor = {
5130
5115
  var: "--_compound-color",
5131
5116
  ref: "var(--_compound-color)"
5132
5117
  };
5133
- const parts$1 = defineParts({
5118
+ const parts$3 = defineParts({
5134
5119
  root: { selector: "&" },
5135
5120
  titleContainer: { selector: "& .likec4-compound-title-container" },
5136
5121
  title: { selector: "& .likec4-compound-title" },
@@ -5142,7 +5127,7 @@ const parts$1 = defineParts({
5142
5127
  const iconSize = "20px";
5143
5128
  const compoundNode = defineRecipe({
5144
5129
  className: "likec4-compound-node",
5145
- base: parts$1({
5130
+ base: parts$3({
5146
5131
  root: {
5147
5132
  position: "relative",
5148
5133
  width: "100%",
@@ -5153,14 +5138,14 @@ const compoundNode = defineRecipe({
5153
5138
  backgroundClip: "padding-box",
5154
5139
  borderStyle: "solid",
5155
5140
  borderWidth: borderWidth.ref,
5156
- borderRadius: borderRadius.ref,
5141
+ borderRadius: borderRadius$1.ref,
5157
5142
  boxSizing: "border-box",
5158
5143
  ["--likec4-palette-outline"]: {
5159
5144
  _light: "color-mix(in srgb, var(--likec4-palette-stroke) 80%, var(--likec4-palette-hiContrast))",
5160
5145
  _dark: "color-mix(in srgb, var(--likec4-palette-stroke) 60%, var(--likec4-palette-hiContrast))"
5161
5146
  },
5162
5147
  [borderWidth.var]: "3px",
5163
- [borderRadius.var]: "6px",
5148
+ [borderRadius$1.var]: "6px",
5164
5149
  [compoundTransparency.var]: "100%",
5165
5150
  [borderTransparency.var]: "100%",
5166
5151
  [indicatorSpacing.var]: `calc(${borderWidth.ref} + 2px)`,
@@ -5175,7 +5160,7 @@ const compoundNode = defineRecipe({
5175
5160
  height: `[calc(100% + 2 * ${indicatorSpacing.ref})]`,
5176
5161
  borderStyle: "solid",
5177
5162
  borderWidth: `calc(${borderWidth.ref} + 1px)`,
5178
- borderRadius: `calc(${borderRadius.ref} + 4px)`,
5163
+ borderRadius: `calc(${borderRadius$1.ref} + 4px)`,
5179
5164
  borderColor: "var(--likec4-palette-outline)",
5180
5165
  pointerEvents: "none",
5181
5166
  display: {
@@ -5283,7 +5268,7 @@ const compoundNode = defineRecipe({
5283
5268
  }),
5284
5269
  variants: {
5285
5270
  isTransparent: {
5286
- false: parts$1({
5271
+ false: parts$3({
5287
5272
  root: {
5288
5273
  boxShadow: {
5289
5274
  _noReduceGraphics: "0 4px 10px 0.5px rgb(0 0 0/10%) , 0 2px 2px -1px rgb(0 0 0/40%)",
@@ -5294,7 +5279,7 @@ const compoundNode = defineRecipe({
5294
5279
  borderColor: "var(--likec4-palette-stroke)"
5295
5280
  }
5296
5281
  }),
5297
- true: parts$1({
5282
+ true: parts$3({
5298
5283
  root: {
5299
5284
  backgroundColor: `[color-mix(in srgb, var(--likec4-palette-fill) ${compoundTransparency.ref}, transparent)]`,
5300
5285
  borderColor: `[color-mix(in srgb, var(--likec4-palette-stroke) ${borderTransparency.ref}, transparent)]`
@@ -5303,7 +5288,7 @@ const compoundNode = defineRecipe({
5303
5288
  },
5304
5289
  // When the compound node is too transparent, the text color should be inverted
5305
5290
  inverseColor: {
5306
- true: parts$1({
5291
+ true: parts$3({
5307
5292
  root: {
5308
5293
  [compoundColor.var]: {
5309
5294
  base: "var(--likec4-palette-stroke)",
@@ -5326,22 +5311,22 @@ const compoundNode = defineRecipe({
5326
5311
  false: {}
5327
5312
  },
5328
5313
  borderStyle: {
5329
- solid: parts$1({
5314
+ solid: parts$3({
5330
5315
  root: {
5331
5316
  borderStyle: "solid"
5332
5317
  }
5333
5318
  }),
5334
- dashed: parts$1({
5319
+ dashed: parts$3({
5335
5320
  root: {
5336
5321
  borderStyle: "dashed"
5337
5322
  }
5338
5323
  }),
5339
- dotted: parts$1({
5324
+ dotted: parts$3({
5340
5325
  root: {
5341
5326
  borderStyle: "dotted"
5342
5327
  }
5343
5328
  }),
5344
- none: parts$1({
5329
+ none: parts$3({
5345
5330
  root: {
5346
5331
  // We still need to have a border for consistent internal coordinates
5347
5332
  // So we use a transparent border and extend background
@@ -5400,45 +5385,185 @@ const edgeActionBtn = defineRecipe({
5400
5385
  conditions: ["*"]
5401
5386
  }]
5402
5387
  });
5403
- const varIconSize = `var(${iconSize$1})`;
5404
- const elementNodeIcon = defineRecipe({
5405
- className: "likec4-element-node-icon",
5406
- description: "Element Icon displayed in diagram nodes",
5407
- base: {
5408
- flex: `0 0 ${varIconSize}`,
5409
- height: varIconSize,
5410
- width: varIconSize,
5411
- display: "flex",
5412
- alignSelf: "flex-start",
5413
- alignItems: "center",
5414
- justifyContent: "center",
5415
- mixBlendMode: {
5416
- base: "hard-light",
5417
- _reduceGraphicsOnPan: "normal"
5418
- },
5419
- "& svg, & img": {
5420
- width: "100%",
5421
- height: "auto",
5388
+ const parts$2 = defineParts({
5389
+ root: { selector: "&" },
5390
+ icon: { selector: "& [data-likec4-icon]" },
5391
+ content: { selector: "& .likec4-element-node-content" },
5392
+ title: { selector: "& [data-likec4-node-title]" },
5393
+ description: { selector: "& [data-likec4-node-description]" },
5394
+ technology: { selector: "& [data-likec4-node-technology]" }
5395
+ });
5396
+ const varIconSize = `var(${iconSize$1}, 48px)`;
5397
+ const textAlign = "__text-align";
5398
+ const varTextAlign = `var(${textAlign})`;
5399
+ const elementNodeData = defineRecipe({
5400
+ className: "likec4-element-node-data",
5401
+ jsx: ["ElementNodeData", "ElementNodeData.Root", "ElementTitle"],
5402
+ base: parts$2({
5403
+ root: {
5404
+ position: "relative",
5405
+ flex: "1",
5406
+ height: "fit-content",
5407
+ width: "fit-content",
5422
5408
  maxHeight: "100%",
5409
+ maxWidth: "100%",
5410
+ margin: "[0 auto]",
5411
+ display: "flex",
5412
+ alignItems: "center",
5413
+ justifyContent: "center",
5414
+ flexDirection: "row",
5415
+ paddingTop: "var(--likec4-spacing)",
5416
+ paddingBottom: "var(--likec4-spacing)",
5417
+ paddingLeft: "calc(var(--likec4-spacing) + 8px)",
5418
+ paddingRight: "calc(var(--likec4-spacing) + 8px)",
5419
+ overflow: "hidden",
5423
5420
  pointerEvents: "none",
5424
- filter: {
5425
- base: [
5426
- "drop-shadow(0 0 3px rgb(0 0 0 / 12%))",
5427
- "drop-shadow(0 1px 8px rgb(0 0 0 / 8%))",
5428
- "drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))"
5429
- ],
5430
- _reduceGraphicsOnPan: "none"
5421
+ gap: "3",
5422
+ _shapeQueue: {
5423
+ paddingLeft: "46px",
5424
+ paddingRight: "16px"
5425
+ },
5426
+ _shapeMobile: {
5427
+ paddingLeft: "46px",
5428
+ paddingRight: "16px"
5429
+ },
5430
+ _shapeCylinder: {
5431
+ paddingTop: "30px"
5432
+ },
5433
+ _shapeStorage: {
5434
+ paddingTop: "30px"
5435
+ },
5436
+ _shapeBrowser: {
5437
+ paddingTop: "32px",
5438
+ paddingBottom: "28px"
5439
+ },
5440
+ _shapeSizeXs: {
5441
+ [iconSize$1]: "24px"
5442
+ },
5443
+ _shapeSizeSm: {
5444
+ [iconSize$1]: "36px"
5445
+ },
5446
+ _shapeSizeMd: {
5447
+ [iconSize$1]: "60px"
5448
+ },
5449
+ _shapeSizeLg: {
5450
+ [iconSize$1]: "82px",
5451
+ gap: "4"
5452
+ },
5453
+ _shapeSizeXl: {
5454
+ [iconSize$1]: "90px",
5455
+ gap: "4"
5456
+ },
5457
+ [textAlign]: "center",
5458
+ // When node has icon
5459
+ "&:has([data-likec4-icon])": {
5460
+ [textAlign]: "left",
5461
+ gap: "4",
5462
+ "& .likec4-element-node-content": {
5463
+ minWidth: `calc(50% + var(${iconSize$1}))`,
5464
+ alignItems: "flex-start"
5465
+ }
5431
5466
  }
5432
5467
  },
5433
- "& img": {
5434
- objectFit: "contain"
5468
+ icon: {
5469
+ flex: `0 0 ${varIconSize}`,
5470
+ height: varIconSize,
5471
+ width: varIconSize,
5472
+ display: "flex",
5473
+ alignSelf: "flex-start",
5474
+ alignItems: "center",
5475
+ justifyContent: "center",
5476
+ mixBlendMode: {
5477
+ base: "hard-light",
5478
+ _reduceGraphicsOnPan: "normal"
5479
+ },
5480
+ "& svg, & img": {
5481
+ width: "100%",
5482
+ height: "auto",
5483
+ maxHeight: "100%",
5484
+ pointerEvents: "none",
5485
+ filter: {
5486
+ base: [
5487
+ "drop-shadow(0 0 3px rgb(0 0 0 / 12%))",
5488
+ "drop-shadow(0 1px 8px rgb(0 0 0 / 8%))",
5489
+ "drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))"
5490
+ ],
5491
+ _reduceGraphicsOnPan: "none"
5492
+ }
5493
+ },
5494
+ "& img": {
5495
+ objectFit: "contain"
5496
+ }
5497
+ },
5498
+ content: {
5499
+ height: "fit-content",
5500
+ width: "fit-content",
5501
+ maxHeight: "100%",
5502
+ maxWidth: "100%",
5503
+ flex: "0 1 auto",
5504
+ display: "flex",
5505
+ flexDirection: "column",
5506
+ alignItems: "stretch",
5507
+ justifyContent: "center",
5508
+ flexWrap: "nowrap",
5509
+ overflow: "hidden",
5510
+ gap: "2",
5511
+ "&:has([data-likec4-node-description]):has([data-likec4-node-technology])": {
5512
+ gap: "1.5"
5513
+ }
5514
+ },
5515
+ title: {
5516
+ textStyle: "likec4.node.primary",
5517
+ flex: "0 0 auto",
5518
+ textAlign: varTextAlign,
5519
+ color: "var(--likec4-palette-hiContrast)"
5520
+ },
5521
+ description: {
5522
+ flexGrow: "0",
5523
+ flexShrink: "1",
5524
+ textStyle: "likec4.node.secondary",
5525
+ color: "var(--likec4-palette-loContrast)",
5526
+ textAlign: varTextAlign,
5527
+ textOverflow: "ellipsis",
5528
+ overflow: "hidden",
5529
+ _shapeSizeXs: {
5530
+ display: "none"
5531
+ },
5532
+ _smallZoom: {
5533
+ display: "none"
5534
+ },
5535
+ "& a": {
5536
+ pointerEvents: "all"
5537
+ }
5538
+ },
5539
+ technology: {
5540
+ flex: "0 0 auto",
5541
+ textStyle: "likec4.node.secondary",
5542
+ color: "var(--likec4-palette-loContrast)",
5543
+ fontSize: `calc(var(--likec4-text-size) * 0.635)`,
5544
+ lineHeight: 1.125,
5545
+ textAlign: varTextAlign,
5546
+ textWrap: "balance",
5547
+ opacity: 0.92,
5548
+ _whenHovered: {
5549
+ opacity: 1
5550
+ },
5551
+ _shapeSizeXs: {
5552
+ display: "none"
5553
+ },
5554
+ _shapeSizeSm: {
5555
+ display: "none"
5556
+ },
5557
+ _smallZoom: {
5558
+ display: "none"
5559
+ }
5435
5560
  }
5436
- },
5561
+ }),
5437
5562
  staticCss: [{
5438
5563
  conditions: ["*"]
5439
5564
  }]
5440
5565
  });
5441
- const parts = defineParts({
5566
+ const parts$1 = defineParts({
5442
5567
  root: { selector: "&" },
5443
5568
  outline: { selector: "& .likec4-shape-outline" },
5444
5569
  multipleHtml: { selector: "& .likec4-shape-multiple" },
@@ -5447,7 +5572,7 @@ const parts = defineParts({
5447
5572
  const elementShapeRecipe = defineRecipe({
5448
5573
  description: "Recipe for Diagram node shape",
5449
5574
  className: "likec4-element-shape",
5450
- base: parts({
5575
+ base: parts$1({
5451
5576
  root: {
5452
5577
  top: "0",
5453
5578
  left: "0",
@@ -5481,7 +5606,7 @@ const elementShapeRecipe = defineRecipe({
5481
5606
  }),
5482
5607
  variants: {
5483
5608
  shapetype: {
5484
- html: parts({
5609
+ html: parts$1({
5485
5610
  root: {
5486
5611
  backgroundColor: "var(--likec4-palette-fill)",
5487
5612
  borderRadius: "[6px]",
@@ -5509,14 +5634,14 @@ const elementShapeRecipe = defineRecipe({
5509
5634
  multipleHtml: {
5510
5635
  position: "absolute",
5511
5636
  content: '" "',
5512
- top: "[14px]",
5513
- left: "[14px]",
5514
- width: "[calc(100% - 6px)]",
5515
- height: "[calc(100% - 6px)]",
5637
+ top: 16,
5638
+ left: 16,
5639
+ width: "calc(100% - 6px)",
5640
+ height: "calc(100% - 6px)",
5516
5641
  backgroundColor: "var(--likec4-palette-fill)",
5517
- borderRadius: "[6px]",
5642
+ borderRadius: "6px",
5518
5643
  zIndex: -1,
5519
- filter: "brightness(0.65)",
5644
+ filter: "brightness(0.5) !important",
5520
5645
  visibility: {
5521
5646
  base: "visible",
5522
5647
  _smallZoom: "hidden",
@@ -5526,7 +5651,7 @@ const elementShapeRecipe = defineRecipe({
5526
5651
  },
5527
5652
  transition: "fast",
5528
5653
  _whenHovered: {
5529
- transform: "translate(-10px, -10px)"
5654
+ transform: "translate(-14px, -14px)"
5530
5655
  }
5531
5656
  },
5532
5657
  outline: {
@@ -5543,7 +5668,7 @@ const elementShapeRecipe = defineRecipe({
5543
5668
  animationStyle: "indicator"
5544
5669
  }
5545
5670
  }),
5546
- svg: parts({
5671
+ svg: parts$1({
5547
5672
  root: {
5548
5673
  fill: "var(--likec4-palette-fill)",
5549
5674
  stroke: "var(--likec4-palette-stroke)",
@@ -5584,11 +5709,11 @@ const elementShapeRecipe = defineRecipe({
5584
5709
  _shapeStorage: "50% 100%"
5585
5710
  },
5586
5711
  transform: {
5587
- base: "translate(14px, 14px) perspective(300px) translateZ(-8px)",
5588
- _whenHovered: "translate(2px, 2px) perspective(300px) translateZ(-8px)"
5712
+ base: "translate(14px, 14px) perspective(200px) translateZ(-4px)",
5713
+ _whenHovered: "translate(2px, 2px) perspective(200px) translateZ(-4px)"
5589
5714
  },
5590
5715
  transition: "fast",
5591
- filter: "brightness(0.65) !important",
5716
+ filter: "brightness(0.5) !important",
5592
5717
  stroke: "none",
5593
5718
  display: {
5594
5719
  _smallZoom: "none",
@@ -5666,7 +5791,10 @@ const likec4tag = defineRecipe({
5666
5791
  });
5667
5792
  const markdownBlock = defineRecipe({
5668
5793
  className: "likec4-markdown-block",
5669
- jsx: ["MarkdownBlock"],
5794
+ jsx: [
5795
+ "MarkdownBlock",
5796
+ "Markdown"
5797
+ ],
5670
5798
  description: "Block with Markdown content",
5671
5799
  base: {
5672
5800
  "--text-fz": "1rem",
@@ -5953,16 +6081,130 @@ const navigationPanelActionIcon = defineRecipe({
5953
6081
  conditions: ["*"]
5954
6082
  }]
5955
6083
  });
6084
+ const backdropBlur = "--_blur";
6085
+ const backdropOpacity = "--_opacity";
6086
+ const level = "--_level";
6087
+ const offset = "--_offset";
6088
+ const inset = "--_inset";
6089
+ const borderRadius = "--_border-radius";
6090
+ const parts = defineParts({
6091
+ dialog: { selector: "&" },
6092
+ body: { selector: "& .likec4-overlay-body" }
6093
+ });
6094
+ const overlay = defineRecipe({
6095
+ description: "Recipe for Overlay Dialog",
6096
+ className: "likec4-overlay",
6097
+ base: parts({
6098
+ dialog: {
6099
+ boxSizing: "border-box",
6100
+ margin: "0",
6101
+ position: "fixed",
6102
+ width: "100vw",
6103
+ height: "100vh",
6104
+ maxWidth: "100vw",
6105
+ maxHeight: "100vh",
6106
+ background: `likec4.overlay.border`,
6107
+ shadow: "xl",
6108
+ border: "transparent",
6109
+ outline: "none",
6110
+ borderRadius: `var(${borderRadius})`,
6111
+ [backdropBlur]: "0px",
6112
+ [level]: "0",
6113
+ [offset]: "0px",
6114
+ [inset]: "calc((1 + var(--_level) * 0.75) * var(--_offset))",
6115
+ [backdropOpacity]: "0%",
6116
+ [borderRadius]: "0px",
6117
+ _backdrop: {
6118
+ cursor: "zoom-out"
6119
+ },
6120
+ inset: "0",
6121
+ padding: "0"
6122
+ },
6123
+ body: {
6124
+ position: "relative",
6125
+ containerName: "likec4-dialog",
6126
+ containerType: "size",
6127
+ border: `transparent`,
6128
+ overflow: "hidden",
6129
+ width: "100%",
6130
+ height: "100%",
6131
+ background: "likec4.overlay.body"
6132
+ }
6133
+ }),
6134
+ variants: {
6135
+ fullscreen: {
6136
+ false: {
6137
+ dialog: {
6138
+ sm: {
6139
+ inset: "[var(--_inset) var(--_inset) var(--_offset) var(--_inset)]",
6140
+ width: "calc(100vw - 2 * var(--_inset))",
6141
+ height: "calc(100vh - var(--_offset) - var(--_inset))",
6142
+ [borderRadius]: "6px",
6143
+ padding: "1.5",
6144
+ // 6px
6145
+ [offset]: "1rem"
6146
+ },
6147
+ md: {
6148
+ [offset]: "1rem"
6149
+ },
6150
+ lg: {
6151
+ [offset]: "2rem"
6152
+ },
6153
+ xl: {
6154
+ [offset]: "4rem"
6155
+ }
6156
+ },
6157
+ body: {
6158
+ sm: {
6159
+ borderRadius: `calc(var(${borderRadius}) - 2px)`
6160
+ }
6161
+ }
6162
+ },
6163
+ true: {
6164
+ dialog: {
6165
+ inset: "0",
6166
+ padding: "0"
6167
+ }
6168
+ }
6169
+ },
6170
+ withBackdrop: {
6171
+ false: {
6172
+ dialog: {
6173
+ _backdrop: {
6174
+ display: "none"
6175
+ }
6176
+ }
6177
+ },
6178
+ true: {
6179
+ dialog: {
6180
+ _backdrop: {
6181
+ backdropFilter: `blur(var(${backdropBlur}))`,
6182
+ background: `color-mix(in srgb, {colors.likec4.overlay.backdrop} var(${backdropOpacity}), transparent)`
6183
+ }
6184
+ }
6185
+ }
6186
+ }
6187
+ },
6188
+ defaultVariants: {
6189
+ fullscreen: false,
6190
+ withBackdrop: true
6191
+ },
6192
+ staticCss: [{
6193
+ fullscreen: ["*"],
6194
+ withBackdrop: ["*"]
6195
+ }]
6196
+ });
5956
6197
  const recipes = {
5957
6198
  __proto__: null,
5958
6199
  actionBtn,
5959
6200
  compoundNode,
5960
6201
  edgeActionBtn,
5961
- elementNodeIcon,
6202
+ elementNodeData,
5962
6203
  elementShapeRecipe,
5963
6204
  likec4tag,
5964
6205
  markdownBlock,
5965
- navigationPanelActionIcon
6206
+ navigationPanelActionIcon,
6207
+ overlay
5966
6208
  };
5967
6209
  const semanticTokens = defineSemanticTokens({
5968
6210
  colors: {
@@ -5970,7 +6212,7 @@ const semanticTokens = defineSemanticTokens({
5970
6212
  background: {
5971
6213
  DEFAULT: {
5972
6214
  description: "Background color",
5973
- value: "{colors.mantine.colors.body}"
6215
+ value: "var(--mantine-color-body)"
5974
6216
  },
5975
6217
  pattern: {
5976
6218
  description: "Background pattern color",
@@ -6003,13 +6245,6 @@ const semanticTokens = defineSemanticTokens({
6003
6245
  bg: {
6004
6246
  DEFAULT: {
6005
6247
  description: "LikeC4 panel background color",
6006
- value: {
6007
- base: `{colors.mantine.colors.body/90}`,
6008
- _dark: `{colors.mantine.colors.dark[6]/80}`
6009
- }
6010
- },
6011
- whenPanning: {
6012
- description: "LikeC4 panel background color when panning",
6013
6248
  value: {
6014
6249
  base: `{colors.mantine.colors.body}`,
6015
6250
  _dark: `{colors.mantine.colors.dark[6]}`
@@ -6027,15 +6262,15 @@ const semanticTokens = defineSemanticTokens({
6027
6262
  text: {
6028
6263
  DEFAULT: {
6029
6264
  description: "LikeC4 action icon text color",
6030
- value: "{colors.mantine.colors.text/70}"
6265
+ value: "color-mix(in srgb, var(--mantine-color-text) 80%, transparent)"
6031
6266
  },
6032
6267
  hover: {
6033
6268
  description: "LikeC4 action icon text color on hover",
6034
- value: "{colors.mantine.colors.text}"
6269
+ value: "var(--mantine-color-bright)"
6035
6270
  },
6036
6271
  disabled: {
6037
6272
  description: "LikeC4 action icon text color when disabled",
6038
- value: "{colors.mantine.colors.dimmed}"
6273
+ value: "var(--mantine-color-dimmed)"
6039
6274
  }
6040
6275
  },
6041
6276
  bg: {
@@ -6070,6 +6305,27 @@ const semanticTokens = defineSemanticTokens({
6070
6305
  description: "LikeC4 dropdown border color",
6071
6306
  value: "{colors.likec4.panel.border}"
6072
6307
  }
6308
+ },
6309
+ overlay: {
6310
+ backdrop: {
6311
+ DEFAULT: {
6312
+ description: "LikeC4 overlay backdrop color",
6313
+ value: {
6314
+ base: `rgb(34 34 34)`,
6315
+ _light: `rgb(15 15 15)`
6316
+ }
6317
+ }
6318
+ },
6319
+ body: {
6320
+ DEFAULT: {
6321
+ description: "LikeC4 overlay body color",
6322
+ value: `var(--mantine-color-body)`
6323
+ }
6324
+ },
6325
+ border: {
6326
+ description: "LikeC4 overlay border color",
6327
+ value: "{colors.mantine.colors.defaultBorder/50}"
6328
+ }
6073
6329
  }
6074
6330
  }
6075
6331
  }
@@ -6183,181 +6439,6 @@ const edgeLabel = defineSlotRecipe({
6183
6439
  isStepEdge: ["*"]
6184
6440
  }]
6185
6441
  });
6186
- const title = {
6187
- textStyle: "likec4.node.primary",
6188
- flex: "0 0 auto",
6189
- textAlign: "center",
6190
- color: "var(--likec4-palette-hiContrast)"
6191
- };
6192
- const description = {
6193
- flexGrow: "0",
6194
- flexShrink: "1",
6195
- textStyle: "likec4.node.secondary",
6196
- color: "var(--likec4-palette-loContrast)",
6197
- textAlign: "center",
6198
- textOverflow: "ellipsis",
6199
- overflow: "hidden",
6200
- _shapeSizeXs: {
6201
- display: "none"
6202
- },
6203
- _smallZoom: {
6204
- display: "none"
6205
- },
6206
- "& a": {
6207
- pointerEvents: "all"
6208
- }
6209
- };
6210
- const technology = {
6211
- flex: "0 0 auto",
6212
- textStyle: "likec4.node.secondary",
6213
- color: "var(--likec4-palette-loContrast)",
6214
- fontSize: `calc(var(--likec4-text-size) * 0.635)`,
6215
- lineHeight: 1.125,
6216
- textAlign: "center",
6217
- textWrap: "balance",
6218
- opacity: 0.92,
6219
- _whenHovered: {
6220
- opacity: 1
6221
- },
6222
- _shapeSizeXs: {
6223
- display: "none"
6224
- },
6225
- _shapeSizeSm: {
6226
- display: "none"
6227
- },
6228
- _smallZoom: {
6229
- display: "none"
6230
- }
6231
- };
6232
- const elementNodeData = defineSlotRecipe({
6233
- className: "likec4-el-node-data",
6234
- slots: ["root", "textContainer", "title", "description", "technology", "icon"],
6235
- base: {
6236
- root: {
6237
- position: "relative",
6238
- flex: "1",
6239
- height: "fit-content",
6240
- width: "fit-content",
6241
- maxHeight: "100%",
6242
- maxWidth: "100%",
6243
- margin: "[0 auto]",
6244
- display: "flex",
6245
- alignItems: "center",
6246
- justifyContent: "center",
6247
- flexDirection: "row",
6248
- paddingTop: "var(--likec4-spacing)",
6249
- paddingBottom: "var(--likec4-spacing)",
6250
- paddingLeft: "calc(var(--likec4-spacing) + 8px)",
6251
- paddingRight: "calc(var(--likec4-spacing) + 8px)",
6252
- overflow: "hidden",
6253
- pointerEvents: "none",
6254
- gap: "3",
6255
- _shapeQueue: {
6256
- paddingLeft: "[46px]",
6257
- paddingRight: "[16px]"
6258
- },
6259
- _shapeMobile: {
6260
- paddingLeft: "[46px]",
6261
- paddingRight: "[16px]"
6262
- },
6263
- _shapeCylinder: {
6264
- paddingTop: "[30px]"
6265
- },
6266
- _shapeStorage: {
6267
- paddingTop: "[30px]"
6268
- },
6269
- _shapeBrowser: {
6270
- paddingTop: "[32px]",
6271
- paddingBottom: "[28px]"
6272
- },
6273
- _shapeSizeXs: {
6274
- [iconSize$1]: "24px"
6275
- },
6276
- _shapeSizeSm: {
6277
- [iconSize$1]: "36px"
6278
- },
6279
- _shapeSizeMd: {
6280
- [iconSize$1]: "60px"
6281
- },
6282
- _shapeSizeLg: {
6283
- [iconSize$1]: "82px",
6284
- gap: "4"
6285
- },
6286
- _shapeSizeXl: {
6287
- [iconSize$1]: "90px",
6288
- gap: "4"
6289
- }
6290
- },
6291
- textContainer: {
6292
- height: "fit-content",
6293
- width: "fit-content",
6294
- maxHeight: "100%",
6295
- maxWidth: "100%",
6296
- flex: "0 1 auto",
6297
- display: "flex",
6298
- flexDirection: "column",
6299
- alignItems: "stretch",
6300
- justifyContent: "center",
6301
- flexWrap: "nowrap",
6302
- overflow: "hidden",
6303
- gap: "8px"
6304
- },
6305
- title,
6306
- description,
6307
- technology
6308
- },
6309
- variants: {
6310
- hasIcon: {
6311
- false: {},
6312
- true: {
6313
- root: {
6314
- gap: "16px"
6315
- },
6316
- textContainer: {
6317
- minWidth: `calc(50% + var(${iconSize$1}))`,
6318
- alignItems: "flex-start"
6319
- },
6320
- title: {
6321
- textAlign: "left"
6322
- },
6323
- description: {
6324
- textAlign: "left"
6325
- },
6326
- technology: {
6327
- textAlign: "left"
6328
- }
6329
- }
6330
- },
6331
- hasDescription: {
6332
- false: {},
6333
- true: {}
6334
- },
6335
- hasTechnology: {
6336
- false: {},
6337
- true: {}
6338
- }
6339
- },
6340
- compoundVariants: [
6341
- {
6342
- hasDescription: true,
6343
- hasTechnology: true,
6344
- css: {
6345
- textContainer: {
6346
- gap: "6px"
6347
- }
6348
- }
6349
- }
6350
- ],
6351
- defaultVariants: {
6352
- hasIcon: false
6353
- },
6354
- staticCss: [{
6355
- hasIcon: ["*"],
6356
- hasDescription: ["*"],
6357
- hasTechnology: ["*"],
6358
- conditions: ["*"]
6359
- }]
6360
- });
6361
6442
  const navigationLink = defineSlotRecipe({
6362
6443
  className: "likec4-navlink",
6363
6444
  description: "Navigation Link (classes for Mantine NavLink)",
@@ -6426,7 +6507,6 @@ const navigationLink = defineSlotRecipe({
6426
6507
  const slotRecipes = {
6427
6508
  __proto__: null,
6428
6509
  edgeLabel,
6429
- elementNodeData,
6430
6510
  navigationLink
6431
6511
  };
6432
6512
  const textStyles = defineTextStyles({