@mhmo91/schmancy 0.9.15 → 0.9.17

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 (105) hide show
  1. package/custom-elements.json +83 -35
  2. package/dist/agent/schmancy.agent.js +297 -40
  3. package/dist/agent/schmancy.agent.js.map +1 -1
  4. package/dist/agent/schmancy.manifest.json +342 -19
  5. package/dist/autocomplete-CgWUCUU-.js.map +1 -1
  6. package/dist/autocomplete-EM0jE7X2.cjs.map +1 -1
  7. package/dist/button.cjs.map +1 -1
  8. package/dist/button.js.map +1 -1
  9. package/dist/card-BslSqOsf.cjs.map +1 -1
  10. package/dist/card-CEdgK9nb.js.map +1 -1
  11. package/dist/checkbox-Br84TiCs.js.map +1 -1
  12. package/dist/checkbox-DtcFMgZL.cjs.map +1 -1
  13. package/dist/chips-BNYOweGm.js.map +1 -1
  14. package/dist/chips-DoCu5YQb.cjs.map +1 -1
  15. package/dist/details-B8p62xmR.cjs.map +1 -1
  16. package/dist/details-CCW52lzz.js.map +1 -1
  17. package/dist/divider-CbEWg3G_.js.map +1 -1
  18. package/dist/divider-JyyFw_3J.cjs.map +1 -1
  19. package/dist/expand-BmwIPNjq.cjs.map +1 -1
  20. package/dist/expand-bFa_qVDT.js.map +1 -1
  21. package/dist/extra-BUgyMgjl.cjs.map +1 -1
  22. package/dist/extra-HwbaUnCD.js.map +1 -1
  23. package/dist/form-rCZqoAoK.js.map +1 -1
  24. package/dist/form-wI58M85H.cjs.map +1 -1
  25. package/dist/handover/agent-runtime-followups.md +1 -1
  26. package/dist/handover/agent-runtime-v1.md +3 -3
  27. package/dist/input-BGNZlfL8.cjs.map +1 -1
  28. package/dist/input-Bc3bVISm.js.map +1 -1
  29. package/dist/input-chip-CiG61y-N.js.map +1 -1
  30. package/dist/input-chip-p24lkYtY.cjs.map +1 -1
  31. package/dist/page.cjs.map +1 -1
  32. package/dist/page.js.map +1 -1
  33. package/dist/radio-group-B72sYGnS.js.map +1 -1
  34. package/dist/radio-group-B7DuNxUq.cjs.map +1 -1
  35. package/dist/scroll-CdmXRXh2.js.map +1 -1
  36. package/dist/scroll-V1rAZ9fK.cjs.map +1 -1
  37. package/dist/select-DFxoBgEf.cjs.map +1 -1
  38. package/dist/select-wFDKDLQI.js.map +1 -1
  39. package/dist/surface-0XM4DBaT.js.map +1 -1
  40. package/dist/surface-B6DA01kL.cjs.map +1 -1
  41. package/dist/switch.cjs.map +1 -1
  42. package/dist/switch.js.map +1 -1
  43. package/dist/textarea-B2544vx9.cjs.map +1 -1
  44. package/dist/textarea-CS-KdSLz.js.map +1 -1
  45. package/dist/theme-Cq_c9IO3.js.map +1 -1
  46. package/dist/theme-DU5yXaV-.cjs.map +1 -1
  47. package/dist/tree.cjs.map +1 -1
  48. package/dist/tree.js.map +1 -1
  49. package/package.json +1 -1
  50. package/src/autocomplete/autocomplete.ts +12 -1
  51. package/src/button/button.ts +6 -1
  52. package/src/button/icon-button.ts +7 -1
  53. package/src/card/actions.ts +9 -0
  54. package/src/card/card.ts +18 -0
  55. package/src/card/content.ts +9 -0
  56. package/src/card/media.ts +6 -0
  57. package/src/checkbox/checkbox.ts +7 -1
  58. package/src/chips/chips.ts +14 -0
  59. package/src/chips/input-chip.ts +6 -6
  60. package/src/details/details.ts +12 -0
  61. package/src/divider/divider.ts +11 -0
  62. package/src/expand/expand-root.component.ts +12 -0
  63. package/src/expand/expand.component.ts +14 -0
  64. package/src/extra/countries/countries.ts +10 -0
  65. package/src/extra/timezone/timezone.ts +8 -1
  66. package/src/form/form.ts +9 -2
  67. package/src/input/input.ts +11 -4
  68. package/src/layout/scroll/scroll.ts +5 -1
  69. package/src/page/page.ts +8 -11
  70. package/src/radio-group/radio-button.ts +10 -1
  71. package/src/radio-group/radio-group.ts +18 -0
  72. package/src/select/select.ts +12 -1
  73. package/src/surface/surface.ts +4 -10
  74. package/src/switch/switch.ts +7 -4
  75. package/src/textarea/textarea.ts +9 -1
  76. package/src/theme/theme.component.ts +10 -15
  77. package/src/tree/tree.ts +12 -0
  78. package/types/src/autocomplete/autocomplete.d.ts +12 -1
  79. package/types/src/button/button.d.ts +6 -1
  80. package/types/src/button/icon-button.d.ts +7 -1
  81. package/types/src/card/actions.d.ts +9 -0
  82. package/types/src/card/card.d.ts +18 -0
  83. package/types/src/card/content.d.ts +9 -0
  84. package/types/src/card/media.d.ts +6 -0
  85. package/types/src/checkbox/checkbox.d.ts +7 -1
  86. package/types/src/chips/chips.d.ts +14 -0
  87. package/types/src/chips/input-chip.d.ts +6 -6
  88. package/types/src/details/details.d.ts +12 -0
  89. package/types/src/divider/divider.d.ts +11 -0
  90. package/types/src/expand/expand-root.component.d.ts +12 -0
  91. package/types/src/expand/expand.component.d.ts +14 -0
  92. package/types/src/extra/countries/countries.d.ts +10 -0
  93. package/types/src/extra/timezone/timezone.d.ts +8 -1
  94. package/types/src/form/form.d.ts +9 -2
  95. package/types/src/input/input.d.ts +11 -4
  96. package/types/src/layout/scroll/scroll.d.ts +5 -1
  97. package/types/src/page/page.d.ts +8 -11
  98. package/types/src/radio-group/radio-button.d.ts +10 -1
  99. package/types/src/radio-group/radio-group.d.ts +18 -0
  100. package/types/src/select/select.d.ts +12 -1
  101. package/types/src/surface/surface.d.ts +4 -10
  102. package/types/src/switch/switch.d.ts +7 -4
  103. package/types/src/textarea/textarea.d.ts +9 -1
  104. package/types/src/theme/theme.component.d.ts +10 -15
  105. package/types/src/tree/tree.d.ts +12 -0
