@ctrliq/quantic-components 1.81.0 → 1.83.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 (63) hide show
  1. package/dist/astro.d.ts +3 -1
  2. package/dist/astro.js +3 -1
  3. package/dist/astro.js.map +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/button-bar/button-bar-item.d.ts +11 -0
  6. package/dist/button-bar/button-bar-item.js +191 -0
  7. package/dist/button-bar/button-bar.d.ts +11 -0
  8. package/dist/button-bar/button-bar.js +76 -0
  9. package/dist/button-bar/index.constants.d.ts +6 -0
  10. package/dist/button-bar/index.constants.js +5 -0
  11. package/dist/button-bar/index.context.d.ts +4 -0
  12. package/dist/button-bar/index.context.js +2 -0
  13. package/dist/button-bar/index.d.ts +3 -0
  14. package/dist/button-bar/index.js +3 -0
  15. package/dist/{types/button-group → button-bar}/index.stories.d.ts +2 -2
  16. package/dist/button-bar/index.stories.js +107 -0
  17. package/dist/button-group/button-group-item.d.ts +6 -8
  18. package/dist/button-group/button-group-item.js +11 -167
  19. package/dist/button-group/button-group.d.ts +9 -7
  20. package/dist/button-group/button-group.js +17 -58
  21. package/dist/button-group/index.constants.d.ts +4 -1
  22. package/dist/button-group/index.constants.js +3 -5
  23. package/dist/card/index.d.ts +1 -1
  24. package/dist/card/index.js +1 -1
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/meta/constants-barrel.test.d.ts +1 -0
  29. package/dist/meta/constants-barrel.test.js +74 -0
  30. package/dist/meta/index.js +4 -0
  31. package/dist/meta/index.js.map +1 -1
  32. package/dist/meta/serialize.js +1 -0
  33. package/dist/meta.json +92 -22
  34. package/dist/pagination/pagination.component.js +15 -15
  35. package/dist/quantic-components.js +137 -78
  36. package/dist/quantic-components.js.map +1 -1
  37. package/dist/quantic-components.min.js +149 -143
  38. package/dist/quantic-components.min.js.map +1 -1
  39. package/dist/register.js.map +1 -1
  40. package/dist/shared/meta.types.d.ts +4 -0
  41. package/dist/tabs/index.stories.js +1 -1
  42. package/dist/tooltip/index.d.ts +1 -0
  43. package/dist/tooltip/index.js +1 -0
  44. package/dist/types/astro.d.ts +3 -1
  45. package/dist/types/button-bar/button-bar-item.d.ts +11 -0
  46. package/dist/types/button-bar/button-bar.d.ts +11 -0
  47. package/dist/types/button-bar/index.constants.d.ts +6 -0
  48. package/dist/types/button-bar/index.context.d.ts +4 -0
  49. package/dist/types/button-bar/index.d.ts +3 -0
  50. package/dist/{button-group → types/button-bar}/index.stories.d.ts +2 -2
  51. package/dist/types/button-group/button-group-item.d.ts +6 -8
  52. package/dist/types/button-group/button-group.d.ts +9 -7
  53. package/dist/types/button-group/index.constants.d.ts +4 -1
  54. package/dist/types/card/index.d.ts +1 -1
  55. package/dist/types/index.d.ts +1 -0
  56. package/dist/types/meta/constants-barrel.test.d.ts +1 -0
  57. package/dist/types/shared/meta.types.d.ts +4 -0
  58. package/dist/types/tooltip/index.d.ts +1 -0
  59. package/package.json +1 -1
  60. package/dist/button-group/index.context.d.ts +0 -4
  61. package/dist/button-group/index.context.js +0 -2
  62. package/dist/button-group/index.stories.js +0 -107
  63. package/dist/types/button-group/index.context.d.ts +0 -4
