@mhmo91/schmancy 0.9.23 → 0.9.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/custom-elements.json +52 -15
  2. package/dist/agent/schmancy.agent.js +318 -72
  3. package/dist/agent/schmancy.agent.js.map +1 -1
  4. package/dist/agent/schmancy.manifest.json +172 -3
  5. package/dist/area-CFLFXu0Z.cjs.map +1 -1
  6. package/dist/area-CfozaCAZ.js.map +1 -1
  7. package/dist/card-CTUaARLm.js.map +1 -1
  8. package/dist/card-DtN6p1Jq.cjs.map +1 -1
  9. package/dist/chips-B-27tj7O.cjs.map +1 -1
  10. package/dist/chips-DhAWrSgi.js.map +1 -1
  11. package/dist/handover/agent-runtime-followups.md +1 -1
  12. package/dist/handover/agent-runtime-v1.md +3 -3
  13. package/dist/handover/agent-runtime-v2-loopback.md +5 -5
  14. package/dist/lightbox-Cb5-XPWV.js.map +1 -1
  15. package/dist/lightbox-Dk2ICCBB.cjs.map +1 -1
  16. package/dist/radio-group-DYvIgv3P.cjs.map +1 -1
  17. package/dist/radio-group-DchZApJl.js.map +1 -1
  18. package/dist/table-B8H-zioX.js.map +1 -1
  19. package/dist/table-ChHS4xby.cjs.map +1 -1
  20. package/dist/tree.cjs.map +1 -1
  21. package/dist/tree.js.map +1 -1
  22. package/dist/typewriter.cjs.map +1 -1
  23. package/dist/typewriter.js.map +1 -1
  24. package/dist/typography.cjs +3 -3
  25. package/dist/typography.cjs.map +1 -1
  26. package/dist/typography.js +107 -10
  27. package/dist/typography.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/area/area.component.ts +14 -0
  30. package/src/card/card.ts +1 -0
  31. package/src/chips/assist-chip.ts +11 -2
  32. package/src/chips/suggestion-chip.ts +9 -6
  33. package/src/lightbox/lightbox.ts +11 -0
  34. package/src/radio-group/radio-button.ts +1 -0
  35. package/src/table/table.ts +8 -2
  36. package/src/tree/tree.ts +1 -0
  37. package/src/typewriter/typewriter.ts +12 -0
  38. package/src/typography/typography.ts +95 -1
  39. package/types/src/area/area.component.d.ts +14 -0
  40. package/types/src/card/card.d.ts +1 -0
  41. package/types/src/chips/assist-chip.d.ts +11 -2
  42. package/types/src/chips/suggestion-chip.d.ts +9 -6
  43. package/types/src/lightbox/lightbox.d.ts +11 -0
  44. package/types/src/radio-group/radio-button.d.ts +1 -0
  45. package/types/src/table/table.d.ts +8 -2
  46. package/types/src/tree/tree.d.ts +1 -0
  47. package/types/src/typewriter/typewriter.d.ts +12 -0
  48. package/types/src/typography/typography.d.ts +33 -0
@@ -122,6 +122,13 @@
122
122
  "kind": "class",
123
123
  "name": "SchmancyArea",
124
124
  "tagName": "schmancy-area",
125
+ "description": "Router outlet — renders the active route's component for the named area. Drives the schmancy router via the `area` service.",
126
+ "summary": "Mount once per \"addressable region\" of the app (typically the main content area). Use the imperative `area.push({ area, component, params })` service to navigate. Multiple named areas can coexist on a page (e.g. main content + a sheet).",
127
+ "platformPrimitive": {
128
+ "tag": "div",
129
+ "mode": "-",
130
+ "note": "Routing outlet. Degrades to an empty div if the tag never registers — routing is lost but the page stays accessible."
131
+ },
125
132
  "attributes": [
126
133
  {
127
134
  "name": "name",
@@ -136,6 +143,15 @@
136
143
  "text": "RouteComponent"
137
144
  }
138
145
  }
146
+ ],
147
+ "events": [
148
+ {
149
+ "name": "redirect",
150
+ "description": "When the area resolves a route to a different destination (programmatic redirect). `detail.from` and `detail.to` are the route names."
151
+ }
152
+ ],
153
+ "examples": [
154
+ "<schmancy-area name=\"main\"></schmancy-area>\n<script>\n import { area } from '@mhmo91/schmancy';\n area.push({ area: 'main', component: MyDashboardView, params: { id: 42 } });\n</script>"
139
155
  ]
