@prioticket/design-system-web 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/COMPONENT-DOCUMENTATION.md +608 -0
  2. package/README.md +229 -0
  3. package/component-documentation.json +1681 -0
  4. package/dist/components/pd-button.cjs.js +99 -0
  5. package/dist/components/pd-button.es.js +156 -0
  6. package/dist/components/pd-card.cjs.js +59 -0
  7. package/dist/components/pd-card.es.js +93 -0
  8. package/dist/components/pd-checkbox.cjs.js +85 -0
  9. package/dist/components/pd-checkbox.es.js +154 -0
  10. package/dist/components/pd-chip.cjs.js +118 -0
  11. package/dist/components/pd-chip.es.js +220 -0
  12. package/dist/components/pd-dialog.cjs.js +195 -0
  13. package/dist/components/pd-dialog.es.js +285 -0
  14. package/dist/components/pd-expandable-card.cjs.js +134 -0
  15. package/dist/components/pd-expandable-card.es.js +205 -0
  16. package/dist/components/pd-fab.cjs.js +119 -0
  17. package/dist/components/pd-fab.es.js +179 -0
  18. package/dist/components/pd-icon-button.cjs.js +159 -0
  19. package/dist/components/pd-icon-button.es.js +268 -0
  20. package/dist/components/pd-icon.cjs.js +71 -0
  21. package/dist/components/pd-icon.es.js +102 -0
  22. package/dist/components/pd-list.cjs.js +108 -0
  23. package/dist/components/pd-list.es.js +229 -0
  24. package/dist/components/pd-menu-item.cjs.js +85 -0
  25. package/dist/components/pd-menu-item.es.js +156 -0
  26. package/dist/components/pd-menu.cjs.js +42 -0
  27. package/dist/components/pd-menu.es.js +122 -0
  28. package/dist/components/pd-progress.cjs.js +72 -0
  29. package/dist/components/pd-progress.es.js +119 -0
  30. package/dist/components/pd-radio.cjs.js +38 -0
  31. package/dist/components/pd-radio.es.js +153 -0
  32. package/dist/components/pd-segmented-button.cjs.js +135 -0
  33. package/dist/components/pd-segmented-button.es.js +234 -0
  34. package/dist/components/pd-segmented-stepper.cjs.js +191 -0
  35. package/dist/components/pd-segmented-stepper.es.js +333 -0
  36. package/dist/components/pd-select.cjs.js +59 -0
  37. package/dist/components/pd-select.es.js +136 -0
  38. package/dist/components/pd-slider.cjs.js +42 -0
  39. package/dist/components/pd-slider.es.js +123 -0
  40. package/dist/components/pd-stepper.cjs.js +279 -0
  41. package/dist/components/pd-stepper.es.js +375 -0
  42. package/dist/components/pd-switch.cjs.js +57 -0
  43. package/dist/components/pd-switch.es.js +126 -0
  44. package/dist/components/pd-tabs.cjs.js +32 -0
  45. package/dist/components/pd-tabs.es.js +139 -0
  46. package/dist/components/pd-text-field.cjs.js +86 -0
  47. package/dist/components/pd-text-field.es.js +202 -0
  48. package/dist/design-system-web.css +1 -0
  49. package/dist/fonts/ProximaNova-Bold.woff2 +0 -0
  50. package/dist/fonts/ProximaNova-Extrabld.woff2 +0 -0
  51. package/dist/fonts/ProximaNova-Light.woff2 +0 -0
  52. package/dist/fonts/ProximaNova-Medium.woff2 +0 -0
  53. package/dist/fonts/ProximaNova-Regular.woff2 +0 -0
  54. package/dist/fonts/ProximaNova-Semibold.woff2 +0 -0
  55. package/dist/fonts/ProximaNovaCond-Semibold.woff2 +0 -0
  56. package/dist/fonts-only.css +59 -0
  57. package/dist/fonts.cjs.js +1 -0
  58. package/dist/fonts.es.js +1 -0
  59. package/dist/prioticket-design-system-web.cjs.js +1 -0
  60. package/dist/prioticket-design-system-web.es.js +52 -0
  61. package/dist/theme-only.css +311 -0
  62. package/dist/theme-with-fonts.cjs.js +1 -0
  63. package/dist/theme-with-fonts.css +372 -0
  64. package/dist/theme-with-fonts.es.js +2 -0
  65. package/dist/theme.cjs.js +1 -0
  66. package/dist/theme.es.js +1 -0
  67. package/dist/types/components/pd-button.d.ts +30 -0
  68. package/dist/types/components/pd-card.d.ts +8 -0
  69. package/dist/types/components/pd-checkbox.d.ts +16 -0
  70. package/dist/types/components/pd-chip.d.ts +26 -0
  71. package/dist/types/components/pd-dialog.d.ts +49 -0
  72. package/dist/types/components/pd-expandable-card.d.ts +39 -0
  73. package/dist/types/components/pd-fab.d.ts +17 -0
  74. package/dist/types/components/pd-icon-button.d.ts +24 -0
  75. package/dist/types/components/pd-icon.d.ts +9 -0
  76. package/dist/types/components/pd-list.d.ts +36 -0
  77. package/dist/types/components/pd-menu-item.d.ts +38 -0
  78. package/dist/types/components/pd-menu.d.ts +58 -0
  79. package/dist/types/components/pd-progress.d.ts +30 -0
  80. package/dist/types/components/pd-radio.d.ts +54 -0
  81. package/dist/types/components/pd-segmented-button.d.ts +53 -0
  82. package/dist/types/components/pd-segmented-stepper.d.ts +65 -0
  83. package/dist/types/components/pd-select.d.ts +46 -0
  84. package/dist/types/components/pd-slider.d.ts +43 -0
  85. package/dist/types/components/pd-stepper.d.ts +47 -0
  86. package/dist/types/components/pd-switch.d.ts +37 -0
  87. package/dist/types/components/pd-tabs.d.ts +54 -0
  88. package/dist/types/components/pd-text-field.d.ts +30 -0
  89. package/dist/types/fonts.d.ts +1 -0
  90. package/dist/types/index.d.ts +22 -0
  91. package/dist/types/theme-with-fonts.d.ts +2 -0
  92. package/dist/types/theme.d.ts +1 -0
  93. package/package.json +93 -0
