@ctrliq/quantic-components 1.86.1 → 1.87.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.
Files changed (69) hide show
  1. package/dist/action-group/action-group.component.js +7 -2
  2. package/dist/badge/badge-group.component.js +1 -2
  3. package/dist/badge/badge.component.js +8 -3
  4. package/dist/button/index.js +3 -2
  5. package/dist/button-bar/button-bar-item.js +1 -0
  6. package/dist/button-bar/button-bar.js +0 -1
  7. package/dist/button-group/button-group-item.js +3 -0
  8. package/dist/button-group/button-group.js +0 -1
  9. package/dist/card/card-image.component.js +1 -0
  10. package/dist/card/card-meta.component.js +1 -0
  11. package/dist/card/card-title.component.js +1 -0
  12. package/dist/card/card.component.js +14 -21
  13. package/dist/checkbox/checkbox-group.component.js +0 -1
  14. package/dist/dialog/dialog-actions.js +1 -1
  15. package/dist/dialog/dialog-title.js +1 -0
  16. package/dist/dialog/dialog.js +0 -1
  17. package/dist/dropdown-menu/dropdown-menu.component.js +0 -4
  18. package/dist/dropdown-menu/group.component.js +1 -0
  19. package/dist/dropdown-menu/item.component.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/layout/layout.component.js +1 -1
  22. package/dist/layout/sidebar-menu-item-group.component.js +1 -0
  23. package/dist/layout/sidebar-menu-item.component.js +2 -0
  24. package/dist/layout/sidebar.component.js +1 -4
  25. package/dist/meta/all-meta.test.js +18 -0
  26. package/dist/meta/index.js.map +1 -1
  27. package/dist/meta/serialize.d.ts +3 -1
  28. package/dist/meta/serialize.js +20 -3
  29. package/dist/meta/serialize.test.js +30 -0
  30. package/dist/meta/slot-parity.test.d.ts +1 -0
  31. package/dist/meta/slot-parity.test.js +83 -0
  32. package/dist/meta.json +146 -58
  33. package/dist/number-input/index.js +1 -0
  34. package/dist/option-card/option-card-group.component.js +0 -1
  35. package/dist/option-card/option-card.component.js +1 -0
  36. package/dist/panel/panel-group.component.js +0 -1
  37. package/dist/panel/panel-header.component.js +1 -0
  38. package/dist/panel/panel.component.js +0 -1
  39. package/dist/popover/popover-popup.js +1 -0
  40. package/dist/popover/popover.js +0 -1
  41. package/dist/quantic-components.js +84 -70
  42. package/dist/quantic-components.js.map +1 -1
  43. package/dist/quantic-components.min.js +61 -79
  44. package/dist/quantic-components.min.js.map +1 -1
  45. package/dist/radio/radio.component.js +1 -0
  46. package/dist/register.js.map +1 -1
  47. package/dist/select/index.js +7 -0
  48. package/dist/shared/meta.types.d.ts +21 -1
  49. package/dist/splitter/splitter-group.component.js +0 -1
  50. package/dist/splitter/splitter-pane.component.js +1 -0
  51. package/dist/table/table-body.component.js +1 -0
  52. package/dist/table/table-cell.component.js +1 -0
  53. package/dist/table/table-controls.component.js +1 -0
  54. package/dist/table/table-footer.component.js +1 -0
  55. package/dist/table/table-head.component.js +1 -0
  56. package/dist/table/table-header.component.js +1 -0
  57. package/dist/table/table-row.component.js +1 -0
  58. package/dist/table/table.component.js +0 -9
  59. package/dist/tabs/button.component.js +1 -0
  60. package/dist/tabs/panel.component.js +1 -0
  61. package/dist/tabs/tabs.component.js +0 -1
  62. package/dist/tag/tag-group.component.js +6 -2
  63. package/dist/text-input/index.js +6 -8
  64. package/dist/tooltip/tooltip-popup.js +1 -0
  65. package/dist/tooltip/tooltip.js +0 -1
  66. package/dist/types/meta/serialize.d.ts +3 -1
  67. package/dist/types/meta/slot-parity.test.d.ts +1 -0
  68. package/dist/types/shared/meta.types.d.ts +21 -1
  69. package/package.json +1 -1
