@likec4/styles 1.36.0 → 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,26 +4838,26 @@ 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
- backdropFilter: "blur(10px)",
4844
4844
  "@/sm": {
4845
4845
  boxShadow: "lg",
4846
4846
  borderRadius: "md",
4847
- padding: "2xs"
4847
+ padding: "2xs",
4848
+ backdropFilter: "blur(10px)"
4848
4849
  },
4849
4850
  _whenPanning: {
4850
4851
  boxShadow: "none",
4851
- borderRadius: "0"
4852
+ borderRadius: "0",
4853
+ backdropFilter: "none"
4852
4854
  }
4853
4855
  }
4854
4856
  },
4855
4857
  dropdown: {
4856
4858
  description: "LikeC4 dropdown layer",
4857
4859
  value: {
4858
- paddingInline: "2xs",
4859
- paddingBlock: "2xs",
4860
+ padding: "xxs",
4860
4861
  backgroundColor: "likec4.dropdown.bg",
4861
4862
  border: "1px solid {colors.likec4.dropdown.border}",
4862
4863
  boxShadow: "lg",
@@ -4882,6 +4883,9 @@ const patterns = {
4882
4883
  defaultValues: {
4883
4884
  gap: "sm"
4884
4885
  }
4886
+ },
4887
+ box: {
4888
+ jsx: ["Box", "MarkdownBlock"]
4885
4889
  }
4886
4890
  }
4887
4891
  };
@@ -4959,6 +4963,260 @@ const actionBtn = defineRecipe({
4959
4963
  conditions: ["*"]
4960
4964
  }]
4961
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
+ });
4962
5220
  const edgeActionBtn = defineRecipe({
4963
5221
  className: "likec4-edge-action-btn",
4964
5222
  description: "Action Button within Diagram Edge Label",
@@ -4999,7 +5257,7 @@ const edgeActionBtn = defineRecipe({
4999
5257
  conditions: ["*"]
5000
5258
  }]
5001
5259
  });
