@kubex/zinc 1.0.119 → 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 (100) hide show
  1. package/dist/custom-elements.json +453 -20
  2. package/dist/vscode.html-custom-data.json +87 -11
  3. package/dist/web-types.json +168 -12
  4. package/dist/zn.d.ts +153 -27
  5. package/dist/zn.min.css +1 -1
  6. package/dist/zn.min.js +904 -867
  7. package/docs/assets/styles/docs.css +1 -1
  8. package/docs/pages/components/button.md +25 -7
  9. package/docs/pages/components/chat-message.md +62 -0
  10. package/docs/pages/components/data-table-search.md +6 -6
  11. package/docs/pages/components/editor.md +1 -1
  12. package/docs/pages/components/file.md +1 -1
  13. package/docs/pages/components/form-group.md +1 -1
  14. package/docs/pages/components/icon.md +19 -2
  15. package/docs/pages/components/menu.md +23 -2
  16. package/docs/pages/components/select.md +2 -2
  17. package/docs/pages/components/tile-group.md +92 -0
  18. package/docs/pages/components/tile.md +80 -25
  19. package/package.json +1 -1
  20. package/scss/_root.scss +1 -1
  21. package/scss/mixins/_spacing-mixins.scss +20 -0
  22. package/scss/mixins/_typography-mixins.scss +22 -0
  23. package/scss/mixins/index.scss +2 -1
  24. package/scss/shared/_base.scss +18 -20
  25. package/scss/shared/_button.scss +5 -3
  26. package/scss/shared/_table.scss +4 -1
  27. package/scss/shared/layout.scss +2 -2
  28. package/scss/themes/_index.scss +2 -0
  29. package/scss/themes/_light.scss +22 -45
  30. package/scss/themes/_spacing.scss +44 -0
  31. package/scss/themes/_typography.scss +62 -0
  32. package/src/components/animated-button/README.md +1 -1
  33. package/src/components/button/button.component.ts +27 -5
  34. package/src/components/button/button.scss +86 -30
  35. package/src/components/button-menu/button-menu.component.ts +22 -9
  36. package/src/components/button-menu/button-menu.scss +1 -2
  37. package/src/components/button-menu/button-menu.test.ts +18 -0
  38. package/src/components/chat-message/chat-message.component.ts +73 -0
  39. package/src/components/chat-message/chat-message.scss +60 -0
  40. package/src/components/chat-message/index.ts +12 -0
  41. package/src/components/checkbox/checkbox.scss +2 -2
  42. package/src/components/chip/chip.component.ts +0 -5
  43. package/src/components/chip/chip.scss +14 -35
  44. package/src/components/collapsible/collapsible.scss +4 -0
  45. package/src/components/content-block/content-block.component.ts +46 -45
  46. package/src/components/content-block/content-block.scss +58 -27
  47. package/src/components/data-table/data-table.scss +10 -7
  48. package/src/components/data-table-sort/data-table-sort.scss +1 -1
  49. package/src/components/dialog/dialog.component.ts +3 -3
  50. package/src/components/dialog/dialog.scss +2 -2
  51. package/src/components/dropdown/dropdown.component.ts +1 -0
  52. package/src/components/editor/editor.component.ts +3 -1
  53. package/src/components/editor/editor.scss +9 -2
  54. package/src/components/editor/modules/ai/panel/ai-panel.scss +2 -2
  55. package/src/components/editor/modules/ai/tooltip/ai-tooltip.scss +1 -1
  56. package/src/components/editor/modules/context-menu/context-menu.ts +20 -20
  57. package/src/components/editor/modules/dialog/dialog.component.ts +3 -4
  58. package/src/components/editor/modules/dialog/dialog.scss +2 -1
  59. package/src/components/editor/modules/dialog/dialog.ts +12 -8
  60. package/src/components/editor/modules/toolbar/tool/tool.component.ts +1 -5
  61. package/src/components/editor/modules/toolbar/toolbar.component.ts +54 -50
  62. package/src/components/editor/modules/toolbar/toolbar.scss +4 -29
  63. package/src/components/editor/modules/toolbar/toolbar.ts +15 -17
  64. package/src/components/expanding-action/expanding-action.component.ts +14 -7
  65. package/src/components/expanding-action/expanding-action.scss +44 -2
  66. package/src/components/file/file.scss +2 -2
  67. package/src/components/header/header.component.ts +1 -1
  68. package/src/components/header/header.scss +3 -3
  69. package/src/components/hover-container/hover-container.scss +1 -1
  70. package/src/components/icon/icon.component.ts +6 -1
  71. package/src/components/icon/icon.scss +31 -0
  72. package/src/components/icon-picker/icon-picker.scss +3 -3
  73. package/src/components/input/input.scss +3 -3
  74. package/src/components/input-group/input-group.scss +16 -16
  75. package/src/components/markdown-editor/markdown-editor.scss +2 -2
  76. package/src/components/menu/menu.component.ts +32 -1
  77. package/src/components/menu/menu.scss +28 -5
  78. package/src/components/menu-item/menu-item.component.ts +6 -2
  79. package/src/components/menu-item/menu-item.scss +49 -5
  80. package/src/components/navbar/navbar.component.ts +7 -4
  81. package/src/components/navbar/navbar.scss +93 -21
  82. package/src/components/page/page.component.ts +1 -1
  83. package/src/components/page/page.scss +7 -26
  84. package/src/components/panel/panel.scss +5 -8
  85. package/src/components/priority-list/priority-list.scss +1 -1
  86. package/src/components/rating/rating.scss +1 -1
  87. package/src/components/scroll-container/scroll-container.scss +2 -1
  88. package/src/components/select/select.scss +1 -1
  89. package/src/components/settings-container/settings-container.scss +2 -2
  90. package/src/components/stat/stat.scss +8 -5
  91. package/src/components/tile/tile.component.ts +10 -2
  92. package/src/components/tile/tile.scss +108 -67
  93. package/src/components/tile-group/index.ts +12 -0
  94. package/src/components/tile-group/tile-group.component.ts +66 -0
  95. package/src/components/tile-group/tile-group.scss +23 -0
  96. package/src/form-control.scss +2 -1
  97. package/src/internal/zinc-element.ts +6 -1
  98. package/src/wc.scss +1 -0
  99. package/src/zinc.ts +2 -0
  100. package/src/components/editor/modules/toolbar/tool/tool.scss +0 -5