140
156
  }
141
157
  ]
@@ -1025,6 +1041,12 @@
1025
1041
  "description": "ARIA label for accessibility."
1026
1042
  }
1027
1043
  ],
1044
+ "events": [
1045
+ {
1046
+ "name": "schmancy-click",
1047
+ "description": "When an interactive card is clicked or activated via keyboard. `detail.value` echoes the card's `type`. Only fires when `interactive` is set."
1048
+ }
1049
+ ],
1028
1050
  "examples": [
1029
1051
  "<schmancy-card type=\"elevated\" href=\"/items/42\">\n <schmancy-card-media src=\"/thumb.jpg\" alt=\"Thumbnail\"></schmancy-card-media>\n <schmancy-card-content>\n <h3>Title</h3>\n <p>One-line description of the card's content.</p>\n </schmancy-card-content>\n <schmancy-card-action>\n <schmancy-button variant=\"text\">Open</schmancy-button>\n </schmancy-card-action>\n</schmancy-card>"
1030
1052
  ]
@@ -1403,7 +1425,13 @@
1403
1425
  "kind": "class",
1404
1426
  "name": "SchmancyAssistChip",
1405
1427
  "tagName": "schmancy-assist-chip",
1406
- "description": "Assist chip component - prompts user actions like opening calendar events or sharing content Pure Schmancy implementation with Tailwind CSS and RxJS state management",
1428
+ "description": "Assist chip single-tap trigger for a contextual action (open calendar event, share content, jump to related view). Distinct from filter and input chips: assist chips have no selected state; clicking fires `action`.",
1429
+ "summary": "Use for \"do this thing\" suggestions surfaced in context (next to a date, after a recipient list, near a long description). Pair with schmancy-icon for the leading glyph.",
1430
+ "platformPrimitive": {
1431
+ "tag": "button",
1432
+ "mode": "click",
1433
+ "note": "Material 3 assist-chip semantics. Degrades to a plain `<button>` if the tag never registers."
1434
+ },
1407
1435
  "attributes": [
1408
1436
  {
1409
1437
  "name": "value",
@@ -1453,6 +1481,15 @@
1453
1481
  "default": "true",
1454
1482
  "description": "Elevated style variant - true by default per M3 spec for assist chips"
1455
1483
  }
1484
+ ],
1485
+ "events": [
1486
+ {
1487
+ "name": "action",
1488
+ "description": "When the chip is clicked or activated via keyboard. `detail.value` echoes the chip's `value` attribute."
1489
+ }
1490
+ ],
1491
+ "examples": [
1492
+ "<schmancy-assist-chip @action=${(e) => share(e.detail.value)}>\n <schmancy-icon slot=\"icon\">share</schmancy-icon>\n Share\n</schmancy-assist-chip>"
1456
1493
  ]
1457
1494
  }
1458
1495
  ]
@@ -1601,7 +1638,13 @@
1601
1638
  "kind": "class",
1602
1639
  "name": "SchmancySuggestionChip",
1603
1640
  "tagName": "schmancy-suggestion-chip",
1604
- "description": "Suggestion chip component - provides contextual recommendations to users IMPORTANT: Suggestion chips do NOT have a selected state. They are designed to provide suggestions and recommendations that trigger actions when clicked. Unlike filter chips, they cannot be toggled on/off. Pure Schmancy implementation with Tailwind CSS and RxJS state management",
1641
+ "description": "Suggestion chip single-tap insertion of a recommended value. Distinct from filter chips (no selected state) and assist chips (assist triggers an action; suggestion offers a value the user can pick).",
1642
+ "summary": "Use for \"would you also like to…\" prompts above a search input or below a message thread. Click fires `action` with the chip's `value` so the parent can insert it into a field or trigger a search.",
1643
+ "platformPrimitive": {
1644
+ "tag": "button",
1645
+ "mode": "click",
1646
+ "note": "Material 3 suggestion-chip semantics. Degrades to a plain `<button>` if the tag never registers."
1647
+ },
1605
1648
  "attributes": [
1606
1649
  {
1607
1650
  "name": "value",
@@ -1651,6 +1694,15 @@
1651
1694
  "default": "false",
1652
1695
  "description": "Elevated style variant - flat by default per M3 spec"
1653
1696
  }
1697
+ ],
1698
+ "events": [
1699
+ {
1700
+ "name": "action",
1701
+ "description": "When the chip is clicked or activated via keyboard. `detail.value` echoes the chip's `value` attribute."
1702
+ }
1703
+ ],
1704
+ "examples": [
1705
+ "<schmancy-suggestion-chip value=\"yesterday\" @action=${(e) => setRange(e.detail.value)}>\n Yesterday\n</schmancy-suggestion-chip>"
1654
1706
  ]
