@oicl/openbridge-webcomponents 2.0.0-next.96 → 2.0.0-next.98

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 (123) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +39 -124
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +343 -142
  4. package/dist/ar/poi/poi.d.ts +4 -2
  5. package/dist/ar/poi/poi.d.ts.map +1 -1
  6. package/dist/ar/poi/poi.js.map +1 -1
  7. package/dist/ar/poi-layer/poi-layer.d.ts +1 -0
  8. package/dist/ar/poi-layer/poi-layer.d.ts.map +1 -1
  9. package/dist/ar/poi-layer/poi-layer.js.map +1 -1
  10. package/dist/ar/poi-object/poi-object-aton.d.ts +1 -0
  11. package/dist/ar/poi-object/poi-object-aton.d.ts.map +1 -1
  12. package/dist/ar/poi-object/poi-object-aton.js.map +1 -1
  13. package/dist/automation/automation-badge/automation-badge.d.ts +2 -0
  14. package/dist/automation/automation-badge/automation-badge.d.ts.map +1 -1
  15. package/dist/automation/automation-badge/automation-badge.js.map +1 -1
  16. package/dist/automation/automation-button/automation-button.d.ts +9 -0
  17. package/dist/automation/automation-button/automation-button.d.ts.map +1 -1
  18. package/dist/automation/automation-button/automation-button.js.map +1 -1
  19. package/dist/automation/automation-input-modal/automation-input-modal.d.ts +4 -0
  20. package/dist/automation/automation-input-modal/automation-input-modal.d.ts.map +1 -1
  21. package/dist/automation/automation-input-modal/automation-input-modal.js.map +1 -1
  22. package/dist/automation/automation-tank/automation-tank.css.js +8 -87
  23. package/dist/automation/automation-tank/automation-tank.css.js.map +1 -1
  24. package/dist/automation/automation-tank/automation-tank.d.ts +13 -33
  25. package/dist/automation/automation-tank/automation-tank.d.ts.map +1 -1
  26. package/dist/automation/automation-tank/automation-tank.js +12 -28
  27. package/dist/automation/automation-tank/automation-tank.js.map +1 -1
  28. package/dist/building-blocks/alert-list/alert-list.d.ts +4 -0
  29. package/dist/building-blocks/alert-list/alert-list.d.ts.map +1 -1
  30. package/dist/building-blocks/alert-list/alert-list.js.map +1 -1
  31. package/dist/building-blocks/bar-horizontal/bar-horizontal.d.ts +2 -0
  32. package/dist/building-blocks/bar-horizontal/bar-horizontal.d.ts.map +1 -1
  33. package/dist/building-blocks/bar-horizontal/bar-horizontal.js.map +1 -1
  34. package/dist/building-blocks/bar-vertical/bar-vertical.d.ts +2 -0
  35. package/dist/building-blocks/bar-vertical/bar-vertical.d.ts.map +1 -1
  36. package/dist/building-blocks/bar-vertical/bar-vertical.js.map +1 -1
  37. package/dist/components/advice-floating-item/advice-floating-item.d.ts +2 -4
  38. package/dist/components/advice-floating-item/advice-floating-item.d.ts.map +1 -1
  39. package/dist/components/advice-floating-item/advice-floating-item.js.map +1 -1
  40. package/dist/components/advice-message-item/advice-message-item.d.ts +6 -19
  41. package/dist/components/advice-message-item/advice-message-item.d.ts.map +1 -1
  42. package/dist/components/advice-message-item/advice-message-item.js.map +1 -1
  43. package/dist/components/alert-floating-item/alert-floating-item.d.ts +12 -0
  44. package/dist/components/alert-floating-item/alert-floating-item.d.ts.map +1 -1
  45. package/dist/components/alert-floating-item/alert-floating-item.js.map +1 -1
  46. package/dist/components/alert-menu/alert-menu.d.ts +6 -20
  47. package/dist/components/alert-menu/alert-menu.d.ts.map +1 -1
  48. package/dist/components/alert-menu/alert-menu.js.map +1 -1
  49. package/dist/components/alert-menu-item/alert-menu-item.d.ts +4 -0
  50. package/dist/components/alert-menu-item/alert-menu-item.d.ts.map +1 -1
  51. package/dist/components/alert-menu-item/alert-menu-item.js.map +1 -1
  52. package/dist/components/chat-message/chat-message.d.ts +3 -0
  53. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  54. package/dist/components/chat-message/chat-message.js.map +1 -1
  55. package/dist/components/elevated-card-radio/elevated-card-radio.d.ts +2 -6
  56. package/dist/components/elevated-card-radio/elevated-card-radio.d.ts.map +1 -1
  57. package/dist/components/elevated-card-radio/elevated-card-radio.js.map +1 -1
  58. package/dist/components/keyboard-numeric/keyboard-numeric.d.ts +6 -0
  59. package/dist/components/keyboard-numeric/keyboard-numeric.d.ts.map +1 -1
  60. package/dist/components/keyboard-numeric/keyboard-numeric.js.map +1 -1
  61. package/dist/components/notification-floating-item/notification-floating-item.d.ts +2 -4
  62. package/dist/components/notification-floating-item/notification-floating-item.d.ts.map +1 -1
  63. package/dist/components/notification-floating-item/notification-floating-item.js.map +1 -1
  64. package/dist/components/sequence-card/sequence-card.d.ts +9 -0
  65. package/dist/components/sequence-card/sequence-card.d.ts.map +1 -1
  66. package/dist/components/sequence-card/sequence-card.js.map +1 -1
  67. package/dist/components/sequence-item/sequence-item.d.ts +5 -0
  68. package/dist/components/sequence-item/sequence-item.d.ts.map +1 -1
  69. package/dist/components/sequence-item/sequence-item.js.map +1 -1
  70. package/dist/components/sequence-modal/sequence-modal.d.ts +4 -0
  71. package/dist/components/sequence-modal/sequence-modal.d.ts.map +1 -1
  72. package/dist/components/sequence-modal/sequence-modal.js.map +1 -1
  73. package/dist/components/sequence-step/sequence-step.d.ts.map +1 -1
  74. package/dist/components/sequence-step/sequence-step.js.map +1 -1
  75. package/dist/components/slider-double/slider-double.d.ts +4 -8
  76. package/dist/components/slider-double/slider-double.d.ts.map +1 -1
  77. package/dist/components/slider-double/slider-double.js.map +1 -1
  78. package/dist/components/status-indicator/status-indicator.d.ts +1 -0
  79. package/dist/components/status-indicator/status-indicator.d.ts.map +1 -1
  80. package/dist/components/status-indicator/status-indicator.js.map +1 -1
  81. package/dist/components/system-menu/system-menu.d.ts +2 -0
  82. package/dist/components/system-menu/system-menu.d.ts.map +1 -1
  83. package/dist/components/system-menu/system-menu.js.map +1 -1
  84. package/dist/components/table-header-item/table-header-item.d.ts +2 -0
  85. package/dist/components/table-header-item/table-header-item.d.ts.map +1 -1
  86. package/dist/components/table-header-item/table-header-item.js.map +1 -1
  87. package/dist/components/tag/tag.d.ts +1 -0
  88. package/dist/components/tag/tag.d.ts.map +1 -1
  89. package/dist/components/tag/tag.js.map +1 -1
  90. package/dist/components/toggletip/toggletip.d.ts +4 -4
  91. package/dist/components/toggletip/toggletip.js.map +1 -1
  92. package/dist/components/user-menu/user-menu.d.ts +1 -0
  93. package/dist/components/user-menu/user-menu.d.ts.map +1 -1
  94. package/dist/components/user-menu/user-menu.js.map +1 -1
  95. package/dist/integration-systems/integration-app-bar/integration-app-bar.d.ts +1 -0
  96. package/dist/integration-systems/integration-app-bar/integration-app-bar.d.ts.map +1 -1
  97. package/dist/integration-systems/integration-app-bar/integration-app-bar.js.map +1 -1
  98. package/dist/integration-systems/integration-bar/integration-bar.d.ts +0 -1
  99. package/dist/integration-systems/integration-bar/integration-bar.d.ts.map +1 -1
  100. package/dist/integration-systems/integration-bar/integration-bar.js.map +1 -1
  101. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.d.ts +9 -9
  102. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.js.map +1 -1
  103. package/dist/integration-systems/integration-fleet-button/integration-fleet-button.d.ts +1 -0
  104. package/dist/integration-systems/integration-fleet-button/integration-fleet-button.d.ts.map +1 -1
  105. package/dist/integration-systems/integration-fleet-button/integration-fleet-button.js.map +1 -1
  106. package/dist/integration-systems/integration-tabs/integration-tabs.d.ts +1 -0
  107. package/dist/integration-systems/integration-tabs/integration-tabs.d.ts.map +1 -1
  108. package/dist/integration-systems/integration-tabs/integration-tabs.js.map +1 -1
  109. package/dist/navigation-instruments/compass-sector/compass-sector.d.ts +0 -1
  110. package/dist/navigation-instruments/compass-sector/compass-sector.d.ts.map +1 -1
  111. package/dist/navigation-instruments/compass-sector/compass-sector.js.map +1 -1
  112. package/dist/navigation-instruments/watch/tickmark.d.ts.map +1 -1
  113. package/dist/navigation-instruments/watch/tickmark.js +17 -7
  114. package/dist/navigation-instruments/watch/tickmark.js.map +1 -1
  115. package/dist/navigation-instruments/watch/watch.d.ts.map +1 -1
  116. package/dist/navigation-instruments/watch/watch.js +2 -2
  117. package/dist/navigation-instruments/watch/watch.js.map +1 -1
  118. package/dist/navigation-instruments/wind-propulsion/wind-propulsion.d.ts +0 -1
  119. package/dist/navigation-instruments/wind-propulsion/wind-propulsion.d.ts.map +1 -1
  120. package/dist/navigation-instruments/wind-propulsion/wind-propulsion.js.map +1 -1
  121. package/dist/pages/alert-detail-page/alert-detail-page.d.ts.map +1 -1
  122. package/dist/pages/alert-detail-page/alert-detail-page.js.map +1 -1
  123. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"toggletip.js","sources":["../../../src/components/toggletip/toggletip.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport toggletipStyle from './toggletip.css?inline';\nimport '../button/button.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../../decorator.js';\n\n/**\n * Enum representing the available visual variants for the Toggletip component.\n *\n * @remarks\n * Use these variants to adjust both the appearance and semantic meaning of a toggletip:\n * - `normal`: Standard appearance for general information.\n * - `raised`: Elevated style with a subtle shadow for emphasis.\n * - `enhanced`: More pronounced styling for critical highlights.\n * - `eco-feedback`: Soft, eco-themed styling ideal for sustainability messages.\n * - `caution`: Warning-style appearance to signal potential issues.\n * - `warning`: Strong alert styling for higher-severity notifications.\n * - `alarm`: High-impact styling for urgent or critical alerts.\n */\nexport enum ToggletipVariant {\n normal = 'normal',\n raised = 'raised',\n enhanced = 'enhanced',\n ecoFeedback = 'eco-feedback',\n caution = 'caution',\n warning = 'warning',\n alarm = 'alarm',\n}\n\n/**\n * `<obc-toggletip>` – A contextual message component for displaying inline notes, feedback, or alerts anchored to a UI element.\n *\n * The toggletip provides brief, focused information or actions related to a specific UI context, often appearing as a floating panel with an arrow pointing to its trigger. It supports a range of visual variants for different semantic meanings, from neutral information to critical alerts.\n *\n * Appears above the interface to deliver context-sensitive guidance, warnings, or actions without disrupting the main workflow. Commonly used for tooltips with rich content, inline help, or actionable notifications.\n *\n * ## Features\n *\n * - **Variants for semantic meaning:**\n * - `normal` (default): Standard informational note.\n * - `raised`: Elevated importance with a dark header for emphasis.\n * - `enhanced`: For primary or enhanced information requiring user attention.\n * - `eco-feedback`: Positive or environmental feedback.\n * - `caution`: Indicates caution or minor issues.\n * - `warning`: Highlights warnings or potential problems.\n * - `alarm`: Signals critical or urgent conditions.\n * - **Customizable layout:**\n * - Optional header (title container) and description.\n * - Optional content area for custom elements or rich content.\n * - Optional action buttons (primary and secondary).\n * - Leading and trailing icon slots for visual context.\n * - Adjustable width via `customWidth` property.\n * - **Icon logic:**\n * - Leading icon is shown by default and adapts to the variant (e.g., warning, alarm, eco-feedback).\n * - Trailing icon slot for additional context or actions.\n * - **Responsive and accessible:**\n * - Content adapts to available space.\n * - All sections (header, description, content, actions) can be toggled independently.\n * - **Events:**\n * - `primary-action`: Fired when the primary action button is clicked.\n * - `secondary-action`: Fired when the secondary action button is clicked.\n *\n * ## Usage Guidelines\n *\n * Use `obc-toggletip` to provide contextual information, warnings, or actions related to a specific UI element or state. Ideal for:\n * - Explaining the purpose or status of a control.\n * - Delivering inline feedback or guidance.\n * - Presenting warnings, cautions, or critical alerts in context.\n * - Offering quick actions related to the message.\n *\n * Avoid using for persistent or global alerts—use a banner or dialog for those cases. For simple tooltips with only text, a lightweight tooltip component may be more appropriate.\n *\n * **TODO(designer):** Confirm if there are recommended maximum lengths for title/description, and if both action buttons should always be shown together or if one is preferred as primary.\n *\n * ## Slots\n *\n * | Slot Name | Renders When... | Purpose |\n * | -------------- | --------------------------- | ----------------------------------------------------- |\n * | leading-icon | `hasLeadingIcon` is true | Main icon representing the message type or context. |\n * | trailing-icon | `hasTrailingIcon` is true | Additional icon for secondary context or actions. |\n * | content | `hasContent` is true | Custom content area for rich or interactive elements. |\n *\n * ## Properties and Configuration\n *\n * - `variant`: Controls the visual style and semantic meaning (see Features above for all options).\n * - `title`: Sets the header text (shown if `hasTitleContainer` is true).\n * - `description`: Sets the main message text (shown if `hasDescription` is true).\n * - `hasTitleContainer`, `hasDescription`, `hasContent`, `hasActions`: Toggle visibility of each section.\n * - `hasLeadingIcon`, `hasTrailingIcon`: Toggle visibility of icon slots.\n * - `primaryButtonLabel`, `secondaryButtonLabel`: Set labels for action buttons (shown if `hasActions` is true).\n * - `customWidth`: Sets a custom width for the toggletip (in pixels).\n *\n * ## Events\n *\n * - `primary-action`: Fired when the primary action button is clicked. Event detail contains `{ label: string }`.\n * - `secondary-action`: Fired when the secondary action button is clicked. Event detail contains `{ label: string }`.\n *\n * ## Best Practices and Constraints\n *\n * - Use the variant that best matches the message's intent (e.g., `alarm` for critical, `eco-feedback` for positive).\n * - Keep messages concise and focused on the immediate context.\n * - Only show both action buttons if both are necessary; otherwise, prefer a single primary action.\n * - The toggletip should point to its related UI element and not obscure important content.\n * - For accessibility, ensure the toggletip is reachable via keyboard and screen reader.\n *\n * ## Example\n *\n * ```html\n * <obc-toggletip\n * variant=\"warning\"\n * title=\"Unsaved Changes\"\n * description=\"You have unsaved edits. Save before leaving.\"\n * hasActions\n * primaryButtonLabel=\"Save\"\n * secondaryButtonLabel=\"Discard\"\n * @primary-action=\"${(e) => console.log('Primary clicked:', e.detail)}\"\n * @secondary-action=\"${(e) => console.log('Secondary clicked:', e.detail)}\"\n * >\n * <obi-warning slot=\"leading-icon\"></obi-warning>\n * <obi-close slot=\"trailing-icon\"></obi-close>\n * <div slot=\"content\">Additional details or controls can go here.</div>\n * </obc-toggletip>\n * ```\n *\n * @slot leading-icon - Main icon representing the message type or context (shown when `hasLeadingIcon` is true)\n * @slot trailing-icon - Additional icon for secondary context or actions (shown when `hasTrailingIcon` is true)\n * @slot content - Custom content area for rich or interactive elements (shown when `hasContent` is true)\n *\n * @fires {CustomEvent} primary-action - Fired when the primary action button is clicked\n * @fires {CustomEvent} secondary-action - Fired when the secondary action button is clicked\n * @beta\n */\n@customElement('obc-toggletip')\nexport class ObcToggletip extends LitElement {\n /**\n * Visual style and semantic meaning of the toggletip.\n *\n * - `normal` (default): Standard informational toggletip.\n * - `raised`: Elevated importance with dark header.\n * - `enhanced`: Used for enhanced or primary information.\n * - `eco-feedback`: Environmental or positive feedback messaging.\n * - `caution`: Indicates caution or minor issues.\n * - `warning`: Highlights warnings or potential problems.\n * - `alarm`: Signals critical or urgent conditions.\n */\n @property({type: String}) variant = 'normal' as ToggletipVariant;\n\n /**\n * Title text displayed in the header.\n */\n @property({type: String}) override title: string = '';\n\n /**\n * Description text shown in the content area.\n */\n @property({type: String}) description: string | undefined;\n\n /**\n * If true, shows the content slot area.\n * Use the `content` slot to provide custom content.\n */\n @property({type: Boolean}) hasContent = false;\n\n /**\n * If true, shows the action buttons container.\n * Both primary and secondary buttons are shown if labels are provided.\n * TODO(designer): Should both buttons always be shown, or is one preferred as primary?\n */\n @property({type: Boolean}) hasActions = false;\n\n /**\n * If true, shows the leading icon in the header.\n * The icon adapts to the current `variant` by default, or can be overridden via the `leading-icon` slot.\n * @availableWhen title!=''\n */\n @property({type: Boolean}) hasLeadingIcon = false;\n\n /**\n * If true, shows the trailing icon in the header.\n * Use the `trailing-icon` slot to provide a custom icon.\n * @availableWhen title!=''\n */\n @property({type: Boolean}) hasTrailingIcon = false;\n\n /**\n * Sets a custom width for the toggletip in pixels.\n * If not set, defaults to 400px.\n */\n @property({type: Number}) customWidth?: number;\n\n /**\n * Label for the primary action button.\n * Only shown if `hasActions` is true.\n * @availableWhen hasActions==true\n */\n @property({type: String}) primaryButtonLabel = 'Label';\n\n /**\n * Label for the secondary action button.\n * Only shown if `hasActions` is true.\n * @availableWhen hasActions==true\n */\n @property({type: String}) secondaryButtonLabel = 'Label';\n\n /**\n * Handles primary button click and dispatches custom event\n */\n private handlePrimaryAction() {\n this.dispatchEvent(\n new CustomEvent('primary-action', {\n detail: {label: this.primaryButtonLabel},\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Handles secondary button click and dispatches custom event\n */\n private handleSecondaryAction() {\n this.dispatchEvent(\n new CustomEvent('secondary-action', {\n detail: {label: this.secondaryButtonLabel},\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private renderLeadingIcon() {\n switch (this.variant) {\n case ToggletipVariant.alarm:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M5.29694 1.72622L1.05702 9.32693C0.838739 9.71823 0.729598 9.91388 0.748108 10.0741C0.764257 10.2138 0.83853 10.3403 0.952704 10.4225C1.08357 10.5167 1.3076 10.5167 1.75567 10.5167H10.233C10.6809 10.5167 10.9049 10.5167 11.0357 10.4225C11.1499 10.3403 11.2242 10.2139 11.2404 10.0741C11.2589 9.914 11.1498 9.71837 10.9317 9.3271L6.69433 1.7264C6.46616 1.31712 6.35207 1.11247 6.20181 1.04447C6.07082 0.985194 5.92064 0.985175 5.78964 1.04442C5.63936 1.11238 5.52522 1.317 5.29694 1.72622Z\"\n fill=\"currentColor\"\n />\n </svg>\n `;\n case ToggletipVariant.warning:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"4.5\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n />\n </svg>\n `;\n case ToggletipVariant.caution:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M2.2998 2H9.7002C9.848 2 9.92907 2.00015 9.9873 2.00488C9.98955 2.00507 9.99213 2.0047 9.99414 2.00488C9.99436 2.0072 9.9949 2.01006 9.99512 2.0127C9.99985 2.07093 10 2.152 10 2.2998V9.7002C10 9.848 9.99985 9.92907 9.99512 9.9873C9.99493 9.98958 9.99433 9.9921 9.99414 9.99414C9.9921 9.99433 9.98958 9.99493 9.9873 9.99512C9.92907 9.99985 9.848 10 9.7002 10H2.2998C2.152 10 2.07093 9.99985 2.0127 9.99512C2.01006 9.9949 2.0072 9.99436 2.00488 9.99414C2.0047 9.99213 2.00507 9.98955 2.00488 9.9873C2.00015 9.92907 2 9.848 2 9.7002V2.2998L2.00488 2.0127C2.0051 2.01009 2.00467 2.00718 2.00488 2.00488C2.00718 2.00467 2.01009 2.0051 2.0127 2.00488L2.2998 2Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n />\n </svg>\n `;\n case ToggletipVariant.ecoFeedback:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 20C11.0667 20 10.1875 19.8542 9.3625 19.5625C8.5375 19.2708 7.78333 18.8583 7.1 18.325L5.7 19.7C5.51667 19.8833 5.28333 19.975 5 19.975C4.71667 19.975 4.48333 19.8833 4.3 19.7C4.11667 19.5167 4.025 19.2833 4.025 19C4.025 18.7167 4.11667 18.4833 4.3 18.3L5.675 16.925C5.14167 16.2417 4.72917 15.4833 4.4375 14.65C4.14583 13.8167 4 12.9333 4 12C4 9.76667 4.775 7.875 6.325 6.325C7.875 4.775 9.76667 4 12 4H20V12C20 14.2333 19.225 16.125 17.675 17.675C16.125 19.225 14.2333 20 12 20ZM16.25 16.25C15.0833 17.4167 13.6667 18 12 18C11.35 18 10.7292 17.9042 10.1375 17.7125C9.54583 17.5208 9.00833 17.25 8.525 16.9L13.7 11.725C13.9 11.525 14 11.2875 14 11.0125C14 10.7375 13.9 10.5 13.7 10.3C13.5167 10.1167 13.2833 10.025 13 10.025C12.7167 10.025 12.4833 10.1167 12.3 10.3L7.125 15.475C6.775 14.9917 6.5 14.4542 6.3 13.8625C6.1 13.2708 6 12.65 6 12C6 10.3333 6.58333 8.91667 7.75 7.75C8.91667 6.58333 10.3333 6 12 6H18V12C18 13.6667 17.4167 15.0833 16.25 16.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n `;\n default:\n return html`<slot name=\"leading-icon\"></slot>`;\n }\n }\n\n override render() {\n const style = this.customWidth ? `width: ${this.customWidth}px` : '';\n\n return html`\n <div\n class=${classMap({\n wrapper: true,\n [this.variant]: true,\n })}\n style=${style}\n >\n <div class=\"container\">\n ${this.title.length > 0\n ? html`\n <div class=\"container-header\">\n <div class=\"title-container\">\n ${this.hasLeadingIcon\n ? html`\n <div class=\"leading-icon\">\n ${this.renderLeadingIcon()}\n </div>\n `\n : ''}\n <div class=\"container-title\">\n <div class=\"title\">${this.title}</div>\n </div>\n </div>\n ${this.hasTrailingIcon\n ? html`\n <div class=\"trailing-icon\">\n <slot name=\"trailing-icon\"></slot>\n </div>\n `\n : ''}\n </div>\n `\n : nothing}\n\n <div class=\"content-container\">\n ${this.description !== undefined\n ? html` <div class=\"description\">${this.description}</div> `\n : nothing}\n ${this.hasContent\n ? html`\n <div class=\"content\">\n <slot name=\"content\"> </slot>\n </div>\n `\n : nothing}\n ${this.hasActions\n ? html`\n <div class=\"action-container\">\n <div class=\"action-button\">\n <obc-button\n ?fullWidth=${true}\n @click=${this.handlePrimaryAction}\n >${this.primaryButtonLabel}</obc-button\n >\n </div>\n <div class=\"action-button\">\n <obc-button\n ?fullWidth=${true}\n @click=${this.handleSecondaryAction}\n >${this.secondaryButtonLabel}</obc-button\n >\n </div>\n </div>\n `\n : nothing}\n </div>\n </div>\n\n <div class=\"bottom-arrow\"></div>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(toggletipStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-toggletip': ObcToggletip;\n }\n}\n"],"names":["ToggletipVariant"],"mappings":"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"}