@@ -31228,7 +31228,13 @@ var qp = {
31228
31228
  kind: "class",
31229
31229
  name: "SchmancyAutocomplete",
31230
31230
  tagName: "schmancy-autocomplete",
31231
- description: "Autocomplete input component with filtering and multi-select support.",
31231
+ description: "Combobox with type-ahead filtering over a list of `<schmancy-option>` children. Single or multi-select. Form-associated.",
31232
+ summary: "Use when users need to pick from a known list of options but the list is too long for a plain select dropdown. Prefer schmancy-select for short static lists.",
31233
+ platformPrimitive: {
31234
+ tag: "combobox",
31235
+ mode: "change",
31236
+ note: "Composed of a schmancy-input + a floating listbox populated from `<schmancy-option>` children. Multi-select renders selections as schmancy-input-chip chips. Degrades to a datalist-backed native input if the tag never registers."
31237
+ },
31232
31238
  attributes: [
31233
31239
  {
31234
31240
  name: "required",
@@ -31302,7 +31308,12 @@ var qp = {
31302
31308
  type: { text: "string" },
31303
31309
  default: "''"
31304
31310
  }
31305
- ]
31311
+ ],
31312
+ events: [{
31313
+ name: "change",
31314
+ description: "`SchmancyAutocompleteChangeEvent` with `{ value }` (single) or `{ value, values }` (multi)."
31315
+ }],
31316
+ examples: ["<schmancy-autocomplete name=\"country\" label=\"Country\" placeholder=\"Start typing…\">\n <schmancy-option value=\"US\">United States</schmancy-option>\n <schmancy-option value=\"CA\">Canada</schmancy-option>\n <schmancy-option value=\"GB\">United Kingdom</schmancy-option>\n</schmancy-autocomplete>"]
31306
31317
  }]
31307
31318
  },
31308
31319
  {
@@ -31550,7 +31561,13 @@ var qp = {
31550
31561
  kind: "class",
31551
31562
  name: "SchmancyButton",
31552
31563
  tagName: "schmancy-button",
31553
- description: "A button component.",
31564
+ description: "Material Design button — primary interactive surface for triggering actions or navigation.",
31565
+ summary: "Trigger actions or navigate. Form-associated; participates in native form submission.",
31566
+ platformPrimitive: {
31567
+ tag: "button",
31568
+ mode: "click",
31569
+ note: "Schmancy-skinned native `<button type=\"submit\">`. When `href` is set, degrades to `<a href=\"…\">`. Falls back to plain `<button>` styled with Tailwind if the tag never registers."
31570
+ },
31554
31571
  attributes: [
31555
31572
  {
31556
31573
  name: "variant",
@@ -31641,6 +31658,7 @@ var qp = {
31641
31658
  name: "base",
31642
31659
  description: "The underlying native `<button>` (or `<a>` when `href` is set)."
31643
31660
  }],
31661
+ examples: ["<schmancy-button variant=\"filled\" @click=${() => save()}>Save</schmancy-button>\n<schmancy-button variant=\"outlined\" href=\"/next\">Continue</schmancy-button>"],
31644
31662
  contexts: [{
31645
31663
  name: "SchmancyButtonSizeContext",
31646
31664
  kind: "provide"
@@ -31654,7 +31672,13 @@ var qp = {
31654
31672
  kind: "class",
31655
31673
  name: "SchmnacyIconButton",
31656
31674
  tagName: "schmancy-icon-button",
31657
- description: "An icon button component.",
31675
+ description: "Icon-only button for toolbar actions, close affordances, or overflow menus.",
31676
+ summary: "Compact round/square button wrapping a single icon glyph. Form-associated like schmancy-button.",
31677
+ platformPrimitive: {
31678
+ tag: "button",
31679
+ mode: "click",
31680
+ note: "Schmancy-skinned native `<button>` (or `<a>` when `href` is set). aria-label is required for a11y because there's no text content."
31681
+ },
31658
31682
  attributes: [
31659
31683
  {
31660
31684
  name: "size",
@@ -31732,7 +31756,8 @@ var qp = {
31732
31756
  cssParts: [{
31733
31757
  name: "base",
31734
31758
  description: "The underlying native `<button>` (or `<a>` when `href` is set)."
31735
- }]
31759
+ }],
31760
+ examples: ["<schmancy-icon-button aria-label=\"Close\" @click=${() => close()}>\n <schmancy-icon>close</schmancy-icon>\n</schmancy-icon-button>"]
31736
31761
  }]
31737
31762
  },
31738
31763
  {
@@ -31742,10 +31767,18 @@ var qp = {
31742
31767
  kind: "class",
31743
31768
  name: "SchmancyCardAction",
31744
31769
  tagName: "schmancy-card-action",
31770
+ description: "Action row of a schmancy-card — holds the card's buttons / links (typically aligned bottom-right).",
31771
+ summary: "Always nested inside schmancy-card. Holds the primary + secondary CTAs for the card.",
31772
+ platformPrimitive: {
31773
+ tag: "div",
31774
+ mode: "-",
31775
+ note: "Styled flex container. Degrades to a plain div if the tag never registers."
31776
+ },
31745
31777
  slots: [{
31746
31778
  name: "",
31747
31779
  description: "The content of the action"
31748
- }]
31780
+ }],
31781
+ examples: ["<schmancy-card-action>\n <schmancy-button variant=\"text\">Cancel</schmancy-button>\n <schmancy-button variant=\"filled\">Save</schmancy-button>\n</schmancy-card-action>"]
31749
31782
  }]
31750
31783
  },
31751
31784
  {
@@ -31755,6 +31788,13 @@ var qp = {
31755
31788
  kind: "class",
31756
31789
  name: "SchmancyCard",
31757
31790
  tagName: "schmancy-card",
31791
+ description: "Material Design card — a surface-level container for grouping related content with media / content / actions slots.",
31792
+ summary: "Use for discrete pieces of content that appear in a list (a product, a note, a message). Combine with schmancy-card-media / schmancy-card-content / schmancy-card-action children.",
31793
+ platformPrimitive: {
31794
+ tag: "div",
31795
+ mode: "-",
31796
+ note: "Styled `<div>`; becomes an `<a>` when `href` is set so the whole card is a single interactive surface. Degrades to a plain div/a if the tag never registers."
31797
+ },
31758
31798
  attributes: [
31759
31799
  {
31760
31800
  name: "type",
@@ -31807,7 +31847,8 @@ var qp = {
31807
31847
  default: "''",
31808
31848
  description: "ARIA label for accessibility."
31809
31849
  }
31810
- ]
31850
+ ],
31851
+ examples: ["<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>"]
31811
31852
  }]
31812
31853
  },
