@oicl/openbridge-webcomponents 0.0.9 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. package/.release-it.json +1 -1
  2. package/.storybook/preview.ts +0 -1
  3. package/CHANGELOG.md +53 -1
  4. package/__snapshots__/application-topbar--inactive.png +0 -0
  5. package/__snapshots__/button-button--raised-disabled.png +0 -0
  6. package/__snapshots__/input-slider--no-icons.png +0 -0
  7. package/__snapshots__/input-slider--no-value.png +0 -0
  8. package/__snapshots__/line-corner-line--primary.png +0 -0
  9. package/__snapshots__/line-example--air.png +0 -0
  10. package/__snapshots__/line-example--connector.png +0 -0
  11. package/__snapshots__/line-example--electric.png +0 -0
  12. package/__snapshots__/line-example--fluid.png +0 -0
  13. package/__snapshots__/line-horizontal-line--primary.png +0 -0
  14. package/__snapshots__/line-vertical-line--complex.png +0 -0
  15. package/__snapshots__/line-vertical-line--primary.png +0 -0
  16. package/custom-elements.json +628 -263
  17. package/dist/automation/corner-line/corner-line.d.ts +22 -0
  18. package/dist/automation/corner-line/corner-line.d.ts.map +1 -0
  19. package/dist/automation/corner-line/corner-line.js +161 -0
  20. package/dist/automation/corner-line/corner-line.js.map +1 -0
  21. package/dist/automation/horizontal-line/horizontal-line.d.ts +15 -0
  22. package/dist/automation/horizontal-line/horizontal-line.d.ts.map +1 -0
  23. package/dist/automation/horizontal-line/horizontal-line.js +110 -0
  24. package/dist/automation/horizontal-line/horizontal-line.js.map +1 -0
  25. package/dist/automation/index.d.ts +20 -0
  26. package/dist/automation/index.d.ts.map +1 -0
  27. package/dist/automation/index.js +42 -0
  28. package/dist/automation/index.js.map +1 -0
  29. package/dist/automation/vertical-line/vertical-line.d.ts +15 -0
  30. package/dist/automation/vertical-line/vertical-line.d.ts.map +1 -0
  31. package/dist/automation/vertical-line/vertical-line.js +111 -0
  32. package/dist/automation/vertical-line/vertical-line.js.map +1 -0
  33. package/dist/components/brilliance-menu/brilliance-menu.d.ts.map +1 -1
  34. package/dist/components/brilliance-menu/brilliance-menu.js +2 -0
  35. package/dist/components/brilliance-menu/brilliance-menu.js.map +1 -1
  36. package/dist/components/slider/slider.css.js +20 -0
  37. package/dist/components/slider/slider.css.js.map +1 -1
  38. package/dist/components/slider/slider.d.ts +8 -0
  39. package/dist/components/slider/slider.d.ts.map +1 -1
  40. package/dist/components/slider/slider.js +44 -18
  41. package/dist/components/slider/slider.js.map +1 -1
  42. package/dist/components/top-bar/top-bar.css.js +5 -1
  43. package/dist/components/top-bar/top-bar.css.js.map +1 -1
  44. package/dist/components/top-bar/top-bar.d.ts.map +1 -1
  45. package/dist/components/top-bar/top-bar.js +8 -8
  46. package/dist/components/top-bar/top-bar.js.map +1 -1
  47. package/package.json +18 -25
  48. package/src/automation/corner-line/corner-line.stories.ts +31 -0
  49. package/src/automation/corner-line/corner-line.ts +167 -0
  50. package/src/automation/horizontal-line/horizontal-line.stories.ts +28 -0
  51. package/src/automation/horizontal-line/horizontal-line.ts +100 -0
  52. package/src/automation/index.ts +41 -0
  53. package/src/automation/line.stories.ts +142 -0
  54. package/src/automation/vertical-line/vertical-line.stories.ts +71 -0
  55. package/src/automation/vertical-line/vertical-line.ts +104 -0
  56. package/src/components/brilliance-menu/brilliance-menu.ts +2 -0
  57. package/src/components/slider/slider.css +20 -0
  58. package/src/components/slider/slider.stories.ts +20 -1
  59. package/src/components/slider/slider.ts +43 -19
  60. package/src/components/top-bar/top-bar.css +4 -0
  61. package/src/components/top-bar/top-bar.ts +10 -8
  62. package/src/palettes/variables.css +64 -43
  63. package/script/svg-instruments/convert-svg.ts +0 -246
  64. package/script/svg-instruments/environment.d.ts +0 -7
  65. package/script/svg-instruments/exports.ts +0 -82
  66. package/script/svg-instruments/figma-types.ts +0 -804
  67. package/script/svg-instruments/figmaImport.ts +0 -79
  68. package/script/svg-instruments/main.ts +0 -109
@@ -1,5 +1,10 @@
1
1
  import { LitElement } from 'lit';
2
2
  import '../icon-button/icon-button';