@@ -33,8 +33,13 @@ ActionGroup.meta = {
33
33
  description: 'quantic-button elements, or a quantic-dropdown-menu or quantic-popover triggered by one.',
34
34
  },
35
35
  },
36
- subComponents: ['quantic-button', 'quantic-dropdown-menu', 'quantic-popover'],
37
- relatedTo: ['quantic-button', 'quantic-button-bar', 'quantic-dialog-actions'],
36
+ relatedTo: [
37
+ 'quantic-button',
38
+ 'quantic-button-bar',
39
+ 'quantic-dialog-actions',
40
+ 'quantic-dropdown-menu',
41
+ 'quantic-popover',
42
+ ],
38
43
  };
39
44
  ActionGroup.styles = css `
40
45
  :host {
@@ -32,8 +32,7 @@ BadgeGroup.meta = {
32
32
  description: 'quantic-badge or quantic-status-badge elements.',
33
33
  },
34
34
  },
35
- subComponents: ['quantic-badge', 'quantic-status-badge'],
36
- relatedTo: ['quantic-badge', 'quantic-tag-group'],
35
+ relatedTo: ['quantic-badge', 'quantic-tag-group', 'quantic-status-badge'],
37
36
  };
38
37
  BadgeGroup.styles = css `
39
38
  :host {
@@ -29,9 +29,9 @@ let Badge = class Badge extends QuanticElement {
29
29
  });
30
30
  return html `
31
31
  <div class=${classes}>
32
- <slot name="before" data-description="Content before the label (e.g. icon)."></slot>
33
- <slot data-description="Badge label text or icon."></slot>
34
- <slot name="after" data-description="Content after the label."></slot>
32
+ <slot name="before"></slot>
33
+ <slot></slot>
34
+ <slot name="after"></slot>
35
35
  </div>
36
36
  `;
37
37
  }
@@ -42,6 +42,11 @@ Badge.meta = {
42
42
  'Non-interactive — use quantic-button for clickable chips. ' +
43
43
  'Supports a wide color palette and an icon-only square mode.',
44
44
  category: 'display',
45
+ slots: {
46
+ before: { description: 'Content before the label (e.g. icon).' },
47
+ '': { description: 'Badge label text or icon.' },
48
+ after: { description: 'Content after the label.' },
49
+ },
45
50
  relatedTo: ['quantic-tag', 'quantic-status-badge'],
46
51
  };
47
52
  Badge.styles = css `
@@ -93,7 +93,7 @@ let Button = class Button extends QuanticElement {
93
93
  value=${ifDefined(this.value)}
94
94
  @click=${this.handleClick}
95
95
  >
96
- <slot data-description="Button label or icon content."></slot>
96
+ <slot></slot>
97
97
  </button>`
98
98
  : html `
99
99
  <${Tag}
@@ -105,7 +105,7 @@ let Button = class Button extends QuanticElement {
105
105
  target=${ifDefined(this.target)}
106
106
  download=${ifDefined(this.download)}
107
107
  >
108
- <slot data-description="Button label or icon content."></slot>
108
+ <slot></slot>
109
109
  </${Tag}>`;
110
110
  }
111
111
  };
@@ -115,6 +115,7 @@ Button.meta = {
115
115
  'Supports icon-only mode and polymorphic rendering as an <a> or <span>. ' +
116
116
  'Prefer over quantic-icon-label when the element needs to be interactive.',
117
117
  category: 'action',
118
+ slots: { '': { description: 'Button label or icon content.' } },
118
119
  relatedTo: ['quantic-button-bar', 'quantic-icon-label'],
119
120
  };
120
121
  Button.formAssociated = true;
@@ -47,6 +47,7 @@ ButtonBarItem.meta = {
47
47
  description: 'Single segment within a quantic-button-bar. ' +
48
48
  'Renders as a native button with shared sizing from the parent context and a pressed state via active.',
49
49
  category: 'action',
50
+ subComponentOf: 'quantic-button-bar',
50
51
  slots: { '': { description: 'Button label or icon content.' } },
51
52
  relatedTo: ['quantic-button-bar', 'quantic-button'],
52
53
  };