@@ -1,15 +1,25 @@
1
1
  @use "../../wc";
2
2
 
3
+ @include wc.gutter;
4
+
3
5
  :host {
4
6
  display: block;
5
7
  --navbar-active-colour: var(--zn-active-nav-background, var(--zn-page-content-background, var(--zn-page-surface-background, var(--zn-body))));
6
8
 
7
9
  ul.navbar {
8
10
  padding: 0;
9
- margin: 0 var(--zn-base-gap);
11
+ margin-inline: var(--zn-spacing-small);
12
+
13
+ &--color-body {
14
+ background-color: rgb(var(--zn-color-body));
15
+ }
10
16
  }
11
17
  }
12
18
 
19
+ :host([gutter]) ul.navbar {
20
+ margin: 0 calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
21
+ }
22
+
13
23
  :host([hover]) {
14
24
  position: absolute;
15
25
  transform: translateY(-100%);
@@ -48,10 +58,16 @@
48
58
  :host([icon-only]) {
49
59
  ul.navbar {
50
60
  li {
51
- padding: var(--zn-spacing-small);
52
- width: fit-content;
53
- max-width: 50px;
61
+ padding: 0;
62
+ width: 36px;
63
+ min-width: 36px;
54
64
  justify-content: center;
65
+
66
+ // Hover is the plain tab tint — without the body-coloured ::after
67
+ // backdrop the generic hover paints, which reads as white
68
+ &:hover:not(.active):not(.zn-tb-active):not(.more)::after {
69
+ display: none;
70
+ }
55
71
  }
56
72
  }
57
73
  }
@@ -68,7 +84,7 @@
68
84
  }
69
85
 
