@oicl/openbridge-webcomponents 2.0.0-next.154 → 2.0.0-next.156

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE-AGPL.txt +661 -0
  2. package/LICENSE-APACHE.txt +177 -0
  3. package/LICENSE.txt +35 -0
  4. package/bundle/openbridge-webcomponents.bundle.js +3629 -3281
  5. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  6. package/custom-elements.json +303 -43
  7. package/dist/automation/transmitter/transmitter-shared.d.ts +11 -0
  8. package/dist/automation/transmitter/transmitter-shared.d.ts.map +1 -0
  9. package/dist/automation/transmitter/transmitter-shared.js +16 -0
  10. package/dist/automation/transmitter/transmitter-shared.js.map +1 -0
  11. package/dist/automation/transmitter/transmitter.css.js +12 -1
  12. package/dist/automation/transmitter/transmitter.css.js.map +1 -1
  13. package/dist/automation/transmitter/transmitter.d.ts +9 -10
  14. package/dist/automation/transmitter/transmitter.d.ts.map +1 -1
  15. package/dist/automation/transmitter/transmitter.js +12 -15
  16. package/dist/automation/transmitter/transmitter.js.map +1 -1
  17. package/dist/automation/transmitter-button/transmitter-button.css.js +18 -42
  18. package/dist/automation/transmitter-button/transmitter-button.css.js.map +1 -1
  19. package/dist/automation/transmitter-button/transmitter-button.d.ts +31 -21
  20. package/dist/automation/transmitter-button/transmitter-button.d.ts.map +1 -1
  21. package/dist/automation/transmitter-button/transmitter-button.js +37 -39
  22. package/dist/automation/transmitter-button/transmitter-button.js.map +1 -1
  23. package/dist/automation/transmitter-stack/transmitter-stack.css.js +144 -0
  24. package/dist/automation/transmitter-stack/transmitter-stack.css.js.map +1 -0
  25. package/dist/automation/transmitter-stack/transmitter-stack.d.ts +93 -0
  26. package/dist/automation/transmitter-stack/transmitter-stack.d.ts.map +1 -0
  27. package/dist/automation/transmitter-stack/transmitter-stack.js +97 -0
  28. package/dist/automation/transmitter-stack/transmitter-stack.js.map +1 -0
  29. package/dist/building-blocks/readout-block/readout-block.d.ts +1 -1
  30. package/dist/building-blocks/readout-block/readout-block.js.map +1 -1
  31. package/dist/components/textarea-field/textarea-field.css.js +0 -2
  32. package/dist/components/textarea-field/textarea-field.css.js.map +1 -1
  33. package/dist/components/textbox/textbox.d.ts +1 -1
  34. package/dist/components/textbox/textbox.js.map +1 -1
  35. package/dist/components/user-button/user-button.css.js +68 -1
  36. package/dist/components/user-button/user-button.css.js.map +1 -1
  37. package/dist/components/user-button/user-button.d.ts +12 -1
  38. package/dist/components/user-button/user-button.d.ts.map +1 -1
  39. package/dist/components/user-button/user-button.js +12 -3
  40. package/dist/components/user-button/user-button.js.map +1 -1
  41. package/dist/components/user-menu/user-menu.css.js +15 -0
  42. package/dist/components/user-menu/user-menu.css.js.map +1 -1
  43. package/dist/components/user-menu/user-menu.d.ts +30 -2
  44. package/dist/components/user-menu/user-menu.d.ts.map +1 -1
  45. package/dist/components/user-menu/user-menu.js +34 -2
  46. package/dist/components/user-menu/user-menu.js.map +1 -1
  47. package/dist/generated/locales/es-419.d.ts +1 -0
  48. package/dist/generated/locales/es-419.d.ts.map +1 -1
  49. package/dist/generated/locales/es-419.js +1 -0
  50. package/dist/generated/locales/es-419.js.map +1 -1
  51. package/dist/generated/locales/fi-FI.d.ts +1 -0
  52. package/dist/generated/locales/fi-FI.d.ts.map +1 -1
  53. package/dist/generated/locales/fi-FI.js +1 -0
  54. package/dist/generated/locales/fi-FI.js.map +1 -1
  55. package/dist/navigation-instruments/readout/readout.d.ts +1 -1
  56. package/dist/navigation-instruments/readout/readout.js.map +1 -1
  57. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js +1 -0
  58. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js.map +1 -1
  59. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts +1 -1
  60. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts.map +1 -1
  61. package/dist/navigation-instruments/readout-list-item/readout-list-item.js +3 -0
  62. package/dist/navigation-instruments/readout-list-item/readout-list-item.js.map +1 -1
  63. package/package.json +6 -3
