@helixui/library 0.3.3 → 0.3.4

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 (84) hide show
  1. package/LICENSE +21 -0
  2. package/custom-elements.json +402 -402
  3. package/dist/components/hx-accordion/hx-accordion-item.d.ts +1 -1
  4. package/dist/components/hx-accordion/hx-accordion.d.ts +1 -1
  5. package/dist/components/hx-action-bar/hx-action-bar.d.ts +1 -1
  6. package/dist/components/hx-alert/hx-alert.d.ts +1 -1
  7. package/dist/components/hx-avatar/hx-avatar.d.ts +1 -1
  8. package/dist/components/hx-badge/hx-badge.d.ts +1 -1
  9. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +1 -1
  10. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +1 -1
  11. package/dist/components/hx-button-group/hx-button-group.d.ts +1 -1
  12. package/dist/components/hx-card/hx-card.d.ts +1 -1
  13. package/dist/components/hx-carousel/hx-carousel-item.d.ts +1 -1
  14. package/dist/components/hx-carousel/hx-carousel.d.ts +1 -1
  15. package/dist/components/hx-checkbox/hx-checkbox.d.ts +1 -1
  16. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +1 -1
  17. package/dist/components/hx-color-picker/hx-color-picker.d.ts +1 -1
  18. package/dist/components/hx-combobox/hx-combobox.d.ts +1 -1
  19. package/dist/components/hx-container/hx-container.d.ts +1 -1
  20. package/dist/components/hx-copy-button/hx-copy-button.d.ts +1 -1
  21. package/dist/components/hx-data-table/hx-data-table.d.ts +1 -1
  22. package/dist/components/hx-date-picker/hx-date-picker.d.ts +1 -1
  23. package/dist/components/hx-dialog/hx-dialog.d.ts +1 -1
  24. package/dist/components/hx-divider/hx-divider.d.ts +1 -1
  25. package/dist/components/hx-drawer/hx-drawer.d.ts +1 -1
  26. package/dist/components/hx-dropdown/hx-dropdown.d.ts +1 -1
  27. package/dist/components/hx-field/hx-field.d.ts +1 -1
  28. package/dist/components/hx-field-label/hx-field-label.d.ts +1 -1
  29. package/dist/components/hx-file-upload/hx-file-upload.d.ts +1 -1
  30. package/dist/components/hx-form/hx-form.d.ts +1 -1
  31. package/dist/components/hx-format-date/hx-format-date.d.ts +1 -1
  32. package/dist/components/hx-grid/hx-grid.d.ts +2 -2
  33. package/dist/components/hx-help-text/hx-help-text.d.ts +1 -1
  34. package/dist/components/hx-icon/hx-icon.d.ts +1 -1
  35. package/dist/components/hx-icon-button/hx-icon-button.d.ts +1 -1
  36. package/dist/components/hx-image/hx-image.d.ts +1 -1
  37. package/dist/components/hx-link/hx-link.d.ts +1 -1
  38. package/dist/components/hx-list/hx-list-item.d.ts +1 -1
  39. package/dist/components/hx-list/hx-list.d.ts +1 -1
  40. package/dist/components/hx-menu/hx-menu-divider.d.ts +1 -1
  41. package/dist/components/hx-menu/hx-menu-item.d.ts +1 -1
  42. package/dist/components/hx-menu/hx-menu.d.ts +1 -1
  43. package/dist/components/hx-meter/hx-meter.d.ts +1 -1
  44. package/dist/components/hx-nav/hx-nav.d.ts +1 -1
  45. package/dist/components/hx-number-input/hx-number-input.d.ts +1 -1
  46. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +1 -1
  47. package/dist/components/hx-pagination/hx-pagination.d.ts +1 -1
  48. package/dist/components/hx-popover/hx-popover.d.ts +1 -1
  49. package/dist/components/hx-popup/hx-popup.d.ts +1 -1
  50. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +1 -1
  51. package/dist/components/hx-prose/hx-prose.d.ts +1 -1
  52. package/dist/components/hx-radio-group/hx-radio-group.d.ts +1 -1
  53. package/dist/components/hx-radio-group/hx-radio.d.ts +1 -1
  54. package/dist/components/hx-rating/hx-rating.d.ts +1 -1
  55. package/dist/components/hx-select/hx-select.d.ts +1 -1
  56. package/dist/components/hx-side-nav/hx-nav-item.d.ts +1 -1
  57. package/dist/components/hx-side-nav/hx-side-nav.d.ts +1 -1
  58. package/dist/components/hx-skeleton/hx-skeleton.d.ts +1 -1
  59. package/dist/components/hx-spinner/hx-spinner.d.ts +1 -1
  60. package/dist/components/hx-split-button/hx-split-button.d.ts +1 -1
  61. package/dist/components/hx-split-panel/hx-split-panel.d.ts +1 -1
  62. package/dist/components/hx-stack/hx-stack.d.ts +1 -1
  63. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +1 -1
  64. package/dist/components/hx-steps/hx-step.d.ts +1 -1
  65. package/dist/components/hx-steps/hx-steps.d.ts +1 -1
  66. package/dist/components/hx-structured-list/hx-structured-list.d.ts +2 -2
  67. package/dist/components/hx-switch/hx-switch.d.ts +1 -1
  68. package/dist/components/hx-tabs/hx-tab-panel.d.ts +1 -1
  69. package/dist/components/hx-tabs/hx-tab.d.ts +1 -1
  70. package/dist/components/hx-tabs/hx-tabs.d.ts +1 -1
  71. package/dist/components/hx-tag/hx-tag.d.ts +1 -1
  72. package/dist/components/hx-text/hx-text.d.ts +1 -1
  73. package/dist/components/hx-text-input/hx-text-input.d.ts +1 -1
  74. package/dist/components/hx-textarea/hx-textarea.d.ts +1 -1
  75. package/dist/components/hx-theme/hx-theme.d.ts +1 -1
  76. package/dist/components/hx-time-picker/hx-time-picker.d.ts +1 -1
  77. package/dist/components/hx-toast/hx-toast.d.ts +2 -2
  78. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +1 -1
  79. package/dist/components/hx-tooltip/hx-tooltip.d.ts +1 -1
  80. package/dist/components/hx-top-nav/hx-top-nav.d.ts +1 -1
  81. package/dist/components/hx-tree-view/hx-tree-item.d.ts +1 -1
  82. package/dist/components/hx-tree-view/hx-tree-view.d.ts +1 -1
  83. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts +1 -1
  84. package/package.json +33 -27