31813
31854
  {
@@ -31816,7 +31857,15 @@ var qp = {
31816
31857
  declarations: [{
31817
31858
  kind: "class",
31818
31859
  name: "SchmancyCardContent",
31819
- tagName: "schmancy-card-content"
31860
+ tagName: "schmancy-card-content",
31861
+ description: "Content region of a schmancy-card — holds the card's headline, supporting text, and inline controls.",
31862
+ summary: "Always nested inside schmancy-card. The padded content block between the media and action rows.",
31863
+ platformPrimitive: {
31864
+ tag: "div",
31865
+ mode: "-",
31866
+ note: "Styled `<div>` with padding. Degrades to a plain div if the tag never registers."
31867
+ },
31868
+ examples: ["<schmancy-card-content>\n <h3>Card title</h3>\n <p>Supporting text that describes the card's subject.</p>\n</schmancy-card-content>"]
31820
31869
  }]
31821
31870
  },
31822
31871
  {
@@ -31826,6 +31875,13 @@ var qp = {
31826
31875
  kind: "class",
31827
31876
  name: "SchmancyCardMedia",
31828
31877
  tagName: "schmancy-card-media",
31878
+ description: "Media region of a schmancy-card — the image / thumbnail at the top of the card.",
31879
+ summary: "Always nested inside schmancy-card. Pass `src` + `alt` props or slot an `<img>` / `<video>` for custom media.",
31880
+ platformPrimitive: {
31881
+ tag: "img",
31882
+ mode: "-",
31883
+ note: "Renders an `<img>` (or wraps a slotted media element). Degrades to a styled `<img>` if the tag never registers."
31884
+ },
31829
31885
  attributes: [
31830
31886
  {
31831
31887
  name: "src",
@@ -31849,7 +31905,8 @@ var qp = {
31849
31905
  type: { text: "string" },
31850
31906
  default: "''"
31851
31907
  }
31852
- ]
31908
+ ],
31909
+ examples: ["<schmancy-card-media src=\"/thumb.jpg\" alt=\"Product photo\"></schmancy-card-media>"]
31853
31910
  }]
31854
31911
  },
31855
31912
  {
@@ -32013,6 +32070,13 @@ var qp = {
32013
32070
  kind: "class",
32014
32071
  name: "SchmancyCheckboxElement",
32015
32072
  tagName: "schmancy-checkbox",
32073
+ description: "Binary checkbox for multi-select or boolean form fields. Wraps Material Web's `<md-checkbox>`; form-associated.",
32074
+ summary: "Use for \"select many from a list\" or any boolean that's part of a form submission. Prefer schmancy-switch for immediate-effect toggles.",
32075
+ platformPrimitive: {
32076
+ tag: "checkbox",
32077
+ mode: "change",
32078
+ note: "Wraps `<md-checkbox>` from `@material/web`. Degrades to styled native `<input type=\"checkbox\">` if the tag never registers."
32079
+ },
32016
32080
  attributes: [
32017
32081
  {
32018
32082
  name: "value",
@@ -32058,12 +32122,13 @@ var qp = {
32058
32122
  ],
32059
32123
  events: [{
32060
32124
  name: "valueChange",
32061
- description: "Event fired when the checkbox value changes."
32125
+ description: "`CustomEvent<{ value: boolean }>` when the checkbox is toggled."
32062
32126
  }],
32063
32127
  slots: [{
32064
32128
  name: "",
32065
32129
  description: "The label for the checkbox."
32066
- }]
32130
+ }],
32131
+ examples: ["<schmancy-checkbox name=\"tos\" required>I accept the terms</schmancy-checkbox>"]
32067
32132
  }]
32068
32133
  },
32069
32134
  {
@@ -32121,6 +32186,13 @@ var qp = {
32121
32186
  kind: "class",
32122
32187
  name: "SchmancyChips",
32123
32188
  tagName: "schmancy-chips",
32189
+ description: "Filter-chip group — container for selectable `<schmancy-chip>` children. Single or multi-select.",
32190
+ summary: "Use for filtering or choosing from 2–8 mutually-visible options (\"Status: active / paused / archived\"). Prefer schmancy-select when the list gets long or vertical.",
32191
+ platformPrimitive: {
32192
+ tag: "chip-group",
32193
+ mode: "change",
32194
+ note: "No direct native equivalent. Degrades to a styled schmancy-select with similar semantics if the tag never registers."
32195
+ },
32124
32196
  attributes: [
32125
32197
  {
32126
32198
  name: "wrap",
@@ -32142,7 +32214,12 @@ var qp = {
32142
32214
  ],
32143
32215
  default: "'start'"
32144
32216
  }
32145
- ]
32217
+ ],
32218
+ events: [{
32219
+ name: "change",
32220
+ description: "`CustomEvent<{ value: string }>` (single) or `{ values: string[] }` (multi)."
32221
+ }],
32222
+ examples: ["<schmancy-chips multi @change=${(e) => this.filters = e.detail.values}>\n <schmancy-chip value=\"active\">Active</schmancy-chip>\n <schmancy-chip value=\"paused\">Paused</schmancy-chip>\n <schmancy-chip value=\"archived\">Archived</schmancy-chip>\n</schmancy-chips>"]
32146
32223
  }]