1655
1707
  }
1656
1708
  ]
@@ -3334,6 +3386,13 @@
3334
3386
  "kind": "class",
3335
3387
  "name": "SchmancyLightbox",
3336
3388
  "tagName": "schmancy-lightbox",
3389
+ "description": "Image lightbox — thumbnail grid that opens to a full-screen viewer on click, with keyboard navigation between images.",
3390
+ "summary": "Drop-in for galleries / image lists where each thumbnail should expand to fill the viewport. Pass an `images` array of `{ src, alt, caption? }`.",
3391
+ "platformPrimitive": {
3392
+ "tag": "dialog",
3393
+ "mode": "close",
3394
+ "note": "Modal full-screen viewer with keyboard navigation. Degrades to a plain image grid if the tag never registers."
3395
+ },
3337
3396
  "attributes": [
3338
3397
  {
3339
3398
  "name": "src",
@@ -3363,6 +3422,19 @@
3363
3422
  },
3364
3423
  "default": "false"
3365
3424
  }
3425
+ ],
3426
+ "events": [
3427
+ {
3428
+ "name": "change",
3429
+ "description": "When the active image index changes (next/prev). `detail.index` is the new active image's position in the array."
3430
+ },
3431
+ {
3432
+ "name": "close",
3433
+ "description": "When the viewer is dismissed (ESC, backdrop click, close button)."
3434
+ }
3435
+ ],
3436
+ "examples": [
3437
+ "<schmancy-lightbox .images=${[{ src: '/a.jpg', alt: 'A' }, { src: '/b.jpg', alt: 'B' }]}></schmancy-lightbox>"
3366
3438
  ]
3367
3439
  }
3368
3440
  ]
@@ -5207,6 +5279,12 @@
5207
5279
  "default": "''"
5208
5280
  }
5209
5281
  ],
5282
+ "events": [
5283
+ {
5284
+ "name": "radio-button-click",
5285
+ "description": "Internal event consumed by the parent schmancy-radio-group; `detail.value` is the clicked button's value. Listen on schmancy-radio-group for the public `change` event instead of subscribing here."
5286
+ }
5287
+ ],
5210
5288
  "examples": [
5211
5289
  "<schmancy-radio-group name=\"plan\">\n <schmancy-radio-button value=\"free\">Free</schmancy-radio-button>\n <schmancy-radio-button value=\"pro\" checked>Pro</schmancy-radio-button>\n</schmancy-radio-group>"
5212
5290
  ]
@@ -6018,7 +6096,13 @@
6018
6096
  "kind": "class",
6019
6097
  "name": "SchmancyDataTable",
6020
6098
  "tagName": "schmancy-table",
6021
- "description": "SchmancyDataTable is a generic data table component. It supports sorting, filtering, and custom rendering of rows.",
6099
+ "description": "Generic data table typed columns, optional sort, custom renderers per column. Pass `data` (array) and `columns` (TableColumn descriptors).",
6100
+ "summary": "Use for tabular data where each column has a known shape. Pair with `<schmancy-table-row>` for the per-row interaction surface. Sort by setting `sortable: true` on a column descriptor; the table emits `sort-change` so the parent can re-fetch / re-sort in the data layer if needed.",
6101
+ "platformPrimitive": {
6102
+ "tag": "table",
6103
+ "mode": "-",
6104
+ "note": "Renders an accessible table with `<lit-virtualizer>` for large datasets. Degrades to a styled `<table>` if the tag never registers."
6105
+ },
6022
6106
  "attributes": [
6023
6107
  {
6024
6108
  "name": "keyField",
@@ -6041,6 +6125,19 @@
6041
6125
  },
6042
6126
  "default": "false"
6043
6127
  }