@@ -88,7 +88,6 @@ ButtonBar.meta = {
88
88
  'Prefer quantic-button for a standalone action, and quantic-tabs when each segment reveals a panel.',
89
89
  category: 'action',
90
90
  slots: { '': { description: 'One or more quantic-button-bar-item elements.' } },
91
- subComponents: ['quantic-button-bar-item'],
92
91
  relatedTo: ['quantic-button'],
93
92
  };
94
93
  ButtonBar.styles = css `
@@ -17,6 +17,9 @@ ButtonGroupItem.meta = {
17
17
  tag: 'quantic-button-group-item',
18
18
  description: 'Deprecated alias of quantic-button-bar-item. Use quantic-button-bar-item.',
19
19
  deprecated: { use: 'quantic-button-bar-item' },
20
+ // The spread would otherwise inherit quantic-button-bar from ButtonBarItem, and
21
+ // the deprecated item belongs to the deprecated bar.
22
+ subComponentOf: 'quantic-button-group',
20
23
  relatedTo: ['quantic-button-group'],
21
24
  };
22
25
  ButtonGroupItem = __decorate([
@@ -27,7 +27,6 @@ ButtonGroup.meta = {
27
27
  reason: 'The name describes a row of buttons, which this is not. Use quantic-action-group for that.',
28
28
  },
29
29
  slots: { '': { description: 'One or more quantic-button-group-item elements.' } },
30
- subComponents: ['quantic-button-group-item'],
31
30
  };
32
31
  ButtonGroup = __decorate([
33
32
  quanticElement('quantic-button-group')
@@ -22,6 +22,7 @@ CardImage.meta = {
22
22
  description: 'Image sub-component for quantic-card. Place inside the card body or header slot. ' +
23
23
  'Use the bleeds prop to stretch the image edge-to-edge by negating the card padding.',
24
24
  category: 'display',
25
+ subComponentOf: 'quantic-card',
25
26
  slots: { '': { description: 'An <img> element to display.' } },
26
27
  relatedTo: ['quantic-card'],
27
28
  };
@@ -17,6 +17,7 @@ CardMeta.meta = {
17
17
  description: 'Metadata overlay sub-component for quantic-card, positioned absolutely in the top-right corner. ' +
18
18
  'Use for secondary information such as dates, tags, or status badges.',
19
19
  category: 'display',
20
+ subComponentOf: 'quantic-card',
20
21
  slots: { '': { description: 'Metadata content — badges, dates, or tags.' } },
21
22
  relatedTo: ['quantic-card'],
22
23
  };
@@ -33,6 +33,7 @@ CardTitle.meta = {
33
33
  description: 'Title/heading sub-component for quantic-card. Renders an hgroup with optional pretitle and subtitle slots. ' +
34
34
  'Empty slots are auto-hidden.',
35
35
  category: 'display',
36
+ subComponentOf: 'quantic-card',
36
37
  slots: {
37
38
  '': { description: 'Main title text or heading element.' },
38
39
  pretitle: { description: 'Small label displayed above the title.' },
@@ -35,22 +35,10 @@ let Card = class Card extends AutoHideEmptySlotsMixin(QuanticElement, [
35
35
  ['is-disabled']: this.disabled,
36
36
  });
37
37
  const slots = html `
38
- <slot
39
- name="header"
40
- class="header"
41
- data-description="Header area — place quantic-card-title and quantic-card-meta here."
42
- ></slot>
43
- <slot class="body" data-description="Main body content."></slot>
44
- <slot
45
- name="footer"
46
- class="footer"
47
- data-description="Footer content, pinned to the bottom of the card."
48
- ></slot>
49
- <slot
50
- name="action-icon"
51
- class="action-icon"
52
- data-description="Icon in the top-right corner; only visible on interactive cards."
53
- ></slot>
38
+ <slot name="header" class="header"></slot>
39
+ <slot class="body"></slot>
40
+ <slot name="footer" class="footer"></slot>
41
+ <slot name="action-icon" class="action-icon"></slot>
54
42
  `;
55
43
  if (this.as === 'button') {
56
44
  return html `<button
