@italia/icon 0.0.1-alpha.0 → 0.1.0-alpha.2

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.
@@ -88,7 +88,8 @@
88
88
  "type": {
89
89
  "text": "Sizes | undefined"
90
90
  },
91
- "attribute": "size"
91
+ "attribute": "size",
92
+ "reflects": true
92
93
  },
93
94
  {
94
95
  "kind": "field",
@@ -104,7 +105,8 @@
104
105
  "type": {
105
106
  "text": "Colors | undefined"
106
107
  },
107
- "attribute": "color"
108
+ "attribute": "color",
109
+ "reflects": true
108
110
  },
109
111
  {
110
112
  "kind": "field",
@@ -113,7 +115,8 @@
113
115
  "text": "Alignments | undefined"
114
116
  },
115
117
  "default": "'middle'",
116
- "attribute": "align"
118
+ "attribute": "align",
119
+ "reflects": true
117
120
  },
118
121
  {
119
122
  "kind": "field",
@@ -132,7 +135,8 @@
132
135
  "text": "boolean"
133
136
  },
134
137
  "default": "false",
135
- "attribute": "padded"
138
+ "attribute": "padded",
139
+ "reflects": true
136
140
  },
137
141
  {
138
142
  "kind": "field",
@@ -140,7 +144,8 @@
140
144
  "type": {
141
145
  "text": "string | undefined"
142
146
  },
143
- "attribute": "src"
147
+ "attribute": "src",
148
+ "reflects": true
144
149
  },
