@brightspot/ui 1.5.0 → 1.7.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 (105) hide show
  1. package/dist/components/dropdown/Dropdown.d.ts +172 -0
  2. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  3. package/dist/components/dropdown/Dropdown.js +407 -0
  4. package/dist/components/dropdown/Dropdown.js.map +1 -0
  5. package/dist/components/dropdown/DropdownItem.d.ts +108 -0
  6. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -0
  7. package/dist/components/dropdown/DropdownItem.js +210 -0
  8. package/dist/components/dropdown/DropdownItem.js.map +1 -0
  9. package/dist/components/dropdown/DropdownMenu.d.ts +117 -0
  10. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -0
  11. package/dist/components/dropdown/DropdownMenu.js +295 -0
  12. package/dist/components/dropdown/DropdownMenu.js.map +1 -0
  13. package/dist/components/pagination/Pagination.d.ts +109 -0
  14. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  15. package/dist/components/pagination/Pagination.js +351 -0
  16. package/dist/components/pagination/Pagination.js.map +1 -0
  17. package/dist/custom-elements.json +1642 -182
  18. package/dist/storybook/assets/Avatar.stories-BAaSlDF7.js +213 -0
  19. package/dist/storybook/assets/AvatarGroup.stories-CgoDB4N4.js +225 -0
  20. package/dist/storybook/assets/{Badge.stories-Bbnc6fRy.js → Badge.stories-uexxdmo6.js} +3 -3
  21. package/dist/storybook/assets/{Button.stories-CRJ5n2y4.js → Button.stories-T9UJUPHI.js} +1 -1
  22. package/dist/storybook/assets/{CircularProgress.stories-D9vBj3JJ.js → CircularProgress.stories-DW-VJA5j.js} +6 -6
  23. package/dist/storybook/assets/{ClipboardMixin.stories-Dm-Jm4yb.js → ClipboardMixin.stories-DzU4vxu5.js} +1 -1
  24. package/dist/storybook/assets/{Color-6BZIO3FS-BcNIJY1U.js → Color-6BZIO3FS-DRk2xjoN.js} +1 -1
  25. package/dist/storybook/assets/{Colors.stories-B9_090wL.js → Colors.stories-_UPdvuhY.js} +1 -1
  26. package/dist/storybook/assets/{ComponentStatesMixin-ChiFBCuo.js → ComponentStatesMixin-BIu5SKeV.js} +1 -1
  27. package/dist/storybook/assets/{ComponentStatesMixin.stories-DHv9MHmE.js → ComponentStatesMixin.stories-C0FLaqLu.js} +1 -1
  28. package/dist/storybook/assets/{CopyToClipboard.stories-gtJlTP1l.js → CopyToClipboard.stories-D31zoUVI.js} +1 -1
  29. package/dist/storybook/assets/{Debounce.stories-BBNX7mJA.js → Debounce.stories-CgPPl5Ee.js} +1 -1
  30. package/dist/storybook/assets/{DocsRenderer-LL677BLK-D-E99pXl.js → DocsRenderer-LL677BLK-iwiwOzX9.js} +6 -6
  31. package/dist/storybook/assets/Dropdown.stories-CDcl6rmG.js +697 -0
  32. package/dist/storybook/assets/{Events.stories-DDmydlh_.js → Events.stories-DS6UC9dZ.js} +1 -1
  33. package/dist/storybook/assets/{Heading.stories-BLGfko-i.js → Heading.stories-CAQfEGE2.js} +1 -1
  34. package/dist/storybook/assets/{Icon.stories-BHnAGcFF.js → Icon.stories-C7msWlHs.js} +11 -11
  35. package/dist/storybook/assets/{LinearProgress.stories-Dx26a0P_.js → LinearProgress.stories-DBGJ5a2-.js} +7 -7
  36. package/dist/storybook/assets/Pagination.stories-C58bGOdf.js +272 -0
  37. package/dist/storybook/assets/{Popover.stories-CbqpY6YR.js → Popover.stories-C9zU0sEX.js} +5 -5
  38. package/dist/storybook/assets/{ReadyMixin-BHiHoIbr.js → ReadyMixin-qf8SAjMu.js} +1 -1
  39. package/dist/storybook/assets/{Rtc.stories-CAjDv_Ub.js → Rtc.stories-k9tKHNhD.js} +1 -1
  40. package/dist/storybook/assets/{ScrollShadow.stories-BSV4U-tq.js → ScrollShadow.stories-Bp42zyLH.js} +1 -1
  41. package/dist/storybook/assets/{Throttle.stories-kaxXQ8RZ.js → Throttle.stories-B5YU-Nms.js} +1 -1
  42. package/dist/storybook/assets/Tooltip.stories-COQcvOnL.js +143 -0
  43. package/dist/storybook/assets/{Widget.stories-DqATHnSq.js → Widget.stories-D3Sq5-_A.js} +13 -13
  44. package/dist/storybook/assets/{WithTooltip-65CFNBJE-BtbbFYSA.js → WithTooltip-65CFNBJE-Cox81aM_.js} +1 -1
  45. package/dist/storybook/assets/{formatter-EIJCOSYU-C87Csnpu.js → formatter-EIJCOSYU-3ErcoV9q.js} +1 -1
  46. package/dist/storybook/assets/if-defined-Bv2_qPJg.js +1 -0
  47. package/dist/storybook/assets/{iframe-CcloOV09.js → iframe-CM6gBkqA.js} +170 -170
  48. package/dist/storybook/assets/iframe-D3r2Ciu8.css +1 -0
  49. package/dist/storybook/assets/{index-DP7vnJf7.js → index-iwfnMgqg.js} +1 -1
  50. package/dist/storybook/assets/{onFind.stories-BxvoC-Z-.js → onFind.stories-CDtoTN6S.js} +1 -1
  51. package/dist/storybook/assets/{onRemove.stories-Dwoixzb0.js → onRemove.stories-CSTeFCLU.js} +1 -1
  52. package/dist/storybook/assets/{onVisible.stories-CinmRF9w.js → onVisible.stories-C-yiw9n4.js} +1 -1
  53. package/dist/storybook/assets/style-map-BJGdSb_D.js +1 -0
  54. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-BHLkDkOn.js → syntaxhighlighter-ED5Y7EFY-BEudYlVi.js} +1 -1
  55. package/dist/storybook/iframe.html +2 -2
  56. package/dist/storybook/index.json +1 -1
  57. package/dist/storybook/project.json +1 -1
  58. package/dist/tailwind-plugin-button.js +10 -0
  59. package/dist/tailwind-plugin-button.js.map +1 -1
  60. package/dist/tailwind-plugin-button.ts +10 -0
  61. package/dist/tailwind-plugin-dropdown.d.ts +2 -0
  62. package/dist/tailwind-plugin-dropdown.d.ts.map +1 -0
  63. package/dist/tailwind-plugin-dropdown.js +223 -0
  64. package/dist/tailwind-plugin-dropdown.js.map +1 -0
  65. package/dist/tailwind-plugin-dropdown.ts +249 -0
  66. package/dist/tailwind-plugin-pagination.d.ts +2 -0
  67. package/dist/tailwind-plugin-pagination.d.ts.map +1 -0
  68. package/dist/tailwind-plugin-pagination.js +164 -0
  69. package/dist/tailwind-plugin-pagination.js.map +1 -0
  70. package/dist/tailwind-plugin-pagination.ts +179 -0
  71. package/dist/tailwind.config.d.ts +1 -4
  72. package/dist/tailwind.config.d.ts.map +1 -1
  73. package/dist/tailwind.config.js +1 -0
  74. package/dist/tailwind.config.js.map +1 -1
  75. package/dist/tailwind.config.ts +1 -0
  76. package/dist/util/EventEmitterMixin.d.ts +22 -0
  77. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  78. package/dist/util/EventEmitterMixin.js.map +1 -1
  79. package/dist/util/aria.d.ts.map +1 -1
  80. package/dist/util/aria.js +2 -1
  81. package/dist/util/aria.js.map +1 -1
  82. package/dist/util/i18n.d.ts +13 -0
  83. package/dist/util/i18n.d.ts.map +1 -0
  84. package/dist/util/i18n.js +21 -0
  85. package/dist/util/i18n.js.map +1 -0
  86. package/docs/components/Avatar.md +62 -0
  87. package/docs/components/AvatarGroup.md +52 -0
  88. package/docs/components/Badge.md +58 -0
  89. package/docs/components/CircularProgress.md +55 -0
  90. package/docs/components/CopyToClipboard.md +54 -0
  91. package/docs/components/Dropdown.md +100 -0
  92. package/docs/components/DropdownItem.md +64 -0
  93. package/docs/components/DropdownMenu.md +81 -0
  94. package/docs/components/Icon.md +61 -0
  95. package/docs/components/LinearProgress.md +40 -0
  96. package/docs/components/Pagination.md +95 -0
  97. package/docs/components/Popover.md +71 -0
  98. package/docs/components/README.md +24 -0
  99. package/docs/components/Widget.md +79 -0
  100. package/package.json +4 -3
  101. package/dist/storybook/assets/Avatar.stories-CPVNxsaA.js +0 -214
  102. package/dist/storybook/assets/AvatarGroup.stories-Bl65NGHl.js +0 -225
  103. package/dist/storybook/assets/Tooltip.stories-CsxXkztr.js +0 -143
  104. package/dist/storybook/assets/if-defined-COHr0XBn.js +0 -1
  105. package/dist/storybook/assets/iframe-BkDGeDre.css +0 -1
@@ -295,45 +295,67 @@
295
295
  },