1
+ {"version":3,"file":"toggletip.js","sources":["../../../src/components/toggletip/toggletip.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport toggletipStyle from './toggletip.css?inline';\nimport '../button/button.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../../decorator.js';\n\n/**\n * Enum representing the available visual variants for the Toggletip component.\n *\n * @remarks\n * Use these variants to adjust both the appearance and semantic meaning of a toggletip:\n * - `normal`: Standard appearance for general information.\n * - `raised`: Elevated style with a subtle shadow for emphasis.\n * - `enhanced`: More pronounced styling for critical highlights.\n * - `eco-feedback`: Soft, eco-themed styling ideal for sustainability messages.\n * - `caution`: Warning-style appearance to signal potential issues.\n * - `warning`: Strong alert styling for higher-severity notifications.\n * - `alarm`: High-impact styling for urgent or critical alerts.\n */\nexport enum ToggletipVariant {\n normal = 'normal',\n raised = 'raised',\n enhanced = 'enhanced',\n ecoFeedback = 'eco-feedback',\n caution = 'caution',\n warning = 'warning',\n alarm = 'alarm',\n}\n\n/**\n * `<obc-toggletip>` – A contextual message component for displaying inline notes, feedback, or alerts anchored to a UI element.\n *\n * The toggletip provides brief, focused information or actions related to a specific UI context, often appearing as a floating panel with an arrow pointing to its trigger. It supports a range of visual variants for different semantic meanings, from neutral information to critical alerts.\n *\n * Appears above the interface to deliver context-sensitive guidance, warnings, or actions without disrupting the main workflow. Commonly used for tooltips with rich content, inline help, or actionable notifications.\n *\n * ## Features\n *\n * - **Variants for semantic meaning:**\n * - `normal` (default): Standard informational note.\n * - `raised`: Elevated importance with a dark header for emphasis.\n * - `enhanced`: For primary or enhanced information requiring user attention.\n * - `eco-feedback`: Positive or environmental feedback.\n * - `caution`: Indicates caution or minor issues.\n * - `warning`: Highlights warnings or potential problems.\n * - `alarm`: Signals critical or urgent conditions.\n * - **Customizable layout:**\n * - Optional header (title container) and description.\n * - Optional content area for custom elements or rich content.\n * - Optional action buttons (primary and secondary).\n * - Leading and trailing icon slots for visual context.\n * - Adjustable width via `customWidth` property.\n * - **Icon logic:**\n * - Leading icon is shown by default and adapts to the variant (e.g., warning, alarm, eco-feedback).\n * - Trailing icon slot for additional context or actions.\n * - **Responsive and accessible:**\n * - Content adapts to available space.\n * - All sections (header, description, content, actions) can be toggled independently.\n * - **Events:**\n * - `primary-action`: Fired when the primary action button is clicked.\n * - `secondary-action`: Fired when the secondary action button is clicked.\n *\n * ## Usage Guidelines\n *\n * Use `obc-toggletip` to provide contextual information, warnings, or actions related to a specific UI element or state. Ideal for:\n * - Explaining the purpose or status of a control.\n * - Delivering inline feedback or guidance.\n * - Presenting warnings, cautions, or critical alerts in context.\n * - Offering quick actions related to the message.\n *\n * Avoid using for persistent or global alerts—use a banner or dialog for those cases. For simple tooltips with only text, a lightweight tooltip component may be more appropriate.\n *\n * **TODO(designer):** Confirm if there are recommended maximum lengths for title/description, and if both action buttons should always be shown together or if one is preferred as primary.\n *\n * ## Slots\n *\n * | Slot Name | Renders When... | Purpose |\n * | -------------- | --------------------------- | ----------------------------------------------------- |\n * | leading-icon | `hasLeadingIcon` is true | Main icon representing the message type or context. |\n * | trailing-icon | `hasTrailingIcon` is true | Additional icon for secondary context or actions. |\n * | content | `hasContent` is true | Custom content area for rich or interactive elements. |\n *\n * ## Properties and Configuration\n *\n * - `variant`: Controls the visual style and semantic meaning (see Features above for all options).\n * - `title`: Sets the header text. The header is shown only when `title` is a non-empty string.\n * - `description`: Sets the main message text. Shown whenever `description` is defined.\n * - `hasContent`, `hasActions`: Toggle visibility of the custom content area and the action buttons.\n * - `hasLeadingIcon`, `hasTrailingIcon`: Toggle visibility of icon slots (only effective when a `title` is set).\n * - `primaryButtonLabel`, `secondaryButtonLabel`: Set labels for action buttons (shown if `hasActions` is true).\n * - `customWidth`: Sets a custom width for the toggletip (in pixels).\n *\n * ## Events\n *\n * - `primary-action`: Fired when the primary action button is clicked. Event detail contains `{ label: string }`.\n * - `secondary-action`: Fired when the secondary action button is clicked. Event detail contains `{ label: string }`.\n *\n * ## Best Practices and Constraints\n *\n * - Use the variant that best matches the message's intent (e.g., `alarm` for critical, `eco-feedback` for positive).\n * - Keep messages concise and focused on the immediate context.\n * - Only show both action buttons if both are necessary; otherwise, prefer a single primary action.\n * - The toggletip should point to its related UI element and not obscure important content.\n * - For accessibility, ensure the toggletip is reachable via keyboard and screen reader.\n *\n * ## Example\n *\n * ```html\n * <obc-toggletip\n * variant=\"warning\"\n * title=\"Unsaved Changes\"\n * description=\"You have unsaved edits. Save before leaving.\"\n * hasActions\n * primaryButtonLabel=\"Save\"\n * secondaryButtonLabel=\"Discard\"\n * @primary-action=\"${(e) => console.log('Primary clicked:', e.detail)}\"\n * @secondary-action=\"${(e) => console.log('Secondary clicked:', e.detail)}\"\n * >\n * <obi-warning slot=\"leading-icon\"></obi-warning>\n * <obi-close slot=\"trailing-icon\"></obi-close>\n * <div slot=\"content\">Additional details or controls can go here.</div>\n * </obc-toggletip>\n * ```\n *\n * @slot leading-icon - Main icon representing the message type or context (shown when `hasLeadingIcon` is true)\n * @slot trailing-icon - Additional icon for secondary context or actions (shown when `hasTrailingIcon` is true)\n * @slot content - Custom content area for rich or interactive elements (shown when `hasContent` is true)\n *\n * @fires {CustomEvent} primary-action - Fired when the primary action button is clicked\n * @fires {CustomEvent} secondary-action - Fired when the secondary action button is clicked\n * @beta\n */\n@customElement('obc-toggletip')\nexport class ObcToggletip extends LitElement {\n /**\n * Visual style and semantic meaning of the toggletip.\n *\n * - `normal` (default): Standard informational toggletip.\n * - `raised`: Elevated importance with dark header.\n * - `enhanced`: Used for enhanced or primary information.\n * - `eco-feedback`: Environmental or positive feedback messaging.\n * - `caution`: Indicates caution or minor issues.\n * - `warning`: Highlights warnings or potential problems.\n * - `alarm`: Signals critical or urgent conditions.\n */\n @property({type: String}) variant = 'normal' as ToggletipVariant;\n\n /**\n * Title text displayed in the header.\n */\n @property({type: String}) override title: string = '';\n\n /**\n * Description text shown in the content area.\n */\n @property({type: String}) description: string | undefined;\n\n /**\n * If true, shows the content slot area.\n * Use the `content` slot to provide custom content.\n */\n @property({type: Boolean}) hasContent = false;\n\n /**\n * If true, shows the action buttons container.\n * Both primary and secondary buttons are shown if labels are provided.\n * TODO(designer): Should both buttons always be shown, or is one preferred as primary?\n */\n @property({type: Boolean}) hasActions = false;\n\n /**\n * If true, shows the leading icon in the header.\n * The icon adapts to the current `variant` by default, or can be overridden via the `leading-icon` slot.\n * @availableWhen title!=''\n */\n @property({type: Boolean}) hasLeadingIcon = false;\n\n /**\n * If true, shows the trailing icon in the header.\n * Use the `trailing-icon` slot to provide a custom icon.\n * @availableWhen title!=''\n */\n @property({type: Boolean}) hasTrailingIcon = false;\n\n /**\n * Sets a custom width for the toggletip in pixels.\n * If not set, defaults to 400px.\n */\n @property({type: Number}) customWidth?: number;\n\n /**\n * Label for the primary action button.\n * Only shown if `hasActions` is true.\n * @availableWhen hasActions==true\n */\n @property({type: String}) primaryButtonLabel = 'Label';\n\n /**\n * Label for the secondary action button.\n * Only shown if `hasActions` is true.\n * @availableWhen hasActions==true\n */\n @property({type: String}) secondaryButtonLabel = 'Label';\n\n /**\n * Handles primary button click and dispatches custom event\n */\n private handlePrimaryAction() {\n this.dispatchEvent(\n new CustomEvent('primary-action', {\n detail: {label: this.primaryButtonLabel},\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Handles secondary button click and dispatches custom event\n */\n private handleSecondaryAction() {\n this.dispatchEvent(\n new CustomEvent('secondary-action', {\n detail: {label: this.secondaryButtonLabel},\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private renderLeadingIcon() {\n switch (this.variant) {\n case ToggletipVariant.alarm:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M5.29694 1.72622L1.05702 9.32693C0.838739 9.71823 0.729598 9.91388 0.748108 10.0741C0.764257 10.2138 0.83853 10.3403 0.952704 10.4225C1.08357 10.5167 1.3076 10.5167 1.75567 10.5167H10.233C10.6809 10.5167 10.9049 10.5167 11.0357 10.4225C11.1499 10.3403 11.2242 10.2139 11.2404 10.0741C11.2589 9.914 11.1498 9.71837 10.9317 9.3271L6.69433 1.7264C6.46616 1.31712 6.35207 1.11247 6.20181 1.04447C6.07082 0.985194 5.92064 0.985175 5.78964 1.04442C5.63936 1.11238 5.52522 1.317 5.29694 1.72622Z\"\n fill=\"currentColor\"\n />\n </svg>\n `;\n case ToggletipVariant.warning:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"4.5\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n />\n </svg>\n `;\n case ToggletipVariant.caution:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M2.2998 2H9.7002C9.848 2 9.92907 2.00015 9.9873 2.00488C9.98955 2.00507 9.99213 2.0047 9.99414 2.00488C9.99436 2.0072 9.9949 2.01006 9.99512 2.0127C9.99985 2.07093 10 2.152 10 2.2998V9.7002C10 9.848 9.99985 9.92907 9.99512 9.9873C9.99493 9.98958 9.99433 9.9921 9.99414 9.99414C9.9921 9.99433 9.98958 9.99493 9.9873 9.99512C9.92907 9.99985 9.848 10 9.7002 10H2.2998C2.152 10 2.07093 9.99985 2.0127 9.99512C2.01006 9.9949 2.0072 9.99436 2.00488 9.99414C2.0047 9.99213 2.00507 9.98955 2.00488 9.9873C2.00015 9.92907 2 9.848 2 9.7002V2.2998L2.00488 2.0127C2.0051 2.01009 2.00467 2.00718 2.00488 2.00488C2.00718 2.00467 2.01009 2.0051 2.0127 2.00488L2.2998 2Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n />\n </svg>\n `;\n case ToggletipVariant.ecoFeedback:\n return html`\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 20C11.0667 20 10.1875 19.8542 9.3625 19.5625C8.5375 19.2708 7.78333 18.8583 7.1 18.325L5.7 19.7C5.51667 19.8833 5.28333 19.975 5 19.975C4.71667 19.975 4.48333 19.8833 4.3 19.7C4.11667 19.5167 4.025 19.2833 4.025 19C4.025 18.7167 4.11667 18.4833 4.3 18.3L5.675 16.925C5.14167 16.2417 4.72917 15.4833 4.4375 14.65C4.14583 13.8167 4 12.9333 4 12C4 9.76667 4.775 7.875 6.325 6.325C7.875 4.775 9.76667 4 12 4H20V12C20 14.2333 19.225 16.125 17.675 17.675C16.125 19.225 14.2333 20 12 20ZM16.25 16.25C15.0833 17.4167 13.6667 18 12 18C11.35 18 10.7292 17.9042 10.1375 17.7125C9.54583 17.5208 9.00833 17.25 8.525 16.9L13.7 11.725C13.9 11.525 14 11.2875 14 11.0125C14 10.7375 13.9 10.5 13.7 10.3C13.5167 10.1167 13.2833 10.025 13 10.025C12.7167 10.025 12.4833 10.1167 12.3 10.3L7.125 15.475C6.775 14.9917 6.5 14.4542 6.3 13.8625C6.1 13.2708 6 12.65 6 12C6 10.3333 6.58333 8.91667 7.75 7.75C8.91667 6.58333 10.3333 6 12 6H18V12C18 13.6667 17.4167 15.0833 16.25 16.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n `;\n default:\n return html`<slot name=\"leading-icon\"></slot>`;\n }\n }\n\n override render() {\n const style = this.customWidth ? `width: ${this.customWidth}px` : '';\n\n return html`\n <div\n class=${classMap({\n wrapper: true,\n [this.variant]: true,\n })}\n style=${style}\n >\n <div class=\"container\">\n ${this.title.length > 0\n ? html`\n <div class=\"container-header\">\n <div class=\"title-container\">\n ${this.hasLeadingIcon\n ? html`\n <div class=\"leading-icon\">\n ${this.renderLeadingIcon()}\n </div>\n `\n : ''}\n <div class=\"container-title\">\n <div class=\"title\">${this.title}</div>\n </div>\n </div>\n ${this.hasTrailingIcon\n ? html`\n <div class=\"trailing-icon\">\n <slot name=\"trailing-icon\"></slot>\n </div>\n `\n : ''}\n </div>\n `\n : nothing}\n\n <div class=\"content-container\">\n ${this.description !== undefined\n ? html` <div class=\"description\">${this.description}</div> `\n : nothing}\n ${this.hasContent\n ? html`\n <div class=\"content\">\n <slot name=\"content\"> </slot>\n </div>\n `\n : nothing}\n ${this.hasActions\n ? html`\n <div class=\"action-container\">\n <div class=\"action-button\">\n <obc-button\n ?fullWidth=${true}\n @click=${this.handlePrimaryAction}\n >${this.primaryButtonLabel}</obc-button\n >\n </div>\n <div class=\"action-button\">\n <obc-button\n ?fullWidth=${true}\n @click=${this.handleSecondaryAction}\n >${this.secondaryButtonLabel}</obc-button\n >\n </div>\n </div>\n `\n : nothing}\n </div>\n </div>\n\n <div class=\"bottom-arrow\"></div>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(toggletipStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-toggletip': ObcToggletip;\n }\n}\n"],"names":["ToggletipVariant"],"mappings":"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"}
@@ -84,6 +84,7 @@ export type ObcUserMenuSignedInAction = {
84
84
  * ></obc-user-menu>
85
85
  * ```
86
86
  *
87
+ * @slot signed-in-action-icon-<id> - Optional icon for a signed-in action, one per action; `<id>` is the normalized action id (shown in the `signed-in` type).
87
88
  * @fires sign-in-click {CustomEvent<{username: string, password: string}>}
88
89
  * @fires sign-out-click
89
90
  * @fires signed-in-action-click {CustomEvent<{id: string, label: string}>}
@@ -1 +1 @@
1
- {"version":3,"file":"user-menu.d.ts","sourceRoot":"","sources":["../../../src/components/user-menu/user-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAA2B,MAAM,KAAK,CAAC;AAKzE,OAAO,yCAAyC,CAAC;AACjD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,uCAAuC,CAAC;AAC/C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0BAA0B,CAAC;AAalC,oBAAY,eAAe;IACzB,MAAM,YAAY;IAClB,UAAU,iBAAiB;IAC3B,aAAa,oBAAoB;IACjC,QAAQ,cAAc;CACvB;AAED,oBAAY,eAAe;IACzB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,qBAEa,WAAY,SAAQ,UAAU;IACzC;;OAEG;IACuB,IAAI,EAAE,eAAe,CAA0B;IAEzE;;OAEG;IACuB,IAAI,EAAE,eAAe,CAA2B;IAE1E;;;OAGG;IAEH,mBAAmB,UAAS;IAE5B;;;OAGG;IACuB,QAAQ,SAAM;IAExC;;;OAGG;IACuB,QAAQ,SAAM;IAExC;;;OAGG;IACuB,aAAa,SAAM;IAE7C;;;OAGG;IACuB,aAAa,SAAM;IAE7C;;;OAGG;IACuB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEhD;;;OAGG;IACuB,SAAS,CAAC,EAAE,MAAM,CAAC;IAE7C;;OAEG;IAEH,WAAW,EAAE,eAAe,EAAE,CAAM;IAEpC;;;OAGG;IAEH,eAAe,EAAE,yBAAyB,EAAE,CAAM;IAElD,OAAO,KAAK,sBAAsB,GAOjC;IAED,OAAO,KAAK,kBAAkB,GAO7B;IAED,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,qBAAqB;IAwC7B,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,cAAc;IA0CtB,OAAO,CAAC,mBAAmB;IAmClB,MAAM;IAwCf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,WAAW,CAAC;KAC9B;CACF"}
1
+ {"version":3,"file":"user-menu.d.ts","sourceRoot":"","sources":["../../../src/components/user-menu/user-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAA2B,MAAM,KAAK,CAAC;AAKzE,OAAO,yCAAyC,CAAC;AACjD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,uCAAuC,CAAC;AAC/C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0BAA0B,CAAC;AAalC,oBAAY,eAAe;IACzB,MAAM,YAAY;IAClB,UAAU,iBAAiB;IAC3B,aAAa,oBAAoB;IACjC,QAAQ,cAAc;CACvB;AAED,oBAAY,eAAe;IACzB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,qBAEa,WAAY,SAAQ,UAAU;IACzC;;OAEG;IACuB,IAAI,EAAE,eAAe,CAA0B;IAEzE;;OAEG;IACuB,IAAI,EAAE,eAAe,CAA2B;IAE1E;;;OAGG;IAEH,mBAAmB,UAAS;IAE5B;;;OAGG;IACuB,QAAQ,SAAM;IAExC;;;OAGG;IACuB,QAAQ,SAAM;IAExC;;;OAGG;IACuB,aAAa,SAAM;IAE7C;;;OAGG;IACuB,aAAa,SAAM;IAE7C;;;OAGG;IACuB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEhD;;;OAGG;IACuB,SAAS,CAAC,EAAE,MAAM,CAAC;IAE7C;;OAEG;IAEH,WAAW,EAAE,eAAe,EAAE,CAAM;IAEpC;;;OAGG;IAEH,eAAe,EAAE,yBAAyB,EAAE,CAAM;IAElD,OAAO,KAAK,sBAAsB,GAOjC;IAED,OAAO,KAAK,kBAAkB,GAO7B;IAED,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,qBAAqB;IAwC7B,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,cAAc;IA0CtB,OAAO,CAAC,mBAAmB;IAmClB,MAAM;IAwCf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,WAAW,CAAC;KAC9B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-menu.js","sources":["../../../src/components/user-menu/user-menu.ts"],"sourcesContent":["import {LitElement, TemplateResult, html, nothing, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../../decorator.js';\nimport componentStyle from './user-menu.css?inline';\nimport '../text-input-field/text-input-field.js';\nimport '../button/button.js';\nimport '../user-button/user-button.js';\nimport '../progress-bar/progress-bar.js';\nimport '../navigation-item/navigation-item.js';\nimport '../../icons/icon-calendar-google.js';\nimport '../../icons/icon-log-open-google.js';\nimport '../../icons/icon-settings-iec.js';\nimport '../../icons/icon-user.js';\nimport {\n HTMLInputTypeAttribute,\n ObcTextInputFieldTextAlign,\n} from '../text-input-field/text-input-field.js';\nimport {ButtonVariant} from '../button/button.js';\nimport {\n ProgressBarMode,\n ProgressBarType,\n} from '../progress-bar/progress-bar.js';\nimport {Size, StyleType, Variant} from '../user-button/user-button.js';\nimport {localized, msg} from '@lit/localize';\n\nexport enum ObcUserMenuType {\n signIn = 'sign-in',\n userSignIn = 'user-sign-in',\n loadingSignIn = 'loading-sign-in',\n signedIn = 'signed-in',\n}\n\nexport enum ObcUserMenuSize {\n regular = 'regular',\n small = 'small',\n}\n\nexport type ObcUserMenuUser = {\n initials: string;\n label: string;\n};\n\nexport type ObcUserMenuSignedInAction = {\n id: string;\n label: string;\n};\n\n/**\n * `<obc-user-menu>` – A user menu component with sign-in and signed-in layouts.\n *\n * Provides multiple layouts for authentication and account access states, including\n * sign-in forms, user-specific sign-in, loading states, and signed-in navigation.\n *\n * ### Features\n * - **Multiple States:** Supports sign-in, user sign-in, loading, and signed-in layouts.\n * - **Size Options:** Regular and small sizes for compact layouts.\n * - **Recent Users:** Optional \"Recently signed in\" section for quick access.\n * - **Navigation Actions:** Signed-in state includes navigation items and actions.\n *\n * ### Variants\n * - `type`: `sign-in`, `user-sign-in`, `loading-sign-in`, `signed-in`\n * - `size`: `regular`, `small`\n *\n * ### Usage Guidelines\n * Use `obc-user-menu` in authentication or account panels where quick access to\n * sign-in, profile, or account actions is needed. The `user-sign-in` type is\n * best for fast re-auth flows; `loading-sign-in` is for pending auth states.\n *\n * ### Properties and Configuration\n * - `type` (`ObcUserMenuType`): Controls the layout state. Defaults to `sign-in`.\n * - `size` (`ObcUserMenuSize`): Controls the overall size. Defaults to `regular`.\n * - `hasRecentlySignedIn` (`boolean`): Toggles the recent users section.\n * Defaults to `true`.\n * - `username` (`string`): Current username value for sign-in layouts.\n * - `password` (`string`): Current password value for sign-in layouts.\n * - `usernameError` (`string`): Error message for the username field.\n * - `passwordError` (`string`): Error message for the password field.\n * - `userInitials` (`string`): Initials for the primary user profile.\n * - `userLabel` (`string`): Label for the primary user profile.\n * - `recentUsers` (`ObcUserMenuUser[]`): List of recent users shown in the\n * \"Recently signed in\" section.\n * - `signedInActions` (`ObcUserMenuSignedInAction[]`): Actions shown in the\n * signed-in navigation list.\n *\n * ### Events\n * - `sign-in-click` – Fired when a sign-in button is clicked.\n * - `sign-out-click` – Fired when the sign-out button is clicked.\n * - `signed-in-action-click` – Fired when a signed-in action is clicked.\n * - `recent-user-click` – Fired when a recent user button is clicked.\n *\n * ### Slots\n * - `signed-in-action-icon-{id}`: Optional icon for a signed-in action. The\n * `{id}` is the normalized action id.\n *\n * ### Example\n * ```html\n * <obc-user-menu\n * type=\"user-sign-in\"\n * size=\"small\"\n * hasRecentlySignedIn=\"false\"\n * userInitials=\"JD\"\n * userLabel=\"John Doe\"\n * ></obc-user-menu>\n * ```\n *\n * @fires sign-in-click {CustomEvent<{username: string, password: string}>}\n * @fires sign-out-click\n * @fires signed-in-action-click {CustomEvent<{id: string, label: string}>}\n * @fires recent-user-click {CustomEvent<{initials: string, label: string}>}\n * @stable\n */\n@customElement('obc-user-menu')\n@localized()\nexport class ObcUserMenu extends LitElement {\n /**\n * Controls the visual layout of the user menu.\n */\n @property({type: String}) type: ObcUserMenuType = ObcUserMenuType.signIn;\n\n /**\n * Controls the overall size of the user menu.\n */\n @property({type: String}) size: ObcUserMenuSize = ObcUserMenuSize.regular;\n\n /**\n * Toggles the \"Recently signed in\" section visibility.\n * @availableWhen type in [signIn, userSignIn]\n */\n @property({type: Boolean})\n hasRecentlySignedIn = false;\n\n /**\n * Current username value for sign-in layouts.\n * @availableWhen type==signIn\n */\n @property({type: String}) username = '';\n\n /**\n * Current password value for sign-in layouts.\n * @availableWhen type in [signIn, userSignIn]\n */\n @property({type: String}) password = '';\n\n /**\n * Error message for the username field.\n * @availableWhen type==signIn\n */\n @property({type: String}) usernameError = '';\n\n /**\n * Error message for the password field.\n * @availableWhen type in [signIn, userSignIn]\n */\n @property({type: String}) passwordError = '';\n\n /**\n * Initials for the primary user profile.\n * @availableWhen type!=signIn\n */\n @property({type: String}) userInitials?: string;\n\n /**\n * Label for the primary user profile.\n * @availableWhen type!=signIn\n */\n @property({type: String}) userLabel?: string;\n\n /**\n * Recent users for the \"Recently signed in\" section.\n */\n @property({type: Array, attribute: false})\n recentUsers: ObcUserMenuUser[] = [];\n\n /**\n * Actions shown in the signed-in navigation list.\n * @availableWhen type==signedIn\n */\n @property({type: Array, attribute: false})\n signedInActions: ObcUserMenuSignedInAction[] = [];\n\n private get defaultSignedInActions() {\n return [\n {id: 'calendar', label: msg('Calendar')},\n {id: 'log', label: msg('Log')},\n {id: 'preferences', label: msg('Preferences')},\n {id: 'user-account', label: msg('User account')},\n ];\n }\n\n private get defaultRecentUsers() {\n const label = msg('Username');\n return [\n {initials: 'AB', label},\n {initials: 'CD', label},\n {initials: 'EF', label},\n ];\n }\n\n private renderTextInput(\n placeholder: string,\n type: HTMLInputTypeAttribute = HTMLInputTypeAttribute.Text,\n value = '',\n onInput?: (event: Event) => void,\n errorText = ''\n ) {\n const isPassword = type === HTMLInputTypeAttribute.Password;\n return html`\n <obc-text-input-field\n .placeholder=${placeholder}\n .type=${type}\n .textAlign=${ObcTextInputFieldTextAlign.Left}\n .value=${value}\n .error=${Boolean(errorText)}\n .errorText=${errorText}\n .required=${true}\n .hasClearButton=${!isPassword}\n @input=${onInput}\n >\n </obc-text-input-field>\n `;\n }\n\n private renderUserButtons(count: number, isLarge: boolean) {\n const size = isLarge ? Size.large : Size.regular;\n const users = (\n this.recentUsers.length ? this.recentUsers : this.defaultRecentUsers\n ).slice(0, count);\n return html`\n <div\n class=${classMap({\n users: true,\n large: isLarge,\n single: users.length === 1,\n })}\n >\n ${users.map(\n (user) => html`\n <obc-user-button\n .variant=${Variant.initials}\n .styleType=${StyleType.normal}\n .size=${size}\n .initials=${user.initials}\n .label=${user.label}\n @click=${() => this.handleRecentUserClick(user)}\n ></obc-user-button>\n `\n )}\n </div>\n `;\n }\n\n private renderUserProfile(\n layout: 'vertical' | 'horizontal',\n size: 'large' | 'regular',\n initials?: string,\n label?: string\n ) {\n const userButtonSize = size === 'large' ? Size.large : Size.regular;\n const fallbackUser = this.recentUsers[0] ?? this.defaultRecentUsers[0];\n const resolvedInitials =\n initials ?? this.userInitials ?? fallbackUser.initials;\n const resolvedLabel = label ?? this.userLabel ?? fallbackUser.label;\n return html`\n <div\n class=${classMap({\n 'user-profile': true,\n [layout]: true,\n })}\n >\n <obc-user-button\n class=${classMap({\n 'user-avatar': true,\n [`size-${size}`]: true,\n })}\n .variant=${Variant.initials}\n .styleType=${StyleType.normal}\n .size=${userButtonSize}\n .initials=${resolvedInitials}\n .label=${resolvedLabel}\n ></obc-user-button>\n </div>\n `;\n }\n\n private getSignedInActionIcon(actionId: string) {\n switch (actionId) {\n case 'calendar':\n return html`<obi-calendar-google></obi-calendar-google>`;\n case 'log':\n return html`<obi-log-open-google></obi-log-open-google>`;\n case 'preferences':\n return html`<obi-settings-iec></obi-settings-iec>`;\n case 'user-account':\n return html`<obi-user></obi-user>`;\n default:\n return nothing;\n }\n }\n\n private normalizeActionId(actionId: string) {\n return actionId\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-');\n }\n\n private handleSignedInActionClick(action: ObcUserMenuSignedInAction) {\n this.dispatchEvent(\n new CustomEvent('signed-in-action-click', {\n detail: {id: action.id, label: action.label},\n })\n );\n }\n\n private handleRecentUserClick(user: ObcUserMenuUser) {\n this.dispatchEvent(\n new CustomEvent('recent-user-click', {\n detail: {initials: user.initials, label: user.label},\n })\n );\n }\n\n private handleUsernameInput(event: Event) {\n const target = event.target as {value?: string};\n this.username = target.value ?? '';\n if (this.username) {\n this.usernameError = '';\n }\n }\n\n private handlePasswordInput(event: Event) {\n const target = event.target as {value?: string};\n this.password = target.value ?? '';\n if (this.password) {\n this.passwordError = '';\n }\n }\n\n private validateSignIn() {\n let valid = true;\n const needsUsername = this.type === ObcUserMenuType.signIn;\n\n if (needsUsername && !this.username) {\n this.usernameError = msg('Username is required');\n valid = false;\n }\n\n if (!this.password) {\n this.passwordError = msg('Password is required');\n valid = false;\n }\n\n return valid;\n }\n\n private handleSignInClick() {\n if (!this.validateSignIn()) {\n return;\n }\n this.dispatchEvent(\n new CustomEvent('sign-in-click', {\n detail: {username: this.username, password: this.password},\n })\n );\n }\n\n private handleSignOutClick() {\n this.dispatchEvent(new CustomEvent('sign-out-click'));\n }\n\n private renderSignIn() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"login-container\">\n ${this.renderTextInput(\n msg('Username'),\n HTMLInputTypeAttribute.Text,\n this.username,\n this.handleUsernameInput.bind(this),\n this.usernameError\n )}\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recently signed in')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, true)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderSignInSmall() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"login-container\">\n ${this.renderTextInput(\n msg('Username'),\n HTMLInputTypeAttribute.Text,\n this.username,\n this.handleUsernameInput.bind(this),\n this.usernameError\n )}\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n <div class=\"divider\" aria-hidden=\"true\"></div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container recent\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recent')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, false)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderUserSignIn() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"login-container\">\n <div class=\"user-primary\">\n ${this.renderUserProfile('vertical', 'large')}\n </div>\n <div class=\"fields\">\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n </div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recently signed in')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, true)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderUserSignInSmall() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"user-container\">\n ${this.renderUserProfile('horizontal', 'regular')}\n </div>\n <div class=\"login-container\">\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n <div class=\"divider\" aria-hidden=\"true\"></div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container recent\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recent')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, false)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderLoadingSignIn() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"user-primary loading\">\n ${this.renderUserProfile('vertical', 'large')}\n <obc-progress-bar\n class=\"progress\"\n type=${ProgressBarType.linear}\n mode=${ProgressBarMode.indeterminate}\n .showValue=${false}\n ></obc-progress-bar>\n </div>\n `;\n }\n\n private renderLoadingSignInSmall() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"user-primary loading\">\n ${this.renderUserProfile('horizontal', 'regular')}\n <obc-progress-bar\n class=\"progress\"\n type=${ProgressBarType.linear}\n mode=${ProgressBarMode.indeterminate}\n .showValue=${false}\n ></obc-progress-bar>\n </div>\n `;\n }\n\n private renderSignedIn() {\n const actions = this.signedInActions.length\n ? this.signedInActions\n : this.defaultSignedInActions;\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('User')}</h3>\n </div>\n <div class=\"user-primary signed-in\">\n ${this.renderUserProfile('vertical', 'large')}\n </div>\n <div class=\"divider\" aria-hidden=\"true\"></div>\n <div class=\"nav-container\">\n ${actions.map((action) => {\n const normalizedId = this.normalizeActionId(action.id);\n return html`\n <obc-navigation-item\n .label=${action.label}\n hasIcon\n @click=${() => this.handleSignedInActionClick(action)}\n >\n <span slot=\"icon\">\n <slot name=\"signed-in-action-icon-${normalizedId}\">\n ${this.getSignedInActionIcon(normalizedId)}\n </slot>\n </span>\n </obc-navigation-item>\n `;\n })}\n </div>\n <div class=\"button-container\">\n <obc-button\n variant=${ButtonVariant.normal}\n fullWidth\n @click=${this.handleSignOutClick}\n >\n ${msg('Sign out')}\n </obc-button>\n </div>\n `;\n }\n\n private renderSignedInSmall() {\n const actions = this.signedInActions.length\n ? this.signedInActions\n : this.defaultSignedInActions;\n const primaryAction = actions[2];\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('User')}</h3>\n </div>\n <div class=\"user-container\">\n ${this.renderUserProfile('horizontal', 'regular')}\n </div>\n <div class=\"button-container\">\n ${primaryAction\n ? html`\n <obc-button\n variant=${ButtonVariant.normal}\n fullWidth\n @click=${() => this.handleSignedInActionClick(primaryAction)}\n >\n ${primaryAction.label}\n </obc-button>\n `\n : nothing}\n <obc-button\n variant=${ButtonVariant.normal}\n fullWidth\n @click=${this.handleSignOutClick}\n >\n ${msg('Sign out')}\n </obc-button>\n </div>\n `;\n }\n\n override render() {\n let content: TemplateResult | symbol = nothing;\n if (this.type === ObcUserMenuType.signIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderSignInSmall()\n : this.renderSignIn();\n }\n if (this.type === ObcUserMenuType.userSignIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderUserSignInSmall()\n : this.renderUserSignIn();\n }\n if (this.type === ObcUserMenuType.loadingSignIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderLoadingSignInSmall()\n : this.renderLoadingSignIn();\n }\n if (this.type === ObcUserMenuType.signedIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderSignedInSmall()\n : this.renderSignedIn();\n }\n\n return html`\n <div\n class=${classMap({\n card: true,\n [`size-${this.size}`]: true,\n [`type-${this.type}`]: true,\n })}\n >\n ${content}\n </div>\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-user-menu': ObcUserMenu;\n }\n}\n"],"names":["ObcUserMenuType","ObcUserMenuSize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,IAAK,oCAAAA,qBAAL;AACLA,mBAAA,QAAA,IAAS;AACTA,mBAAA,YAAA,IAAa;AACbA,mBAAA,eAAA,IAAgB;AAChBA,mBAAA,UAAA,IAAW;AAJD,SAAAA;AAAA,GAAA,mBAAA,CAAA,CAAA;AAOL,IAAK,oCAAAC,qBAAL;AACLA,mBAAA,SAAA,IAAU;AACVA,mBAAA,OAAA,IAAQ;AAFE,SAAAA;AAAA,GAAA,mBAAA,CAAA,CAAA;AAiFL,IAAM,cAAN,cAA0B,WAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIqB,SAAA,OAAwB;AAKxB,SAAA,OAAwB;AAOlD,SAAA,sBAAsB;AAMI,SAAA,WAAW;AAMX,SAAA,WAAW;AAMX,SAAA,gBAAgB;AAMhB,SAAA,gBAAgB;AAkB1C,SAAA,cAAiC,CAAA;AAOjC,SAAA,kBAA+C,CAAA;AAAA,EAAC;AAAA,EAEhD,IAAY,yBAAyB;AACnC,WAAO;AAAA,MACL,EAAC,IAAI,YAAY,OAAO,IAAI,UAAU,EAAA;AAAA,MACtC,EAAC,IAAI,OAAO,OAAO,IAAI,KAAK,EAAA;AAAA,MAC5B,EAAC,IAAI,eAAe,OAAO,IAAI,aAAa,EAAA;AAAA,MAC5C,EAAC,IAAI,gBAAgB,OAAO,IAAI,cAAc,EAAA;AAAA,IAAC;AAAA,EAEnD;AAAA,EAEA,IAAY,qBAAqB;AAC/B,UAAM,QAAQ,IAAI,UAAU;AAC5B,WAAO;AAAA,MACL,EAAC,UAAU,MAAM,MAAA;AAAA,MACjB,EAAC,UAAU,MAAM,MAAA;AAAA,MACjB,EAAC,UAAU,MAAM,MAAA;AAAA,IAAK;AAAA,EAE1B;AAAA,EAEQ,gBACN,aACA,OAA+B,uBAAuB,MACtD,QAAQ,IACR,SACA,YAAY,IACZ;AACA,UAAM,aAAa,SAAS,uBAAuB;AACnD,WAAO;AAAA;AAAA,uBAEY,WAAW;AAAA,gBAClB,IAAI;AAAA,qBACC,2BAA2B,IAAI;AAAA,iBACnC,KAAK;AAAA,iBACL,QAAQ,SAAS,CAAC;AAAA,qBACd,SAAS;AAAA,oBACV,IAAI;AAAA,0BACE,CAAC,UAAU;AAAA,iBACpB,OAAO;AAAA;AAAA;AAAA;AAAA,EAItB;AAAA,EAEQ,kBAAkB,OAAe,SAAkB;AACzD,UAAM,OAAO,UAAU,KAAK,QAAQ,KAAK;AACzC,UAAM,SACJ,KAAK,YAAY,SAAS,KAAK,cAAc,KAAK,oBAClD,MAAM,GAAG,KAAK;AAChB,WAAO;AAAA;AAAA,gBAEK,SAAS;AAAA,MACf,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ,MAAM,WAAW;AAAA,IAAA,CAC1B,CAAC;AAAA;AAAA,UAEA,MAAM;AAAA,MACN,CAAC,SAAS;AAAA;AAAA,yBAEK,QAAQ,QAAQ;AAAA,2BACd,UAAU,MAAM;AAAA,sBACrB,IAAI;AAAA,0BACA,KAAK,QAAQ;AAAA,uBAChB,KAAK,KAAK;AAAA,uBACV,MAAM,KAAK,sBAAsB,IAAI,CAAC;AAAA;AAAA;AAAA,IAAA,CAGpD;AAAA;AAAA;AAAA,EAGP;AAAA,EAEQ,kBACN,QACA,MACA,UACA,OACA;AACA,UAAM,iBAAiB,SAAS,UAAU,KAAK,QAAQ,KAAK;AAC5D,UAAM,eAAe,KAAK,YAAY,CAAC,KAAK,KAAK,mBAAmB,CAAC;AACrE,UAAM,mBACJ,YAAY,KAAK,gBAAgB,aAAa;AAChD,UAAM,gBAAgB,SAAS,KAAK,aAAa,aAAa;AAC9D,WAAO;AAAA;AAAA,gBAEK,SAAS;AAAA,MACf,gBAAgB;AAAA,MAChB,CAAC,MAAM,GAAG;AAAA,IAAA,CACX,CAAC;AAAA;AAAA;AAAA,kBAGQ,SAAS;AAAA,MACf,eAAe;AAAA,MACf,CAAC,QAAQ,IAAI,EAAE,GAAG;AAAA,IAAA,CACnB,CAAC;AAAA,qBACS,QAAQ,QAAQ;AAAA,uBACd,UAAU,MAAM;AAAA,kBACrB,cAAc;AAAA,sBACV,gBAAgB;AAAA,mBACnB,aAAa;AAAA;AAAA;AAAA;AAAA,EAI9B;AAAA,EAEQ,sBAAsB,UAAkB;AAC9C,YAAQ,UAAA;AAAA,MACN,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAAA,EAEQ,kBAAkB,UAAkB;AAC1C,WAAO,SACJ,OACA,cACA,QAAQ,eAAe,GAAG;AAAA,EAC/B;AAAA,EAEQ,0BAA0B,QAAmC;AACnE,SAAK;AAAA,MACH,IAAI,YAAY,0BAA0B;AAAA,QACxC,QAAQ,EAAC,IAAI,OAAO,IAAI,OAAO,OAAO,MAAA;AAAA,MAAK,CAC5C;AAAA,IAAA;AAAA,EAEL;AAAA,EAEQ,sBAAsB,MAAuB;AACnD,SAAK;AAAA,MACH,IAAI,YAAY,qBAAqB;AAAA,QACnC,QAAQ,EAAC,UAAU,KAAK,UAAU,OAAO,KAAK,MAAA;AAAA,MAAK,CACpD;AAAA,IAAA;AAAA,EAEL;AAAA,EAEQ,oBAAoB,OAAc;AACxC,UAAM,SAAS,MAAM;AACrB,SAAK,WAAW,OAAO,SAAS;AAChC,QAAI,KAAK,UAAU;AACjB,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EAEQ,oBAAoB,OAAc;AACxC,UAAM,SAAS,MAAM;AACrB,SAAK,WAAW,OAAO,SAAS;AAChC,QAAI,KAAK,UAAU;AACjB,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EAEQ,iBAAiB;AACvB,QAAI,QAAQ;AACZ,UAAM,gBAAgB,KAAK,SAAS;AAEpC,QAAI,iBAAiB,CAAC,KAAK,UAAU;AACnC,WAAK,gBAAgB,IAAI,sBAAsB;AAC/C,cAAQ;AAAA,IACV;AAEA,QAAI,CAAC,KAAK,UAAU;AAClB,WAAK,gBAAgB,IAAI,sBAAsB;AAC/C,cAAQ;AAAA,IACV;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,oBAAoB;AAC1B,QAAI,CAAC,KAAK,kBAAkB;AAC1B;AAAA,IACF;AACA,SAAK;AAAA,MACH,IAAI,YAAY,iBAAiB;AAAA,QAC/B,QAAQ,EAAC,UAAU,KAAK,UAAU,UAAU,KAAK,SAAA;AAAA,MAAQ,CAC1D;AAAA,IAAA;AAAA,EAEL;AAAA,EAEQ,qBAAqB;AAC3B,SAAK,cAAc,IAAI,YAAY,gBAAgB,CAAC;AAAA,EACtD;AAAA,EAEQ,eAAe;AACrB,WAAO;AAAA;AAAA,4BAEiB,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA,UAGhC,KAAK;AAAA,MACL,IAAI,UAAU;AAAA,MACd,uBAAuB;AAAA,MACvB,KAAK;AAAA,MACL,KAAK,oBAAoB,KAAK,IAAI;AAAA,MAClC,KAAK;AAAA,IAAA,CACN;AAAA,UACC,KAAK;AAAA,MACL,IAAI,UAAU;AAAA,MACd,uBAAuB;AAAA,MACvB,KAAK;AAAA,MACL,KAAK,oBAAoB,KAAK,IAAI;AAAA,MAClC,KAAK;AAAA,IAAA,CACN;AAAA;AAAA,oBAEW,cAAc,MAAM;AAAA;AAAA,mBAErB,KAAK,iBAAiB;AAAA;AAAA,YAE7B,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA,QAGlB,KAAK,sBACH;AAAA;AAAA;AAAA,wCAG8B,IAAI,oBAAoB,CAAC;AAAA;AAAA;AAAA,kBAG/C,KAAK,kBAAkB,GAAG,IAAI,CAAC;AAAA;AAAA;AAAA,cAIvC,OAAO;AAAA;AAAA,EAEf;AAAA,EAEQ,oBAAoB;AAC1B,WAAO;AAAA;AAAA,4BAEiB,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA,UAGhC,KAAK;AAAA,MACL,IAAI,UAAU;AAAA,MACd,uBAAuB;AAAA,MACvB,KAAK;AAAA,MACL,KAAK,oBAAoB,KAAK,IAAI;AAAA,MAClC,KAAK;AAAA,IAAA,CACN;AAAA,UACC,KAAK;AAAA,MACL,IAAI,UAAU;AAAA,MACd,uBAAuB;AAAA,MACvB,KAAK;AAAA,MACL,KAAK,oBAAoB,KAAK,IAAI;AAAA,MAClC,KAAK;AAAA,IAAA,CACN;AAAA;AAAA,oBAEW,cAAc,MAAM;AAAA;AAAA,mBAErB,KAAK,iBAAiB;AAAA;AAAA,YAE7B,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA,QAIlB,KAAK,sBACH;AAAA;AAAA;AAAA,wCAG8B,IAAI,QAAQ,CAAC;AAAA;AAAA;AAAA,kBAGnC,KAAK,kBAAkB,GAAG,KAAK,CAAC;AAAA;AAAA;AAAA,cAIxC,OAAO;AAAA;AAAA,EAEf;AAAA,EAEQ,mBAAmB;AACzB,WAAO;AAAA;AAAA,4BAEiB,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA,YAI9B,KAAK,kBAAkB,YAAY,OAAO,CAAC;AAAA;AAAA;AAAA,YAG3C,KAAK;AAAA,MACL,IAAI,UAAU;AAAA,MACd,uBAAuB;AAAA,MACvB,KAAK;AAAA,MACL,KAAK,oBAAoB,KAAK,IAAI;AAAA,MAClC,KAAK;AAAA,IAAA,CACN;AAAA;AAAA,sBAEW,cAAc,MAAM;AAAA;AAAA,qBAErB,KAAK,iBAAiB;AAAA;AAAA,cAE7B,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA,QAIpB,KAAK,sBACH;AAAA;AAAA;AAAA,wCAG8B,IAAI,oBAAoB,CAAC;AAAA;AAAA;AAAA,kBAG/C,KAAK,kBAAkB,GAAG,IAAI,CAAC;AAAA;AAAA;AAAA,cAIvC,OAAO;AAAA;AAAA,EAEf;AAAA,EAEQ,wBAAwB;AAC9B,WAAO;AAAA;AAAA,4BAEiB,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA,UAGhC,KAAK,kBAAkB,cAAc,SAAS,CAAC;AAAA;AAAA;AAAA,UAG/C,KAAK;AAAA,MACL,IAAI,UAAU;AAAA,MACd,uBAAuB;AAAA,MACvB,KAAK;AAAA,MACL,KAAK,oBAAoB,KAAK,IAAI;AAAA,MAClC,KAAK;AAAA,IAAA,CACN;AAAA;AAAA,oBAEW,cAAc,MAAM;AAAA;AAAA,mBAErB,KAAK,iBAAiB;AAAA;AAAA,YAE7B,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA,QAIlB,KAAK,sBACH;AAAA;AAAA;AAAA,wCAG8B,IAAI,QAAQ,CAAC;AAAA;AAAA;AAAA,kBAGnC,KAAK,kBAAkB,GAAG,KAAK,CAAC;AAAA;AAAA;AAAA,cAIxC,OAAO;AAAA;AAAA,EAEf;AAAA,EAEQ,sBAAsB;AAC5B,WAAO;AAAA;AAAA,4BAEiB,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA,UAGhC,KAAK,kBAAkB,YAAY,OAAO,CAAC;AAAA;AAAA;AAAA,iBAGpC,gBAAgB,MAAM;AAAA,iBACtB,gBAAgB,aAAa;AAAA,uBACvB,KAAK;AAAA;AAAA;AAAA;AAAA,EAI1B;AAAA,EAEQ,2BAA2B;AACjC,WAAO;AAAA;AAAA,4BAEiB,IAAI,SAAS,CAAC;AAAA;AAAA;AAAA,UAGhC,KAAK,kBAAkB,cAAc,SAAS,CAAC;AAAA;AAAA;AAAA,iBAGxC,gBAAgB,MAAM;AAAA,iBACtB,gBAAgB,aAAa;AAAA,uBACvB,KAAK;AAAA;AAAA;AAAA;AAAA,EAI1B;AAAA,EAEQ,iBAAiB;AACvB,UAAM,UAAU,KAAK,gBAAgB,SACjC,KAAK,kBACL,KAAK;AACT,WAAO;AAAA;AAAA,4BAEiB,IAAI,MAAM,CAAC;AAAA;AAAA;AAAA,UAG7B,KAAK,kBAAkB,YAAY,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,UAI3C,QAAQ,IAAI,CAAC,WAAW;AACxB,YAAM,eAAe,KAAK,kBAAkB,OAAO,EAAE;AACrD,aAAO;AAAA;AAAA,uBAEM,OAAO,KAAK;AAAA;AAAA,uBAEZ,MAAM,KAAK,0BAA0B,MAAM,CAAC;AAAA;AAAA;AAAA,oDAGf,YAAY;AAAA,oBAC5C,KAAK,sBAAsB,YAAY,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKpD,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,oBAIU,cAAc,MAAM;AAAA;AAAA,mBAErB,KAAK,kBAAkB;AAAA;AAAA,YAE9B,IAAI,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA,EAIzB;AAAA,EAEQ,sBAAsB;AAC5B,UAAM,UAAU,KAAK,gBAAgB,SACjC,KAAK,kBACL,KAAK;AACT,UAAM,gBAAgB,QAAQ,CAAC;AAC/B,WAAO;AAAA;AAAA,4BAEiB,IAAI,MAAM,CAAC;AAAA;AAAA;AAAA,UAG7B,KAAK,kBAAkB,cAAc,SAAS,CAAC;AAAA;AAAA;AAAA,UAG/C,gBACE;AAAA;AAAA,0BAEc,cAAc,MAAM;AAAA;AAAA,yBAErB,MAAM,KAAK,0BAA0B,aAAa,CAAC;AAAA;AAAA,kBAE1D,cAAc,KAAK;AAAA;AAAA,gBAGzB,OAAO;AAAA;AAAA,oBAEC,cAAc,MAAM;AAAA;AAAA,mBAErB,KAAK,kBAAkB;AAAA;AAAA,YAE9B,IAAI,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA,EAIzB;AAAA,EAES,SAAS;AAChB,QAAI,UAAmC;AACvC,QAAI,KAAK,SAAS,WAAwB;AACxC,gBACE,KAAK,SAAS,UACV,KAAK,kBAAA,IACL,KAAK,aAAA;AAAA,IACb;AACA,QAAI,KAAK,SAAS,gBAA4B;AAC5C,gBACE,KAAK,SAAS,UACV,KAAK,sBAAA,IACL,KAAK,iBAAA;AAAA,IACb;AACA,QAAI,KAAK,SAAS,mBAA+B;AAC/C,gBACE,KAAK,SAAS,UACV,KAAK,yBAAA,IACL,KAAK,oBAAA;AAAA,IACb;AACA,QAAI,KAAK,SAAS,aAA0B;AAC1C,gBACE,KAAK,SAAS,UACV,KAAK,oBAAA,IACL,KAAK,eAAA;AAAA,IACb;AAEA,WAAO;AAAA;AAAA,gBAEK,SAAS;AAAA,MACf,MAAM;AAAA,MACN,CAAC,QAAQ,KAAK,IAAI,EAAE,GAAG;AAAA,MACvB,CAAC,QAAQ,KAAK,IAAI,EAAE,GAAG;AAAA,IAAA,CACxB,CAAC;AAAA;AAAA,UAEA,OAAO;AAAA;AAAA;AAAA,EAGf;AAGF;AAjkBa,YAgkBK,SAAS,UAAU,cAAc;AA5jBvB,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAJb,YAIe,WAAA,QAAA,CAAA;AAKA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GATb,YASe,WAAA,QAAA,CAAA;AAO1B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAfd,YAgBX,WAAA,uBAAA,CAAA;AAM0B,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAtBb,YAsBe,WAAA,YAAA,CAAA;AAMA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA5Bb,YA4Be,WAAA,YAAA,CAAA;AAMA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAlCb,YAkCe,WAAA,iBAAA,CAAA;AAMA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAxCb,YAwCe,WAAA,iBAAA,CAAA;AAMA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA9Cb,YA8Ce,WAAA,gBAAA,CAAA;AAMA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GApDb,YAoDe,WAAA,aAAA,CAAA;AAM1B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,OAAO,WAAW,OAAM;AAAA,GAzD9B,YA0DX,WAAA,eAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,OAAO,WAAW,OAAM;AAAA,GAhE9B,YAiEX,WAAA,mBAAA,CAAA;AAjEW,cAAN,gBAAA;AAAA,EAFN,cAAc,eAAe;AAAA,EAC7B,UAAA;AAAU,GACE,WAAA;"}
1
+ {"version":3,"file":"user-menu.js","sources":["../../../src/components/user-menu/user-menu.ts"],"sourcesContent":["import {LitElement, TemplateResult, html, nothing, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../../decorator.js';\nimport componentStyle from './user-menu.css?inline';\nimport '../text-input-field/text-input-field.js';\nimport '../button/button.js';\nimport '../user-button/user-button.js';\nimport '../progress-bar/progress-bar.js';\nimport '../navigation-item/navigation-item.js';\nimport '../../icons/icon-calendar-google.js';\nimport '../../icons/icon-log-open-google.js';\nimport '../../icons/icon-settings-iec.js';\nimport '../../icons/icon-user.js';\nimport {\n HTMLInputTypeAttribute,\n ObcTextInputFieldTextAlign,\n} from '../text-input-field/text-input-field.js';\nimport {ButtonVariant} from '../button/button.js';\nimport {\n ProgressBarMode,\n ProgressBarType,\n} from '../progress-bar/progress-bar.js';\nimport {Size, StyleType, Variant} from '../user-button/user-button.js';\nimport {localized, msg} from '@lit/localize';\n\nexport enum ObcUserMenuType {\n signIn = 'sign-in',\n userSignIn = 'user-sign-in',\n loadingSignIn = 'loading-sign-in',\n signedIn = 'signed-in',\n}\n\nexport enum ObcUserMenuSize {\n regular = 'regular',\n small = 'small',\n}\n\nexport type ObcUserMenuUser = {\n initials: string;\n label: string;\n};\n\nexport type ObcUserMenuSignedInAction = {\n id: string;\n label: string;\n};\n\n/**\n * `<obc-user-menu>` – A user menu component with sign-in and signed-in layouts.\n *\n * Provides multiple layouts for authentication and account access states, including\n * sign-in forms, user-specific sign-in, loading states, and signed-in navigation.\n *\n * ### Features\n * - **Multiple States:** Supports sign-in, user sign-in, loading, and signed-in layouts.\n * - **Size Options:** Regular and small sizes for compact layouts.\n * - **Recent Users:** Optional \"Recently signed in\" section for quick access.\n * - **Navigation Actions:** Signed-in state includes navigation items and actions.\n *\n * ### Variants\n * - `type`: `sign-in`, `user-sign-in`, `loading-sign-in`, `signed-in`\n * - `size`: `regular`, `small`\n *\n * ### Usage Guidelines\n * Use `obc-user-menu` in authentication or account panels where quick access to\n * sign-in, profile, or account actions is needed. The `user-sign-in` type is\n * best for fast re-auth flows; `loading-sign-in` is for pending auth states.\n *\n * ### Properties and Configuration\n * - `type` (`ObcUserMenuType`): Controls the layout state. Defaults to `sign-in`.\n * - `size` (`ObcUserMenuSize`): Controls the overall size. Defaults to `regular`.\n * - `hasRecentlySignedIn` (`boolean`): Toggles the recent users section.\n * Defaults to `true`.\n * - `username` (`string`): Current username value for sign-in layouts.\n * - `password` (`string`): Current password value for sign-in layouts.\n * - `usernameError` (`string`): Error message for the username field.\n * - `passwordError` (`string`): Error message for the password field.\n * - `userInitials` (`string`): Initials for the primary user profile.\n * - `userLabel` (`string`): Label for the primary user profile.\n * - `recentUsers` (`ObcUserMenuUser[]`): List of recent users shown in the\n * \"Recently signed in\" section.\n * - `signedInActions` (`ObcUserMenuSignedInAction[]`): Actions shown in the\n * signed-in navigation list.\n *\n * ### Events\n * - `sign-in-click` – Fired when a sign-in button is clicked.\n * - `sign-out-click` – Fired when the sign-out button is clicked.\n * - `signed-in-action-click` – Fired when a signed-in action is clicked.\n * - `recent-user-click` – Fired when a recent user button is clicked.\n *\n * ### Slots\n * - `signed-in-action-icon-{id}`: Optional icon for a signed-in action. The\n * `{id}` is the normalized action id.\n *\n * ### Example\n * ```html\n * <obc-user-menu\n * type=\"user-sign-in\"\n * size=\"small\"\n * hasRecentlySignedIn=\"false\"\n * userInitials=\"JD\"\n * userLabel=\"John Doe\"\n * ></obc-user-menu>\n * ```\n *\n * @slot signed-in-action-icon-<id> - Optional icon for a signed-in action, one per action; `<id>` is the normalized action id (shown in the `signed-in` type).\n * @fires sign-in-click {CustomEvent<{username: string, password: string}>}\n * @fires sign-out-click\n * @fires signed-in-action-click {CustomEvent<{id: string, label: string}>}\n * @fires recent-user-click {CustomEvent<{initials: string, label: string}>}\n * @stable\n */\n@customElement('obc-user-menu')\n@localized()\nexport class ObcUserMenu extends LitElement {\n /**\n * Controls the visual layout of the user menu.\n */\n @property({type: String}) type: ObcUserMenuType = ObcUserMenuType.signIn;\n\n /**\n * Controls the overall size of the user menu.\n */\n @property({type: String}) size: ObcUserMenuSize = ObcUserMenuSize.regular;\n\n /**\n * Toggles the \"Recently signed in\" section visibility.\n * @availableWhen type in [signIn, userSignIn]\n */\n @property({type: Boolean})\n hasRecentlySignedIn = false;\n\n /**\n * Current username value for sign-in layouts.\n * @availableWhen type==signIn\n */\n @property({type: String}) username = '';\n\n /**\n * Current password value for sign-in layouts.\n * @availableWhen type in [signIn, userSignIn]\n */\n @property({type: String}) password = '';\n\n /**\n * Error message for the username field.\n * @availableWhen type==signIn\n */\n @property({type: String}) usernameError = '';\n\n /**\n * Error message for the password field.\n * @availableWhen type in [signIn, userSignIn]\n */\n @property({type: String}) passwordError = '';\n\n /**\n * Initials for the primary user profile.\n * @availableWhen type!=signIn\n */\n @property({type: String}) userInitials?: string;\n\n /**\n * Label for the primary user profile.\n * @availableWhen type!=signIn\n */\n @property({type: String}) userLabel?: string;\n\n /**\n * Recent users for the \"Recently signed in\" section.\n */\n @property({type: Array, attribute: false})\n recentUsers: ObcUserMenuUser[] = [];\n\n /**\n * Actions shown in the signed-in navigation list.\n * @availableWhen type==signedIn\n */\n @property({type: Array, attribute: false})\n signedInActions: ObcUserMenuSignedInAction[] = [];\n\n private get defaultSignedInActions() {\n return [\n {id: 'calendar', label: msg('Calendar')},\n {id: 'log', label: msg('Log')},\n {id: 'preferences', label: msg('Preferences')},\n {id: 'user-account', label: msg('User account')},\n ];\n }\n\n private get defaultRecentUsers() {\n const label = msg('Username');\n return [\n {initials: 'AB', label},\n {initials: 'CD', label},\n {initials: 'EF', label},\n ];\n }\n\n private renderTextInput(\n placeholder: string,\n type: HTMLInputTypeAttribute = HTMLInputTypeAttribute.Text,\n value = '',\n onInput?: (event: Event) => void,\n errorText = ''\n ) {\n const isPassword = type === HTMLInputTypeAttribute.Password;\n return html`\n <obc-text-input-field\n .placeholder=${placeholder}\n .type=${type}\n .textAlign=${ObcTextInputFieldTextAlign.Left}\n .value=${value}\n .error=${Boolean(errorText)}\n .errorText=${errorText}\n .required=${true}\n .hasClearButton=${!isPassword}\n @input=${onInput}\n >\n </obc-text-input-field>\n `;\n }\n\n private renderUserButtons(count: number, isLarge: boolean) {\n const size = isLarge ? Size.large : Size.regular;\n const users = (\n this.recentUsers.length ? this.recentUsers : this.defaultRecentUsers\n ).slice(0, count);\n return html`\n <div\n class=${classMap({\n users: true,\n large: isLarge,\n single: users.length === 1,\n })}\n >\n ${users.map(\n (user) => html`\n <obc-user-button\n .variant=${Variant.initials}\n .styleType=${StyleType.normal}\n .size=${size}\n .initials=${user.initials}\n .label=${user.label}\n @click=${() => this.handleRecentUserClick(user)}\n ></obc-user-button>\n `\n )}\n </div>\n `;\n }\n\n private renderUserProfile(\n layout: 'vertical' | 'horizontal',\n size: 'large' | 'regular',\n initials?: string,\n label?: string\n ) {\n const userButtonSize = size === 'large' ? Size.large : Size.regular;\n const fallbackUser = this.recentUsers[0] ?? this.defaultRecentUsers[0];\n const resolvedInitials =\n initials ?? this.userInitials ?? fallbackUser.initials;\n const resolvedLabel = label ?? this.userLabel ?? fallbackUser.label;\n return html`\n <div\n class=${classMap({\n 'user-profile': true,\n [layout]: true,\n })}\n >\n <obc-user-button\n class=${classMap({\n 'user-avatar': true,\n [`size-${size}`]: true,\n })}\n .variant=${Variant.initials}\n .styleType=${StyleType.normal}\n .size=${userButtonSize}\n .initials=${resolvedInitials}\n .label=${resolvedLabel}\n ></obc-user-button>\n </div>\n `;\n }\n\n private getSignedInActionIcon(actionId: string) {\n switch (actionId) {\n case 'calendar':\n return html`<obi-calendar-google></obi-calendar-google>`;\n case 'log':\n return html`<obi-log-open-google></obi-log-open-google>`;\n case 'preferences':\n return html`<obi-settings-iec></obi-settings-iec>`;\n case 'user-account':\n return html`<obi-user></obi-user>`;\n default:\n return nothing;\n }\n }\n\n private normalizeActionId(actionId: string) {\n return actionId\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-');\n }\n\n private handleSignedInActionClick(action: ObcUserMenuSignedInAction) {\n this.dispatchEvent(\n new CustomEvent('signed-in-action-click', {\n detail: {id: action.id, label: action.label},\n })\n );\n }\n\n private handleRecentUserClick(user: ObcUserMenuUser) {\n this.dispatchEvent(\n new CustomEvent('recent-user-click', {\n detail: {initials: user.initials, label: user.label},\n })\n );\n }\n\n private handleUsernameInput(event: Event) {\n const target = event.target as {value?: string};\n this.username = target.value ?? '';\n if (this.username) {\n this.usernameError = '';\n }\n }\n\n private handlePasswordInput(event: Event) {\n const target = event.target as {value?: string};\n this.password = target.value ?? '';\n if (this.password) {\n this.passwordError = '';\n }\n }\n\n private validateSignIn() {\n let valid = true;\n const needsUsername = this.type === ObcUserMenuType.signIn;\n\n if (needsUsername && !this.username) {\n this.usernameError = msg('Username is required');\n valid = false;\n }\n\n if (!this.password) {\n this.passwordError = msg('Password is required');\n valid = false;\n }\n\n return valid;\n }\n\n private handleSignInClick() {\n if (!this.validateSignIn()) {\n return;\n }\n this.dispatchEvent(\n new CustomEvent('sign-in-click', {\n detail: {username: this.username, password: this.password},\n })\n );\n }\n\n private handleSignOutClick() {\n this.dispatchEvent(new CustomEvent('sign-out-click'));\n }\n\n private renderSignIn() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"login-container\">\n ${this.renderTextInput(\n msg('Username'),\n HTMLInputTypeAttribute.Text,\n this.username,\n this.handleUsernameInput.bind(this),\n this.usernameError\n )}\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recently signed in')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, true)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderSignInSmall() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"login-container\">\n ${this.renderTextInput(\n msg('Username'),\n HTMLInputTypeAttribute.Text,\n this.username,\n this.handleUsernameInput.bind(this),\n this.usernameError\n )}\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n <div class=\"divider\" aria-hidden=\"true\"></div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container recent\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recent')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, false)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderUserSignIn() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"login-container\">\n <div class=\"user-primary\">\n ${this.renderUserProfile('vertical', 'large')}\n </div>\n <div class=\"fields\">\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n </div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recently signed in')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, true)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderUserSignInSmall() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"user-container\">\n ${this.renderUserProfile('horizontal', 'regular')}\n </div>\n <div class=\"login-container\">\n ${this.renderTextInput(\n msg('Password'),\n HTMLInputTypeAttribute.Password,\n this.password,\n this.handlePasswordInput.bind(this),\n this.passwordError\n )}\n <obc-button\n variant=${ButtonVariant.raised}\n fullWidth\n @click=${this.handleSignInClick}\n >\n ${msg('Sign in')}\n </obc-button>\n </div>\n <div class=\"divider\" aria-hidden=\"true\"></div>\n ${this.hasRecentlySignedIn\n ? html`\n <div class=\"recent-container recent\">\n <div class=\"title-container\">\n <div class=\"subtitle\">${msg('Recent')}</div>\n </div>\n <div class=\"actions-container\">\n ${this.renderUserButtons(3, false)}\n </div>\n </div>\n `\n : nothing}\n `;\n }\n\n private renderLoadingSignIn() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"user-primary loading\">\n ${this.renderUserProfile('vertical', 'large')}\n <obc-progress-bar\n class=\"progress\"\n type=${ProgressBarType.linear}\n mode=${ProgressBarMode.indeterminate}\n .showValue=${false}\n ></obc-progress-bar>\n </div>\n `;\n }\n\n private renderLoadingSignInSmall() {\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('Sign in')}</h3>\n </div>\n <div class=\"user-primary loading\">\n ${this.renderUserProfile('horizontal', 'regular')}\n <obc-progress-bar\n class=\"progress\"\n type=${ProgressBarType.linear}\n mode=${ProgressBarMode.indeterminate}\n .showValue=${false}\n ></obc-progress-bar>\n </div>\n `;\n }\n\n private renderSignedIn() {\n const actions = this.signedInActions.length\n ? this.signedInActions\n : this.defaultSignedInActions;\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('User')}</h3>\n </div>\n <div class=\"user-primary signed-in\">\n ${this.renderUserProfile('vertical', 'large')}\n </div>\n <div class=\"divider\" aria-hidden=\"true\"></div>\n <div class=\"nav-container\">\n ${actions.map((action) => {\n const normalizedId = this.normalizeActionId(action.id);\n return html`\n <obc-navigation-item\n .label=${action.label}\n hasIcon\n @click=${() => this.handleSignedInActionClick(action)}\n >\n <span slot=\"icon\">\n <slot name=\"signed-in-action-icon-${normalizedId}\">\n ${this.getSignedInActionIcon(normalizedId)}\n </slot>\n </span>\n </obc-navigation-item>\n `;\n })}\n </div>\n <div class=\"button-container\">\n <obc-button\n variant=${ButtonVariant.normal}\n fullWidth\n @click=${this.handleSignOutClick}\n >\n ${msg('Sign out')}\n </obc-button>\n </div>\n `;\n }\n\n private renderSignedInSmall() {\n const actions = this.signedInActions.length\n ? this.signedInActions\n : this.defaultSignedInActions;\n const primaryAction = actions[2];\n return html`\n <div class=\"title-container\">\n <h3 class=\"title\">${msg('User')}</h3>\n </div>\n <div class=\"user-container\">\n ${this.renderUserProfile('horizontal', 'regular')}\n </div>\n <div class=\"button-container\">\n ${primaryAction\n ? html`\n <obc-button\n variant=${ButtonVariant.normal}\n fullWidth\n @click=${() => this.handleSignedInActionClick(primaryAction)}\n >\n ${primaryAction.label}\n </obc-button>\n `\n : nothing}\n <obc-button\n variant=${ButtonVariant.normal}\n fullWidth\n @click=${this.handleSignOutClick}\n >\n ${msg('Sign out')}\n </obc-button>\n </div>\n `;\n }\n\n override render() {\n let content: TemplateResult | symbol = nothing;\n if (this.type === ObcUserMenuType.signIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderSignInSmall()\n : this.renderSignIn();\n }\n if (this.type === ObcUserMenuType.userSignIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderUserSignInSmall()\n : this.renderUserSignIn();\n }\n if (this.type === ObcUserMenuType.loadingSignIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderLoadingSignInSmall()\n : this.renderLoadingSignIn();\n }\n if (this.type === ObcUserMenuType.signedIn) {\n content =\n this.size === ObcUserMenuSize.small\n ? this.renderSignedInSmall()\n : this.renderSignedIn();\n }\n\n return html`\n <div\n class=${classMap({\n card: true,\n [`size-${this.size}`]: true,\n [`type-${this.type}`]: true,\n })}\n >\n ${content}\n </div>\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-user-menu': ObcUserMenu;\n }\n}\n"],"names":["ObcUserMenuType","ObcUserMenuSize"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { LitElement } from 'lit';
2
2
  /**
3
+ * @slot apps - Application buttons; slotted elements are normalized to a uniform width
3
4
  * @experimental
4
5
  */
5
6
  export declare class ObcIntegrationAppBar extends LitElement {
@@ -1 +1 @@
1
- {"version":3,"file":"integration-app-bar.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-app-bar/integration-app-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAIhD;;GAEG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACzC,MAAM;IAYf,OAAO,CAAC,oBAAoB;IAyB5B,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,oBAAoB,CAAC;KACjD;CACF"}
1
+ {"version":3,"file":"integration-app-bar.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-app-bar/integration-app-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAIhD;;;GAGG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACzC,MAAM;IAYf,OAAO,CAAC,oBAAoB;IAyB5B,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,oBAAoB,CAAC;KACjD;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"integration-app-bar.js","sources":["../../../src/integration-systems/integration-app-bar/integration-app-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-app-bar.css?inline';\n\n/**\n * @experimental\n */\n@customElement('obc-integration-app-bar')\nexport class ObcIntegrationAppBar extends LitElement {\n override render() {\n return html`\n <div class=\"wrapper\">\n <div class=\"left-side\"></div>\n <div class=\"center\">\n <slot name=\"apps\" @slotchange=${this.handleAppsSlotChange}></slot>\n </div>\n <div class=\"right-side\"></div>\n </div>\n `;\n }\n\n private handleAppsSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n const buttons = slot.assignedElements() as HTMLElement[];\n\n if (buttons.length === 0) {\n return;\n }\n\n for (const btn of buttons) {\n btn.style.width = '';\n }\n\n requestAnimationFrame(() => {\n const maxWidth = Math.max(\n ...buttons.map((btn) => btn.getBoundingClientRect().width)\n );\n\n if (maxWidth > 0) {\n for (const btn of buttons) {\n btn.style.width = `${maxWidth}px`;\n }\n }\n });\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-app-bar': ObcIntegrationAppBar;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAQO,IAAM,uBAAN,cAAmC,WAAW;AAAA,EAC1C,SAAS;AAChB,WAAO;AAAA;AAAA;AAAA;AAAA,0CAI+B,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjE;AAAA,EAEQ,qBAAqB,OAAc;AACzC,UAAM,OAAO,MAAM;AACnB,UAAM,UAAU,KAAK,iBAAA;AAErB,QAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,IACF;AAEA,eAAW,OAAO,SAAS;AACzB,UAAI,MAAM,QAAQ;AAAA,IACpB;AAEA,0BAAsB,MAAM;AAC1B,YAAM,WAAW,KAAK;AAAA,QACpB,GAAG,QAAQ,IAAI,CAAC,QAAQ,IAAI,sBAAA,EAAwB,KAAK;AAAA,MAAA;AAG3D,UAAI,WAAW,GAAG;AAChB,mBAAW,OAAO,SAAS;AACzB,cAAI,MAAM,QAAQ,GAAG,QAAQ;AAAA,QAC/B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAGF;AAvCa,qBAsCK,SAAS,UAAU,YAAY;AAtCpC,uBAAN,gBAAA;AAAA,EADN,cAAc,yBAAyB;AAAA,GAC3B,oBAAA;"}
1
+ {"version":3,"file":"integration-app-bar.js","sources":["../../../src/integration-systems/integration-app-bar/integration-app-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-app-bar.css?inline';\n\n/**\n * @slot apps - Application buttons; slotted elements are normalized to a uniform width\n * @experimental\n */\n@customElement('obc-integration-app-bar')\nexport class ObcIntegrationAppBar extends LitElement {\n override render() {\n return html`\n <div class=\"wrapper\">\n <div class=\"left-side\"></div>\n <div class=\"center\">\n <slot name=\"apps\" @slotchange=${this.handleAppsSlotChange}></slot>\n </div>\n <div class=\"right-side\"></div>\n </div>\n `;\n }\n\n private handleAppsSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n const buttons = slot.assignedElements() as HTMLElement[];\n\n if (buttons.length === 0) {\n return;\n }\n\n for (const btn of buttons) {\n btn.style.width = '';\n }\n\n requestAnimationFrame(() => {\n const maxWidth = Math.max(\n ...buttons.map((btn) => btn.getBoundingClientRect().width)\n );\n\n if (maxWidth > 0) {\n for (const btn of buttons) {\n btn.style.width = `${maxWidth}px`;\n }\n }\n });\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-app-bar': ObcIntegrationAppBar;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AASO,IAAM,uBAAN,cAAmC,WAAW;AAAA,EAC1C,SAAS;AAChB,WAAO;AAAA;AAAA;AAAA;AAAA,0CAI+B,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjE;AAAA,EAEQ,qBAAqB,OAAc;AACzC,UAAM,OAAO,MAAM;AACnB,UAAM,UAAU,KAAK,iBAAA;AAErB,QAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,IACF;AAEA,eAAW,OAAO,SAAS;AACzB,UAAI,MAAM,QAAQ;AAAA,IACpB;AAEA,0BAAsB,MAAM;AAC1B,YAAM,WAAW,KAAK;AAAA,QACpB,GAAG,QAAQ,IAAI,CAAC,QAAQ,IAAI,sBAAA,EAAwB,KAAK;AAAA,MAAA;AAG3D,UAAI,WAAW,GAAG;AAChB,mBAAW,OAAO,SAAS;AACzB,cAAI,MAAM,QAAQ,GAAG,QAAQ;AAAA,QAC/B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAGF;AAvCa,qBAsCK,SAAS,UAAU,YAAY;AAtCpC,uBAAN,gBAAA;AAAA,EADN,cAAc,yBAAyB;AAAA,GAC3B,oBAAA;"}
@@ -21,7 +21,6 @@ import '../../icons/icon-link.js';
21
21
  * @slot clock - Custom clock content, rendered when `showClock` is true
22
22
  * @slot integration-buttons - Regular vessel integration buttons
23
23
  * @slot hug-buttons - Compact vessel integration buttons; slotted integration buttons are forced to hug type
24
- * @slot vessel-integration-menu - Modal that will appear achored below the fleet/vessel button. Typically an obc-integration-vessel-menu
25
24
  * @property {IntegrationBarType} type - Integration bar mode for fleet/vessel presentation
26
25
  * @property {boolean} hideHomeButton - Hides the home button when true
27
26
  * @property {boolean} showClock - Toggles rendering of the clock slot
@@ -1 +1 @@
1
- {"version":3,"file":"integration-bar.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-bar/integration-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA2B,MAAM,KAAK,CAAC;AAGzD,OAAO,yCAAyC,CAAC;AACjD,OAAO,6CAA6C,CAAC;AAKrD,OAAO,iCAAiC,CAAC;AACzC,OAAO,6CAA6C,CAAC;AACrD,OAAO,2CAA2C,CAAC;AACnD,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,OAAO,iCAAiC,CAAC;AACzC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IACpB,cAAc,UAAS;IACvB,SAAS,UAAS;IAClB,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,iBAAiB,UAAS;IAC1B,sBAAsB,UAAS;IAC/B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC9B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC9B,sBAAsB,UAAS;IAC/B,2BAA2B,UAAS;IACpC,eAAe,UAAS;IACxB,oBAAoB,UAAS;IAC7B,eAAe,UAAS;IACxB,mBAAmB,UAAS;IAC5B,oBAAoB,UAAS;IAC9B,gBAAgB,SAAW;IAE5C,OAAO,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;IAIlB,MAAM;IAmLf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"integration-bar.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-bar/integration-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA2B,MAAM,KAAK,CAAC;AAGzD,OAAO,yCAAyC,CAAC;AACjD,OAAO,6CAA6C,CAAC;AAKrD,OAAO,iCAAiC,CAAC;AACzC,OAAO,6CAA6C,CAAC;AACrD,OAAO,2CAA2C,CAAC;AACnD,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,OAAO,iCAAiC,CAAC;AACzC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IACpB,cAAc,UAAS;IACvB,SAAS,UAAS;IAClB,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,iBAAiB,UAAS;IAC1B,sBAAsB,UAAS;IAC/B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC9B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC9B,sBAAsB,UAAS;IAC/B,2BAA2B,UAAS;IACpC,eAAe,UAAS;IACxB,oBAAoB,UAAS;IAC7B,eAAe,UAAS;IACxB,mBAAmB,UAAS;IAC5B,oBAAoB,UAAS;IAC9B,gBAAgB,SAAW;IAE5C,OAAO,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;IAIlB,MAAM;IAmLf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"integration-bar.js","sources":["../../../src/integration-systems/integration-bar/integration-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS, nothing} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../integration-button/integration-button.js';\nimport {\n IntegrationButtonType,\n IntegrationButtonVariant,\n} from '../integration-button/integration-button.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-ship.js';\nimport '../../icons/icon-screen-desk.js';\nimport '../../icons/icon-alerts.js';\nimport '../../icons/icon-link.js';\nimport {property, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\n/**\n * `<obc-integration-bar>` – A compact top-level integration header for vessel and system navigation controls.\n *\n * Provides a configurable integration bar with home/navigation controls, optional fleet and vessel selection,\n * and optional utility actions such as alerts, notifications, screen, system, dimming, user, and clock.\n *\n * @slot clock - Custom clock content, rendered when `showClock` is true\n * @slot integration-buttons - Regular vessel integration buttons\n * @slot hug-buttons - Compact vessel integration buttons; slotted integration buttons are forced to hug type\n * @slot vessel-integration-menu - Modal that will appear achored below the fleet/vessel button. Typically an obc-integration-vessel-menu\n * @property {IntegrationBarType} type - Integration bar mode for fleet/vessel presentation\n * @property {boolean} hideHomeButton - Hides the home button when true\n * @property {boolean} showClock - Toggles rendering of the clock slot\n * @property {boolean} showLinkButton - Toggles visibility of link button\n * @property {boolean} linkButtonActivated - Activated state of link button\n * @property {boolean} showUserButton - Toggles visibility of user button\n * @property {boolean} userButtonActivated - Activated state of user button\n * @property {boolean} showDimmingButton - Toggles visibility of dimming button\n * @property {boolean} dimmingButtonActivated - Activated state of dimming button\n * @property {boolean} showSystemButton - Toggles visibility of system button\n * @property {boolean} systemButtonActivated - Activated state of system button\n * @property {boolean} showScreenButton - Toggles visibility of screen button\n * @property {boolean} screenButtonActivated - Activated state of screen button\n * @property {boolean} showNotificationButton - Toggles visibility of notification button\n * @property {boolean} notificationButtonActivated - Activated state of notification button\n * @property {boolean} showAlertButton - Toggles visibility of alert button\n * @property {boolean} alertButtonActivated - Activated state of alert button\n * @property {boolean} showFleetButton - Toggles visibility of fleet button\n * @property {boolean} fleetButtonSelected - Selected state of fleet button\n * @property {boolean} fleetButtonActivated - Active state of fleet button while selection is pending\n * @property {string} fleetButtonLabel - Label for the fleet button\n * @property {string} selectedVesselValue - Selected vessel value\n * @property {string} activeVesselValue - Active vessel value while selection is pending\n * @property {{value: string; label: string}[]} vesselSelectorOptions - Available vessel options\n * @fires fleet-button-click - Fired when the fleet button is clicked\n * @fires link-button-clicked - Fired when the link button is clicked\n * @fires alert-button-clicked - Fired when the alert button is clicked\n * @fires notification-button-clicked - Fired when the notification button is clicked\n * @fires screen-button-clicked - Fired when the screen button is clicked\n * @fires system-button-clicked - Fired when the system button is clicked\n * @fires dimming-button-clicked - Fired when the dimming button is clicked\n * @fires user-button-clicked - Fired when the user button is clicked\n * @experimental\n */\n@customElement('obc-integration-bar')\nexport class ObcIntegrationBar extends LitElement {\n @property({type: Boolean}) hideHomeButton = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showLinkButton = false;\n @property({type: Boolean}) linkButtonActivated = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Boolean}) showScreenButton = false;\n @property({type: Boolean}) screenButtonActivated = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Boolean}) showAlertButton = false;\n @property({type: Boolean}) alertButtonActivated = false;\n @property({type: Boolean}) showFleetButton = false;\n @property({type: Boolean}) fleetButtonSelected = false;\n @property({type: Boolean}) fleetButtonActivated = false;\n @property({type: String}) fleetButtonLabel = 'Fleet';\n\n @state() private buttonsOnBar = false;\n\n private onFleetButtonClick() {\n this.dispatchEvent(new CustomEvent('fleet-button-click'));\n }\n\n private onHugButtonsSlotChange(event: Event) {\n const slot = event.currentTarget as HTMLSlotElement;\n const assignedElements = slot.assignedElements({flatten: true});\n\n assignedElements.forEach((element) => {\n if (element.tagName === 'OBC-INTEGRATION-BUTTON') {\n const integrationButton = element as unknown as HTMLElement & {\n type: IntegrationButtonType;\n };\n integrationButton.type = IntegrationButtonType.hug;\n }\n });\n this.buttonsOnBar = true;\n }\n\n private onButtonsSlotChange() {\n this.buttonsOnBar = true;\n }\n\n override render() {\n const isFleetButtonAnchored = this.fleetButtonActivated;\n return html`\n <nav class=\"wrapper\">\n <div class=\"content-container\">\n ${!this.hideHomeButton\n ? html`<obc-icon-button class=\"home-button\" variant=\"integration\">\n <obi-home></obi-home>\n </obc-icon-button>`\n : null}\n ${this.showLinkButton\n ? html`<obc-icon-button\n class=${classMap({\n 'link-button': true,\n activated: this.linkButtonActivated,\n })}\n part=\"link-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('link-button-clicked'))}\n ?activated=${this.linkButtonActivated}\n >\n <obi-link></obi-link>\n </obc-icon-button>`\n : null}\n <div class=${classMap({'fleet-vessel-container': true})}>\n ${this.showFleetButton\n ? html`<obc-integration-button\n class=\"fleet-button\"\n .variant=${IntegrationButtonVariant.normal}\n ?selected=${this.fleetButtonSelected}\n ?activated=${this.fleetButtonActivated}\n style=${isFleetButtonAnchored\n ? 'anchor-name: --integration-menu-anchor;'\n : ''}\n @click=${() => this.onFleetButtonClick()}\n >\n <span slot=\"label\">${this.fleetButtonLabel}</span>\n </obc-integration-button>`\n : nothing}\n <div class=\"vessel-container\">\n ${this.buttonsOnBar\n ? nothing\n : html`<div class=\"vessel-button-placeholder\"></div>`}\n <slot\n class=\"hug-buttons-slot\"\n name=\"hug-buttons\"\n @slotchange=${this.onHugButtonsSlotChange}\n ></slot>\n <slot\n class=\"integration-buttons-slot\"\n name=\"integration-buttons\"\n @slotchange=${this.onButtonsSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n <div\n class=${classMap({\n 'buttons-on-bar': this.buttonsOnBar,\n 'right-content-container': true,\n })}\n >\n ${this.showAlertButton\n ? html`<obc-icon-button\n class=${classMap({\n 'alert-button': true,\n activated: this.alertButtonActivated,\n })}\n part=\"alert-button\"\n variant=\"integration\"\n style=${this.alertButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('alert-button-clicked'))}\n ?activated=${this.alertButtonActivated}\n >\n <obi-alerts></obi-alerts>\n </obc-icon-button>`\n : null}\n ${this.showNotificationButton\n ? html`<obc-icon-button\n class=${classMap({\n 'notification-button': true,\n activated: this.notificationButtonActivated,\n })}\n part=\"notification-button\"\n variant=\"integration\"\n style=${this.notificationButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n ?activated=${this.notificationButtonActivated}\n >\n <obi-notification></obi-notification>\n </obc-icon-button>`\n : null}\n ${this.showScreenButton\n ? html`<obc-icon-button\n class=${classMap({\n 'screen-button': true,\n activated: this.screenButtonActivated,\n })}\n part=\"screen-button\"\n variant=\"integration\"\n style=${this.screenButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('screen-button-clicked'))}\n ?activated=${this.screenButtonActivated}\n >\n <obi-screen-desk></obi-screen-desk>\n </obc-icon-button>`\n : null}\n ${this.showSystemButton\n ? html`<obc-icon-button\n class=${classMap({\n 'system-button': true,\n activated: this.systemButtonActivated,\n })}\n part=\"system-button\"\n variant=\"integration\"\n style=${this.systemButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('system-button-clicked'))}\n ?activated=${this.systemButtonActivated}\n >\n <obi-configure></obi-configure>\n </obc-icon-button>`\n : null}\n ${this.showDimmingButton\n ? html`<obc-icon-button\n class=${classMap({\n 'dimming-button': true,\n activated: this.dimmingButtonActivated,\n })}\n part=\"dimming-button\"\n variant=\"integration\"\n style=${this.dimmingButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'))}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null}\n ${this.showUserButton\n ? html`<obc-icon-button\n class=${classMap({\n 'user-button': true,\n activated: this.userButtonActivated,\n })}\n part=\"user-button\"\n variant=\"integration\"\n style=${this.userButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))}\n ?activated=${this.userButtonActivated}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null}\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar': ObcIntegrationBar;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration-bar.js","sources":["../../../src/integration-systems/integration-bar/integration-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS, nothing} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../integration-button/integration-button.js';\nimport {\n IntegrationButtonType,\n IntegrationButtonVariant,\n} from '../integration-button/integration-button.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-ship.js';\nimport '../../icons/icon-screen-desk.js';\nimport '../../icons/icon-alerts.js';\nimport '../../icons/icon-link.js';\nimport {property, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\n/**\n * `<obc-integration-bar>` – A compact top-level integration header for vessel and system navigation controls.\n *\n * Provides a configurable integration bar with home/navigation controls, optional fleet and vessel selection,\n * and optional utility actions such as alerts, notifications, screen, system, dimming, user, and clock.\n *\n * @slot clock - Custom clock content, rendered when `showClock` is true\n * @slot integration-buttons - Regular vessel integration buttons\n * @slot hug-buttons - Compact vessel integration buttons; slotted integration buttons are forced to hug type\n * @property {IntegrationBarType} type - Integration bar mode for fleet/vessel presentation\n * @property {boolean} hideHomeButton - Hides the home button when true\n * @property {boolean} showClock - Toggles rendering of the clock slot\n * @property {boolean} showLinkButton - Toggles visibility of link button\n * @property {boolean} linkButtonActivated - Activated state of link button\n * @property {boolean} showUserButton - Toggles visibility of user button\n * @property {boolean} userButtonActivated - Activated state of user button\n * @property {boolean} showDimmingButton - Toggles visibility of dimming button\n * @property {boolean} dimmingButtonActivated - Activated state of dimming button\n * @property {boolean} showSystemButton - Toggles visibility of system button\n * @property {boolean} systemButtonActivated - Activated state of system button\n * @property {boolean} showScreenButton - Toggles visibility of screen button\n * @property {boolean} screenButtonActivated - Activated state of screen button\n * @property {boolean} showNotificationButton - Toggles visibility of notification button\n * @property {boolean} notificationButtonActivated - Activated state of notification button\n * @property {boolean} showAlertButton - Toggles visibility of alert button\n * @property {boolean} alertButtonActivated - Activated state of alert button\n * @property {boolean} showFleetButton - Toggles visibility of fleet button\n * @property {boolean} fleetButtonSelected - Selected state of fleet button\n * @property {boolean} fleetButtonActivated - Active state of fleet button while selection is pending\n * @property {string} fleetButtonLabel - Label for the fleet button\n * @property {string} selectedVesselValue - Selected vessel value\n * @property {string} activeVesselValue - Active vessel value while selection is pending\n * @property {{value: string; label: string}[]} vesselSelectorOptions - Available vessel options\n * @fires fleet-button-click - Fired when the fleet button is clicked\n * @fires link-button-clicked - Fired when the link button is clicked\n * @fires alert-button-clicked - Fired when the alert button is clicked\n * @fires notification-button-clicked - Fired when the notification button is clicked\n * @fires screen-button-clicked - Fired when the screen button is clicked\n * @fires system-button-clicked - Fired when the system button is clicked\n * @fires dimming-button-clicked - Fired when the dimming button is clicked\n * @fires user-button-clicked - Fired when the user button is clicked\n * @experimental\n */\n@customElement('obc-integration-bar')\nexport class ObcIntegrationBar extends LitElement {\n @property({type: Boolean}) hideHomeButton = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showLinkButton = false;\n @property({type: Boolean}) linkButtonActivated = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Boolean}) showScreenButton = false;\n @property({type: Boolean}) screenButtonActivated = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Boolean}) showAlertButton = false;\n @property({type: Boolean}) alertButtonActivated = false;\n @property({type: Boolean}) showFleetButton = false;\n @property({type: Boolean}) fleetButtonSelected = false;\n @property({type: Boolean}) fleetButtonActivated = false;\n @property({type: String}) fleetButtonLabel = 'Fleet';\n\n @state() private buttonsOnBar = false;\n\n private onFleetButtonClick() {\n this.dispatchEvent(new CustomEvent('fleet-button-click'));\n }\n\n private onHugButtonsSlotChange(event: Event) {\n const slot = event.currentTarget as HTMLSlotElement;\n const assignedElements = slot.assignedElements({flatten: true});\n\n assignedElements.forEach((element) => {\n if (element.tagName === 'OBC-INTEGRATION-BUTTON') {\n const integrationButton = element as unknown as HTMLElement & {\n type: IntegrationButtonType;\n };\n integrationButton.type = IntegrationButtonType.hug;\n }\n });\n this.buttonsOnBar = true;\n }\n\n private onButtonsSlotChange() {\n this.buttonsOnBar = true;\n }\n\n override render() {\n const isFleetButtonAnchored = this.fleetButtonActivated;\n return html`\n <nav class=\"wrapper\">\n <div class=\"content-container\">\n ${!this.hideHomeButton\n ? html`<obc-icon-button class=\"home-button\" variant=\"integration\">\n <obi-home></obi-home>\n </obc-icon-button>`\n : null}\n ${this.showLinkButton\n ? html`<obc-icon-button\n class=${classMap({\n 'link-button': true,\n activated: this.linkButtonActivated,\n })}\n part=\"link-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('link-button-clicked'))}\n ?activated=${this.linkButtonActivated}\n >\n <obi-link></obi-link>\n </obc-icon-button>`\n : null}\n <div class=${classMap({'fleet-vessel-container': true})}>\n ${this.showFleetButton\n ? html`<obc-integration-button\n class=\"fleet-button\"\n .variant=${IntegrationButtonVariant.normal}\n ?selected=${this.fleetButtonSelected}\n ?activated=${this.fleetButtonActivated}\n style=${isFleetButtonAnchored\n ? 'anchor-name: --integration-menu-anchor;'\n : ''}\n @click=${() => this.onFleetButtonClick()}\n >\n <span slot=\"label\">${this.fleetButtonLabel}</span>\n </obc-integration-button>`\n : nothing}\n <div class=\"vessel-container\">\n ${this.buttonsOnBar\n ? nothing\n : html`<div class=\"vessel-button-placeholder\"></div>`}\n <slot\n class=\"hug-buttons-slot\"\n name=\"hug-buttons\"\n @slotchange=${this.onHugButtonsSlotChange}\n ></slot>\n <slot\n class=\"integration-buttons-slot\"\n name=\"integration-buttons\"\n @slotchange=${this.onButtonsSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n <div\n class=${classMap({\n 'buttons-on-bar': this.buttonsOnBar,\n 'right-content-container': true,\n })}\n >\n ${this.showAlertButton\n ? html`<obc-icon-button\n class=${classMap({\n 'alert-button': true,\n activated: this.alertButtonActivated,\n })}\n part=\"alert-button\"\n variant=\"integration\"\n style=${this.alertButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('alert-button-clicked'))}\n ?activated=${this.alertButtonActivated}\n >\n <obi-alerts></obi-alerts>\n </obc-icon-button>`\n : null}\n ${this.showNotificationButton\n ? html`<obc-icon-button\n class=${classMap({\n 'notification-button': true,\n activated: this.notificationButtonActivated,\n })}\n part=\"notification-button\"\n variant=\"integration\"\n style=${this.notificationButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n ?activated=${this.notificationButtonActivated}\n >\n <obi-notification></obi-notification>\n </obc-icon-button>`\n : null}\n ${this.showScreenButton\n ? html`<obc-icon-button\n class=${classMap({\n 'screen-button': true,\n activated: this.screenButtonActivated,\n })}\n part=\"screen-button\"\n variant=\"integration\"\n style=${this.screenButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('screen-button-clicked'))}\n ?activated=${this.screenButtonActivated}\n >\n <obi-screen-desk></obi-screen-desk>\n </obc-icon-button>`\n : null}\n ${this.showSystemButton\n ? html`<obc-icon-button\n class=${classMap({\n 'system-button': true,\n activated: this.systemButtonActivated,\n })}\n part=\"system-button\"\n variant=\"integration\"\n style=${this.systemButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('system-button-clicked'))}\n ?activated=${this.systemButtonActivated}\n >\n <obi-configure></obi-configure>\n </obc-icon-button>`\n : null}\n ${this.showDimmingButton\n ? html`<obc-icon-button\n class=${classMap({\n 'dimming-button': true,\n activated: this.dimmingButtonActivated,\n })}\n part=\"dimming-button\"\n variant=\"integration\"\n style=${this.dimmingButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'))}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null}\n ${this.showUserButton\n ? html`<obc-icon-button\n class=${classMap({\n 'user-button': true,\n activated: this.userButtonActivated,\n })}\n part=\"user-button\"\n variant=\"integration\"\n style=${this.userButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))}\n ?activated=${this.userButtonActivated}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null}\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar': ObcIntegrationBar;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -11,18 +11,18 @@ import '../../icons/icon-home.js';
11
11
  *
12
12
  * @fires home-button-clicked - Fired when the home button is clicked
13
13
  * @fires dimming-button-clicked - Fired when the dimming button is clicked
14
- * @fires notification-button-clicked - Firaed when the notification button is clicked
14
+ * @fires notification-button-clicked - Fired when the notification button is clicked
15
15
  * @fires user-button-clicked - Fired when the user button is clicked
16
16
  * @fires system-button-clicked - Fired when the system button is clicked
17
17
  *
18
- * @slot vessel-selector
19
- * @slot status-label-1
20
- * @slot status-icon-1
21
- * @slot status-label-2
22
- * @slot status-icon-2
23
- * @slot status-label-3
24
- * @slot status-icon-3
25
- * @slot clock
18
+ * @slot vessel-selector - Vessel selector content
19
+ * @slot status-label-1 - Label for the first status field
20
+ * @slot status-icon-1 - Icon for the first status field
21
+ * @slot status-label-2 - Label for the second status field
22
+ * @slot status-icon-2 - Icon for the second status field
23
+ * @slot status-label-3 - Label for the third status field
24
+ * @slot status-icon-3 - Icon for the third status field
25
+ * @slot clock - Custom clock content, rendered when `showClock` is true
26
26
  * @experimental
27
27
  */
28
28
  export declare class ObcIntegrationBarDropdown extends LitElement {
@@ -1 +1 @@
1
- {"version":3,"file":"integration-bar-dropdown.js","sources":["../../../src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar-dropdown.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport {NotificationButtonStyle} from '../../components/notification-button/notification-button.js';\nimport {property} from 'lit/decorators.js';\n\n/**\n *\n * @fires home-button-clicked - Fired when the home button is clicked\n * @fires dimming-button-clicked - Fired when the dimming button is clicked\n * @fires notification-button-clicked - Firaed when the notification button is clicked\n * @fires user-button-clicked - Fired when the user button is clicked\n * @fires system-button-clicked - Fired when the system button is clicked\n *\n * @slot vessel-selector\n * @slot status-label-1\n * @slot status-icon-1\n * @slot status-label-2\n * @slot status-icon-2\n * @slot status-label-3\n * @slot status-icon-3\n * @slot clock\n * @experimental\n */\n@customElement('obc-integration-bar-dropdown')\nexport class ObcIntegrationBarDropdown extends LitElement {\n @property({type: Boolean}) showHomeButton = false;\n @property({type: Boolean}) homeButtonActivated = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Number}) notificationCount = 0;\n @property({type: Boolean}) showNotificationCount = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Number}) nStatusFields = 0;\n\n private renderStatusFields() {\n if (this.nStatusFields <= 0) {\n return nothing;\n }\n const result = [];\n for (let i = 0; i < this.nStatusFields; i++) {\n if (i > 0) {\n result.push(html`<div class=\"divider\"></div>`);\n }\n result.push(html`\n <div class=\"status-item\">\n <slot class=\"status-icon\" name=\"status-icon-${i + 1}\"></slot>\n <slot class=\"status-label\" name=\"status-label-${i + 1}\"></slot>\n </div>\n `);\n }\n return html`<div class=\"status\">${result}</div>`;\n }\n\n override render() {\n return html`\n <div class=\"wrapper\">\n <div class=\"left-side\">\n ${this.showHomeButton\n ? html`<obc-icon-button\n class=\"home-button\"\n part=\"home-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('home-button-clicked'))}\n ?activated=${this.homeButtonActivated}\n >\n <obi-home></obi-home>\n </obc-icon-button>`\n : null}\n <slot name=\"vessel-selector\"></slot>\n ${this.renderStatusFields()}\n </div>\n <div class=\"right-side\">\n ${this.showNotificationButton\n ? html`<obc-notification-button\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n .buttonStyle=${NotificationButtonStyle.Enhanced}\n .showCount=${this.showNotificationCount}\n .count=${this.notificationCount}\n ?isActive=${this.notificationButtonActivated}\n ></obc-notification-button>`\n : nothing}\n ${this.showSystemButton\n ? html`<obc-icon-button\n class=\"system-button\"\n part=\"system-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('system-button-clicked'))}\n ?activated=${this.systemButtonActivated}\n >\n <obi-configure></obi-configure>\n </obc-icon-button>`\n : null}\n ${this.showDimmingButton\n ? html`<obc-icon-button\n class=\"dimming-button\"\n part=\"dimming-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'))}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null}\n ${this.showUserButton\n ? html`<obc-icon-button\n class=\"user-button\"\n part=\"user-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))}\n ?activated=${this.userButtonActivated}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null}\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n </div>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar-dropdown': ObcIntegrationBarDropdown;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCO,IAAM,4BAAN,cAAwC,WAAW;AAAA,EAAnD,cAAA;AAAA,UAAA,GAAA,SAAA;AACsB,SAAA,iBAAiB;AACjB,SAAA,sBAAsB;AACtB,SAAA,YAAY;AACZ,SAAA,yBAAyB;AACzB,SAAA,8BAA8B;AAC/B,SAAA,oBAAoB;AACnB,SAAA,wBAAwB;AACxB,SAAA,iBAAiB;AACjB,SAAA,sBAAsB;AACtB,SAAA,oBAAoB;AACpB,SAAA,yBAAyB;AACzB,SAAA,mBAAmB;AACnB,SAAA,wBAAwB;AACzB,SAAA,gBAAgB;AAAA,EAAA;AAAA,EAElC,qBAAqB;AAC3B,QAAI,KAAK,iBAAiB,GAAG;AAC3B,aAAO;AAAA,IACT;AACA,UAAM,SAAS,CAAA;AACf,aAAS,IAAI,GAAG,IAAI,KAAK,eAAe,KAAK;AAC3C,UAAI,IAAI,GAAG;AACT,eAAO,KAAK,iCAAiC;AAAA,MAC/C;AACA,aAAO,KAAK;AAAA;AAAA,wDAEsC,IAAI,CAAC;AAAA,0DACH,IAAI,CAAC;AAAA;AAAA,OAExD;AAAA,IACH;AACA,WAAO,2BAA2B,MAAM;AAAA,EAC1C;AAAA,EAES,SAAS;AAChB,WAAO;AAAA;AAAA;AAAA,YAGC,KAAK,iBACH;AAAA;AAAA;AAAA;AAAA,yBAIW,MACP,KAAK,cAAc,IAAI,YAAY,qBAAqB,CAAC,CAAC;AAAA,6BAC/C,KAAK,mBAAmB;AAAA;AAAA;AAAA,oCAIvC,IAAI;AAAA;AAAA,YAEN,KAAK,oBAAoB;AAAA;AAAA;AAAA,YAGzB,KAAK,yBACH;AAAA,yBACW,MACP,KAAK;AAAA,MACH,IAAI,YAAY,6BAA6B;AAAA,IAAA,CAC9C;AAAA,+BACY,wBAAwB,QAAQ;AAAA,6BAClC,KAAK,qBAAqB;AAAA,yBAC9B,KAAK,iBAAiB;AAAA,4BACnB,KAAK,2BAA2B;AAAA,6CAE9C,OAAO;AAAA,YACT,KAAK,mBACH;AAAA;AAAA;AAAA;AAAA,yBAIW,MACP,KAAK,cAAc,IAAI,YAAY,uBAAuB,CAAC,CAAC;AAAA,6BACjD,KAAK,qBAAqB;AAAA;AAAA;AAAA,oCAIzC,IAAI;AAAA,YACN,KAAK,oBACH;AAAA;AAAA;AAAA;AAAA,yBAIW,MACP,KAAK,cAAc,IAAI,YAAY,wBAAwB,CAAC,CAAC;AAAA,6BAClD,KAAK,sBAAsB;AAAA;AAAA;AAAA,oCAI1C,IAAI;AAAA,YACN,KAAK,iBACH;AAAA;AAAA;AAAA;AAAA,yBAIW,MACP,KAAK,cAAc,IAAI,YAAY,qBAAqB,CAAC,CAAC;AAAA,6BAC/C,KAAK,mBAAmB;AAAA;AAAA;AAAA,oCAIvC,IAAI;AAAA,YACN,KAAK,YAAY,mCAAmC,IAAI;AAAA;AAAA;AAAA;AAAA,EAIlE;AAGF;AA9Ga,0BA6GK,SAAS,UAAU,YAAY;AA5GpB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GADd,0BACgB,WAAA,kBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAFd,0BAEgB,WAAA,uBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAHd,0BAGgB,WAAA,aAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAJd,0BAIgB,WAAA,0BAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GALd,0BAKgB,WAAA,+BAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GANb,0BAMe,WAAA,qBAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAPd,0BAOgB,WAAA,yBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GARd,0BAQgB,WAAA,kBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GATd,0BASgB,WAAA,uBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAVd,0BAUgB,WAAA,qBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAXd,0BAWgB,WAAA,0BAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAZd,0BAYgB,WAAA,oBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAbd,0BAagB,WAAA,yBAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAdb,0BAce,WAAA,iBAAA,CAAA;AAdf,4BAAN,gBAAA;AAAA,EADN,cAAc,8BAA8B;AAAA,GAChC,yBAAA;"}
1
+ {"version":3,"file":"integration-bar-dropdown.js","sources":["../../../src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar-dropdown.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport {NotificationButtonStyle} from '../../components/notification-button/notification-button.js';\nimport {property} from 'lit/decorators.js';\n\n/**\n *\n * @fires home-button-clicked - Fired when the home button is clicked\n * @fires dimming-button-clicked - Fired when the dimming button is clicked\n * @fires notification-button-clicked - Fired when the notification button is clicked\n * @fires user-button-clicked - Fired when the user button is clicked\n * @fires system-button-clicked - Fired when the system button is clicked\n *\n * @slot vessel-selector - Vessel selector content\n * @slot status-label-1 - Label for the first status field\n * @slot status-icon-1 - Icon for the first status field\n * @slot status-label-2 - Label for the second status field\n * @slot status-icon-2 - Icon for the second status field\n * @slot status-label-3 - Label for the third status field\n * @slot status-icon-3 - Icon for the third status field\n * @slot clock - Custom clock content, rendered when `showClock` is true\n * @experimental\n */\n@customElement('obc-integration-bar-dropdown')\nexport class ObcIntegrationBarDropdown extends LitElement {\n @property({type: Boolean}) showHomeButton = false;\n @property({type: Boolean}) homeButtonActivated = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Number}) notificationCount = 0;\n @property({type: Boolean}) showNotificationCount = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Number}) nStatusFields = 0;\n\n private renderStatusFields() {\n if (this.nStatusFields <= 0) {\n return nothing;\n }\n const result = [];\n for (let i = 0; i < this.nStatusFields; i++) {\n if (i > 0) {\n result.push(html`<div class=\"divider\"></div>`);\n }\n result.push(html`\n <div class=\"status-item\">\n <slot class=\"status-icon\" name=\"status-icon-${i + 1}\"></slot>\n <slot class=\"status-label\" name=\"status-label-${i + 1}\"></slot>\n </div>\n `);\n }\n return html`<div class=\"status\">${result}</div>`;\n }\n\n override render() {\n return html`\n <div class=\"wrapper\">\n <div class=\"left-side\">\n ${this.showHomeButton\n ? html`<obc-icon-button\n class=\"home-button\"\n part=\"home-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('home-button-clicked'))}\n ?activated=${this.homeButtonActivated}\n >\n <obi-home></obi-home>\n </obc-icon-button>`\n : null}\n <slot name=\"vessel-selector\"></slot>\n ${this.renderStatusFields()}\n </div>\n <div class=\"right-side\">\n ${this.showNotificationButton\n ? html`<obc-notification-button\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n .buttonStyle=${NotificationButtonStyle.Enhanced}\n .showCount=${this.showNotificationCount}\n .count=${this.notificationCount}\n ?isActive=${this.notificationButtonActivated}\n ></obc-notification-button>`\n : nothing}\n ${this.showSystemButton\n ? html`<obc-icon-button\n class=\"system-button\"\n part=\"system-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('system-button-clicked'))}\n ?activated=${this.systemButtonActivated}\n >\n <obi-configure></obi-configure>\n </obc-icon-button>`\n : null}\n ${this.showDimmingButton\n ? html`<obc-icon-button\n class=\"dimming-button\"\n part=\"dimming-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'))}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null}\n ${this.showUserButton\n ? html`<obc-icon-button\n class=\"user-button\"\n part=\"user-button\"\n variant=\"integration\"\n @click=${() =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))}\n ?activated=${this.userButtonActivated}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null}\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n </div>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar-dropdown': ObcIntegrationBarDropdown;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export interface IntegrationFleetButtonReadout {
6
6
  unit: string;
7
7
  }
8
8
  /**
9
+ * @slot alert-topic-icon - Icon shown alongside the alert topic
9
10
  * @experimental
10
11
  */
11
12
  export declare class ObcIntegrationFleetButton extends LitElement {
@@ -1 +1 @@
1
- {"version":3,"file":"integration-fleet-button.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-fleet-button/integration-fleet-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAMhD,OAAO,iCAAiC,CAAC;AAEzC,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IAC5B,QAAQ,EAAE,OAAO,CAAS;IAC3B,SAAS,EAAE,MAAM,CAAM;IACvB,MAAM,EAAE,MAAM,CAAM;IAE9C,QAAQ,EAAE,6BAA6B,EAAE,CAAM;IACrB,UAAU,EAAE,MAAM,CAAM;IACN,MAAM,EAAE;QAClD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAsC;IACZ,UAAU,EAAE,OAAO,CAAS;IAE9C,MAAM;IA2Cf,gBAAgB;IAiChB,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,8BAA8B,EAAE,yBAAyB,CAAC;KAC3D;CACF"}
1
+ {"version":3,"file":"integration-fleet-button.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-fleet-button/integration-fleet-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAMhD,OAAO,iCAAiC,CAAC;AAEzC,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IAC5B,QAAQ,EAAE,OAAO,CAAS;IAC3B,SAAS,EAAE,MAAM,CAAM;IACvB,MAAM,EAAE,MAAM,CAAM;IAE9C,QAAQ,EAAE,6BAA6B,EAAE,CAAM;IACrB,UAAU,EAAE,MAAM,CAAM;IACN,MAAM,EAAE;QAClD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAsC;IACZ,UAAU,EAAE,OAAO,CAAS;IAE9C,MAAM;IA2Cf,gBAAgB;IAiChB,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,8BAA8B,EAAE,yBAAyB,CAAC;KAC3D;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"integration-fleet-button.js","sources":["../../../src/integration-systems/integration-fleet-button/integration-fleet-button.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-fleet-button.css?inline';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {msg} from '@lit/localize';\nimport '../../components/badge/badge.js';\n\nexport interface IntegrationFleetButtonReadout {\n label: string;\n value: string;\n unit: string;\n}\n\n/**\n * @experimental\n */\n@customElement('obc-integration-fleet-button')\nexport class ObcIntegrationFleetButton extends LitElement {\n @property({type: Boolean}) selected: boolean = false;\n @property({type: String}) fleetName: string = '';\n @property({type: String}) status: string = '';\n @property({type: Array, attribute: false})\n readouts: IntegrationFleetButtonReadout[] = [];\n @property({type: String}) alertTopic: string = '';\n @property({type: Object, attribute: false}) alerts: {\n alarm: number;\n warning: number;\n caution: number;\n } = {alarm: 0, warning: 0, caution: 0};\n @property({type: Boolean}) showAlerts: boolean = false;\n\n override render() {\n const hasAlert =\n this.alerts.alarm > 0 ||\n this.alerts.warning > 0 ||\n this.alerts.caution > 0;\n return html`\n <button class=\"wrapper ${this.selected ? 'selected' : ''}\">\n <div class=\"header\">\n <div class=\"fleet-name\">${this.fleetName}</div>\n <div class=\"status\">${this.status}</div>\n </div>\n <div class=\"content\">\n <div class=\"readouts\">\n ${this.readouts.map(\n (readout) =>\n html`<div class=\"readout\">\n <div class=\"readout-label\">${readout.label}</div>\n <div class=\"readout-value\">${readout.value}</div>\n <div class=\"readout-unit\">${readout.unit}</div>\n </div>`\n )}\n </div>\n <div\n class=${classMap({\n alerts: true,\n 'has-alert': hasAlert,\n 'no-alert': !hasAlert,\n 'show-alerts': this.showAlerts,\n })}\n >\n <div class=\"alert-icon \">\n <slot name=\"alert-topic-icon\"></slot>\n </div>\n <div class=\"alert-topic\">${this.alertTopic}</div>\n <div class=\"alert-counts\">\n ${hasAlert ? this.renderAlertCount() : msg('No alerts')}\n </div>\n </div>\n </div>\n </button>\n `;\n }\n\n renderAlertCount() {\n const {alarm, warning, caution} = this.alerts;\n const divs = [];\n if (alarm > 0) {\n divs.push(\n html`<obc-badge\n type=\"alarm\"\n .number=\"${alarm}\"\n size=\"large\"\n ></obc-badge>`\n );\n }\n if (warning > 0) {\n divs.push(\n html`<obc-badge\n type=\"warning\"\n .number=\"${warning}\"\n size=\"large\"\n ></obc-badge>`\n );\n }\n if (caution > 0) {\n divs.push(\n html`<obc-badge\n type=\"caution\"\n .number=\"${caution}\"\n size=\"large\"\n ></obc-badge>`\n );\n }\n return divs;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-fleet-button': ObcIntegrationFleetButton;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkBO,IAAM,4BAAN,cAAwC,WAAW;AAAA,EAAnD,cAAA;AAAA,UAAA,GAAA,SAAA;AACsB,SAAA,WAAoB;AACrB,SAAA,YAAoB;AACpB,SAAA,SAAiB;AAE3C,SAAA,WAA4C,CAAA;AAClB,SAAA,aAAqB;AACH,SAAA,SAIxC,EAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EAAA;AACT,SAAA,aAAsB;AAAA,EAAA;AAAA,EAExC,SAAS;AAChB,UAAM,WACJ,KAAK,OAAO,QAAQ,KACpB,KAAK,OAAO,UAAU,KACtB,KAAK,OAAO,UAAU;AACxB,WAAO;AAAA,+BACoB,KAAK,WAAW,aAAa,EAAE;AAAA;AAAA,oCAE1B,KAAK,SAAS;AAAA,gCAClB,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA,cAI7B,KAAK,SAAS;AAAA,MACd,CAAC,YACC;AAAA,+CAC+B,QAAQ,KAAK;AAAA,+CACb,QAAQ,KAAK;AAAA,8CACd,QAAQ,IAAI;AAAA;AAAA,IAAA,CAE7C;AAAA;AAAA;AAAA,oBAGO,SAAS;AAAA,MACf,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,YAAY,CAAC;AAAA,MACb,eAAe,KAAK;AAAA,IAAA,CACrB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,uCAKyB,KAAK,UAAU;AAAA;AAAA,gBAEtC,WAAW,KAAK,iBAAA,IAAqB,IAAI,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnE;AAAA,EAEA,mBAAmB;AACjB,UAAM,EAAC,OAAO,SAAS,QAAA,IAAW,KAAK;AACvC,UAAM,OAAO,CAAA;AACb,QAAI,QAAQ,GAAG;AACb,WAAK;AAAA,QACH;AAAA;AAAA,qBAEa,KAAK;AAAA;AAAA;AAAA,MAAA;AAAA,IAItB;AACA,QAAI,UAAU,GAAG;AACf,WAAK;AAAA,QACH;AAAA;AAAA,qBAEa,OAAO;AAAA;AAAA;AAAA,MAAA;AAAA,IAIxB;AACA,QAAI,UAAU,GAAG;AACf,WAAK;AAAA,QACH;AAAA;AAAA,qBAEa,OAAO;AAAA;AAAA;AAAA,MAAA;AAAA,IAIxB;AACA,WAAO;AAAA,EACT;AAGF;AA3Fa,0BA0FK,SAAS,UAAU,YAAY;AAzFpB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GADd,0BACgB,WAAA,YAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAFb,0BAEe,WAAA,aAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAHb,0BAGe,WAAA,UAAA,CAAA;AAE1B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,OAAO,WAAW,OAAM;AAAA,GAJ9B,0BAKX,WAAA,YAAA,CAAA;AAC0B,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GANb,0BAMe,WAAA,cAAA,CAAA;AACkB,gBAAA;AAAA,EAA3C,SAAS,EAAC,MAAM,QAAQ,WAAW,OAAM;AAAA,GAP/B,0BAOiC,WAAA,UAAA,CAAA;AAKjB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAZd,0BAYgB,WAAA,cAAA,CAAA;AAZhB,4BAAN,gBAAA;AAAA,EADN,cAAc,8BAA8B;AAAA,GAChC,yBAAA;"}
1
+ {"version":3,"file":"integration-fleet-button.js","sources":["../../../src/integration-systems/integration-fleet-button/integration-fleet-button.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-fleet-button.css?inline';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {msg} from '@lit/localize';\nimport '../../components/badge/badge.js';\n\nexport interface IntegrationFleetButtonReadout {\n label: string;\n value: string;\n unit: string;\n}\n\n/**\n * @slot alert-topic-icon - Icon shown alongside the alert topic\n * @experimental\n */\n@customElement('obc-integration-fleet-button')\nexport class ObcIntegrationFleetButton extends LitElement {\n @property({type: Boolean}) selected: boolean = false;\n @property({type: String}) fleetName: string = '';\n @property({type: String}) status: string = '';\n @property({type: Array, attribute: false})\n readouts: IntegrationFleetButtonReadout[] = [];\n @property({type: String}) alertTopic: string = '';\n @property({type: Object, attribute: false}) alerts: {\n alarm: number;\n warning: number;\n caution: number;\n } = {alarm: 0, warning: 0, caution: 0};\n @property({type: Boolean}) showAlerts: boolean = false;\n\n override render() {\n const hasAlert =\n this.alerts.alarm > 0 ||\n this.alerts.warning > 0 ||\n this.alerts.caution > 0;\n return html`\n <button class=\"wrapper ${this.selected ? 'selected' : ''}\">\n <div class=\"header\">\n <div class=\"fleet-name\">${this.fleetName}</div>\n <div class=\"status\">${this.status}</div>\n </div>\n <div class=\"content\">\n <div class=\"readouts\">\n ${this.readouts.map(\n (readout) =>\n html`<div class=\"readout\">\n <div class=\"readout-label\">${readout.label}</div>\n <div class=\"readout-value\">${readout.value}</div>\n <div class=\"readout-unit\">${readout.unit}</div>\n </div>`\n )}\n </div>\n <div\n class=${classMap({\n alerts: true,\n 'has-alert': hasAlert,\n 'no-alert': !hasAlert,\n 'show-alerts': this.showAlerts,\n })}\n >\n <div class=\"alert-icon \">\n <slot name=\"alert-topic-icon\"></slot>\n </div>\n <div class=\"alert-topic\">${this.alertTopic}</div>\n <div class=\"alert-counts\">\n ${hasAlert ? this.renderAlertCount() : msg('No alerts')}\n </div>\n </div>\n </div>\n </button>\n `;\n }\n\n renderAlertCount() {\n const {alarm, warning, caution} = this.alerts;\n const divs = [];\n if (alarm > 0) {\n divs.push(\n html`<obc-badge\n type=\"alarm\"\n .number=\"${alarm}\"\n size=\"large\"\n ></obc-badge>`\n );\n }\n if (warning > 0) {\n divs.push(\n html`<obc-badge\n type=\"warning\"\n .number=\"${warning}\"\n size=\"large\"\n ></obc-badge>`\n );\n }\n if (caution > 0) {\n divs.push(\n html`<obc-badge\n type=\"caution\"\n .number=\"${caution}\"\n size=\"large\"\n ></obc-badge>`\n );\n }\n return divs;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-fleet-button': ObcIntegrationFleetButton;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmBO,IAAM,4BAAN,cAAwC,WAAW;AAAA,EAAnD,cAAA;AAAA,UAAA,GAAA,SAAA;AACsB,SAAA,WAAoB;AACrB,SAAA,YAAoB;AACpB,SAAA,SAAiB;AAE3C,SAAA,WAA4C,CAAA;AAClB,SAAA,aAAqB;AACH,SAAA,SAIxC,EAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EAAA;AACT,SAAA,aAAsB;AAAA,EAAA;AAAA,EAExC,SAAS;AAChB,UAAM,WACJ,KAAK,OAAO,QAAQ,KACpB,KAAK,OAAO,UAAU,KACtB,KAAK,OAAO,UAAU;AACxB,WAAO;AAAA,+BACoB,KAAK,WAAW,aAAa,EAAE;AAAA;AAAA,oCAE1B,KAAK,SAAS;AAAA,gCAClB,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA,cAI7B,KAAK,SAAS;AAAA,MACd,CAAC,YACC;AAAA,+CAC+B,QAAQ,KAAK;AAAA,+CACb,QAAQ,KAAK;AAAA,8CACd,QAAQ,IAAI;AAAA;AAAA,IAAA,CAE7C;AAAA;AAAA;AAAA,oBAGO,SAAS;AAAA,MACf,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,YAAY,CAAC;AAAA,MACb,eAAe,KAAK;AAAA,IAAA,CACrB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,uCAKyB,KAAK,UAAU;AAAA;AAAA,gBAEtC,WAAW,KAAK,iBAAA,IAAqB,IAAI,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnE;AAAA,EAEA,mBAAmB;AACjB,UAAM,EAAC,OAAO,SAAS,QAAA,IAAW,KAAK;AACvC,UAAM,OAAO,CAAA;AACb,QAAI,QAAQ,GAAG;AACb,WAAK;AAAA,QACH;AAAA;AAAA,qBAEa,KAAK;AAAA;AAAA;AAAA,MAAA;AAAA,IAItB;AACA,QAAI,UAAU,GAAG;AACf,WAAK;AAAA,QACH;AAAA;AAAA,qBAEa,OAAO;AAAA;AAAA;AAAA,MAAA;AAAA,IAIxB;AACA,QAAI,UAAU,GAAG;AACf,WAAK;AAAA,QACH;AAAA;AAAA,qBAEa,OAAO;AAAA;AAAA;AAAA,MAAA;AAAA,IAIxB;AACA,WAAO;AAAA,EACT;AAGF;AA3Fa,0BA0FK,SAAS,UAAU,YAAY;AAzFpB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GADd,0BACgB,WAAA,YAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAFb,0BAEe,WAAA,aAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAHb,0BAGe,WAAA,UAAA,CAAA;AAE1B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,OAAO,WAAW,OAAM;AAAA,GAJ9B,0BAKX,WAAA,YAAA,CAAA;AAC0B,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GANb,0BAMe,WAAA,cAAA,CAAA;AACkB,gBAAA;AAAA,EAA3C,SAAS,EAAC,MAAM,QAAQ,WAAW,OAAM;AAAA,GAP/B,0BAOiC,WAAA,UAAA,CAAA;AAKjB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAZd,0BAYgB,WAAA,cAAA,CAAA;AAZhB,4BAAN,gBAAA;AAAA,EADN,cAAc,8BAA8B;AAAA,GAChC,yBAAA;"}
@@ -1,5 +1,6 @@
1
1
  import { LitElement } from 'lit';
2
2
  /**
3
+ * @slot - Tab label content
3
4
  * @experimental
4
5
  */
5
6
  export declare class ObcIntegrationTabs extends LitElement {
@@ -1 +1 @@
1
- {"version":3,"file":"integration-tabs.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-tabs/integration-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAKhD;;GAEG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IACrB,QAAQ,UAAS;IACnC,MAAM;IAUf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF"}
1
+ {"version":3,"file":"integration-tabs.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-tabs/integration-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAKhD;;;GAGG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IACrB,QAAQ,UAAS;IACnC,MAAM;IAUf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"integration-tabs.js","sources":["../../../src/integration-systems/integration-tabs/integration-tabs.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-tabs.css?inline';\nimport {property} from 'lit/decorators.js';\n\n/**\n * @experimental\n */\n@customElement('obc-integration-tabs')\nexport class ObcIntegrationTabs extends LitElement {\n @property({type: Boolean}) selected = false;\n override render() {\n return html`\n <button class=\"wrapper ${this.selected ? 'selected' : ''}\">\n <div class=\"visible-wrapper\">\n <div class=\"label\"><slot></slot></div>\n </div>\n </button>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-tabs': ObcIntegrationTabs;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AASO,IAAM,qBAAN,cAAiC,WAAW;AAAA,EAA5C,cAAA;AAAA,UAAA,GAAA,SAAA;AACsB,SAAA,WAAW;AAAA,EAAA;AAAA,EAC7B,SAAS;AAChB,WAAO;AAAA,+BACoB,KAAK,WAAW,aAAa,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5D;AAGF;AAba,mBAYK,SAAS,UAAU,YAAY;AAXpB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GADd,mBACgB,WAAA,YAAA,CAAA;AADhB,qBAAN,gBAAA;AAAA,EADN,cAAc,sBAAsB;AAAA,GACxB,kBAAA;"}
1
+ {"version":3,"file":"integration-tabs.js","sources":["../../../src/integration-systems/integration-tabs/integration-tabs.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-tabs.css?inline';\nimport {property} from 'lit/decorators.js';\n\n/**\n * @slot - Tab label content\n * @experimental\n */\n@customElement('obc-integration-tabs')\nexport class ObcIntegrationTabs extends LitElement {\n @property({type: Boolean}) selected = false;\n override render() {\n return html`\n <button class=\"wrapper ${this.selected ? 'selected' : ''}\">\n <div class=\"visible-wrapper\">\n <div class=\"label\"><slot></slot></div>\n </div>\n </button>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-tabs': ObcIntegrationTabs;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAUO,IAAM,qBAAN,cAAiC,WAAW;AAAA,EAA5C,cAAA;AAAA,UAAA,GAAA,SAAA;AACsB,SAAA,WAAW;AAAA,EAAA;AAAA,EAC7B,SAAS;AAChB,WAAO;AAAA,+BACoB,KAAK,WAAW,aAAa,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5D;AAGF;AAba,mBAYK,SAAS,UAAU,YAAY;AAXpB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GADd,mBACgB,WAAA,YAAA,CAAA;AADhB,qBAAN,gBAAA;AAAA,EADN,cAAc,sBAAsB;AAAA,GACxB,kBAAA;"}
@@ -45,7 +45,6 @@ export declare enum CompassSectorPriorityElement {
45
45
  * - Enable `zoomToFitArc` to enlarge the arc to fill the viewport.
46
46
  * - For a full‑circle compass, use `<obc-compass>` instead.
47
47
  *
48
- * @fires None
49
48
  * @stable
50
49
  */
51
50
  export declare class ObcCompassSector extends LitElement {