@mhmo91/schmancy 0.9.23 → 0.9.24
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/custom-elements.json +22 -0
- package/dist/agent/schmancy.agent.js +219 -64
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +44 -0
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/handover/agent-runtime-v2-loopback.md +5 -5
- package/dist/typography.cjs +3 -3
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +107 -10
- package/dist/typography.js.map +1 -1
- package/package.json +1 -1
- package/src/typography/typography.ts +94 -1
- package/types/src/typography/typography.d.ts +32 -0
package/custom-elements.json
CHANGED
|
@@ -10867,6 +10867,16 @@
|
|
|
10867
10867
|
"type": "'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'",
|
|
10868
10868
|
"default": "\"'body'\""
|
|
10869
10869
|
},
|
|
10870
|
+
{
|
|
10871
|
+
"name": "preset",
|
|
10872
|
+
"description": "Shorthand for picking a (type, token) pair in one go. When set, derives\n`type` and `token` automatically — saves the two-decisions-per-text-node\nfatigue that hits when a single page has 50+ typography nodes.",
|
|
10873
|
+
"type": "TypographyPreset"
|
|
10874
|
+
},
|
|
10875
|
+
{
|
|
10876
|
+
"name": "as",
|
|
10877
|
+
"description": "Render the slot wrapped in the requested semantic HTML element so screen\nreaders expose the right role / heading level. Without `as`, the slot\nsits directly in the shadow root and the host is a generic element.",
|
|
10878
|
+
"type": "TypographyTag"
|
|
10879
|
+
},
|
|
10870
10880
|
{
|
|
10871
10881
|
"name": "token",
|
|
10872
10882
|
"type": "'xs' | 'sm' | 'md' | 'lg' | 'xl' | ''",
|
|
@@ -10923,6 +10933,18 @@
|
|
|
10923
10933
|
"type": "'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'",
|
|
10924
10934
|
"default": "\"'body'\""
|
|
10925
10935
|
},
|
|
10936
|
+
{
|
|
10937
|
+
"name": "preset",
|
|
10938
|
+
"attribute": "preset",
|
|
10939
|
+
"description": "Shorthand for picking a (type, token) pair in one go. When set, derives\n`type` and `token` automatically — saves the two-decisions-per-text-node\nfatigue that hits when a single page has 50+ typography nodes.",
|
|
10940
|
+
"type": "TypographyPreset"
|
|
10941
|
+
},
|
|
10942
|
+
{
|
|
10943
|
+
"name": "as",
|
|
10944
|
+
"attribute": "as",
|
|
10945
|
+
"description": "Render the slot wrapped in the requested semantic HTML element so screen\nreaders expose the right role / heading level. Without `as`, the slot\nsits directly in the shadow root and the host is a generic element.",
|
|
10946
|
+
"type": "TypographyTag"
|
|
10947
|
+
},
|
|
10926
10948
|
{
|
|
10927
10949
|
"name": "token",
|
|
10928
10950
|
"attribute": "token",
|
|
@@ -29616,7 +29616,105 @@ N([I({ type: Number })], tp.prototype, "speed", void 0), N([fr({
|
|
|
29616
29616
|
} });
|
|
29617
29617
|
};
|
|
29618
29618
|
}({ flatten: !0 })], tp.prototype, "_getSlottedNodes", void 0), N([Br({ flatten: !0 })], tp.prototype, "_getSlottedElements", void 0), tp = N([P("schmancy-typewriter")], tp);
|
|
29619
|
-
var np =
|
|
29619
|
+
var np = Symbol.for(""), rp = (e) => {
|
|
29620
|
+
if (e?.r === np) return e?._$litStatic$;
|
|
29621
|
+
}, ip = (e, ...t) => ({
|
|
29622
|
+
_$litStatic$: t.reduce((t, n, r) => t + ((e) => {
|
|
29623
|
+
if (e._$litStatic$ !== void 0) return e._$litStatic$;
|
|
29624
|
+
throw Error(`Value passed to 'literal' function must be a 'literal' result: ${e}. Use 'unsafeStatic' to pass non-literal values, but\n take care to ensure page security.`);
|
|
29625
|
+
})(n) + e[r + 1], e[0]),
|
|
29626
|
+
r: np
|
|
29627
|
+
}), ap = /* @__PURE__ */ new Map(), op = ((e) => (t, ...n) => {
|
|
29628
|
+
let r = n.length, i, a, o = [], s = [], c, l = 0, u = !1;
|
|
29629
|
+
for (; l < r;) {
|
|
29630
|
+
for (c = t[l]; l < r && (a = n[l], i = rp(a)) !== void 0;) c += i + t[++l], u = !0;
|
|
29631
|
+
l !== r && s.push(a), o.push(c), l++;
|
|
29632
|
+
}
|
|
29633
|
+
if (l === r && o.push(t[r]), u) {
|
|
29634
|
+
let e = o.join("$$lit$$");
|
|
29635
|
+
(t = ap.get(e)) === void 0 && (o.raw = o, ap.set(e, t = o)), n = s;
|
|
29636
|
+
}
|
|
29637
|
+
return e(t, ...n);
|
|
29638
|
+
})(j), sp = {
|
|
29639
|
+
display: {
|
|
29640
|
+
type: "display",
|
|
29641
|
+
token: "lg"
|
|
29642
|
+
},
|
|
29643
|
+
"display-lg": {
|
|
29644
|
+
type: "display",
|
|
29645
|
+
token: "lg"
|
|
29646
|
+
},
|
|
29647
|
+
"display-md": {
|
|
29648
|
+
type: "display",
|
|
29649
|
+
token: "md"
|
|
29650
|
+
},
|
|
29651
|
+
"display-sm": {
|
|
29652
|
+
type: "display",
|
|
29653
|
+
token: "sm"
|
|
29654
|
+
},
|
|
29655
|
+
"heading-lg": {
|
|
29656
|
+
type: "headline",
|
|
29657
|
+
token: "lg"
|
|
29658
|
+
},
|
|
29659
|
+
"heading-md": {
|
|
29660
|
+
type: "headline",
|
|
29661
|
+
token: "md"
|
|
29662
|
+
},
|
|
29663
|
+
"heading-sm": {
|
|
29664
|
+
type: "headline",
|
|
29665
|
+
token: "sm"
|
|
29666
|
+
},
|
|
29667
|
+
"title-lg": {
|
|
29668
|
+
type: "title",
|
|
29669
|
+
token: "lg"
|
|
29670
|
+
},
|
|
29671
|
+
"title-md": {
|
|
29672
|
+
type: "title",
|
|
29673
|
+
token: "md"
|
|
29674
|
+
},
|
|
29675
|
+
"title-sm": {
|
|
29676
|
+
type: "title",
|
|
29677
|
+
token: "sm"
|
|
29678
|
+
},
|
|
29679
|
+
"body-lg": {
|
|
29680
|
+
type: "body",
|
|
29681
|
+
token: "lg"
|
|
29682
|
+
},
|
|
29683
|
+
"body-md": {
|
|
29684
|
+
type: "body",
|
|
29685
|
+
token: "md"
|
|
29686
|
+
},
|
|
29687
|
+
"body-sm": {
|
|
29688
|
+
type: "body",
|
|
29689
|
+
token: "sm"
|
|
29690
|
+
},
|
|
29691
|
+
"label-lg": {
|
|
29692
|
+
type: "label",
|
|
29693
|
+
token: "lg"
|
|
29694
|
+
},
|
|
29695
|
+
"label-md": {
|
|
29696
|
+
type: "label",
|
|
29697
|
+
token: "md"
|
|
29698
|
+
},
|
|
29699
|
+
"label-sm": {
|
|
29700
|
+
type: "label",
|
|
29701
|
+
token: "sm"
|
|
29702
|
+
},
|
|
29703
|
+
caption: {
|
|
29704
|
+
type: "label",
|
|
29705
|
+
token: "sm"
|
|
29706
|
+
}
|
|
29707
|
+
}, cp = {
|
|
29708
|
+
h1: ip`h1`,
|
|
29709
|
+
h2: ip`h2`,
|
|
29710
|
+
h3: ip`h3`,
|
|
29711
|
+
h4: ip`h4`,
|
|
29712
|
+
h5: ip`h5`,
|
|
29713
|
+
h6: ip`h6`,
|
|
29714
|
+
p: ip`p`,
|
|
29715
|
+
span: ip`span`,
|
|
29716
|
+
div: ip`div`
|
|
29717
|
+
}, lp = class extends z(F`
|
|
29620
29718
|
:host {
|
|
29621
29719
|
display: block;
|
|
29622
29720
|
font-family: inherit;
|
|
@@ -29902,6 +30000,12 @@ var np = class extends z(F`
|
|
|
29902
30000
|
delegatesFocus: !0
|
|
29903
30001
|
};
|
|
29904
30002
|
}
|
|
30003
|
+
willUpdate(e) {
|
|
30004
|
+
if (super.willUpdate?.(e), e.has("preset") && this.preset && sp[this.preset]) {
|
|
30005
|
+
let { type: e, token: t } = sp[this.preset];
|
|
30006
|
+
this.type = e, this.token = t;
|
|
30007
|
+
}
|
|
30008
|
+
}
|
|
29905
30009
|
selectAll() {
|
|
29906
30010
|
let e = this._editRef.value;
|
|
29907
30011
|
if (!e) return;
|
|
@@ -29936,33 +30040,44 @@ var np = class extends z(F`
|
|
|
29936
30040
|
}
|
|
29937
30041
|
}
|
|
29938
30042
|
render() {
|
|
29939
|
-
|
|
30043
|
+
if (this.editable) return j`<div
|
|
29940
30044
|
${W(this._editRef)}
|
|
29941
30045
|
class="edit"
|
|
29942
30046
|
contenteditable="true"
|
|
29943
30047
|
data-placeholder=${this.placeholder ?? ""}
|
|
29944
|
-
></div
|
|
30048
|
+
></div>`;
|
|
30049
|
+
if (this.as && cp[this.as]) {
|
|
30050
|
+
let e = cp[this.as];
|
|
30051
|
+
return op`<${e}><slot></slot></${e}>`;
|
|
30052
|
+
}
|
|
30053
|
+
return j`<slot></slot>`;
|
|
29945
30054
|
}
|
|
29946
30055
|
};
|
|
29947
30056
|
N([I({
|
|
29948
30057
|
type: String,
|
|
29949
30058
|
reflect: !0
|
|
29950
|
-
})],
|
|
30059
|
+
})], lp.prototype, "type", void 0), N([I({
|
|
29951
30060
|
type: String,
|
|
29952
30061
|
reflect: !0
|
|
29953
|
-
})],
|
|
30062
|
+
})], lp.prototype, "preset", void 0), N([I({
|
|
29954
30063
|
type: String,
|
|
29955
30064
|
reflect: !0
|
|
29956
|
-
})],
|
|
30065
|
+
})], lp.prototype, "as", void 0), N([I({
|
|
29957
30066
|
type: String,
|
|
29958
30067
|
reflect: !0
|
|
29959
|
-
})],
|
|
30068
|
+
})], lp.prototype, "token", void 0), N([I({
|
|
29960
30069
|
type: String,
|
|
29961
30070
|
reflect: !0
|
|
29962
|
-
})],
|
|
30071
|
+
})], lp.prototype, "align", void 0), N([I({
|
|
30072
|
+
type: String,
|
|
30073
|
+
reflect: !0
|
|
30074
|
+
})], lp.prototype, "weight", void 0), N([I({
|
|
30075
|
+
type: String,
|
|
30076
|
+
reflect: !0
|
|
30077
|
+
})], lp.prototype, "transform", void 0), N([I({ type: Number })], lp.prototype, "maxLines", void 0), N([I({
|
|
29963
30078
|
type: Boolean,
|
|
29964
30079
|
reflect: !0
|
|
29965
|
-
})],
|
|
30080
|
+
})], lp.prototype, "editable", void 0), N([I({ type: String })], lp.prototype, "value", void 0), N([I({ type: String })], lp.prototype, "placeholder", void 0), lp = N([P("schmancy-typography")], lp), new class {
|
|
29966
30081
|
constructor() {
|
|
29967
30082
|
this.systemLocale = typeof navigator < "u" && navigator.language ? navigator.language : "de-DE";
|
|
29968
30083
|
}
|
|
@@ -30216,7 +30331,7 @@ N([I({
|
|
|
30216
30331
|
return e.split("").map((e) => t[e] || e).join("");
|
|
30217
30332
|
}
|
|
30218
30333
|
}();
|
|
30219
|
-
var
|
|
30334
|
+
var up = class extends B() {
|
|
30220
30335
|
constructor(...e) {
|
|
30221
30336
|
super(...e), this.initials = "", this.src = "", this.icon = "", this.size = "md", this.color = "primary", this.shape = "circle", this.bordered = !1, this.status = "none";
|
|
30222
30337
|
}
|
|
@@ -30295,8 +30410,8 @@ var rp = class extends B() {
|
|
|
30295
30410
|
`;
|
|
30296
30411
|
}
|
|
30297
30412
|
};
|
|
30298
|
-
N([I({ type: String })],
|
|
30299
|
-
var
|
|
30413
|
+
N([I({ type: String })], up.prototype, "initials", void 0), N([I({ type: String })], up.prototype, "src", void 0), N([I({ type: String })], up.prototype, "icon", void 0), N([I({ type: String })], up.prototype, "size", void 0), N([I({ type: String })], up.prototype, "color", void 0), N([I({ type: String })], up.prototype, "shape", void 0), N([I({ type: Boolean })], up.prototype, "bordered", void 0), N([I({ type: String })], up.prototype, "status", void 0), up = N([P("schmancy-avatar")], up);
|
|
30414
|
+
var dp = class extends z(F`
|
|
30300
30415
|
:host {
|
|
30301
30416
|
display: block;
|
|
30302
30417
|
}
|
|
@@ -30339,8 +30454,8 @@ var ip = class extends z(F`
|
|
|
30339
30454
|
});
|
|
30340
30455
|
}
|
|
30341
30456
|
};
|
|
30342
|
-
N([I({ type: String })],
|
|
30343
|
-
var
|
|
30457
|
+
N([I({ type: String })], dp.prototype, "separator", void 0), dp = N([P("schmancy-breadcrumb")], dp);
|
|
30458
|
+
var fp = class extends z(F`
|
|
30344
30459
|
:host {
|
|
30345
30460
|
display: inline-block;
|
|
30346
30461
|
}
|
|
@@ -30359,11 +30474,11 @@ var ap = class extends z(F`
|
|
|
30359
30474
|
return this.href && !this.current ? j`<a href=${this.href}><slot></slot></a>` : j`<span aria-current=${this.current ? "page" : "false"}><slot></slot></span>`;
|
|
30360
30475
|
}
|
|
30361
30476
|
};
|
|
30362
|
-
N([I({ type: String })],
|
|
30477
|
+
N([I({ type: String })], fp.prototype, "href", void 0), N([I({
|
|
30363
30478
|
type: Boolean,
|
|
30364
30479
|
reflect: !0
|
|
30365
|
-
})],
|
|
30366
|
-
var
|
|
30480
|
+
})], fp.prototype, "current", void 0), fp = N([P("schmancy-breadcrumb-item")], fp);
|
|
30481
|
+
var pp = class extends z(F`
|
|
30367
30482
|
:host {
|
|
30368
30483
|
display: inline-block;
|
|
30369
30484
|
vertical-align: middle;
|
|
@@ -30401,8 +30516,8 @@ var op = class extends z(F`
|
|
|
30401
30516
|
N([I({
|
|
30402
30517
|
type: String,
|
|
30403
30518
|
reflect: !0
|
|
30404
|
-
})],
|
|
30405
|
-
var
|
|
30519
|
+
})], pp.prototype, "size", void 0), pp = N([P("schmancy-kbd")], pp);
|
|
30520
|
+
var mp = class extends z(F`
|
|
30406
30521
|
:host {
|
|
30407
30522
|
display: block;
|
|
30408
30523
|
width: var(--_sw, 100%);
|
|
@@ -30453,8 +30568,8 @@ var sp = class extends z(F`
|
|
|
30453
30568
|
N([I({
|
|
30454
30569
|
type: String,
|
|
30455
30570
|
reflect: !0
|
|
30456
|
-
})],
|
|
30457
|
-
var
|
|
30571
|
+
})], mp.prototype, "shape", void 0), N([I({ type: String })], mp.prototype, "width", void 0), N([I({ type: String })], mp.prototype, "height", void 0), N([I({ type: String })], mp.prototype, "radius", void 0), mp = N([P("schmancy-skeleton")], mp);
|
|
30572
|
+
var hp = class extends B(F`
|
|
30458
30573
|
:host {
|
|
30459
30574
|
display: block;
|
|
30460
30575
|
position: relative;
|
|
@@ -30526,11 +30641,11 @@ var cp = class extends B(F`
|
|
|
30526
30641
|
N([I({
|
|
30527
30642
|
type: Number,
|
|
30528
30643
|
attribute: "min-duration"
|
|
30529
|
-
})],
|
|
30644
|
+
})], hp.prototype, "minDuration", void 0), N([I({ type: Boolean })], hp.prototype, "auto", void 0), N([I({
|
|
30530
30645
|
type: Boolean,
|
|
30531
30646
|
attribute: "initially-hidden"
|
|
30532
|
-
})],
|
|
30533
|
-
var
|
|
30647
|
+
})], hp.prototype, "initiallyHidden", void 0), N([L()], hp.prototype, "_visible", void 0), hp = N([P("schmancy-splash-screen")], hp);
|
|
30648
|
+
var gp = class extends z(F`
|
|
30534
30649
|
:host {
|
|
30535
30650
|
display: inline-block;
|
|
30536
30651
|
}
|
|
@@ -30649,14 +30764,14 @@ var lp = class extends z(F`
|
|
|
30649
30764
|
N([I({
|
|
30650
30765
|
type: Boolean,
|
|
30651
30766
|
reflect: !0
|
|
30652
|
-
})],
|
|
30767
|
+
})], gp.prototype, "checked", void 0), N([I({
|
|
30653
30768
|
type: Boolean,
|
|
30654
30769
|
reflect: !0
|
|
30655
|
-
})],
|
|
30770
|
+
})], gp.prototype, "disabled", void 0), N([I({
|
|
30656
30771
|
type: Boolean,
|
|
30657
30772
|
reflect: !0
|
|
30658
|
-
})],
|
|
30659
|
-
var
|
|
30773
|
+
})], gp.prototype, "required", void 0), N([I({ type: String })], gp.prototype, "name", void 0), N([I({ type: String })], gp.prototype, "value", void 0), N([I({ type: String })], gp.prototype, "label", void 0), gp = N([P("schmancy-switch")], gp);
|
|
30774
|
+
var _p = class extends z(F`
|
|
30660
30775
|
:host {
|
|
30661
30776
|
position: absolute;
|
|
30662
30777
|
width: 1px;
|
|
@@ -30673,8 +30788,8 @@ var up = class extends z(F`
|
|
|
30673
30788
|
return j`<slot></slot>`;
|
|
30674
30789
|
}
|
|
30675
30790
|
};
|
|
30676
|
-
|
|
30677
|
-
var
|
|
30791
|
+
_p = N([P("schmancy-visually-hidden")], _p);
|
|
30792
|
+
var vp = {
|
|
30678
30793
|
schemaVersion: "1.0.0",
|
|
30679
30794
|
readme: "# Schmancy\n\nA Web Component UI library built on Lit, RxJS, and Tailwind CSS. Surfaces are glass. Depth is light. Interactions are physics.\n\n## Agent runtime\n\nFor sandboxed-iframe agents (Claude Design, Claude Artifacts, any LLM that can\nonly write HTML), schmancy ships a single-URL runtime at `@mhmo91/schmancy/agent`.\nDrop one `<script type=\"module\">` tag and every `<schmancy-*>` element is\nregistered. No bundler, no bare specifiers, no npm install.\n\n```html\n<script type=\"module\">\n import { $dialog, theme } from 'https://esm.sh/@mhmo91/schmancy/agent';\n<\/script>\n<schmancy-theme root scheme=\"dark\">\n <schmancy-surface type=\"solid\" fill=\"all\">\n <schmancy-button>Hi</schmancy-button>\n <schmancy-skill></schmancy-skill>\n </schmancy-surface>\n</schmancy-theme>\n```\n\nThe `<schmancy-skill>` tag installs `window.schmancy` for runtime discovery:\n\n- `window.schmancy.help()` — full manifest (CEM v1 shape).\n- `window.schmancy.help('schmancy-button')` — one tag's attributes, events, slots, CSS parts.\n- `window.schmancy.tokens()` — build-time-extracted list of `--schmancy-*` theme tokens.\n- `window.schmancy.manifestUrl` — Blob URL; `fetch()` it for the same data.\n- `window.schmancy.a11yAudit()` — walks the live DOM and reports ARIA / shadow-root / form-association status per instance.\n- `window.schmancy.platformPrimitive('schmancy-dialog')` — map to the native element a component wraps (present when the component's JSDoc has `@platform`).\n- `window.schmancy.capabilities()` — runtime feature probe (`popover`, `declarativeShadowDom`, `scopedRegistries`, `trustedTypes`, `cssRegisteredProperties`, `elementInternalsAria`, `formAssociated`, `adoptedStyleSheets`). Agents use this to adapt to the sandbox they're in rather than the one they expect.\n\nEvery enum-typed attribute carries a `values` array — e.g. `schmancy-button`'s `variant` ships `[\"elevated\", \"filled\", \"filled tonal\", \"tonal\", \"outlined\", \"text\"]` so agents never have to parse `\"'filled' | 'tonal' | ...\"` strings.\n\nThe manifest is also emitted as a sibling file at `@mhmo91/schmancy/agent/manifest`\nfor tooling that prefers reading JSON from disk.\n\n## Install\n\n```bash\nnpm install @mhmo91/schmancy\n```\n\n```typescript\nimport '@mhmo91/schmancy'\nimport { magnetic, cursorGlow, gravity } from '@mhmo91/schmancy/directives'\n```\n\n## Use with Claude Code\n\nSchmancy ships a Claude Code plugin. In any Claude Code session, run:\n\n```\n/plugin install https://github.com/samwaai/schmancy\n```\n\nClaude now knows every Schmancy component, foundation pattern, and convention in your project. The skill activates automatically when you work on schmancy code — no CLAUDE.md edits, no symlinks.\n\n## Quick Start\n\n```html\n<schmancy-theme root scheme=\"dark\">\n <schmancy-surface type=\"solid\" fill=\"all\">\n <schmancy-area name=\"root\" .default=${lazy(() => import('./home.page'))}>\n <schmancy-route when=\"home-page\" .component=${lazy(() => import('./home.page'))} />\n </schmancy-area>\n </schmancy-surface>\n</schmancy-theme>\n```\n\n## Design: Luminous Glass\n\n| Surface | Opacity | Blur | Purpose |\n|---------|---------|------|---------|\n| `solid` | 92% | — | Dense glass, high readability |\n| `subtle` | 78% | 8px | Frosted panel (default) |\n| `glass` | 55% | 16px | Overlays, dialogs, dropdowns |\n| `luminous` | 42% | 20px | Hero panels with glow halo |\n\n## Docs\n\nSchmancy is organized in four layers:\n\n- **Foundations** — [Area](./skills/schmancy/area.md) · [Store](./skills/schmancy/store.md) · [Mixins ($LitElement)](./skills/schmancy/mixins.md) · [Theme](./skills/schmancy/theme.md) · [Directives](./skills/schmancy/directives.md)\n- **Atoms** — [Typography](./skills/schmancy/typography.md) · [Icons](./skills/schmancy/icons.md) · [Button](./skills/schmancy/button.md) · [Surface](./skills/schmancy/surface.md) · [Divider](./skills/schmancy/divider.md) · [Avatar](./skills/schmancy/avatar.md)\n- **Composites (by job)** — Forms, Navigation, Overlays, Interaction, Feedback, Display\n- **Utilities** — [Animation](./skills/schmancy/animation.md) · [Audio](./skills/schmancy/audio.md) · [Discovery](./skills/schmancy/discovery.md) · [RxJS Utils](./skills/schmancy/rxjs-utils.md) · [Utils](./skills/schmancy/utils.md)\n\n**Full component index:** [skills/schmancy/INDEX.md](./skills/schmancy/INDEX.md) — the single-file map with every tag, service, and convention. Written primarily for AI agents; humans welcome.\n\n## Tech Stack\n\n[Lit](https://lit.dev) · [RxJS](https://rxjs.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Blackbird](./src/utils/animation.ts)\n\n## License\n\nApache-2.0\n",
|
|
30680
30795
|
modules: [
|
|
@@ -35836,6 +35951,46 @@ var dp = {
|
|
|
35836
35951
|
],
|
|
35837
35952
|
default: "'body'"
|
|
35838
35953
|
},
|
|
35954
|
+
{
|
|
35955
|
+
name: "preset",
|
|
35956
|
+
type: { text: "TypographyPreset" },
|
|
35957
|
+
values: [
|
|
35958
|
+
"display",
|
|
35959
|
+
"display-lg",
|
|
35960
|
+
"display-md",
|
|
35961
|
+
"display-sm",
|
|
35962
|
+
"heading-lg",
|
|
35963
|
+
"heading-md",
|
|
35964
|
+
"heading-sm",
|
|
35965
|
+
"title-lg",
|
|
35966
|
+
"title-md",
|
|
35967
|
+
"title-sm",
|
|
35968
|
+
"body-lg",
|
|
35969
|
+
"body-md",
|
|
35970
|
+
"body-sm",
|
|
35971
|
+
"label-lg",
|
|
35972
|
+
"label-md",
|
|
35973
|
+
"label-sm",
|
|
35974
|
+
"caption"
|
|
35975
|
+
],
|
|
35976
|
+
description: "Shorthand for picking a (type, token) pair in one go. When set, derives `type` and `token` automatically — saves the two-decisions-per-text-node fatigue that hits when a single page has 50+ typography nodes."
|
|
35977
|
+
},
|
|
35978
|
+
{
|
|
35979
|
+
name: "as",
|
|
35980
|
+
type: { text: "TypographyTag" },
|
|
35981
|
+
values: [
|
|
35982
|
+
"h1",
|
|
35983
|
+
"h2",
|
|
35984
|
+
"h3",
|
|
35985
|
+
"h4",
|
|
35986
|
+
"h5",
|
|
35987
|
+
"h6",
|
|
35988
|
+
"p",
|
|
35989
|
+
"span",
|
|
35990
|
+
"div"
|
|
35991
|
+
],
|
|
35992
|
+
description: "Render the slot wrapped in the requested semantic HTML element so screen readers expose the right role / heading level. Without `as`, the slot sits directly in the shadow root and the host is a generic element."
|
|
35993
|
+
},
|
|
35839
35994
|
{
|
|
35840
35995
|
name: "token",
|
|
35841
35996
|
type: { text: "\"\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"" },
|
|
@@ -36473,43 +36628,43 @@ var dp = {
|
|
|
36473
36628
|
"Prefer `fromEvent(target, type).pipe(takeUntil(this.disconnecting))` over raw `addEventListener` inside components."
|
|
36474
36629
|
]
|
|
36475
36630
|
};
|
|
36476
|
-
function
|
|
36631
|
+
function yp() {
|
|
36477
36632
|
let e = [];
|
|
36478
|
-
for (let t of
|
|
36633
|
+
for (let t of vp.modules ?? []) {
|
|
36479
36634
|
let n = t.declarations ?? [];
|
|
36480
36635
|
for (let t of n) e.push(t);
|
|
36481
36636
|
}
|
|
36482
36637
|
return e;
|
|
36483
36638
|
}
|
|
36484
|
-
function
|
|
36485
|
-
return
|
|
36639
|
+
function bp() {
|
|
36640
|
+
return yp().filter((e) => e.kind === "class" && typeof e.tagName == "string");
|
|
36486
36641
|
}
|
|
36487
|
-
function
|
|
36488
|
-
return
|
|
36642
|
+
function xp() {
|
|
36643
|
+
return yp().filter((e) => e.kind === "variable" && !0 === e.service);
|
|
36489
36644
|
}
|
|
36490
|
-
function
|
|
36491
|
-
return e ?
|
|
36492
|
-
elements:
|
|
36645
|
+
function Sp(e) {
|
|
36646
|
+
return e ? bp().find((t) => t.tagName === e) || xp().find((t) => t.name === e) || null : {
|
|
36647
|
+
elements: bp().map((e) => ({
|
|
36493
36648
|
tag: e.tagName,
|
|
36494
36649
|
summary: e.summary ?? e.description
|
|
36495
36650
|
})),
|
|
36496
|
-
services:
|
|
36651
|
+
services: xp().map((e) => ({
|
|
36497
36652
|
name: e.name,
|
|
36498
36653
|
summary: e.summary ?? e.description
|
|
36499
36654
|
}))
|
|
36500
36655
|
};
|
|
36501
36656
|
}
|
|
36502
|
-
function
|
|
36503
|
-
return
|
|
36657
|
+
function Cp() {
|
|
36658
|
+
return vp.tokens ?? [];
|
|
36504
36659
|
}
|
|
36505
|
-
function
|
|
36506
|
-
return
|
|
36660
|
+
function wp(e) {
|
|
36661
|
+
return bp().find((t) => t.tagName === e)?.platformPrimitive ?? null;
|
|
36507
36662
|
}
|
|
36508
|
-
function
|
|
36509
|
-
return
|
|
36663
|
+
function Tp() {
|
|
36664
|
+
return bp().map((e) => e.tagName).filter((e) => customElements.get(e) !== void 0);
|
|
36510
36665
|
}
|
|
36511
|
-
function
|
|
36512
|
-
let e = new Set(
|
|
36666
|
+
function Ep() {
|
|
36667
|
+
let e = new Set(bp().map((e) => e.tagName)), t = [], n = document.querySelectorAll("*");
|
|
36513
36668
|
for (let r of Array.from(n)) {
|
|
36514
36669
|
let n = r.tagName.toLowerCase();
|
|
36515
36670
|
if (!e.has(n)) continue;
|
|
@@ -36524,7 +36679,7 @@ function yp() {
|
|
|
36524
36679
|
}
|
|
36525
36680
|
return t;
|
|
36526
36681
|
}
|
|
36527
|
-
function
|
|
36682
|
+
function Dp() {
|
|
36528
36683
|
let e = typeof HTMLTemplateElement < "u" ? HTMLTemplateElement.prototype : null, t = typeof ElementInternals < "u" ? ElementInternals.prototype : null;
|
|
36529
36684
|
return {
|
|
36530
36685
|
popover: typeof HTMLElement < "u" && "popover" in HTMLElement.prototype,
|
|
@@ -36543,29 +36698,29 @@ function bp() {
|
|
|
36543
36698
|
adoptedStyleSheets: typeof Document < "u" && "adoptedStyleSheets" in Document.prototype
|
|
36544
36699
|
};
|
|
36545
36700
|
}
|
|
36546
|
-
var
|
|
36547
|
-
function
|
|
36548
|
-
typeof window < "u" && (
|
|
36549
|
-
let e = new Blob([JSON.stringify(
|
|
36701
|
+
var Op = null;
|
|
36702
|
+
function kp() {
|
|
36703
|
+
typeof window < "u" && (Op || (Op = function() {
|
|
36704
|
+
let e = new Blob([JSON.stringify(vp)], { type: "application/json" });
|
|
36550
36705
|
return URL.createObjectURL(e);
|
|
36551
36706
|
}(), window.schmancy = {
|
|
36552
|
-
manifest:
|
|
36553
|
-
manifestUrl:
|
|
36554
|
-
help:
|
|
36555
|
-
tokens:
|
|
36556
|
-
platformPrimitive:
|
|
36557
|
-
registeredTags:
|
|
36558
|
-
a11yAudit:
|
|
36559
|
-
capabilities:
|
|
36707
|
+
manifest: vp,
|
|
36708
|
+
manifestUrl: Op,
|
|
36709
|
+
help: Sp,
|
|
36710
|
+
tokens: Cp,
|
|
36711
|
+
platformPrimitive: wp,
|
|
36712
|
+
registeredTags: Tp,
|
|
36713
|
+
a11yAudit: Ep,
|
|
36714
|
+
capabilities: Dp
|
|
36560
36715
|
}));
|
|
36561
36716
|
}
|
|
36562
|
-
var
|
|
36717
|
+
var Ap = class extends B() {
|
|
36563
36718
|
connectedCallback() {
|
|
36564
|
-
super.connectedCallback(),
|
|
36719
|
+
super.connectedCallback(), kp();
|
|
36565
36720
|
}
|
|
36566
36721
|
render() {
|
|
36567
36722
|
return j``;
|
|
36568
36723
|
}
|
|
36569
36724
|
};
|
|
36570
|
-
|
|
36725
|
+
Ap = N([P("schmancy-skill")], Ap);
|
|
36571
36726
|
export { B as $LitElement, Mc as $dialog, hd as $notify, Nc as SchmancySheetPosition, ti as area, Oa as createContext, ai as lazy, gc as schmancyContentDrawer, Pa as select, Fa as selectItem, Pc as sheet, Oo as theme };
|