@@ -41569,7 +41569,7 @@
41569
41569
  "declarations": [
41570
41570
  {
41571
41571
  "kind": "class",
41572
- "description": "`<obc-transmitter-button>` – The pressable readout chip used as the core of a\ntransmitter on a process diagram.\n\nThe value content (leading icon, optional advice and setpoint segments,\nvalue, unit) is laid out inline. The value, advice and setpoint segments all\nshare one numeric format, so they support fixed-width values and muted\nleading zeros identically. The leading icon is slotted so the consumer\nprovides the type-specific content.\n\n### Features / Variants\n- **`value`** – white, bordered box showing an icon, value and unit. Opt into a\n leading advice segment with `hasAdvice`/`adviceValue` and a setpoint segment\n with `hasSetPoint`/`setpointValue`.\n- **`tag`** – a static rounded pill showing a short identifier (e.g. `TT`)\n from the `label` property, with no live value.\n- **`size`** – `regular`, `medium` or `large`, scaling the value text, the icon\n glyph and the advice/setpoint segments. The unit stays at a fixed size across\n all sizes.\n- **Formatting** – `fractionDigits` sets the decimal precision, `maxDigits`\n reserves a number of integer digits, and `hintedZeros` renders the reserved\n leading positions as muted zeros (e.g. `0012.3`). The sign never consumes\n a reserved position (`-0012.3`), so a negative value is one character\n wider than a positive one; `hasSignSpacer` reserves the sign column so\n the width does not change across zero. All three segments share this\n formatting — it is `obc-readout-block`'s.\n- **Missing values** – `value`, `adviceValue` and `setpointValue` each render\n dashes when they are `NaN`, `null` or `undefined`; with `hintedZeros` the\n dashes fill the whole reserved width (e.g. `---.-`).\n\n### Usage Guidelines\nUse as a building block for `<obc-transmitter>`; it is the part that carries\nthe measured value or the tag identifier. Slot in the type-specific icon; the\nadvice and setpoint segments are value-driven and read-only.\n\n### Slots\n| Slot Name | Conditions | Purpose |\n|-----------|-------------------------------|--------------------------------|\n| icon | `value` variant and `hasIcon` | Leading icon beside the value. |",
41572
+ "description": "`<obc-transmitter-button>` – The pressable readout chip at the core of a\ntransmitter: a bordered button around one reading.\n\nThe reading is a label-less `<obc-readout-list-item>` (the Figma \"automation\nvalue\"): leading icon, optional advice and setpoint, value, optional degree\nand unit, all rendered by the readout family. The leading icon is slotted so\nthe consumer provides the type-specific content.\n\n### Features / Variants\n- **`value`** – bordered chip showing an icon, value and unit. Opt into a\n leading advice segment with `hasAdvice`/`adviceValue`, a setpoint segment\n with `hasSetPoint`/`setpointValue`, and a degree column before the unit\n with `hasDegree`.\n- **`tag`** – a static rounded pill showing a short identifier (e.g. `TT`)\n from the `label` property, with no live value.\n- **`size`** – `regular`, `medium` or `large`, the list item's `small`,\n `medium` and `large` tiers: the value text, the icon and the advice/setpoint\n segments scale, the unit stays extra small.\n- **Formatting** – `fractionDigits` sets the decimal precision, `maxDigits`\n reserves a number of integer digits, and `hintedZeros` renders the reserved\n leading positions as muted zeros (e.g. `0012.3`). The sign never consumes\n a reserved position (`-0012.3`), so a negative value is one character\n wider than a positive one; `hasSignSpacer` reserves the sign column so\n the width does not change across zero. All three segments share this\n formatting — it is `obc-readout-block`'s.\n- **Missing values** – `value`, `adviceValue` and `setpointValue` each render\n dashes when they are `NaN`, `null` or `undefined`; with `hintedZeros` the\n dashes fill the whole reserved width (e.g. `---.-`).\n\n### Usage Guidelines\nUse as a building block for `<obc-transmitter>` and `<obc-transmitter-stack>`;\nit is the part that carries the measured value or the tag identifier. Slot in\nthe type-specific icon; the advice and setpoint segments are value-driven and\nread-only.\n\n**TODO(designer):** the hit area is the visible chip, 24 px high at `regular`:\nat the WCAG 2.5.8 floor of 24 px, below the 48 px touch-target token. A\n48 px target would overlap the id tag, the leader line and neighbouring\n`<obc-transmitter-stack>` segments, so the size needs a design decision.\n\n### Slots\n| Slot Name | Conditions | Purpose |\n|-----------|-------------------------------|--------------------------------|\n| icon | `value` variant and `hasIcon` | Leading icon beside the value. |",
41573
41573
  "name": "ObcTransmitterButton",
41574
41574
  "slots": [
41575
41575
  {
@@ -41649,6 +41649,16 @@
41649
41649
  "description": "Reserve a minus-sign column on every segment, filled by the real sign only while a value is negative, so the width does not change across zero.",
41650
41650
  "attribute": "hasSignSpacer"
41651
41651
  },
41652
+ {
41653
+ "kind": "field",
41654
+ "name": "hasDegree",
41655
+ "type": {
41656
+ "text": "boolean"
41657
+ },
41658
+ "default": "false",
41659
+ "description": "Show a degree column between the value and the unit (e.g. `12.3°` then `C`).",
41660
+ "attribute": "hasDegree"
41661
+ },
41652
41662
  {
41653
41663
  "kind": "field",
41654
41664
  "name": "hasIcon",
@@ -41706,42 +41716,23 @@
41706
41716
  },
41707
41717
  {
41708
41718
  "kind": "field",
41709
- "name": "isTag",
41710
- "privacy": "private",
41711
- "readonly": true
41719
+ "name": "idTag",
41720
+ "type": {
41721
+ "text": "string"
41722
+ },
41723
+ "default": "''",
41724
+ "description": "Identifier appended to the button's accessible name only (e.g. `#0001`); the parent transmitter draws the visible tag outside the button, where it cannot join the name.",
41725
+ "attribute": "idTag"
41712
41726
  },
41713
41727
  {
41714
- "kind": "method",
41715
- "name": "renderBlock",
41728
+ "kind": "field",
41729
+ "name": "isTag",
41716
41730
  "privacy": "private",
41717
- "parameters": [
41718
- {
41719
- "name": "variant",
41720
- "type": {
41721
- "text": "ReadoutBlockVariant"
41722
- }
41723
- },
41724
- {
41725
- "name": "value",
41726
- "type": {
41727
- "text": "number | null | undefined"
41728
- }
41729
- }
41730
- ]
41731
- },
41732
- {
41733
- "kind": "method",
41734
- "name": "renderAdvice",
41735
- "privacy": "private"
41736
- },
41737
- {
41738
- "kind": "method",
41739
- "name": "renderSetpoint",
41740
- "privacy": "private"
41731
+ "readonly": true
41741
41732
  },
41742
41733
  {
41743
41734
  "kind": "method",
41744
- "name": "renderContent",
41735
+ "name": "renderReading",
41745
41736
  "privacy": "private"
41746
41737
  }
41747
41738
  ],
@@ -41809,6 +41800,15 @@
41809
41800
  "description": "Reserve a minus-sign column on every segment, filled by the real sign only while a value is negative, so the width does not change across zero.",
41810
41801
  "fieldName": "hasSignSpacer"
41811
41802
  },
41803
+ {
41804
+ "name": "hasDegree",
41805
+ "type": {
41806
+ "text": "boolean"
41807
+ },
41808
+ "default": "false",
41809
+ "description": "Show a degree column between the value and the unit (e.g. `12.3°` then `C`).",
41810
+ "fieldName": "hasDegree"
41811
+ },
41812
41812
  {
41813
41813
  "name": "hasIcon",
41814
41814
  "type": {
@@ -41857,6 +41857,15 @@
41857
41857
  "default": "''",
41858
41858
  "description": "Short tag identifier shown in the `tag` variant (e.g. `TT`).",
41859
41859
  "fieldName": "label"
41860
+ },
41861
+ {
41862
+ "name": "idTag",
41863
+ "type": {
41864
+ "text": "string"
41865
+ },
41866
+ "default": "''",
41867
+ "description": "Identifier appended to the button's accessible name only (e.g. `#0001`); the parent transmitter draws the visible tag outside the button, where it cannot join the name.",
41868
+ "fieldName": "idTag"
41860
41869
  }
41861
41870
  ],
41862
41871
  "superclass": {
@@ -41886,13 +41895,169 @@
41886
41895
  }
41887
41896
  ]