32147
32224
  },
32148
32225
  {
@@ -32152,7 +32229,13 @@ var qp = {
32152
32229
  kind: "class",
32153
32230
  name: "SchmancyInputChip",
32154
32231
  tagName: "schmancy-input-chip",
32155
- description: "Input chip component - represents user-provided information that can be removed. IMPORTANT: Per Material Design 3 specification, input chips do NOT have selected state. They represent discrete pieces of user input (like entered tags, selections from lists, etc.) that can only be removed, not toggled on/off. Use cases: - Displaying selected recipients in an email - Showing applied filters that can be removed - Tags or keywords entered by the user - Selected items from a multi-select dropdown",
32232
+ description: "Input chip displays user-provided information (tags, recipients, filters) that can be removed but not toggled. IMPORTANT: Per Material Design 3 specification, input chips do NOT have selected state. They represent discrete pieces of user input (like entered tags, selections from lists, etc.) that can only be removed, not toggled on/off. Use cases: - Displaying selected recipients in an email - Showing applied filters that can be removed - Tags or keywords entered by the user - Selected items from a multi-select dropdown",
32233
+ summary: "Removable pill that represents a single user input value. No selected state — use schmancy-chip (filter chip) for toggleable options.",
32234
+ platformPrimitive: {
32235
+ tag: "chip",
32236
+ mode: "remove",
32237
+ note: "No native equivalent. Composed of a labeled pill + close button. Degrades to a styled `<span>` with a trailing close `<button>` if the tag never registers."
32238
+ },
32156
32239
  attributes: [
32157
32240
  {
32158
32241
  name: "value",
@@ -32704,6 +32787,13 @@ var qp = {
32704
32787
  kind: "class",
32705
32788
  name: "SchmancyDetails",
32706
32789
  tagName: "schmancy-details",
32790
+ description: "Expandable disclosure panel — a styled `<details>` / `<summary>` pair with animated expand + overlay options.",
32791
+ summary: "Use for progressive-disclosure content: FAQs, collapsible settings sections, accordion-style lists. Prefer schmancy-expand for full-page accordions where only one section can be open at a time.",
32792
+ platformPrimitive: {
32793
+ tag: "details",
32794
+ mode: "toggle",
32795
+ note: "Wraps native `<details>`/`<summary>`. Degrades to the native element if the tag never registers — same keyboard accessibility, just no animation."
32796
+ },
32707
32797
  attributes: [
32708
32798
  {
32709
32799
  name: "summary",
@@ -32746,7 +32836,12 @@ var qp = {
32746
32836
  type: { text: "string" },
32747
32837
  default: "'p-3'"
32748
32838
  }
32749
- ]
32839
+ ],
32840
+ events: [{
32841
+ name: "toggle",
32842
+ description: "When the open state changes (bubbles from the native `<details>`)."
32843
+ }],
32844
+ examples: ["<schmancy-details summary=\"Shipping details\">\n <p>Order ships in 2 business days.</p>\n</schmancy-details>"]
32750
32845
  }]
32751
32846
  },
32752
32847
  {
@@ -32857,6 +32952,13 @@ var qp = {
32857
32952
  kind: "class",
32858
32953
  name: "SchmancyDivider",
32859
32954
  tagName: "schmancy-divider",
32955
+ description: "Thin horizontal (or vertical) separator rule between sections of content.",
32956
+ summary: "Semantic separator between groups — list items, menu sections, content blocks. Uses outline theme token.",
32957
+ platformPrimitive: {
32958
+ tag: "hr",
32959
+ mode: "-",
32960
+ note: "Styled horizontal rule. Degrades to a native `<hr>` if the tag never registers."
32961
+ },
32860
32962
  attributes: [
32861
32963
  {
32862
32964
  name: "outline",
@@ -32879,7 +32981,8 @@ var qp = {
32879
32981
  ],
32880
32982
  default: "'start'"
32881
32983
  }
32882
- ]
32984
+ ],
32985
+ examples: ["<schmancy-list-item>First</schmancy-list-item>\n<schmancy-divider></schmancy-divider>\n<schmancy-list-item>Second</schmancy-list-item>"]
32883
32986
  }]
32884
32987
  },
32885
32988
  {
@@ -32991,6 +33094,13 @@ var qp = {
32991
33094
  kind: "class",
32992
33095
  name: "SchmancyExpandRoot",
32993
33096
  tagName: "schmancy-expand-root",
33097
+ description: "Container for schmancy-expand children — coordinates mutual-exclusion so only one child is open at a time. Also renders the portal panel that the active child expands into.",
33098
+ summary: "Always wrap a group of schmancy-expand children. Without a root, each schmancy-expand behaves independently (which is usually not what you want — prefer schmancy-details for that).",
33099
+ platformPrimitive: {
33100
+ tag: "div",
33101
+ mode: "-",
33102
+ note: "Coordinating wrapper. Degrades to a plain div if the tag never registers — children fall back to independent `<details>` behavior."
33103
+ },
32994
33104
  attributes: [{
32995
33105
  name: "type",
32996
33106
  type: { text: "TSurfaceColor" },
@@ -33019,7 +33129,8 @@ var qp = {
33019
33129
  "glassOforim"
33020
33130
  ],
33021
33131
  default: "'solid'"
33022
- }]
33132
+ }],
33133
+ examples: ["<schmancy-expand-root>\n <schmancy-expand summary=\"Step 1\">…</schmancy-expand>\n <schmancy-expand summary=\"Step 2\">…</schmancy-expand>\n</schmancy-expand-root>"]
33023
33134
  }]
33024
33135
  },