296
296
  {
297
297
  "kind": "javascript-module",
298
- "path": "src/components/circular-progress/CircularProgress.ts",
298
+ "path": "src/components/badge/Badge.ts",
299
299
  "declarations": [
300
300
  {
301
301
  "kind": "class",
302
- "description": "A circular progress indicator for showing loading states or progress.",
303
- "name": "CircularProgress",
302
+ "description": "A badge component for highlighting important information.\n\nBadges help highlight notifications, status, or new messages.\nPrimarily used for communicating secondary or additional information.",
303
+ "name": "Badge",
304
304
  "cssProperties": [
305
305
  {
306
- "description": "Custom progress indicator color (overrides theme color)",
307
- "name": "--progress-color"
306
+ "description": "Text color (overrides theme color)",
307
+ "name": "--badge-color-foreground"
308
308
  },
309
309
  {
310
- "description": "Track/background color (overrides default gray-100)",
311
- "name": "--track-color"
310
+ "description": "Background color (overrides theme color)",
311
+ "name": "--badge-color-background"
312
312
  },
313
313
  {
314
- "description": "Custom size in pixels (overrides size preset)",
315
- "name": "--progress-size"
314
+ "description": "Border radius size (overrides shape default, default: 999px)",
315
+ "name": "--badge-radius-size"
316
+ },
317
+ {
318
+ "description": "Horizontal padding (overrides size default)",
319
+ "name": "--badge-px"
320
+ },
321
+ {
322
+ "description": "Vertical padding (overrides size default)",
323
+ "name": "--badge-py"
324
+ },
325
+ {
326
+ "description": "Size of the dot affordance (default: 6px)",
327
+ "name": "--badge-dot-size"
316
328
  }
317
329
  ],
318
330
  "members": [
319
331
  {
320
332
  "kind": "field",
321
- "name": "indeterminate",
333
+ "name": "variant",
334
+ "type": {
335
+ "text": "'info' | 'primary' | 'error' | 'success' | 'warning'"
336
+ },
337
+ "default": "'info'",
338
+ "description": "Style of the badge.\n- 'info': Informational (default)\n- 'primary': Primary action or emphasis\n- 'error': Error or danger state\n- 'success': Success or completion state\n- 'warning': Warning or caution state",
339
+ "attribute": "variant"
340
+ },
341
+ {
342
+ "kind": "field",
343
+ "name": "dot",
322
344
  "type": {
323
345
  "text": "boolean"
324
346
  },
325
- "default": "true",
326
- "description": "Whether the progress indicator is indeterminate (animated spinner).\nWhen false, shows determinate progress based on the progress value.",
327
- "attribute": "indeterminate"
347
+ "default": "false",
348
+ "description": "Should a dot be displayed before the label?",
349
+ "attribute": "dot"
328
350
  },
329
351
  {
330
352
  "kind": "field",
331
353
  "name": "size",
332
354
  "type": {
333
- "text": "'sm' | 'md' | 'lg'"
355
+ "text": "string"
334
356
  },
335
357
  "default": "'sm'",
336
- "description": "Size variant.\n- 'sm': Small (16px) - default\n- 'md': Medium (32px)\n- 'lg': Large (48px)",
358
+ "description": "Size variant.\n- 'sm': Small (default)\n- 'md': Medium\n- 'lg': Large",
337
359
  "attribute": "size"
338
360
  }
339
361
  ],
@@ -343,43 +365,42 @@
343
365
  "text": "CustomEvent"
344
366
  },
345
367
  "description": "Fired after first render and initialization",
346
- "name": "btu-progress-ready"
347
- },
348
- {
349
- "type": {
350
- "text": "CustomEvent"
351
- },
352
- "description": "Fired when determinate progress reaches 100",
353
- "name": "btu-progress-complete"
368
+ "name": "btu-badge-ready"
354
369
  }
355
370
  ],
356
371
  "attributes": [
357
372
  {
358
- "name": "indeterminate",
373
+ "name": "variant",
374
+ "type": {
375
+ "text": "'info' | 'primary' | 'error' | 'success' | 'warning'"
376
+ },
377
+ "default": "'info'",
378
+ "description": "Style of the badge.\n- 'info': Informational (default)\n- 'primary': Primary action or emphasis\n- 'error': Error or danger state\n- 'success': Success or completion state\n- 'warning': Warning or caution state",
379
+ "fieldName": "variant",
380
+ "attribute": "variant"
381
+ },
382
+ {
383
+ "name": "dot",
359
384
  "type": {
360
385
  "text": "boolean"
361
386
  },
362
- "default": "true",
363
- "description": "Whether the progress indicator is indeterminate (animated spinner).\nWhen false, shows determinate progress based on the progress value.",
364
- "fieldName": "indeterminate",
365
- "attribute": "indeterminate"
387
+ "default": "false",
388
+ "description": "Should a dot be displayed before the label?",
389
+ "fieldName": "dot",
390
+ "attribute": "dot"
366
391
  },
367
392
  {
368
393
  "name": "size",
369
394
  "type": {
370
- "text": "'sm' | 'md' | 'lg'"
395
+ "text": "string"
371
396
  },
372
397
  "default": "'sm'",
373
- "description": "Size variant.\n- 'sm': Small (16px) - default\n- 'md': Medium (32px)\n- 'lg': Large (48px)",
398
+ "description": "Size variant.\n- 'sm': Small (default)\n- 'md': Medium\n- 'lg': Large",
374
399
  "fieldName": "size",
375
400
  "attribute": "size"
376
401
  }
377
402
  ],
378
403
  "mixins": [
379
- {
380
- "name": "ProgressMixin",
381
- "module": "/src/util/ProgressMixin.js"
382
- },
383
404
  {
384
405
  "name": "EventEmitterMixin",
385
406
  "module": "/src/util/EventEmitterMixin.js"
@@ -393,7 +414,7 @@
393
414
  "name": "LitElement",
394
415
  "package": "lit"
395
416
  },
396
- "tagName": "btu-circular-progress",
417
+ "tagName": "btu-badge",
397
418
  "customElement": true
398
419
  }
399
420
  ],
@@ -402,83 +423,61 @@
402
423
  "kind": "js",
403
424
  "name": "default",
404
425
  "declaration": {
405
- "name": "CircularProgress",
406
- "module": "src/components/circular-progress/CircularProgress.ts"
426
+ "name": "Badge",
427
+ "module": "src/components/badge/Badge.ts"
407
428
  }
408
429
  },
409
430
  {
410
431
  "kind": "custom-element-definition",
411
- "name": "btu-circular-progress",
432
+ "name": "btu-badge",
412
433
  "declaration": {
413
- "name": "CircularProgress",
414
- "module": "src/components/circular-progress/CircularProgress.ts"
434
+ "name": "Badge",
435
+ "module": "src/components/badge/Badge.ts"
415
436
  }
416
437
  }
417
438
  ]
418
439
  },
419
440
  {
420
441
  "kind": "javascript-module",
421
- "path": "src/components/badge/Badge.ts",
442
+ "path": "src/components/circular-progress/CircularProgress.ts",
422
443
  "declarations": [
423
444
  {
424
445
  "kind": "class",
425
- "description": "A badge component for highlighting important information.\n\nBadges help highlight notifications, status, or new messages.\nPrimarily used for communicating secondary or additional information.",
426
- "name": "Badge",
446
+ "description": "A circular progress indicator for showing loading states or progress.",
447
+ "name": "CircularProgress",
427
448
  "cssProperties": [
428
449
  {
429
- "description": "Text color (overrides theme color)",
430
- "name": "--badge-color-foreground"
431
- },
432
- {
433
- "description": "Background color (overrides theme color)",
434
- "name": "--badge-color-background"
435
- },
436
- {
437
- "description": "Border radius size (overrides shape default, default: 999px)",
438
- "name": "--badge-radius-size"
439
- },
440
- {
441
- "description": "Horizontal padding (overrides size default)",
442
- "name": "--badge-px"
450
+ "description": "Custom progress indicator color (overrides theme color)",
451
+ "name": "--progress-color"
443
452
  },
444
453
  {
445
- "description": "Vertical padding (overrides size default)",
446
- "name": "--badge-py"
454
+ "description": "Track/background color (overrides default gray-100)",
455
+ "name": "--track-color"
447
456
  },
448
457
  {
449
- "description": "Size of the dot affordance (default: 6px)",
450
- "name": "--badge-dot-size"
458
+ "description": "Custom size in pixels (overrides size preset)",
459
+ "name": "--progress-size"
451
460
  }
452
461
  ],
453
462
  "members": [
454
463
  {
455
464
  "kind": "field",
456
- "name": "variant",
457
- "type": {
458
- "text": "'info' | 'primary' | 'error' | 'success' | 'warning'"
459
- },
460
- "default": "'info'",
461
- "description": "Style of the badge.\n- 'info': Informational (default)\n- 'primary': Primary action or emphasis\n- 'error': Error or danger state\n- 'success': Success or completion state\n- 'warning': Warning or caution state",
462
- "attribute": "variant"
463
- },
464
- {
465
- "kind": "field",
466
- "name": "dot",
465
+ "name": "indeterminate",
467
466
  "type": {
468
467
  "text": "boolean"
469
468
  },
470
- "default": "false",
471
- "description": "Should a dot be displayed before the label?",
472
- "attribute": "dot"
469
+ "default": "true",
470
+ "description": "Whether the progress indicator is indeterminate (animated spinner).\nWhen false, shows determinate progress based on the progress value.",
471
+ "attribute": "indeterminate"
473
472
  },
474
473
  {
475
474
  "kind": "field",
476
475
  "name": "size",
477
476
  "type": {
478
- "text": "string"
477
+ "text": "'sm' | 'md' | 'lg'"
479
478
  },
480
479
  "default": "'sm'",
481
- "description": "Size variant.\n- 'sm': Small (default)\n- 'md': Medium\n- 'lg': Large",
480
+ "description": "Size variant.\n- 'sm': Small (16px) - default\n- 'md': Medium (32px)\n- 'lg': Large (48px)",
482
481
  "attribute": "size"
483
482
  }
484
483
  ],
@@ -488,42 +487,43 @@
488
487
  "text": "CustomEvent"
489
488
  },
490
489
  "description": "Fired after first render and initialization",
491
- "name": "btu-badge-ready"
492
- }
493
- ],
494
- "attributes": [
490
+ "name": "btu-progress-ready"
491
+ },
495
492
  {
496
- "name": "variant",
497
493
  "type": {
498
- "text": "'info' | 'primary' | 'error' | 'success' | 'warning'"
494
+ "text": "CustomEvent"
499
495
  },
500
- "default": "'info'",
501
- "description": "Style of the badge.\n- 'info': Informational (default)\n- 'primary': Primary action or emphasis\n- 'error': Error or danger state\n- 'success': Success or completion state\n- 'warning': Warning or caution state",
502
- "fieldName": "variant",
503
- "attribute": "variant"
504
- },
496
+ "description": "Fired when determinate progress reaches 100",
497
+ "name": "btu-progress-complete"
498
+ }
499
+ ],
500
+ "attributes": [
505
501
  {
506
- "name": "dot",
502
+ "name": "indeterminate",
507
503
  "type": {
508
504
  "text": "boolean"
509
505
  },
510
- "default": "false",
511
- "description": "Should a dot be displayed before the label?",
512
- "fieldName": "dot",
513
- "attribute": "dot"
506
+ "default": "true",
507
+ "description": "Whether the progress indicator is indeterminate (animated spinner).\nWhen false, shows determinate progress based on the progress value.",
508
+ "fieldName": "indeterminate",
509
+ "attribute": "indeterminate"
514
510
  },
515
511
  {
516
512
  "name": "size",
517
513
  "type": {
518
- "text": "string"
514
+ "text": "'sm' | 'md' | 'lg'"
519
515
  },
520
516
  "default": "'sm'",
521
- "description": "Size variant.\n- 'sm': Small (default)\n- 'md': Medium\n- 'lg': Large",
517
+ "description": "Size variant.\n- 'sm': Small (16px) - default\n- 'md': Medium (32px)\n- 'lg': Large (48px)",
522
518
  "fieldName": "size",
523
519
  "attribute": "size"
524
520
  }
525
521
  ],
