@likec4/styles 1.36.1 → 1.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/preset.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { definePreset, defineSlotRecipe, defineRecipe, defineSemanticTokens, defineTokens, defineLayerStyles, defineTextStyles } from '@pandacss/dev';
1
+ import { definePreset, defineSlotRecipe, defineRecipe, defineSemanticTokens, defineTokens, defineLayerStyles, defineTextStyles, defineParts } from '@pandacss/dev';
2
2
 
3
3
  const grayDark = {
4
4
  gray1: "#111111",
@@ -3966,7 +3966,7 @@ const radixColors = [
3966
3966
  "grass",
3967
3967
  "lime"
3968
3968
  ];
3969
- const iconSize = "--likec4-icon-size";
3969
+ const iconSize$1 = "--likec4-icon-size";
3970
3970
  const breakpoints = {
3971
3971
  xs: "36em",
3972
3972
  sm: "48em",
@@ -4758,7 +4758,7 @@ const conditions = {
4758
4758
  reduceGraphicsOnPan: [
4759
4759
  `${root}:is(`,
4760
4760
  "[data-likec4-reduced-graphics]",
4761
- "[data-likec4-diagram-panning]",
4761
+ '[data-likec4-diagram-panning="true"]',
4762
4762
  ") &"
4763
4763
  ].join(""),
4764
4764
  noReduceGraphics: [
@@ -4766,13 +4766,13 @@ const conditions = {
4766
4766
  "[data-likec4-reduced-graphics]",
4767
4767
  ") &"
4768
4768
  ].join(""),
4769
- whenPanning: `:is(${root}[data-likec4-diagram-panning]) &`,
4770
- smallZoom: ":where([data-likec4-zoom-small]) &",
4769
+ whenPanning: `${root}:is([data-likec4-diagram-panning="true"]) &`,
4770
+ smallZoom: ':where([data-likec4-zoom-small="true"]) &',
4771
4771
  compoundTransparent: ":where([data-compound-transparent]) &",
4772
4772
  edgeActive: ':where([data-likec4-edge-active="true"]) &',
4773
- whenHovered: ':where([data-likec4-hovered="true"]) &',
4773
+ whenHovered: ':where(.react-flow__node, .react-flow__edge):has([data-likec4-hovered="true"]) &',
4774
4774
  whenSelected: ":where(.react-flow__node.selected, .react-flow__edge.selected) &",
4775
- whenDimmed: ":where([data-likec4-dimmed]) &",
4775
+ whenDimmed: ":where(.react-flow__node, .react-flow__edge):has([data-likec4-dimmed]) &",
4776
4776
  whenFocused: ":where(.react-flow__node, .react-flow__edge):is(:focus-visible, :focus, :focus-within) &"
4777
4777
  // likec4Color: ':where([data-likec4-color]) &',
4778
4778
  }
@@ -4797,6 +4797,7 @@ const globalCss = {
4797
4797
  const globalVars = {
4798
4798
  extend: {
4799
4799
  ...paletteGlobalVars,
4800
+ "--likec4-palette-outline": "var(--likec4-palette-loContrast)",
4800
4801
  "--likec4-text-size": {
4801
4802
  syntax: "<length> | <percentage>",
4802
4803
  inherits: false
@@ -4809,7 +4810,7 @@ const globalVars = {
4809
4810
  syntax: "<length> | <percentage>",
4810
4811
  inherits: false
4811
4812
  },
4812
- [iconSize]: {
4813
+ [iconSize$1]: {
4813
4814
  syntax: "<length> | <percentage>",
4814
4815
  inherits: false
4815
4816
  }
@@ -4837,7 +4838,7 @@ const layerStyles = defineLayerStyles({
4837
4838
  borderRadius: "0",
4838
4839
  backgroundColor: {
4839
4840
  base: "likec4.panel.bg",
4840
- _whenPanning: "likec4.panel.bg.whenPanning"
4841
+ _reduceGraphicsOnPan: "likec4.panel.bg.whenPanning"
4841
4842
  },
4842
4843
  border: "1px solid {colors.likec4.panel.border}",
4843
4844
  "@/sm": {
@@ -4856,8 +4857,7 @@ const layerStyles = defineLayerStyles({
4856
4857
  dropdown: {
4857
4858
  description: "LikeC4 dropdown layer",
4858
4859
  value: {
4859
- paddingInline: "2xs",
4860
- paddingBlock: "2xs",
4860
+ padding: "xxs",
4861
4861
  backgroundColor: "likec4.dropdown.bg",
4862
4862
  border: "1px solid {colors.likec4.dropdown.border}",
4863
4863
  boxShadow: "lg",
@@ -4883,6 +4883,9 @@ const patterns = {
4883
4883
  defaultValues: {
4884
4884
  gap: "sm"
4885
4885
  }
4886
+ },
4887
+ box: {
4888
+ jsx: ["Box", "MarkdownBlock"]
4886
4889
  }
4887
4890
  }
4888
4891
  };
@@ -4960,6 +4963,260 @@ const actionBtn = defineRecipe({
4960
4963
  conditions: ["*"]
4961
4964
  }]
4962
4965
  });
4966
+ const borderWidth = {
4967
+ var: "--_border-width",
4968
+ ref: "var(--_border-width)"
4969
+ };
4970
+ const borderRadius = {
4971
+ var: "--_border-radius",
4972
+ ref: "var(--_border-radius)"
4973
+ };
4974
+ const compoundTransparency = {
4975
+ var: "--_compound-transparency",
4976
+ ref: "var(--_compound-transparency)"
4977
+ };
4978
+ const borderTransparency = {
4979
+ var: "--_border-transparency",
4980
+ ref: "var(--_border-transparency)"
4981
+ };
4982
+ const indicatorSpacing = {
4983
+ var: "--_indicator-spacing",
4984
+ ref: "var(--_indicator-spacing)"
4985
+ };
4986
+ const compoundColor = {
4987
+ var: "--_compound-color",
4988
+ ref: "var(--_compound-color)"
4989
+ };
4990
+ const parts$1 = defineParts({
4991
+ root: { selector: "&" },
4992
+ titleContainer: { selector: "& .likec4-compound-title-container" },
4993
+ title: { selector: "& .likec4-compound-title" },
4994
+ icon: { selector: "& .likec4-compound-icon" },
4995
+ navigationBtn: { selector: "& .likec4-compound-navigation" },
4996
+ detailsBtn: { selector: "& .likec4-compound-details" },
4997
+ actionBtn: { selector: "& .action-btn" }
4998
+ });
4999
+ const iconSize = "20px";
5000
+ const compoundNode = defineRecipe({
5001
+ className: "likec4-compound-node",
5002
+ base: parts$1({
5003
+ root: {
5004
+ position: "relative",
5005
+ width: "100%",
5006
+ height: "100%",
5007
+ padding: "0",
5008
+ margin: "0",
5009
+ pointerEvents: "none",
5010
+ backgroundClip: "padding-box",
5011
+ borderStyle: "solid",
5012
+ borderWidth: borderWidth.ref,
5013
+ borderRadius: borderRadius.ref,
5014
+ boxSizing: "border-box",
5015
+ ["--likec4-palette-outline"]: {
5016
+ _light: "color-mix(in srgb, var(--likec4-palette-stroke) 80%, var(--likec4-palette-hiContrast))",
5017
+ _dark: "color-mix(in srgb, var(--likec4-palette-stroke) 60%, var(--likec4-palette-hiContrast))"
5018
+ },
5019
+ [borderWidth.var]: "3px",
5020
+ [borderRadius.var]: "6px",
5021
+ [compoundTransparency.var]: "100%",
5022
+ [borderTransparency.var]: "100%",
5023
+ [indicatorSpacing.var]: `calc(${borderWidth.ref} + 2px)`,
5024
+ [compoundColor.var]: "var(--likec4-palette-loContrast)",
5025
+ color: compoundColor.ref,
5026
+ _after: {
5027
+ position: "absolute",
5028
+ content: '" "',
5029
+ top: `[calc(-1 * ${indicatorSpacing.ref})]`,
5030
+ left: `[calc(-1 * ${indicatorSpacing.ref})]`,
5031
+ width: `[calc(100% + 2 * ${indicatorSpacing.ref})]`,
5032
+ height: `[calc(100% + 2 * ${indicatorSpacing.ref})]`,
5033
+ borderStyle: "solid",
5034
+ borderWidth: `calc(${borderWidth.ref} + 1px)`,
5035
+ borderRadius: `calc(${borderRadius.ref} + 4px)`,
5036
+ borderColor: "var(--likec4-palette-outline)",
5037
+ pointerEvents: "none",
5038
+ display: {
5039
+ base: "none",
5040
+ _whenFocused: "block",
5041
+ _whenSelected: "block"
5042
+ },
5043
+ animationStyle: "indicatorOpacity",
5044
+ animationPlayState: {
5045
+ base: "paused",
5046
+ _whenFocused: "running",
5047
+ _whenSelected: "running",
5048
+ _whenPanning: "paused"
5049
+ }
5050
+ },
5051
+ [`&:has(.likec4-compound-navigation) .likec4-compound-title-container`]: {
5052
+ paddingLeft: "[24px]"
5053
+ }
5054
+ },
5055
+ titleContainer: {
5056
+ position: "absolute",
5057
+ display: "flex",
5058
+ alignItems: "center",
5059
+ gap: "1.5",
5060
+ // 6px
5061
+ left: "2.5",
5062
+ top: "0.5",
5063
+ right: "[30px]",
5064
+ width: "auto",
5065
+ minHeight: "30px",
5066
+ [`:where(.react-flow__node.draggable) &`]: {
5067
+ pointerEvents: "all",
5068
+ cursor: "grab"
5069
+ }
5070
+ },
5071
+ title: {
5072
+ flex: "1",
5073
+ fontFamily: "likec4.compound",
5074
+ fontWeight: 600,
5075
+ fontSize: "15px",
5076
+ textTransform: "uppercase",
5077
+ letterSpacing: "0.25px",
5078
+ lineHeight: "1",
5079
+ color: compoundColor.ref
5080
+ },
5081
+ icon: {
5082
+ flex: `0 0 ${iconSize}`,
5083
+ height: `${iconSize}`,
5084
+ width: `${iconSize}`,
5085
+ display: "flex",
5086
+ alignItems: "center",
5087
+ justifyContent: "center",
5088
+ mixBlendMode: {
5089
+ base: "hard-light",
5090
+ _reduceGraphicsOnPan: "normal"
5091
+ },
5092
+ [`& svg, & img`]: {
5093
+ width: "100%",
5094
+ height: "auto",
5095
+ maxHeight: "100%",
5096
+ pointerEvents: "none",
5097
+ filter: {
5098
+ base: [
5099
+ "drop-shadow(0 0 3px rgb(0 0 0 / 12%))",
5100
+ "drop-shadow(0 1px 8px rgb(0 0 0 / 8%))",
5101
+ "drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))"
5102
+ ].join("\n"),
5103
+ _reduceGraphicsOnPan: "none"
5104
+ }
5105
+ },
5106
+ [`& img`]: {
5107
+ objectFit: "contain"
5108
+ }
5109
+ },
5110
+ actionBtn: {
5111
+ "--actionbtn-color": compoundColor.ref,
5112
+ "--actionbtn-color-hovered": compoundColor.ref,
5113
+ "--actionbtn-color-hovered-btn": `color-mix(in srgb, ${compoundColor.ref} 80%, #fff)`,
5114
+ opacity: {
5115
+ base: 0.6,
5116
+ _whenHovered: 0.75,
5117
+ _whenSelected: 0.75,
5118
+ _hover: 1
5119
+ },
5120
+ _noReduceGraphics: {
5121
+ transition: "fast"
5122
+ }
5123
+ },
5124
+ navigationBtn: {
5125
+ position: "absolute",
5126
+ top: "1",
5127
+ left: "0.5",
5128
+ _smallZoom: {
5129
+ display: "none"
5130
+ }
5131
+ },
5132
+ detailsBtn: {
5133
+ position: "absolute",
5134
+ top: "0.5",
5135
+ right: "0.5",
5136
+ _smallZoom: {
5137
+ display: "none"
5138
+ }
5139
+ }
5140
+ }),
5141
+ variants: {
5142
+ isTransparent: {
5143
+ false: parts$1({
5144
+ root: {
5145
+ boxShadow: {
5146
+ _noReduceGraphics: "0 4px 10px 0.5px rgb(0 0 0/10%) , 0 2px 2px -1px rgb(0 0 0/40%)",
5147
+ _whenSelected: "none",
5148
+ _whenPanning: "none !important"
5149
+ },
5150
+ backgroundColor: "var(--likec4-palette-fill)",
5151
+ borderColor: "var(--likec4-palette-stroke)"
5152
+ }
5153
+ }),
5154
+ true: parts$1({
5155
+ root: {
5156
+ backgroundColor: `[color-mix(in srgb, var(--likec4-palette-fill) ${compoundTransparency.ref}, transparent)]`,
5157
+ borderColor: `[color-mix(in srgb, var(--likec4-palette-stroke) ${borderTransparency.ref}, transparent)]`
5158
+ }
5159
+ })
5160
+ },
5161
+ // When the compound node is too transparent, the text color should be inverted
5162
+ inverseColor: {
5163
+ true: parts$1({
5164
+ root: {
5165
+ [compoundColor.var]: {
5166
+ base: "var(--likec4-palette-stroke)",
5167
+ _dark: "[color-mix(in srgb, var(--likec4-palette-loContrast) 60%, var(--likec4-palette-fill))]"
5168
+ }
5169
+ },
5170
+ actionBtn: {
5171
+ _dark: {
5172
+ "--actionbtn-color-hovered-btn": "var(--likec4-palette-loContrast)"
5173
+ },
5174
+ _light: {
5175
+ "--actionbtn-color": "var(--likec4-palette-stroke)",
5176
+ "--actionbtn-color-hovered": "var(--likec4-palette-stroke)",
5177
+ "--actionbtn-color-hovered-btn": "var(--likec4-palette-hiContrast)",
5178
+ "--actionbtn-bg-hovered": `var(--likec4-palette-fill)/50`,
5179
+ "--actionbtn-bg-hovered-btn": `var(--likec4-palette-fill)`
5180
+ }
5181
+ }
5182
+ }),
5183
+ false: {}
5184
+ },
5185
+ borderStyle: {
5186
+ solid: parts$1({
5187
+ root: {
5188
+ borderStyle: "solid"
5189
+ }
5190
+ }),
5191
+ dashed: parts$1({
5192
+ root: {
5193
+ borderStyle: "dashed"
5194
+ }
5195
+ }),
5196
+ dotted: parts$1({
5197
+ root: {
5198
+ borderStyle: "dotted"
5199
+ }
5200
+ }),
5201
+ none: parts$1({
5202
+ root: {
5203
+ // We still need to have a border for consistent internal coordinates
5204
+ // So we use a transparent border and extend background
5205
+ borderColor: "transparent!",
5206
+ backgroundClip: "border-box!",
5207
+ [indicatorSpacing.var]: `calc(${borderWidth.ref} * 2)`
5208
+ }
5209
+ })
5210
+ }
5211
+ },
5212
+ staticCss: [
5213
+ {
5214
+ isTransparent: ["*"],
5215
+ inverseColor: ["*"],
5216
+ borderStyle: ["*"]
5217
+ }
5218
+ ]
5219
+ });
4963
5220
  const edgeActionBtn = defineRecipe({
4964
5221
  className: "likec4-edge-action-btn",
4965
5222
  description: "Action Button within Diagram Edge Label",
@@ -5000,7 +5257,7 @@ const edgeActionBtn = defineRecipe({
5000
5257
  conditions: ["*"]
5001
5258
  }]
5002
5259
  });
5003
- const varIconSize = `var(${iconSize})`;
5260
+ const varIconSize = `var(${iconSize$1})`;
5004
5261
  const elementNodeIcon = defineRecipe({
5005
5262
  className: "likec4-element-node-icon",
5006
5263
  description: "Element Icon displayed in diagram nodes",
@@ -5038,6 +5295,174 @@ const elementNodeIcon = defineRecipe({
5038
5295
  conditions: ["*"]
5039
5296
  }]
5040
5297
  });
5298
+ const parts = defineParts({
5299
+ root: { selector: "&" },
5300
+ outline: { selector: "& .likec4-shape-outline" },
5301
+ multipleHtml: { selector: "& .likec4-shape-multiple" },
5302
+ multipleSvg: { selector: '&:is([data-likec4-shape-multiple="true"])' }
5303
+ });
5304
+ const elementShapeRecipe = defineRecipe({
5305
+ description: "Recipe for Diagram node shape",
5306
+ className: "likec4-element-shape",
5307
+ base: parts({
5308
+ root: {
5309
+ top: "0",
5310
+ left: "0",
5311
+ position: "absolute",
5312
+ width: "100%",
5313
+ height: "100%",
5314
+ pointerEvents: "none",
5315
+ overflow: "visible",
5316
+ ["--likec4-palette-outline"]: {
5317
+ _light: "color-mix(in srgb, var(--likec4-palette-stroke) 60%, var(--likec4-palette-hiContrast))",
5318
+ _dark: "color-mix(in srgb, var(--likec4-palette-stroke) 30%, var(--likec4-palette-loContrast))"
5319
+ }
5320
+ },
5321
+ outline: {
5322
+ visibility: {
5323
+ base: "hidden",
5324
+ _smallZoom: "hidden",
5325
+ _whenSelected: "visible",
5326
+ _whenFocused: "visible",
5327
+ _groupFocusVisible: "visible"
5328
+ },
5329
+ animationPlayState: {
5330
+ base: "paused",
5331
+ _whenSelected: "running",
5332
+ _whenFocused: "running",
5333
+ _groupFocusVisible: "running",
5334
+ _whenPanning: "paused"
5335
+ },
5336
+ pointerEvents: "none"
5337
+ }
5338
+ }),
5339
+ variants: {
5340
+ shapetype: {
5341
+ html: parts({
5342
+ root: {
5343
+ backgroundColor: "var(--likec4-palette-fill)",
5344
+ borderRadius: "[6px]",
5345
+ boxShadow: {
5346
+ base: [
5347
+ "0 2px 1px 0 rgb(0 0 0 / 21%)",
5348
+ "0 1px 1px 0 color-mix(in srgb, var(--likec4-palette-stroke) 40%, transparent)",
5349
+ "0 5px 3px 0 rgb(0 0 0 / 10%)"
5350
+ ].join(","),
5351
+ _whenHovered: [
5352
+ "0 2px 1px 0 rgb(0 0 0 / 25%)",
5353
+ "0 8px 3px 0 rgb(0 0 0 / 10%)",
5354
+ "0 10px 10px 0 rgb(0 0 0 / 8%)"
5355
+ ].join(","),
5356
+ _whenSelected: "none",
5357
+ _smallZoom: "none",
5358
+ _whenPanning: "none"
5359
+ },
5360
+ transition: {
5361
+ base: "background-color 120ms linear, box-shadow 130ms {easings.inOut}",
5362
+ _reduceGraphicsOnPan: "none"
5363
+ },
5364
+ transitionDelay: "0ms",
5365
+ ["--likec4-outline-size"]: `4px`
5366
+ },
5367
+ multipleHtml: {
5368
+ position: "absolute",
5369
+ content: '" "',
5370
+ top: "[14px]",
5371
+ left: "[14px]",
5372
+ width: "[calc(100% - 6px)]",
5373
+ height: "[calc(100% - 6px)]",
5374
+ backgroundColor: "var(--likec4-palette-fill)",
5375
+ borderRadius: "[6px]",
5376
+ zIndex: -1,
5377
+ filter: "brightness(0.65)",
5378
+ visibility: {
5379
+ base: "visible",
5380
+ _smallZoom: "hidden",
5381
+ _whenSelected: "hidden",
5382
+ _whenFocused: "hidden",
5383
+ _reduceGraphicsOnPan: "hidden"
5384
+ }
5385
+ },
5386
+ outline: {
5387
+ position: "absolute",
5388
+ content: '" "',
5389
+ top: `[calc(-1 * var(--likec4-outline-size))]`,
5390
+ left: `[calc(-1 * var(--likec4-outline-size))]`,
5391
+ width: `[calc(100% + 2 * var(--likec4-outline-size))]`,
5392
+ height: `[calc(100% + 2 * var(--likec4-outline-size))]`,
5393
+ borderStyle: "solid",
5394
+ borderWidth: "var(--likec4-outline-size)",
5395
+ borderRadius: "[10px]",
5396
+ borderColor: "var(--likec4-palette-outline)",
5397
+ animationStyle: "indicatorOpacity"
5398
+ }
5399
+ }),
5400
+ svg: parts({
5401
+ root: {
5402
+ fill: "var(--likec4-palette-fill)",
5403
+ stroke: "var(--likec4-palette-stroke)",
5404
+ transition: `fill 120ms linear, filter 130ms {easings.inOut}`,
5405
+ transitionDelay: "0ms",
5406
+ filter: {
5407
+ base: [
5408
+ "drop-shadow(0 2px 1px rgba(0, 0, 0, 0.21))",
5409
+ "drop-shadow(0 1px 1px color-mix(in srgb, var(--likec4-palette-stroke) 40%, transparent))",
5410
+ "drop-shadow(0 5px 3px rgba(0, 0, 0, 0.1))"
5411
+ ].join("\n"),
5412
+ _whenHovered: [
5413
+ "drop-shadow(0 2px 1px rgba(0, 0, 0, 0.25))",
5414
+ "drop-shadow(0 8px 3px rgba(0, 0, 0, 0.1))",
5415
+ "drop-shadow(0 10px 10px rgba(0, 0, 0, 0.05))"
5416
+ ].join("\n"),
5417
+ _whenSelected: "none",
5418
+ _smallZoom: "none",
5419
+ _whenPanning: "none"
5420
+ },
5421
+ '& [data-likec4-fill="fill"]': {
5422
+ fill: "var(--likec4-palette-fill)"
5423
+ },
5424
+ '& [data-likec4-fill="stroke"]': {
5425
+ fill: "var(--likec4-palette-stroke)"
5426
+ },
5427
+ '& [data-likec4-fill="mix-stroke"]': {
5428
+ fill: "[color-mix(in srgb, var(--likec4-palette-stroke) 90%, var(--likec4-palette-fill))]"
5429
+ }
5430
+ },
5431
+ multipleSvg: {
5432
+ transformOrigin: {
5433
+ base: "50% 50%",
5434
+ _shapeQueue: "75% 25%",
5435
+ _shapeCylinder: "50% 100%",
5436
+ _shapeStorage: "50% 100%"
5437
+ },
5438
+ transform: "translate(14px, 14px) perspective(300px) translateZ(-8px)",
5439
+ filter: "brightness(0.65)",
5440
+ stroke: "[none]",
5441
+ display: {
5442
+ _smallZoom: "none",
5443
+ _reduceGraphicsOnPan: "none",
5444
+ _whenSelected: "none",
5445
+ _whenFocused: "none"
5446
+ },
5447
+ '& [data-likec4-fill="mix-stroke"]': {
5448
+ fill: "var(--likec4-palette-fill)"
5449
+ }
5450
+ },
5451
+ outline: {
5452
+ stroke: "var(--likec4-palette-outline)",
5453
+ fill: "[none]",
5454
+ strokeWidth: 8,
5455
+ strokeOpacity: 0.8,
5456
+ animationStyle: "indicator"
5457
+ }
5458
+ })
5459
+ }
5460
+ },
5461
+ staticCss: [{
5462
+ shapetype: ["*"],
5463
+ conditions: ["*"]
5464
+ }]
5465
+ });
5041
5466
  const likec4tag = defineRecipe({
5042
5467
  className: "likec4-tag",
5043
5468
  base: {
@@ -5092,14 +5517,21 @@ const markdownBlock = defineRecipe({
5092
5517
  jsx: ["MarkdownBlock"],
5093
5518
  description: "Block with Markdown content",
5094
5519
  base: {
5095
- pointerEvents: "all",
5096
5520
  "--text-fz": "1rem",
5097
- "--typography-spacing": "calc(0.75 * var(--text-fz) * var(--mantine-scale, 1))",
5098
5521
  "--text-fz-sm": "calc(var(--text-fz) * var(--mantine-scale, 1) / 1.125)",
5099
5522
  "--text-fz-md": "calc(var(--text-fz) * var(--mantine-scale, 1))",
5523
+ "--typography-spacing": "calc(0.75 * var(--text-fz-md))",
5100
5524
  "--text-fw-headings": "600",
5101
- paddingBottom: "calc(.5 * var(--typography-spacing) + 1px)",
5525
+ "--code-background": {
5526
+ _light: "var(--mantine-color-gray-2)",
5527
+ _dark: "var(--mantine-color-dark-8)"
5528
+ },
5529
+ "--code-color": {
5530
+ _light: "var(--mantine-color-black)",
5531
+ _dark: "var(--mantine-color-white)"
5532
+ },
5102
5533
  fontSize: "var(--text-fz-md)",
5534
+ lineHeight: "var(--mantine-line-height)",
5103
5535
  "& :first-child": {
5104
5536
  marginTop: "0"
5105
5537
  },
@@ -5116,31 +5548,31 @@ const markdownBlock = defineRecipe({
5116
5548
  marginTop: "var(--typography-spacing)"
5117
5549
  },
5118
5550
  "& :is(h1)": {
5119
- fontSize: "calc(1.476 * var(--text-fz) * var(--mantine-scale, 1))",
5551
+ fontSize: "calc(1.476 * var(--text-fz-md))",
5120
5552
  fontWeight: "var(--text-fw-headings)"
5121
5553
  },
5122
5554
  "& :is(h2)": {
5123
- fontSize: "calc(1.383 * var(--text-fz) * var(--mantine-scale, 1))",
5555
+ fontSize: "calc(1.383 * var(--text-fz-md))",
5124
5556
  // lineHeight: 'var(--mantine-h2-line-height)',
5125
5557
  fontWeight: "var(--text-fw-headings)"
5126
5558
  },
5127
5559
  "& :is(h3)": {
5128
- fontSize: "calc(1.296 * var(--text-fz) * var(--mantine-scale, 1))",
5560
+ fontSize: "calc(1.296 * var(--text-fz-md))",
5129
5561
  // lineHeight: 'var(--mantine-h3-line-height)',
5130
5562
  fontWeight: "var(--text-fw-headings)"
5131
5563
  },
5132
5564
  "& :is(h4)": {
5133
- fontSize: "calc(1.215 * var(--text-fz) * var(--mantine-scale, 1))",
5565
+ fontSize: "calc(1.215 * var(--text-fz-md))",
5134
5566
  // lineHeight: 'var(--mantine-h4-line-height)',
5135
5567
  fontWeight: "var(--text-fw-headings)"
5136
5568
  },
5137
5569
  "& :is(h5)": {
5138
- fontSize: "calc(1.138 * var(--text-fz) * var(--mantine-scale, 1))",
5570
+ fontSize: "calc(1.138 * var(--text-fz-md))",
5139
5571
  // lineHeight: 'var(--mantine-h4-line-height)',
5140
5572
  fontWeight: "var(--text-fw-headings)"
5141
5573
  },
5142
5574
  "& :is(h6)": {
5143
- fontSize: "calc(1.067 * var(--text-fz) * var(--mantine-scale, 1))",
5575
+ fontSize: "calc(1.067 * var(--text-fz-md))",
5144
5576
  // lineHeight: 'var(--mantine-h4-line-height)',
5145
5577
  fontWeight: "var(--text-fw-headings)"
5146
5578
  },
@@ -5151,8 +5583,7 @@ const markdownBlock = defineRecipe({
5151
5583
  "& :where(p)": {
5152
5584
  fontSize: "var(--text-fz-md)",
5153
5585
  marginTop: "0",
5154
- marginBottom: "var(--typography-spacing)",
5155
- whiteSpace: "preserve-breaks"
5586
+ marginBottom: "var(--typography-spacing)"
5156
5587
  },
5157
5588
  "& :where(strong)": {
5158
5589
  fontWeight: "500"
@@ -5178,54 +5609,44 @@ const markdownBlock = defineRecipe({
5178
5609
  }
5179
5610
  },
5180
5611
  "& :where(hr)": {
5181
- margin: "var(--typography-spacing)",
5612
+ marginTop: "calc(var(--typography-spacing) / 2)",
5613
+ marginBottom: "calc(var(--typography-spacing) / 2)",
5182
5614
  border: "none",
5183
5615
  borderBottom: "1px solid",
5184
- _light: {
5185
- borderColor: "mantine.colors.gray[3]"
5186
- },
5187
- _dark: {
5188
- borderColor: "mantine.colors.dark[3]"
5616
+ borderColor: {
5617
+ _light: "mantine.colors.gray[3]",
5618
+ _dark: "mantine.colors.dark[3]"
5189
5619
  }
5190
5620
  },
5191
5621
  "& :where(pre)": {
5192
- padding: "var(--mantine-spacing-xs)",
5193
- lineHeight: "var(--mantine-line-height)",
5622
+ px: "3",
5623
+ py: "2",
5624
+ lineHeight: "var(--mantine-line-height-xs)",
5194
5625
  margin: "0",
5195
- marginTop: "var(--mantine-spacing-md)",
5196
- marginBottom: "var(--mantine-spacing-md)",
5626
+ marginTop: "var(--typography-spacing)",
5627
+ marginBottom: "var(--typography-spacing)",
5197
5628
  overflowX: "auto",
5198
5629
  fontFamily: "var(--mantine-font-family-monospace)",
5199
5630
  fontSize: "var(--text-fz-sm)",
5200
- borderRadius: "var(--mantine-radius-xs)",
5201
- _light: {
5202
- backgroundColor: "mantine.colors.gray[0]"
5203
- },
5204
- _dark: {
5205
- backgroundColor: "mantine.colors.dark[8]"
5206
- },
5207
- "& :where(code)": {
5208
- backgroundColor: "transparent",
5209
- padding: "0",
5210
- borderRadius: "0",
5211
- color: "inherit",
5212
- border: "0"
5213
- }
5631
+ borderRadius: "sm",
5632
+ backgroundColor: "var(--code-background)",
5633
+ color: "var(--code-color)"
5214
5634
  },
5215
5635
  "& :where(code)": {
5216
5636
  lineHeight: "1",
5217
5637
  padding: "1px 4px",
5218
- borderRadius: "2px",
5638
+ borderRadius: "xs",
5219
5639
  fontFamily: "var(--mantine-font-family-monospace)",
5220
5640
  fontSize: "var(--text-fz-sm)",
5221
- _light: {
5222
- backgroundColor: "mantine.colors.gray[0]",
5223
- color: "mantine.colors.black"
5224
- },
5225
- _dark: {
5226
- backgroundColor: "mantine.colors.dark[5]",
5227
- color: "mantine.colors.white"
5228
- }
5641
+ backgroundColor: "var(--code-background)",
5642
+ color: "var(--code-color)"
5643
+ },
5644
+ "& :where(pre code)": {
5645
+ backgroundColor: "transparent",
5646
+ padding: "0",
5647
+ borderRadius: "0",
5648
+ color: "inherit",
5649
+ border: "0"
5229
5650
  },
5230
5651
  '& :where(ul, ol):not([data-type="taskList"])': {
5231
5652
  marginBottom: "var(--typography-spacing)",
@@ -5236,7 +5657,7 @@ const markdownBlock = defineRecipe({
5236
5657
  width: "100%",
5237
5658
  borderCollapse: "collapse",
5238
5659
  captionSide: "bottom",
5239
- marginBottom: "var(--mantine-spacing-md)",
5660
+ marginBottom: "var(--typography-spacing)",
5240
5661
  _light: {
5241
5662
  ["--table-border-color"]: "var(--mantine-color-gray-3)"
5242
5663
  },
@@ -5244,7 +5665,7 @@ const markdownBlock = defineRecipe({
5244
5665
  ["--table-border-color"]: "var(--mantine-color-dark-4)"
5245
5666
  },
5246
5667
  "& :where(caption)": {
5247
- marginTop: "var(--mantine-spacing-xs)",
5668
+ marginTop: "calc(.5 * var(--typography-spacing) + 1px)",
5248
5669
  fontSize: "var(--text-fz-sm)",
5249
5670
  color: "var(--mantine-color-dimmed)"
5250
5671
  },
@@ -5252,7 +5673,7 @@ const markdownBlock = defineRecipe({
5252
5673
  textAlign: "left",
5253
5674
  fontWeight: "bold",
5254
5675
  fontSize: "var(--text-fz-sm)",
5255
- padding: "var(--mantine-spacing-xs) var(--mantine-spacing-xs)"
5676
+ padding: "var(--typography-spacing)"
5256
5677
  },
5257
5678
  "& :where(thead th)": {
5258
5679
  borderBottom: "1px solid",
@@ -5263,7 +5684,7 @@ const markdownBlock = defineRecipe({
5263
5684
  borderColor: "var(--table-border-color)"
5264
5685
  },
5265
5686
  "& :where(td)": {
5266
- padding: "var(--mantine-spacing-xs) var(--mantine-spacing-xs)",
5687
+ padding: "var(--typography-spacing)",
5267
5688
  borderBottom: "1px solid",
5268
5689
  borderColor: "var(--table-border-color)",
5269
5690
  fontSize: "var(--text-fz-sm)"
@@ -5274,15 +5695,12 @@ const markdownBlock = defineRecipe({
5274
5695
  },
5275
5696
  "& :where(blockquote)": {
5276
5697
  fontSize: "var(--text-fz-md)",
5277
- lineHeight: "var(--mantine-line-height)",
5278
5698
  margin: "0",
5279
5699
  borderRadius: "var(--mantine-radius-sm)",
5280
5700
  padding: "xs",
5281
- _light: {
5282
- backgroundColor: "mantine.colors.gray[1]"
5283
- },
5284
- _dark: {
5285
- backgroundColor: "mantine.colors.dark[5]"
5701
+ backgroundColor: {
5702
+ _light: "var(--mantine-color-gray-1)",
5703
+ _dark: "var(--mantine-color-dark-5)"
5286
5704
  },
5287
5705
  "&:not(:first-child)": {
5288
5706
  marginTop: "var(--typography-spacing)"
@@ -5295,22 +5713,22 @@ const markdownBlock = defineRecipe({
5295
5713
  */
5296
5714
  uselikec4palette: {
5297
5715
  true: {
5298
- "--typography-spacing": "calc(0.25rem * var(--mantine-scale, 1))",
5716
+ "--code-background": "color-mix(in srgb , var(--likec4-palette-stroke) 70%, transparent)",
5717
+ "--code-color": "var(--likec4-palette-loContrast)",
5718
+ "--typography-spacing": "calc(0.5 * var(--text-fz-md))",
5299
5719
  "& :where(a)": {
5300
5720
  color: "var(--likec4-palette-fill)/45",
5301
5721
  mixBlendMode: "difference"
5302
5722
  },
5303
- "& :where(code)": {
5304
- borderColor: "var(--likec4-palette-stroke)/85",
5305
- color: "var(--likec4-palette-loContrast)",
5306
- backgroundColor: "var(--likec4-palette-stroke)/70"
5307
- },
5308
5723
  "& :where(strong)": {
5309
5724
  color: `color-mix(in srgb , var(--likec4-palette-hiContrast) 50%, var(--likec4-palette-loContrast))`
5310
5725
  },
5311
5726
  "& :where(blockquote)": {
5312
- padding: "2xs",
5727
+ padding: "xxs",
5313
5728
  backgroundColor: "var(--likec4-palette-stroke)/65"
5729
+ },
5730
+ "& :where(hr)": {
5731
+ borderColor: "var(--likec4-palette-stroke)/85"
5314
5732
  }
5315
5733
  },
5316
5734
  false: {}
@@ -5371,8 +5789,10 @@ const navigationPanelActionIcon = defineRecipe({
5371
5789
  const recipes = {
5372
5790
  __proto__: null,
5373
5791
  actionBtn,
5792
+ compoundNode,
5374
5793
  edgeActionBtn,
5375
5794
  elementNodeIcon,
5795
+ elementShapeRecipe,
5376
5796
  likec4tag,
5377
5797
  markdownBlock,
5378
5798
  navigationPanelActionIcon
@@ -5511,7 +5931,10 @@ const edgeLabel = defineSlotRecipe({
5511
5931
  lineHeight: "[1.2]",
5512
5932
  maxWidth: "100%",
5513
5933
  gap: "0.5",
5514
- color: "var(--xy-edge-label-color)"
5934
+ color: "var(--xy-edge-label-color)",
5935
+ background: "var(--xy-edge-label-background-color)",
5936
+ border: "0px solid transparent",
5937
+ borderRadius: "4px"
5515
5938
  },
5516
5939
  stepNumber: {
5517
5940
  alignSelf: "stretch",
@@ -5552,6 +5975,18 @@ const edgeLabel = defineSlotRecipe({
5552
5975
  }
5553
5976
  },
5554
5977
  variants: {
5978
+ cursor: {
5979
+ pointer: {
5980
+ root: {
5981
+ cursor: "pointer"
5982
+ }
5983
+ },
5984
+ default: {
5985
+ root: {
5986
+ cursor: "default"
5987
+ }
5988
+ }
5989
+ },
5555
5990
  isStepEdge: {
5556
5991
  false: {},
5557
5992
  true: {
@@ -5577,7 +6012,8 @@ const edgeLabel = defineSlotRecipe({
5577
6012
  }
5578
6013
  },
5579
6014
  defaultVariants: {
5580
- isStepEdge: false
6015
+ isStepEdge: false,
6016
+ cursor: "default"
5581
6017
  },
5582
6018
  staticCss: [{
5583
6019
  conditions: ["*"],
@@ -5603,6 +6039,12 @@ const description = {
5603
6039
  },
5604
6040
  _smallZoom: {
5605
6041
  display: "none"
6042
+ },
6043
+ "&:not(.likec4-markdown-block)": {
6044
+ whiteSpace: "preserve-breaks"
6045
+ },
6046
+ "& a": {
6047
+ pointerEvents: "all"
5606
6048
  }
5607
6049
  };
5608
6050
  const technology = {
@@ -5669,20 +6111,20 @@ const elementNodeData = defineSlotRecipe({
5669
6111
  paddingBottom: "[28px]"
5670
6112
  },
5671
6113
  _shapeSizeXs: {
5672
- [iconSize]: "24px"
6114
+ [iconSize$1]: "24px"
5673
6115
  },
5674
6116
  _shapeSizeSm: {
5675
- [iconSize]: "36px"
6117
+ [iconSize$1]: "36px"
5676
6118
  },
5677
6119
  _shapeSizeMd: {
5678
- [iconSize]: "60px"
6120
+ [iconSize$1]: "60px"
5679
6121
  },
5680
6122
  _shapeSizeLg: {
5681
- [iconSize]: "82px",
6123
+ [iconSize$1]: "82px",
5682
6124
  gap: "4"
5683
6125
  },
5684
6126
  _shapeSizeXl: {
5685
- [iconSize]: "90px",
6127
+ [iconSize$1]: "90px",
5686
6128
  gap: "4"
5687
6129
  }
5688
6130
  },
@@ -5712,7 +6154,7 @@ const elementNodeData = defineSlotRecipe({
5712
6154
  gap: "16px"
5713
6155
  },
5714
6156
  textContainer: {
5715
- minWidth: `calc(50% + var(${iconSize}))`,
6157
+ minWidth: `calc(50% + var(${iconSize$1}))`,
5716
6158
  alignItems: "flex-start"
5717
6159
  },
5718
6160
  title: {
@@ -6063,19 +6505,19 @@ const tokens = defineTokens({
6063
6505
  shadows: {
6064
6506
  none: { value: "none" },
6065
6507
  xs: {
6066
- value: "0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1)"
6508
+ value: "0 1px 3px rgb(0 0 0/5%), 0 1px 2px rgb(0 0 0/10%)"
6067
6509
  },
6068
6510
  sm: {
6069
- value: "0 1px 3px rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 10px 15px -5px, rgba(0, 0, 0, 0.04) 0 7px 7px -5px"
6511
+ value: "0 1px 3px rgb(0 0 0/5%), 0 10px 15px -5px rgb(0 0 0/5%), 0 7px 7px -5px rgb(0 0 0/4%)"
6070
6512
  },
6071
6513
  md: {
6072
- value: "0 1px 3px rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 20px 25px -5px, rgba(0, 0, 0, 0.04) 0 10px 10px -5px"
6514
+ value: "0 1px 3px rgb(0 0 0/5%), 0 20px 25px -5px rgb(0 0 0/5%), 0 10px 10px -5px rgb(0 0 0/4%)"
6073
6515
  },
6074
6516
  lg: {
6075
- value: "0 1px 3px rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 28px 23px -7px, rgba(0, 0, 0, 0.04) 0 12px 12px -7px"
6517
+ value: "0 1px 3px rgb(0 0 0/5%), 0 28px 23px -7px rgb(0 0 0/5%), 0 12px 12px -7px rgb(0 0 0/4%)"
6076
6518
  },
6077
6519
  xl: {
6078
- value: "0 1px 3px rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 36px 28px -7px, rgba(0, 0, 0, 0.04) 0 17px 17px -7px"
6520
+ value: "0 1px 3px rgb(0 0 0/5%), 0 36px 28px -7px rgb(0 0 0/5%), 0 17px 17px -7px rgb(0 0 0/4%)"
6079
6521
  }
6080
6522
  }
6081
6523
  });
@@ -6128,6 +6570,14 @@ const theme = {
6128
6570
  lg: "1024px"
6129
6571
  },
6130
6572
  keyframes: {
6573
+ "indicatorOpacity": {
6574
+ "0%": {
6575
+ opacity: 0.9
6576
+ },
6577
+ "100%": {
6578
+ opacity: 0.6
6579
+ }
6580
+ },
6131
6581
  "indicatorStrokeOpacity": {
6132
6582
  "0%": {
6133
6583
  strokeOpacity: 0.8
@@ -6154,6 +6604,14 @@ const theme = {
6154
6604
  animationName: "indicatorStrokeOpacity"
6155
6605
  }
6156
6606
  },
6607
+ "indicatorOpacity": {
6608
+ value: {
6609
+ animationDuration: "1s",
6610
+ animationIterationCount: "infinite",
6611
+ animationDirection: "alternate",
6612
+ animationName: "indicatorOpacity"
6613
+ }
6614
+ },
6157
6615
  "xyedgeAnimated": {
6158
6616
  value: {
6159
6617
  animationDuration: "800ms",