145
150
  {
146
151
  "kind": "field",
@@ -463,7 +468,7 @@
463
468
  "type": {
464
469
  "text": "Story"
465
470
  },
466
- "default": "{ name: 'Icone disponibili', render: () => { const inputId = `search-${Math.random().toString(36).slice(2)}`; const showCopiedFeedback = (element: HTMLElement) => { const el = element; const original = el.innerHTML; el.innerHTML = '✅ Copiato!'; el.style.color = '#007a33'; setTimeout(() => { el.innerHTML = original; el.style.color = '#444'; }, 1200); }; const handleKeyDown = (e: KeyboardEvent, name: string, label: HTMLElement) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); navigator.clipboard.writeText(name); showCopiedFeedback(label); } }; return html` <style> .icon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 16px; font-family: 'Titillium Web', sans-serif; font-size: 16px; } .icon-item { text-align: center; cursor: pointer; padding: 0.5rem; border-radius: 0.5rem; transition: background-color 0.2s ease; } .icon-item:hover { background-color: #f2f2f2; } .icon-label { font-size: 0.75rem; margin-top: 6px; overflow-wrap: break-word; color: #444; transition: color 0.3s ease; } .search-input { margin-bottom: 2.5rem; padding: 0.5rem 1rem; font-size: 1rem; width: 100%; border: 1px solid #ccc; border-radius: 4px; } #storybook-root { width: 100%; } </style> <div> <input id=\"${inputId}\" class=\"search-input\" type=\"text\" placeholder=\"Cerca un'icona per nome…\" @input=${(e: InputEvent) => { const value = (e.target as HTMLInputElement).value.toLowerCase(); const items = document.querySelectorAll('[data-icon-name]'); items.forEach((item) => { const el = item as HTMLElement; const nameAttr = el.getAttribute('data-icon-name') || ''; el.style.display = nameAttr.includes(value) ? '' : 'none'; }); }} /> <div class=\"icon-grid\"> ${iconNames.map( (name) => html` <div class=\"icon-item\" data-icon-name=\"${name.toLowerCase()}\" role=\"button\" tabindex=\"0\" label=\"Clicca per copiare\" @click=${(e: Event) => { navigator.clipboard.writeText(name); const label = (e.currentTarget as HTMLElement).querySelector('.icon-label') as HTMLElement; showCopiedFeedback(label); }} @keydown=${(e: KeyboardEvent) => { const label = (e.currentTarget as HTMLElement).querySelector('.icon-label') as HTMLElement; handleKeyDown(e, name, label); }} > <it-icon name=\"${name}\" size=\"lg\" label=\"${name}\"></it-icon> <div class=\"icon-label\">${name}</div> </div> `, )} </div> </div> `; }, argTypes: { size: { table: { disable: true, }, }, name: { table: { disable: true, }, }, color: { table: { disable: true, }, }, align: { table: { disable: true, }, }, label: { table: { disable: true, }, }, padded: { table: { disable: true, }, }, src: { table: { disable: true, }, }, role: { table: { disable: true, }, }, background: { table: { disable: true, }, }, }, parameters: { docs: { description: { story: ` Questa sezione mostra tutte le icone SVG disponibili nel Design System. Puoi cercare un'icona per nome, e cliccarla per copiarne il nome identificativo da usare nell'attributo \\`name\\`. `, }, }, }, }"
471
+ "default": "{ name: 'Icone disponibili', render: () => { const inputId = `search-${Math.random().toString(36).slice(2)}`; const showCopiedFeedback = (element: HTMLElement) => { const el = element; const original = el.innerHTML; el.innerHTML = '✅ Copiato!'; el.style.color = '#007a33'; setTimeout(() => { el.innerHTML = original; el.style.color = '#444'; }, 1200); }; const handleKeyDown = (e: KeyboardEvent, name: string, label: HTMLElement) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); navigator.clipboard.writeText(name); showCopiedFeedback(label); } }; return html` <style> .icon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 16px; } .icon-item { text-align: center; cursor: pointer; padding: 0.5rem; border-radius: 0.5rem; transition: background-color 0.2s ease; } .icon-item:hover { background-color: #f2f2f2; } .icon-label { font-size: 0.75rem; margin-top: 6px; overflow-wrap: break-word; color: #444; transition: color 0.3s ease; } .search-input { margin-bottom: 2.5rem; padding: 0.5rem 1rem; font-size: 1rem; width: 100%; border: 1px solid #ccc; border-radius: 4px; } #storybook-root { width: 100%; } </style> <div> <input id=\"${inputId}\" class=\"search-input\" type=\"text\" placeholder=\"Cerca un'icona per nome…\" @input=${(e: InputEvent) => { const value = (e.target as HTMLInputElement).value.toLowerCase(); const items = document.querySelectorAll('[data-icon-name]'); items.forEach((item) => { const el = item as HTMLElement; const nameAttr = el.getAttribute('data-icon-name') || ''; el.style.display = nameAttr.includes(value) ? '' : 'none'; }); }} /> <div class=\"icon-grid\"> ${iconNames.map( (name) => html` <div class=\"icon-item\" data-icon-name=\"${name.toLowerCase()}\" role=\"button\" tabindex=\"0\" label=\"Clicca per copiare\" @click=${(e: Event) => { navigator.clipboard.writeText(name); const label = (e.currentTarget as HTMLElement).querySelector('.icon-label') as HTMLElement; showCopiedFeedback(label); }} @keydown=${(e: KeyboardEvent) => { const label = (e.currentTarget as HTMLElement).querySelector('.icon-label') as HTMLElement; handleKeyDown(e, name, label); }} > <it-icon name=\"${name}\" size=\"lg\" label=\"${name}\"></it-icon> <div class=\"icon-label\">${name}</div> </div> `, )} </div> </div> `; }, argTypes: { size: { table: { disable: true, }, }, name: { table: { disable: true, }, }, color: { table: { disable: true, }, }, align: { table: { disable: true, }, }, label: { table: { disable: true, }, }, padded: { table: { disable: true, }, }, src: { table: { disable: true, }, }, role: { table: { disable: true, }, }, background: { table: { disable: true, }, }, }, parameters: { docs: { description: { story: ` Questa sezione mostra tutte le icone SVG disponibili nel Design System. Puoi cercare un'icona per nome, e cliccarla per copiarne il nome identificativo da usare nell'attributo \\`name\\`. `, }, }, }, }"
467
472
  }
468
473
  ],