526
522
  "mixins": [
523
+ {
524
+ "name": "ProgressMixin",
525
+ "module": "/src/util/ProgressMixin.js"
526
+ },
527
527
  {
528
528
  "name": "EventEmitterMixin",
529
529
  "module": "/src/util/EventEmitterMixin.js"
@@ -537,7 +537,7 @@
537
537
  "name": "LitElement",
538
538
  "package": "lit"
539
539
  },
540
- "tagName": "btu-badge",
540
+ "tagName": "btu-circular-progress",
541
541
  "customElement": true
542
542
  }
543
543
  ],
@@ -546,16 +546,16 @@
546
546
  "kind": "js",
547
547
  "name": "default",
548
548
  "declaration": {
549
- "name": "Badge",
550
- "module": "src/components/badge/Badge.ts"
549
+ "name": "CircularProgress",
550
+ "module": "src/components/circular-progress/CircularProgress.ts"
551
551
  }
552
552
  },
553
553
  {
554
554
  "kind": "custom-element-definition",
555
- "name": "btu-badge",
555
+ "name": "btu-circular-progress",
556
556
  "declaration": {
557
- "name": "Badge",
558
- "module": "src/components/badge/Badge.ts"
557
+ "name": "CircularProgress",
558
+ "module": "src/components/circular-progress/CircularProgress.ts"
559
559
  }
560
560
  }
561
561
  ]
@@ -676,61 +676,218 @@
676
676
  },