6128
+ ],
6129
+ "events": [
6130
+ {
6131
+ "name": "click",
6132
+ "description": "When a data row is activated. `detail.item` is the row's source object, `detail.index` is the position in the data array."
6133
+ },
6134
+ {
6135
+ "name": "sort-change",
6136
+ "description": "When the user toggles a column sort. `detail.column` is the column key, `detail.direction` is `'asc' | 'desc' | null`."
6137
+ }
6138
+ ],
6139
+ "examples": [
6140
+ "<schmancy-table .data=${rows} .columns=${[{ name: 'Name', key: 'name' }, { name: 'Status', key: 'status' }]}></schmancy-table>"
6044
6141
  ]
6045
6142
  }
6046
6143
  ]
@@ -6573,6 +6670,12 @@
6573
6670
  "description": "Whether the tree’s children are visible"
6574
6671
  }
6575
6672
  ],
6673
+ "events": [
6674
+ {
6675
+ "name": "toggle",
6676
+ "description": "When the root toggler or chevron is clicked. Fires before the open state flips; the host's `open` property reflects the new state on the next animation frame."
6677
+ }
6678
+ ],
6576
6679
  "slots": [
6577
6680
  {
6578
6681
  "name": "root",
@@ -6597,6 +6700,13 @@
6597
6700
  "kind": "class",
6598
6701
  "name": "TypewriterElement",
6599
6702
  "tagName": "schmancy-typewriter",
6703
+ "description": "Typewriter effect — animates text typing/deletion with a cursor. Wraps the TypeIt library, lazy-loaded on first render.",
6704
+ "summary": "Drop string content as the default slot or use `<p>` / `<span>` with `cycle=\"A|B|C\"` attribute children for cycling phrases. Set `loop` for infinite cycling, `once` to remember completion across sessions via sessionStorage.",
6705
+ "platformPrimitive": {
6706
+ "tag": "span",
6707
+ "mode": "-",
6708
+ "note": "Animated text container. Degrades to its raw text content if the tag never registers — animation is lost but content stays visible."
6709
+ },
6600
6710
  "attributes": [
6601
6711
  {
6602
6712
  "name": "speed",
@@ -6663,6 +6773,15 @@
6663
6773
  "description": "Default pause duration for cycling (ms)."
6664
6774
  }
6665
6775
  ],
6776
+ "events": [
6777
+ {
6778
+ "name": "typeit-complete",
6779
+ "description": "When the animation finishes typing all content. Fires after the final `afterComplete` callback in the underlying TypeIt instance."
6780
+ }
6781
+ ],
6782
+ "examples": [
6783
+ "<schmancy-typewriter speed=\"35\" cursor-char=\"|\">\n Hello, world.\n</schmancy-typewriter>"
6784
+ ],
6666
6785
  "contexts": [
6667
6786
  {
6668
6787
  "name": "delayContext",
@@ -6696,6 +6815,50 @@
6696
6815
  ],
6697
6816
  "default": "'body'"
6698
6817
  },
6818
+ {
6819
+ "name": "preset",
6820
+ "type": {
6821
+ "text": "TypographyPreset"
6822
+ },
6823
+ "values": [
6824
+ "display",
6825
+ "display-lg",
6826
+ "display-md",
6827
+ "display-sm",
6828
+ "heading-lg",
6829
+ "heading-md",
6830
+ "heading-sm",
6831
+ "title-lg",
6832
+ "title-md",
6833
+ "title-sm",
6834
+ "body-lg",
6835
+ "body-md",
6836
+ "body-sm",
6837
+ "label-lg",
6838
+ "label-md",
6839
+ "label-sm",
6840
+ "caption"
6841
+ ],
6842
+ "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."
6843
+ },
6844
+ {
6845
+ "name": "as",
6846
+ "type": {
6847
+ "text": "TypographyTag"
6848
+ },
6849
+ "values": [
6850
+ "h1",
6851
+ "h2",
6852
+ "h3",
6853
+ "h4",
6854
+ "h5",
6855
+ "h6",
6856
+ "p",
6857
+ "span",
6858
+ "div"
6859
+ ],
6860
+ "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."
6861
+ },
6699
6862
  {
6700
6863
  "name": "token",
6701
6864
  "type": {
@@ -6777,6 +6940,12 @@
6777
6940
  "description": "Placeholder shown when editable and empty"
6778
6941
  }
6779
6942
  ],
6943
+ "events": [
6944
+ {
6945
+ "name": "change",
6946
+ "description": "When `editable` is true, fires on blur or Enter with `detail.value` set to the new text content. Not fired when `editable` is unset (the default)."
6947
+ }
6948
+ ],
6780
6949
  "slots": [
6781
6950
  {
6782
6951
  "name": "",