3
+ export declare enum ObcSliderVariant {
4
+ NoValue = "no-value",
5
+ NoInput = "no-input"
6
+ }
7
+ export type ObcSliderVariantType = 'no-value' | 'no-input';
3
8
  /**
4
9
  * @element obc-slider
5
10
  *
@@ -21,6 +26,9 @@ export declare class ObcSlider extends LitElement {
21
26
  max: number;
22
27
  step: number | undefined;
23
28
  stepClick: number;
29
+ variant: ObcSliderVariantType;
30
+ hasLeftIcon: boolean;
31
+ hasRightIcon: boolean;
24
32
  onInput(value: number): void;
25
33
  onReduceClick(): void;
26
34
  onIncreaseClick(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/components/slider/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAKhD,OAAO,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;GAcG;AACH,qBACa,SAAU,SAAQ,UAAU;IACb,KAAK,SAAM;IACX,GAAG,SAAK;IACR,GAAG,SAAO;IACV,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACA,SAAS,SAAM;IAElE,OAAO,CAAC,KAAK,EAAE,MAAM;IAKrB,aAAa;IAIb,eAAe;IAIN,MAAM;IA+Bf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/components/slider/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAKhD,OAAO,4BAA4B,CAAC;AAGpC,oBAAY,gBAAgB;IAC1B,OAAO,aAAa;IACpB,OAAO,aAAa;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AACH,qBACa,SAAU,SAAQ,UAAU;IACb,KAAK,SAAM;IACX,GAAG,SAAK;IACR,GAAG,SAAO;IACV,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACA,SAAS,SAAM;IACxC,OAAO,EAAE,oBAAoB,CAAc;IACd,WAAW,UAAS;IACnB,YAAY,UAAS;IAE7E,OAAO,CAAC,KAAK,EAAE,MAAM;IAKrB,aAAa;IAIb,eAAe;IAIN,MAAM;IA4Cf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
@@ -4,6 +4,7 @@ import { styleMap } from "lit/directives/style-map.js";
4
4
  import { ifDefined } from "lit/directives/if-defined.js";
5
5
  import componentStyle from "./slider.css.js";
6
6
  import "../icon-button/icon-button.js";
7
+ import { classMap } from "lit/directives/class-map.js";
7
8
  var __defProp = Object.defineProperty;
8
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
10
  var __decorateClass = (decorators, target, key, kind) => {
@@ -15,6 +16,11 @@ var __decorateClass = (decorators, target, key, kind) => {
15
16
  __defProp(target, key, result);
16
17
  return result;
17
18
  };
19
+ var ObcSliderVariant = /* @__PURE__ */ ((ObcSliderVariant2) => {
20
+ ObcSliderVariant2["NoValue"] = "no-value";
21
+ ObcSliderVariant2["NoInput"] = "no-input";
22
+ return ObcSliderVariant2;
23
+ })(ObcSliderVariant || {});
18
24
  let ObcSlider = class extends LitElement {
19
25
  constructor() {
20
26
  super(...arguments);
@@ -22,6 +28,9 @@ let ObcSlider = class extends LitElement {
22
28
  this.min = 0;
23
29
  this.max = 100;
24
30
  this.stepClick = 10;
31
+ this.variant = "no-value";
32
+ this.hasLeftIcon = false;
33
+ this.hasRightIcon = false;
25
34
  }
26
35
  onInput(value) {
27
36
  this.value = value;
@@ -36,31 +45,38 @@ let ObcSlider = class extends LitElement {
36
45
  render() {
37
46
  const ratio = (this.value - this.min) / (this.max - this.min);
38
47
  return html`
39
- <obc-icon-button @click=${this.onReduceClick} variant="flat">
40
- <slot name="icon-left"></slot>
41
- </obc-icon-button>
42
- <div class="wrapper">
48
+ ${this.hasLeftIcon ? html` <obc-icon-button @click=${this.onReduceClick} variant="flat">
49
+ <slot name="icon-left"></slot>
50
+ </obc-icon-button>` : null}
51
+ <div class=${classMap({ wrapper: true, [this.variant]: true })}>
43
52
  <div class="track"></div>
44
53
  <div
45
54
  class="interactive-track"
46
55
  style=${styleMap({ "--ratio": ratio })}
47
56
  ></div>
48
- <input
49
- type="range"
50
- min=${this.min}
51
- max=${this.max}
52
- step=${ifDefined(this.step)}
53
- .value=${this.value.toString()}
54
- class="slider"
55
- @input=${(event) => {
57
+ ${this.variant === "no-input" ? html`<div
58
+ class="passive-thumb"
59
+ style=${styleMap({ "--ratio": ratio })}
60
+ ></div>` : html`
61
+ <input
62
+ type="range"
63
+ min=${this.min}
64
+ max=${this.max}
65
+ step=${ifDefined(this.step)}
66
+ .value=${this.value.toString()}
67
+ class="slider"
68
+ @input=${(event) => {
56
69
  this.value = Number(event.target.value);
57
- this.dispatchEvent(new CustomEvent("value", { detail: this.value }));
70
+ this.dispatchEvent(
71
+ new CustomEvent("value", { detail: this.value })
72
+ );
58
73
  }}
59
- />
74
+ />
75
+ `}
60
76
  </div>
61
- <obc-icon-button @click=${this.onIncreaseClick} variant="flat">
62
- <slot name="icon-right"></slot>
63
- </obc-icon-button>
77
+ ${this.hasRightIcon ? html`<obc-icon-button @click=${this.onIncreaseClick} variant="flat">
78
+ <slot name="icon-right"></slot>
79
+ </obc-icon-button>` : null}
64
80
  `;
65
81
  }
66
82
  };
@@ -80,10 +96,20 @@ __decorateClass([
80
96
  __decorateClass([
81
97
  property({ type: Number, attribute: "step-click" })
82
98
  ], ObcSlider.prototype, "stepClick", 2);
99
+ __decorateClass([
100
+ property({ type: String })
101
+ ], ObcSlider.prototype, "variant", 2);
102
+ __decorateClass([
103
+ property({ type: Boolean, attribute: "has-left-icon" })
104
+ ], ObcSlider.prototype, "hasLeftIcon", 2);
105
+ __decorateClass([
106
+ property({ type: Boolean, attribute: "has-right-icon" })
107
+ ], ObcSlider.prototype, "hasRightIcon", 2);
83
108
  ObcSlider = __decorateClass([
84
109
  customElement("obc-slider")
85
110
  ], ObcSlider);
86
111
  export {
87
- ObcSlider
112
+ ObcSlider,
113
+ ObcSliderVariant
88
114
  };
89
115
  //# sourceMappingURL=slider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","sources":["../../../src/components/slider/slider.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport componentStyle from './slider.css?inline';\nimport '../icon-button/icon-button';\n\n/**\n * @element obc-slider\n *\n * @prop {number} value - The value of the slider\n * @prop {number} min - The minimum value of the slider\n * @prop {number} max - The maximum value of the slider\n * @prop {number} step - The step value of the slider\n * @prop {number} stepClick - The step value when clicking the increase or decrease buttons\n * @attr hug-container - If set, the slider will not have any spacing between the slider icons and the container\n *\n * @slot icon-left - Slot for the left icon\n * @slot icon-right - Slot for the right icon\n *\n * @fires value - Fires when the value is changed\n */\n@customElement('obc-slider')\nexport class ObcSlider extends LitElement {\n @property({type: Number}) value = 50;\n @property({type: Number}) min = 0;\n @property({type: Number}) max = 100;\n @property({type: Number}) step: number | undefined;\n @property({type: Number, attribute: 'step-click'}) stepClick = 10;\n\n onInput(value: number) {\n this.value = value;\n this.dispatchEvent(new CustomEvent('value', {detail: this.value}));\n }\n\n onReduceClick() {\n this.onInput(Math.max(this.value - this.stepClick, this.min));\n }\n\n onIncreaseClick() {\n this.onInput(Math.min(this.value + this.stepClick, this.max));\n }\n\n override render() {\n const ratio = (this.value - this.min) / (this.max - this.min);\n return html`\n <obc-icon-button @click=${this.onReduceClick} variant=\"flat\">\n <slot name=\"icon-left\"></slot>\n </obc-icon-button>\n <div class=\"wrapper\">\n <div class=\"track\"></div>\n <div\n class=\"interactive-track\"\n style=${styleMap({'--ratio': ratio})}\n ></div>\n <input\n type=\"range\"\n min=${this.min}\n max=${this.max}\n step=${ifDefined(this.step)}\n .value=${this.value.toString()}\n class=\"slider\"\n @input=${(event: Event) => {\n this.value = Number((event.target as HTMLInputElement).value);\n this.dispatchEvent(new CustomEvent('value', {detail: this.value}));\n }}\n />\n </div>\n <obc-icon-button @click=${this.onIncreaseClick} variant=\"flat\">\n <slot name=\"icon-right\"></slot>\n </obc-icon-button>\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-slider': ObcSlider;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAuBa,IAAA,YAAN,cAAwB,WAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA;AAC6B,SAAA,QAAA;AACF,SAAA,MAAA;AACA,SAAA,MAAA;AAE+B,SAAA,YAAA;AAAA,EAAA;AAAA,EAE/D,QAAQ,OAAe;AACrB,SAAK,QAAQ;AACR,SAAA,cAAc,IAAI,YAAY,SAAS,EAAC,QAAQ,KAAK,MAAM,CAAA,CAAC;AAAA,EACnE;AAAA,EAEA,gBAAgB;AACT,SAAA,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,WAAW,KAAK,GAAG,CAAC;AAAA,EAC9D;AAAA,EAEA,kBAAkB;AACX,SAAA,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,WAAW,KAAK,GAAG,CAAC;AAAA,EAC9D;AAAA,EAES,SAAS;AAChB,UAAM,SAAS,KAAK,QAAQ,KAAK,QAAQ,KAAK,MAAM,KAAK;AAClD,WAAA;AAAA,gCACqB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAOhC,SAAS,EAAC,WAAW,MAAM,CAAA,CAAC;AAAA;AAAA;AAAA;AAAA,gBAI9B,KAAK,GAAG;AAAA,gBACR,KAAK,GAAG;AAAA,iBACP,UAAU,KAAK,IAAI,CAAC;AAAA,mBAClB,KAAK,MAAM,UAAU;AAAA;AAAA,mBAErB,CAAC,UAAiB;AACzB,WAAK,QAAQ,OAAQ,MAAM,OAA4B,KAAK;AACvD,WAAA,cAAc,IAAI,YAAY,SAAS,EAAC,QAAQ,KAAK,MAAM,CAAA,CAAC;AAAA,IAAA,CAClE;AAAA;AAAA;AAAA,gCAGqB,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA,EAIlD;AAGF;AApDa,UAmDK,SAAS,UAAU,cAAc;AAlDvB,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GADb,UACe,WAAA,SAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GAFb,UAEe,WAAA,OAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GAHb,UAGe,WAAA,OAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GAJb,UAIe,WAAA,QAAA,CAAA;AACyB,gBAAA;AAAA,EAAlD,SAAS,EAAC,MAAM,QAAQ,WAAW,cAAa;AAAA,GALtC,UAKwC,WAAA,aAAA,CAAA;AALxC,YAAN,gBAAA;AAAA,EADN,cAAc,YAAY;AAAA,GACd,SAAA;"}
1
+ {"version":3,"file":"slider.js","sources":["../../../src/components/slider/slider.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport componentStyle from './slider.css?inline';\nimport '../icon-button/icon-button';\nimport {classMap} from 'lit/directives/class-map.js';\n\nexport enum ObcSliderVariant {\n NoValue = 'no-value',\n NoInput = 'no-input',\n}\n\nexport type ObcSliderVariantType = 'no-value' | 'no-input';\n\n/**\n * @element obc-slider\n *\n * @prop {number} value - The value of the slider\n * @prop {number} min - The minimum value of the slider\n * @prop {number} max - The maximum value of the slider\n * @prop {number} step - The step value of the slider\n * @prop {number} stepClick - The step value when clicking the increase or decrease buttons\n * @attr hug-container - If set, the slider will not have any spacing between the slider icons and the container\n *\n * @slot icon-left - Slot for the left icon\n * @slot icon-right - Slot for the right icon\n *\n * @fires value - Fires when the value is changed\n */\n@customElement('obc-slider')\nexport class ObcSlider extends LitElement {\n @property({type: Number}) value = 50;\n @property({type: Number}) min = 0;\n @property({type: Number}) max = 100;\n @property({type: Number}) step: number | undefined;\n @property({type: Number, attribute: 'step-click'}) stepClick = 10;\n @property({type: String}) variant: ObcSliderVariantType = 'no-value';\n @property({type: Boolean, attribute: 'has-left-icon'}) hasLeftIcon = false;\n @property({type: Boolean, attribute: 'has-right-icon'}) hasRightIcon = false;\n\n onInput(value: number) {\n this.value = value;\n this.dispatchEvent(new CustomEvent('value', {detail: this.value}));\n }\n\n onReduceClick() {\n this.onInput(Math.max(this.value - this.stepClick, this.min));\n }\n\n onIncreaseClick() {\n this.onInput(Math.min(this.value + this.stepClick, this.max));\n }\n\n override render() {\n const ratio = (this.value - this.min) / (this.max - this.min);\n return html`\n ${this.hasLeftIcon\n ? html` <obc-icon-button @click=${this.onReduceClick} variant=\"flat\">\n <slot name=\"icon-left\"></slot>\n </obc-icon-button>`\n : null}\n <div class=${classMap({wrapper: true, [this.variant]: true})}>\n <div class=\"track\"></div>\n <div\n class=\"interactive-track\"\n style=${styleMap({'--ratio': ratio})}\n ></div>\n ${this.variant === ObcSliderVariant.NoInput\n ? html`<div\n class=\"passive-thumb\"\n style=${styleMap({'--ratio': ratio})}\n ></div>`\n : html`\n <input\n type=\"range\"\n min=${this.min}\n max=${this.max}\n step=${ifDefined(this.step)}\n .value=${this.value.toString()}\n class=\"slider\"\n @input=${(event: Event) => {\n this.value = Number((event.target as HTMLInputElement).value);\n this.dispatchEvent(\n new CustomEvent('value', {detail: this.value})\n );\n }}\n />\n `}\n </div>\n ${this.hasRightIcon\n ? html`<obc-icon-button @click=${this.onIncreaseClick} variant=\"flat\">\n <slot name=\"icon-right\"></slot>\n </obc-icon-button>`\n : null}\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-slider': ObcSlider;\n }\n}\n"],"names":["ObcSliderVariant"],"mappings":";;;;;;;;;;;;;;;;;;AAQY,IAAA,qCAAAA,sBAAL;AACLA,oBAAA,SAAU,IAAA;AACVA,oBAAA,SAAU,IAAA;AAFAA,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AAuBC,IAAA,YAAN,cAAwB,WAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA;AAC6B,SAAA,QAAA;AACF,SAAA,MAAA;AACA,SAAA,MAAA;AAE+B,SAAA,YAAA;AACL,SAAA,UAAA;AACW,SAAA,cAAA;AACE,SAAA,eAAA;AAAA,EAAA;AAAA,EAEvE,QAAQ,OAAe;AACrB,SAAK,QAAQ;AACR,SAAA,cAAc,IAAI,YAAY,SAAS,EAAC,QAAQ,KAAK,MAAM,CAAA,CAAC;AAAA,EACnE;AAAA,EAEA,gBAAgB;AACT,SAAA,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,WAAW,KAAK,GAAG,CAAC;AAAA,EAC9D;AAAA,EAEA,kBAAkB;AACX,SAAA,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,WAAW,KAAK,GAAG,CAAC;AAAA,EAC9D;AAAA,EAES,SAAS;AAChB,UAAM,SAAS,KAAK,QAAQ,KAAK,QAAQ,KAAK,MAAM,KAAK;AAClD,WAAA;AAAA,QACH,KAAK,cACH,gCAAgC,KAAK,aAAa;AAAA;AAAA,gCAGlD,IAAI;AAAA,mBACK,SAAS,EAAC,SAAS,MAAM,CAAC,KAAK,OAAO,GAAG,KAAI,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,kBAIhD,SAAS,EAAC,WAAW,MAAM,CAAA,CAAC;AAAA;AAAA,UAEpC,KAAK,YAAY,aACf;AAAA;AAAA,sBAEU,SAAS,EAAC,WAAW,MAAM,CAAA,CAAC;AAAA,uBAEtC;AAAA;AAAA;AAAA,sBAGU,KAAK,GAAG;AAAA,sBACR,KAAK,GAAG;AAAA,uBACP,UAAU,KAAK,IAAI,CAAC;AAAA,yBAClB,KAAK,MAAM,UAAU;AAAA;AAAA,yBAErB,CAAC,UAAiB;AACzB,WAAK,QAAQ,OAAQ,MAAM,OAA4B,KAAK;AACvD,WAAA;AAAA,QACH,IAAI,YAAY,SAAS,EAAC,QAAQ,KAAK,OAAM;AAAA,MAAA;AAAA,IAC/C,CACD;AAAA;AAAA,aAEJ;AAAA;AAAA,QAEL,KAAK,eACH,+BAA+B,KAAK,eAAe;AAAA;AAAA,gCAGnD,IAAI;AAAA;AAAA,EAEZ;AAGF;AApEa,UAmEK,SAAS,UAAU,cAAc;AAlEvB,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GADb,UACe,WAAA,SAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GAFb,UAEe,WAAA,OAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GAHb,UAGe,WAAA,OAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GAJb,UAIe,WAAA,QAAA,CAAA;AACyB,gBAAA;AAAA,EAAlD,SAAS,EAAC,MAAM,QAAQ,WAAW,cAAa;AAAA,GALtC,UAKwC,WAAA,aAAA,CAAA;AACzB,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,QAAO;AAAA,GANb,UAMe,WAAA,WAAA,CAAA;AAC6B,gBAAA;AAAA,EAAtD,SAAS,EAAC,MAAM,SAAS,WAAW,iBAAgB;AAAA,GAP1C,UAO4C,WAAA,eAAA,CAAA;AACC,gBAAA;AAAA,EAAvD,SAAS,EAAC,MAAM,SAAS,WAAW,kBAAiB;AAAA,GAR3C,UAQ6C,WAAA,gBAAA,CAAA;AAR7C,YAAN,gBAAA;AAAA,EADN,cAAc,YAAY;AAAA,GACd,SAAA;"}
@@ -1,5 +1,9 @@
1
1
  import { css } from "lit";
2
- const compentStyle = css`.wrapper {
2
+ const compentStyle = css`* {
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ .wrapper {
3
7
  height: 48px;
4
8
  width: 100%;
5
9
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"top-bar.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"top-bar.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"top-bar.d.ts","sourceRoot":"","sources":["../../../src/components/top-bar/top-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAIhD,OAAO,4BAA4B,CAAC;AACpC,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,6BAA6B,CAAC;AACrC,OAAO,0BAA0B,CAAC;AAClC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAExD;;;;;;;GAOG;AACH,qBACa,SAAU,SAAQ,UAAU;IACb,QAAQ,SAAS;IACjB,QAAQ,SAAU;IAClB,IAAI,SAA8B;IAE5D,mBAAmB,UAAS;IAE5B,sBAAsB,UAAS;IAE/B,mBAAmB,UAAS;IAE5B,uBAAuB,UAAS;IAE0B,cAAc,UAChE;IACkD,cAAc,UAChE;IAER,iBAAiB,UAAS;IAC0B,SAAS,UAAS;IACnB,QAAQ,UAAS;IACzC,QAAQ,UAAS;IAE5C,qBAAqB,SAAO;IAE5B,yBAAyB,SAAO;IAEhC,oBAAoB,SAAO;IAE3B,yBAAyB,SAAO;IACL,QAAQ,UAAS;IAE5C,eAAe,EAAE,cAAc,EAAE,CAAM;IAEvC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,qBAAqB;IAIpB,MAAM;IA6If,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,SAAS,CAAC;KAC1B;CACF"}
1
+ {"version":3,"file":"top-bar.d.ts","sourceRoot":"","sources":["../../../src/components/top-bar/top-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAIhD,OAAO,4BAA4B,CAAC;AACpC,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,6BAA6B,CAAC;AACrC,OAAO,0BAA0B,CAAC;AAClC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAExD;;;;;;;GAOG;AACH,qBACa,SAAU,SAAQ,UAAU;IACb,QAAQ,SAAS;IACjB,QAAQ,SAAU;IAClB,IAAI,SAA8B;IAE5D,mBAAmB,UAAS;IAE5B,sBAAsB,UAAS;IAE/B,mBAAmB,UAAS;IAE5B,uBAAuB,UAAS;IAE0B,cAAc,UAChE;IACkD,cAAc,UAChE;IAER,iBAAiB,UAAS;IAC0B,SAAS,UAAS;IACnB,QAAQ,UAAS;IACzC,QAAQ,UAAS;IAE5C,qBAAqB,SAAO;IAE5B,yBAAyB,SAAO;IAEhC,oBAAoB,SAAO;IAE3B,yBAAyB,SAAO;IACL,QAAQ,UAAS;IAE5C,eAAe,EAAE,cAAc,EAAE,CAAM;IAEvC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,qBAAqB;IAIpB,MAAM;IA+If,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,SAAS,CAAC;KAC1B;CACF"}
@@ -179,14 +179,14 @@ let ObcTopBar = class extends LitElement {
179
179
  >
180
180
  <obi-01-apps></obi-01-apps>
181
181
  </obc-icon-button>` : null}
182
- <obc-icon-button
183
- class="left-more-button"
184
- variant="flat"
185
- @click=${this.leftMoreButtonClicked}
186
- ?activated=${this.leftMoreButtonActivated}
187
- >
188
- <obi-01-more-vertical></obi-01-more-vertical>
189
- </obc-icon-button>
182
+ ${!this.inactive ? html`<obc-icon-button
183
+ class="left-more-button"
184
+ variant="flat"
185
+ @click=${this.leftMoreButtonClicked}
186
+ ?activated=${this.leftMoreButtonActivated}
187
+ >
188
+ <obi-01-more-vertical></obi-01-more-vertical>
189
+ </obc-icon-button>` : null}
190
190
  </div>
191
191
  </nav>
192
192
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"top-bar.js","sources":["../../../src/components/top-bar/top-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport compentStyle from './top-bar.css?inline';\nimport '../icon-button/icon-button';\nimport '../clock/clock';\nimport '../divider/divider';\nimport '../breadcrumb/breadcrumb';\nimport '../../icons/icon-01-menu';\nimport '../../icons/icon-01-close';\nimport '../../icons/icon-02-arrow-back';\nimport '../../icons/icon-02-arrow-forward';\nimport '../../icons/icon-04-dimming';\nimport '../../icons/icon-01-apps';\nimport '../../icons/icon-01-more-vertical';\nimport {BreadcrumbItem} from '../breadcrumb/breadcrumb';\n\n/**\n * Top bar component\n *\n * @fires menu-button-clicked - Menu button clicked\n * @fires dimming-button-clicked - Dimming button clicked\n * @fires apps-button-clicked - Apps button clicked\n * @fires left-more-button-clicked - Left more button clicked\n */\n@customElement('obc-top-bar')\nexport class ObcTopBar extends LitElement {\n @property({type: String}) appTitle = 'App';\n @property({type: String}) pageName = 'Page';\n @property({type: String}) date = '2021-01-01T11:11:11.111Z';\n @property({type: Boolean, attribute: 'menu-button-activated'})\n menuButtonActivated = false;\n @property({type: Boolean, attribute: 'dimming-button-activated'})\n dimmingButtonActivated = false;\n @property({type: Boolean, attribute: 'apps-button-activated'})\n appsButtonActivated = false;\n @property({type: Boolean, attribute: 'left-more-button-activated'})\n leftMoreButtonActivated = false;\n\n @property({type: Boolean, attribute: 'wide-menu-button'}) wideMenuButton =\n false;\n @property({type: Boolean, attribute: 'show-apps-button'}) showAppsButton =\n false;\n @property({type: Boolean, attribute: 'show-dimming-button'})\n showDimmingButton = false;\n @property({type: Boolean, attribute: 'show-clock'}) showClock = false;\n @property({type: Boolean, attribute: 'show-date'}) showDate = false;\n @property({type: Boolean}) inactive = false;\n @property({type: Number, attribute: 'apps-button-breakpoint-px'})\n appButtonBreakpointPx = 500;\n @property({type: Number, attribute: 'dimming-button-breakpoint-px'})\n dimmingButtonBreakpointPx = 500;\n @property({type: Number, attribute: 'app-title-breakpoint-px'})\n appTitleBreakpointPx = 500;\n @property({type: Number, attribute: 'clock-minimize-breakpoint-px'})\n clockMinimizeBreakpointPx = 300;\n @property({type: Boolean}) settings = false;\n @property({type: Array, attribute: 'breadcrumb-items'})\n breadcrumbItems: BreadcrumbItem[] = [];\n\n private menuButtonClicked() {\n this.dispatchEvent(new CustomEvent('menu-button-clicked'));\n }\n\n private dimmingButtonClicked() {\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'));\n }\n\n private appsButtonClicked() {\n this.dispatchEvent(new CustomEvent('apps-button-clicked'));\n }\n\n private leftMoreButtonClicked() {\n this.dispatchEvent(new CustomEvent('left-more-button-clicked'));\n }\n\n override render() {\n const leftGroup = [];\n if (this.settings) {\n leftGroup.push(\n html`<div class=\"menu-button\">\n <obc-icon-button\n variant=\"flat\"\n @click=${() => this.dispatchEvent(new CustomEvent('close'))}\n >\n <obi-01-close></obi-01-close>\n </obc-icon-button>\n </div>`\n );\n leftGroup.push(html`<obc-divider></obc-divider>`);\n leftGroup.push(\n html`<obc-icon-button\n variant=\"flat\"\n corner-left\n @click=${() => this.dispatchEvent(new CustomEvent('back'))}\n >\n <obi-02-arrow-back></obi-02-arrow-back>\n </obc-icon-button>`\n );\n leftGroup.push(\n html`<obc-icon-button\n variant=\"flat\"\n corner-right\n @click=${() => this.dispatchEvent(new CustomEvent('forward'))}\n >\n <obi-02-arrow-forward></obi-02-arrow-forward>\n </obc-icon-button>`\n );\n leftGroup.push(html`<obc-divider></obc-divider>`);\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(\n html`<obc-breadcrumb .items=${this.breadcrumbItems}></obc-breadcrumb>`\n );\n } else {\n if (!this.inactive) {\n leftGroup.push(\n html`<div class=\"menu-button ${this.wideMenuButton ? 'wide' : null}\">\n <obc-icon-button\n variant=\"flat\"\n @click=${this.menuButtonClicked}\n ?activated=${this.menuButtonActivated}\n >\n <obi-01-menu></obi-01-menu>\n </obc-icon-button>\n </div>`\n );\n }\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(html`<div class=\"page-name\">${this.pageName}</div>`);\n }\n\n const breakpointMoreButton = Math.max(\n this.appButtonBreakpointPx,\n this.dimmingButtonBreakpointPx\n );\n\n return html`\n <style>\n @media (max-width: ${breakpointMoreButton}px) {\n .left-more-button {\n display: revert !important;\n }\n\n .group.left > * {\n margin-right: 4px;\n margin-left: 4px;\n }\n }\n\n @media (max-width: ${this.appButtonBreakpointPx}px) {\n .apps-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.dimmingButtonBreakpointPx}px) {\n .dimming-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.appTitleBreakpointPx}px) {\n .title {\n display: none;\n }\n }\n </style>\n <nav\n class=${classMap({\n wrapper: true,\n inactive: this.inactive,\n settings: this.settings,\n })}\n >\n <div class=\"left group\">${leftGroup}</div>\n <div class=\"right group\">\n ${this.showClock\n ? html`<obc-clock\n date=${this.date}\n blink-only-breakpoint-px=${this.clockMinimizeBreakpointPx}\n ?show-date=${this.showDate}\n ></obc-clock>`\n : null}\n <slot name=\"alerts\"></slot>\n ${this.showDimmingButton && !this.inactive\n ? html`<obc-icon-button\n class=\"dimming-button\"\n variant=\"flat\"\n @click=${this.dimmingButtonClicked}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-04-dimming></obi-04-dimming>\n </obc-icon-button>`\n : null}\n ${this.showAppsButton && !this.inactive\n ? html`<obc-icon-button\n class=\"apps-button\"\n variant=\"flat\"\n @click=${this.appsButtonClicked}\n ?activated=${this.appsButtonActivated}\n >\n <obi-01-apps></obi-01-apps>\n </obc-icon-button>`\n : null}\n <obc-icon-button\n class=\"left-more-button\"\n variant=\"flat\"\n @click=${this.leftMoreButtonClicked}\n ?activated=${this.leftMoreButtonActivated}\n >\n <obi-01-more-vertical></obi-01-more-vertical>\n </obc-icon-button>\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-top-bar': ObcTopBar;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"top-bar.js","sources":["../../../src/components/top-bar/top-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport compentStyle from './top-bar.css?inline';\nimport '../icon-button/icon-button';\nimport '../clock/clock';\nimport '../divider/divider';\nimport '../breadcrumb/breadcrumb';\nimport '../../icons/icon-01-menu';\nimport '../../icons/icon-01-close';\nimport '../../icons/icon-02-arrow-back';\nimport '../../icons/icon-02-arrow-forward';\nimport '../../icons/icon-04-dimming';\nimport '../../icons/icon-01-apps';\nimport '../../icons/icon-01-more-vertical';\nimport {BreadcrumbItem} from '../breadcrumb/breadcrumb';\n\n/**\n * Top bar component\n *\n * @fires menu-button-clicked - Menu button clicked\n * @fires dimming-button-clicked - Dimming button clicked\n * @fires apps-button-clicked - Apps button clicked\n * @fires left-more-button-clicked - Left more button clicked\n */\n@customElement('obc-top-bar')\nexport class ObcTopBar extends LitElement {\n @property({type: String}) appTitle = 'App';\n @property({type: String}) pageName = 'Page';\n @property({type: String}) date = '2021-01-01T11:11:11.111Z';\n @property({type: Boolean, attribute: 'menu-button-activated'})\n menuButtonActivated = false;\n @property({type: Boolean, attribute: 'dimming-button-activated'})\n dimmingButtonActivated = false;\n @property({type: Boolean, attribute: 'apps-button-activated'})\n appsButtonActivated = false;\n @property({type: Boolean, attribute: 'left-more-button-activated'})\n leftMoreButtonActivated = false;\n\n @property({type: Boolean, attribute: 'wide-menu-button'}) wideMenuButton =\n false;\n @property({type: Boolean, attribute: 'show-apps-button'}) showAppsButton =\n false;\n @property({type: Boolean, attribute: 'show-dimming-button'})\n showDimmingButton = false;\n @property({type: Boolean, attribute: 'show-clock'}) showClock = false;\n @property({type: Boolean, attribute: 'show-date'}) showDate = false;\n @property({type: Boolean}) inactive = false;\n @property({type: Number, attribute: 'apps-button-breakpoint-px'})\n appButtonBreakpointPx = 500;\n @property({type: Number, attribute: 'dimming-button-breakpoint-px'})\n dimmingButtonBreakpointPx = 500;\n @property({type: Number, attribute: 'app-title-breakpoint-px'})\n appTitleBreakpointPx = 500;\n @property({type: Number, attribute: 'clock-minimize-breakpoint-px'})\n clockMinimizeBreakpointPx = 300;\n @property({type: Boolean}) settings = false;\n @property({type: Array, attribute: 'breadcrumb-items'})\n breadcrumbItems: BreadcrumbItem[] = [];\n\n private menuButtonClicked() {\n this.dispatchEvent(new CustomEvent('menu-button-clicked'));\n }\n\n private dimmingButtonClicked() {\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'));\n }\n\n private appsButtonClicked() {\n this.dispatchEvent(new CustomEvent('apps-button-clicked'));\n }\n\n private leftMoreButtonClicked() {\n this.dispatchEvent(new CustomEvent('left-more-button-clicked'));\n }\n\n override render() {\n const leftGroup = [];\n if (this.settings) {\n leftGroup.push(\n html`<div class=\"menu-button\">\n <obc-icon-button\n variant=\"flat\"\n @click=${() => this.dispatchEvent(new CustomEvent('close'))}\n >\n <obi-01-close></obi-01-close>\n </obc-icon-button>\n </div>`\n );\n leftGroup.push(html`<obc-divider></obc-divider>`);\n leftGroup.push(\n html`<obc-icon-button\n variant=\"flat\"\n corner-left\n @click=${() => this.dispatchEvent(new CustomEvent('back'))}\n >\n <obi-02-arrow-back></obi-02-arrow-back>\n </obc-icon-button>`\n );\n leftGroup.push(\n html`<obc-icon-button\n variant=\"flat\"\n corner-right\n @click=${() => this.dispatchEvent(new CustomEvent('forward'))}\n >\n <obi-02-arrow-forward></obi-02-arrow-forward>\n </obc-icon-button>`\n );\n leftGroup.push(html`<obc-divider></obc-divider>`);\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(\n html`<obc-breadcrumb .items=${this.breadcrumbItems}></obc-breadcrumb>`\n );\n } else {\n if (!this.inactive) {\n leftGroup.push(\n html`<div class=\"menu-button ${this.wideMenuButton ? 'wide' : null}\">\n <obc-icon-button\n variant=\"flat\"\n @click=${this.menuButtonClicked}\n ?activated=${this.menuButtonActivated}\n >\n <obi-01-menu></obi-01-menu>\n </obc-icon-button>\n </div>`\n );\n }\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(html`<div class=\"page-name\">${this.pageName}</div>`);\n }\n\n const breakpointMoreButton = Math.max(\n this.appButtonBreakpointPx,\n this.dimmingButtonBreakpointPx\n );\n\n return html`\n <style>\n @media (max-width: ${breakpointMoreButton}px) {\n .left-more-button {\n display: revert !important;\n }\n\n .group.left > * {\n margin-right: 4px;\n margin-left: 4px;\n }\n }\n\n @media (max-width: ${this.appButtonBreakpointPx}px) {\n .apps-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.dimmingButtonBreakpointPx}px) {\n .dimming-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.appTitleBreakpointPx}px) {\n .title {\n display: none;\n }\n }\n </style>\n <nav\n class=${classMap({\n wrapper: true,\n inactive: this.inactive,\n settings: this.settings,\n })}\n >\n <div class=\"left group\">${leftGroup}</div>\n <div class=\"right group\">\n ${this.showClock\n ? html`<obc-clock\n date=${this.date}\n blink-only-breakpoint-px=${this.clockMinimizeBreakpointPx}\n ?show-date=${this.showDate}\n ></obc-clock>`\n : null}\n <slot name=\"alerts\"></slot>\n ${this.showDimmingButton && !this.inactive\n ? html`<obc-icon-button\n class=\"dimming-button\"\n variant=\"flat\"\n @click=${this.dimmingButtonClicked}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-04-dimming></obi-04-dimming>\n </obc-icon-button>`\n : null}\n ${this.showAppsButton && !this.inactive\n ? html`<obc-icon-button\n class=\"apps-button\"\n variant=\"flat\"\n @click=${this.appsButtonClicked}\n ?activated=${this.appsButtonActivated}\n >\n <obi-01-apps></obi-01-apps>\n </obc-icon-button>`\n : null}\n ${!this.inactive\n ? html`<obc-icon-button\n class=\"left-more-button\"\n variant=\"flat\"\n @click=${this.leftMoreButtonClicked}\n ?activated=${this.leftMoreButtonActivated}\n >\n <obi-01-more-vertical></obi-01-more-vertical>\n </obc-icon-button>`\n : null}\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-top-bar': ObcTopBar;\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oicl/openbridge-webcomponents",
3
- "version": "0.0.9",
3
+ "version": "0.0.12",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,7 +18,6 @@
18
18
  "storybook": "storybook dev -p 6006",
19
19
  "build-storybook": "storybook build",
20
20
  "download:icons": "tsx ./script/download-icons.ts",
21
- "download:instruments": "tsx ./script/svg-instruments/main.ts",
22
21
  "new:component": "tsx ./new-component.ts",
23
22
  "test-storybook": "test-storybook",
24
23
  "prepack": "yarn build",
@@ -40,44 +39,38 @@
40
39
  "@lit-labs/gen-wrapper-react": "^0.3.1",
41
40
  "@lit-labs/gen-wrapper-vue": "^0.3.2",
42
41
  "@open-wc/lit-helpers": "^0.7.0",
43
- "@storybook/addon-essentials": "^7.6.7",
44
- "@storybook/addon-interactions": "^7.6.17",
45
- "@storybook/addon-links": "^7.6.7",
46
- "@storybook/addon-storysource": "^7.6.17",
47
- "@storybook/addon-themes": "^7.6.7",
48
- "@storybook/blocks": "^7.6.7",
49
- "@storybook/test-runner": "^0.16.0",
50
- "@storybook/testing-library": "^0.2.2",
51
- "@storybook/web-components": "^7.6.7",
52
- "@storybook/web-components-vite": "^7.6.7",
42
+ "@storybook/addon-essentials": "^8.0.5",
43
+ "@storybook/addon-interactions": "^8.0.5",
44
+ "@storybook/addon-links": "^8.0.5",
45
+ "@storybook/addon-storysource": "^8.0.5",
46
+ "@storybook/addon-themes": "^8.0.5",
47
+ "@storybook/blocks": "^8.0.5",
48
+ "@storybook/test": "^8.0.5",
49
+ "@storybook/test-runner": "^0.17.0",
50
+ "@storybook/web-components": "^8.0.5",
51
+ "@storybook/web-components-vite": "^8.0.5",
53
52
  "@topcli/prompts": "^1.8.0",
54
53
  "@types/jest-image-snapshot": "^6",
55
- "@types/xmldom": "^0.1.34",
56
- "chromatic": "^7.6.0",
57
54
  "concurrently": "^8.2.2",
58
55
  "dotenv": "^16.3.1",
59
56
  "eslint": "^8.56.0",
60
- "eslint-plugin-storybook": "^0.6.15",
57
+ "eslint-plugin-storybook": "^0.8.0",
61
58
  "figma-api": "^1.11.0",
62
59
  "jest-image-snapshot": "^6.2.0",
63
60
  "lit-analyzer": "^2.0.2",
64
61
  "nodemon": "^3.0.2",
65
62
  "playwright": "^1.40.0",
66
- "postcss": "^8.4.32",
67
- "postcss-mixins": "^9.0.4",
63
+ "postcss": "^8.4.36",
64
+ "postcss-mixins": "^10.0.0",
68
65
  "postcss-nesting": "^12.0.1",
69
- "postcss-plugin": "^1.0.0",
70
66
  "prettier": "^3.1.1",
71
- "react": "^18.2.0",
72
- "react-dom": "^18.2.0",
73
67
  "release-it": "^17.1.1",
74
68
  "rollup-plugin-postcss-lit": "^2.1.0",
75
- "storybook": "^7.6.7",
76
- "tsx": "^3.14.0",
69
+ "storybook": "^8.0.5",
70
+ "tsx": "^4.7.1",
77
71
  "typescript": "^5.3.3",
78
- "vite": "^4.4.5",
79
- "vite-plugin-dts": "^3.6.3",
80
- "xmldom": "^0.6.0"
72
+ "vite": "^5.2.7",
73
+ "vite-plugin-dts": "^3.6.3"
81
74
  },
82
75
  "types": "./dist/index.d.ts",
83
76
  "customElements": "custom-elements.json"
@@ -0,0 +1,31 @@
1
+ import type {Meta, StoryObj} from '@storybook/web-components';
2
+ import {ObcCornerLine} from './corner-line';
3
+ import './corner-line';
4
+
5
+ const meta: Meta<typeof ObcCornerLine> = {
6
+ title: 'Line/Corner line',
7
+ tags: ['autodocs'],
8
+ component: 'obc-corner-line',
9
+ args: {},
10
+ argTypes: {
11
+ direction: {
12
+ options: ['top-left', 'top-right', 'bottom-left', 'bottom-right'],
13
+ control: {type: 'radio'},
14
+ },
15
+ medium: {
16
+ options: ['normal', 'empty', 'water'],
17
+ control: {type: 'radio'},
18
+ },
19
+ lineType: {
20
+ options: ['fluid', 'electric', 'air', 'connector'],
21
+ control: {type: 'radio'},
22
+ },
23
+ },
24
+ } satisfies Meta<ObcCornerLine>;
25
+
26
+ export default meta;
27
+ type Story = StoryObj<ObcCornerLine>;
28
+
29
+ export const Primary: Story = {
30
+ args: {},
31
+ };
@@ -0,0 +1,167 @@
1
+ import {LitElement, html, css} from 'lit';
2
+ import {customElement, property} from 'lit/decorators.js';
3
+ import {
4
+ LineMedium,
5
+ LineMediumType,
6
+ lineColor,
7
+ LineType,
8
+ LineTypeType,
9
+ lineWidth,
10
+ } from '../index';
11
+
12
+ export enum CornerLineDirection {
13
+ topRight = 'top-right',
14
+ topLeft = 'top-left',
15
+ bottomRight = 'bottom-right',
16
+ bottomLeft = 'bottom-left',
17
+ }
18
+
19
+ export type CornerLineDirectionType =
20
+ | 'top-right'
21
+ | 'top-left'
22
+ | 'bottom-right'
23
+ | 'bottom-left';
24
+
25
+ @customElement('obc-corner-line')
26
+ export class ObcCornerLine extends LitElement {
27
+ @property({type: String}) medium: LineMediumType = LineMedium.normal;
28
+ @property({type: String}) direction: CornerLineDirectionType =
29
+ CornerLineDirection.topRight;
30
+ @property({type: String, attribute: 'line-type'}) lineType: LineTypeType =
31
+ LineType.fluid;
32
+
33
+ override render() {
34
+ let rotation = 270;
35
+ if (this.direction === CornerLineDirection.topLeft) {
36
+ rotation = 180;
37
+ } else if (this.direction === CornerLineDirection.bottomLeft) {
38
+ rotation = 90;
39
+ } else if (this.direction === CornerLineDirection.bottomRight) {
40
+ rotation = 0;
41
+ }
42
+
43
+ if (this.lineType === LineType.connector) {
44
+ return html`
45
+ <svg
46
+ width="24"
47
+ height="24"
48
+ viewBox="0 0 24 24"
49
+ fill="none"
50
+ xmlns="http://www.w3.org/2000/svg"
51
+ transform="rotate(${rotation})"
52
+ >
53
+ <path
54
+ d="M16.5 11.5L15 11.5C14.9951 11.5 14.9902 11.5 14.9853 11.5C13.0826 11.5079 11.5382 13.0339 11.5007 14.9294C11.5002 14.9529 11.5 14.9764 11.5 15V16.5L12.5 16.5L12.5 15C12.5 13.6355 13.5932 12.5263 14.9516 12.5005C14.9677 12.5002 14.9838 12.5 15 12.5L16.5 12.5V11.5Z"
55
+ fill="var(--element-neutral-color)"
56
+ />
57
+ <path
58
+ d="M24 11.5H22.5V12.5L24 12.5V11.5Z"
59
+ fill="var(--element-neutral-color)"
60
+ />
61
+ <path
62
+ d="M21 11.5H18V12.5L21 12.5V11.5Z"
63
+ fill="var(--element-neutral-color)"
64
+ />
65
+ <path
66
+ d="M11.5 18V21H12.5L12.5 18H11.5Z"
67
+ fill="var(--element-neutral-color)"
68
+ />
69
+ <path
70
+ d="M11.5 22.5V24H12.5V22.5H11.5Z"
71
+ fill="var(--element-neutral-color)"
72
+ />
73
+ </svg>
74
+ `;
75
+ }
76
+
77
+ const color = lineColor(this.medium);
78
+ const width = lineWidth(this.lineType);
79
+
80
+ const r1 = 6 - 0.5 - width / 2;
81
+ const r2 = 6 + 0.5 + width / 2;
82
+
83
+ if (this.lineType === LineType.air) {
84
+ const r1 = 2.5;
85
+ const r2 = 11.5;
86
+ return html`
87
+ <svg
88
+ class="line"
89
+ xmlns="http://www.w3.org/2000/svg"
90
+ viewBox="0 0 24 24"
91
+ height="24"
92
+ width="24"
93
+ transform="rotate(${rotation})"
94
+ >
95
+ <path
96
+ d="M 17 24 v -4 a 3 3 0 0 1 3 -3 h 4 v -10 h -6 a 11 11 0 0 0 -11 11 v 6 z"
97
+ stroke="none"
98
+ fill="var(${color.inner})"
99
+ />
100
+ <path
101
+ d="M ${12 +
102
+ 0.5 +
103
+ width / 2} 24 v -4 a ${r1} ${r1} 0 0 1 ${r1} -${r1} h 4"
104
+ stroke-width="1"
105
+ stroke="var(${color.outer})"
106
+ fill="none"
107
+ />
108
+ <path
109
+ d="M ${12 -
110
+ 0.5 -
111
+ width / 2} 24 v -6 a ${r2} ${r2} 0 0 1 ${r2} -${r2} h 6"
112
+ stroke-width="1"
113
+ stroke="var(${color.outer})"
114
+ fill="none"
115
+ />
116
+ </svg>
117
+ `;
118
+ } else {
119
+ return html`
120
+ <svg
121
+ class="line"
122
+ xmlns="http://www.w3.org/2000/svg"
123
+ viewBox="0 0 24 24"
124
+ height="24"
125
+ width="24"
126
+ transform="rotate(${rotation})"
127
+ >
128
+ <path
129
+ d="M 12 24 v -6 a 6 6 0 0 1 6 -6 h 6"
130
+ stroke-width=${width}
131
+ stroke="var(${color.inner})"
132
+ fill="none"
133
+ />
134
+ <path
135
+ d="M ${12 +
136
+ 0.5 +
137
+ width / 2} 24 v -6 a ${r1} ${r1} 0 0 1 ${r1} -${r1} h 6"
138
+ stroke-width="1"
139
+ stroke="var(${color.outer})"
140
+ fill="none"
141
+ />
142
+ <path
143
+ d="M ${12 -
144
+ 0.5 -
145
+ width / 2} 24 v -6 a ${r2} ${r2} 0 0 1 ${r2} -${r2} h 6"
146
+ stroke-width="1"
147
+ stroke="var(${color.outer})"
148
+ fill="none"
149
+ />
150
+ </svg>
151
+ `;
152
+ }
153
+ }
154
+
155
+ static override styles = css`
156
+ :host {
157
+ display: block;
158
+ line-height: 0;
159
+ }
160
+ `;
161
+ }
162
+
163
+ declare global {
164
+ interface HTMLElementTagNameMap {
165
+ 'obc-corner-line': ObcCornerLine;
166
+ }
167
+ }
@@ -0,0 +1,28 @@
1
+ import type {Meta, StoryObj} from '@storybook/web-components';
2
+ import {ObcHorizontalLine} from './horizontal-line';
3
+ import './horizontal-line';
4
+
5
+ const meta: Meta<typeof ObcHorizontalLine> = {
6
+ title: 'Line/Horizontal line',
7
+ tags: ['autodocs'],
8
+ component: 'obc-horizontal-line',
9
+ argTypes: {
10
+ medium: {
11
+ options: ['normal', 'empty', 'water'],
12
+ control: {type: 'radio'},
13
+ },
14
+ lineType: {
15
+ options: ['fluid', 'electric', 'air', 'connector'],
16
+ control: {type: 'radio'},
17
+ },
18
+ },
19
+ } satisfies Meta<ObcHorizontalLine>;
20
+
21
+ export default meta;
22
+ type Story = StoryObj<ObcHorizontalLine>;
23
+
24
+ export const Primary: Story = {
25
+ args: {
26
+ length: 3,
27
+ },
28
+ };