33025
33136
  {
@@ -33029,6 +33140,13 @@ var qp = {
33029
33140
  kind: "class",
33030
33141
  name: "SchmancyExpand",
33031
33142
  tagName: "schmancy-expand",
33143
+ description: "Accordion-style section — expands on click, coordinates with siblings via schmancy-expand-root to close any sibling when a new one opens. Only one schmancy-expand can be open at a time within the same root.",
33144
+ summary: "Use for grouped progressive-disclosure where only one section should be open at a time. Prefer schmancy-details when sections should be independent.",
33145
+ platformPrimitive: {
33146
+ tag: "details",
33147
+ mode: "toggle",
33148
+ note: "Schmancy-skinned accordion section. Degrades to `<details>` if the tag never registers — loses mutual-exclusion behavior but stays functional."
33149
+ },
33032
33150
  attributes: [
33033
33151
  {
33034
33152
  name: "summary",
@@ -33070,7 +33188,12 @@ var qp = {
33070
33188
  type: { text: "boolean" },
33071
33189
  default: "false"
33072
33190
  }
33073
- ]
33191
+ ],
33192
+ events: [{
33193
+ name: "toggle",
33194
+ description: "When the open state changes."
33195
+ }],
33196
+ examples: ["<schmancy-expand-root>\n <schmancy-expand summary=\"Billing\">Billing form…</schmancy-expand>\n <schmancy-expand summary=\"Shipping\">Shipping form…</schmancy-expand>\n <schmancy-expand summary=\"Review\">Order review…</schmancy-expand>\n</schmancy-expand-root>"]
33074
33197
  }]
33075
33198
  },
33076
33199
  {
@@ -33089,14 +33212,21 @@ var qp = {
33089
33212
  kind: "class",
33090
33213
  name: "SchmancyForm",
33091
33214
  tagName: "schmancy-form",
33092
- description: "A thin ergonomic wrapper around a native `<form>` element. Its children are reparented into a `<form>` element in light DOM on connection, so: - Form-associated custom elements (FACE) resolve their `internals.form` correctly via native DOM ancestry. - `new FormData(form)` collects values from every FACE + native control without any manual walking. - `form.reset()` triggers `formResetCallback()` on every FACE. - `form.reportValidity()` runs native validation UI. - `<button type=\"submit\">` and `<schmancy-button type=\"submit\">` both submit the form via the native submitter pipeline. This component exists only to translate the native `submit` / `reset` events into the Schmancy event shape (`detail: FormData`). All heavy lifting is the platform's.",
33215
+ description: "Ergonomic wrapper around a native `<form>`. Children are reparented into a light-DOM `<form>` on connection so form-associated custom elements resolve `internals.form` via native DOM ancestry. - Form-associated custom elements (FACE) resolve their `internals.form` correctly via native DOM ancestry. - `new FormData(form)` collects values from every FACE + native control without any manual walking. - `form.reset()` triggers `formResetCallback()` on every FACE. - `form.reportValidity()` runs native validation UI. - `<button type=\"submit\">` and `<schmancy-button type=\"submit\">` both submit the form via the native submitter pipeline. This component exists only to translate the native `submit` / `reset` events into the Schmancy event shape (`detail: FormData`). All heavy lifting is the platform's.",
33216
+ summary: "Always wrap form-associated schmancy components in schmancy-form (or a native `<form>`) so `new FormData(form)` just works.",
33217
+ platformPrimitive: {
33218
+ tag: "form",
33219
+ mode: "submit",
33220
+ note: "Light-DOM native `<form>` element. Degrades to a `<form>` if the tag never registers — same semantics, just no CustomEvent translation."
33221
+ },
33093
33222
  events: [{
33094
33223
  name: "submit",
33095
33224
  description: "`CustomEvent<FormData>` emitted when the form is submitted."
33096
33225
  }, {
33097
33226
  name: "reset",
33098
33227
  description: "Emitted after the underlying form resets."
33099
- }]
33228
+ }],
33229
+ examples: ["<schmancy-form @submit=${(e) => console.log(Object.fromEntries(e.detail))}>\n <schmancy-input name=\"email\" type=\"email\" required></schmancy-input>\n <schmancy-input name=\"password\" type=\"password\" required></schmancy-input>\n <schmancy-button type=\"submit\" variant=\"filled\">Sign in</schmancy-button>\n</schmancy-form>"]
33100
33230
  }]
33101
33231
  },