70
86
  :host:not([stacked]) .navbar {
71
- margin: 0 0 0 var(--zn-base-gap);
87
+ margin: 0 0 0 calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
72
88
  padding-left: 0;
73
89
 
74
90
  &--flush {
@@ -79,9 +95,11 @@
79
95
  ul.navbar {
80
96
  li {
81
97
  padding-top: 0;
82
- font-size: var(--zn-font-size-medium);
98
+ font-size: var(--zn-text-tab-link-font-size);
99
+ line-height: var(--zn-text-tab-link-line-height);
100
+ font-weight: var(--zn-text-tab-link-font-weight);
83
101
  white-space: nowrap;
84
- color: rgb(var(--zn-color-muted-text));
102
+ color: var(--zn-text-tab-link-color);
85
103
 
86
104
  a {
87
105
  text-decoration: none;
@@ -125,7 +143,7 @@ ul.navbar {
125
143
  }
126
144
 
127
145
  &.zn-tb-active {
128
- background-color: rgb(var(--zn-body));
146
+ background-color: rgb(var(--zn-color-navigation));
129
147
  }
130
148
 
131
149
  &:hover:before {
@@ -229,6 +247,12 @@ ul.navbar.navbar--stacked.navbar--icon-bar {
229
247
  }
230
248
  }
231
249
 
250
+ :host([icon-only]:not([stacked]):not([icon-bar])) {
251
+ ul.navbar {
252
+ height: 36px;
253
+ }
254
+ }
255
+
232
256
 
233
257
  :host([pad]) {
234
258
  ul.navbar {
@@ -252,7 +276,7 @@ ul.navbar.navbar--stacked.navbar--icon-bar {
252
276
  }
253
277
 
254
278
  &.active, &.zn-tb-active {
255
- color: rgb(var(--zn-color-text));
279
+ color: var(--zn-text-tab-link-active-color);
256
280
  border-bottom: 1px solid rgb(var(--navbar-active-colour));
257
281
  }
258
282
  }
@@ -261,6 +285,10 @@ ul.navbar.navbar--stacked.navbar--icon-bar {
261
285
  border-top-right-radius: 6px;
262
286
  }
263
287
 
288
+ &.has-hidden > li.more {
289
+ border-top-right-radius: 6px;
290
+ }
291
+
264
292
  &.more-only > li.more {
265
293
  border-left-width: 1px;
266
294
  border-top-left-radius: 6px;
@@ -304,7 +332,7 @@ ul.navbar.navbar--stacked.navbar--icon-bar {
304
332
  }
305
333
 
306
334
  user-select: none;
307
- font-weight: 500;
335
+ font-weight: var(--zn-text-tab-link-font-weight);
308
336
  padding: 0 calc(var(--zn-base-px, 8px) * 2);
309
337
  background: rgb(var(--zn-color-tab));
310
338
  transition: background-color 100ms ease-in-out;
@@ -317,6 +345,7 @@ ul.navbar.navbar--stacked.navbar--icon-bar {
317
345
  content: "";
318
346
  position: absolute;
319
347
  inset: 0;
348
+ border-radius: inherit;
320
349
  background: rgb(var(--navbar-active-colour));
321
350
  z-index: -1;
322
351
  }
@@ -366,6 +395,10 @@ ul.navbar.navbar--stacked.navbar--icon-bar {
366
395
 
367
396
  &.active, &.zn-tb-active {
368
397
  background: rgb(var(--navbar-active-colour));
398
+ font-size: var(--zn-text-tab-link-active-font-size);
399
+ line-height: var(--zn-text-tab-link-active-line-height);
400
+ font-weight: var(--zn-text-tab-link-active-font-weight);
401
+ color: var(--zn-text-tab-link-active-color);
369
402
  }
370
403
 
371
404
  &.active::before, &.zn-tb-active::before {
@@ -495,10 +528,7 @@ button[popovertarget] {
495
528
  flex-shrink: 0;
496
529
  margin: 0;
497
530
  display: flex;
498
- align-items: center;
499
- width: fit-content;
500
- height: 40px;
501
- gap: var(--zn-spacing-2x-small);
531
+ gap: var(--zn-spacing-x-small);
502
532
  padding-right: calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
503
533
  }
504
534
 
@@ -513,24 +543,44 @@ button[popovertarget] {
513
543
  // Let the trigger fill the whole cell so clicking anywhere in the
514
544
  // "more" item opens the dropdown, not just the icon itself.
515
545
  padding: 0;
546
+ width: 40px;
547
+ min-width: 40px;
516
548
 
517
549
  zn-dropdown,
518
550
  zn-button[slot="trigger"] {
519
551
  height: 100%;
552
+ width: 100%;
520
553
  }
521
554
 
522
555
  zn-button[slot="trigger"] zn-icon {
523
556
  transition: transform 200ms ease-in-out;
557
+ --icon-color: var(--zn-text-tab-link-color);
524
558
  }
525
559
 
526
560
  zn-dropdown[open] zn-button[slot="trigger"] zn-icon {
527
561
  transform: rotate(90deg);
562
+ --icon-color: var(--zn-text-tab-link-active-color);
563
+ }
564
+
565
+ &:has(zn-dropdown[open]) {
566
+ background: rgb(var(--zn-panel));
567
+
568
+ &::after {
569
+ content: '';
570
+ position: absolute;
571
+ inset: auto 0 -1px 0;
572
+ height: 1px;
573
+ border-radius: 0;
574
+ background: rgb(var(--zn-panel));
575
+ z-index: 1;
576
+ }
528
577
  }
529
578
 
530
579
  zn-button::part(base) {
531
580
  height: 100%;
532
- padding-left: calc(var(--zn-base-gap, 8px));
533
- padding-right: calc(var(--zn-base-gap, 8px));
581
+ padding-left: 0;
582
+ padding-right: 0;
583
+ outline: none;
534
584
 
535
585
  &:hover {
536
586
  background-color: transparent;
@@ -538,28 +588,50 @@ button[popovertarget] {
538
588
  }
539
589
 
540
590
  ul#extended-menu {
541
- box-shadow: var(--zn-shadow-medium);
591
+ --navbar-more-trigger-width: 40px;
592
+
593
+ box-shadow: 0 4px 8px -4px rgba(33, 33, 33, 0.1);
594
+ border: 1px solid rgb(var(--zn-border-color));
595
+ border-top: 0;
596
+ border-radius: 0 0 var(--zn-border-radius) var(--zn-border-radius);
597
+ overflow: hidden;
598
+ position: relative;
599
+ inset-inline-end: -1px;
600
+
601
+ &::before {
602
+ content: '';
603
+ position: absolute;
604
+ inset: 0 calc(var(--navbar-more-trigger-width) - 2px) auto 0;
605
+ height: 1px;
606
+ background: rgb(var(--zn-border-color));
607
+ z-index: 2;
608
+ }
609
+
542
610
  background: rgb(var(--zn-panel));
543
611
  display: flex;
544
612
  flex-direction: column;
545
613
  height: auto;
546
614
  width: fit-content;
547
615
  min-width: var(--zn-size-spanel);
548
- margin: 0;
616
+ margin: -1px 0 0;
549
617
  padding: 1px;
550
618
 
551
619
  li {
552
620
  justify-content: left;
553
621
  background: rgb(var(--zn-panel));
554
- color: rgb(var(--zn-text));
555
- padding: var(--zn-spacing-small);
622
+ font-size: var(--zn-text-menu-link-font-size);
623
+ line-height: var(--zn-text-menu-link-line-height);
624
+ font-weight: var(--zn-text-menu-link-font-weight);
625
+ color: var(--zn-text-menu-link-color);
626
+ padding: var(--zn-spacing-small) var(--zn-spacing-medium);
556
627
 
557
628
  &:hover {
558
629
  background: linear-gradient(rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.06)), rgb(var(--zn-panel));
559
630
  }
560
631
 
561
632
  &.active, &.zn-tb-active {
562
- font-weight: 700;
633
+ font-weight: var(--zn-text-tab-link-font-weight);
634
+ color: var(--zn-text-tab-link-color);
563
635
  }
564
636
 
565
637
  &.active::before, &.zn-tb-active::before {
@@ -385,7 +385,7 @@ export default class ZnPage extends ZnTabs {
385
385
  ${hasPreviousPath ? html`
386
386
  <a href="${this.previousPath}" class="caption__back"
387
387
  data-target="${this.previousTarget ? this.previousTarget : ''}">
388
- <zn-button icon="arrow_back" icon-size="24" color="transparent"></zn-button>
388
+ <zn-button icon="arrow-left@lu" icon-size="24" icon-button="small" plain></zn-button>
389
389
  </a>` : null}
390
390
 
391
391
  <div class="caption">
@@ -1,5 +1,7 @@
1
1
  @use "../../wc";
2
2
 
3
+ @include wc.gutter;
4
+
3
5
  :host {
4
6
  display: block;
5
7
  width: 100%;
@@ -10,24 +12,6 @@
10
12
  --zn-page-header-background: var(--zn-page-surface-background, var(--zn-page-background, var(--zn-body)));
11
13
  }
12
14
 
13
- @container (width > 1024px) {
14
- :host {
15
- --zn-gutter: 16px;
16
- }
17
- }
18
-
19
- @container (width > 1400px) {
20
- :host {
21
- --zn-gutter: 24px;
22
- }
23
- }
24
-
25
- @container (width > 1500px) {
26
- :host {
27
- --zn-gutter: 32px;
28
- }
29
- }
30
-
31
15
  :host([panel]) {
32
16
  --zn-page-content-background: var(--zn-panel);
33
17
  }
@@ -129,8 +113,8 @@
129
113
  }
130
114
 
131
115
  &__caption {
132
- font-weight: var(--zn-font-weight-medium);
133
- font-size: var(--zn-font-size-large);
116
+ font-weight: var(--zn-text-h1-font-weight);
117
+ font-size: var(--zn-text-h1-font-size);
134
118
  color: rgba(var(--zn-text-panel-title), 100%);
135
119
  line-height: 18px;
136
120
  margin: 0;
@@ -304,19 +288,16 @@ zn-navbar {
304
288
  }
305
289
 
306
290
  :host .page__header {
307
- padding-right: 0;
308
- padding-left: 0;
291
+ padding-inline: 0;
309
292
  }
310
293
 
311
294
  :host .header {
312
- padding-right: calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
313
- padding-left: calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
295
+ padding-inline: calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
314
296
  }
315
297
 
316
298
  :host zn-navbar {
317
299
  &::part(navbar) {
318
- padding-left: calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
319
- padding-right: calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
300
+ padding-inline: calc(var(--zn-gutter, 0) + var(--zn-base-gap, 0));
320
301
  }
321
302
  }
322
303
 
@@ -11,6 +11,7 @@
11
11
  min-width: var(--zn-spacing-small-panel);
12
12
  flex-basis: var(--zn-panel-basis);
13
13
  --zn-page-surface-background: var(--zn-panel);
14
+ --zn-active-nav-background: var(--zn-panel);
14
15
  }
15
16
 
16
17
 
@@ -18,7 +19,7 @@
18
19
  position: relative;
19
20
  border: 1px solid rgb(var(--zn-border-color));
20
21
  display: flex;
21
- border-radius: var(--zn-border-radius-large);
22
+ border-radius: var(--zn-border-radius);
22
23
  flex-direction: column;
23
24
  flex-grow: 1;
24
25
  flex-basis: var(--zn-spacing-small-panel);
@@ -29,7 +30,7 @@
29
30
  &__inner {
30
31
  overflow: hidden;
31
32
  display: flex;
32
- border-radius: var(--zn-border-radius-large);
33
+ border-radius: var(--zn-border-radius);
33
34
  flex-direction: column;
34
35
  flex-grow: 1;
35
36
  }
@@ -52,10 +53,6 @@
52
53
  border-bottom: 0;
53
54
  }
54
55
 
55
- &::part(header-caption) {
56
- font-size: var(--zn-font-size-large);
57
- }
58
-
59
56
  &--inline {
60
57
  border-bottom: 0;
61
58
  }
@@ -86,8 +83,8 @@
86
83
  display: block;
87
84
  padding: var(--zn-spacing-small) var(--zn-base-gap);
88
85
  background: rgb(var(--zn-panel-secondary));
89
- border-bottom-left-radius: var(--zn-border-radius-large);
90
- border-bottom-right-radius: var(--zn-border-radius-large);
86
+ border-bottom-left-radius: var(--zn-border-radius);
87
+ border-bottom-right-radius: var(--zn-border-radius);
91
88
  }
92
89
 
93
90
  &--tabbed .panel__body {
@@ -47,7 +47,7 @@
47
47
  padding: var(--zn-priority-list-item-padding);
48
48
  background: rgb(var(--zn-panel));
49
49
  border: 1px solid rgb(var(--zn-border-color));
50
- border-radius: var(--zn-border-radius-medium);
50
+ border-radius: var(--zn-border-radius);
51
51
  cursor: grab;
52
52
  user-select: none;
53
53
  -webkit-user-drag: element;
@@ -12,7 +12,7 @@
12
12
  .rating {
13
13
  position: relative;
14
14
  display: inline-flex;
15
- border-radius: var(--zn-border-radius-medium);
15
+ border-radius: var(--zn-border-radius);
16
16
  vertical-align: middle;
17
17
 
18
18
  &:focus {
@@ -1,6 +1,8 @@
1
1
  @use "../../wc";
2
2
 
3
3
  :host {
4
+ @include wc.scrollbars;
5
+
4
6
  display: contents;
5
7
  --zn-scroll-footer-height: 0px;
6
8
  --zn-scroll-header-height: 0px;
@@ -22,7 +24,6 @@
22
24
  }
23
25
 
24
26
  .scroll-container {
25
- @include wc.scrollbars;
26
27
  container-type: inline-size;
27
28
  display: flex;
28
29
  flex-direction: column;
@@ -389,7 +389,7 @@
389
389
  box-shadow: var(--zn-shadow-medium);
390
390
  background: var(--zn-panel-background-color);
391
391
  border: solid var(--zn-panel-border-width) var(--zn-panel-border-color);
392
- border-radius: var(--zn-border-radius-medium);
392
+ border-radius: var(--zn-border-radius);
393
393
  margin: var(--zn-spacing-x-small) 0;
394
394
  padding-inline: 0;
395
395
  overflow: auto;
@@ -81,7 +81,7 @@
81
81
  }
82
82
 
83
83
  zn-button {
84
- border-radius: var(--zn-border-radius-medium);
84
+ border-radius: var(--zn-border-radius);
85
85
  }
86
86
 
87
87
  .settings-container__dropdown-content {
@@ -91,7 +91,7 @@ zn-button {
91
91
  background-color: rgb(var(--zn-panel));
92
92
  padding: var(--zn-spacing-large);
93
93
  box-shadow: var(--zn-shadow-small);
94
- border-radius: var(--zn-border-radius-medium);
94
+ border-radius: var(--zn-border-radius);
95
95
  max-width: var(--zn-size-mpanel);
96
96
  width: fit-content;
97
97
  z-index: 20;
@@ -13,7 +13,10 @@
13
13
 
14
14
  .caption {
15
15
  margin-bottom: var(--zn-spacing-x-small);
16
- font-size: var(--zn-font-size-medium);
16
+ font-size: var(--zn-text-chart-minor-font-size);
17
+ line-height: var(--zn-text-chart-minor-line-height);
18
+ font-weight: var(--zn-text-chart-minor-font-weight);
19
+ color: var(--zn-text-chart-minor-color);
17
20
  }
18
21
 
19
22
  .container {
@@ -34,10 +37,10 @@
34
37
  }
35
38
 
36
39
  .amount {
37
- color: rgb(var(--zn-text-heading));
38
- font-weight: 600;
39
- font-size: var(--zn-font-size-x-large);
40
- line-height: var(--zn-line-height-loose);
40
+ color: var(--zn-text-chart-major-color);
41
+ font-weight: var(--zn-text-chart-major-font-weight);
42
+ font-size: var(--zn-text-chart-major-font-size);
43
+ line-height: var(--zn-text-chart-major-line-height);
41
44
  display: flex;
42
45
  flex-grow: 1;
43
46
  align-items: center;
@@ -50,6 +50,12 @@ export default class ZnTile extends ZincElement {
50
50
 
51
51
  @property({type: Boolean}) inline: boolean;
52
52
 
53
+ /** Renders the caption in the normal table-content weight instead of bold. */
54
+ @property({type: Boolean}) plain: boolean;
55
+
56
+ /** Set by `zn-tile-group` to lay the tile out as a shared-column subgrid row. */
57
+ @property({type: Boolean, reflect: true}) grouped: boolean;
58
+
53
59
  private _isLink() {
54
60
  return this.href || this.dataUri;
55
61
  }
@@ -82,6 +88,7 @@ export default class ZnTile extends ZincElement {
82
88
  'tile--flush-x': this.flushX,
83
89
  'tile--flush-y': this.flushY,
84
90
  'tile--inline': this.inline,
91
+ 'tile--plain': this.plain,
85
92
  'tile--has-href': isLink,
86
93
  'tile--has-caption': hasCaption,
87
94
  'tile--has-description': hasDescription,
@@ -95,12 +102,13 @@ export default class ZnTile extends ZincElement {
95
102
  <div
96
103
  class="tile__link">
97
104
  <div class="tile__left">
98
- <slot name="image" part="image" class="tile__image"></slot>
105
+ ${hasImage ? html`<slot name="image" part="image" class="tile__image"></slot>` : html``}
99
106
  <div class="tile__content">
100
107
  <p part="caption" class="tile__caption">
101
108
  <slot name="caption">${this.caption}</slot>
102
109
  </p>
103
- <p part="description" class="tile__description">${this.description}</p>
110
+ ${hasDescription ? html`
111
+ <p part="description" class="tile__description">${this.description}</p>` : ''}
104
112
  </div>
105
113
  </div>
106
114
  </div>