@@ -12,6 +12,7 @@ export function serializeComponent(component) {
12
12
  description: component.description,
13
13
  category: component.category,
14
14
  ...(component.ascii ? { ascii: component.ascii } : {}),
15
+ ...(component.deprecated ? { deprecated: component.deprecated } : {}),
15
16
  ...(props ? { props } : {}),
16
17
  ...(events ? { events } : {}),
17
18
  ...(slots ? { slots } : {}),
package/dist/meta.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generated": "2026-08-27T02:04:07.067Z",
3
+ "generated": "2026-08-27T20:08:17.213Z",
4
4
  "components": [
5
5
  {
6
6
  "tag": "quantic-alert",
@@ -279,19 +279,19 @@
279
279
  "<quantic-button variant=\"primary\"><quantic-icon-lucide-rocket size=\"xxs\"></quantic-icon-lucide-rocket> Launch</quantic-button>"
280
280
  ],
281
281
  "relatedTo": [
282
- "quantic-button-group",
282
+ "quantic-button-bar",
283
283
  "quantic-icon-label"
284
284
  ]
285
285
  },
286
286
  {
287
- "tag": "quantic-button-group",
288
- "description": "Toolbar container that groups multiple action buttons with joined borders and shared sizing. Use when two or more related actions should appear as a single cohesive control.",
287
+ "tag": "quantic-button-bar",
288
+ "description": "Toolbar of related buttons joined into one cohesive control, with shared sizing. Use for switching between views or modes, and for a compact run of icon actions. Items carry aria-pressed via active, so a set can behave as exclusive options or as independent toggles. Prefer quantic-button for a standalone action, and quantic-tabs when each segment reveals a panel.",
289
289
  "category": "action",
290
290
  "props": [
291
291
  {
292
292
  "name": "size",
293
293
  "description": "Size applied to all child items via context.",
294
- "type": "ButtonGroupSize",
294
+ "type": "ButtonBarSize",
295
295
  "options": [
296
296
  "sm",
297
297
  "md",
@@ -301,28 +301,96 @@
301
301
  },
302
302
  {
303
303
  "name": "ariaLabel",
304
- "description": "Accessible label for the toolbar role.",
304
+ "description": "Accessible label for the group.",
305
305
  "type": "string"
306
306
  }
307
307
  ],
308
308
  "slots": [
309
309
  {
310
310
  "name": "",
311
- "description": "One or more quantic-button-group-item elements."
311
+ "description": "One or more quantic-button-bar-item elements."
312
312
  }
313
313
  ],
314
314
  "examples": [
315
- "<quantic-button-group ><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item></quantic-button-group>",
316
- "<quantic-button-group>\n <quantic-button-group-item>Text</quantic-button-group-item>\n <quantic-button-group-item disabled>Disabled item</quantic-button-group-item>\n <quantic-button-group-item>Text</quantic-button-group-item>\n </quantic-button-group>",
317
- "<quantic-button-group size=\"lg\"><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item></quantic-button-group>",
318
- "<quantic-button-group ><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item></quantic-button-group>",
319
- "<quantic-button-group size=\"md\"><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item></quantic-button-group>",
320
- "<quantic-button-group size=\"sm\"><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item></quantic-button-group>",
321
- "<quantic-button-group ><quantic-button-group-item >Text</quantic-button-group-item><quantic-button-group-item active>Text</quantic-button-group-item><quantic-button-group-item >Text</quantic-button-group-item></quantic-button-group>",
322
- "<div style=\"display: flex; flex-direction: column; gap: 16px;\">\n <quantic-button-group size=\"md\">\n <quantic-button-group-item onclick=\"handleClick('Option 1')\">Option 1</quantic-button-group-item>\n <quantic-button-group-item onclick=\"handleClick('Option 2')\">Option 2</quantic-button-group-item>\n <quantic-button-group-item onclick=\"handleClick('Option 3')\">Option 3</quantic-button-group-item>\n </quantic-button-group>\n <quantic-card variant=\"solid\" size=\"sm\" id=\"output\">\n Click a button to see the event\n </quantic-card>\n </div>\n <script>\n function handleClick(option) {\n document.getElementById('output').textContent = option + ' clicked at ' + new Date().toLocaleTimeString();\n }\n </script>",
323
- "<quantic-button-group>\n <quantic-button-group-item>\n <quantic-icon-lucide-align-left size=\"xs\"></quantic-icon-lucide-align-left>\n </quantic-button-group-item>\n <quantic-button-group-item active>\n <quantic-icon-lucide-align-center size=\"xs\"></quantic-icon-lucide-align-center>\n </quantic-button-group-item>\n <quantic-button-group-item>\n <quantic-icon-lucide-align-right size=\"xs\"></quantic-icon-lucide-align-right>\n </quantic-button-group-item>\n </quantic-button-group>",
324
- "<quantic-button-group>\n <quantic-button-group-item>\n <quantic-icon-lucide-chevron-left size=\"xs\"></quantic-icon-lucide-chevron-left>\n </quantic-button-group-item>\n <quantic-button-group-item>\n Text\n </quantic-button-group-item>\n <quantic-button-group-item active>\n <quantic-icon-lucide-plus size=\"xs\"></quantic-icon-lucide-plus>\n </quantic-button-group-item>\n <quantic-button-group-item>\n <quantic-icon-lucide-chevron-right size=\"xs\"></quantic-icon-lucide-chevron-right>\n </quantic-button-group-item>\n </quantic-button-group>",
325
- "<quantic-button-group>\n <quantic-button-group-item>Short</quantic-button-group-item>\n <quantic-button-group-item>Text</quantic-button-group-item>\n <quantic-button-group-item>This is a very long button text that should be clamped with ellipsis</quantic-button-group-item>\n <quantic-button-group-item>Medium</quantic-button-group-item>\n <quantic-button-group-item>Text</quantic-button-group-item>\n </quantic-button-group>"
315
+ "<quantic-button-bar ><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item></quantic-button-bar>",
316
+ "<quantic-button-bar>\n <quantic-button-bar-item>Text</quantic-button-bar-item>\n <quantic-button-bar-item disabled>Disabled item</quantic-button-bar-item>\n <quantic-button-bar-item>Text</quantic-button-bar-item>\n </quantic-button-bar>",
317
+ "<quantic-button-bar size=\"lg\"><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item></quantic-button-bar>",
318
+ "<quantic-button-bar ><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item></quantic-button-bar>",
319
+ "<quantic-button-bar size=\"md\"><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item></quantic-button-bar>",
320
+ "<quantic-button-bar size=\"sm\"><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item></quantic-button-bar>",
321
+ "<quantic-button-bar ><quantic-button-bar-item >Text</quantic-button-bar-item><quantic-button-bar-item active>Text</quantic-button-bar-item><quantic-button-bar-item >Text</quantic-button-bar-item></quantic-button-bar>",
322
+ "<div style=\"display: flex; flex-direction: column; gap: 16px;\">\n <quantic-button-bar size=\"md\">\n <quantic-button-bar-item onclick=\"handleClick('Option 1')\">Option 1</quantic-button-bar-item>\n <quantic-button-bar-item onclick=\"handleClick('Option 2')\">Option 2</quantic-button-bar-item>\n <quantic-button-bar-item onclick=\"handleClick('Option 3')\">Option 3</quantic-button-bar-item>\n </quantic-button-bar>\n <quantic-card variant=\"solid\" size=\"sm\" id=\"output\">\n Click a button to see the event\n </quantic-card>\n </div>\n <script>\n function handleClick(option) {\n document.getElementById('output').textContent = option + ' clicked at ' + new Date().toLocaleTimeString();\n }\n </script>",
323
+ "<quantic-button-bar>\n <quantic-button-bar-item>\n <quantic-icon-lucide-align-left size=\"xs\"></quantic-icon-lucide-align-left>\n </quantic-button-bar-item>\n <quantic-button-bar-item active>\n <quantic-icon-lucide-align-center size=\"xs\"></quantic-icon-lucide-align-center>\n </quantic-button-bar-item>\n <quantic-button-bar-item>\n <quantic-icon-lucide-align-right size=\"xs\"></quantic-icon-lucide-align-right>\n </quantic-button-bar-item>\n </quantic-button-bar>",
324
+ "<quantic-button-bar>\n <quantic-button-bar-item>\n <quantic-icon-lucide-chevron-left size=\"xs\"></quantic-icon-lucide-chevron-left>\n </quantic-button-bar-item>\n <quantic-button-bar-item>\n Text\n </quantic-button-bar-item>\n <quantic-button-bar-item active>\n <quantic-icon-lucide-plus size=\"xs\"></quantic-icon-lucide-plus>\n </quantic-button-bar-item>\n <quantic-button-bar-item>\n <quantic-icon-lucide-chevron-right size=\"xs\"></quantic-icon-lucide-chevron-right>\n </quantic-button-bar-item>\n </quantic-button-bar>",
325
+ "<quantic-button-bar>\n <quantic-button-bar-item>Short</quantic-button-bar-item>\n <quantic-button-bar-item>Text</quantic-button-bar-item>\n <quantic-button-bar-item>This is a very long button text that should be clamped with ellipsis</quantic-button-bar-item>\n <quantic-button-bar-item>Medium</quantic-button-bar-item>\n <quantic-button-bar-item>Text</quantic-button-bar-item>\n </quantic-button-bar>"
326
+ ],
327
+ "relatedTo": [
328
+ "quantic-button"
329
+ ],
330
+ "subComponents": [
331
+ "quantic-button-bar-item"
332
+ ]
333
+ },
334
+ {
335
+ "tag": "quantic-button-bar-item",
336
+ "description": "Single segment within a quantic-button-bar. Renders as a native button with shared sizing from the parent context and a pressed state via active.",
337
+ "category": "action",
338
+ "props": [
339
+ {
340
+ "name": "disabled",
341
+ "description": "Prevents interaction and reduces opacity.",
342
+ "type": "boolean",
343
+ "default": "false"
344
+ },
345
+ {
346
+ "name": "active",
347
+ "description": "Marks this item as the currently selected/active option.",
348
+ "type": "boolean",
349
+ "default": "false"
350
+ }
351
+ ],
352
+ "slots": [
353
+ {
354
+ "name": "",
355
+ "description": "Button label or icon content."
356
+ }
357
+ ],
358
+ "relatedTo": [
359
+ "quantic-button-bar",
360
+ "quantic-button"
361
+ ]
362
+ },
363
+ {
364
+ "tag": "quantic-button-group",
365
+ "description": "Deprecated alias of quantic-button-bar. This element never grouped buttons: it joins borders and gives its items a pressed state. Use quantic-button-bar.",
366
+ "category": "action",
367
+ "deprecated": {
368
+ "use": "quantic-button-bar",
369
+ "reason": "The name describes a row of buttons, which this is not. Use quantic-action-group for that."
370
+ },
371
+ "props": [
372
+ {
373
+ "name": "size",
374
+ "description": "Size applied to all child items via context.",
375
+ "type": "ButtonBarSize",
376
+ "options": [
377
+ "sm",
378
+ "md",
379
+ "lg"
380
+ ],
381
+ "default": "md"
382
+ },
383
+ {
384
+ "name": "ariaLabel",
385
+ "description": "Accessible label for the group.",
386
+ "type": "string"
387
+ }
388
+ ],
389
+ "slots": [
390
+ {
391
+ "name": "",
392
+ "description": "One or more quantic-button-group-item elements."
393
+ }
326
394
  ],
327
395
  "relatedTo": [
328
396
  "quantic-button"
@@ -333,8 +401,11 @@
333
401
  },
334
402
  {
335
403
  "tag": "quantic-button-group-item",
336
- "description": "Individual button within a quantic-button-group. Renders as a native button with shared sizing from the parent group context and a toggle-style active state.",
404
+ "description": "Deprecated alias of quantic-button-bar-item. Use quantic-button-bar-item.",
337
405
  "category": "action",
406
+ "deprecated": {
407
+ "use": "quantic-button-bar-item"
408
+ },
338
409
  "props": [
339
410
  {
340
411
  "name": "disabled",
@@ -356,8 +427,7 @@
356
427
  }
357
428
  ],
358
429
  "relatedTo": [
359
- "quantic-button-group",
360
- "quantic-button"
430
+ "quantic-button-group"
361
431
  ]
362
432
  },
363
433
  {
@@ -2844,7 +2914,7 @@
2844
2914
  "<div style=\"display: flex; flex-direction: column; gap: 16px;\">\n <quantic-pagination\n size=\"md\"\n current-page=\"5\"\n total-pages=\"10\"\n max-displayed-pages=\"3\"\n id=\"pagination\"\n ></quantic-pagination>\n <quantic-card variant=\"solid\" size=\"sm\" id=\"output\">\n Click a page to see the event\n </quantic-card>\n </div>\n <script>\n (() => {\n const pagination = document.getElementById('pagination');\n const output = document.getElementById('output');\n\n pagination.addEventListener('page-change', (event) => {\n const page = event.detail.page;\n output.textContent = 'Page changed to: ' + page + ' at ' + new Date().toLocaleTimeString();\n pagination.setAttribute('current-page', page);\n });\n })();\n </script>"
2845
2915
  ],
2846
2916
  "relatedTo": [
2847
- "quantic-button-group"
2917
+ "quantic-button-bar"
2848
2918
  ]
2849
2919
  },
2850
2920
  {
@@ -8,16 +8,16 @@ import { css, html } from 'lit';
8
8
  import { QuanticElement, quanticElement } from '../shared/quantic-element';
9
9
  import { provide } from '@lit/context';
10
10
  import { PaginationSize } from './index.constants';
11
- import { sizeContext } from '../button-group/index.context';
11
+ import { sizeContext } from '../button-bar/index.context';
12
12
  import { getPageNumbers } from './pagination.utils';
13
- import { ButtonGroup, ButtonGroupItem } from '../button-group';
13
+ import { ButtonBar, ButtonBarItem } from '../button-bar';
14
14
  import { LucideIconArrowLeft } from '../icon/__generated__/lucide/arrow-left';
15
15
  import { LucideIconArrowRight } from '../icon/__generated__/lucide/arrow-right';
16
16
  import { event, prop } from '../shared/component-meta.decorators';
17
17
  LucideIconArrowLeft.ensureDefined();
18
18
  LucideIconArrowRight.ensureDefined();
19
- ButtonGroup.ensureDefined();
20
- ButtonGroupItem.ensureDefined();
19
+ ButtonBar.ensureDefined();
20
+ ButtonBarItem.ensureDefined();
21
21
  let Pagination = class Pagination extends QuanticElement {
22
22
  constructor() {
23
23
  super(...arguments);
@@ -48,8 +48,8 @@ let Pagination = class Pagination extends QuanticElement {
48
48
  const pageNumbers = getPageNumbers(this.currentPage, this.totalPages, this.maxDisplayedPages);
49
49
  return html `
50
50
  <nav role="navigation" aria-label="Pagination">
51
- <quantic-button-group size=${this.size}>
52
- <quantic-button-group-item
51
+ <quantic-button-bar size=${this.size}>
52
+ <quantic-button-bar-item
53
53
  ?disabled=${isPrevDisabled}
54
54
  @click=${this._handlePrevious}
55
55
  aria-label="Go to previous page"
@@ -58,26 +58,26 @@ let Pagination = class Pagination extends QuanticElement {
58
58
  size="xs"
59
59
  class="icon"
60
60
  ></quantic-icon-lucide-arrow-left>
61
- </quantic-button-group-item>
61
+ </quantic-button-bar-item>
62
62
 
63
63
  ${pageNumbers.map((page) => page === 'ellipsis'
64
64
  ? html `
65
- <quantic-button-group-item disabled>
65
+ <quantic-button-bar-item disabled>
66
66
  ...
67
- </quantic-button-group-item>
67
+ </quantic-button-bar-item>
68
68
  `
69
69
  : html `
70
- <quantic-button-group-item
70
+ <quantic-button-bar-item
71
71
  ?active=${page === this.currentPage}
72
72
  @click=${() => this._handlePageChange(page)}
73
73
  aria-label="Go to page ${page}"
74
74
  aria-current=${page === this.currentPage ? 'page' : 'false'}
75
75
  >
76
76
  ${page}
77
- </quantic-button-group-item>
77
+ </quantic-button-bar-item>
78
78
  `)}
79
79
 
80
- <quantic-button-group-item
80
+ <quantic-button-bar-item
81
81
  ?disabled=${isNextDisabled}
82
82
  @click=${this._handleNext}
83
83
  aria-label="Go to next page"
@@ -86,8 +86,8 @@ let Pagination = class Pagination extends QuanticElement {
86
86
  size="xs"
87
87
  class="icon"
88
88
  ></quantic-icon-lucide-arrow-right>
89
- </quantic-button-group-item>
90
- </quantic-button-group>
89
+ </quantic-button-bar-item>
90
+ </quantic-button-bar>
91
91
  </nav>
92
92
  `;
93
93
  }
@@ -97,7 +97,7 @@ Pagination.meta = {
97
97
  description: 'Page navigation control with previous/next and numbered page buttons. ' +
98
98
  'Emits page-change events; the host is responsible for updating currentPage.',
99
99
  category: 'navigation',
100
- relatedTo: ['quantic-button-group'],
100
+ relatedTo: ['quantic-button-bar'],
101
101
  };
102
102
  Pagination.styles = css `
103
103
  .icon {