33102
33232
  {
@@ -33238,7 +33368,13 @@ var qp = {
33238
33368
  kind: "class",
33239
33369
  name: "SchmancyInput",
33240
33370
  tagName: "schmancy-input",
33241
- description: "Enhanced version of the SchmancyInput component with improved form integration and compatibility with legacy API. This component uses the native form association API and maintains parity with native input behaviors while providing a stylish, accessible interface.",
33371
+ description: "Single-line text input the primary form-text primitive. Form-associated via ElementInternals, so it participates in native `<form>` submission, validation, and reset without additional wiring.",
33372
+ summary: "Text input with Material Design styling, native form integration, and RxJS-debounced input/change/enter events.",
33373
+ platformPrimitive: {
33374
+ tag: "input",
33375
+ mode: "change",
33376
+ note: "Schmancy-skinned native `<input>`. Degrades to `<input class=\"…\">` styled via Tailwind if the tag never registers."
33377
+ },
33242
33378
  attributes: [
33243
33379
  {
33244
33380
  name: "value",
@@ -33369,7 +33505,22 @@ var qp = {
33369
33505
  type: { text: "string" },
33370
33506
  description: "For datalist support"
33371
33507
  }
33372
- ]
33508
+ ],
33509
+ events: [
33510
+ {
33511
+ name: "input",
33512
+ description: "`CustomEvent<{value: string}>` on every keystroke."
33513
+ },
33514
+ {
33515
+ name: "change",
33516
+ description: "`CustomEvent<{value: string}>` on blur/change."
33517
+ },
33518
+ {
33519
+ name: "enter",
33520
+ description: "`CustomEvent<{value: string}>` when user presses Enter."
33521
+ }
33522
+ ],
33523
+ examples: ["<schmancy-form @submit=${onSubmit}>\n <schmancy-input name=\"email\" type=\"email\" label=\"Email\" required></schmancy-input>\n</schmancy-form>"]
33373
33524
  }, {
33374
33525
  kind: "class",
33375
33526
  name: "SchmancyInputCompat",
@@ -34603,7 +34754,13 @@ var qp = {
34603
34754
  kind: "class",
34604
34755
  name: "SchmancyPage",
34605
34756
  tagName: "schmancy-page",
34606
- description: "Native mobile-like page container. Prevents double-tap zoom, pull-to-refresh, rubber-banding. Automatically fills remaining viewport height.",
34757
+ description: "Mobile-first page container fills remaining viewport height, suppresses double-tap zoom / pull-to-refresh / rubber-banding. Lays children in a CSS grid whose row template is `rows`.",
34758
+ summary: "The root of any app view — wraps header / main / footer children in a full-viewport grid. Use rows=\"auto_1fr_auto\" to make the middle child scroll while header/footer stay pinned.",
34759
+ platformPrimitive: {
34760
+ tag: "div",
34761
+ mode: "-",
34762
+ note: "Full-height CSS-grid container. Degrades to a plain div if the tag never registers — children still flow vertically but without the height fill and gesture suppression."
34763
+ },
34607
34764
  attributes: [
34608
34765
  {
34609
34766
  name: "rows",
@@ -34622,7 +34779,7 @@ var qp = {
34622
34779
  default: "false"
34623
34780
  }
34624
34781
  ],
34625
- examples: ["html`\n <schmancy-page rows=\"1fr_2fr_auto\">\n <header>App Bar</header>\n <main>Scrollable content</main>\n <footer>Navigation</footer>\n </schmancy-page>\n`"]
34782
+ examples: ["<schmancy-page rows=\"auto_1fr_auto\">\n <schmancy-nav-drawer-appbar>Title</schmancy-nav-drawer-appbar>\n <main>Scrollable content</main>\n <schmancy-navigation-bar></schmancy-navigation-bar>\n</schmancy-page>"]
34626
34783
  }]
34627
34784
  },
34628
34785
  {
@@ -34700,7 +34857,13 @@ var qp = {
34700
34857
  kind: "class",
34701
34858
  name: "RadioButton",
34702
34859
  tagName: "schmancy-radio-button",
34703
- description: "Radio button component for use within radio groups.",
34860
+ description: "Single radio button always rendered as a child of `<schmancy-radio-group>`, never standalone.",
34861
+ summary: "Low-level primitive. Use schmancy-radio-group and pass `.options` for the common path; only instantiate schmancy-radio-button directly when you need per-button custom rendering.",
34862
+ platformPrimitive: {
34863
+ tag: "radio",
34864
+ mode: "change",
34865
+ note: "Schmancy-skinned `<input type=\"radio\">` semantics. Degrades to native radio if the tag never registers."
34866
+ },
34704
34867
  attributes: [
34705
34868
  {
34706
34869
  name: "value",
@@ -34722,7 +34885,8 @@ var qp = {
34722
34885
  type: { text: "string" },
34723
34886
  default: "''"
34724
34887
  }
34725
- ]
34888
+ ],
34889
+ examples: ["<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>"]
34726
34890
  }]
34727
34891
  },
34728
34892
  {
@@ -34732,6 +34896,13 @@ var qp = {
34732
34896
  kind: "class",
34733
34897
  name: "RadioGroup",
34734
34898
  tagName: "schmancy-radio-group",
34899
+ description: "Radio-button group — single-select from a static list of mutually-exclusive options. Form-associated.",
34900
+ summary: "Use for 2–5 mutually-exclusive options where all should stay visible (\"Shipping: standard / express / overnight\"). Prefer schmancy-select when the list grows.",
34901
+ platformPrimitive: {
34902
+ tag: "radiogroup",
34903
+ mode: "change",
34904
+ note: "Renders schmancy-radio-button children. Degrades to a fieldset with native `<input type=\"radio\" name=\"…\">` siblings if the tag never registers."
34905
+ },
34735
34906
  attributes: [
34736
34907
  {
34737
34908
  name: "label",
@@ -34758,7 +34929,12 @@ var qp = {
34758
34929
  type: { text: "boolean" },
34759
34930
  default: "false"
34760
34931
  }
34761
- ]
34932
+ ],
34933
+ events: [{
34934
+ name: "change",
34935
+ description: "`SchmancyRadioGroupChangeEvent` with the selected `value`."
34936
+ }],
34937
+ examples: ["<schmancy-radio-group\n name=\"shipping\"\n label=\"Shipping\"\n .options=${[\n { label: 'Standard (5 days)', value: 'standard' },\n { label: 'Express (2 days)', value: 'express' },\n { label: 'Overnight', value: 'overnight' },\n ]}\n></schmancy-radio-group>"]
34762
34938
  }]
34763
34939
  },
34764
34940
  {
@@ -34812,7 +34988,13 @@ var qp = {
34812
34988
  kind: "class",
34813
34989
  name: "SchmancySelect",
34814
34990
  tagName: "schmancy-select",
34815
- description: "Select dropdown component with single and multi-select support.",
34991
+ description: "Dropdown selector single or multi-select from a list of `<schmancy-option>` children. Form-associated.",
34992
+ summary: "Material Design dropdown with type-to-filter, keyboard nav, single or multi-select. Options are declared as `<schmancy-option>` children; value / values props sync with selection.",
34993
+ platformPrimitive: {
34994
+ tag: "select",
34995
+ mode: "change",
34996
+ note: "Floating-UI-positioned listbox. Degrades to native `<select>` styled via Tailwind if the tag never registers, though multi-select UX is lost."
34997
+ },
34816
34998
  attributes: [
34817
34999
  {
34818
35000
  name: "name",
@@ -34876,7 +35058,12 @@ var qp = {
34876
35058
  type: { text: "string" },
34877
35059
  default: "''"
34878
35060
  }
34879
- ]
35061
+ ],
35062
+ events: [{
35063
+ name: "change",
35064
+ description: "`SchmancySelectChangeEvent` with `{ value }` (single) or `{ value: string[] }` (multi)."
35065
+ }],
35066
+ examples: ["<schmancy-select name=\"priority\" label=\"Priority\" value=\"medium\">\n <schmancy-option value=\"low\">Low</schmancy-option>\n <schmancy-option value=\"medium\">Medium</schmancy-option>\n <schmancy-option value=\"high\">High</schmancy-option>\n</schmancy-select>"]
34880
35067
  }]
34881
35068
  },