41888
41897
  },
41898
+ {
41899
+ "kind": "javascript-module",
41900
+ "path": "src/automation/transmitter-stack/transmitter-stack.ts",
41901
+ "declarations": [
41902
+ {
41903
+ "kind": "class",
41904
+ "description": "`<obc-transmitter-stack>` – Several transmitter readings side by side in one\njoined chip, attached to a line by a single leader line.\n\nEach entry of `values` renders an `<obc-transmitter-button>` segment with its\nown icon, value, unit and id tag. The segments take equal widths, set by the\nwidest reading, and share their borders. Positioning and the leader line\nfollow `<obc-transmitter>`.\n\n### Features / Variants\n- **`orientation`** – `top`, `right`, `bottom`, `left`; the edge the leader\n line attaches to. `top` places the id tags above the chip.\n- **Values** – `value` and `unit` per segment. `idTag` adds a label row under\n every segment once any value has one, so the chip stays aligned.\n- **Formatting** – per value `fractionDigits` (default `1`), `maxDigits`\n (default `0`), `hintedZeros`, `hasSignSpacer` and `hasDegree`, formatted like\n `<obc-transmitter-button>`. An omitted key takes its default; a key set to\n `null`, `undefined` or `NaN` renders the reading as the unavailable dash.\n- **Icons** – `iconSlotName` projects the light-DOM element with that slot\n name as the segment's icon; names must be unique within the stack. The\n name is chosen per value, so it carries no `@slot` tag (the wrapper\n generator needs literal names).\n- **Accessible name** – each segment is a native button named by its\n reading, unit and `idTag`; the visible tag is hidden from assistive\n technology so it is not read twice.\n- **Empty** – with no `values` nothing renders, leader line included.\n\n### Usage Guidelines\nUse when one source reports several readings that share one leader line. For\na single reading, a tag pill or a trend graph, use `<obc-transmitter>`. Each\nsegment's hit area is `<obc-transmitter-button>`'s chip (24 px high), below\nthe 48 px touch-target token; see its design note.\n\n### Slots\n| Slot Name | Conditions | Purpose |\n|------------------|---------------------------------|-------------------------------|\n| `<iconSlotName>` | a value declares `iconSlotName` | Icon in that value's segment. |",
41905
+ "name": "ObcTransmitterStack",
41906
+ "members": [
41907
+ {
41908
+ "kind": "field",
41909
+ "name": "orientation",
41910
+ "type": {
41911
+ "text": "TransmitterOrientation"
41912
+ },
41913
+ "description": "Edge of the chip the leader line attaches to.",
41914
+ "attribute": "orientation"
41915
+ },
41916
+ {
41917
+ "kind": "field",
41918
+ "name": "lineType",
41919
+ "type": {
41920
+ "text": "LineType | undefined"
41921
+ },
41922
+ "default": "undefined",
41923
+ "description": "Line the transmitter sits on; offsets the leader line by half its stroke.",
41924
+ "attribute": "lineType"
41925
+ },
41926
+ {
41927
+ "kind": "field",
41928
+ "name": "values",
41929
+ "type": {
41930
+ "text": "TransmitterStackValue[]"
41931
+ },
41932
+ "default": "[]",
41933
+ "description": "One segment per entry, in order.",
41934
+ "attribute": "values"
41935
+ },
41936
+ {
41937
+ "kind": "method",
41938
+ "name": "handleValueClick",
41939
+ "privacy": "private",
41940
+ "return": {
41941
+ "type": {
41942
+ "text": "void"
41943
+ }
41944
+ },
41945
+ "parameters": [
41946
+ {
41947
+ "name": "index",
41948
+ "type": {
41949
+ "text": "number"
41950
+ }
41951
+ },
41952
+ {
41953
+ "name": "value",
41954
+ "type": {
41955
+ "text": "TransmitterStackValue"
41956
+ }
41957
+ }
41958
+ ]
41959
+ },
41960
+ {
41961
+ "kind": "method",
41962
+ "name": "renderValue",
41963
+ "privacy": "private",
41964
+ "parameters": [
41965
+ {
41966
+ "name": "entry",
41967
+ "type": {
41968
+ "text": "TransmitterStackValue"
41969
+ }
41970
+ },
41971
+ {
41972
+ "name": "index",
41973
+ "type": {
41974
+ "text": "number"
41975
+ }
41976
+ },
41977
+ {
41978
+ "name": "hasIdTags",
41979
+ "type": {
41980
+ "text": "boolean"
41981
+ }
41982
+ }
41983
+ ]
41984
+ }
41985
+ ],
41986
+ "events": [
41987
+ {
41988
+ "name": "value-click",
41989
+ "type": {
41990
+ "text": "CustomEvent<TransmitterStackValueClickDetail>"
41991
+ },
41992
+ "description": "Fired when a segment is activated, with its value and index."
41993
+ },
41994
+ {
41995
+ "description": "Fired when any segment is clicked; `value-click` tells which.",
41996
+ "name": "click"
41997
+ }
41998
+ ],
41999
+ "attributes": [
42000
+ {
42001
+ "name": "orientation",
42002
+ "type": {
42003
+ "text": "TransmitterOrientation"
42004
+ },
42005
+ "description": "Edge of the chip the leader line attaches to.",
42006
+ "fieldName": "orientation"
42007
+ },
42008
+ {
42009
+ "name": "lineType",
42010
+ "type": {
42011
+ "text": "LineType | undefined"
42012
+ },
42013
+ "default": "undefined",
42014
+ "description": "Line the transmitter sits on; offsets the leader line by half its stroke.",
42015
+ "fieldName": "lineType"
42016
+ },
42017
+ {
42018
+ "name": "values",
42019
+ "type": {
42020
+ "text": "TransmitterStackValue[]"
42021
+ },
42022
+ "default": "[]",
42023
+ "description": "One segment per entry, in order.",
42024
+ "fieldName": "values"
42025
+ }
42026
+ ],
42027
+ "superclass": {
42028
+ "name": "LitElement",
42029
+ "package": "lit"
42030
+ },
42031
+ "tagName": "obc-transmitter-stack",
42032
+ "customElement": true
42033
+ }
42034
+ ],
42035
+ "exports": [
42036
+ {
42037
+ "kind": "js",
42038
+ "name": "ObcTransmitterStack",
42039
+ "declaration": {
42040
+ "name": "ObcTransmitterStack",
42041
+ "module": "src/automation/transmitter-stack/transmitter-stack.ts"
42042
+ }
42043
+ },
42044
+ {
42045
+ "kind": "custom-element-definition",
42046
+ "name": "obc-transmitter-stack",
42047
+ "declaration": {
42048
+ "name": "ObcTransmitterStack",
42049
+ "module": "src/automation/transmitter-stack/transmitter-stack.ts"
42050
+ }
42051
+ }
42052
+ ]
42053
+ },
41889
42054
  {
41890
42055
  "kind": "javascript-module",
41891
42056
  "path": "src/automation/transmitter/transmitter.ts",
41892
42057
  "declarations": [
41893
42058
  {
41894
42059
  "kind": "class",
41895
- "description": "`<obc-transmitter>` – A readout label that attaches to a line on a process\ndiagram via a leader line, showing a measured value, a tag identifier, or a\nvalue paired with a trend graph.\n\nPositioning (orientation + leader line) follows `<obc-automation-readout>`.\nThe value chip is an `<obc-transmitter-button>` and the trend is an\n`<obc-indicator-graph>` with its area fill enabled.\n\n### Features / Variants\n- **`type`** – `indicator` (tag pill), `value` (icon/value/unit), or value\n paired with a `horizontal-graph` (beside) or `vertical-graph` (below).\n- **`orientation`** – `top`, `right`, `bottom`, `left`; controls which edge\n the leader line attaches to.\n- **Segments** – opt into a leading advice segment with `hasAdvice`/\n `adviceValue` and a setpoint segment with `hasSetPoint`/`setpointValue`;\n both are read-only and shown in the value chip for non-`indicator` types.\n- **`hasAlert`** – wraps the whole transmitter in an alarm `<obc-alert-frame>`.\n- **Formatting** – `fractionDigits`, `maxDigits`, `hintedZeros` and\n `hasSignSpacer` are forwarded to the value chip to control decimal\n precision, muted leading-zero padding (e.g. `0012.3`) and the sign\n column. The advice and setpoint segments reuse the same formatting.\n `value`, `adviceValue` and `setpointValue` render dashes when they are\n `NaN`, `null` or `undefined`.\n\n### Slots\n| Slot Name | Conditions | Purpose |\n|-----------|-------------------------|---------------------------------|\n| icon | value/graph + `hasIcon` | Leading icon in the value chip. |",
42060
+ "description": "`<obc-transmitter>` – A readout label that attaches to a line via a leader\nline, showing a measured value, a tag identifier, or a value paired with a\ntrend graph.\n\nPositioning (orientation + leader line) follows `<obc-automation-readout>`.\nThe value chip is an `<obc-transmitter-button>` and the trend is an\n`<obc-indicator-graph>` with its area fill enabled.\n\n### Features / Variants\n- **`type`** – `indicator` (tag pill), `value` (icon/value/unit), or value\n paired with a `horizontal-graph` (beside) or `vertical-graph` (below).\n- **`orientation`** – `top`, `right`, `bottom`, `left`; controls which edge\n the leader line attaches to.\n- **Segments** – opt into a leading advice segment with `hasAdvice`/\n `adviceValue` and a setpoint segment with `hasSetPoint`/`setpointValue`;\n both are read-only and shown in the value chip for non-`indicator` types.\n- **`hasAlert`** – wraps the whole transmitter in an alarm `<obc-alert-frame>`.\n- **Formatting** – `fractionDigits`, `maxDigits`, `hintedZeros` and\n `hasSignSpacer` are forwarded to the value chip to control decimal\n precision, muted leading-zero padding (e.g. `0012.3`) and the sign\n column. The advice and setpoint segments reuse the same formatting.\n `hasDegree` adds a degree column between the value and the unit.\n `value`, `adviceValue` and `setpointValue` render dashes when they are\n `NaN`, `null` or `undefined`.\n\n### Slots\n| Slot Name | Conditions | Purpose |\n|-----------|-------------------------|---------------------------------|\n| icon | value/graph + `hasIcon` | Leading icon in the value chip. |",
41896
42061
  "name": "ObcTransmitter",
41897
42062
  "slots": [
41898
42063
  {
@@ -41981,6 +42146,16 @@
41981
42146
  "description": "Reserve a minus-sign column on every segment, filled by the real sign only while a value is negative, so the chip's width does not change across zero.",
41982
42147
  "attribute": "hasSignSpacer"
41983
42148
  },
42149
+ {
42150
+ "kind": "field",
42151
+ "name": "hasDegree",
42152
+ "type": {
42153
+ "text": "boolean"
42154
+ },
42155
+ "default": "false",
42156
+ "description": "Show a degree column between the value and the unit (e.g. `12.3°` then `C`).",
42157
+ "attribute": "hasDegree"
42158
+ },
41984
42159
  {
41985
42160
  "kind": "field",
41986
42161
  "name": "size",
@@ -42080,12 +42255,6 @@
42080
42255
  "privacy": "private",
42081
42256
  "readonly": true
42082
42257
  },
42083
- {
42084
- "kind": "field",
42085
- "name": "lineOffset",
42086
- "privacy": "private",
42087
- "readonly": true
42088
- },
42089
42258
  {
42090
42259
  "kind": "method",
42091
42260
  "name": "renderButton",
@@ -42179,6 +42348,15 @@
42179
42348
  "description": "Reserve a minus-sign column on every segment, filled by the real sign only while a value is negative, so the chip's width does not change across zero.",
42180
42349
  "fieldName": "hasSignSpacer"
42181
42350
  },
42351
+ {
42352
+ "name": "hasDegree",
42353
+ "type": {
42354
+ "text": "boolean"
42355
+ },
42356
+ "default": "false",
42357
+ "description": "Show a degree column between the value and the unit (e.g. `12.3°` then `C`).",
42358
+ "fieldName": "hasDegree"
42359
+ },
42182
42360
  {
42183
42361
  "name": "size",
42184
42362
  "type": {
@@ -42272,6 +42450,22 @@
42272
42450
  }
42273
42451
  ],
42274
42452
  "exports": [
42453
+ {
42454
+ "kind": "js",
42455
+ "name": "TransmitterOrientation",
42456
+ "declaration": {
42457
+ "name": "TransmitterOrientation",
42458
+ "module": "./transmitter-shared.js"
42459
+ }
42460
+ },
42461
+ {
42462
+ "kind": "js",
42463
+ "name": "transmitterLeaderOffset",
42464
+ "declaration": {
42465
+ "name": "transmitterLeaderOffset",
42466
+ "module": "./transmitter-shared.js"
42467
+ }
42468
+ },
42275
42469
  {
42276
42470
  "kind": "js",
42277
42471
  "name": "ObcTransmitter",
@@ -87091,7 +87285,7 @@
87091
87285
  "declarations": [
87092
87286
  {
87093
87287
  "kind": "class",
87094
- "description": "`obc-user-button` – A compact, circular button for representing a user via icon or initials.\n\nDisplays either a user icon or user initials inside a circular button, with optional label text. Commonly used for user profile access, account switching, or avatar actions in toolbars and navigation. The button supports multiple visual styles and can be rendered as a static (non-interactive) element.\n\nAppears as a button by default, but switches to a non-interactive div when the `static` property is set.\n\n## Features\n- **Variants:**\n - `icon`: Shows a user icon (default, fallback if initials are invalid or missing).\n - `initials`: Shows up to two uppercase initials (falls back to icon if input is empty or longer than two characters).\n- **Style Types:**\n - `flat`: Minimal, flat appearance (default).\n - `normal`: Outlined with background and border.\n - `selected`: Highlighted to indicate selection or active state.\n- **Static Mode:**\n - Set `static` to render as a non-interactive element for use in read-only or decorative contexts.\n- **Disabled State:**\n - Set `disabled` to visually and functionally disable the button.\n- **Custom Icon Slot:**\n - Provide a custom icon via the `icon` slot when using the `icon` variant.\n- **Label Support:**\n - Optional `label` property displays text next to the button (not shown in static mode).\n\n## Usage Guidelines\nUse `obc-user-button` to represent a user in navigation bars, toolbars, or menus where a compact, recognizable user indicator is needed. Ideal for profile menus, account switching, or user-related quick actions.\n- Use the `icon` variant for generic user representation, or when no initials are available.\n- Use the `initials` variant to personalize the button with user initials (max two characters).\n- Use `styleType=\"selected\"` to indicate the current user or active selection.\n- Use `static` for non-interactive displays, such as in lists or summaries.\n- Avoid using for critical actions or as a replacement for full user profile cards.\n\n**TODO(designer):** Confirm if there are recommended scenarios for when to use `flat`, `normal`, or `selected` style types, and if there are accessibility guidelines for initials fallback.\n\n## Slots\n\n| Slot Name | Renders When... | Purpose |\n|-----------|-----------------|---------|\n| `icon` | `variant=\"icon\"` | Custom icon to display instead of the default user icon. |\n\n## Best Practices & Constraints\n- Initials longer than two characters are truncated and a warning is logged.\n- If `initials` is empty or invalid, the button falls back to the user icon.\n- The `label` is only visible when the button is interactive (not static).\n- For accessibility, the button uses `aria-label` based on initials or a default.\n- Only use the `static` property for non-interactive contexts; otherwise, the button is clickable.\n\n## Example:\n```html\n<obc-user-button variant=\"initials\" initials=\"JD\" styleType=\"normal\" label=\"John Doe\"></obc-user-button>\n<obc-user-button variant=\"icon\" styleType=\"flat\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n</obc-user-button>\n```",
87288
+ "description": "`obc-user-button` – A compact, circular button for representing a user via icon or initials.\n\nDisplays either a user icon or user initials inside a circular button, with optional label text. Commonly used for user profile access, account switching, or avatar actions in toolbars and navigation. The button supports multiple visual styles and can be rendered as a static (non-interactive) element.\n\nAppears as a button by default, but switches to a non-interactive div when the `static` property is set.\n\n## Features\n- **Variants:**\n - `icon`: Shows a user icon (default, fallback if initials are invalid or missing).\n - `initials`: Shows up to two uppercase initials (falls back to icon if input is empty or longer than two characters).\n- **Style Types:**\n - `flat`: Minimal, flat appearance (default).\n - `normal`: Outlined with background and border.\n - `selected`: Highlighted to indicate selection or active state.\n- **Static Mode:**\n - Set `static` to render as a non-interactive element for use in read-only or decorative contexts.\n- **Disabled State:**\n - Set `disabled` to visually and functionally disable the button.\n- **Custom Icon Slot:**\n - Provide a custom icon via the `icon` slot when using the `icon` variant.\n- **Label Support:**\n - Optional `label` property displays text next to the button (not shown in static mode).\n - Optional `sublabel` adds a second, lighter line under the label, for a\n secondary detail such as the user's role.\n\n## Usage Guidelines\nUse `obc-user-button` to represent a user in navigation bars, toolbars, or menus where a compact, recognizable user indicator is needed. Ideal for profile menus, account switching, or user-related quick actions.\n- Use the `icon` variant for generic user representation, or when no initials are available.\n- Use the `initials` variant to personalize the button with user initials (max two characters).\n- Use `styleType=\"selected\"` to indicate the current user or active selection.\n- Use `static` for non-interactive displays, such as in lists or summaries.\n- Avoid using for critical actions or as a replacement for full user profile cards.\n\n**TODO(designer):** Confirm if there are recommended scenarios for when to use `flat`, `normal`, or `selected` style types, and if there are accessibility guidelines for initials fallback.\n\n## Slots\n\n| Slot Name | Renders When... | Purpose |\n|-----------|-----------------|---------|\n| `icon` | `variant=\"icon\"` | Custom icon to display instead of the default user icon. |\n\n## Best Practices & Constraints\n- Initials longer than two characters are truncated and a warning is logged.\n- If `initials` is empty or invalid, the button falls back to the user icon.\n- The `label` is only visible when the button is interactive (not static).\n- For accessibility, the button is named after its visible text — `label` and\n `sublabel` falling back to the initials when it shows no text.\n- Only use the `static` property for non-interactive contexts; otherwise, the button is clickable.\n\n## Example:\n```html\n<obc-user-button variant=\"initials\" initials=\"JD\" styleType=\"normal\" label=\"John Doe\"></obc-user-button>\n<obc-user-button variant=\"icon\" styleType=\"flat\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n</obc-user-button>\n```",
87095
87289
  "name": "ObcUserButton",
87096
87290
  "slots": [
87097
87291
  {
@@ -87175,6 +87369,20 @@
87175
87369
  "truthy": false
87176
87370
  }
87177
87371
  },
87372
+ {
87373
+ "kind": "field",
87374
+ "name": "sublabel",
87375
+ "type": {
87376
+ "text": "string | undefined"
87377
+ },
87378
+ "description": "Optional second line under the label, for a secondary detail such as a role (not shown in static mode).\n\nAvailable when `static==false`.",
87379
+ "attribute": "sublabel",
87380
+ "availableWhen": "static==false",
87381
+ "availableWhenIf": {
87382
+ "arg": "static",
87383
+ "truthy": false
87384
+ }
87385
+ },
87178
87386
  {
87179
87387
  "kind": "field",
87180
87388
  "name": "formattedInitials",
@@ -87246,6 +87454,14 @@
87246
87454
  },
87247
87455
  "description": "Optional label text to display next to the button (not shown in static mode).\n\nAvailable when `static==false`.",
87248
87456
  "fieldName": "label"
87457
+ },
87458
+ {
87459
+ "name": "sublabel",
87460
+ "type": {
87461
+ "text": "string | undefined"
87462
+ },
87463
+ "description": "Optional second line under the label, for a secondary detail such as a role (not shown in static mode).\n\nAvailable when `static==false`.",
87464
+ "fieldName": "sublabel"
87249
87465
  }
87250
87466
  ],
87251
87467
  "superclass": {
@@ -87281,7 +87497,7 @@
87281
87497
  "declarations": [
87282
87498
  {
87283
87499
  "kind": "class",
87284
- "description": "`<obc-user-menu>` – A user menu component with sign-in and signed-in layouts.\n\nProvides multiple layouts for authentication and account access states, including\nsign-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 lists the actions it is given.\n\n### Variants\n- `type`: `sign-in`, `user-sign-in`, `loading-sign-in`, `signed-in`\n- `size`: `regular`, `small`\n\n### Usage Guidelines\nUse `obc-user-menu` in authentication or account panels where quick access to\nsign-in, profile, or account actions is needed. The `user-sign-in` type is\nbest 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 `false`.\n- `showUsername` (`boolean`): Toggles the username field. Defaults to `true`.\n- `showPassword` (`boolean`): Toggles the password field. 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. Empty renders no section.\n- `signedInActions` (`ObcUserMenuSignedInAction[]`): Actions shown in the\n signed-in navigation list. Empty renders no actions.\n- `primaryActionId` (`string`): Id of the action promoted to a button in the\n small signed-in layout.\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```",
87500
+ "description": "`<obc-user-menu>` – A user menu component with sign-in and signed-in layouts.\n\nProvides multiple layouts for authentication and account access states, including\nsign-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 lists the actions it is given.\n\n### Variants\n- `type`: `sign-in`, `user-sign-in`, `loading-sign-in`, `signed-in`\n- `size`: `regular`, `small`\n\n### Usage Guidelines\nUse `obc-user-menu` in authentication or account panels where quick access to\nsign-in, profile, or account actions is needed. The `user-sign-in` type is\nbest 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 `false`.\n- `showUsername` (`boolean`): Toggles the username field. Defaults to `true`.\n- `showPassword` (`boolean`): Toggles the password field. 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- `userRole` (`string`): Role shown under the primary user's label. Omit it\n to show no role; only the regular size draws one.\n- `recentUsers` (`ObcUserMenuUser[]`): List of recent users shown in the\n \"Recently signed in\" section. Empty renders no section. Each user may\n carry its own `role`.\n- `showUseAnotherAccount` (`boolean`): Toggles the \"Use another account\"\n button in the `user-sign-in` layouts, both sizes. Defaults to `true`.\n- `signedInActions` (`ObcUserMenuSignedInAction[]`): Actions shown in the\n signed-in navigation list. Empty renders no actions.\n- `primaryActionId` (`string`): Id of the action promoted to a button in the\n small signed-in layout.\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- `use-another-account-click` – Fired when the \"Use another account\" button\n is clicked. The menu does not change its own type; set it to `sign-in` in\n the handler to show the full form.\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```",
87285
87501
  "name": "ObcUserMenu",
87286
87502
  "slots": [
87287
87503
  {
@@ -87419,6 +87635,16 @@
87419
87635
  "neq": "sign-in"
87420
87636
  }
87421
87637
  },
87638
+ {
87639
+ "kind": "field",
87640
+ "name": "userRole",
87641
+ "type": {
87642
+ "text": "string | undefined"
87643
+ },
87644
+ "description": "Role shown under the primary user's label; omit it to show no role.\n\nAvailable when `type!=signIn && size==regular`.",
87645
+ "attribute": "userRole",
87646
+ "availableWhen": "type!=signIn && size==regular"
87647
+ },
87422
87648
  {
87423
87649
  "kind": "field",
87424
87650
  "name": "recentUsers",
@@ -87452,6 +87678,20 @@
87452
87678
  "attribute": "primaryActionId",
87453
87679
  "availableWhen": "type==signedIn && size==small"
87454
87680
  },
87681
+ {
87682
+ "kind": "field",
87683
+ "name": "showUseAnotherAccount",
87684
+ "type": {
87685
+ "text": "boolean"
87686
+ },
87687
+ "default": "true",
87688
+ "description": "Controls the visibility of the \"Use another account\" button.\n\nAvailable when `type==userSignIn`.",
87689
+ "availableWhen": "type==userSignIn",
87690
+ "availableWhenIf": {
87691
+ "arg": "type",
87692
+ "eq": "user-sign-in"
87693
+ }
87694
+ },
87455
87695
  {
87456
87696
  "kind": "field",
87457
87697
  "name": "showRecentUsers",
@@ -87624,6 +87864,11 @@
87624
87864
  "name": "handleSignOutClick",
87625
87865
  "privacy": "private"
87626
87866
  },
87867
+ {
87868
+ "kind": "method",
87869
+ "name": "handleUseAnotherAccountClick",
87870
+ "privacy": "private"
87871
+ },
87627
87872
  {
87628
87873
  "kind": "method",
87629
87874
  "name": "renderSignIn",
@@ -87676,9 +87921,9 @@
87676
87921
  {
87677
87922
  "name": "recent-user-click",
87678
87923
  "type": {
87679
- "text": "CustomEvent<{initials: string, label: string}>"
87924
+ "text": "ObcUserMenuRecentUserClickEvent"
87680
87925
  },
87681
- "description": "Fired when a recent user button is clicked."
87926
+ "description": "Fired when a recent user button is clicked, carrying that user's entry."
87682
87927
  },
87683
87928
  {
87684
87929
  "name": "sign-in-click",
@@ -87693,6 +87938,13 @@
87693
87938
  "text": "CustomEvent<void>"
87694
87939
  },
87695
87940
  "description": "Fired when the sign-out button is clicked."
87941
+ },
87942
+ {
87943
+ "name": "use-another-account-click",
87944
+ "type": {
87945
+ "text": "CustomEvent<void>"
87946
+ },
87947
+ "description": "Fired when the \"Use another account\" button is clicked."
87696
87948
  }
87697
87949
  ],
87698
87950
  "attributes": [
@@ -87773,6 +88025,14 @@
87773
88025
  "description": "Label for the primary user profile.\n\nAvailable when `type!=signIn`.",
87774
88026
  "fieldName": "userLabel"
87775
88027
  },
88028
+ {
88029
+ "name": "userRole",
88030
+ "type": {
88031
+ "text": "string | undefined"
88032
+ },
88033
+ "description": "Role shown under the primary user's label; omit it to show no role.\n\nAvailable when `type!=signIn && size==regular`.",
88034
+ "fieldName": "userRole"
88035
+ },
87776
88036
  {
87777
88037
  "name": "primaryActionId",
87778
88038
  "type": {
@@ -109508,7 +109768,7 @@
109508
109768
  "privacy": "private",
109509
109769
  "return": {
109510
109770
  "type": {
109511
- "text": "TemplateResult"
109771
+ "text": "TemplateResult | typeof nothing"
109512
109772
  }
109513
109773
  }
109514
109774
  },
@@ -0,0 +1,11 @@
1
+ import { LineType } from '../index.js';
2
+ /** Edge of a transmitter's chip that the leader line attaches to. */
3
+ export declare enum TransmitterOrientation {
4
+ top = "top",
5
+ right = "right",
6
+ bottom = "bottom",
7
+ left = "left"
8
+ }
9
+ /** Half the line's stroke width, so the leader line starts on the line's edge. */
10
+ export declare function transmitterLeaderOffset(lineType: LineType | undefined): number;
11
+ //# sourceMappingURL=transmitter-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transmitter-shared.d.ts","sourceRoot":"","sources":["../../../src/automation/transmitter/transmitter-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAY,MAAM,aAAa,CAAC;AAEhD,qEAAqE;AACrE,oBAAY,sBAAsB;IAChC,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,CAER"}
@@ -0,0 +1,16 @@
1
+ import { lineWidth } from "../index.js";
2
+ var TransmitterOrientation = /* @__PURE__ */ ((TransmitterOrientation2) => {
3
+ TransmitterOrientation2["top"] = "top";
4
+ TransmitterOrientation2["right"] = "right";
5
+ TransmitterOrientation2["bottom"] = "bottom";
6
+ TransmitterOrientation2["left"] = "left";
7
+ return TransmitterOrientation2;
8
+ })(TransmitterOrientation || {});
9
+ function transmitterLeaderOffset(lineType) {
10
+ return lineType === void 0 ? 0 : lineWidth(lineType) / 2;
11
+ }
12
+ export {
13
+ TransmitterOrientation,
14
+ transmitterLeaderOffset
15
+ };
16
+ //# sourceMappingURL=transmitter-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transmitter-shared.js","sources":["../../../src/automation/transmitter/transmitter-shared.ts"],"sourcesContent":["import {LineType, lineWidth} from '../index.js';\n\n/** Edge of a transmitter's chip that the leader line attaches to. */\nexport enum TransmitterOrientation {\n top = 'top',\n right = 'right',\n bottom = 'bottom',\n left = 'left',\n}\n\n/** Half the line's stroke width, so the leader line starts on the line's edge. */\nexport function transmitterLeaderOffset(\n lineType: LineType | undefined\n): number {\n return lineType === undefined ? 0 : lineWidth(lineType) / 2;\n}\n"],"names":["TransmitterOrientation"],"mappings":";AAGO,IAAK,2CAAAA,4BAAL;AACLA,0BAAA,KAAA,IAAM;AACNA,0BAAA,OAAA,IAAQ;AACRA,0BAAA,QAAA,IAAS;AACTA,0BAAA,MAAA,IAAO;AAJG,SAAAA;AAAA,GAAA,0BAAA,CAAA,CAAA;AAQL,SAAS,wBACd,UACQ;AACR,SAAO,aAAa,SAAY,IAAI,UAAU,QAAQ,IAAI;AAC5D;"}
@@ -74,7 +74,19 @@ const componentStyle = css`* {
74
74
  left: -4px;
75
75
  }
76
76
 
77
+ /* Left/right anchor on the chip row's middle (Figma 25656:45233), so the id
78
+ tag hangs below out of flow; its parent must be the containing block. */
79
+
80
+ .transmitter:is(.orientation-left,.orientation-right):not(.has-alert) .id-tag {
81
+ position: absolute;
82
+ top: calc(100% + 2px);
83
+ left: 50%;
84
+ transform: translateX(-50%);
85
+ white-space: nowrap;
86
+ }
87
+
77
88
  .content {
89
+ position: relative; /* containing block for the left/right id tag (transmitter-leader) */
78
90
  display: flex;
79
91
  flex-direction: column;
80
92
  align-items: center;
@@ -141,7 +153,6 @@ const componentStyle = css`* {
141
153
  }
142
154
 
143
155
  .id-tag {
144
- color: var(--element-neutral-color);
145
156
  color: var(--element-neutral-color);
146
157
  font-variant-numeric: lining-nums tabular-nums;
147
158
  font-feature-settings: "ss04" on;
@@ -1 +1 @@
1
- {"version":3,"file":"transmitter.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"transmitter.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}