@@ -84,11 +72,16 @@ Card.meta = {
84
72
  'Render as "a" or "button" to make the entire card interactive. ' +
85
73
  'Prefer quantic-panel for non-interactive content sections.',
86
74
  category: 'display',
87
- subComponents: [
88
- 'quantic-card-title',
89
- 'quantic-card-image',
90
- 'quantic-card-meta',
91
- ],
75
+ slots: {
76
+ header: {
77
+ description: 'Header area. Place quantic-card-title and quantic-card-meta here.',
78
+ },
79
+ '': { description: 'Main body content.' },
80
+ footer: { description: 'Footer content, pinned to the bottom of the card.' },
81
+ 'action-icon': {
82
+ description: 'Icon in the top-right corner; only visible on interactive cards.',
83
+ },
84
+ },
92
85
  relatedTo: ['quantic-card-group', 'quantic-panel'],
93
86
  };
94
87
  Card.styles = [
@@ -58,7 +58,6 @@ CheckboxGroup.meta = {
58
58
  'Optionally propagates disabled/required to children; each checkbox owns its own checked and name state.',
59
59
  category: 'form',
60
60
  slots: { '': { description: 'One or more quantic-checkbox elements.' } },
61
- subComponents: ['quantic-checkbox'],
62
61
  relatedTo: ['quantic-checkbox', 'quantic-field'],
63
62
  };
64
63
  CheckboxGroup.styles = css `
@@ -23,8 +23,8 @@ DialogActions.meta = {
23
23
  description: 'Footer actions bar for quantic-dialog. ' +
24
24
  'Lays action buttons out as a quantic-action-group, flush to the right.',
25
25
  category: 'feedback',
26
+ subComponentOf: 'quantic-dialog',
26
27
  slots: { '': { description: 'Action buttons, typically quantic-button elements.' } },
27
- subComponents: ['quantic-action-group'],
28
28
  relatedTo: ['quantic-dialog', 'quantic-button', 'quantic-action-group'],
29
29
  };
30
30
  DialogActions.styles = css `
@@ -32,6 +32,7 @@ DialogTitle.meta = {
32
32
  description: 'Header/title bar sub-component for quantic-dialog. ' +
33
33
  'Renders a semantic heading with optional pretitle and subtitle slots.',
34
34
  category: 'feedback',
35
+ subComponentOf: 'quantic-dialog',
35
36
  slots: {
36
37
  pretitle: { description: 'Small label displayed above the main title.' },
37
38
  '': { description: 'Main title text.' },
@@ -301,7 +301,6 @@ Dialog.meta = {
301
301
  '': { description: 'Main dialog body content.' },
302
302
  footer: { description: 'Dialog footer — place quantic-dialog-actions here.' },
303
303
  },
304
- subComponents: ['quantic-dialog-title', 'quantic-dialog-actions'],
305
304
  relatedTo: ['quantic-button'],
306
305
  };
307
306
  Dialog.styles = css `
@@ -148,10 +148,6 @@ DropdownMenu.meta = {
148
148
  description: 'Menu items — quantic-dropdown-menu-item and quantic-dropdown-menu-group elements.',
149
149
  },
150
150
  },
151
- subComponents: [
152
- 'quantic-dropdown-menu-item',
153
- 'quantic-dropdown-menu-group',
154
- ],
155
151
  };
156
152
  DropdownMenu.styles = css `
157
153
  :host {
@@ -38,6 +38,7 @@ DropdownMenuGroup.meta = {
38
38
  description: 'Visual section divider inside a quantic-dropdown-menu. ' +
39
39
  'Renders an optional uppercase label above a group of menu items and draws a separator from the previous group.',
40
40
  category: 'navigation',
41
+ subComponentOf: 'quantic-dropdown-menu',
41
42
  slots: {
42
43
  label: {
43
44
  description: 'Custom label content rendered above the group items. Takes priority over the label prop.',
@@ -83,6 +83,7 @@ DropdownMenuItem.meta = {
83
83
  'Renders as a button by default or as an anchor for navigation. ' +
84
84
  'Place icons or text in the default slot.',
85
85
  category: 'navigation',
86
+ subComponentOf: 'quantic-dropdown-menu',
86
87
  slots: {
87
88
  '': { description: 'Item content — icon and/or label text.' },
88
89
  },