469
474
  "exports": [
@@ -0,0 +1,192 @@
1
+ // 🛑 AUTO-GENERATED FILE — do not edit manually!
2
+ export type IconLoader = () => Promise<{ default: string }>;
3
+
4
+ export const registry = {
5
+ 'it-android-square': () => import('./icons/it-android-square.js'),
6
+ 'it-android': () => import('./icons/it-android.js'),
7
+ 'it-apple-square': () => import('./icons/it-apple-square.js'),
8
+ 'it-apple': () => import('./icons/it-apple.js'),
9
+ 'it-arrow-down-circle': () => import('./icons/it-arrow-down-circle.js'),
10
+ 'it-arrow-down-triangle': () => import('./icons/it-arrow-down-triangle.js'),
11
+ 'it-arrow-down': () => import('./icons/it-arrow-down.js'),
12
+ 'it-arrow-left-circle': () => import('./icons/it-arrow-left-circle.js'),
13
+ 'it-arrow-left-triangle': () => import('./icons/it-arrow-left-triangle.js'),
14
+ 'it-arrow-left': () => import('./icons/it-arrow-left.js'),
15
+ 'it-arrow-right-circle': () => import('./icons/it-arrow-right-circle.js'),
16
+ 'it-arrow-right-triangle': () => import('./icons/it-arrow-right-triangle.js'),
17
+ 'it-arrow-right': () => import('./icons/it-arrow-right.js'),
18
+ 'it-arrow-up-circle': () => import('./icons/it-arrow-up-circle.js'),
19
+ 'it-arrow-up-triangle': () => import('./icons/it-arrow-up-triangle.js'),
20
+ 'it-arrow-up': () => import('./icons/it-arrow-up.js'),
21
+ 'it-ban': () => import('./icons/it-ban.js'),
22
+ 'it-behance': () => import('./icons/it-behance.js'),
23
+ 'it-bluesky': () => import('./icons/it-bluesky.js'),
24
+ 'it-bookmark': () => import('./icons/it-bookmark.js'),
25
+ 'it-box': () => import('./icons/it-box.js'),
26
+ 'it-burger': () => import('./icons/it-burger.js'),
27
+ 'it-calendar': () => import('./icons/it-calendar.js'),
28
+ 'it-camera': () => import('./icons/it-camera.js'),
29
+ 'it-car': () => import('./icons/it-car.js'),
30
+ 'it-card': () => import('./icons/it-card.js'),
31
+ 'it-cart': () => import('./icons/it-cart.js'),
32
+ 'it-chart-line': () => import('./icons/it-chart-line.js'),
33
+ 'it-check-circle': () => import('./icons/it-check-circle.js'),
34
+ 'it-check': () => import('./icons/it-check.js'),
35
+ 'it-chevron-left': () => import('./icons/it-chevron-left.js'),
36
+ 'it-chevron-right': () => import('./icons/it-chevron-right.js'),
37
+ 'it-clip': () => import('./icons/it-clip.js'),
38
+ 'it-clock': () => import('./icons/it-clock.js'),
39
+ 'it-close-big': () => import('./icons/it-close-big.js'),
40
+ 'it-close-circle': () => import('./icons/it-close-circle.js'),
41
+ 'it-close': () => import('./icons/it-close.js'),
42
+ 'it-code-circle': () => import('./icons/it-code-circle.js'),
43
+ 'it-collapse': () => import('./icons/it-collapse.js'),
44
+ 'it-comment': () => import('./icons/it-comment.js'),
45
+ 'it-copy': () => import('./icons/it-copy.js'),
46
+ 'it-delete': () => import('./icons/it-delete.js'),
47
+ 'it-designers-italia': () => import('./icons/it-designers-italia.js'),
48
+ 'it-download': () => import('./icons/it-download.js'),
49
+ 'it-error': () => import('./icons/it-error.js'),
50
+ 'it-exchange-circle': () => import('./icons/it-exchange-circle.js'),
51
+ 'it-expand': () => import('./icons/it-expand.js'),
52
+ 'it-external-link': () => import('./icons/it-external-link.js'),
53
+ 'it-facebook-square': () => import('./icons/it-facebook-square.js'),
54
+ 'it-facebook': () => import('./icons/it-facebook.js'),
55
+ 'it-figma-square': () => import('./icons/it-figma-square.js'),
56
+ 'it-figma': () => import('./icons/it-figma.js'),
57
+ 'it-file-audio': () => import('./icons/it-file-audio.js'),
58
+ 'it-file-compressed': () => import('./icons/it-file-compressed.js'),
59
+ 'it-file-csv': () => import('./icons/it-file-csv.js'),
60
+ 'it-file-docx': () => import('./icons/it-file-docx.js'),
61
+ 'it-file-image': () => import('./icons/it-file-image.js'),
62
+ 'it-file-json': () => import('./icons/it-file-json.js'),
63
+ 'it-file-odp': () => import('./icons/it-file-odp.js'),
64
+ 'it-file-ods': () => import('./icons/it-file-ods.js'),
65
+ 'it-file-odt': () => import('./icons/it-file-odt.js'),
66
+ 'it-file-pdf-ext': () => import('./icons/it-file-pdf-ext.js'),
67
+ 'it-file-pdf': () => import('./icons/it-file-pdf.js'),
68
+ 'it-file-ppt': () => import('./icons/it-file-ppt.js'),
69
+ 'it-file-sheet': () => import('./icons/it-file-sheet.js'),
70
+ 'it-file-signed': () => import('./icons/it-file-signed.js'),
71
+ 'it-file-slides': () => import('./icons/it-file-slides.js'),
72
+ 'it-file-txt': () => import('./icons/it-file-txt.js'),
73
+ 'it-file-video': () => import('./icons/it-file-video.js'),
74
+ 'it-file-xlsx': () => import('./icons/it-file-xlsx.js'),
75
+ 'it-file-xml': () => import('./icons/it-file-xml.js'),
76
+ 'it-file': () => import('./icons/it-file.js'),
77
+ 'it-files': () => import('./icons/it-files.js'),
78
+ 'it-flag': () => import('./icons/it-flag.js'),
79
+ 'it-flickr-square': () => import('./icons/it-flickr-square.js'),
80
+ 'it-flickr': () => import('./icons/it-flickr.js'),
81
+ 'it-folder': () => import('./icons/it-folder.js'),
82
+ 'it-fullscreen': () => import('./icons/it-fullscreen.js'),
83
+ 'it-funnel': () => import('./icons/it-funnel.js'),
84
+ 'it-github': () => import('./icons/it-github.js'),
85
+ 'it-google': () => import('./icons/it-google.js'),
86
+ 'it-hearing': () => import('./icons/it-hearing.js'),
87
+ 'it-help-circle': () => import('./icons/it-help-circle.js'),
88
+ 'it-help': () => import('./icons/it-help.js'),
89
+ 'it-horn': () => import('./icons/it-horn.js'),
90
+ 'it-inbox': () => import('./icons/it-inbox.js'),
91
+ 'it-info-circle': () => import('./icons/it-info-circle.js'),
92
+ 'it-instagram': () => import('./icons/it-instagram.js'),
93
+ 'it-key': () => import('./icons/it-key.js'),
94
+ 'it-less-circle': () => import('./icons/it-less-circle.js'),
95
+ 'it-link': () => import('./icons/it-link.js'),
96
+ 'it-linkedin-square': () => import('./icons/it-linkedin-square.js'),
97
+ 'it-linkedin': () => import('./icons/it-linkedin.js'),
98
+ 'it-list': () => import('./icons/it-list.js'),
99
+ 'it-lock': () => import('./icons/it-lock.js'),
100
+ 'it-locked': () => import('./icons/it-locked.js'),
101
+ 'it-logout': () => import('./icons/it-logout.js'),
102
+ 'it-mail-open': () => import('./icons/it-mail-open.js'),
103
+ 'it-mail': () => import('./icons/it-mail.js'),
104
+ 'it-map-marker-circle': () => import('./icons/it-map-marker-circle.js'),
105
+ 'it-map-marker-minus': () => import('./icons/it-map-marker-minus.js'),
106
+ 'it-map-marker-plus': () => import('./icons/it-map-marker-plus.js'),
107
+ 'it-map-marker': () => import('./icons/it-map-marker.js'),
108
+ 'it-mastodon-square': () => import('./icons/it-mastodon-square.js'),
109
+ 'it-mastodon': () => import('./icons/it-mastodon.js'),
110
+ 'it-maximize-alt': () => import('./icons/it-maximize-alt.js'),
111
+ 'it-maximize': () => import('./icons/it-maximize.js'),
112
+ 'it-medium-square': () => import('./icons/it-medium-square.js'),
113
+ 'it-medium': () => import('./icons/it-medium.js'),
114
+ 'it-minimize': () => import('./icons/it-minimize.js'),
115
+ 'it-minus-circle': () => import('./icons/it-minus-circle.js'),
116
+ 'it-minus': () => import('./icons/it-minus.js'),
117
+ 'it-moodle-square': () => import('./icons/it-moodle-square.js'),
118
+ 'it-moodle': () => import('./icons/it-moodle.js'),
119
+ 'it-more-actions': () => import('./icons/it-more-actions.js'),
120
+ 'it-more-items': () => import('./icons/it-more-items.js'),
121
+ 'it-note': () => import('./icons/it-note.js'),
122
+ 'it-open-source': () => import('./icons/it-open-source.js'),
123
+ 'it-pa': () => import('./icons/it-pa.js'),
124
+ 'it-password-invisible': () => import('./icons/it-password-invisible.js'),
125
+ 'it-password-visible': () => import('./icons/it-password-visible.js'),
126
+ 'it-pencil': () => import('./icons/it-pencil.js'),
127
+ 'it-piattaforme': () => import('./icons/it-piattaforme.js'),
128
+ 'it-pin': () => import('./icons/it-pin.js'),
129
+ 'it-pinterest-square': () => import('./icons/it-pinterest-square.js'),
130
+ 'it-pinterest': () => import('./icons/it-pinterest.js'),
131
+ 'it-plug': () => import('./icons/it-plug.js'),
132
+ 'it-plus-circle': () => import('./icons/it-plus-circle.js'),
133
+ 'it-plus': () => import('./icons/it-plus.js'),
134
+ 'it-presentation': () => import('./icons/it-presentation.js'),
135
+ 'it-print': () => import('./icons/it-print.js'),
136
+ 'it-quora-square': () => import('./icons/it-quora-square.js'),
137
+ 'it-quora': () => import('./icons/it-quora.js'),
138
+ 'it-reddit-square': () => import('./icons/it-reddit-square.js'),
139
+ 'it-reddit': () => import('./icons/it-reddit.js'),
140
+ 'it-refresh': () => import('./icons/it-refresh.js'),
141
+ 'it-restore': () => import('./icons/it-restore.js'),
142
+ 'it-rss-square': () => import('./icons/it-rss-square.js'),
143
+ 'it-rss': () => import('./icons/it-rss.js'),
144
+ 'it-search': () => import('./icons/it-search.js'),
145
+ 'it-settings': () => import('./icons/it-settings.js'),
146
+ 'it-share': () => import('./icons/it-share.js'),
147
+ 'it-sign': () => import('./icons/it-sign.js'),
148
+ 'it-slack-square': () => import('./icons/it-slack-square.js'),
149
+ 'it-slack': () => import('./icons/it-slack.js'),
150
+ 'it-snapchat-square': () => import('./icons/it-snapchat-square.js'),
151
+ 'it-snapchat': () => import('./icons/it-snapchat.js'),
152
+ 'it-software': () => import('./icons/it-software.js'),
153
+ 'it-spotify': () => import('./icons/it-spotify.js'),
154
+ 'it-stackexchange-square': () => import('./icons/it-stackexchange-square.js'),
155
+ 'it-stackexchange': () => import('./icons/it-stackexchange.js'),
156
+ 'it-stackoverflow-square': () => import('./icons/it-stackoverflow-square.js'),
157
+ 'it-stackoverflow': () => import('./icons/it-stackoverflow.js'),
158
+ 'it-star-full': () => import('./icons/it-star-full.js'),
159
+ 'it-star-outline': () => import('./icons/it-star-outline.js'),
160
+ 'it-team-digitale': () => import('./icons/it-team-digitale.js'),
161
+ 'it-telegram': () => import('./icons/it-telegram.js'),
162
+ 'it-telephone': () => import('./icons/it-telephone.js'),
163
+ 'it-threads-square': () => import('./icons/it-threads-square.js'),
164
+ 'it-threads': () => import('./icons/it-threads.js'),
165
+ 'it-tiktok-square': () => import('./icons/it-tiktok-square.js'),
166
+ 'it-tiktok': () => import('./icons/it-tiktok.js'),
167
+ 'it-tool': () => import('./icons/it-tool.js'),
168
+ 'it-twitter-square': () => import('./icons/it-twitter-square.js'),
169
+ 'it-twitter': () => import('./icons/it-twitter.js'),
170
+ 'it-unlocked': () => import('./icons/it-unlocked.js'),
171
+ 'it-upload': () => import('./icons/it-upload.js'),
172
+ 'it-user': () => import('./icons/it-user.js'),
173
+ 'it-video': () => import('./icons/it-video.js'),
174
+ 'it-vimeo-square': () => import('./icons/it-vimeo-square.js'),
175
+ 'it-vimeo': () => import('./icons/it-vimeo.js'),
176
+ 'it-warning-circle': () => import('./icons/it-warning-circle.js'),
177
+ 'it-warning': () => import('./icons/it-warning.js'),
178
+ 'it-whatsapp-square': () => import('./icons/it-whatsapp-square.js'),
179
+ 'it-whatsapp': () => import('./icons/it-whatsapp.js'),
180
+ 'it-wifi': () => import('./icons/it-wifi.js'),
181
+ 'it-youtube': () => import('./icons/it-youtube.js'),
182
+ 'it-zoom-in': () => import('./icons/it-zoom-in.js'),
183
+ 'it-zoom-out': () => import('./icons/it-zoom-out.js')
184
+ } as const;
185
+
186
+ export type AvailableIcons = keyof typeof registry;
187
+
188
+ /**
189
+ * Get a dynamic icon loader by name.
190
+ */
191
+ export const getIcon = (name: AvailableIcons): IconLoader | undefined =>
192
+ registry[name];
@@ -1 +1 @@
1
- {"version":3,"file":"it-icon.d.ts","sourceRoot":"","sources":["../../src/it-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAQ,cAAc,EAAgB,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtE,qBACa,MAAO,SAAQ,aAAa;IACvC,MAAM,CAAC,MAAM,+BAAU;IAEK,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,KAAK,CAAC,EAAE,UAAU,CAAY;IAEf,KAAK,SAAM;IAEzB,MAAM,UAAS;IAEhB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,UAAU,CAAC,CAAc;IAG1C,OAAO,CAAC,MAAM,CAAmB;IAEjC,OAAO,CAAC,OAAO,CAAC,CAAS;IAEV,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;IA8BzD,OAAO,CAAC,aAAa;YAUP,cAAc;IAa5B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IAYxB,MAAM;CAKP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"it-icon.d.ts","sourceRoot":"","sources":["../../src/it-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAQ,cAAc,EAAgB,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtE,qBACa,MAAO,SAAQ,aAAa;IACvC,MAAM,CAAC,MAAM,+BAAU;IAEoB,IAAI,CAAC,EAAE,KAAK,CAAC;IAE5B,IAAI,CAAC,EAAE,cAAc,CAAC;IAEP,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,KAAK,CAAC,EAAE,UAAU,CAAY;IAE9B,KAAK,SAAM;IAEV,MAAM,UAAS;IAEhB,GAAG,CAAC,EAAE,MAAM,CAAC;IAE/C,OAAO,CAAC,UAAU,CAAC,CAAc;IAG1C,OAAO,CAAC,MAAM,CAAmB;IAEjC,OAAO,CAAC,OAAO,CAAC,CAAS;IAEV,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;IA8BzD,OAAO,CAAC,aAAa;YAUP,cAAc;IAa5B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,gBAAgB;IAYxB,MAAM;CAKP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}