@@ -0,0 +1,268 @@
1
+ import { css as m, LitElement as b, html as a, nothing as s } from "lit";
2
+ import { property as i, customElement as h } from "lit/decorators.js";
3
+ import "@material/web/iconbutton/icon-button.js";
4
+ import "@material/web/iconbutton/filled-icon-button.js";
5
+ import "@material/web/iconbutton/filled-tonal-icon-button.js";
6
+ import "@material/web/iconbutton/outlined-icon-button.js";
7
+ import "@material/web/icon/icon.js";
8
+ var v = Object.defineProperty, p = Object.getOwnPropertyDescriptor, l = (n, t, e, c) => {
9
+ for (var r = c > 1 ? void 0 : c ? p(t, e) : t, d = n.length - 1, u; d >= 0; d--)
10
+ (u = n[d]) && (r = (c ? u(t, e, r) : u(r)) || r);
11
+ return c && r && v(t, e, r), r;
12
+ };
13
+ let o = class extends b {
14
+ constructor() {
15
+ super(...arguments), this.variant = "standard", this.icon = "", this.selectedIcon = "", this.disabled = !1, this.toggle = !1, this.selected = !1, this.href = "", this.target = "", this.ariaLabel = "", this.ariaLabelSelected = "";
16
+ }
17
+ getIconButtonTemplate() {
18
+ const n = this.icon ? a`<md-icon>${this.icon}</md-icon>` : a`<slot></slot>`, t = this.selectedIcon ? a`<md-icon slot="selected">${this.selectedIcon}</md-icon>` : s, e = {
19
+ disabled: this.disabled,
20
+ toggle: this.toggle,
21
+ selected: this.selected,
22
+ href: this.href || s,
23
+ target: this.target || s,
24
+ "aria-label": this.ariaLabel || s,
25
+ "aria-label-selected": this.ariaLabelSelected || s
26
+ };
27
+ switch (this.variant) {
28
+ case "filled":
29
+ return a`
30
+ <md-filled-icon-button
31
+ ?disabled=${e.disabled}
32
+ ?toggle=${e.toggle}
33
+ ?selected=${e.selected}
34
+ .href=${e.href}
35
+ .target=${e.target}
36
+ aria-label=${e["aria-label"]}
37
+ aria-label-selected=${e["aria-label-selected"]}
38
+ @input=${this._handleInput}
39
+ @change=${this._handleChange}
40
+ @click=${this._handleClick}
41
+ >
42
+ ${n}
43
+ ${t}
44
+ </md-filled-icon-button>
45
+ `;
46
+ case "tonal":
47
+ return a`
48
+ <md-filled-tonal-icon-button
49
+ ?disabled=${e.disabled}
50
+ ?toggle=${e.toggle}
51
+ ?selected=${e.selected}
52
+ .href=${e.href}
53
+ .target=${e.target}
54
+ aria-label=${e["aria-label"]}
55
+ aria-label-selected=${e["aria-label-selected"]}
56
+ @input=${this._handleInput}
57
+ @change=${this._handleChange}
58
+ @click=${this._handleClick}
59
+ >
60
+ ${n}
61
+ ${t}
62
+ </md-filled-tonal-icon-button>
63
+ `;
64
+ case "outlined":
65
+ return a`
66
+ <md-outlined-icon-button
67
+ ?disabled=${e.disabled}
68
+ ?toggle=${e.toggle}
69
+ ?selected=${e.selected}
70
+ .href=${e.href}
71
+ .target=${e.target}
72
+ aria-label=${e["aria-label"]}
73
+ aria-label-selected=${e["aria-label-selected"]}
74
+ @input=${this._handleInput}
75
+ @change=${this._handleChange}
76
+ @click=${this._handleClick}
77
+ >
78
+ ${n}
79
+ ${t}
80
+ </md-outlined-icon-button>
81
+ `;
82
+ default:
83
+ return a`
84
+ <md-icon-button
85
+ ?disabled=${e.disabled}
86
+ ?toggle=${e.toggle}
87
+ ?selected=${e.selected}
88
+ .href=${e.href}
89
+ .target=${e.target}
90
+ aria-label=${e["aria-label"]}
91
+ aria-label-selected=${e["aria-label-selected"]}
92
+ @input=${this._handleInput}
93
+ @change=${this._handleChange}
94
+ @click=${this._handleClick}
95
+ >
96
+ ${n}
97
+ ${t}
98
+ </md-icon-button>
99
+ `;
100
+ }
101
+ }
102
+ render() {
103
+ return this.getIconButtonTemplate();
104
+ }
105
+ _handleClick(n) {
106
+ this.disabled || this.dispatchEvent(new CustomEvent("icon-button-click", {
107
+ detail: {
108
+ variant: this.variant,
109
+ selected: this.selected,
110
+ toggle: this.toggle
111
+ },
112
+ bubbles: !0
113
+ }));
114
+ }
115
+ _handleInput(n) {
116
+ if (this.disabled) return;
117
+ const t = n.target;
118
+ this.selected = t.selected, this.dispatchEvent(new CustomEvent("input", {
119
+ detail: {
120
+ selected: t.selected,
121
+ variant: this.variant
122
+ },
123
+ bubbles: !0
124
+ }));
125
+ }
126
+ _handleChange(n) {
127
+ if (this.disabled) return;
128
+ const t = n.target;
129
+ this.selected = t.selected, this.dispatchEvent(new CustomEvent("change", {
130
+ detail: {
131
+ selected: t.selected,
132
+ variant: this.variant
133
+ },
134
+ bubbles: !0
135
+ }));
136
+ }
137
+ };
138
+ o.styles = m`
139
+ :host {
140
+ display: inline-block;
141
+ --md-icon-button-icon-size: var(--md-sys-icon-size, 1.5rem);
142
+ --md-filled-icon-button-icon-size: var(--md-sys-icon-size, 1.5rem);
143
+ --md-filled-tonal-icon-button-icon-size: var(--md-sys-icon-size, 1.5rem);
144
+ --md-outlined-icon-button-icon-size: var(--md-sys-icon-size, 1.5rem);
145
+ }
146
+
147
+ :host([variant="standard"]) {
148
+ --md-icon-button-icon-color: var(--md-sys-color-on-surface-variant);
149
+ --md-icon-button-hover-icon-color: var(--md-sys-color-on-surface-variant-hover);
150
+ --md-icon-button-focus-icon-color: var(--md-sys-color-on-surface-variant-focus);
151
+ --md-icon-button-pressed-icon-color: var(--md-sys-color-on-surface-variant-pressed);
152
+ --md-icon-button-selected-icon-color: var(--md-sys-color-primary);
153
+ --md-icon-button-selected-hover-icon-color: var(--md-sys-color-primary-hover);
154
+ --md-icon-button-selected-focus-icon-color: var(--md-sys-color-primary-focus);
155
+ --md-icon-button-selected-pressed-icon-color: var(--md-sys-color-primary-pressed);
156
+ }
157
+
158
+ :host([variant="filled"]) {
159
+ --md-filled-icon-button-container-color: var(--md-sys-color-primary);
160
+ --md-filled-icon-button-icon-color: var(--md-sys-color-on-primary);
161
+ --md-filled-icon-button-hover-container-color: var(--md-sys-color-primary-hover);
162
+ --md-filled-icon-button-focus-container-color: var(--md-sys-color-primary-focus);
163
+ --md-filled-icon-button-pressed-container-color: var(--md-sys-color-primary-pressed);
164
+ --md-filled-icon-button-selected-container-color: var(--md-sys-color-primary);
165
+ --md-filled-icon-button-toggle-selected-container-color: var(--md-sys-color-primary);
166
+ --md-filled-icon-button-toggle-unselected-container-color: var(--md-sys-color-surface-container-highest);
167
+ --md-filled-icon-button-toggle-unselected-icon-color: var(--md-sys-color-primary);
168
+ }
169
+
170
+ :host([variant="tonal"]) {
171
+ --md-filled-tonal-icon-button-container-color: var(--md-sys-color-secondary-container);
172
+ --md-filled-tonal-icon-button-icon-color: var(--md-sys-color-on-secondary-container);
173
+ --md-filled-tonal-icon-button-hover-container-color: var(--md-sys-color-secondary-container-hover);
174
+ --md-filled-tonal-icon-button-focus-container-color: var(--md-sys-color-secondary-container-focus);
175
+ --md-filled-tonal-icon-button-pressed-container-color: var(--md-sys-color-secondary-container-pressed);
176
+ --md-filled-tonal-icon-button-selected-container-color: var(--md-sys-color-secondary-container);
177
+ --md-filled-tonal-icon-button-toggle-selected-container-color: var(--md-sys-color-secondary-container);
178
+ --md-filled-tonal-icon-button-toggle-unselected-container-color: var(--md-sys-color-surface-container-highest);
179
+ --md-filled-tonal-icon-button-toggle-unselected-icon-color: var(--md-sys-color-on-surface-variant);
180
+ }
181
+
182
+ :host([variant="outlined"]) {
183
+ --md-outlined-icon-button-outline-color: var(--md-sys-color-outline);
184
+ --md-outlined-icon-button-icon-color: var(--md-sys-color-on-surface-variant);
185
+ --md-outlined-icon-button-hover-icon-color: var(--md-sys-color-on-surface-variant-hover);
186
+ --md-outlined-icon-button-focus-icon-color: var(--md-sys-color-on-surface-variant-focus);
187
+ --md-outlined-icon-button-pressed-icon-color: var(--md-sys-color-on-surface-variant-pressed);
188
+ --md-outlined-icon-button-selected-container-color: var(--md-sys-color-inverse-surface);
189
+ --md-outlined-icon-button-selected-icon-color: var(--md-sys-color-inverse-on-surface);
190
+ --md-outlined-icon-button-selected-outline-color: var(--md-sys-color-outline);
191
+ }
192
+
193
+ md-icon-button,
194
+ md-filled-icon-button,
195
+ md-filled-tonal-icon-button,
196
+ md-outlined-icon-button {
197
+ transition: all var(--md-sys-motion-duration-short2, 200ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0.0, 0, 1.0));
198
+ --md-icon-button-state-layer-shape: var(--md-sys-shape-corner-full);
199
+ --md-filled-icon-button-container-shape: var(--md-sys-shape-corner-full);
200
+ --md-filled-tonal-icon-button-container-shape: var(--md-sys-shape-corner-full);
201
+ --md-outlined-icon-button-container-shape: var(--md-sys-shape-corner-full);
202
+ }
203
+
204
+ md-icon-button:hover,
205
+ md-filled-icon-button:hover,
206
+ md-filled-tonal-icon-button:hover,
207
+ md-outlined-icon-button:hover {
208
+ transform: scale(1.05);
209
+ }
210
+
211
+ md-icon-button:active,
212
+ md-filled-icon-button:active,
213
+ md-filled-tonal-icon-button:active,
214
+ md-outlined-icon-button:active {
215
+ transform: scale(0.95);
216
+ }
217
+
218
+ :host([disabled]) md-icon-button,
219
+ :host([disabled]) md-filled-icon-button,
220
+ :host([disabled]) md-filled-tonal-icon-button,
221
+ :host([disabled]) md-outlined-icon-button {
222
+ opacity: var(--md-sys-state-disabled-container-opacity, 0.38);
223
+ cursor: not-allowed;
224
+ }
225
+
226
+ :host([disabled]) md-icon-button:hover,
227
+ :host([disabled]) md-filled-icon-button:hover,
228
+ :host([disabled]) md-filled-tonal-icon-button:hover,
229
+ :host([disabled]) md-outlined-icon-button:hover {
230
+ transform: none;
231
+ }
232
+ `;
233
+ l([
234
+ i({ type: String })
235
+ ], o.prototype, "variant", 2);
236
+ l([
237
+ i({ type: String })
238
+ ], o.prototype, "icon", 2);
239
+ l([
240
+ i({ type: String, attribute: "selected-icon" })
241
+ ], o.prototype, "selectedIcon", 2);
242
+ l([
243
+ i({ type: Boolean })
244
+ ], o.prototype, "disabled", 2);
245
+ l([
246
+ i({ type: Boolean })
247
+ ], o.prototype, "toggle", 2);
248
+ l([
249
+ i({ type: Boolean })
250
+ ], o.prototype, "selected", 2);
251
+ l([
252
+ i({ type: String })
253
+ ], o.prototype, "href", 2);
254
+ l([
255
+ i({ type: String })
256
+ ], o.prototype, "target", 2);
257
+ l([
258
+ i({ type: String, attribute: "aria-label" })
259
+ ], o.prototype, "ariaLabel", 2);
260
+ l([
261
+ i({ type: String, attribute: "aria-label-selected" })
262
+ ], o.prototype, "ariaLabelSelected", 2);
263
+ o = l([
264
+ h("pd-icon-button")
265
+ ], o);
266
+ export {
267
+ o as PdIconButton
268
+ };
@@ -0,0 +1,71 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("lit"),e=require("lit/decorators.js");require("@material/web/icon/icon.js");var d=Object.defineProperty,m=Object.getOwnPropertyDescriptor,i=(n,o,t,s)=>{for(var r=s>1?void 0:s?m(o,t):o,a=n.length-1,c;a>=0;a--)(c=n[a])&&(r=(s?c(o,t,r):c(r))||r);return s&&r&&d(o,t,r),r};exports.PdIcon=class extends l.LitElement{constructor(){super(...arguments),this.name="",this.size="medium",this.variant="filled"}render(){return l.html`
2
+ <md-icon class="icon ${this.size}">
3
+ ${this.name}
4
+ </md-icon>
5
+ `}};exports.PdIcon.styles=l.css`
6
+ :host {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ }
11
+
12
+ .icon {
13
+ color: var(--md-sys-color-on-surface, #000000);
14
+ transition: color var(--md-sys-transition-duration, 0.2s) ease;
15
+ user-select: none;
16
+ }
17
+
18
+ .icon.small {
19
+ font-size: var(--md-sys-icon-size-small, 18px);
20
+ width: var(--md-sys-icon-size-small, 18px);
21
+ height: var(--md-sys-icon-size-small, 18px);
22
+ }
23
+
24
+ .icon.medium {
25
+ font-size: var(--md-sys-icon-size-medium, 24px);
26
+ width: var(--md-sys-icon-size-medium, 24px);
27
+ height: var(--md-sys-icon-size-medium, 24px);
28
+ }
29
+
30
+ .icon.large {
31
+ font-size: var(--md-sys-icon-size-large, 32px);
32
+ width: var(--md-sys-icon-size-large, 32px);
33
+ height: var(--md-sys-icon-size-large, 32px);
34
+ }
35
+
36
+ /* Clickable state */
37
+ :host([clickable]) .icon {
38
+ cursor: pointer;
39
+ border-radius: var(--md-sys-shape-corner-small, 4px);
40
+ padding: var(--md-sys-padding-200, 8px);
41
+ transition: background-color var(--md-sys-transition-duration, 0.2s) ease, color var(--md-sys-transition-duration, 0.2s) ease;
42
+ }
43
+
44
+ :host([clickable]) .icon:hover {
45
+ background-color: var(--md-sys-color-primary-container, rgba(103, 80, 164, 0.08));
46
+ }
47
+
48
+ :host([clickable]) .icon:active {
49
+ background-color: var(--md-sys-color-primary-container, rgba(103, 80, 164, 0.12));
50
+ }
51
+
52
+ /* Color variants */
53
+ :host([color="primary"]) .icon {
54
+ color: var(--md-sys-color-primary, #6750a4);
55
+ }
56
+
57
+ :host([color="secondary"]) .icon {
58
+ color: var(--md-sys-color-secondary, #625b71);
59
+ }
60
+
61
+ :host([color="error"]) .icon {
62
+ color: var(--md-sys-color-error, #ba1a1a);
63
+ }
64
+
65
+ :host([color="success"]) .icon {
66
+ color: var(--md-sys-color-tertiary, #7d5260);
67
+ }
68
+
69
+ /* Material Web Components will use --md-* design tokens directly */
70
+ /* Tokens will be provided by separate theme file with --md-* naming */
71
+ `;i([e.property({type:String})],exports.PdIcon.prototype,"name",2);i([e.property({type:String})],exports.PdIcon.prototype,"size",2);i([e.property({type:String})],exports.PdIcon.prototype,"variant",2);exports.PdIcon=i([e.customElement("pd-icon")],exports.PdIcon);
@@ -0,0 +1,102 @@
1
+ import { css as m, LitElement as d, html as p } from "lit";
2
+ import { property as c, customElement as y } from "lit/decorators.js";
3
+ import "@material/web/icon/icon.js";
4
+ var v = Object.defineProperty, h = Object.getOwnPropertyDescriptor, i = (l, s, t, e) => {
5
+ for (var r = e > 1 ? void 0 : e ? h(s, t) : s, a = l.length - 1, n; a >= 0; a--)
6
+ (n = l[a]) && (r = (e ? n(s, t, r) : n(r)) || r);
7
+ return e && r && v(s, t, r), r;
8
+ };
9
+ let o = class extends d {
10
+ constructor() {
11
+ super(...arguments), this.name = "", this.size = "medium", this.variant = "filled";
12
+ }
13
+ render() {
14
+ return p`
15
+ <md-icon class="icon ${this.size}">
16
+ ${this.name}
17
+ </md-icon>
18
+ `;
19
+ }
20
+ };
21
+ o.styles = m`
22
+ :host {
23
+ display: inline-flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ }
27
+
28
+ .icon {
29
+ color: var(--md-sys-color-on-surface, #000000);
30
+ transition: color var(--md-sys-transition-duration, 0.2s) ease;
31
+ user-select: none;
32
+ }
33
+
34
+ .icon.small {
35
+ font-size: var(--md-sys-icon-size-small, 18px);
36
+ width: var(--md-sys-icon-size-small, 18px);
37
+ height: var(--md-sys-icon-size-small, 18px);
38
+ }
39
+
40
+ .icon.medium {
41
+ font-size: var(--md-sys-icon-size-medium, 24px);
42
+ width: var(--md-sys-icon-size-medium, 24px);
43
+ height: var(--md-sys-icon-size-medium, 24px);
44
+ }
45
+
46
+ .icon.large {
47
+ font-size: var(--md-sys-icon-size-large, 32px);
48
+ width: var(--md-sys-icon-size-large, 32px);
49
+ height: var(--md-sys-icon-size-large, 32px);
50
+ }
51
+
52
+ /* Clickable state */
53
+ :host([clickable]) .icon {
54
+ cursor: pointer;
55
+ border-radius: var(--md-sys-shape-corner-small, 4px);
56
+ padding: var(--md-sys-padding-200, 8px);
57
+ transition: background-color var(--md-sys-transition-duration, 0.2s) ease, color var(--md-sys-transition-duration, 0.2s) ease;
58
+ }
59
+
60
+ :host([clickable]) .icon:hover {
61
+ background-color: var(--md-sys-color-primary-container, rgba(103, 80, 164, 0.08));
62
+ }
63
+
64
+ :host([clickable]) .icon:active {
65
+ background-color: var(--md-sys-color-primary-container, rgba(103, 80, 164, 0.12));
66
+ }
67
+
68
+ /* Color variants */
69
+ :host([color="primary"]) .icon {
70
+ color: var(--md-sys-color-primary, #6750a4);
71
+ }
72
+
73
+ :host([color="secondary"]) .icon {
74
+ color: var(--md-sys-color-secondary, #625b71);
75
+ }
76
+
77
+ :host([color="error"]) .icon {
78
+ color: var(--md-sys-color-error, #ba1a1a);
79
+ }
80
+
81
+ :host([color="success"]) .icon {
82
+ color: var(--md-sys-color-tertiary, #7d5260);
83
+ }
84
+
85
+ /* Material Web Components will use --md-* design tokens directly */
86
+ /* Tokens will be provided by separate theme file with --md-* naming */
87
+ `;
88
+ i([
89
+ c({ type: String })
90
+ ], o.prototype, "name", 2);
91
+ i([
92
+ c({ type: String })
93
+ ], o.prototype, "size", 2);
94
+ i([
95
+ c({ type: String })
96
+ ], o.prototype, "variant", 2);
97
+ o = i([
98
+ y("pd-icon")
99
+ ], o);
100
+ export {
101
+ o as PdIcon
102
+ };
@@ -0,0 +1,108 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("lit"),e=require("lit/decorators.js");require("@material/web/list/list.js");require("@material/web/list/list-item.js");require("@material/web/divider/divider.js");require("@material/web/icon/icon.js");var m=Object.defineProperty,p=Object.getOwnPropertyDescriptor,i=(a,s,n,l)=>{for(var r=l>1?void 0:l?p(s,n):s,d=a.length-1,o;d>=0;d--)(o=a[d])&&(r=(l?o(s,n,r):o(r))||r);return l&&r&&m(s,n,r),r};exports.PdList=class extends t.LitElement{constructor(){super(...arguments),this.role="list",this.tabindex=-1}render(){return t.html`
2
+ <md-list
3
+ role=${this.role}
4
+ tabindex=${this.tabindex}
5
+ >
6
+ <slot></slot>
7
+ </md-list>
8
+ `}};exports.PdList.styles=t.css`
9
+ :host {
10
+ display: block;
11
+ --md-list-container-color: var(--md-sys-color-surface);
12
+ }
13
+
14
+ md-list {
15
+ background-color: var(--md-sys-color-surface);
16
+ border-radius: var(--md-sys-shape-corner-small);
17
+ overflow: hidden;
18
+ }
19
+ `;i([e.property({type:String})],exports.PdList.prototype,"role",2);i([e.property({type:Number})],exports.PdList.prototype,"tabindex",2);exports.PdList=i([e.customElement("pd-list")],exports.PdList);exports.PdListItem=class extends t.LitElement{constructor(){super(...arguments),this.type="text",this.headline="",this.supportingText="",this.trailingSupportingText="",this.href="",this.target="",this.disabled=!1,this.icon="",this.trailingIcon="",this.avatar="",this.image=""}getListItemTemplate(){const s=this.headline?t.html`<div slot="headline">${this.headline}</div>`:t.html`<slot name="headline" slot="headline"></slot>`,n=this.supportingText?t.html`<div slot="supporting-text">${this.supportingText}</div>`:t.html`<slot name="supporting-text" slot="supporting-text"></slot>`,l=this.trailingSupportingText?t.html`<div slot="trailing-supporting-text">${this.trailingSupportingText}</div>`:t.html`<slot name="trailing-supporting-text" slot="trailing-supporting-text"></slot>`,r=this.icon?t.html`<md-icon slot="start">${this.icon}</md-icon>`:this.avatar?t.html`<img slot="start" src="${this.avatar}" class="avatar" alt="" />`:this.image?t.html`<img slot="start" src="${this.image}" class="image" alt="" />`:t.html`<slot name="start" slot="start"></slot>`,d=this.trailingIcon?t.html`<md-icon slot="end">${this.trailingIcon}</md-icon>`:t.html`<slot name="end" slot="end"></slot>`,o={disabled:this.disabled,tabindex:this.tabindex,href:this.href||t.nothing,target:this.target||t.nothing};return t.html`
20
+ <md-list-item
21
+ .type=${this.type}
22
+ ?disabled=${o.disabled}
23
+ .tabindex=${o.tabindex}
24
+ .href=${o.href}
25
+ .target=${o.target}
26
+ @click=${this._handleClick}
27
+ @keydown=${this._handleKeydown}
28
+ >
29
+ ${r}
30
+ ${s}
31
+ ${n}
32
+ ${l}
33
+ ${d}
34
+ </md-list-item>
35
+ `}render(){return this.getListItemTemplate()}_handleClick(s){this.disabled||this.dispatchEvent(new CustomEvent("list-item-click",{detail:{type:this.type,headline:this.headline,href:this.href},bubbles:!0}))}_handleKeydown(s){this.disabled||(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),this._handleClick(s))}};exports.PdListItem.styles=t.css`
36
+ :host {
37
+ display: block;
38
+ --md-list-item-list-item-container-color: var(--md-sys-color-surface);
39
+ --md-list-item-list-item-label-text-color: var(--md-sys-color-on-surface);
40
+ --md-list-item-list-item-supporting-text-color: var(--md-sys-color-on-surface-variant);
41
+ --md-list-item-list-item-trailing-supporting-text-color: var(--md-sys-color-on-surface-variant);
42
+ --md-list-item-list-item-leading-icon-color: var(--md-sys-color-on-surface-variant);
43
+ --md-list-item-list-item-trailing-icon-color: var(--md-sys-color-on-surface-variant);
44
+ --md-list-item-list-item-container-shape: var(--md-sys-shape-corner-none);
45
+ }
46
+
47
+ md-list-item {
48
+ --md-list-item-label-text-font: var(--md-sys-typescale-body-large-font);
49
+ --md-list-item-label-text-size: var(--md-sys-typescale-body-large-size);
50
+ --md-list-item-label-text-weight: var(--md-sys-typescale-body-large-weight);
51
+ --md-list-item-label-text-line-height: var(--md-sys-typescale-body-large-line-height);
52
+ --md-list-item-supporting-text-font: var(--md-sys-typescale-body-medium-font);
53
+ --md-list-item-supporting-text-size: var(--md-sys-typescale-body-medium-size);
54
+ --md-list-item-supporting-text-weight: var(--md-sys-typescale-body-medium-weight);
55
+ --md-list-item-supporting-text-line-height: var(--md-sys-typescale-body-medium-line-height);
56
+ --md-list-item-trailing-supporting-text-font: var(--md-sys-typescale-label-small-font);
57
+ --md-list-item-trailing-supporting-text-size: var(--md-sys-typescale-label-small-size);
58
+ --md-list-item-trailing-supporting-text-weight: var(--md-sys-typescale-label-small-weight);
59
+ --md-list-item-trailing-supporting-text-line-height: var(--md-sys-typescale-label-small-line-height);
60
+ transition: background-color var(--md-sys-motion-duration-short2, 200ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0.0, 0, 1.0));
61
+ }
62
+
63
+ md-list-item:hover {
64
+ --md-list-item-list-item-container-color: var(--md-sys-color-surface-container-hover, var(--md-sys-color-surface-variant));
65
+ }
66
+
67
+ md-list-item:focus {
68
+ --md-list-item-list-item-container-color: var(--md-sys-color-surface-container-focus, var(--md-sys-color-surface-variant));
69
+ }
70
+
71
+ .avatar {
72
+ width: 40px;
73
+ height: 40px;
74
+ border-radius: var(--md-sys-shape-corner-full);
75
+ object-fit: cover;
76
+ }
77
+
78
+ .image {
79
+ width: 56px;
80
+ height: 56px;
81
+ border-radius: var(--md-sys-shape-corner-small);
82
+ object-fit: cover;
83
+ }
84
+
85
+ :host([disabled]) md-list-item {
86
+ --md-list-item-list-item-label-text-color: var(--md-sys-color-on-surface);
87
+ --md-list-item-list-item-supporting-text-color: var(--md-sys-color-on-surface);
88
+ --md-list-item-list-item-leading-icon-color: var(--md-sys-color-on-surface);
89
+ --md-list-item-list-item-trailing-icon-color: var(--md-sys-color-on-surface);
90
+ opacity: var(--md-sys-state-disabled-content-opacity, 0.38);
91
+ cursor: not-allowed;
92
+ }
93
+ `;i([e.property({type:String})],exports.PdListItem.prototype,"type",2);i([e.property({type:String})],exports.PdListItem.prototype,"headline",2);i([e.property({type:String,attribute:"supporting-text"})],exports.PdListItem.prototype,"supportingText",2);i([e.property({type:String,attribute:"trailing-supporting-text"})],exports.PdListItem.prototype,"trailingSupportingText",2);i([e.property({type:String})],exports.PdListItem.prototype,"href",2);i([e.property({type:String})],exports.PdListItem.prototype,"target",2);i([e.property({type:Boolean})],exports.PdListItem.prototype,"disabled",2);i([e.property({type:String})],exports.PdListItem.prototype,"icon",2);i([e.property({type:String,attribute:"trailing-icon"})],exports.PdListItem.prototype,"trailingIcon",2);i([e.property({type:String})],exports.PdListItem.prototype,"avatar",2);i([e.property({type:String})],exports.PdListItem.prototype,"image",2);i([e.property({type:Number})],exports.PdListItem.prototype,"tabindex",2);exports.PdListItem=i([e.customElement("pd-list-item")],exports.PdListItem);exports.PdListDivider=class extends t.LitElement{constructor(){super(...arguments),this.inset=!1,this.role="separator"}render(){return t.html`
94
+ <md-divider
95
+ ?inset=${this.inset}
96
+ role=${this.role}
97
+ ></md-divider>
98
+ `}};exports.PdListDivider.styles=t.css`
99
+ :host {
100
+ display: block;
101
+ --md-divider-color: var(--md-sys-color-outline-variant);
102
+ --md-divider-thickness: 1px;
103
+ }
104
+
105
+ md-divider {
106
+ margin: var(--md-sys-spacing-100, 4px) 0;
107
+ }
108
+ `;i([e.property({type:Boolean})],exports.PdListDivider.prototype,"inset",2);i([e.property({type:String})],exports.PdListDivider.prototype,"role",2);exports.PdListDivider=i([e.customElement("pd-list-divider")],exports.PdListDivider);