677
677
  {
678
678
  "kind": "javascript-module",
679
- "path": "src/components/icon/Icon.ts",
679
+ "path": "src/components/dropdown/Dropdown.ts",
680
680
  "declarations": [
681
681
  {
682
682
  "kind": "class",
683
- "description": "An icon component for displaying Lucide icons.\n\nIcons inherit parent text color by default or can use gradient fills.\nAll icons are from the Lucide icon library (https://lucide.dev/icons/).\nSupports both direct SVG rendering and mask-based gradient fills.",
684
- "name": "Icon",
683
+ "description": "A dropdown component that renders a trigger button and manages a floating panel\ncontaining a `btu-dropdown-menu`.\n\nUses the native Popover API and CSS anchor positioning for panel management.\nThe trigger button is built with existing `btu-button-*` classes.\n\n**Trigger button styling:** Set `--button-*` CSS custom properties on `<btu-dropdown>`\nor a parent element to customize the trigger via CSS inheritance (e.g.,\n`--button-border-radius`, `--button-color-background`). See\n`tailwind-plugin-button.ts` for available props.",
684
+ "name": "Dropdown",
685
685
  "cssProperties": [
686
686
  {
687
- "description": "Icon size (overrides size default)",
688
- "name": "--Icon-size"
687
+ "description": "Panel background color (default: white)",
688
+ "name": "--dropdown-panel-background"
689
689
  },
690
690
  {
691
- "description": "Icon fill color for filled icons (e.g., \"currentColor\")",
692
- "name": "--Icon-fill"
691
+ "description": "Panel border color (default: gray-200)",
692
+ "name": "--dropdown-panel-border-color"
693
693
  },
694
694
  {
695
- "description": "SVG data URI for mask-based rendering",
696
- "name": "--Icon-svg"
695
+ "description": "Panel border radius (default: borderRadius.lg)",
696
+ "name": "--dropdown-panel-border-radius"
697
+ },
698
+ {
699
+ "description": "Panel minimum width (default: max(12rem, anchor-size(width)))",
700
+ "name": "--dropdown-panel-min-width"
701
+ },
702
+ {
703
+ "description": "Item background color (default: transparent)",
704
+ "name": "--dropdown-item-background"
705
+ },
706
+ {
707
+ "description": "Item text color (default: gray-700)",
708
+ "name": "--dropdown-item-color"
709
+ },
710
+ {
711
+ "description": "Item hover background (default: gray-100)",
712
+ "name": "--dropdown-item-hover-background"
713
+ },
714
+ {
715
+ "description": "Item hover text color (default: gray-900)",
716
+ "name": "--dropdown-item-hover-color"
717
+ },
718
+ {
719
+ "description": "Selected item background (default: primary-50)",
720
+ "name": "--dropdown-item-selected-background"
721
+ },
722
+ {
723
+ "description": "Selected item text color (default: primary-700)",
724
+ "name": "--dropdown-item-selected-color"
725
+ },
726
+ {
727
+ "description": "Item font size (default: fontSize.sm)",
728
+ "name": "--dropdown-item-font-size"
729
+ },
730
+ {
731
+ "description": "Divider line color (default: gray-200)",
732
+ "name": "--dropdown-divider-color"
733
+ },
734
+ {
735
+ "description": "Empty state text color (default: gray-400)",
736
+ "name": "--dropdown-empty-color"
737
+ }
738
+ ],
739
+ "slots": [
740
+ {
741
+ "description": "A `btu-dropdown-menu` element containing `btu-dropdown-item` children",
742
+ "name": ""
697
743
  }
698
744
  ],
699
745
  "members": [
700
746
  {
701
747
  "kind": "field",
702
- "name": "tagName",
703
- "static": true,
704
- "readonly": true
748
+ "name": "label",
749
+ "type": {
750
+ "text": "string"
751
+ },
752
+ "default": "''",
753
+ "description": "Trigger button text.",
754
+ "attribute": "label"
705
755
  },
706
756
  {
707
757
  "kind": "field",
708
- "name": "size",
758
+ "name": "open",
709
759
  "type": {
710
- "text": "'xs' | 'sm' | 'md' | 'lg' | 'xl'"
760
+ "text": "boolean"
711
761
  },
712
- "default": "'md'",
713
- "description": "Size of the icon.\n- 'xs': Extra small (0.75rem)\n- 'sm': Small (1rem)\n- 'md': Medium (1.25rem, default)\n- 'lg': Large (1.5rem)\n- 'xl': Extra large (1.75rem)",
714
- "attribute": "size"
762
+ "default": "false",
763
+ "description": "Panel visibility state. Can be set programmatically (e.g., for tour UIs)\n syncs to `showPopover()`/`hidePopover()` in `updated()`.",
764
+ "attribute": "open",
765
+ "reflects": true
715
766
  },
716
767
  {
717
768
  "kind": "field",
718
- "name": "symbol",
769
+ "name": "placement",
719
770
  "type": {
720
- "text": "string"
771
+ "text": "Placement"
721
772
  },
722
- "default": "'circle-dashed'",
723
- "description": "Lucide icon name to display.\nSee https://lucide.dev/icons/ for available icons.",
724
- "attribute": "symbol"
773
+ "default": "'bottom-start'",
774
+ "description": "Panel placement: 'bottom-start', 'bottom-end', 'top-start', 'top-end'.",
775
+ "attribute": "placement"
725
776
  },
726
777
  {
727
778
  "kind": "field",
728
- "name": "gradient",
779
+ "name": "size",
729
780
  "type": {
730
- "text": "'ai' | 'error' | 'gray' | 'primary' | 'purple' | 'rose' | 'success' | 'teal' | 'warning' | undefined"
781
+ "text": "Size"
731
782
  },
732
- "description": "Theme color to use for gradient fill.\nWhen set, icon displays with gradient. When undefined, icon inherits parent text color.",
733
- "attribute": "gradient"
783
+ "default": "'medium'",
784
+ "description": "Button size: 'small', 'medium', 'large'.",
785
+ "attribute": "size"
786
+ },
787
+ {
788
+ "kind": "field",
789
+ "name": "disabled",
790
+ "type": {
791
+ "text": "boolean"
792
+ },
793
+ "default": "false",
794
+ "description": "Prevents opening.",
795
+ "attribute": "disabled",
796
+ "reflects": true
797
+ },
798
+ {
799
+ "kind": "field",
800
+ "name": "variant",
801
+ "type": {
802
+ "text": "Variant"
803
+ },
804
+ "default": "'secondary'",
805
+ "description": "Button variant: 'primary', 'secondary', 'tertiary', 'primary-clear', 'secondary-clear', 'tertiary-clear'.",
806
+ "attribute": "variant"
807
+ },
808
+ {
809
+ "kind": "field",
810
+ "name": "iconSymbol",
811
+ "type": {
812
+ "text": "string"
813
+ },
814
+ "default": "''",
815
+ "description": "Lucide icon symbol for the trigger.",
816
+ "attribute": "icon-symbol"
817
+ },
818
+ {
819
+ "kind": "field",
820
+ "name": "iconPosition",
821
+ "type": {
822
+ "text": "'leading' | 'trailing'"
823
+ },
824
+ "default": "'leading'",
825
+ "description": "Icon position: 'leading' or 'trailing'.",
826
+ "attribute": "icon-position"
827
+ },
828
+ {
829
+ "kind": "field",
830
+ "name": "iconOnly",
831
+ "type": {
832
+ "text": "boolean"
833
+ },
834
+ "default": "false",
835
+ "description": "Hides label, shows icon only.",
836
+ "attribute": "icon-only"
837
+ },
838
+ {
839
+ "kind": "field",
840
+ "name": "stayOpenOnSelect",
841
+ "type": {
842
+ "text": "boolean"
843
+ },
844
+ "default": "false",
845
+ "description": "Keeps panel open on item click.",
846
+ "attribute": "stay-open-on-select"
847
+ },
848
+ {
849
+ "kind": "field",
850
+ "name": "noChevron",
851
+ "type": {
852
+ "text": "boolean"
853
+ },
854
+ "default": "false",
855
+ "description": "Hides the chevron icon on the trigger button.",
856
+ "attribute": "no-chevron",
857
+ "reflects": true
858
+ },
859
+ {
860
+ "kind": "method",
861
+ "name": "_getButtonClasses",
862
+ "privacy": "private",
863
+ "return": {
864
+ "type": {
865
+ "text": "string"
866
+ }
867
+ },
868
+ "description": "Build the button class string based on variant and size"
869
+ },
870
+ {
871
+ "kind": "method",
872
+ "name": "_showPanel",
873
+ "privacy": "private",
874
+ "return": {
875
+ "type": {
876
+ "text": "void"
877
+ }
878
+ },
879
+ "description": "Show the dropdown panel"
880
+ },
881
+ {
882
+ "kind": "method",
883
+ "name": "_hidePanel",
884
+ "privacy": "private",
885
+ "return": {
886
+ "type": {
887
+ "text": "void"
888
+ }
889
+ },
890
+ "description": "Hide the dropdown panel"
734
891
  }
735
892
  ],
736
893
  "events": [
@@ -739,41 +896,154 @@
739
896
  "text": "CustomEvent"
740
897
  },
741
898
  "description": "Fired after first render and initialization",
742
- "name": "btu-icon-ready"
899
+ "name": "btu-dropdown-ready"
900
+ },
901
+ {
902
+ "type": {
903
+ "text": "CustomEvent"
904
+ },
905
+ "description": "Fired when the dropdown panel opens",
906
+ "name": "btu-dropdown-show"
907
+ },
908
+ {
909
+ "type": {
910
+ "text": "CustomEvent"
911
+ },
912
+ "description": "Fired when the dropdown panel closes",
913
+ "name": "btu-dropdown-hide"
914
+ },
915
+ {
916
+ "type": {
917
+ "text": "CustomEvent<{label: string, selected: boolean}>"
918
+ },
919
+ "description": "Fired when a menu item is activated (bubbles from btu-dropdown-item)",
920
+ "name": "btu-dropdown-item-select"
921
+ },
922
+ {
923
+ "type": {
924
+ "text": "CustomEvent<{label: string, favorited: boolean}>"
925
+ },
926
+ "description": "Fired when a menu item's favorite is toggled (bubbles from btu-dropdown-item)",
927
+ "name": "btu-dropdown-item-favorite"
743
928
  }
744
929
  ],
745
930
  "attributes": [
931
+ {
932
+ "name": "label",
933
+ "type": {
934
+ "text": "string"
935
+ },
936
+ "default": "''",
937
+ "description": "Trigger button text.",
938
+ "fieldName": "label",
939
+ "attribute": "label"
940
+ },
941
+ {
942
+ "name": "open",
943
+ "type": {
944
+ "text": "boolean"
945
+ },
946
+ "default": "false",
947
+ "description": "Panel visibility state. Can be set programmatically (e.g., for tour UIs)\n— syncs to `showPopover()`/`hidePopover()` in `updated()`.",
948
+ "fieldName": "open",
949
+ "attribute": "open"
950
+ },
951
+ {
952
+ "name": "placement",
953
+ "type": {
954
+ "text": "Placement"
955
+ },
956
+ "default": "'bottom-start'",
957
+ "description": "Panel placement: 'bottom-start', 'bottom-end', 'top-start', 'top-end'.",
958
+ "fieldName": "placement",
959
+ "attribute": "placement"
960
+ },
746
961
  {
747
962
  "name": "size",
748
963
  "type": {
749
- "text": "'xs' | 'sm' | 'md' | 'lg' | 'xl'"
964
+ "text": "Size"
750
965
  },
751
- "default": "'md'",
752
- "description": "Size of the icon.\n- 'xs': Extra small (0.75rem)\n- 'sm': Small (1rem)\n- 'md': Medium (1.25rem, default)\n- 'lg': Large (1.5rem)\n- 'xl': Extra large (1.75rem)",
966
+ "default": "'medium'",
967
+ "description": "Button size: 'small', 'medium', 'large'.",
753
968
  "fieldName": "size",
754
969
  "attribute": "size"
755
970
  },
756
971
  {
757
- "name": "symbol",
972
+ "name": "disabled",
973
+ "type": {
974
+ "text": "boolean"
975
+ },
976
+ "default": "false",
977
+ "description": "Prevents opening.",
978
+ "fieldName": "disabled",
979
+ "attribute": "disabled"
980
+ },
981
+ {
982
+ "name": "variant",
983
+ "type": {
984
+ "text": "Variant"
985
+ },
986
+ "default": "'secondary'",
987
+ "description": "Button variant: 'primary', 'secondary', 'tertiary', 'primary-clear', 'secondary-clear', 'tertiary-clear'.",
988
+ "fieldName": "variant",
989
+ "attribute": "variant"
990
+ },
991
+ {
992
+ "name": "icon-symbol",
758
993
  "type": {
759
994
  "text": "string"
760
995
  },
761
- "default": "'circle-dashed'",
762
- "description": "Lucide icon name to display.\nSee https://lucide.dev/icons/ for available icons.",
763
- "fieldName": "symbol",
764
- "attribute": "symbol"
996
+ "default": "''",
997
+ "description": "Lucide icon symbol for the trigger.",
998
+ "fieldName": "iconSymbol",
999
+ "attribute": "icon-symbol"
765
1000
  },
766
1001
  {
767
- "name": "gradient",
1002
+ "name": "icon-position",
768
1003
  "type": {
769
- "text": "'ai' | 'error' | 'gray' | 'primary' | 'purple' | 'rose' | 'success' | 'teal' | 'warning' | undefined"
1004
+ "text": "'leading' | 'trailing'"
770
1005
  },
771
- "description": "Theme color to use for gradient fill.\nWhen set, icon displays with gradient. When undefined, icon inherits parent text color.",
772
- "fieldName": "gradient",
773
- "attribute": "gradient"
1006
+ "default": "'leading'",
1007
+ "description": "Icon position: 'leading' or 'trailing'.",
1008
+ "fieldName": "iconPosition",
1009
+ "attribute": "icon-position"
1010
+ },
1011
+ {
1012
+ "name": "icon-only",
1013
+ "type": {
1014
+ "text": "boolean"
1015
+ },
1016
+ "default": "false",
1017
+ "description": "Hides label, shows icon only.",
1018
+ "fieldName": "iconOnly",
1019
+ "attribute": "icon-only"
1020
+ },
1021
+ {
1022
+ "name": "stay-open-on-select",
1023
+ "type": {
1024
+ "text": "boolean"
1025
+ },
1026
+ "default": "false",
1027
+ "description": "Keeps panel open on item click.",
1028
+ "fieldName": "stayOpenOnSelect",
1029
+ "attribute": "stay-open-on-select"
1030
+ },
1031
+ {
1032
+ "name": "no-chevron",
1033
+ "type": {
1034
+ "text": "boolean"
1035
+ },
1036
+ "default": "false",
1037
+ "description": "Hides the chevron icon on the trigger button.",
1038
+ "fieldName": "noChevron",
1039
+ "attribute": "no-chevron"
774
1040
  }
775
1041
  ],
776
1042
  "mixins": [
1043
+ {
1044
+ "name": "TooltipMixin",
1045
+ "module": "/src/util/TooltipMixin.js"
1046
+ },
777
1047
  {
778
1048
  "name": "EventEmitterMixin",
779
1049
  "module": "/src/util/EventEmitterMixin.js"
@@ -787,7 +1057,7 @@
787
1057
  "name": "LitElement",
788
1058
  "package": "lit"
789
1059
  },
790
- "tagName": "btu-icon",
1060
+ "tagName": "btu-dropdown",
791
1061
  "customElement": true
792
1062
  }
793
1063
  ],
@@ -796,74 +1066,1264 @@
796
1066
  "kind": "js",
797
1067
  "name": "default",
798
1068
  "declaration": {
799
- "name": "Icon",
800
- "module": "src/components/icon/Icon.ts"
1069
+ "name": "Dropdown",
1070
+ "module": "src/components/dropdown/Dropdown.ts"
801
1071
  }
802
1072
  },
803
1073
  {
804
1074
  "kind": "custom-element-definition",
805
- "name": "btu-icon",
1075
+ "name": "btu-dropdown",
806
1076
  "declaration": {
807
- "name": "Icon",
808
- "module": "src/components/icon/Icon.ts"
1077
+ "name": "Dropdown",
1078
+ "module": "src/components/dropdown/Dropdown.ts"
809
1079
  }
810
1080
  }
811
1081
  ]
812
1082
  },