34882
35069
  {
@@ -35171,7 +35358,13 @@ var qp = {
35171
35358
  kind: "class",
35172
35359
  name: "SchmancySurface",
35173
35360
  tagName: "schmancy-surface",
35174
- description: "`<schmancy-surface>` component This component renders a styled container that adapts its dimensions based on the `fill` property. It supports various rounding options, elevation levels, and applies background and text color classes based on the specified surface variant. Additionally, when the `scroller` property is true, the component enables internal scrolling by applying overflow and scroll-behavior styles. SurfaceMixin automatically provides surfaceStyles CSS.",
35361
+ description: "Themed container the root surface primitive. Sets background, text color, rounding, elevation, and (optionally) internal scroll. Provides a `SchmancySurfaceTypeContext` so descendants can adapt to the enclosing surface variant.",
35362
+ summary: "Wrap a region of a page when you need it to pick up theme tokens (background + on-color + elevation). Nest surfaces to express Material Design's hierarchical color stacking.",
35363
+ platformPrimitive: {
35364
+ tag: "div",
35365
+ mode: "-",
35366
+ note: "Styled `<div>` with theme-driven background/color/elevation. Degrades to a plain `<div>` if the tag never registers — text stays readable, just loses theming."
35367
+ },
35175
35368
  attributes: [{
35176
35369
  name: "type",
35177
35370
  type: { text: "TSurfaceColor" },
@@ -35220,7 +35413,13 @@ var qp = {
35220
35413
  kind: "class",
35221
35414
  name: "SchmancySwitch",
35222
35415
  tagName: "schmancy-switch",
35223
- description: "Binary on/off control. Form-associated, keyboard-accessible, semantically a switch (ARIA role=\"switch\"). Distinct from `schmancy-checkbox`: a switch represents an immediate state change, a checkbox represents a selection in a form to be submitted.",
35416
+ description: "Binary on/off control with immediate effect. Form-associated, keyboard-accessible, semantically a switch (ARIA role=\"switch\"). Distinct from `schmancy-checkbox`: a switch represents an immediate state change, a checkbox represents a selection in a form to be submitted.",
35417
+ summary: "Use when flipping the control takes effect right away (e.g. \"Dark mode\", \"Enable notifications\"). Prefer schmancy-checkbox for form submissions.",
35418
+ platformPrimitive: {
35419
+ tag: "switch",
35420
+ mode: "change",
35421
+ note: "Accessible native `<button role=\"switch\" aria-checked>` under the hood. No native HTML element exists; falls back to a styled checkbox if the tag never registers."
35422
+ },
35224
35423
  attributes: [
35225
35424
  {
35226
35425
  name: "checked",
@@ -35263,7 +35462,8 @@ var qp = {
35263
35462
  }, {
35264
35463
  name: "thumb",
35265
35464
  description: "The moving thumb."
35266
- }]
35465
+ }],
35466
+ examples: ["<schmancy-switch ?checked=${this.darkMode} @change=${(e) => this.darkMode = e.detail.value}>\n Dark mode\n</schmancy-switch>"]
35267
35467
  }]
35268
35468
  },
35269
35469
  {
@@ -35404,7 +35604,13 @@ var qp = {
35404
35604
  kind: "class",
35405
35605
  name: "SchmancyTextarea",
35406
35606
  tagName: "schmancy-textarea",
35407
- description: "Textarea component with auto-resize and form integration.",
35607
+ description: "Multi-line text input with auto-resize and form integration. Form-associated.",
35608
+ summary: "Textarea for freeform text — notes, descriptions, messages. Auto-grows with content up to a maxlength.",
35609
+ platformPrimitive: {
35610
+ tag: "textarea",
35611
+ mode: "change",
35612
+ note: "Schmancy-skinned native `<textarea>`. Degrades to styled native `<textarea>` if the tag never registers."
35613
+ },
35408
35614
  attributes: [
35409
35615
  {
35410
35616
  name: "label",
@@ -35536,7 +35742,15 @@ var qp = {
35536
35742
  type: { text: "boolean" },
35537
35743
  default: "false"
35538
35744
  }
35539
- ]
35745
+ ],
35746
+ events: [{
35747
+ name: "input",
35748
+ description: "On every keystroke."
35749
+ }, {
35750
+ name: "change",
35751
+ description: "On blur."
35752
+ }],
35753
+ examples: ["<schmancy-textarea name=\"description\" label=\"Description\" rows=\"4\" maxlength=\"500\"></schmancy-textarea>"]
35540
35754
  }]
35541
35755
  },
