@illinois-toolkit/ilw-quote 1.0.0-alpha

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Web at Illinois
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # ilw-quote
2
+
3
+ Links: **[ilw-quote in Builder](https://builder3.toolkit.illinois.edu/component/ilw-quote/index.html)** |
4
+ [Illinois Web Theme](https://webtheme.illinois.edu/) |
5
+ [Toolkit Development](https://github.com/web-illinois/toolkit-management)
6
+
7
+ ## Overview
8
+
9
+ This component represents a quote or testimontial, with optional attribution of author and source. The quote or testimonial is intended to be intermixed with copy and the quote is highlighted and called out.
10
+
11
+ Quotation marks are added automatically before and after the quote.
12
+
13
+ This component should not contain a heading element.
14
+
15
+ The quote should be contained within a paragraph element with the slot attribute set to "content". The author should be contained within a paragraph element with the slot attribute set to "author". The source should be contained within a cite element with the slot attribute set to "source".
16
+
17
+ ## Code Examples
18
+
19
+ ```html
20
+ <ilw-quote>
21
+ <p slot="content">Either university presses will embrace new technology and offer scholarly content in new forms
22
+ to researchers and under new business models, or they will follow the music industry and spend
23
+ all of their resources on trying to protect their territory &mdash; unsuccessfully.</p>
24
+ <p slot="author">Laura Cerruti</p>
25
+ <cite slot="source">Director of Digital Content Development, University of California Press, profiled in Against the Grain</cite>
26
+ </ilw-quote>
27
+ ```
28
+
29
+ ## External References
30
+
31
+ https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote
32
+
33
+ https://theadminbar.com/accessibility-weekly/coding-blockquotes/
@@ -0,0 +1,11 @@
1
+ {
2
+ "title": "Quote",
3
+ "tag": "ilw-quote",
4
+ "github": "https://github.com/web-illinois/ilw-quote/",
5
+ "type": "web component",
6
+ "element-name": "ilw-quote",
7
+ "description": "Description for builder.",
8
+ "toolkit-version": "",
9
+ "production-version": "",
10
+ "development-version": "1.0.0-alpha"
11
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "title": "Quote",
3
+ "tag": "ilw-quote",
4
+ "github": "https://github.com/web-illinois/ilw-quote/",
5
+ "type": "web component",
6
+ "element-name": "ilw-quote",
7
+ "description": "Description for builder.",
8
+ "version": "1.0.0-alpha",
9
+ "date": "08/22/2024",
10
+ "css": "https://dev.toolkit.illinois.edu/ilw-quote/1.0.0-alpha/ilw-quote.css",
11
+ "js": "https://dev.toolkit.illinois.edu/ilw-quote/1.0.0-alpha/ilw-quote.js",
12
+ "production": false,
13
+ "notes": "",
14
+ "parent-style": "",
15
+ "samples": [
16
+ {
17
+ "name": "default",
18
+ "description": "Default information",
19
+ "text": "<p slot=\"content\">Either university presses will embrace new technology and offer scholarly content in new forms\n to researchers and under new business models, or they will follow the music industry and spend\n all of their resources on trying to protect their territory &mdash; unsuccessfully.</p>\n <p slot=\"author\">Laura Cerruti</p>\n <cite slot=\"source\">Director of Digital Content Development, University of California Press, profiled in Against the Grain</cite>"
20
+ },
21
+ {
22
+ "name": "no author or source",
23
+ "description": "No author or source",
24
+ "text": "<p slot=\"content\">Lastly, she pictured to herself how this same little sister of hers would, in the after-time, be herself a grown woman; and how she would keep, through all her riper years, the simple and loving heart of her childhood: and how she would gather about her other little children, and make their eyes bright and eager with many a strange tale, perhaps even with the dream of Wonderland of long ago: and how she would feel with all their simple sorrows, and find a pleasure in all their simple joys, remembering her own child-life, and the happy summer days.</p>"
25
+ },
26
+ {
27
+ "name": "no source",
28
+ "description": "No source",
29
+ "text": "<p slot=\"content\">There never is a happy ending because nothing ever ends.</p>\n <p slot=\"author\">Peter S. Beagle, The Last Unicorn</p>"
30
+ }
31
+ ],
32
+ "attributes-fixed": [],
33
+ "attributes-text": [],
34
+ "attributes": [
35
+ {
36
+ "name": "theme",
37
+ "description": "Color theme used",
38
+ "depreciated": false,
39
+ "values": [
40
+ "",
41
+ "blue",
42
+ "gray"
43
+ ]
44
+ }
45
+ ],
46
+ "classes-fixed": [],
47
+ "classes": [],
48
+ "css-variables": [
49
+ ]
50
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";/**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */const k=globalThis,j=k.ShadowRoot&&(k.ShadyCSS===void 0||k.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,I=Symbol(),D=new WeakMap;let tt=class{constructor(t,e,s){if(this._$cssResult$=!0,s!==I)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(j&&t===void 0){const s=e!==void 0&&e.length===1;s&&(t=D.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),s&&D.set(e,t))}return t}toString(){return this.cssText}};const nt=o=>new tt(typeof o=="string"?o:o+"",void 0,I),ht=(o,...t)=>{const e=o.length===1?o[0]:t.reduce((s,i,n)=>s+(r=>{if(r._$cssResult$===!0)return r.cssText;if(typeof r=="number")return r;throw Error("Value passed to 'css' function must be a 'css' function result: "+r+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+o[n+1],o[0]);return new tt(e,o,I)},lt=(o,t)=>{if(j)o.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const e of t){const s=document.createElement("style"),i=k.litNonce;i!==void 0&&s.setAttribute("nonce",i),s.textContent=e.cssText,o.appendChild(s)}},V=j?o=>o:o=>o instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return nt(e)})(o):o;/**
6
+ * @license
7
+ * Copyright 2017 Google LLC
8
+ * SPDX-License-Identifier: BSD-3-Clause
9
+ */const{is:at,defineProperty:ct,getOwnPropertyDescriptor:dt,getOwnPropertyNames:pt,getOwnPropertySymbols:ut,getPrototypeOf:$t}=Object,f=globalThis,W=f.trustedTypes,_t=W?W.emptyScript:"",R=f.reactiveElementPolyfillSupport,S=(o,t)=>o,L={toAttribute(o,t){switch(t){case Boolean:o=o?_t:null;break;case Object:case Array:o=o==null?o:JSON.stringify(o)}return o},fromAttribute(o,t){let e=o;switch(t){case Boolean:e=o!==null;break;case Number:e=o===null?null:Number(o);break;case Object:case Array:try{e=JSON.parse(o)}catch{e=null}}return e}},et=(o,t)=>!at(o,t),K={attribute:!0,type:String,converter:L,reflect:!1,hasChanged:et};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),f.litPropertyMetadata??(f.litPropertyMetadata=new WeakMap);class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=K){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const s=Symbol(),i=this.getPropertyDescriptor(t,s,e);i!==void 0&&ct(this.prototype,t,i)}}static getPropertyDescriptor(t,e,s){const{get:i,set:n}=dt(this.prototype,t)??{get(){return this[e]},set(r){this[e]=r}};return{get(){return i==null?void 0:i.call(this)},set(r){const a=i==null?void 0:i.call(this);n.call(this,r),this.requestUpdate(t,a,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??K}static _$Ei(){if(this.hasOwnProperty(S("elementProperties")))return;const t=$t(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(S("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S("properties"))){const e=this.properties,s=[...pt(e),...ut(e)];for(const i of s)this.createProperty(i,e[i])}const t=this[Symbol.metadata];if(t!==null){const e=litPropertyMetadata.get(t);if(e!==void 0)for(const[s,i]of e)this.elementProperties.set(s,i)}this._$Eh=new Map;for(const[e,s]of this.elementProperties){const i=this._$Eu(e,s);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const i of s)e.unshift(V(i))}else t!==void 0&&e.push(V(t));return e}static _$Eu(t,e){const s=e.attribute;return s===!1?void 0:typeof s=="string"?s:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((e=t.hostConnected)==null||e.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const s of e.keys())this.hasOwnProperty(s)&&(t.set(s,this[s]),delete this[s]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return lt(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(e=>{var s;return(s=e.hostConnected)==null?void 0:s.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var s;return(s=e.hostDisconnected)==null?void 0:s.call(e)})}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EC(t,e){var n;const s=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,s);if(i!==void 0&&s.reflect===!0){const r=(((n=s.converter)==null?void 0:n.toAttribute)!==void 0?s.converter:L).toAttribute(e,s.type);this._$Em=t,r==null?this.removeAttribute(i):this.setAttribute(i,r),this._$Em=null}}_$AK(t,e){var n;const s=this.constructor,i=s._$Eh.get(t);if(i!==void 0&&this._$Em!==i){const r=s.getPropertyOptions(i),a=typeof r.converter=="function"?{fromAttribute:r.converter}:((n=r.converter)==null?void 0:n.fromAttribute)!==void 0?r.converter:L;this._$Em=i,this[i]=a.fromAttribute(e,r.type),this._$Em=null}}requestUpdate(t,e,s){if(t!==void 0){if(s??(s=this.constructor.getPropertyOptions(t)),!(s.hasChanged??et)(this[t],e))return;this.P(t,e,s)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(t,e,s){this._$AL.has(t)||this._$AL.set(t,e),s.reflect===!0&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var s;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[n,r]of this._$Ep)this[n]=r;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[n,r]of i)r.wrapped!==!0||this._$AL.has(n)||this[n]===void 0||this.P(n,this[n],r)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(s=this._$EO)==null||s.forEach(i=>{var n;return(n=i.hostUpdate)==null?void 0:n.call(i)}),this.update(e)):this._$EU()}catch(i){throw t=!1,this._$EU(),i}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(s=>{var i;return(i=s.hostUpdated)==null?void 0:i.call(s)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EC(e,this[e]))),this._$EU()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:"open"},y[S("elementProperties")]=new Map,y[S("finalized")]=new Map,R==null||R({ReactiveElement:y}),(f.reactiveElementVersions??(f.reactiveElementVersions=[])).push("2.0.4");/**
10
+ * @license
11
+ * Copyright 2017 Google LLC
12
+ * SPDX-License-Identifier: BSD-3-Clause
13
+ */const w=globalThis,H=w.trustedTypes,Z=H?H.createPolicy("lit-html",{createHTML:o=>o}):void 0,st="$lit$",_=`lit$${Math.random().toFixed(9).slice(2)}$`,it="?"+_,ft=`<${it}>`,g=document,x=()=>g.createComment(""),C=o=>o===null||typeof o!="object"&&typeof o!="function",B=Array.isArray,mt=o=>B(o)||typeof(o==null?void 0:o[Symbol.iterator])=="function",M=`[
14
+ \f\r]`,b=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,F=/-->/g,J=/>/g,m=RegExp(`>|${M}(?:([^\\s"'>=/]+)(${M}*=${M}*(?:[^
15
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),Q=/'/g,G=/"/g,ot=/^(?:script|style|textarea|title)$/i,At=o=>(t,...e)=>({_$litType$:o,strings:t,values:e}),gt=At(1),v=Symbol.for("lit-noChange"),d=Symbol.for("lit-nothing"),Y=new WeakMap,A=g.createTreeWalker(g,129);function rt(o,t){if(!B(o)||!o.hasOwnProperty("raw"))throw Error("invalid template strings array");return Z!==void 0?Z.createHTML(t):t}const yt=(o,t)=>{const e=o.length-1,s=[];let i,n=t===2?"<svg>":t===3?"<math>":"",r=b;for(let a=0;a<e;a++){const h=o[a];let c,p,l=-1,u=0;for(;u<h.length&&(r.lastIndex=u,p=r.exec(h),p!==null);)u=r.lastIndex,r===b?p[1]==="!--"?r=F:p[1]!==void 0?r=J:p[2]!==void 0?(ot.test(p[2])&&(i=RegExp("</"+p[2],"g")),r=m):p[3]!==void 0&&(r=m):r===m?p[0]===">"?(r=i??b,l=-1):p[1]===void 0?l=-2:(l=r.lastIndex-p[2].length,c=p[1],r=p[3]===void 0?m:p[3]==='"'?G:Q):r===G||r===Q?r=m:r===F||r===J?r=b:(r=m,i=void 0);const $=r===m&&o[a+1].startsWith("/>")?" ":"";n+=r===b?h+ft:l>=0?(s.push(c),h.slice(0,l)+st+h.slice(l)+_+$):h+_+(l===-2?a:$)}return[rt(o,n+(o[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),s]};class U{constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let n=0,r=0;const a=t.length-1,h=this.parts,[c,p]=yt(t,e);if(this.el=U.createElement(c,s),A.currentNode=this.el.content,e===2||e===3){const l=this.el.content.firstChild;l.replaceWith(...l.childNodes)}for(;(i=A.nextNode())!==null&&h.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(const l of i.getAttributeNames())if(l.endsWith(st)){const u=p[r++],$=i.getAttribute(l).split(_),T=/([.?@])?(.*)/.exec(u);h.push({type:1,index:n,name:T[2],strings:$,ctor:T[1]==="."?Et:T[1]==="?"?bt:T[1]==="@"?St:N}),i.removeAttribute(l)}else l.startsWith(_)&&(h.push({type:6,index:n}),i.removeAttribute(l));if(ot.test(i.tagName)){const l=i.textContent.split(_),u=l.length-1;if(u>0){i.textContent=H?H.emptyScript:"";for(let $=0;$<u;$++)i.append(l[$],x()),A.nextNode(),h.push({type:2,index:++n});i.append(l[u],x())}}}else if(i.nodeType===8)if(i.data===it)h.push({type:2,index:n});else{let l=-1;for(;(l=i.data.indexOf(_,l+1))!==-1;)h.push({type:7,index:n}),l+=_.length-1}n++}}static createElement(t,e){const s=g.createElement("template");return s.innerHTML=t,s}}function E(o,t,e=o,s){var r,a;if(t===v)return t;let i=s!==void 0?(r=e.o)==null?void 0:r[s]:e.l;const n=C(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==n&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),n===void 0?i=void 0:(i=new n(o),i._$AT(o,e,s)),s!==void 0?(e.o??(e.o=[]))[s]=i:e.l=i),i!==void 0&&(t=E(o,i._$AS(o,t.values),i,s)),t}class vt{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:s}=this._$AD,i=((t==null?void 0:t.creationScope)??g).importNode(e,!0);A.currentNode=i;let n=A.nextNode(),r=0,a=0,h=s[0];for(;h!==void 0;){if(r===h.index){let c;h.type===2?c=new O(n,n.nextSibling,this,t):h.type===1?c=new h.ctor(n,h.name,h.strings,this,t):h.type===6&&(c=new wt(n,this,t)),this._$AV.push(c),h=s[++a]}r!==(h==null?void 0:h.index)&&(n=A.nextNode(),r++)}return A.currentNode=g,i}p(t){let e=0;for(const s of this._$AV)s!==void 0&&(s.strings!==void 0?(s._$AI(t,s,e),e+=s.strings.length-2):s._$AI(t[e])),e++}}class O{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this.v}constructor(t,e,s,i){this.type=2,this._$AH=d,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=s,this.options=i,this.v=(i==null?void 0:i.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=E(this,t,e),C(t)?t===d||t==null||t===""?(this._$AH!==d&&this._$AR(),this._$AH=d):t!==this._$AH&&t!==v&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):mt(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==d&&C(this._$AH)?this._$AA.nextSibling.data=t:this.T(g.createTextNode(t)),this._$AH=t}$(t){var n;const{values:e,_$litType$:s}=t,i=typeof s=="number"?this._$AC(t):(s.el===void 0&&(s.el=U.createElement(rt(s.h,s.h[0]),this.options)),s);if(((n=this._$AH)==null?void 0:n._$AD)===i)this._$AH.p(e);else{const r=new vt(i,this),a=r.u(this.options);r.p(e),this.T(a),this._$AH=r}}_$AC(t){let e=Y.get(t.strings);return e===void 0&&Y.set(t.strings,e=new U(t)),e}k(t){B(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,i=0;for(const n of t)i===e.length?e.push(s=new O(this.O(x()),this.O(x()),this,this.options)):s=e[i],s._$AI(n),i++;i<e.length&&(this._$AR(s&&s._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var s;for((s=this._$AP)==null?void 0:s.call(this,!1,!0,e);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this.v=t,(e=this._$AP)==null||e.call(this,t))}}class N{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,s,i,n){this.type=1,this._$AH=d,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=n,s.length>2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=d}_$AI(t,e=this,s,i){const n=this.strings;let r=!1;if(n===void 0)t=E(this,t,e,0),r=!C(t)||t!==this._$AH&&t!==v,r&&(this._$AH=t);else{const a=t;let h,c;for(t=n[0],h=0;h<n.length-1;h++)c=E(this,a[s+h],e,h),c===v&&(c=this._$AH[h]),r||(r=!C(c)||c!==this._$AH[h]),c===d?t=d:t!==d&&(t+=(c??"")+n[h+1]),this._$AH[h]=c}r&&!i&&this.j(t)}j(t){t===d?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class Et extends N{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===d?void 0:t}}class bt extends N{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==d)}}class St extends N{constructor(t,e,s,i,n){super(t,e,s,i,n),this.type=5}_$AI(t,e=this){if((t=E(this,t,e,0)??d)===v)return;const s=this._$AH,i=t===d&&s!==d||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,n=t!==d&&(s===d||i);i&&this.element.removeEventListener(this.name,this,s),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e;typeof this._$AH=="function"?this._$AH.call(((e=this.options)==null?void 0:e.host)??this.element,t):this._$AH.handleEvent(t)}}class wt{constructor(t,e,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){E(this,t)}}const q=w.litHtmlPolyfillSupport;q==null||q(U,O),(w.litHtmlVersions??(w.litHtmlVersions=[])).push("3.2.0");const Pt=(o,t,e)=>{const s=(e==null?void 0:e.renderBefore)??t;let i=s._$litPart$;if(i===void 0){const n=(e==null?void 0:e.renderBefore)??null;s._$litPart$=i=new O(t.insertBefore(x(),n),n,void 0,e??{})}return i._$AI(o),i};/**
16
+ * @license
17
+ * Copyright 2017 Google LLC
18
+ * SPDX-License-Identifier: BSD-3-Clause
19
+ */class P extends y{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){var e;const t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=Pt(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this.o)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this.o)==null||t.setConnected(!1)}render(){return v}}var X;P._$litElement$=!0,P.finalized=!0,(X=globalThis.litElementHydrateSupport)==null||X.call(globalThis,{LitElement:P});const z=globalThis.litElementPolyfillSupport;z==null||z({LitElement:P});(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.1.0");const xt=ht`
20
+ :host {
21
+ display: block;
22
+ background: var(--ilw-quote--background);
23
+ }
24
+
25
+ #quote {
26
+ margin: 0 auto;
27
+ max-width: var(--ilw-quote--max-width);
28
+ padding: 50px 80px;
29
+ }
30
+
31
+ #content {
32
+ color: var(--ilw-quote--color);
33
+ font: var(--ilw-quote--font);
34
+ text-align: center;
35
+ position: relative;
36
+ }
37
+
38
+ #content::before {
39
+ position: absolute;
40
+ content: var(--ilw-quote--mark-content-before);
41
+ font-style: normal;
42
+ color: var(--ilw-quote--mark-color);
43
+ font: var(--ilw-quote--mark-font);
44
+ top: var(--ilw-quote--mark-top);
45
+ left: var(--ilw-quote--mark-left);
46
+ }
47
+
48
+ #content::after {
49
+ position: absolute;
50
+ content: var(--ilw-quote--mark-content-after);
51
+ font-style: normal;
52
+ bottom: 0px;
53
+ color: var(--ilw-quote--mark-color);
54
+ font: var(--ilw-quote--mark-font);
55
+ right: var(--ilw-quote--mark-left);
56
+ }
57
+ `;class Ct extends P{static get properties(){return{theme:{type:String,attribute:!0}}}static get styles(){return xt}constructor(){super(),this.theme=""}render(){return gt`
58
+ <blockquote id="quote">
59
+ <div id="content"><slot name="content"></slot></div>
60
+ <div id="source"><slot name="author"></slot><slot name="source"></slot></div>
61
+ </blockquote>
62
+ `}}customElements.define("ilw-quote",Ct);
@@ -0,0 +1 @@
1
+ :root{--ilw-quote--background: white;--ilw-quote--color: var(--il-blue);--ilw-quote--author-color: var(--il-orange);--ilw-quote--source-color: var(--il-blue);--ilw-quote--mark-color: var(--il-orange);--ilw-quote--font: italic 400 2.25rem/3.1875rem var(--il-font-serif);--ilw-quote--author-font: 700 1.813em/1.207em var(--il-font-sans);--ilw-quote--source-font: 300 1.438em/1.25em var(--il-font-sans);--ilw-quote--mark-font: 700 3.472em/0 var(--il-font-serif);--ilw-quote--mark-top: 55px;--ilw-quote--mark-left: -90px;--ilw-quote--mark-content-before: "“";--ilw-quote--mark-content-after: "”";--ilw-quote--max-width: 620px}@media only screen and (max-width: 792px){:root{--ilw-quote--font: italic 400 1.813rem/2.375rem var(--il-font-serif);--ilw-quote--author-font: 700 1.5em/1.207em var(--il-font-sans);--ilw-quote--source-font: 300 1.25rem/1.625rem var(--il-font-sans);--ilw-quote--mark-font: 700 3.472em/0 var(--il-font-serif);--ilw-quote--mark-top: 45px;--ilw-quote--mark-left: -50px}}.ilw-quote--exclude-marks{--ilw-quote--mark-content-before: none;--ilw-quote--mark-content-after: none}ilw-quote *[slot=content]{font:var(--ilw-quote--font)}ilw-quote *[slot=author]{margin-top:1.625rem;text-align:center;color:var(--ilw-quote--author-color);font:var(--ilw-quote--author-font)}ilw-quote *[slot=source]{margin-top:1.275rem;text-align:center;color:var(--ilw-quote--source-color);font:var(--ilw-quote--source-font);display:block}ilw-quote[theme=blue]{--ilw-quote--background: var(--il-blue);--ilw-quote--color: white;--ilw-quote--author-color: var(--il-orange);--ilw-quote--source-color: white;--ilw-quote--mark-color: var(--il-orange)}ilw-quote[theme=gray]{--ilw-quote--background: var(--il-storm-lighter-4);--ilw-quote--author-color: var(--il-altgeld);--ilw-quote--mark-color: var(--il-altgeld)}
@@ -0,0 +1,608 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */
6
+ const k = globalThis, j = k.ShadowRoot && (k.ShadyCSS === void 0 || k.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, I = Symbol(), D = /* @__PURE__ */ new WeakMap();
7
+ let tt = class {
8
+ constructor(t, e, s) {
9
+ if (this._$cssResult$ = !0, s !== I) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
10
+ this.cssText = t, this.t = e;
11
+ }
12
+ get styleSheet() {
13
+ let t = this.o;
14
+ const e = this.t;
15
+ if (j && t === void 0) {
16
+ const s = e !== void 0 && e.length === 1;
17
+ s && (t = D.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && D.set(e, t));
18
+ }
19
+ return t;
20
+ }
21
+ toString() {
22
+ return this.cssText;
23
+ }
24
+ };
25
+ const nt = (o) => new tt(typeof o == "string" ? o : o + "", void 0, I), ht = (o, ...t) => {
26
+ const e = o.length === 1 ? o[0] : t.reduce((s, i, n) => s + ((r) => {
27
+ if (r._$cssResult$ === !0) return r.cssText;
28
+ if (typeof r == "number") return r;
29
+ throw Error("Value passed to 'css' function must be a 'css' function result: " + r + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
30
+ })(i) + o[n + 1], o[0]);
31
+ return new tt(e, o, I);
32
+ }, lt = (o, t) => {
33
+ if (j) o.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
34
+ else for (const e of t) {
35
+ const s = document.createElement("style"), i = k.litNonce;
36
+ i !== void 0 && s.setAttribute("nonce", i), s.textContent = e.cssText, o.appendChild(s);
37
+ }
38
+ }, V = j ? (o) => o : (o) => o instanceof CSSStyleSheet ? ((t) => {
39
+ let e = "";
40
+ for (const s of t.cssRules) e += s.cssText;
41
+ return nt(e);
42
+ })(o) : o;
43
+ /**
44
+ * @license
45
+ * Copyright 2017 Google LLC
46
+ * SPDX-License-Identifier: BSD-3-Clause
47
+ */
48
+ const { is: at, defineProperty: ct, getOwnPropertyDescriptor: dt, getOwnPropertyNames: pt, getOwnPropertySymbols: ut, getPrototypeOf: $t } = Object, f = globalThis, W = f.trustedTypes, _t = W ? W.emptyScript : "", R = f.reactiveElementPolyfillSupport, S = (o, t) => o, L = { toAttribute(o, t) {
49
+ switch (t) {
50
+ case Boolean:
51
+ o = o ? _t : null;
52
+ break;
53
+ case Object:
54
+ case Array:
55
+ o = o == null ? o : JSON.stringify(o);
56
+ }
57
+ return o;
58
+ }, fromAttribute(o, t) {
59
+ let e = o;
60
+ switch (t) {
61
+ case Boolean:
62
+ e = o !== null;
63
+ break;
64
+ case Number:
65
+ e = o === null ? null : Number(o);
66
+ break;
67
+ case Object:
68
+ case Array:
69
+ try {
70
+ e = JSON.parse(o);
71
+ } catch {
72
+ e = null;
73
+ }
74
+ }
75
+ return e;
76
+ } }, et = (o, t) => !at(o, t), K = { attribute: !0, type: String, converter: L, reflect: !1, hasChanged: et };
77
+ Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), f.litPropertyMetadata ?? (f.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
78
+ class y extends HTMLElement {
79
+ static addInitializer(t) {
80
+ this._$Ei(), (this.l ?? (this.l = [])).push(t);
81
+ }
82
+ static get observedAttributes() {
83
+ return this.finalize(), this._$Eh && [...this._$Eh.keys()];
84
+ }
85
+ static createProperty(t, e = K) {
86
+ if (e.state && (e.attribute = !1), this._$Ei(), this.elementProperties.set(t, e), !e.noAccessor) {
87
+ const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
88
+ i !== void 0 && ct(this.prototype, t, i);
89
+ }
90
+ }
91
+ static getPropertyDescriptor(t, e, s) {
92
+ const { get: i, set: n } = dt(this.prototype, t) ?? { get() {
93
+ return this[e];
94
+ }, set(r) {
95
+ this[e] = r;
96
+ } };
97
+ return { get() {
98
+ return i == null ? void 0 : i.call(this);
99
+ }, set(r) {
100
+ const a = i == null ? void 0 : i.call(this);
101
+ n.call(this, r), this.requestUpdate(t, a, s);
102
+ }, configurable: !0, enumerable: !0 };
103
+ }
104
+ static getPropertyOptions(t) {
105
+ return this.elementProperties.get(t) ?? K;
106
+ }
107
+ static _$Ei() {
108
+ if (this.hasOwnProperty(S("elementProperties"))) return;
109
+ const t = $t(this);
110
+ t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
111
+ }
112
+ static finalize() {
113
+ if (this.hasOwnProperty(S("finalized"))) return;
114
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(S("properties"))) {
115
+ const e = this.properties, s = [...pt(e), ...ut(e)];
116
+ for (const i of s) this.createProperty(i, e[i]);
117
+ }
118
+ const t = this[Symbol.metadata];
119
+ if (t !== null) {
120
+ const e = litPropertyMetadata.get(t);
121
+ if (e !== void 0) for (const [s, i] of e) this.elementProperties.set(s, i);
122
+ }
123
+ this._$Eh = /* @__PURE__ */ new Map();
124
+ for (const [e, s] of this.elementProperties) {
125
+ const i = this._$Eu(e, s);
126
+ i !== void 0 && this._$Eh.set(i, e);
127
+ }
128
+ this.elementStyles = this.finalizeStyles(this.styles);
129
+ }
130
+ static finalizeStyles(t) {
131
+ const e = [];
132
+ if (Array.isArray(t)) {
133
+ const s = new Set(t.flat(1 / 0).reverse());
134
+ for (const i of s) e.unshift(V(i));
135
+ } else t !== void 0 && e.push(V(t));
136
+ return e;
137
+ }
138
+ static _$Eu(t, e) {
139
+ const s = e.attribute;
140
+ return s === !1 ? void 0 : typeof s == "string" ? s : typeof t == "string" ? t.toLowerCase() : void 0;
141
+ }
142
+ constructor() {
143
+ super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
144
+ }
145
+ _$Ev() {
146
+ var t;
147
+ this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));
148
+ }
149
+ addController(t) {
150
+ var e;
151
+ (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));
152
+ }
153
+ removeController(t) {
154
+ var e;
155
+ (e = this._$EO) == null || e.delete(t);
156
+ }
157
+ _$E_() {
158
+ const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
159
+ for (const s of e.keys()) this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);
160
+ t.size > 0 && (this._$Ep = t);
161
+ }
162
+ createRenderRoot() {
163
+ const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
164
+ return lt(t, this.constructor.elementStyles), t;
165
+ }
166
+ connectedCallback() {
167
+ var t;
168
+ this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$EO) == null || t.forEach((e) => {
169
+ var s;
170
+ return (s = e.hostConnected) == null ? void 0 : s.call(e);
171
+ });
172
+ }
173
+ enableUpdating(t) {
174
+ }
175
+ disconnectedCallback() {
176
+ var t;
177
+ (t = this._$EO) == null || t.forEach((e) => {
178
+ var s;
179
+ return (s = e.hostDisconnected) == null ? void 0 : s.call(e);
180
+ });
181
+ }
182
+ attributeChangedCallback(t, e, s) {
183
+ this._$AK(t, s);
184
+ }
185
+ _$EC(t, e) {
186
+ var n;
187
+ const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);
188
+ if (i !== void 0 && s.reflect === !0) {
189
+ const r = (((n = s.converter) == null ? void 0 : n.toAttribute) !== void 0 ? s.converter : L).toAttribute(e, s.type);
190
+ this._$Em = t, r == null ? this.removeAttribute(i) : this.setAttribute(i, r), this._$Em = null;
191
+ }
192
+ }
193
+ _$AK(t, e) {
194
+ var n;
195
+ const s = this.constructor, i = s._$Eh.get(t);
196
+ if (i !== void 0 && this._$Em !== i) {
197
+ const r = s.getPropertyOptions(i), a = typeof r.converter == "function" ? { fromAttribute: r.converter } : ((n = r.converter) == null ? void 0 : n.fromAttribute) !== void 0 ? r.converter : L;
198
+ this._$Em = i, this[i] = a.fromAttribute(e, r.type), this._$Em = null;
199
+ }
200
+ }
201
+ requestUpdate(t, e, s) {
202
+ if (t !== void 0) {
203
+ if (s ?? (s = this.constructor.getPropertyOptions(t)), !(s.hasChanged ?? et)(this[t], e)) return;
204
+ this.P(t, e, s);
205
+ }
206
+ this.isUpdatePending === !1 && (this._$ES = this._$ET());
207
+ }
208
+ P(t, e, s) {
209
+ this._$AL.has(t) || this._$AL.set(t, e), s.reflect === !0 && this._$Em !== t && (this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Set())).add(t);
210
+ }
211
+ async _$ET() {
212
+ this.isUpdatePending = !0;
213
+ try {
214
+ await this._$ES;
215
+ } catch (e) {
216
+ Promise.reject(e);
217
+ }
218
+ const t = this.scheduleUpdate();
219
+ return t != null && await t, !this.isUpdatePending;
220
+ }
221
+ scheduleUpdate() {
222
+ return this.performUpdate();
223
+ }
224
+ performUpdate() {
225
+ var s;
226
+ if (!this.isUpdatePending) return;
227
+ if (!this.hasUpdated) {
228
+ if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
229
+ for (const [n, r] of this._$Ep) this[n] = r;
230
+ this._$Ep = void 0;
231
+ }
232
+ const i = this.constructor.elementProperties;
233
+ if (i.size > 0) for (const [n, r] of i) r.wrapped !== !0 || this._$AL.has(n) || this[n] === void 0 || this.P(n, this[n], r);
234
+ }
235
+ let t = !1;
236
+ const e = this._$AL;
237
+ try {
238
+ t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$EO) == null || s.forEach((i) => {
239
+ var n;
240
+ return (n = i.hostUpdate) == null ? void 0 : n.call(i);
241
+ }), this.update(e)) : this._$EU();
242
+ } catch (i) {
243
+ throw t = !1, this._$EU(), i;
244
+ }
245
+ t && this._$AE(e);
246
+ }
247
+ willUpdate(t) {
248
+ }
249
+ _$AE(t) {
250
+ var e;
251
+ (e = this._$EO) == null || e.forEach((s) => {
252
+ var i;
253
+ return (i = s.hostUpdated) == null ? void 0 : i.call(s);
254
+ }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
255
+ }
256
+ _$EU() {
257
+ this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
258
+ }
259
+ get updateComplete() {
260
+ return this.getUpdateComplete();
261
+ }
262
+ getUpdateComplete() {
263
+ return this._$ES;
264
+ }
265
+ shouldUpdate(t) {
266
+ return !0;
267
+ }
268
+ update(t) {
269
+ this._$Ej && (this._$Ej = this._$Ej.forEach((e) => this._$EC(e, this[e]))), this._$EU();
270
+ }
271
+ updated(t) {
272
+ }
273
+ firstUpdated(t) {
274
+ }
275
+ }
276
+ y.elementStyles = [], y.shadowRootOptions = { mode: "open" }, y[S("elementProperties")] = /* @__PURE__ */ new Map(), y[S("finalized")] = /* @__PURE__ */ new Map(), R == null || R({ ReactiveElement: y }), (f.reactiveElementVersions ?? (f.reactiveElementVersions = [])).push("2.0.4");
277
+ /**
278
+ * @license
279
+ * Copyright 2017 Google LLC
280
+ * SPDX-License-Identifier: BSD-3-Clause
281
+ */
282
+ const w = globalThis, H = w.trustedTypes, Z = H ? H.createPolicy("lit-html", { createHTML: (o) => o }) : void 0, st = "$lit$", _ = `lit$${Math.random().toFixed(9).slice(2)}$`, it = "?" + _, ft = `<${it}>`, g = document, x = () => g.createComment(""), C = (o) => o === null || typeof o != "object" && typeof o != "function", B = Array.isArray, mt = (o) => B(o) || typeof (o == null ? void 0 : o[Symbol.iterator]) == "function", M = `[
283
+ \f\r]`, b = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, F = /-->/g, J = />/g, m = RegExp(`>|${M}(?:([^\\s"'>=/]+)(${M}*=${M}*(?:[^
284
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), Q = /'/g, G = /"/g, ot = /^(?:script|style|textarea|title)$/i, At = (o) => (t, ...e) => ({ _$litType$: o, strings: t, values: e }), gt = At(1), v = Symbol.for("lit-noChange"), d = Symbol.for("lit-nothing"), Y = /* @__PURE__ */ new WeakMap(), A = g.createTreeWalker(g, 129);
285
+ function rt(o, t) {
286
+ if (!B(o) || !o.hasOwnProperty("raw")) throw Error("invalid template strings array");
287
+ return Z !== void 0 ? Z.createHTML(t) : t;
288
+ }
289
+ const yt = (o, t) => {
290
+ const e = o.length - 1, s = [];
291
+ let i, n = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", r = b;
292
+ for (let a = 0; a < e; a++) {
293
+ const h = o[a];
294
+ let c, p, l = -1, u = 0;
295
+ for (; u < h.length && (r.lastIndex = u, p = r.exec(h), p !== null); ) u = r.lastIndex, r === b ? p[1] === "!--" ? r = F : p[1] !== void 0 ? r = J : p[2] !== void 0 ? (ot.test(p[2]) && (i = RegExp("</" + p[2], "g")), r = m) : p[3] !== void 0 && (r = m) : r === m ? p[0] === ">" ? (r = i ?? b, l = -1) : p[1] === void 0 ? l = -2 : (l = r.lastIndex - p[2].length, c = p[1], r = p[3] === void 0 ? m : p[3] === '"' ? G : Q) : r === G || r === Q ? r = m : r === F || r === J ? r = b : (r = m, i = void 0);
296
+ const $ = r === m && o[a + 1].startsWith("/>") ? " " : "";
297
+ n += r === b ? h + ft : l >= 0 ? (s.push(c), h.slice(0, l) + st + h.slice(l) + _ + $) : h + _ + (l === -2 ? a : $);
298
+ }
299
+ return [rt(o, n + (o[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
300
+ };
301
+ class U {
302
+ constructor({ strings: t, _$litType$: e }, s) {
303
+ let i;
304
+ this.parts = [];
305
+ let n = 0, r = 0;
306
+ const a = t.length - 1, h = this.parts, [c, p] = yt(t, e);
307
+ if (this.el = U.createElement(c, s), A.currentNode = this.el.content, e === 2 || e === 3) {
308
+ const l = this.el.content.firstChild;
309
+ l.replaceWith(...l.childNodes);
310
+ }
311
+ for (; (i = A.nextNode()) !== null && h.length < a; ) {
312
+ if (i.nodeType === 1) {
313
+ if (i.hasAttributes()) for (const l of i.getAttributeNames()) if (l.endsWith(st)) {
314
+ const u = p[r++], $ = i.getAttribute(l).split(_), T = /([.?@])?(.*)/.exec(u);
315
+ h.push({ type: 1, index: n, name: T[2], strings: $, ctor: T[1] === "." ? Et : T[1] === "?" ? bt : T[1] === "@" ? St : N }), i.removeAttribute(l);
316
+ } else l.startsWith(_) && (h.push({ type: 6, index: n }), i.removeAttribute(l));
317
+ if (ot.test(i.tagName)) {
318
+ const l = i.textContent.split(_), u = l.length - 1;
319
+ if (u > 0) {
320
+ i.textContent = H ? H.emptyScript : "";
321
+ for (let $ = 0; $ < u; $++) i.append(l[$], x()), A.nextNode(), h.push({ type: 2, index: ++n });
322
+ i.append(l[u], x());
323
+ }
324
+ }
325
+ } else if (i.nodeType === 8) if (i.data === it) h.push({ type: 2, index: n });
326
+ else {
327
+ let l = -1;
328
+ for (; (l = i.data.indexOf(_, l + 1)) !== -1; ) h.push({ type: 7, index: n }), l += _.length - 1;
329
+ }
330
+ n++;
331
+ }
332
+ }
333
+ static createElement(t, e) {
334
+ const s = g.createElement("template");
335
+ return s.innerHTML = t, s;
336
+ }
337
+ }
338
+ function E(o, t, e = o, s) {
339
+ var r, a;
340
+ if (t === v) return t;
341
+ let i = s !== void 0 ? (r = e.o) == null ? void 0 : r[s] : e.l;
342
+ const n = C(t) ? void 0 : t._$litDirective$;
343
+ return (i == null ? void 0 : i.constructor) !== n && ((a = i == null ? void 0 : i._$AO) == null || a.call(i, !1), n === void 0 ? i = void 0 : (i = new n(o), i._$AT(o, e, s)), s !== void 0 ? (e.o ?? (e.o = []))[s] = i : e.l = i), i !== void 0 && (t = E(o, i._$AS(o, t.values), i, s)), t;
344
+ }
345
+ class vt {
346
+ constructor(t, e) {
347
+ this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
348
+ }
349
+ get parentNode() {
350
+ return this._$AM.parentNode;
351
+ }
352
+ get _$AU() {
353
+ return this._$AM._$AU;
354
+ }
355
+ u(t) {
356
+ const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? g).importNode(e, !0);
357
+ A.currentNode = i;
358
+ let n = A.nextNode(), r = 0, a = 0, h = s[0];
359
+ for (; h !== void 0; ) {
360
+ if (r === h.index) {
361
+ let c;
362
+ h.type === 2 ? c = new O(n, n.nextSibling, this, t) : h.type === 1 ? c = new h.ctor(n, h.name, h.strings, this, t) : h.type === 6 && (c = new wt(n, this, t)), this._$AV.push(c), h = s[++a];
363
+ }
364
+ r !== (h == null ? void 0 : h.index) && (n = A.nextNode(), r++);
365
+ }
366
+ return A.currentNode = g, i;
367
+ }
368
+ p(t) {
369
+ let e = 0;
370
+ for (const s of this._$AV) s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;
371
+ }
372
+ }
373
+ class O {
374
+ get _$AU() {
375
+ var t;
376
+ return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this.v;
377
+ }
378
+ constructor(t, e, s, i) {
379
+ this.type = 2, this._$AH = d, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = i, this.v = (i == null ? void 0 : i.isConnected) ?? !0;
380
+ }
381
+ get parentNode() {
382
+ let t = this._$AA.parentNode;
383
+ const e = this._$AM;
384
+ return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;
385
+ }
386
+ get startNode() {
387
+ return this._$AA;
388
+ }
389
+ get endNode() {
390
+ return this._$AB;
391
+ }
392
+ _$AI(t, e = this) {
393
+ t = E(this, t, e), C(t) ? t === d || t == null || t === "" ? (this._$AH !== d && this._$AR(), this._$AH = d) : t !== this._$AH && t !== v && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : mt(t) ? this.k(t) : this._(t);
394
+ }
395
+ O(t) {
396
+ return this._$AA.parentNode.insertBefore(t, this._$AB);
397
+ }
398
+ T(t) {
399
+ this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
400
+ }
401
+ _(t) {
402
+ this._$AH !== d && C(this._$AH) ? this._$AA.nextSibling.data = t : this.T(g.createTextNode(t)), this._$AH = t;
403
+ }
404
+ $(t) {
405
+ var n;
406
+ const { values: e, _$litType$: s } = t, i = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = U.createElement(rt(s.h, s.h[0]), this.options)), s);
407
+ if (((n = this._$AH) == null ? void 0 : n._$AD) === i) this._$AH.p(e);
408
+ else {
409
+ const r = new vt(i, this), a = r.u(this.options);
410
+ r.p(e), this.T(a), this._$AH = r;
411
+ }
412
+ }
413
+ _$AC(t) {
414
+ let e = Y.get(t.strings);
415
+ return e === void 0 && Y.set(t.strings, e = new U(t)), e;
416
+ }
417
+ k(t) {
418
+ B(this._$AH) || (this._$AH = [], this._$AR());
419
+ const e = this._$AH;
420
+ let s, i = 0;
421
+ for (const n of t) i === e.length ? e.push(s = new O(this.O(x()), this.O(x()), this, this.options)) : s = e[i], s._$AI(n), i++;
422
+ i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);
423
+ }
424
+ _$AR(t = this._$AA.nextSibling, e) {
425
+ var s;
426
+ for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t && t !== this._$AB; ) {
427
+ const i = t.nextSibling;
428
+ t.remove(), t = i;
429
+ }
430
+ }
431
+ setConnected(t) {
432
+ var e;
433
+ this._$AM === void 0 && (this.v = t, (e = this._$AP) == null || e.call(this, t));
434
+ }
435
+ }
436
+ class N {
437
+ get tagName() {
438
+ return this.element.tagName;
439
+ }
440
+ get _$AU() {
441
+ return this._$AM._$AU;
442
+ }
443
+ constructor(t, e, s, i, n) {
444
+ this.type = 1, this._$AH = d, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = n, s.length > 2 || s[0] !== "" || s[1] !== "" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = d;
445
+ }
446
+ _$AI(t, e = this, s, i) {
447
+ const n = this.strings;
448
+ let r = !1;
449
+ if (n === void 0) t = E(this, t, e, 0), r = !C(t) || t !== this._$AH && t !== v, r && (this._$AH = t);
450
+ else {
451
+ const a = t;
452
+ let h, c;
453
+ for (t = n[0], h = 0; h < n.length - 1; h++) c = E(this, a[s + h], e, h), c === v && (c = this._$AH[h]), r || (r = !C(c) || c !== this._$AH[h]), c === d ? t = d : t !== d && (t += (c ?? "") + n[h + 1]), this._$AH[h] = c;
454
+ }
455
+ r && !i && this.j(t);
456
+ }
457
+ j(t) {
458
+ t === d ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
459
+ }
460
+ }
461
+ class Et extends N {
462
+ constructor() {
463
+ super(...arguments), this.type = 3;
464
+ }
465
+ j(t) {
466
+ this.element[this.name] = t === d ? void 0 : t;
467
+ }
468
+ }
469
+ class bt extends N {
470
+ constructor() {
471
+ super(...arguments), this.type = 4;
472
+ }
473
+ j(t) {
474
+ this.element.toggleAttribute(this.name, !!t && t !== d);
475
+ }
476
+ }
477
+ class St extends N {
478
+ constructor(t, e, s, i, n) {
479
+ super(t, e, s, i, n), this.type = 5;
480
+ }
481
+ _$AI(t, e = this) {
482
+ if ((t = E(this, t, e, 0) ?? d) === v) return;
483
+ const s = this._$AH, i = t === d && s !== d || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, n = t !== d && (s === d || i);
484
+ i && this.element.removeEventListener(this.name, this, s), n && this.element.addEventListener(this.name, this, t), this._$AH = t;
485
+ }
486
+ handleEvent(t) {
487
+ var e;
488
+ typeof this._$AH == "function" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);
489
+ }
490
+ }
491
+ class wt {
492
+ constructor(t, e, s) {
493
+ this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
494
+ }
495
+ get _$AU() {
496
+ return this._$AM._$AU;
497
+ }
498
+ _$AI(t) {
499
+ E(this, t);
500
+ }
501
+ }
502
+ const q = w.litHtmlPolyfillSupport;
503
+ q == null || q(U, O), (w.litHtmlVersions ?? (w.litHtmlVersions = [])).push("3.2.0");
504
+ const Pt = (o, t, e) => {
505
+ const s = (e == null ? void 0 : e.renderBefore) ?? t;
506
+ let i = s._$litPart$;
507
+ if (i === void 0) {
508
+ const n = (e == null ? void 0 : e.renderBefore) ?? null;
509
+ s._$litPart$ = i = new O(t.insertBefore(x(), n), n, void 0, e ?? {});
510
+ }
511
+ return i._$AI(o), i;
512
+ };
513
+ /**
514
+ * @license
515
+ * Copyright 2017 Google LLC
516
+ * SPDX-License-Identifier: BSD-3-Clause
517
+ */
518
+ class P extends y {
519
+ constructor() {
520
+ super(...arguments), this.renderOptions = { host: this }, this.o = void 0;
521
+ }
522
+ createRenderRoot() {
523
+ var e;
524
+ const t = super.createRenderRoot();
525
+ return (e = this.renderOptions).renderBefore ?? (e.renderBefore = t.firstChild), t;
526
+ }
527
+ update(t) {
528
+ const e = this.render();
529
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this.o = Pt(e, this.renderRoot, this.renderOptions);
530
+ }
531
+ connectedCallback() {
532
+ var t;
533
+ super.connectedCallback(), (t = this.o) == null || t.setConnected(!0);
534
+ }
535
+ disconnectedCallback() {
536
+ var t;
537
+ super.disconnectedCallback(), (t = this.o) == null || t.setConnected(!1);
538
+ }
539
+ render() {
540
+ return v;
541
+ }
542
+ }
543
+ var X;
544
+ P._$litElement$ = !0, P.finalized = !0, (X = globalThis.litElementHydrateSupport) == null || X.call(globalThis, { LitElement: P });
545
+ const z = globalThis.litElementPolyfillSupport;
546
+ z == null || z({ LitElement: P });
547
+ (globalThis.litElementVersions ?? (globalThis.litElementVersions = [])).push("4.1.0");
548
+ const xt = ht`
549
+ :host {
550
+ display: block;
551
+ background: var(--ilw-quote--background);
552
+ }
553
+
554
+ #quote {
555
+ margin: 0 auto;
556
+ max-width: var(--ilw-quote--max-width);
557
+ padding: 50px 80px;
558
+ }
559
+
560
+ #content {
561
+ color: var(--ilw-quote--color);
562
+ font: var(--ilw-quote--font);
563
+ text-align: center;
564
+ position: relative;
565
+ }
566
+
567
+ #content::before {
568
+ position: absolute;
569
+ content: var(--ilw-quote--mark-content-before);
570
+ font-style: normal;
571
+ color: var(--ilw-quote--mark-color);
572
+ font: var(--ilw-quote--mark-font);
573
+ top: var(--ilw-quote--mark-top);
574
+ left: var(--ilw-quote--mark-left);
575
+ }
576
+
577
+ #content::after {
578
+ position: absolute;
579
+ content: var(--ilw-quote--mark-content-after);
580
+ font-style: normal;
581
+ bottom: 0px;
582
+ color: var(--ilw-quote--mark-color);
583
+ font: var(--ilw-quote--mark-font);
584
+ right: var(--ilw-quote--mark-left);
585
+ }
586
+ `;
587
+ class Ct extends P {
588
+ static get properties() {
589
+ return {
590
+ theme: { type: String, attribute: !0 }
591
+ };
592
+ }
593
+ static get styles() {
594
+ return xt;
595
+ }
596
+ constructor() {
597
+ super(), this.theme = "";
598
+ }
599
+ render() {
600
+ return gt`
601
+ <blockquote id="quote">
602
+ <div id="content"><slot name="content"></slot></div>
603
+ <div id="source"><slot name="author"></slot><slot name="source"></slot></div>
604
+ </blockquote>
605
+ `;
606
+ }
607
+ }
608
+ customElements.define("ilw-quote", Ct);
@@ -0,0 +1,62 @@
1
+ (function(m){typeof define=="function"&&define.amd?define(m):m()})(function(){"use strict";/**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */var nt;const m=globalThis,R=m.ShadowRoot&&(m.ShadyCSS===void 0||m.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,M=Symbol(),D=new WeakMap;let V=class{constructor(t,e,s){if(this._$cssResult$=!0,s!==M)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(R&&t===void 0){const s=e!==void 0&&e.length===1;s&&(t=D.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),s&&D.set(e,t))}return t}toString(){return this.cssText}};const rt=o=>new V(typeof o=="string"?o:o+"",void 0,M),ht=(o,...t)=>{const e=o.length===1?o[0]:t.reduce((s,i,r)=>s+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+o[r+1],o[0]);return new V(e,o,M)},lt=(o,t)=>{if(R)o.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const e of t){const s=document.createElement("style"),i=m.litNonce;i!==void 0&&s.setAttribute("nonce",i),s.textContent=e.cssText,o.appendChild(s)}},W=R?o=>o:o=>o instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return rt(e)})(o):o;/**
6
+ * @license
7
+ * Copyright 2017 Google LLC
8
+ * SPDX-License-Identifier: BSD-3-Clause
9
+ */const{is:at,defineProperty:ct,getOwnPropertyDescriptor:dt,getOwnPropertyNames:pt,getOwnPropertySymbols:ut,getPrototypeOf:$t}=Object,$=globalThis,K=$.trustedTypes,_t=K?K.emptyScript:"",q=$.reactiveElementPolyfillSupport,S=(o,t)=>o,z={toAttribute(o,t){switch(t){case Boolean:o=o?_t:null;break;case Object:case Array:o=o==null?o:JSON.stringify(o)}return o},fromAttribute(o,t){let e=o;switch(t){case Boolean:e=o!==null;break;case Number:e=o===null?null:Number(o);break;case Object:case Array:try{e=JSON.parse(o)}catch{e=null}}return e}},Z=(o,t)=>!at(o,t),F={attribute:!0,type:String,converter:z,reflect:!1,hasChanged:Z};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),$.litPropertyMetadata??($.litPropertyMetadata=new WeakMap);class v extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=F){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const s=Symbol(),i=this.getPropertyDescriptor(t,s,e);i!==void 0&&ct(this.prototype,t,i)}}static getPropertyDescriptor(t,e,s){const{get:i,set:r}=dt(this.prototype,t)??{get(){return this[e]},set(n){this[e]=n}};return{get(){return i==null?void 0:i.call(this)},set(n){const a=i==null?void 0:i.call(this);r.call(this,n),this.requestUpdate(t,a,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??F}static _$Ei(){if(this.hasOwnProperty(S("elementProperties")))return;const t=$t(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(S("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S("properties"))){const e=this.properties,s=[...pt(e),...ut(e)];for(const i of s)this.createProperty(i,e[i])}const t=this[Symbol.metadata];if(t!==null){const e=litPropertyMetadata.get(t);if(e!==void 0)for(const[s,i]of e)this.elementProperties.set(s,i)}this._$Eh=new Map;for(const[e,s]of this.elementProperties){const i=this._$Eu(e,s);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const i of s)e.unshift(W(i))}else t!==void 0&&e.push(W(t));return e}static _$Eu(t,e){const s=e.attribute;return s===!1?void 0:typeof s=="string"?s:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((e=t.hostConnected)==null||e.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const s of e.keys())this.hasOwnProperty(s)&&(t.set(s,this[s]),delete this[s]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return lt(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(e=>{var s;return(s=e.hostConnected)==null?void 0:s.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var s;return(s=e.hostDisconnected)==null?void 0:s.call(e)})}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EC(t,e){var r;const s=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,s);if(i!==void 0&&s.reflect===!0){const n=(((r=s.converter)==null?void 0:r.toAttribute)!==void 0?s.converter:z).toAttribute(e,s.type);this._$Em=t,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(t,e){var r;const s=this.constructor,i=s._$Eh.get(t);if(i!==void 0&&this._$Em!==i){const n=s.getPropertyOptions(i),a=typeof n.converter=="function"?{fromAttribute:n.converter}:((r=n.converter)==null?void 0:r.fromAttribute)!==void 0?n.converter:z;this._$Em=i,this[i]=a.fromAttribute(e,n.type),this._$Em=null}}requestUpdate(t,e,s){if(t!==void 0){if(s??(s=this.constructor.getPropertyOptions(t)),!(s.hasChanged??Z)(this[t],e))return;this.P(t,e,s)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(t,e,s){this._$AL.has(t)||this._$AL.set(t,e),s.reflect===!0&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var s;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[r,n]of this._$Ep)this[r]=n;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[r,n]of i)n.wrapped!==!0||this._$AL.has(r)||this[r]===void 0||this.P(r,this[r],n)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(s=this._$EO)==null||s.forEach(i=>{var r;return(r=i.hostUpdate)==null?void 0:r.call(i)}),this.update(e)):this._$EU()}catch(i){throw t=!1,this._$EU(),i}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(s=>{var i;return(i=s.hostUpdated)==null?void 0:i.call(s)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EC(e,this[e]))),this._$EU()}updated(t){}firstUpdated(t){}}v.elementStyles=[],v.shadowRootOptions={mode:"open"},v[S("elementProperties")]=new Map,v[S("finalized")]=new Map,q==null||q({ReactiveElement:v}),($.reactiveElementVersions??($.reactiveElementVersions=[])).push("2.0.4");/**
10
+ * @license
11
+ * Copyright 2017 Google LLC
12
+ * SPDX-License-Identifier: BSD-3-Clause
13
+ */const w=globalThis,k=w.trustedTypes,J=k?k.createPolicy("lit-html",{createHTML:o=>o}):void 0,Q="$lit$",_=`lit$${Math.random().toFixed(9).slice(2)}$`,G="?"+_,ft=`<${G}>`,A=document,P=()=>A.createComment(""),x=o=>o===null||typeof o!="object"&&typeof o!="function",L=Array.isArray,mt=o=>L(o)||typeof(o==null?void 0:o[Symbol.iterator])=="function",j=`[
14
+ \f\r]`,C=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Y=/-->/g,X=/>/g,g=RegExp(`>|${j}(?:([^\\s"'>=/]+)(${j}*=${j}*(?:[^
15
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),tt=/'/g,et=/"/g,st=/^(?:script|style|textarea|title)$/i,At=o=>(t,...e)=>({_$litType$:o,strings:t,values:e}),gt=At(1),E=Symbol.for("lit-noChange"),c=Symbol.for("lit-nothing"),it=new WeakMap,y=A.createTreeWalker(A,129);function ot(o,t){if(!L(o)||!o.hasOwnProperty("raw"))throw Error("invalid template strings array");return J!==void 0?J.createHTML(t):t}const yt=(o,t)=>{const e=o.length-1,s=[];let i,r=t===2?"<svg>":t===3?"<math>":"",n=C;for(let a=0;a<e;a++){const h=o[a];let d,p,l=-1,u=0;for(;u<h.length&&(n.lastIndex=u,p=n.exec(h),p!==null);)u=n.lastIndex,n===C?p[1]==="!--"?n=Y:p[1]!==void 0?n=X:p[2]!==void 0?(st.test(p[2])&&(i=RegExp("</"+p[2],"g")),n=g):p[3]!==void 0&&(n=g):n===g?p[0]===">"?(n=i??C,l=-1):p[1]===void 0?l=-2:(l=n.lastIndex-p[2].length,d=p[1],n=p[3]===void 0?g:p[3]==='"'?et:tt):n===et||n===tt?n=g:n===Y||n===X?n=C:(n=g,i=void 0);const f=n===g&&o[a+1].startsWith("/>")?" ":"";r+=n===C?h+ft:l>=0?(s.push(d),h.slice(0,l)+Q+h.slice(l)+_+f):h+_+(l===-2?a:f)}return[ot(o,r+(o[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),s]};class U{constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let r=0,n=0;const a=t.length-1,h=this.parts,[d,p]=yt(t,e);if(this.el=U.createElement(d,s),y.currentNode=this.el.content,e===2||e===3){const l=this.el.content.firstChild;l.replaceWith(...l.childNodes)}for(;(i=y.nextNode())!==null&&h.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(const l of i.getAttributeNames())if(l.endsWith(Q)){const u=p[n++],f=i.getAttribute(l).split(_),N=/([.?@])?(.*)/.exec(u);h.push({type:1,index:r,name:N[2],strings:f,ctor:N[1]==="."?Et:N[1]==="?"?bt:N[1]==="@"?St:H}),i.removeAttribute(l)}else l.startsWith(_)&&(h.push({type:6,index:r}),i.removeAttribute(l));if(st.test(i.tagName)){const l=i.textContent.split(_),u=l.length-1;if(u>0){i.textContent=k?k.emptyScript:"";for(let f=0;f<u;f++)i.append(l[f],P()),y.nextNode(),h.push({type:2,index:++r});i.append(l[u],P())}}}else if(i.nodeType===8)if(i.data===G)h.push({type:2,index:r});else{let l=-1;for(;(l=i.data.indexOf(_,l+1))!==-1;)h.push({type:7,index:r}),l+=_.length-1}r++}}static createElement(t,e){const s=A.createElement("template");return s.innerHTML=t,s}}function b(o,t,e=o,s){var n,a;if(t===E)return t;let i=s!==void 0?(n=e.o)==null?void 0:n[s]:e.l;const r=x(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==r&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),r===void 0?i=void 0:(i=new r(o),i._$AT(o,e,s)),s!==void 0?(e.o??(e.o=[]))[s]=i:e.l=i),i!==void 0&&(t=b(o,i._$AS(o,t.values),i,s)),t}class vt{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:s}=this._$AD,i=((t==null?void 0:t.creationScope)??A).importNode(e,!0);y.currentNode=i;let r=y.nextNode(),n=0,a=0,h=s[0];for(;h!==void 0;){if(n===h.index){let d;h.type===2?d=new O(r,r.nextSibling,this,t):h.type===1?d=new h.ctor(r,h.name,h.strings,this,t):h.type===6&&(d=new wt(r,this,t)),this._$AV.push(d),h=s[++a]}n!==(h==null?void 0:h.index)&&(r=y.nextNode(),n++)}return y.currentNode=A,i}p(t){let e=0;for(const s of this._$AV)s!==void 0&&(s.strings!==void 0?(s._$AI(t,s,e),e+=s.strings.length-2):s._$AI(t[e])),e++}}class O{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this.v}constructor(t,e,s,i){this.type=2,this._$AH=c,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=s,this.options=i,this.v=(i==null?void 0:i.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=b(this,t,e),x(t)?t===c||t==null||t===""?(this._$AH!==c&&this._$AR(),this._$AH=c):t!==this._$AH&&t!==E&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):mt(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==c&&x(this._$AH)?this._$AA.nextSibling.data=t:this.T(A.createTextNode(t)),this._$AH=t}$(t){var r;const{values:e,_$litType$:s}=t,i=typeof s=="number"?this._$AC(t):(s.el===void 0&&(s.el=U.createElement(ot(s.h,s.h[0]),this.options)),s);if(((r=this._$AH)==null?void 0:r._$AD)===i)this._$AH.p(e);else{const n=new vt(i,this),a=n.u(this.options);n.p(e),this.T(a),this._$AH=n}}_$AC(t){let e=it.get(t.strings);return e===void 0&&it.set(t.strings,e=new U(t)),e}k(t){L(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,i=0;for(const r of t)i===e.length?e.push(s=new O(this.O(P()),this.O(P()),this,this.options)):s=e[i],s._$AI(r),i++;i<e.length&&(this._$AR(s&&s._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var s;for((s=this._$AP)==null?void 0:s.call(this,!1,!0,e);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this.v=t,(e=this._$AP)==null||e.call(this,t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,s,i,r){this.type=1,this._$AH=c,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=r,s.length>2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=c}_$AI(t,e=this,s,i){const r=this.strings;let n=!1;if(r===void 0)t=b(this,t,e,0),n=!x(t)||t!==this._$AH&&t!==E,n&&(this._$AH=t);else{const a=t;let h,d;for(t=r[0],h=0;h<r.length-1;h++)d=b(this,a[s+h],e,h),d===E&&(d=this._$AH[h]),n||(n=!x(d)||d!==this._$AH[h]),d===c?t=c:t!==c&&(t+=(d??"")+r[h+1]),this._$AH[h]=d}n&&!i&&this.j(t)}j(t){t===c?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class Et extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===c?void 0:t}}class bt extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==c)}}class St extends H{constructor(t,e,s,i,r){super(t,e,s,i,r),this.type=5}_$AI(t,e=this){if((t=b(this,t,e,0)??c)===E)return;const s=this._$AH,i=t===c&&s!==c||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,r=t!==c&&(s===c||i);i&&this.element.removeEventListener(this.name,this,s),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e;typeof this._$AH=="function"?this._$AH.call(((e=this.options)==null?void 0:e.host)??this.element,t):this._$AH.handleEvent(t)}}class wt{constructor(t,e,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){b(this,t)}}const I=w.litHtmlPolyfillSupport;I==null||I(U,O),(w.litHtmlVersions??(w.litHtmlVersions=[])).push("3.2.0");const Pt=(o,t,e)=>{const s=(e==null?void 0:e.renderBefore)??t;let i=s._$litPart$;if(i===void 0){const r=(e==null?void 0:e.renderBefore)??null;s._$litPart$=i=new O(t.insertBefore(P(),r),r,void 0,e??{})}return i._$AI(o),i};/**
16
+ * @license
17
+ * Copyright 2017 Google LLC
18
+ * SPDX-License-Identifier: BSD-3-Clause
19
+ */class T extends v{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){var e;const t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=Pt(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this.o)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this.o)==null||t.setConnected(!1)}render(){return E}}T._$litElement$=!0,T.finalized=!0,(nt=globalThis.litElementHydrateSupport)==null||nt.call(globalThis,{LitElement:T});const B=globalThis.litElementPolyfillSupport;B==null||B({LitElement:T}),(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.1.0");const xt=ht`
20
+ :host {
21
+ display: block;
22
+ background: var(--ilw-quote--background);
23
+ }
24
+
25
+ #quote {
26
+ margin: 0 auto;
27
+ max-width: var(--ilw-quote--max-width);
28
+ padding: 50px 80px;
29
+ }
30
+
31
+ #content {
32
+ color: var(--ilw-quote--color);
33
+ font: var(--ilw-quote--font);
34
+ text-align: center;
35
+ position: relative;
36
+ }
37
+
38
+ #content::before {
39
+ position: absolute;
40
+ content: var(--ilw-quote--mark-content-before);
41
+ font-style: normal;
42
+ color: var(--ilw-quote--mark-color);
43
+ font: var(--ilw-quote--mark-font);
44
+ top: var(--ilw-quote--mark-top);
45
+ left: var(--ilw-quote--mark-left);
46
+ }
47
+
48
+ #content::after {
49
+ position: absolute;
50
+ content: var(--ilw-quote--mark-content-after);
51
+ font-style: normal;
52
+ bottom: 0px;
53
+ color: var(--ilw-quote--mark-color);
54
+ font: var(--ilw-quote--mark-font);
55
+ right: var(--ilw-quote--mark-left);
56
+ }
57
+ `;class Ct extends T{static get properties(){return{theme:{type:String,attribute:!0}}}static get styles(){return xt}constructor(){super(),this.theme=""}render(){return gt`
58
+ <blockquote id="quote">
59
+ <div id="content"><slot name="content"></slot></div>
60
+ <div id="source"><slot name="author"></slot><slot name="source"></slot></div>
61
+ </blockquote>
62
+ `}}customElements.define("ilw-quote",Ct)});
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@illinois-toolkit/ilw-quote",
3
+ "description": "This component represents a quote or testimontial, with optional attribution of author and source.",
4
+ "repository": "github:web-illinois/ilw-quote",
5
+ "private": false,
6
+ "license": "MIT",
7
+ "version": "1.0.0-alpha",
8
+ "type": "module",
9
+ "files": [
10
+ "src/**",
11
+ "dist/**",
12
+ "builder/**"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "import": "./src/ilw-quote.js",
17
+ "require": "./dist/ilw-quote.cjs",
18
+ "default": "./dist/ilw-quote.js"
19
+ }
20
+ },
21
+ "main":"./dist/ilw-quote.js",
22
+ "scripts": {
23
+ "dev": "vite",
24
+ "build": "vite build --config vite.build.config.js --emptyOutDir",
25
+ "preview": "vite preview",
26
+ "prepack": "npm run build"
27
+ },
28
+ "dependencies": {
29
+ "lit": "3.1.3"
30
+ },
31
+ "devDependencies": {
32
+ "vite": "^5.2.0"
33
+ }
34
+ }
@@ -0,0 +1,66 @@
1
+ :root {
2
+ --ilw-quote--background: white;
3
+ --ilw-quote--color: var(--il-blue);
4
+ --ilw-quote--author-color: var(--il-orange);
5
+ --ilw-quote--source-color: var(--il-blue);
6
+ --ilw-quote--mark-color: var(--il-orange);
7
+ --ilw-quote--font: italic 400 2.25rem/3.1875rem var(--il-font-serif);
8
+ --ilw-quote--author-font: 700 1.813em/1.207em var(--il-font-sans);
9
+ --ilw-quote--source-font: 300 1.438em/1.25em var(--il-font-sans);
10
+ --ilw-quote--mark-font: 700 3.472em/0 var(--il-font-serif);
11
+ --ilw-quote--mark-top: 55px;
12
+ --ilw-quote--mark-left: -90px;
13
+ --ilw-quote--mark-content-before: "“";
14
+ --ilw-quote--mark-content-after: "”";
15
+ --ilw-quote--max-width: 620px;
16
+ }
17
+
18
+ @media only screen and (max-width: 792px) {
19
+ :root {
20
+ --ilw-quote--font: italic 400 1.813rem/2.375rem var(--il-font-serif);
21
+ --ilw-quote--author-font: 700 1.5em/1.207em var(--il-font-sans);
22
+ --ilw-quote--source-font: 300 1.25rem/1.625rem var(--il-font-sans);
23
+ --ilw-quote--mark-font: 700 3.472em/0 var(--il-font-serif);
24
+ --ilw-quote--mark-top: 45px;
25
+ --ilw-quote--mark-left: -50px;
26
+ }
27
+ }
28
+
29
+ .ilw-quote--exclude-marks {
30
+ --ilw-quote--mark-content-before: none;
31
+ --ilw-quote--mark-content-after: none;
32
+ }
33
+
34
+ ilw-quote *[slot=content] {
35
+ font: var(--ilw-quote--font);
36
+ }
37
+
38
+ ilw-quote *[slot=author] {
39
+ margin-top: 1.625rem;
40
+ text-align: center;
41
+ color: var(--ilw-quote--author-color);
42
+ font: var(--ilw-quote--author-font);
43
+ }
44
+
45
+ ilw-quote *[slot=source] {
46
+ margin-top: 1.275rem;
47
+ text-align: center;
48
+ color: var(--ilw-quote--source-color);
49
+ font: var(--ilw-quote--source-font);
50
+ display: block;
51
+ }
52
+ ilw-quote {
53
+ &[theme="blue"] {
54
+ --ilw-quote--background: var(--il-blue);
55
+ --ilw-quote--color: white;
56
+ --ilw-quote--author-color: var(--il-orange);
57
+ --ilw-quote--source-color: white;
58
+ --ilw-quote--mark-color: var(--il-orange);
59
+ }
60
+
61
+ &[theme="gray"] {
62
+ --ilw-quote--background: var(--il-storm-lighter-4);
63
+ --ilw-quote--author-color: var(--il-altgeld);
64
+ --ilw-quote--mark-color: var(--il-altgeld);
65
+ }
66
+ }
@@ -0,0 +1,32 @@
1
+ import { LitElement, html } from 'lit';
2
+ import styles from './ilw-quote.styles';
3
+ import './ilw-quote.css';
4
+
5
+ class Quote extends LitElement {
6
+ static get properties() {
7
+ return {
8
+ theme: { type: String, attribute: true }
9
+ };
10
+ }
11
+
12
+
13
+ static get styles() {
14
+ return styles;
15
+ }
16
+
17
+ constructor() {
18
+ super();
19
+ this.theme = '';
20
+ }
21
+
22
+ render() {
23
+ return html`
24
+ <blockquote id="quote">
25
+ <div id="content"><slot name="content"></slot></div>
26
+ <div id="source"><slot name="author"></slot><slot name="source"></slot></div>
27
+ </blockquote>
28
+ `;
29
+ }
30
+ }
31
+
32
+ customElements.define('ilw-quote', Quote);
@@ -0,0 +1,41 @@
1
+ import { css } from 'lit';
2
+
3
+ export default css`
4
+ :host {
5
+ display: block;
6
+ background: var(--ilw-quote--background);
7
+ }
8
+
9
+ #quote {
10
+ margin: 0 auto;
11
+ max-width: var(--ilw-quote--max-width);
12
+ padding: 50px 80px;
13
+ }
14
+
15
+ #content {
16
+ color: var(--ilw-quote--color);
17
+ font: var(--ilw-quote--font);
18
+ text-align: center;
19
+ position: relative;
20
+ }
21
+
22
+ #content::before {
23
+ position: absolute;
24
+ content: var(--ilw-quote--mark-content-before);
25
+ font-style: normal;
26
+ color: var(--ilw-quote--mark-color);
27
+ font: var(--ilw-quote--mark-font);
28
+ top: var(--ilw-quote--mark-top);
29
+ left: var(--ilw-quote--mark-left);
30
+ }
31
+
32
+ #content::after {
33
+ position: absolute;
34
+ content: var(--ilw-quote--mark-content-after);
35
+ font-style: normal;
36
+ bottom: 0px;
37
+ color: var(--ilw-quote--mark-color);
38
+ font: var(--ilw-quote--mark-font);
39
+ right: var(--ilw-quote--mark-left);
40
+ }
41
+ `;