813
1083
  {
814
1084
  "kind": "javascript-module",
815
- "path": "src/components/linear-progress/LinearProgress.ts",
1085
+ "path": "src/components/dropdown/DropdownItem.ts",
816
1086
  "declarations": [
817
1087
  {
818
1088
  "kind": "class",
819
- "description": "A horizontal linear progress bar for showing task completion.",
820
- "name": "LinearProgress",
821
- "cssProperties": [
1089
+ "description": "A menu item component for use inside `btu-dropdown-menu`.\n\nRenders as a menu item, divider, or subhead depending on the `type` property.\nSupports checkbox mode (inherited from parent menu), icons, keyboard shortcuts,\nand favorite toggles.",
1090
+ "name": "DropdownItem",
1091
+ "members": [
822
1092
  {
823
- "description": "Custom progress bar color (overrides theme color)",
824
- "name": "--progress-color"
1093
+ "kind": "field",
1094
+ "name": "label",
1095
+ "type": {
1096
+ "text": "string"
1097
+ },
1098
+ "default": "''",
1099
+ "description": "Display text for the item.",
1100
+ "attribute": "label"
825
1101
  },
826
1102
  {
827
- "description": "Track/background color (overrides default gray-100)",
828
- "name": "--track-color"
829
- }
830
- ],
831
- "members": [],
832
- "events": [
1103
+ "kind": "field",
1104
+ "name": "type",
1105
+ "type": {
1106
+ "text": "'default' | 'divider' | 'subhead'"
1107
+ },
1108
+ "default": "'default'",
1109
+ "description": "Item type: 'default', 'divider', or 'subhead'.",
1110
+ "attribute": "type"
1111
+ },
833
1112
  {
1113
+ "kind": "field",
1114
+ "name": "iconSymbol",
834
1115
  "type": {
835
- "text": "CustomEvent"
1116
+ "text": "string"
836
1117
  },
837
- "description": "Fired after first render and initialization",
838
- "name": "btu-progress-ready"
1118
+ "default": "''",
1119
+ "description": "Lucide icon symbol.",
1120
+ "attribute": "icon-symbol"
839
1121
  },
840
1122
  {
1123
+ "kind": "field",
1124
+ "name": "shortcut",
841
1125
  "type": {
842
- "text": "CustomEvent"
1126
+ "text": "string"
843
1127
  },
844
- "description": "Fired when progress reaches 100",
845
- "name": "btu-progress-complete"
846
- }
847
- ],
848
- "mixins": [
1128
+ "default": "''",
1129
+ "description": "Keyboard shortcut display text.",
1130
+ "attribute": "shortcut"
1131
+ },
849
1132
  {
850
- "name": "ProgressMixin",
851
- "module": "/src/util/ProgressMixin.js"
1133
+ "kind": "field",
1134
+ "name": "disabled",
1135
+ "type": {
1136
+ "text": "boolean"
1137
+ },
1138
+ "default": "false",
1139
+ "description": "Whether the item is disabled.",
1140
+ "attribute": "disabled"
852
1141
  },
853
1142
  {
854
- "name": "EventEmitterMixin",
855
- "module": "/src/util/EventEmitterMixin.js"
1143
+ "kind": "field",
1144
+ "name": "selected",
1145
+ "type": {
1146
+ "text": "boolean"
1147
+ },
1148
+ "default": "false",
1149
+ "description": "Whether the item is selected/checked.",
1150
+ "attribute": "selected",
1151
+ "reflects": true
856
1152
  },
857
1153
  {
858
- "name": "ReadyMixin",
859
- "module": "/src/util/ReadyMixin.js"
1154
+ "kind": "field",
1155
+ "name": "favorited",
1156
+ "type": {
1157
+ "text": "boolean"
1158
+ },
1159
+ "default": "false",
1160
+ "description": "Whether the item is favorited.",
1161
+ "attribute": "favorited"
1162
+ },
1163
+ {
1164
+ "kind": "method",
1165
+ "name": "_toggleFavorite",
1166
+ "privacy": "private",
1167
+ "return": {
1168
+ "type": {
1169
+ "text": "void"
1170
+ }
1171
+ },
1172
+ "parameters": [
1173
+ {
1174
+ "name": "e",
1175
+ "type": {
1176
+ "text": "Event"
1177
+ }
1178
+ }
1179
+ ],
1180
+ "description": "Toggle favorite state"
1181
+ },
1182
+ {
1183
+ "kind": "method",
1184
+ "name": "_handleClick",
1185
+ "privacy": "private",
1186
+ "return": {
1187
+ "type": {
1188
+ "text": "void"
1189
+ }
1190
+ }
860
1191
  }
861
1192
  ],
862
- "superclass": {
863
- "name": "LitElement",
1193
+ "events": [
1194
+ {
1195
+ "type": {
1196
+ "text": "CustomEvent"
1197
+ },
1198
+ "description": "Fired after first render",
1199
+ "name": "btu-dropdown-item-ready"
1200
+ },
1201
+ {
1202
+ "type": {
1203
+ "text": "CustomEvent<{label: string, selected: boolean}>"
1204
+ },
1205
+ "description": "Fired when item is activated",
1206
+ "name": "btu-dropdown-item-select"
1207
+ },
1208
+ {
1209
+ "type": {
1210
+ "text": "CustomEvent<{label: string, favorited: boolean}>"
1211
+ },
1212
+ "description": "Fired when favorite is toggled",
1213
+ "name": "btu-dropdown-item-favorite"
1214
+ }
1215
+ ],
1216
+ "attributes": [
1217
+ {
1218
+ "name": "label",
1219
+ "type": {
1220
+ "text": "string"
1221
+ },
1222
+ "default": "''",
1223
+ "description": "Display text for the item.",
1224
+ "fieldName": "label",
1225
+ "attribute": "label"
1226
+ },
1227
+ {
1228
+ "name": "type",
1229
+ "type": {
1230
+ "text": "'default' | 'divider' | 'subhead'"
1231
+ },
1232
+ "default": "'default'",
1233
+ "description": "Item type: 'default', 'divider', or 'subhead'.",
1234
+ "fieldName": "type",
1235
+ "attribute": "type"
1236
+ },
1237
+ {
1238
+ "name": "icon-symbol",
1239
+ "type": {
1240
+ "text": "string"
1241
+ },
1242
+ "default": "''",
1243
+ "description": "Lucide icon symbol.",
1244
+ "fieldName": "iconSymbol",
1245
+ "attribute": "icon-symbol"
1246
+ },
1247
+ {
1248
+ "name": "shortcut",
1249
+ "type": {
1250
+ "text": "string"
1251
+ },
1252
+ "default": "''",
1253
+ "description": "Keyboard shortcut display text.",
1254
+ "fieldName": "shortcut",
1255
+ "attribute": "shortcut"
1256
+ },
1257
+ {
1258
+ "name": "disabled",
1259
+ "type": {
1260
+ "text": "boolean"
1261
+ },
1262
+ "default": "false",
1263
+ "description": "Whether the item is disabled.",
1264
+ "fieldName": "disabled",
1265
+ "attribute": "disabled"
1266
+ },
1267
+ {
1268
+ "name": "selected",
1269
+ "type": {
1270
+ "text": "boolean"
1271
+ },
1272
+ "default": "false",
1273
+ "description": "Whether the item is selected/checked.",
1274
+ "fieldName": "selected",
1275
+ "attribute": "selected"
1276
+ },
1277
+ {
1278
+ "name": "favorited",
1279
+ "type": {
1280
+ "text": "boolean"
1281
+ },
1282
+ "default": "false",
1283
+ "description": "Whether the item is favorited.",
1284
+ "fieldName": "favorited",
1285
+ "attribute": "favorited"
1286
+ }
1287
+ ],
1288
+ "mixins": [
1289
+ {
1290
+ "name": "EventEmitterMixin",
1291
+ "module": "/src/util/EventEmitterMixin.js"
1292
+ },
1293
+ {
1294
+ "name": "ReadyMixin",
1295
+ "module": "/src/util/ReadyMixin.js"
1296
+ }
1297
+ ],
1298
+ "superclass": {
1299
+ "name": "LitElement",
1300
+ "package": "lit"
1301
+ },
1302
+ "tagName": "btu-dropdown-item",
1303
+ "customElement": true
1304
+ }
1305
+ ],
1306
+ "exports": [
1307
+ {
1308
+ "kind": "js",
1309
+ "name": "default",
1310
+ "declaration": {
1311
+ "name": "DropdownItem",
1312
+ "module": "src/components/dropdown/DropdownItem.ts"
1313
+ }
1314
+ },
1315
+ {
1316
+ "kind": "custom-element-definition",
1317
+ "name": "btu-dropdown-item",
1318
+ "declaration": {
1319
+ "name": "DropdownItem",
1320
+ "module": "src/components/dropdown/DropdownItem.ts"
1321
+ }
1322
+ }
1323
+ ]
1324
+ },
1325
+ {
1326
+ "kind": "javascript-module",
1327
+ "path": "src/components/dropdown/DropdownMenu.ts",
1328
+ "declarations": [
1329
+ {
1330
+ "kind": "class",
1331
+ "description": "A menu container component that provides keyboard navigation and ARIA menu semantics.\n\nContains `btu-dropdown-item` children and manages roving tabindex, typeahead search,\nand keyboard navigation following the WAI-ARIA Menu Button Pattern.",
1332
+ "name": "DropdownMenu",
1333
+ "cssProperties": [
1334
+ {
1335
+ "description": "Empty state text color (default: gray-400)",
1336
+ "name": "--dropdown-empty-color"
1337
+ }
1338
+ ],
1339
+ "slots": [
1340
+ {
1341
+ "description": "Menu items (`btu-dropdown-item` elements)",
1342
+ "name": ""
1343
+ }
1344
+ ],
1345
+ "members": [
1346
+ {
1347
+ "kind": "field",
1348
+ "name": "name",
1349
+ "type": {
1350
+ "text": "string"
1351
+ },
1352
+ "default": "''",
1353
+ "description": "Accessible name for the menu, displayed in header when header is true.",
1354
+ "attribute": "name"
1355
+ },
1356
+ {
1357
+ "kind": "field",
1358
+ "name": "header",
1359
+ "type": {
1360
+ "text": "boolean"
1361
+ },
1362
+ "default": "false",
1363
+ "description": "Show header bar with menu name.",
1364
+ "attribute": "header"
1365
+ },
1366
+ {
1367
+ "kind": "field",
1368
+ "name": "checkbox",
1369
+ "type": {
1370
+ "text": "boolean"
1371
+ },
1372
+ "default": "false",
1373
+ "description": "Enable checkbox mode for items (menuitemcheckbox role).",
1374
+ "attribute": "checkbox"
1375
+ },
1376
+ {
1377
+ "kind": "field",
1378
+ "name": "icon",
1379
+ "type": {
1380
+ "text": "boolean"
1381
+ },
1382
+ "default": "false",
1383
+ "description": "Show icons before each item.",
1384
+ "attribute": "icon"
1385
+ },
1386
+ {
1387
+ "kind": "field",
1388
+ "name": "iconSymbol",
1389
+ "type": {
1390
+ "text": "string"
1391
+ },
1392
+ "default": "''",
1393
+ "description": "Fallback Lucide icon symbol for items without their own.",
1394
+ "attribute": "icon-symbol"
1395
+ },
1396
+ {
1397
+ "kind": "field",
1398
+ "name": "favorites",
1399
+ "type": {
1400
+ "text": "boolean"
1401
+ },
1402
+ "default": "false",
1403
+ "description": "Show favorite toggle on each item.",
1404
+ "attribute": "favorites"
1405
+ },
1406
+ {
1407
+ "kind": "field",
1408
+ "name": "shortcuts",
1409
+ "type": {
1410
+ "text": "boolean"
1411
+ },
1412
+ "default": "false",
1413
+ "description": "Show keyboard shortcut text on each item.",
1414
+ "attribute": "shortcuts"
1415
+ },
1416
+ {
1417
+ "kind": "field",
1418
+ "name": "emptyMessage",
1419
+ "type": {
1420
+ "text": "string"
1421
+ },
1422
+ "default": "'No items available'",
1423
+ "description": "Message displayed when the menu has no focusable items.",
1424
+ "attribute": "empty-message"
1425
+ },
1426
+ {
1427
+ "kind": "method",
1428
+ "name": "_configureItems",
1429
+ "privacy": "private",
1430
+ "return": {
1431
+ "type": {
1432
+ "text": "void"
1433
+ }
1434
+ },
1435
+ "description": "Configure all child items with menu-level settings"
1436
+ },
1437
+ {
1438
+ "kind": "method",
1439
+ "name": "_getAllItems",
1440
+ "privacy": "private",
1441
+ "return": {
1442
+ "type": {
1443
+ "text": "DropdownItem[]"
1444
+ }
1445
+ },
1446
+ "description": "Get all btu-dropdown-item children"
1447
+ },
1448
+ {
1449
+ "kind": "method",
1450
+ "name": "_getFocusableItems",
1451
+ "privacy": "private",
1452
+ "return": {
1453
+ "type": {
1454
+ "text": "DropdownItem[]"
1455
+ }
1456
+ },
1457
+ "description": "Get only focusable items (default type, skip dividers/subheads)"
1458
+ },
1459
+ {
1460
+ "kind": "method",
1461
+ "name": "_getCurrentFocusIndex",
1462
+ "privacy": "private",
1463
+ "return": {
1464
+ "type": {
1465
+ "text": "number"
1466
+ }
1467
+ },
1468
+ "parameters": [
1469
+ {
1470
+ "name": "focusable",
1471
+ "type": {
1472
+ "text": "DropdownItem[]"
1473
+ }
1474
+ }
1475
+ ],
1476
+ "description": "Find the current focused item index"
1477
+ },
1478
+ {
1479
+ "kind": "method",
1480
+ "name": "_findNextIndex",
1481
+ "privacy": "private",
1482
+ "return": {
1483
+ "type": {
1484
+ "text": "number"
1485
+ }
1486
+ },
1487
+ "parameters": [
1488
+ {
1489
+ "name": "focusable",
1490
+ "type": {
1491
+ "text": "DropdownItem[]"
1492
+ }
1493
+ },
1494
+ {
1495
+ "name": "current",
1496
+ "type": {
1497
+ "text": "number"
1498
+ }
1499
+ },
1500
+ {
1501
+ "name": "direction",
1502
+ "type": {
1503
+ "text": "1 | -1"
1504
+ }
1505
+ }
1506
+ ],
1507
+ "description": "Find next index wrapping around, moving in direction (+1 or -1)"
1508
+ },
1509
+ {
1510
+ "kind": "method",
1511
+ "name": "_handleTypeahead",
1512
+ "privacy": "private",
1513
+ "return": {
1514
+ "type": {
1515
+ "text": "void"
1516
+ }
1517
+ },
1518
+ "parameters": [
1519
+ {
1520
+ "name": "char",
1521
+ "type": {
1522
+ "text": "string"
1523
+ }
1524
+ },
1525
+ {
1526
+ "name": "focusable",
1527
+ "type": {
1528
+ "text": "DropdownItem[]"
1529
+ }
1530
+ }
1531
+ ],
1532
+ "description": "Typeahead character matching with 500ms accumulation"
1533
+ },
1534
+ {
1535
+ "kind": "field",
1536
+ "name": "_isEmpty",
1537
+ "type": {
1538
+ "text": "boolean"
1539
+ },
1540
+ "privacy": "private",
1541
+ "description": "Check whether the menu has zero focusable items",
1542
+ "readonly": true
1543
+ }
1544
+ ],
1545
+ "events": [
1546
+ {
1547
+ "type": {
1548
+ "text": "CustomEvent"
1549
+ },
1550
+ "description": "Fired after first render",
1551
+ "name": "btu-dropdown-menu-ready"
1552
+ }
1553
+ ],
1554
+ "attributes": [
1555
+ {
1556
+ "name": "name",
1557
+ "type": {
1558
+ "text": "string"
1559
+ },
1560
+ "default": "''",
1561
+ "description": "Accessible name for the menu, displayed in header when header is true.",
1562
+ "fieldName": "name",
1563
+ "attribute": "name"
1564
+ },
1565
+ {
1566
+ "name": "header",
1567
+ "type": {
1568
+ "text": "boolean"
1569
+ },
1570
+ "default": "false",
1571
+ "description": "Show header bar with menu name.",
1572
+ "fieldName": "header",
1573
+ "attribute": "header"
1574
+ },
1575
+ {
1576
+ "name": "checkbox",
1577
+ "type": {
1578
+ "text": "boolean"
1579
+ },
1580
+ "default": "false",
1581
+ "description": "Enable checkbox mode for items (menuitemcheckbox role).",
1582
+ "fieldName": "checkbox",
1583
+ "attribute": "checkbox"
1584
+ },
1585
+ {
1586
+ "name": "icon",
1587
+ "type": {
1588
+ "text": "boolean"
1589
+ },
1590
+ "default": "false",
1591
+ "description": "Show icons before each item.",
1592
+ "fieldName": "icon",
1593
+ "attribute": "icon"
1594
+ },
1595
+ {
1596
+ "name": "icon-symbol",
1597
+ "type": {
1598
+ "text": "string"
1599
+ },
1600
+ "default": "''",
1601
+ "description": "Fallback Lucide icon symbol for items without their own.",
1602
+ "fieldName": "iconSymbol",
1603
+ "attribute": "icon-symbol"
1604
+ },
1605
+ {
1606
+ "name": "favorites",
1607
+ "type": {
1608
+ "text": "boolean"
1609
+ },
1610
+ "default": "false",
1611
+ "description": "Show favorite toggle on each item.",
1612
+ "fieldName": "favorites",
1613
+ "attribute": "favorites"
1614
+ },
1615
+ {
1616
+ "name": "shortcuts",
1617
+ "type": {
1618
+ "text": "boolean"
1619
+ },
1620
+ "default": "false",
1621
+ "description": "Show keyboard shortcut text on each item.",
1622
+ "fieldName": "shortcuts",
1623
+ "attribute": "shortcuts"
1624
+ },
1625
+ {
1626
+ "name": "empty-message",
1627
+ "type": {
1628
+ "text": "string"
1629
+ },
1630
+ "default": "'No items available'",
1631
+ "description": "Message displayed when the menu has no focusable items.",
1632
+ "fieldName": "emptyMessage",
1633
+ "attribute": "empty-message"
1634
+ }
1635
+ ],
1636
+ "mixins": [
1637
+ {
1638
+ "name": "EventEmitterMixin",
1639
+ "module": "/src/util/EventEmitterMixin.js"
1640
+ },
1641
+ {
1642
+ "name": "ReadyMixin",
1643
+ "module": "/src/util/ReadyMixin.js"
1644
+ }
1645
+ ],
1646
+ "superclass": {
1647
+ "name": "LitElement",
1648
+ "package": "lit"
1649
+ },
1650
+ "tagName": "btu-dropdown-menu",
1651
+ "customElement": true
1652
+ }
1653
+ ],
1654
+ "exports": [
1655
+ {
1656
+ "kind": "js",
1657
+ "name": "default",
1658
+ "declaration": {
1659
+ "name": "DropdownMenu",
1660
+ "module": "src/components/dropdown/DropdownMenu.ts"
1661
+ }
1662
+ },
1663
+ {
1664
+ "kind": "custom-element-definition",
1665
+ "name": "btu-dropdown-menu",
1666
+ "declaration": {
1667
+ "name": "DropdownMenu",
1668
+ "module": "src/components/dropdown/DropdownMenu.ts"
1669
+ }
1670
+ }
1671
+ ]
1672
+ },
1673
+ {
1674
+ "kind": "javascript-module",
1675
+ "path": "src/components/icon/Icon.ts",
1676
+ "declarations": [
1677
+ {
1678
+ "kind": "class",
1679
+ "description": "An icon component for displaying Lucide icons.\n\nIcons inherit parent text color by default or can use gradient fills.\nAll icons are from the Lucide icon library (https://lucide.dev/icons/).\nSupports both direct SVG rendering and mask-based gradient fills.",
1680
+ "name": "Icon",
1681
+ "cssProperties": [
1682
+ {
1683
+ "description": "Icon size (overrides size default)",
1684
+ "name": "--Icon-size"
1685
+ },
1686
+ {
1687
+ "description": "Icon fill color for filled icons (e.g., \"currentColor\")",
1688
+ "name": "--Icon-fill"
1689
+ },
1690
+ {
1691
+ "description": "SVG data URI for mask-based rendering",
1692
+ "name": "--Icon-svg"
1693
+ }
1694
+ ],
1695
+ "members": [
1696
+ {
1697
+ "kind": "field",
1698
+ "name": "tagName",
1699
+ "static": true,
1700
+ "readonly": true
1701
+ },
1702
+ {
1703
+ "kind": "field",
1704
+ "name": "size",
1705
+ "type": {
1706
+ "text": "'xs' | 'sm' | 'md' | 'lg' | 'xl'"
1707
+ },
1708
+ "default": "'md'",
1709
+ "description": "Size of the icon.\n- 'xs': Extra small (0.75rem)\n- 'sm': Small (1rem)\n- 'md': Medium (1.25rem, default)\n- 'lg': Large (1.5rem)\n- 'xl': Extra large (1.75rem)",
1710
+ "attribute": "size"
1711
+ },
1712
+ {
1713
+ "kind": "field",
1714
+ "name": "symbol",
1715
+ "type": {
1716
+ "text": "string"
1717
+ },
1718
+ "default": "'circle-dashed'",
1719
+ "description": "Lucide icon name to display.\nSee https://lucide.dev/icons/ for available icons.",
1720
+ "attribute": "symbol"
1721
+ },
1722
+ {
1723
+ "kind": "field",
1724
+ "name": "gradient",
1725
+ "type": {
1726
+ "text": "'ai' | 'error' | 'gray' | 'primary' | 'purple' | 'rose' | 'success' | 'teal' | 'warning' | undefined"
1727
+ },
1728
+ "description": "Theme color to use for gradient fill.\nWhen set, icon displays with gradient. When undefined, icon inherits parent text color.",
1729
+ "attribute": "gradient"
1730
+ }
1731
+ ],
1732
+ "events": [
1733
+ {
1734
+ "type": {
1735
+ "text": "CustomEvent"
1736
+ },
1737
+ "description": "Fired after first render and initialization",
1738
+ "name": "btu-icon-ready"
1739
+ }
1740
+ ],
1741
+ "attributes": [
1742
+ {
1743
+ "name": "size",
1744
+ "type": {
1745
+ "text": "'xs' | 'sm' | 'md' | 'lg' | 'xl'"
1746
+ },
1747
+ "default": "'md'",
1748
+ "description": "Size of the icon.\n- 'xs': Extra small (0.75rem)\n- 'sm': Small (1rem)\n- 'md': Medium (1.25rem, default)\n- 'lg': Large (1.5rem)\n- 'xl': Extra large (1.75rem)",
1749
+ "fieldName": "size",
1750
+ "attribute": "size"
1751
+ },
1752
+ {
1753
+ "name": "symbol",
1754
+ "type": {
1755
+ "text": "string"
1756
+ },
1757
+ "default": "'circle-dashed'",
1758
+ "description": "Lucide icon name to display.\nSee https://lucide.dev/icons/ for available icons.",
1759
+ "fieldName": "symbol",
1760
+ "attribute": "symbol"
1761
+ },
1762
+ {
1763
+ "name": "gradient",
1764
+ "type": {
1765
+ "text": "'ai' | 'error' | 'gray' | 'primary' | 'purple' | 'rose' | 'success' | 'teal' | 'warning' | undefined"
1766
+ },
1767
+ "description": "Theme color to use for gradient fill.\nWhen set, icon displays with gradient. When undefined, icon inherits parent text color.",
1768
+ "fieldName": "gradient",
1769
+ "attribute": "gradient"
1770
+ }
1771
+ ],
1772
+ "mixins": [
1773
+ {
1774
+ "name": "EventEmitterMixin",
1775
+ "module": "/src/util/EventEmitterMixin.js"
1776
+ },
1777
+ {
1778
+ "name": "ReadyMixin",
1779
+ "module": "/src/util/ReadyMixin.js"
1780
+ }
1781
+ ],
1782
+ "superclass": {
1783
+ "name": "LitElement",
1784
+ "package": "lit"
1785
+ },
1786
+ "tagName": "btu-icon",
1787
+ "customElement": true
1788
+ }
1789
+ ],
1790
+ "exports": [
1791
+ {
1792
+ "kind": "js",
1793
+ "name": "default",
1794
+ "declaration": {
1795
+ "name": "Icon",
1796
+ "module": "src/components/icon/Icon.ts"
1797
+ }
1798
+ },
1799
+ {
1800
+ "kind": "custom-element-definition",
1801
+ "name": "btu-icon",
1802
+ "declaration": {
1803
+ "name": "Icon",
1804
+ "module": "src/components/icon/Icon.ts"
1805
+ }
1806
+ }
1807
+ ]
1808
+ },
1809
+ {
1810
+ "kind": "javascript-module",
1811
+ "path": "src/components/linear-progress/LinearProgress.ts",
1812
+ "declarations": [
1813
+ {
1814
+ "kind": "class",
1815
+ "description": "A horizontal linear progress bar for showing task completion.",
1816
+ "name": "LinearProgress",
1817
+ "cssProperties": [
1818
+ {
1819
+ "description": "Custom progress bar color (overrides theme color)",
1820
+ "name": "--progress-color"
1821
+ },
1822
+ {
1823
+ "description": "Track/background color (overrides default gray-100)",
1824
+ "name": "--track-color"
1825
+ }
1826
+ ],
1827
+ "members": [],
1828
+ "events": [
1829
+ {
1830
+ "type": {
1831
+ "text": "CustomEvent"
1832
+ },
1833
+ "description": "Fired after first render and initialization",
1834
+ "name": "btu-progress-ready"
1835
+ },
1836
+ {
1837
+ "type": {
1838
+ "text": "CustomEvent"
1839
+ },
1840
+ "description": "Fired when progress reaches 100",
1841
+ "name": "btu-progress-complete"
1842
+ }
1843
+ ],
1844
+ "mixins": [
1845
+ {
1846
+ "name": "ProgressMixin",
1847
+ "module": "/src/util/ProgressMixin.js"
1848
+ },
1849
+ {
1850
+ "name": "EventEmitterMixin",
1851
+ "module": "/src/util/EventEmitterMixin.js"
1852
+ },
1853
+ {
1854
+ "name": "ReadyMixin",
1855
+ "module": "/src/util/ReadyMixin.js"
1856
+ }
1857
+ ],
1858
+ "superclass": {
1859
+ "name": "LitElement",
1860
+ "package": "lit"
1861
+ },
1862
+ "tagName": "btu-linear-progress",
1863
+ "customElement": true
1864
+ }
1865
+ ],
1866
+ "exports": [
1867
+ {
1868
+ "kind": "js",
1869
+ "name": "default",
1870
+ "declaration": {
1871
+ "name": "LinearProgress",
1872
+ "module": "src/components/linear-progress/LinearProgress.ts"
1873
+ }
1874
+ },
1875
+ {
1876
+ "kind": "custom-element-definition",
1877
+ "name": "btu-linear-progress",
1878
+ "declaration": {
1879
+ "name": "LinearProgress",
1880
+ "module": "src/components/linear-progress/LinearProgress.ts"
1881
+ }
1882
+ }
1883
+ ]
1884
+ },
1885
+ {
1886
+ "kind": "javascript-module",
1887
+ "path": "src/components/pagination/Pagination.ts",
1888
+ "declarations": [
1889
+ {
1890
+ "kind": "class",
1891
+ "description": "A pagination component for navigating through paged content.\n\nSupports multiple layout variants (Search, Widget, Widget Small, Calendar)\nthrough configurable props and pseudo-slots.",
1892
+ "name": "Pagination",
1893
+ "cssProperties": [
1894
+ {
1895
+ "description": "Background color for select, buttons, and jumper",
1896
+ "name": "--pagination-color-background"
1897
+ },
1898
+ {
1899
+ "description": "Text/icon color",
1900
+ "name": "--pagination-color-foreground"
1901
+ }
1902
+ ],
1903
+ "slots": [
1904
+ {
1905
+ "description": "Custom page-size selector (replaces built-in select)",
1906
+ "name": "page-size"
1907
+ },
1908
+ {
1909
+ "description": "Custom jumper content (e.g., page dropdown, \"Today\" button)",
1910
+ "name": "jumper"
1911
+ }
1912
+ ],
1913
+ "members": [
1914
+ {
1915
+ "kind": "field",
1916
+ "name": "page",
1917
+ "type": {
1918
+ "text": "number"
1919
+ },
1920
+ "default": "1",
1921
+ "description": "Current page number (1-based)",
1922
+ "attribute": "page"
1923
+ },
1924
+ {
1925
+ "kind": "field",
1926
+ "name": "pageSize",
1927
+ "type": {
1928
+ "text": "number"
1929
+ },
1930
+ "default": "0",
1931
+ "description": "Number of items per page",
1932
+ "attribute": "page-size"
1933
+ },
1934
+ {
1935
+ "kind": "field",
1936
+ "name": "disabled",
1937
+ "type": {
1938
+ "text": "boolean"
1939
+ },
1940
+ "default": "false",
1941
+ "description": "Disables all pagination controls",
1942
+ "attribute": "disabled"
1943
+ },
1944
+ {
1945
+ "kind": "field",
1946
+ "name": "loading",
1947
+ "type": {
1948
+ "text": "boolean"
1949
+ },
1950
+ "default": "false",
1951
+ "description": "Shows loading spinner and dims controls",
1952
+ "attribute": "loading"
1953
+ },
1954
+ {
1955
+ "kind": "field",
1956
+ "name": "hideOnSinglePage",
1957
+ "type": {
1958
+ "text": "boolean"
1959
+ },
1960
+ "default": "true",
1961
+ "description": "Hide controls when there is only one page",
1962
+ "attribute": "hide-on-single-page"
1963
+ },
1964
+ {
1965
+ "kind": "field",
1966
+ "name": "pageSizeChanger",
1967
+ "type": {
1968
+ "text": "boolean"
1969
+ },
1970
+ "default": "true",
1971
+ "description": "Show the page size dropdown",
1972
+ "attribute": "page-size-changer"
1973
+ },
1974
+ {
1975
+ "kind": "field",
1976
+ "name": "pageSizeOptions",
1977
+ "type": {
1978
+ "text": "string"
1979
+ },
1980
+ "default": "'10, 20, 50'",
1981
+ "description": "Comma-separated page size options",
1982
+ "attribute": "page-size-options"
1983
+ },
1984
+ {
1985
+ "kind": "field",
1986
+ "name": "totalItems",
1987
+ "type": {
1988
+ "text": "number"
1989
+ },
1990
+ "default": "0",
1991
+ "description": "Total number of items across all pages",
1992
+ "attribute": "total-items"
1993
+ },
1994
+ {
1995
+ "kind": "field",
1996
+ "name": "boundaryButtons",
1997
+ "type": {
1998
+ "text": "boolean"
1999
+ },
2000
+ "default": "true",
2001
+ "description": "Show first and last page buttons",
2002
+ "attribute": "boundary-buttons"
2003
+ },
2004
+ {
2005
+ "kind": "field",
2006
+ "name": "hideTotalCount",
2007
+ "type": {
2008
+ "text": "boolean"
2009
+ },
2010
+ "default": "false",
2011
+ "description": "Hide the item count display (e.g., \"1-10 of 200\")",
2012
+ "attribute": "hide-total-count"
2013
+ },
2014
+ {
2015
+ "kind": "field",
2016
+ "name": "label",
2017
+ "type": {
2018
+ "text": "string | undefined"
2019
+ },
2020
+ "description": "Accessible label for the pagination nav landmark",
2021
+ "attribute": "label"
2022
+ },
2023
+ {
2024
+ "kind": "field",
2025
+ "name": "_parsedPageSizeOptions",
2026
+ "type": {
2027
+ "text": "number[]"
2028
+ },
2029
+ "privacy": "private",
2030
+ "readonly": true
2031
+ },
2032
+ {
2033
+ "kind": "field",
2034
+ "name": "_totalPages",
2035
+ "type": {
2036
+ "text": "number"
2037
+ },
2038
+ "privacy": "private",
2039
+ "readonly": true
2040
+ },
2041
+ {
2042
+ "kind": "field",
2043
+ "name": "_startItem",
2044
+ "type": {
2045
+ "text": "number"
2046
+ },
2047
+ "privacy": "private",
2048
+ "readonly": true
2049
+ },
2050
+ {
2051
+ "kind": "field",
2052
+ "name": "_endItem",
2053
+ "type": {
2054
+ "text": "number"
2055
+ },
2056
+ "privacy": "private",
2057
+ "readonly": true
2058
+ },
2059
+ {
2060
+ "kind": "method",
2061
+ "name": "_setupSlots",
2062
+ "privacy": "private",
2063
+ "return": {
2064
+ "type": {
2065
+ "text": "void"
2066
+ }
2067
+ }
2068
+ },
2069
+ {
2070
+ "kind": "method",
2071
+ "name": "_goToFirstPage",
2072
+ "privacy": "private",
2073
+ "return": {
2074
+ "type": {
2075
+ "text": "void"
2076
+ }
2077
+ },
2078
+ "parameters": [
2079
+ {
2080
+ "name": "e",
2081
+ "type": {
2082
+ "text": "Event"
2083
+ }
2084
+ }
2085
+ ]
2086
+ },
2087
+ {
2088
+ "kind": "method",
2089
+ "name": "_goToPreviousPage",
2090
+ "privacy": "private",
2091
+ "return": {
2092
+ "type": {
2093
+ "text": "void"
2094
+ }
2095
+ },
2096
+ "parameters": [
2097
+ {
2098
+ "name": "e",
2099
+ "type": {
2100
+ "text": "Event"
2101
+ }
2102
+ }
2103
+ ]
2104
+ },
2105
+ {
2106
+ "kind": "method",
2107
+ "name": "_goToNextPage",
2108
+ "privacy": "private",
2109
+ "return": {
2110
+ "type": {
2111
+ "text": "void"
2112
+ }
2113
+ },
2114
+ "parameters": [
2115
+ {
2116
+ "name": "e",
2117
+ "type": {
2118
+ "text": "Event"
2119
+ }
2120
+ }
2121
+ ]
2122
+ },
2123
+ {
2124
+ "kind": "method",
2125
+ "name": "_goToLastPage",
2126
+ "privacy": "private",
2127
+ "return": {
2128
+ "type": {
2129
+ "text": "void"
2130
+ }
2131
+ },
2132
+ "parameters": [
2133
+ {
2134
+ "name": "e",
2135
+ "type": {
2136
+ "text": "Event"
2137
+ }
2138
+ }
2139
+ ]
2140
+ },
2141
+ {
2142
+ "kind": "method",
2143
+ "name": "_manageBoundaryFocus",
2144
+ "privacy": "private",
2145
+ "return": {
2146
+ "type": {
2147
+ "text": "void"
2148
+ }
2149
+ },
2150
+ "parameters": [
2151
+ {
2152
+ "name": "clickedButton",
2153
+ "type": {
2154
+ "text": "HTMLButtonElement"
2155
+ }
2156
+ }
2157
+ ]
2158
+ },
2159
+ {
2160
+ "kind": "method",
2161
+ "name": "_onPageSizeChange",
2162
+ "privacy": "private",
2163
+ "return": {
2164
+ "type": {
2165
+ "text": "void"
2166
+ }
2167
+ },
2168
+ "parameters": [
2169
+ {
2170
+ "name": "e",
2171
+ "type": {
2172
+ "text": "Event"
2173
+ }
2174
+ }
2175
+ ]
2176
+ }
2177
+ ],
2178
+ "events": [
2179
+ {
2180
+ "type": {
2181
+ "text": "CustomEvent"
2182
+ },
2183
+ "description": "Fired after first render",
2184
+ "name": "btu-pagination-ready"
2185
+ },
2186
+ {
2187
+ "type": {
2188
+ "text": "CustomEvent<{page: number, pageSize: number}>"
2189
+ },
2190
+ "description": "Fired on page navigation",
2191
+ "name": "btu-pagination-change"
2192
+ },
2193
+ {
2194
+ "type": {
2195
+ "text": "CustomEvent<{page: number, pageSize: number}>"
2196
+ },
2197
+ "description": "Fired on page size change",
2198
+ "name": "btu-pagination-page-size-change"
2199
+ }
2200
+ ],
2201
+ "attributes": [
2202
+ {
2203
+ "name": "page",
2204
+ "type": {
2205
+ "text": "number"
2206
+ },
2207
+ "default": "1",
2208
+ "description": "Current page number (1-based)",
2209
+ "fieldName": "page",
2210
+ "attribute": "page"
2211
+ },
2212
+ {
2213
+ "name": "page-size",
2214
+ "type": {
2215
+ "text": "number"
2216
+ },
2217
+ "default": "0",
2218
+ "description": "Number of items per page",
2219
+ "fieldName": "pageSize",
2220
+ "attribute": "page-size"
2221
+ },
2222
+ {
2223
+ "name": "disabled",
2224
+ "type": {
2225
+ "text": "boolean"
2226
+ },
2227
+ "default": "false",
2228
+ "description": "Disables all pagination controls",
2229
+ "fieldName": "disabled",
2230
+ "attribute": "disabled"
2231
+ },
2232
+ {
2233
+ "name": "loading",
2234
+ "type": {
2235
+ "text": "boolean"
2236
+ },
2237
+ "default": "false",
2238
+ "description": "Shows loading spinner and dims controls",
2239
+ "fieldName": "loading",
2240
+ "attribute": "loading"
2241
+ },
2242
+ {
2243
+ "name": "hide-on-single-page",
2244
+ "type": {
2245
+ "text": "boolean"
2246
+ },
2247
+ "default": "true",
2248
+ "description": "Hide controls when there is only one page",
2249
+ "fieldName": "hideOnSinglePage",
2250
+ "attribute": "hide-on-single-page"
2251
+ },
2252
+ {
2253
+ "name": "page-size-changer",
2254
+ "type": {
2255
+ "text": "boolean"
2256
+ },
2257
+ "default": "true",
2258
+ "description": "Show the page size dropdown",
2259
+ "fieldName": "pageSizeChanger",
2260
+ "attribute": "page-size-changer"
2261
+ },
2262
+ {
2263
+ "name": "page-size-options",
2264
+ "type": {
2265
+ "text": "string"
2266
+ },
2267
+ "default": "'10, 20, 50'",
2268
+ "description": "Comma-separated page size options",
2269
+ "fieldName": "pageSizeOptions",
2270
+ "attribute": "page-size-options"
2271
+ },
2272
+ {
2273
+ "name": "total-items",
2274
+ "type": {
2275
+ "text": "number"
2276
+ },
2277
+ "default": "0",
2278
+ "description": "Total number of items across all pages",
2279
+ "fieldName": "totalItems",
2280
+ "attribute": "total-items"
2281
+ },
2282
+ {
2283
+ "name": "boundary-buttons",
2284
+ "type": {
2285
+ "text": "boolean"
2286
+ },
2287
+ "default": "true",
2288
+ "description": "Show first and last page buttons",
2289
+ "fieldName": "boundaryButtons",
2290
+ "attribute": "boundary-buttons"
2291
+ },
2292
+ {
2293
+ "name": "hide-total-count",
2294
+ "type": {
2295
+ "text": "boolean"
2296
+ },
2297
+ "default": "false",
2298
+ "description": "Hide the item count display (e.g., \"1-10 of 200\")",
2299
+ "fieldName": "hideTotalCount",
2300
+ "attribute": "hide-total-count"
2301
+ },
2302
+ {
2303
+ "name": "label",
2304
+ "type": {
2305
+ "text": "string | undefined"
2306
+ },
2307
+ "description": "Accessible label for the pagination nav landmark",
2308
+ "fieldName": "label",
2309
+ "attribute": "label"
2310
+ }
2311
+ ],
2312
+ "mixins": [
2313
+ {
2314
+ "name": "EventEmitterMixin",
2315
+ "module": "/src/util/EventEmitterMixin.js"
2316
+ },
2317
+ {
2318
+ "name": "ReadyMixin",
2319
+ "module": "/src/util/ReadyMixin.js"
2320
+ }
2321
+ ],
2322
+ "superclass": {
2323
+ "name": "LitElement",
864
2324
  "package": "lit"
865
2325
  },
866
- "tagName": "btu-linear-progress",
2326
+ "tagName": "btu-pagination",
867
2327
  "customElement": true
868
2328
  }
869
2329
  ],
@@ -872,16 +2332,16 @@
872
2332
  "kind": "js",
873
2333
  "name": "default",
874
2334
  "declaration": {
875
- "name": "LinearProgress",
876
- "module": "src/components/linear-progress/LinearProgress.ts"
2335
+ "name": "Pagination",
2336
+ "module": "src/components/pagination/Pagination.ts"
877
2337
  }
878
2338
  },
879
2339
  {
880
2340
  "kind": "custom-element-definition",
881
- "name": "btu-linear-progress",
2341
+ "name": "btu-pagination",
882
2342
  "declaration": {
883
- "name": "LinearProgress",
884
- "module": "src/components/linear-progress/LinearProgress.ts"
2343
+ "name": "Pagination",
2344
+ "module": "src/components/pagination/Pagination.ts"
885
2345
  }
886
2346
  }
887
2347
  ]