@@ -394,191 +394,126 @@
394
394
  },
395
395
  {
396
396
  "kind": "javascript-module",
397
- "path": "src/components/hx-alert/hx-alert.ts",
397
+ "path": "src/components/hx-action-bar/hx-action-bar.ts",
398
398
  "declarations": [
399
399
  {
400
400
  "kind": "class",
401
- "description": "A feedback component for communicating status messages, warnings, and errors.\nCritical for healthcare patient safety alerts.",
402
- "name": "HelixAlert",
401
+ "description": "A horizontal toolbar container for grouping related action buttons and controls.\nImplements the ARIA toolbar pattern with roving tabindex keyboard navigation.",
402
+ "name": "HelixActionBar",
403
403
  "cssProperties": [
404
404
  {
405
- "description": "Alert background color.",
406
- "name": "--hx-alert-bg",
407
- "default": "var(--hx-color-info-50)"
408
- },
409
- {
410
- "description": "Alert text color.",
411
- "name": "--hx-alert-color",
412
- "default": "var(--hx-color-info-800)"
413
- },
414
- {
415
- "description": "Alert border color.",
416
- "name": "--hx-alert-border-color",
417
- "default": "var(--hx-color-info-200)"
418
- },
419
- {
420
- "description": "Alert border radius.",
421
- "name": "--hx-alert-border-radius",
422
- "default": "var(--hx-border-radius-md)"
423
- },
424
- {
425
- "description": "Alert border width.",
426
- "name": "--hx-alert-border-width",
427
- "default": "var(--hx-border-width-thin)"
428
- },
429
- {
430
- "description": "Alert padding.",
431
- "name": "--hx-alert-padding",
432
- "default": "var(--hx-space-4)"
433
- },
434
- {
435
- "description": "Gap between alert elements.",
436
- "name": "--hx-alert-gap",
437
- "default": "var(--hx-space-3)"
405
+ "description": "Bar background color (default variant).",
406
+ "name": "--hx-action-bar-bg",
407
+ "default": "transparent"
438
408
  },
439
409
  {
440
- "description": "Alert icon color.",
441
- "name": "--hx-alert-icon-color",
442
- "default": "var(--hx-color-info-500)"
410
+ "description": "Bar border (default variant).",
411
+ "name": "--hx-action-bar-border",
412
+ "default": "none"
443
413
  },
444
414
  {
445
- "description": "Alert font family.",
446
- "name": "--hx-alert-font-family",
447
- "default": "var(--hx-font-family-sans)"
415
+ "description": "Inner padding.",
416
+ "name": "--hx-action-bar-padding",
417
+ "default": "var(--hx-space-2,0.5rem) var(--hx-space-3,0.75rem)"
448
418
  },
449
419
  {
450
- "description": "Minimum touch target size for the close button.",
451
- "name": "--hx-touch-target-size",
452
- "default": "44px"
420
+ "description": "Gap between slotted items.",
421
+ "name": "--hx-action-bar-gap",
422
+ "default": "var(--hx-space-2,0.5rem)"
453
423
  },
454
424
  {
455
- "description": "Width of the left border accent stripe.",
456
- "name": "--hx-alert-accent-width",
457
- "default": "4px"
425
+ "description": "Z-index when sticky or bottom position.",
426
+ "name": "--hx-action-bar-z-index",
427
+ "default": "10"
458
428
  }
459
429
  ],
460
430
  "cssParts": [
461
431
  {
462
- "description": "The outer alert container.",
463
- "name": "alert"
464
- },
465
- {
466
- "description": "The title/headline container.",
467
- "name": "title"
432
+ "description": "The root toolbar container element.",
433
+ "name": "base"
468
434
  },
469
435
  {
470
- "description": "The icon container.",
471
- "name": "icon"
436
+ "description": "The start (left) slot wrapper.",
437
+ "name": "start"
472
438
  },
473
439
  {
474
- "description": "The message content area.",
475
- "name": "message"
440
+ "description": "The center (default) slot wrapper.",
441
+ "name": "center"
476
442
  },
477
443
  {
478
- "description": "The dismiss button (only rendered when dismissible).",
479
- "name": "close-button"
444
+ "description": "The end (right) slot wrapper.",
445
+ "name": "end"
480
446
  },
481
447
  {
482
- "description": "The actions container.",
483
- "name": "actions"
448
+ "description": "The overflow slot wrapper (hidden when no overflow content).",
449
+ "name": "overflow"
484
450
  }
485
451
  ],
486
452
  "slots": [
487
453
  {
488
- "description": "Default slot for alert message content.",
489
- "name": ""
454
+ "description": "Left-aligned actions.",
455
+ "name": "start"
490
456
  },
491
457
  {
492
- "description": "Optional title/headline for the alert.",
493
- "name": "title"
458
+ "description": "Center content (default slot).",
459
+ "name": ""
494
460
  },
495
461
  {
496
- "description": "Custom icon to override the default variant icon.",
497
- "name": "icon"
462
+ "description": "Right-aligned actions.",
463
+ "name": "end"
498
464
  },
499
465
  {
500
- "description": "Action buttons rendered within the alert.",
501
- "name": "actions"
466
+ "description": "Actions revealed when the bar is constrained for space.",
467
+ "name": "overflow"
502
468
  }
503
469
  ],
504
470
  "members": [
505
471
  {
506
472
  "kind": "field",
507
- "name": "variant",
508
- "type": {
509
- "text": "AlertVariant"
510
- },
511
- "default": "'info'",
512
- "description": "Visual variant of the alert that determines colors and ARIA semantics.",
513
- "attribute": "variant",
514
- "reflects": true
515
- },
516
- {
517
- "kind": "field",
518
- "name": "dismissible",
473
+ "name": "size",
519
474
  "type": {
520
- "text": "boolean"
475
+ "text": "'sm' | 'md' | 'lg'"
521
476
  },
522
- "default": "false",
523
- "description": "Whether the alert can be dismissed by the user.",
524
- "attribute": "dismissible",
477
+ "default": "'md'",
478
+ "description": "Size of the action bar propagated as a data attribute to slotted children.",
479
+ "attribute": "size",
525
480
  "reflects": true
526
481
  },
527
482
  {
528
483
  "kind": "field",
529
- "name": "open",
484
+ "name": "variant",
530
485
  "type": {
531
- "text": "boolean"
486
+ "text": "'default' | 'outlined' | 'filled'"
532
487
  },
533
- "default": "true",
534
- "description": "Whether the alert is visible. Set to false to hide the alert.",
535
- "attribute": "open",
488
+ "default": "'default'",
489
+ "description": "Visual variant controlling the bar background.",
490
+ "attribute": "variant",
536
491
  "reflects": true
537
492
  },
538
493
  {
539
494
  "kind": "field",
540
- "name": "showIcon",
495
+ "name": "position",
541
496
  "type": {
542
- "text": "boolean"
497
+ "text": "'top' | 'bottom' | 'sticky'"
543
498
  },
544
- "default": "true",
545
- "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
546
- "attribute": "show-icon",
499
+ "default": "'top'",
500
+ "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` sticks to the bottom of the scroll container with iOS safe-area-inset support",
501
+ "attribute": "position",
547
502
  "reflects": true
548
503
  },
549
504
  {
550
505
  "kind": "field",
551
- "name": "accent",
506
+ "name": "sticky",
552
507
  "type": {
553
508
  "text": "boolean"
554
509
  },
555
- "default": "false",
556
- "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
557
- "attribute": "accent",
510
+ "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
511
+ "attribute": "sticky",
558
512
  "reflects": true
559
513
  },
560
514
  {
561
515
  "kind": "field",
562
- "name": "returnFocusTo",
563
- "type": {
564
- "text": "string | null"
565
- },
566
- "default": "null",
567
- "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
568
- "attribute": "return-focus-to"
569
- },
570
- {
571
- "kind": "field",
572
- "name": "_hasActions",
573
- "type": {
574
- "text": "boolean"
575
- },
576
- "privacy": "private",
577
- "default": "false"
578
- },
579
- {
580
- "kind": "field",
581
- "name": "_hasTitle",
516
+ "name": "_sticky",
582
517
  "type": {
583
518
  "text": "boolean"
584
519
  },
@@ -587,342 +522,396 @@
587
522
  },
588
523
  {
589
524
  "kind": "field",
590
- "name": "_actionsSlotChangeHandler",
525
+ "name": "ariaLabel",
591
526
  "type": {
592
- "text": "(() => void) | null"
527
+ "text": "string"
593
528
  },
594
- "privacy": "private",
595
- "default": "null"
529
+ "default": "'Actions'",
530
+ "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
531
+ "attribute": "aria-label"
596
532
  },
597
533
  {
598
534
  "kind": "field",
599
- "name": "_titleSlotChangeHandler",
535
+ "name": "_focusableCache",
600
536
  "type": {
601
- "text": "(() => void) | null"
537
+ "text": "HTMLElement[] | null"
602
538
  },
603
539
  "privacy": "private",
604
- "default": "null"
540
+ "default": "null",
541
+ "description": "Cached list of focusable items — invalidated on slot change."
605
542
  },
606
543
  {
607
544
  "kind": "field",
608
- "name": "_isAssertive",
545
+ "name": "_hasOverflow",
609
546
  "type": {
610
547
  "text": "boolean"
611
548
  },
612
549
  "privacy": "private",
613
- "description": "Returns true when the variant requires assertive announcement.",
614
- "readonly": true
550
+ "default": "false",
551
+ "description": "Whether the overflow slot has assigned content."
615
552
  },
616
553
  {
617
554
  "kind": "field",
618
- "name": "_role",
619
- "type": {
620
- "text": "string"
621
- },
555
+ "name": "_handleKeydown",
622
556
  "privacy": "private",
623
- "description": "Returns the appropriate ARIA role based on variant.\nrole=\"alert\" implies aria-live=\"assertive\"; role=\"status\" implies aria-live=\"polite\".\nWe do NOT set aria-live explicitly to avoid double-announcements in JAWS.",
624
- "readonly": true
625
- },
626
- {
627
- "kind": "method",
628
- "name": "_renderInfoIcon",
629
- "privacy": "private"
630
- },
631
- {
632
- "kind": "method",
633
- "name": "_renderSuccessIcon",
634
- "privacy": "private"
635
- },
636
- {
637
- "kind": "method",
638
- "name": "_renderWarningIcon",
639
- "privacy": "private"
640
- },
641
- {
642
- "kind": "method",
643
- "name": "_renderErrorIcon",
644
- "privacy": "private"
557
+ "description": "Arrow function field stable reference for add/removeEventListener."
645
558
  },
646
559
  {
647
560
  "kind": "method",
648
- "name": "_renderDefaultIcon",
649
- "privacy": "private"
561
+ "name": "_isFocusable",
562
+ "privacy": "private",
563
+ "return": {
564
+ "type": {
565
+ "text": "boolean"
566
+ }
567
+ },
568
+ "parameters": [
569
+ {
570
+ "name": "el",
571
+ "type": {
572
+ "text": "HTMLElement"
573
+ }
574
+ }
575
+ ]
650
576
  },
651
577
  {
652
578
  "kind": "method",
653
- "name": "_renderCloseIcon",
654
- "privacy": "private"
579
+ "name": "_getFocusableItems",
580
+ "privacy": "private",
581
+ "return": {
582
+ "type": {
583
+ "text": "HTMLElement[]"
584
+ }
585
+ }
655
586
  },
656
587
  {
657
588
  "kind": "method",
658
- "name": "_handleDismiss",
589
+ "name": "_initRovingTabindex",
659
590
  "privacy": "private",
660
591
  "return": {
661
592
  "type": {
662
593
  "text": "void"
663
594
  }
664
595
  }
665
- }
666
- ],
667
- "events": [
596
+ },
668
597
  {
669
- "name": "hx-close",
670
- "type": {
671
- "text": "CustomEvent<{reason: string}>"
598
+ "kind": "method",
599
+ "name": "_moveFocus",
600
+ "privacy": "private",
601
+ "return": {
602
+ "type": {
603
+ "text": "void"
604
+ }
672
605
  },
673
- "description": "Dispatched when the user dismisses the alert."
606
+ "parameters": [
607
+ {
608
+ "name": "direction",
609
+ "type": {
610
+ "text": "'next' | 'prev'"
611
+ }
612
+ }
613
+ ]
674
614
  },
675
615
  {
676
- "name": "hx-after-close",
677
- "type": {
678
- "text": "CustomEvent"
616
+ "kind": "method",
617
+ "name": "_handleSlotChange",
618
+ "privacy": "private",
619
+ "return": {
620
+ "type": {
621
+ "text": "void"
622
+ }
679
623
  },
680
- "description": "Dispatched after the alert is dismissed."
624
+ "parameters": [
625
+ {
626
+ "name": "e",
627
+ "type": {
628
+ "text": "Event"
629
+ }
630
+ }
631
+ ]
681
632
  }
682
633
  ],
683
634
  "attributes": [
684
635
  {
685
- "name": "variant",
686
- "type": {
687
- "text": "AlertVariant"
688
- },
689
- "default": "'info'",
690
- "description": "Visual variant of the alert that determines colors and ARIA semantics.",
691
- "fieldName": "variant",
692
- "attribute": "variant"
693
- },
694
- {
695
- "name": "dismissible",
636
+ "name": "size",
696
637
  "type": {
697
- "text": "boolean"
638
+ "text": "'sm' | 'md' | 'lg'"
698
639
  },
699
- "default": "false",
700
- "description": "Whether the alert can be dismissed by the user.",
701
- "fieldName": "dismissible",
702
- "attribute": "dismissible"
640
+ "default": "'md'",
641
+ "description": "Size of the action bar propagated as a data attribute to slotted children.",
642
+ "fieldName": "size",
643
+ "attribute": "size"
703
644
  },
704
645
  {
705
- "name": "open",
646
+ "name": "variant",
706
647
  "type": {
707
- "text": "boolean"
648
+ "text": "'default' | 'outlined' | 'filled'"
708
649
  },
709
- "default": "true",
710
- "description": "Whether the alert is visible. Set to false to hide the alert.",
711
- "fieldName": "open",
712
- "attribute": "open"
650
+ "default": "'default'",
651
+ "description": "Visual variant controlling the bar background.",
652
+ "fieldName": "variant",
653
+ "attribute": "variant"
713
654
  },
714
655
  {
715
- "name": "show-icon",
656
+ "name": "position",
716
657
  "type": {
717
- "text": "boolean"
658
+ "text": "'top' | 'bottom' | 'sticky'"
718
659
  },
719
- "default": "true",
720
- "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
721
- "fieldName": "showIcon",
722
- "attribute": "show-icon"
660
+ "default": "'top'",
661
+ "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` sticks to the bottom of the scroll container with iOS safe-area-inset support",
662
+ "fieldName": "position",
663
+ "attribute": "position"
723
664
  },
724
665
  {
725
- "name": "accent",
666
+ "name": "sticky",
726
667
  "type": {
727
668
  "text": "boolean"
728
669
  },
729
- "default": "false",
730
- "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
731
- "fieldName": "accent",
732
- "attribute": "accent"
670
+ "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
671
+ "fieldName": "sticky",
672
+ "attribute": "sticky"
733
673
  },
734
674
  {
735
- "name": "return-focus-to",
675
+ "name": "aria-label",
736
676
  "type": {
737
- "text": "string | null"
677
+ "text": "string"
738
678
  },
739
- "default": "null",
740
- "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
741
- "fieldName": "returnFocusTo",
742
- "attribute": "return-focus-to"
679
+ "default": "'Actions'",
680
+ "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
681
+ "fieldName": "ariaLabel",
682
+ "attribute": "aria-label"
743
683
  }
744
684
  ],
745
685
  "superclass": {
746
686
  "name": "LitElement",
747
687
  "package": "lit"
748
688
  },
749
- "tagName": "hx-alert",
689
+ "tagName": "hx-action-bar",
750
690
  "customElement": true,
751
- "summary": "Feedback alert for status messages with variant-based styling and ARIA live regions."
691
+ "summary": "Horizontal action bar for grouping related controls."
752
692
  }
753
693
  ],
754
694
  "exports": [
755
695
  {
756
696
  "kind": "js",
757
- "name": "HelixAlert",
697
+ "name": "HelixActionBar",
758
698
  "declaration": {
759
- "name": "HelixAlert",
760
- "module": "src/components/hx-alert/hx-alert.ts"
699
+ "name": "HelixActionBar",
700
+ "module": "src/components/hx-action-bar/hx-action-bar.ts"
761
701
  }
762
702
  },
763
703
  {
764
704
  "kind": "custom-element-definition",
765
- "name": "hx-alert",
766
- "declaration": {
767
- "name": "HelixAlert",
768
- "module": "src/components/hx-alert/hx-alert.ts"
769
- }
770
- },
771
- {
772
- "kind": "js",
773
- "name": "HxAlert",
705
+ "name": "hx-action-bar",
774
706
  "declaration": {
775
- "name": "HelixAlert",
776
- "module": "src/components/hx-alert/hx-alert.ts"
707
+ "name": "HelixActionBar",
708
+ "module": "src/components/hx-action-bar/hx-action-bar.ts"
777
709
  }
778
710
  }
779
711
  ]
780
712
  },
781
713
  {
782
714
  "kind": "javascript-module",
783
- "path": "src/components/hx-alert/index.ts",
715
+ "path": "src/components/hx-action-bar/index.ts",
784
716
  "declarations": [],
785
717
  "exports": [
786
718
  {
787
719
  "kind": "js",
788
- "name": "HelixAlert",
789
- "declaration": {
790
- "name": "HelixAlert",
791
- "module": "./hx-alert.js"
792
- }
793
- },
794
- {
795
- "kind": "js",
796
- "name": "AlertVariant",
720
+ "name": "HelixActionBar",
797
721
  "declaration": {
798
- "name": "AlertVariant",
799
- "module": "./hx-alert.js"
722
+ "name": "HelixActionBar",
723
+ "module": "./hx-action-bar.js"
800
724
  }
801
725
  }
802
726
  ]
803
727
  },
804
728
  {
805
729
  "kind": "javascript-module",
806
- "path": "src/components/hx-action-bar/hx-action-bar.ts",
730
+ "path": "src/components/hx-alert/hx-alert.ts",
807
731
  "declarations": [
808
732
  {
809
733
  "kind": "class",
810
- "description": "A horizontal toolbar container for grouping related action buttons and controls.\nImplements the ARIA toolbar pattern with roving tabindex keyboard navigation.",
811
- "name": "HelixActionBar",
734
+ "description": "A feedback component for communicating status messages, warnings, and errors.\nCritical for healthcare patient safety alerts.",
735
+ "name": "HelixAlert",
812
736
  "cssProperties": [
813
737
  {
814
- "description": "Bar background color (default variant).",
815
- "name": "--hx-action-bar-bg",
816
- "default": "transparent"
738
+ "description": "Alert background color.",
739
+ "name": "--hx-alert-bg",
740
+ "default": "var(--hx-color-info-50)"
817
741
  },
818
742
  {
819
- "description": "Bar border (default variant).",
820
- "name": "--hx-action-bar-border",
821
- "default": "none"
743
+ "description": "Alert text color.",
744
+ "name": "--hx-alert-color",
745
+ "default": "var(--hx-color-info-800)"
822
746
  },
823
747
  {
824
- "description": "Inner padding.",
825
- "name": "--hx-action-bar-padding",
826
- "default": "var(--hx-space-2,0.5rem) var(--hx-space-3,0.75rem)"
748
+ "description": "Alert border color.",
749
+ "name": "--hx-alert-border-color",
750
+ "default": "var(--hx-color-info-200)"
827
751
  },
828
752
  {
829
- "description": "Gap between slotted items.",
830
- "name": "--hx-action-bar-gap",
831
- "default": "var(--hx-space-2,0.5rem)"
753
+ "description": "Alert border radius.",
754
+ "name": "--hx-alert-border-radius",
755
+ "default": "var(--hx-border-radius-md)"
832
756
  },
833
757
  {
834
- "description": "Z-index when sticky or bottom position.",
835
- "name": "--hx-action-bar-z-index",
836
- "default": "10"
758
+ "description": "Alert border width.",
759
+ "name": "--hx-alert-border-width",
760
+ "default": "var(--hx-border-width-thin)"
761
+ },
762
+ {
763
+ "description": "Alert padding.",
764
+ "name": "--hx-alert-padding",
765
+ "default": "var(--hx-space-4)"
766
+ },
767
+ {
768
+ "description": "Gap between alert elements.",
769
+ "name": "--hx-alert-gap",
770
+ "default": "var(--hx-space-3)"
771
+ },
772
+ {
773
+ "description": "Alert icon color.",
774
+ "name": "--hx-alert-icon-color",
775
+ "default": "var(--hx-color-info-500)"
776
+ },
777
+ {
778
+ "description": "Alert font family.",
779
+ "name": "--hx-alert-font-family",
780
+ "default": "var(--hx-font-family-sans)"
781
+ },
782
+ {
783
+ "description": "Minimum touch target size for the close button.",
784
+ "name": "--hx-touch-target-size",
785
+ "default": "44px"
786
+ },
787
+ {
788
+ "description": "Width of the left border accent stripe.",
789
+ "name": "--hx-alert-accent-width",
790
+ "default": "4px"
837
791
  }
838
792
  ],
839
793
  "cssParts": [
840
794
  {
841
- "description": "The root toolbar container element.",
842
- "name": "base"
795
+ "description": "The outer alert container.",
796
+ "name": "alert"
843
797
  },
844
798
  {
845
- "description": "The start (left) slot wrapper.",
846
- "name": "start"
799
+ "description": "The title/headline container.",
800
+ "name": "title"
847
801
  },
848
802
  {
849
- "description": "The center (default) slot wrapper.",
850
- "name": "center"
803
+ "description": "The icon container.",
804
+ "name": "icon"
851
805
  },
852
806
  {
853
- "description": "The end (right) slot wrapper.",
854
- "name": "end"
807
+ "description": "The message content area.",
808
+ "name": "message"
855
809
  },
856
810
  {
857
- "description": "The overflow slot wrapper (hidden when no overflow content).",
858
- "name": "overflow"
811
+ "description": "The dismiss button (only rendered when dismissible).",
812
+ "name": "close-button"
813
+ },
814
+ {
815
+ "description": "The actions container.",
816
+ "name": "actions"
859
817
  }
860
818
  ],
861
819
  "slots": [
862
820
  {
863
- "description": "Left-aligned actions.",
864
- "name": "start"
821
+ "description": "Default slot for alert message content.",
822
+ "name": ""
865
823
  },
866
824
  {
867
- "description": "Center content (default slot).",
868
- "name": ""
825
+ "description": "Optional title/headline for the alert.",
826
+ "name": "title"
869
827
  },
870
828
  {
871
- "description": "Right-aligned actions.",
872
- "name": "end"
829
+ "description": "Custom icon to override the default variant icon.",
830
+ "name": "icon"
873
831
  },
874
832
  {
875
- "description": "Actions revealed when the bar is constrained for space.",
876
- "name": "overflow"
833
+ "description": "Action buttons rendered within the alert.",
834
+ "name": "actions"
877
835
  }
878
836
  ],
879
837
  "members": [
880
838
  {
881
839
  "kind": "field",
882
- "name": "size",
840
+ "name": "variant",
883
841
  "type": {
884
- "text": "'sm' | 'md' | 'lg'"
842
+ "text": "AlertVariant"
885
843
  },
886
- "default": "'md'",
887
- "description": "Size of the action bar propagated as a data attribute to slotted children.",
888
- "attribute": "size",
844
+ "default": "'info'",
845
+ "description": "Visual variant of the alert that determines colors and ARIA semantics.",
846
+ "attribute": "variant",
847
+ "reflects": true
848
+ },
849
+ {
850
+ "kind": "field",
851
+ "name": "dismissible",
852
+ "type": {
853
+ "text": "boolean"
854
+ },
855
+ "default": "false",
856
+ "description": "Whether the alert can be dismissed by the user.",
857
+ "attribute": "dismissible",
858
+ "reflects": true
859
+ },
860
+ {
861
+ "kind": "field",
862
+ "name": "open",
863
+ "type": {
864
+ "text": "boolean"
865
+ },
866
+ "default": "true",
867
+ "description": "Whether the alert is visible. Set to false to hide the alert.",
868
+ "attribute": "open",
869
+ "reflects": true
870
+ },
871
+ {
872
+ "kind": "field",
873
+ "name": "showIcon",
874
+ "type": {
875
+ "text": "boolean"
876
+ },
877
+ "default": "true",
878
+ "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply — the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
879
+ "attribute": "show-icon",
889
880
  "reflects": true
890
881
  },
891
882
  {
892
883
  "kind": "field",
893
- "name": "variant",
884
+ "name": "accent",
894
885
  "type": {
895
- "text": "'default' | 'outlined' | 'filled'"
886
+ "text": "boolean"
896
887
  },
897
- "default": "'default'",
898
- "description": "Visual variant controlling the bar background.",
899
- "attribute": "variant",
888
+ "default": "false",
889
+ "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
890
+ "attribute": "accent",
900
891
  "reflects": true
901
892
  },
902
893
  {
903
894
  "kind": "field",
904
- "name": "position",
895
+ "name": "returnFocusTo",
905
896
  "type": {
906
- "text": "'top' | 'bottom' | 'sticky'"
897
+ "text": "string | null"
907
898
  },
908
- "default": "'top'",
909
- "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` — sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` sticks to the bottom of the scroll container with iOS safe-area-inset support",
910
- "attribute": "position",
911
- "reflects": true
899
+ "default": "null",
900
+ "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
901
+ "attribute": "return-focus-to"
912
902
  },
913
903
  {
914
904
  "kind": "field",
915
- "name": "sticky",
905
+ "name": "_hasActions",
916
906
  "type": {
917
907
  "text": "boolean"
918
908
  },
919
- "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
920
- "attribute": "sticky",
921
- "reflects": true
909
+ "privacy": "private",
910
+ "default": "false"
922
911
  },
923
912
  {
924
913
  "kind": "field",
925
- "name": "_sticky",
914
+ "name": "_hasTitle",
926
915
  "type": {
927
916
  "text": "boolean"
928
917
  },
@@ -931,205 +920,216 @@
931
920
  },
932
921
  {
933
922
  "kind": "field",
934
- "name": "ariaLabel",
923
+ "name": "_actionsSlotChangeHandler",
935
924
  "type": {
936
- "text": "string"
925
+ "text": "(() => void) | null"
937
926
  },
938
- "default": "'Actions'",
939
- "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
940
- "attribute": "aria-label"
927
+ "privacy": "private",
928
+ "default": "null"
941
929
  },
942
930
  {
943
931
  "kind": "field",
944
- "name": "_focusableCache",
932
+ "name": "_titleSlotChangeHandler",
945
933
  "type": {
946
- "text": "HTMLElement[] | null"
934
+ "text": "(() => void) | null"
947
935
  },
948
936
  "privacy": "private",
949
- "default": "null",
950
- "description": "Cached list of focusable items — invalidated on slot change."
937
+ "default": "null"
951
938
  },
952
939
  {
953
940
  "kind": "field",
954
- "name": "_hasOverflow",
941
+ "name": "_isAssertive",
955
942
  "type": {
956
943
  "text": "boolean"
957
944
  },
958
945
  "privacy": "private",
959
- "default": "false",
960
- "description": "Whether the overflow slot has assigned content."
946
+ "description": "Returns true when the variant requires assertive announcement.",
947
+ "readonly": true
961
948
  },
962
949
  {
963
950
  "kind": "field",
964
- "name": "_handleKeydown",
951
+ "name": "_role",
952
+ "type": {
953
+ "text": "string"
954
+ },
965
955
  "privacy": "private",
966
- "description": "Arrow function field stable reference for add/removeEventListener."
956
+ "description": "Returns the appropriate ARIA role based on variant.\nrole=\"alert\" implies aria-live=\"assertive\"; role=\"status\" implies aria-live=\"polite\".\nWe do NOT set aria-live explicitly to avoid double-announcements in JAWS.",
957
+ "readonly": true
967
958
  },
968
959
  {
969
960
  "kind": "method",
970
- "name": "_isFocusable",
971
- "privacy": "private",
972
- "return": {
973
- "type": {
974
- "text": "boolean"
975
- }
976
- },
977
- "parameters": [
978
- {
979
- "name": "el",
980
- "type": {
981
- "text": "HTMLElement"
982
- }
983
- }
984
- ]
961
+ "name": "_renderInfoIcon",
962
+ "privacy": "private"
985
963
  },
986
964
  {
987
965
  "kind": "method",
988
- "name": "_getFocusableItems",
989
- "privacy": "private",
990
- "return": {
991
- "type": {
992
- "text": "HTMLElement[]"
993
- }
994
- }
966
+ "name": "_renderSuccessIcon",
967
+ "privacy": "private"
995
968
  },
996
969
  {
997
970
  "kind": "method",
998
- "name": "_initRovingTabindex",
999
- "privacy": "private",
1000
- "return": {
1001
- "type": {
1002
- "text": "void"
1003
- }
1004
- }
971
+ "name": "_renderWarningIcon",
972
+ "privacy": "private"
1005
973
  },
1006
974
  {
1007
975
  "kind": "method",
1008
- "name": "_moveFocus",
1009
- "privacy": "private",
1010
- "return": {
1011
- "type": {
1012
- "text": "void"
1013
- }
1014
- },
1015
- "parameters": [
1016
- {
1017
- "name": "direction",
1018
- "type": {
1019
- "text": "'next' | 'prev'"
1020
- }
1021
- }
1022
- ]
976
+ "name": "_renderErrorIcon",
977
+ "privacy": "private"
1023
978
  },
1024
979
  {
1025
980
  "kind": "method",
1026
- "name": "_handleSlotChange",
981
+ "name": "_renderDefaultIcon",
982
+ "privacy": "private"
983
+ },
984
+ {
985
+ "kind": "method",
986
+ "name": "_renderCloseIcon",
987
+ "privacy": "private"
988
+ },
989
+ {
990
+ "kind": "method",
991
+ "name": "_handleDismiss",
1027
992
  "privacy": "private",
1028
993
  "return": {
1029
994
  "type": {
1030
995
  "text": "void"
1031
996
  }
1032
- },
1033
- "parameters": [
1034
- {
1035
- "name": "e",
1036
- "type": {
1037
- "text": "Event"
1038
- }
1039
- }
1040
- ]
997
+ }
1041
998
  }
1042
999
  ],
1043
- "attributes": [
1000
+ "events": [
1044
1001
  {
1045
- "name": "size",
1002
+ "name": "hx-close",
1046
1003
  "type": {
1047
- "text": "'sm' | 'md' | 'lg'"
1004
+ "text": "CustomEvent<{reason: string}>"
1048
1005
  },
1049
- "default": "'md'",
1050
- "description": "Size of the action bar — propagated as a data attribute to slotted children.",
1051
- "fieldName": "size",
1052
- "attribute": "size"
1006
+ "description": "Dispatched when the user dismisses the alert."
1053
1007
  },
1008
+ {
1009
+ "name": "hx-after-close",
1010
+ "type": {
1011
+ "text": "CustomEvent"
1012
+ },
1013
+ "description": "Dispatched after the alert is dismissed."
1014
+ }
1015
+ ],
1016
+ "attributes": [
1054
1017
  {
1055
1018
  "name": "variant",
1056
1019
  "type": {
1057
- "text": "'default' | 'outlined' | 'filled'"
1020
+ "text": "AlertVariant"
1058
1021
  },
1059
- "default": "'default'",
1060
- "description": "Visual variant controlling the bar background.",
1022
+ "default": "'info'",
1023
+ "description": "Visual variant of the alert that determines colors and ARIA semantics.",
1061
1024
  "fieldName": "variant",
1062
1025
  "attribute": "variant"
1063
1026
  },
1064
1027
  {
1065
- "name": "position",
1028
+ "name": "dismissible",
1066
1029
  "type": {
1067
- "text": "'top' | 'bottom' | 'sticky'"
1030
+ "text": "boolean"
1068
1031
  },
1069
- "default": "'top'",
1070
- "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` — sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` — sticks to the bottom of the scroll container with iOS safe-area-inset support",
1071
- "fieldName": "position",
1072
- "attribute": "position"
1032
+ "default": "false",
1033
+ "description": "Whether the alert can be dismissed by the user.",
1034
+ "fieldName": "dismissible",
1035
+ "attribute": "dismissible"
1073
1036
  },
1074
1037
  {
1075
- "name": "sticky",
1038
+ "name": "open",
1076
1039
  "type": {
1077
1040
  "text": "boolean"
1078
1041
  },
1079
- "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
1080
- "fieldName": "sticky",
1081
- "attribute": "sticky"
1042
+ "default": "true",
1043
+ "description": "Whether the alert is visible. Set to false to hide the alert.",
1044
+ "fieldName": "open",
1045
+ "attribute": "open"
1082
1046
  },
1083
1047
  {
1084
- "name": "aria-label",
1048
+ "name": "show-icon",
1085
1049
  "type": {
1086
- "text": "string"
1050
+ "text": "boolean"
1087
1051
  },
1088
- "default": "'Actions'",
1089
- "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
1090
- "fieldName": "ariaLabel",
1091
- "attribute": "aria-label"
1052
+ "default": "true",
1053
+ "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
1054
+ "fieldName": "showIcon",
1055
+ "attribute": "show-icon"
1056
+ },
1057
+ {
1058
+ "name": "accent",
1059
+ "type": {
1060
+ "text": "boolean"
1061
+ },
1062
+ "default": "false",
1063
+ "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
1064
+ "fieldName": "accent",
1065
+ "attribute": "accent"
1066
+ },
1067
+ {
1068
+ "name": "return-focus-to",
1069
+ "type": {
1070
+ "text": "string | null"
1071
+ },
1072
+ "default": "null",
1073
+ "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
1074
+ "fieldName": "returnFocusTo",
1075
+ "attribute": "return-focus-to"
1092
1076
  }
1093
1077
  ],
1094
1078
  "superclass": {
1095
1079
  "name": "LitElement",
1096
1080
  "package": "lit"
1097
1081
  },
1098
- "tagName": "hx-action-bar",
1082
+ "tagName": "hx-alert",
1099
1083
  "customElement": true,
1100
- "summary": "Horizontal action bar for grouping related controls."
1084
+ "summary": "Feedback alert for status messages with variant-based styling and ARIA live regions."
1101
1085
  }
1102
1086
  ],
1103
1087
  "exports": [
1104
1088
  {
1105
1089
  "kind": "js",
1106
- "name": "HelixActionBar",
1090
+ "name": "HelixAlert",
1107
1091
  "declaration": {
1108
- "name": "HelixActionBar",
1109
- "module": "src/components/hx-action-bar/hx-action-bar.ts"
1092
+ "name": "HelixAlert",
1093
+ "module": "src/components/hx-alert/hx-alert.ts"
1110
1094
  }
1111
1095
  },
1112
1096
  {
1113
1097
  "kind": "custom-element-definition",
1114
- "name": "hx-action-bar",
1098
+ "name": "hx-alert",
1115
1099
  "declaration": {
1116
- "name": "HelixActionBar",
1117
- "module": "src/components/hx-action-bar/hx-action-bar.ts"
1100
+ "name": "HelixAlert",
1101
+ "module": "src/components/hx-alert/hx-alert.ts"
1102
+ }
1103
+ },
1104
+ {
1105
+ "kind": "js",
1106
+ "name": "HxAlert",
1107
+ "declaration": {
1108
+ "name": "HelixAlert",
1109
+ "module": "src/components/hx-alert/hx-alert.ts"
1118
1110
  }
1119
1111
  }
1120
1112
  ]
1121
1113
  },
1122
1114
  {
1123
1115
  "kind": "javascript-module",
1124
- "path": "src/components/hx-action-bar/index.ts",
1116
+ "path": "src/components/hx-alert/index.ts",
1125
1117
  "declarations": [],
1126
1118
  "exports": [
1127
1119
  {
1128
1120
  "kind": "js",
1129
- "name": "HelixActionBar",
1121
+ "name": "HelixAlert",
1130
1122
  "declaration": {
1131
- "name": "HelixActionBar",
1132
- "module": "./hx-action-bar.js"
1123
+ "name": "HelixAlert",
1124
+ "module": "./hx-alert.js"
1125
+ }
1126
+ },
1127
+ {
1128
+ "kind": "js",
1129
+ "name": "AlertVariant",
1130
+ "declaration": {
1131
+ "name": "AlertVariant",
1132
+ "module": "./hx-alert.js"
1133
1133
  }
1134
1134
  }
1135
1135
  ]