35542
35756
  {
@@ -35582,7 +35796,13 @@ var qp = {
35582
35796
  kind: "class",
35583
35797
  name: "SchmancyThemeComponent",
35584
35798
  tagName: "schmancy-theme",
35585
- description: "SchmancyThemeComponent - Provides theming capabilities for Schmancy components. This component manages color schemes, primary colors, and theme distribution throughout the component tree. It can be used at the root level or nested to provide different themes to different parts of the application.",
35799
+ description: "Theme provider generates a Material 3 palette from a seed color, resolves light/dark scheme, and publishes the token set to descendants as CSS custom properties (var(--schmancy-sys-color-…)).",
35800
+ summary: "Always wrap your app root in a `<schmancy-theme root scheme=\"auto\" color=\"#…\">`. Nest additional `<schmancy-theme>` blocks to override theming for a subtree.",
35801
+ platformPrimitive: {
35802
+ tag: "div",
35803
+ mode: "-",
35804
+ note: "Styled `<div>` that publishes theme tokens via inline `--schmancy-sys-color-*` custom properties. Degrades to a plain div if the tag never registers — children lose theming and fall back to browser defaults."
35805
+ },
35586
35806
  attributes: [
35587
35807
  {
35588
35808
  name: "color",
@@ -35624,7 +35844,7 @@ var qp = {
35624
35844
  description: "Theme configuration object containing all theme variables."
35625
35845
  }
35626
35846
  ],
35627
- examples: ["<!-- Root theme provider -->\n<schmancy-theme color=\"#6200ee\" scheme=\"auto\" root>\n <your-app></your-app>\n</schmancy-theme>\n\n<!-- Nested theme for specific section -->\n<schmancy-theme color=\"#2196f3\" scheme=\"dark\">\n <div class=\"dark-section\">\n <!-- Components here will use blue dark theme -->\n </div>\n</schmancy-theme>"],
35847
+ examples: ["<!-- Root theme provider -->\n<schmancy-theme root scheme=\"auto\" color=\"#6200ee\">\n <your-app></your-app>\n</schmancy-theme>", "<!-- Nested theme for a specific section -->\n<schmancy-theme scheme=\"dark\" color=\"#2196f3\">\n <schmancy-surface fill=\"all\">\n <!-- Components here use the blue dark theme -->\n </schmancy-surface>\n</schmancy-theme>"],
35628
35848
  contexts: [{
35629
35849
  name: "themeContext",
35630
35850
  kind: "provide"
@@ -35669,6 +35889,13 @@ var qp = {
35669
35889
  kind: "class",
35670
35890
  name: "SchmancyTree",
35671
35891
  tagName: "schmancy-tree",
35892
+ description: "Expandable tree node — a recursive disclosure widget. One root slot, one default slot for child nodes. Each node can itself contain schmancy-tree children.",
35893
+ summary: "Use for hierarchical navigation / file-explorer layouts. Each level is a schmancy-tree with a `root` slot (the parent label) and default slot (the children, which may be more schmancy-trees).",
35894
+ platformPrimitive: {
35895
+ tag: "details",
35896
+ mode: "toggle",
35897
+ note: "Recursive `<details>`-like disclosure. Degrades to a plain nested list if the tag never registers — loses expand/collapse but stays navigable."
35898
+ },
35672
35899
  attributes: [{
35673
35900
  name: "open",
35674
35901
  type: { text: "boolean" },
@@ -35681,7 +35908,8 @@ var qp = {
35681
35908
  }, {
35682
35909
  name: "",
35683
35910
  description: "The children of the tree"
35684
- }]
35911
+ }],
35912
+ examples: ["<schmancy-tree>\n <schmancy-list-item slot=\"root\">src/</schmancy-list-item>\n <schmancy-tree>\n <schmancy-list-item slot=\"root\">components/</schmancy-list-item>\n <schmancy-list-item>button.ts</schmancy-list-item>\n </schmancy-tree>\n</schmancy-tree>"]
35685
35913
  }]
35686
35914
  },
35687
35915
  {
@@ -35968,6 +36196,13 @@ var qp = {
35968
36196
  kind: "class",
35969
36197
  name: "SchmancyCountriesSelect",
35970
36198
  tagName: "schmancy-select-countries",
36199
+ description: "Country picker — type-ahead autocomplete over the ISO 3166-1 country list. Form-associated.",
36200
+ summary: "Drop-in replacement for schmancy-autocomplete when the options are specifically \"every country\". Pre-seeds the list from countries.data.",
36201
+ platformPrimitive: {
36202
+ tag: "combobox",
36203
+ mode: "change",
36204
+ note: "Composes schmancy-autocomplete with a static options list. Value is the 2-letter ISO code."
36205
+ },
35971
36206
  attributes: [
35972
36207
  {
35973
36208
  name: "value",
@@ -35998,7 +36233,12 @@ var qp = {
35998
36233
  type: { text: "string" },
35999
36234
  default: "''"
36000
36235
  }
36001
- ]
36236
+ ],
36237
+ events: [{
36238
+ name: "change",
36239
+ description: "`SchmancyAutocompleteChangeEvent` with `{ value: string }` (the ISO code)."
36240
+ }],
36241
+ examples: ["<schmancy-select-countries name=\"country\" label=\"Shipping country\" required></schmancy-select-countries>"]
36002
36242
  }]
36003
36243
  },
36004
36244
  {
@@ -36008,7 +36248,13 @@ var qp = {
36008
36248
  kind: "class",
36009
36249
  name: "SchmancyTimezonesSelect",
36010
36250
  tagName: "schmancy-select-timezones",
36011
- description: "Timezone selector component with autocomplete filtering.",
36251
+ description: "Timezone picker type-ahead autocomplete over the IANA tz database. Form-associated.",
36252
+ summary: "Drop-in replacement for schmancy-autocomplete when the options are IANA timezone names. Value is the IANA identifier (\"America/Los_Angeles\").",
36253
+ platformPrimitive: {
36254
+ tag: "combobox",
36255
+ mode: "change",
36256
+ note: "Composes schmancy-autocomplete with a static IANA timezones list."
36257
+ },
36012
36258
  attributes: [
36013
36259
  {
36014
36260
  name: "value",
@@ -36039,7 +36285,12 @@ var qp = {
36039
36285
  type: { text: "string" },
36040
36286
  default: "''"
36041
36287
  }
36042
- ]
36288
+ ],
36289
+ events: [{
36290
+ name: "change",
36291
+ description: "`SchmancyAutocompleteChangeEvent` with `{ value: string }` (the IANA tz name)."
36292
+ }],
36293
+ examples: ["<schmancy-select-timezones name=\"tz\" label=\"Timezone\" value=\"America/New_York\"></schmancy-select-timezones>"]
36043
36294
  }]
36044
36295
  },
36045
36296
  {
@@ -36205,7 +36456,13 @@ var qp = {
36205
36456
  kind: "class",
36206
36457
  name: "SchmancyScroll",
36207
36458
  tagName: "schmancy-scroll",
36208
- description: "A custom scrollable container with enhanced features.",
36459
+ description: "Scrollable container with debounced scroll events, horizontal/vertical direction, optional hidden scrollbar, and programmatic scrollTo via command events or refs.",
36460
+ summary: "Use anywhere you'd reach for `overflow: auto` but also need debounced scroll events (for sticky headers, scroll spies, virtualization triggers) or the ability to drive scroll from elsewhere in the app by dispatching a schmancy-scroll-command event.",
36461
+ platformPrimitive: {
36462
+ tag: "div",
36463
+ mode: "-",
36464
+ note: "Styled scrollable `<div>`. Degrades to a plain scrollable div if the tag never registers — loses the debounced scroll event and the command-bus integration."
36465
+ },
36209
36466
  attributes: [
36210
36467
  {
36211
36468
  name: "hide",