5002
- const varIconSize = `var(${iconSize})`;
5260
+ const varIconSize = `var(${iconSize$1})`;
5003
5261
  const elementNodeIcon = defineRecipe({
5004
5262
  className: "likec4-element-node-icon",
5005
5263
  description: "Element Icon displayed in diagram nodes",
@@ -5037,6 +5295,174 @@ const elementNodeIcon = defineRecipe({
5037
5295
  conditions: ["*"]
5038
5296
  }]
5039
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
+ });
5040
5466
  const likec4tag = defineRecipe({
5041
5467
  className: "likec4-tag",
5042
5468
  base: {
@@ -5091,14 +5517,21 @@ const markdownBlock = defineRecipe({
5091
5517
  jsx: ["MarkdownBlock"],
5092
5518
  description: "Block with Markdown content",
5093
5519
  base: {
5094
- pointerEvents: "all",
5095
5520
  "--text-fz": "1rem",
5096
- "--typography-spacing": "calc(0.75 * var(--text-fz) * var(--mantine-scale, 1))",
5097
5521
  "--text-fz-sm": "calc(var(--text-fz) * var(--mantine-scale, 1) / 1.125)",
5098
5522
  "--text-fz-md": "calc(var(--text-fz) * var(--mantine-scale, 1))",
5523
+ "--typography-spacing": "calc(0.75 * var(--text-fz-md))",
5099
5524
  "--text-fw-headings": "600",
5100
- 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
+ },
5101
5533
  fontSize: "var(--text-fz-md)",
5534
+ lineHeight: "var(--mantine-line-height)",
5102
5535
  "& :first-child": {
5103
5536
  marginTop: "0"
5104
5537
  },
@@ -5115,31 +5548,31 @@ const markdownBlock = defineRecipe({
5115
5548
  marginTop: "var(--typography-spacing)"
5116
5549
  },
5117
5550
  "& :is(h1)": {
5118
- fontSize: "calc(1.476 * var(--text-fz) * var(--mantine-scale, 1))",
5551
+ fontSize: "calc(1.476 * var(--text-fz-md))",
5119
5552
  fontWeight: "var(--text-fw-headings)"
5120
5553
  },
5121
5554
  "& :is(h2)": {
5122
- fontSize: "calc(1.383 * var(--text-fz) * var(--mantine-scale, 1))",
5555
+ fontSize: "calc(1.383 * var(--text-fz-md))",
5123
5556
  // lineHeight: 'var(--mantine-h2-line-height)',
5124
5557
  fontWeight: "var(--text-fw-headings)"
5125
5558
  },
5126
5559
  "& :is(h3)": {
5127
- fontSize: "calc(1.296 * var(--text-fz) * var(--mantine-scale, 1))",
5560
+ fontSize: "calc(1.296 * var(--text-fz-md))",
5128
5561
  // lineHeight: 'var(--mantine-h3-line-height)',
5129
5562
  fontWeight: "var(--text-fw-headings)"
5130
5563
  },
5131
5564
  "& :is(h4)": {
5132
- fontSize: "calc(1.215 * var(--text-fz) * var(--mantine-scale, 1))",
5565
+ fontSize: "calc(1.215 * var(--text-fz-md))",
5133
5566
  // lineHeight: 'var(--mantine-h4-line-height)',
5134
5567
  fontWeight: "var(--text-fw-headings)"
5135
5568
  },
5136
5569
  "& :is(h5)": {
5137
- fontSize: "calc(1.138 * var(--text-fz) * var(--mantine-scale, 1))",
5570
+ fontSize: "calc(1.138 * var(--text-fz-md))",
5138
5571
  // lineHeight: 'var(--mantine-h4-line-height)',
5139
5572
  fontWeight: "var(--text-fw-headings)"
5140
5573
  },
5141
5574
  "& :is(h6)": {
5142
- fontSize: "calc(1.067 * var(--text-fz) * var(--mantine-scale, 1))",
5575
+ fontSize: "calc(1.067 * var(--text-fz-md))",
5143
5576
  // lineHeight: 'var(--mantine-h4-line-height)',
5144
5577
  fontWeight: "var(--text-fw-headings)"
5145
5578
  },
@@ -5150,8 +5583,7 @@ const markdownBlock = defineRecipe({
5150
5583
  "& :where(p)": {
5151
5584
  fontSize: "var(--text-fz-md)",
5152
5585
  marginTop: "0",
5153
- marginBottom: "var(--typography-spacing)",
5154
- whiteSpace: "preserve-breaks"
5586
+ marginBottom: "var(--typography-spacing)"
5155
5587
  },
5156
5588
  "& :where(strong)": {
5157
5589
  fontWeight: "500"
@@ -5177,54 +5609,44 @@ const markdownBlock = defineRecipe({
5177
5609
  }
5178
5610
  },
5179
5611
  "& :where(hr)": {
5180
- margin: "var(--typography-spacing)",
5612
+ marginTop: "calc(var(--typography-spacing) / 2)",
5613
+ marginBottom: "calc(var(--typography-spacing) / 2)",
5181
5614
  border: "none",
5182
5615
  borderBottom: "1px solid",
5183
- _light: {
5184
- borderColor: "mantine.colors.gray[3]"
5185
- },
5186
- _dark: {
5187
- borderColor: "mantine.colors.dark[3]"
5616
+ borderColor: {
5617
+ _light: "mantine.colors.gray[3]",
5618
+ _dark: "mantine.colors.dark[3]"
5188
5619
  }
5189
5620
  },
5190
5621
  "& :where(pre)": {
5191
- padding: "var(--mantine-spacing-xs)",
5192
- lineHeight: "var(--mantine-line-height)",
5622
+ px: "3",
5623
+ py: "2",
5624
+ lineHeight: "var(--mantine-line-height-xs)",
5193
5625
  margin: "0",
5194
- marginTop: "var(--mantine-spacing-md)",
5195
- marginBottom: "var(--mantine-spacing-md)",
5626
+ marginTop: "var(--typography-spacing)",
5627
+ marginBottom: "var(--typography-spacing)",
5196
5628
  overflowX: "auto",
5197
5629
  fontFamily: "var(--mantine-font-family-monospace)",
5198
5630
  fontSize: "var(--text-fz-sm)",
5199
- borderRadius: "var(--mantine-radius-xs)",
5200
- _light: {
5201
- backgroundColor: "mantine.colors.gray[0]"
5202
- },
5203
- _dark: {
5204
- backgroundColor: "mantine.colors.dark[8]"
5205
- },
5206
- "& :where(code)": {
5207
- backgroundColor: "transparent",
5208
- padding: "0",
5209
- borderRadius: "0",
5210
- color: "inherit",
5211
- border: "0"
5212
- }
5631
+ borderRadius: "sm",
5632
+ backgroundColor: "var(--code-background)",
5633
+ color: "var(--code-color)"
5213
5634
  },
5214
5635
  "& :where(code)": {
5215
5636
  lineHeight: "1",
5216
5637
  padding: "1px 4px",
5217
- borderRadius: "2px",
5638
+ borderRadius: "xs",
5218
5639
  fontFamily: "var(--mantine-font-family-monospace)",
5219
5640
  fontSize: "var(--text-fz-sm)",
5220
- _light: {
5221
- backgroundColor: "mantine.colors.gray[0]",
5222
- color: "mantine.colors.black"
5223
- },
5224
- _dark: {
5225
- backgroundColor: "mantine.colors.dark[5]",
5226
- color: "mantine.colors.white"
5227
- }
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"
5228
5650
  },
5229
5651
  '& :where(ul, ol):not([data-type="taskList"])': {
5230
5652
  marginBottom: "var(--typography-spacing)",
@@ -5235,7 +5657,7 @@ const markdownBlock = defineRecipe({
5235
5657
  width: "100%",
5236
5658
  borderCollapse: "collapse",
5237
5659
  captionSide: "bottom",
5238
- marginBottom: "var(--mantine-spacing-md)",
5660
+ marginBottom: "var(--typography-spacing)",
5239
5661
  _light: {
5240
5662
  ["--table-border-color"]: "var(--mantine-color-gray-3)"
5241
5663
  },
@@ -5243,7 +5665,7 @@ const markdownBlock = defineRecipe({
5243
5665
  ["--table-border-color"]: "var(--mantine-color-dark-4)"
5244
5666
  },
5245
5667
  "& :where(caption)": {
5246
- marginTop: "var(--mantine-spacing-xs)",
5668
+ marginTop: "calc(.5 * var(--typography-spacing) + 1px)",
5247
5669
  fontSize: "var(--text-fz-sm)",
5248
5670
  color: "var(--mantine-color-dimmed)"
5249
5671
  },
@@ -5251,7 +5673,7 @@ const markdownBlock = defineRecipe({
5251
5673
  textAlign: "left",
5252
5674
  fontWeight: "bold",
5253
5675
  fontSize: "var(--text-fz-sm)",
5254
- padding: "var(--mantine-spacing-xs) var(--mantine-spacing-xs)"
5676
+ padding: "var(--typography-spacing)"
5255
5677
  },
5256
5678
  "& :where(thead th)": {
5257
5679
  borderBottom: "1px solid",
@@ -5262,7 +5684,7 @@ const markdownBlock = defineRecipe({
5262
5684
  borderColor: "var(--table-border-color)"
5263
5685
  },
5264
5686
  "& :where(td)": {
5265
- padding: "var(--mantine-spacing-xs) var(--mantine-spacing-xs)",
5687
+ padding: "var(--typography-spacing)",
5266
5688
  borderBottom: "1px solid",
5267
5689
  borderColor: "var(--table-border-color)",
5268
5690
  fontSize: "var(--text-fz-sm)"
@@ -5273,15 +5695,12 @@ const markdownBlock = defineRecipe({
5273
5695
  },
5274
5696
  "& :where(blockquote)": {
5275
5697
  fontSize: "var(--text-fz-md)",
5276
- lineHeight: "var(--mantine-line-height)",
5277
5698
  margin: "0",
5278
5699
  borderRadius: "var(--mantine-radius-sm)",
5279
5700
  padding: "xs",
5280
- _light: {
5281
- backgroundColor: "mantine.colors.gray[1]"
5282
- },
5283
- _dark: {
5284
- backgroundColor: "mantine.colors.dark[5]"
5701
+ backgroundColor: {
5702
+ _light: "var(--mantine-color-gray-1)",
5703
+ _dark: "var(--mantine-color-dark-5)"
5285
5704
  },
5286
5705
  "&:not(:first-child)": {
5287
5706
  marginTop: "var(--typography-spacing)"
@@ -5294,22 +5713,22 @@ const markdownBlock = defineRecipe({
5294
5713
  */
5295
5714
  uselikec4palette: {
5296
5715
  true: {
5297
- "--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))",
5298
5719
  "& :where(a)": {
5299
5720
  color: "var(--likec4-palette-fill)/45",
5300
5721
  mixBlendMode: "difference"
5301
5722
  },
5302
- "& :where(code)": {
5303
- borderColor: "var(--likec4-palette-stroke)/85",
5304
- color: "var(--likec4-palette-loContrast)",
5305
- backgroundColor: "var(--likec4-palette-stroke)/70"
5306
- },
5307
5723
  "& :where(strong)": {
5308
5724
  color: `color-mix(in srgb , var(--likec4-palette-hiContrast) 50%, var(--likec4-palette-loContrast))`
5309
5725
  },
5310
5726
  "& :where(blockquote)": {
5311
- padding: "2xs",
5727
+ padding: "xxs",
5312
5728
  backgroundColor: "var(--likec4-palette-stroke)/65"
5729
+ },
5730
+ "& :where(hr)": {
5731
+ borderColor: "var(--likec4-palette-stroke)/85"
5313
5732
  }
5314
5733
  },
5315
5734
  false: {}
@@ -5370,8 +5789,10 @@ const navigationPanelActionIcon = defineRecipe({
5370
5789
  const recipes = {
5371
5790
  __proto__: null,
5372
5791
  actionBtn,
5792
+ compoundNode,
5373
5793
  edgeActionBtn,
5374
5794
  elementNodeIcon,
5795
+ elementShapeRecipe,
5375
5796
  likec4tag,
5376
5797
  markdownBlock,
5377
5798
  navigationPanelActionIcon
@@ -5510,7 +5931,10 @@ const edgeLabel = defineSlotRecipe({
5510
5931
  lineHeight: "[1.2]",
5511
5932
  maxWidth: "100%",
5512
5933
  gap: "0.5",
5513
- 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"
5514
5938
  },
5515
5939
  stepNumber: {
5516
5940
  alignSelf: "stretch",
@@ -5551,6 +5975,18 @@ const edgeLabel = defineSlotRecipe({
5551
5975
  }
5552
5976
  },
5553
5977
  variants: {
5978
+ cursor: {
5979
+ pointer: {
5980
+ root: {
5981
+ cursor: "pointer"
5982
+ }
5983
+ },
5984
+ default: {
5985
+ root: {
5986
+ cursor: "default"
5987
+ }
5988
+ }
5989
+ },
5554
5990
  isStepEdge: {
5555
5991
  false: {},
5556
5992
  true: {
@@ -5576,7 +6012,8 @@ const edgeLabel = defineSlotRecipe({
5576
6012
  }
5577
6013
  },
5578
6014
  defaultVariants: {
5579
- isStepEdge: false
6015
+ isStepEdge: false,
6016
+ cursor: "default"
5580
6017
  },
5581
6018
  staticCss: [{
5582
6019
  conditions: ["*"],
@@ -5602,6 +6039,12 @@ const description = {
5602
6039
  },
5603
6040
  _smallZoom: {
5604
6041
  display: "none"
6042
+ },
6043
+ "&:not(.likec4-markdown-block)": {
6044
+ whiteSpace: "preserve-breaks"
6045
+ },
6046
+ "& a": {
6047
+ pointerEvents: "all"
5605
6048
  }
5606
6049
  };
5607
6050
  const technology = {
@@ -5668,20 +6111,20 @@ const elementNodeData = defineSlotRecipe({
5668
6111
  paddingBottom: "[28px]"
5669
6112
  },
5670
6113
  _shapeSizeXs: {
5671
- [iconSize]: "24px"
6114
+ [iconSize$1]: "24px"
5672
6115
  },
5673
6116
  _shapeSizeSm: {
5674
- [iconSize]: "36px"
6117
+ [iconSize$1]: "36px"
5675
6118
  },
5676
6119
  _shapeSizeMd: {
5677
- [iconSize]: "60px"
6120
+ [iconSize$1]: "60px"
5678
6121
  },
5679
6122
  _shapeSizeLg: {
5680
- [iconSize]: "82px",
6123
+ [iconSize$1]: "82px",
5681
6124
  gap: "4"
5682
6125
  },
5683
6126
  _shapeSizeXl: {
5684
- [iconSize]: "90px",
6127
+ [iconSize$1]: "90px",
5685
6128
  gap: "4"
5686
6129
  }
5687
6130
  },
@@ -5711,7 +6154,7 @@ const elementNodeData = defineSlotRecipe({
5711
6154
  gap: "16px"
5712
6155
  },
5713
6156
  textContainer: {
5714
- minWidth: `calc(50% + var(${iconSize}))`,
6157
+ minWidth: `calc(50% + var(${iconSize$1}))`,
5715
6158
  alignItems: "flex-start"
5716
6159
  },
5717
6160
  title: {
@@ -6062,19 +6505,19 @@ const tokens = defineTokens({
6062
6505
  shadows: {
6063
6506
  none: { value: "none" },
6064
6507
  xs: {
6065
- 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%)"
6066
6509
  },
6067
6510
  sm: {
6068
- 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%)"
6069
6512
  },
6070
6513
  md: {
6071
- 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%)"
6072
6515
  },
6073
6516
  lg: {
6074
- 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%)"
6075
6518
  },
6076
6519
  xl: {
6077
- 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%)"
6078
6521
  }
6079
6522
  }
6080
6523
  });
@@ -6127,6 +6570,14 @@ const theme = {
6127
6570
  lg: "1024px"
6128
6571
  },
6129
6572
  keyframes: {
6573
+ "indicatorOpacity": {
6574
+ "0%": {
6575
+ opacity: 0.9
6576
+ },
6577
+ "100%": {
6578
+ opacity: 0.6
6579
+ }
6580
+ },
6130
6581
  "indicatorStrokeOpacity": {
6131
6582
  "0%": {
6132
6583
  strokeOpacity: 0.8
@@ -6153,6 +6604,14 @@ const theme = {
6153
6604
  animationName: "indicatorStrokeOpacity"
6154
6605
  }
6155
6606
  },
6607
+ "indicatorOpacity": {
6608
+ value: {
6609
+ animationDuration: "1s",
6610
+ animationIterationCount: "infinite",
6611
+ animationDirection: "alternate",
6612
+ animationName: "indicatorOpacity"
6613
+ }
6614
+ },
6156
6615
  "xyedgeAnimated": {
6157
6616
  value: {
6158
6617
  animationDuration: "800ms",