@elcrm/components 0.0.3 → 0.1.1

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 (108) hide show
  1. package/README.md +450 -202
  2. package/dist/Avatar-CyNXYvsa.js +101 -0
  3. package/dist/Avatar.css +1 -1
  4. package/dist/Avatar.d.ts +56 -5
  5. package/dist/Avatar.js +1 -1
  6. package/dist/AvatarGroup-BAWas4pU.js +81 -0
  7. package/dist/AvatarGroup.css +1 -0
  8. package/dist/AvatarGroup.d.ts +77 -0
  9. package/dist/AvatarGroup.js +4 -0
  10. package/dist/AvatarName-DhD3TytF.js +56 -0
  11. package/dist/AvatarName.css +1 -0
  12. package/dist/AvatarName.d.ts +76 -0
  13. package/dist/AvatarName.js +4 -0
  14. package/dist/Badge.css +1 -1
  15. package/dist/Badge.d.ts +16 -1
  16. package/dist/Block-BAXh0PPp.js +8 -0
  17. package/dist/Block.d.ts +27 -6
  18. package/dist/Block.js +1 -1
  19. package/dist/Brand.css +1 -1
  20. package/dist/Brand.d.ts +20 -1
  21. package/dist/Breadcrumb-CAM_e9LN.js +98 -0
  22. package/dist/Breadcrumb.css +1 -0
  23. package/dist/Breadcrumb.d.ts +80 -0
  24. package/dist/Breadcrumb.js +4 -0
  25. package/dist/Card.css +1 -1
  26. package/dist/Card.d.ts +22 -1
  27. package/dist/Column-DDaqX-A7.js +8 -0
  28. package/dist/Column.d.ts +23 -7
  29. package/dist/Column.js +1 -1
  30. package/dist/Dropdown-DQlDiWCR.js +168 -0
  31. package/dist/Dropdown.css +1 -0
  32. package/dist/Dropdown.d.ts +124 -0
  33. package/dist/Dropdown.js +4 -0
  34. package/dist/EmptyState.css +1 -1
  35. package/dist/EmptyState.d.ts +24 -1
  36. package/dist/Footer.css +1 -1
  37. package/dist/Footer.d.ts +20 -1
  38. package/dist/Header.css +1 -1
  39. package/dist/Header.d.ts +25 -2
  40. package/dist/Item.css +1 -1
  41. package/dist/Item.d.ts +24 -1
  42. package/dist/Layout.css +1 -1
  43. package/dist/Layout.d.ts +23 -3
  44. package/dist/List.css +1 -1
  45. package/dist/List.d.ts +22 -1
  46. package/dist/Loading.css +1 -1
  47. package/dist/Loading.d.ts +19 -1
  48. package/dist/Menu-DRBHvSdJ.js +40 -0
  49. package/dist/Menu.css +1 -1
  50. package/dist/Menu.d.ts +64 -8
  51. package/dist/Menu.js +1 -1
  52. package/dist/{NavSections-CM-VPai2.js → NavSections-NDcIDD6H.js} +26 -26
  53. package/dist/NavSections.css +1 -1
  54. package/dist/NavSections.d.ts +79 -15
  55. package/dist/NavSections.js +1 -1
  56. package/dist/PageHead-Baz9BLuA.js +22 -0
  57. package/dist/PageHead.css +1 -0
  58. package/dist/PageHead.d.ts +36 -0
  59. package/dist/PageHead.js +4 -0
  60. package/dist/PageShell-CghThHS3.js +28 -0
  61. package/dist/PageShell.css +1 -0
  62. package/dist/PageShell.d.ts +33 -0
  63. package/dist/PageShell.js +4 -0
  64. package/dist/PricingGroup-DgcdVSq8.js +126 -0
  65. package/dist/PricingGroup.css +1 -0
  66. package/dist/PricingGroup.d.ts +130 -0
  67. package/dist/PricingGroup.js +4 -0
  68. package/dist/PricingTable-DALddSwM.js +158 -0
  69. package/dist/PricingTable.css +1 -0
  70. package/dist/PricingTable.d.ts +108 -0
  71. package/dist/PricingTable.js +4 -0
  72. package/dist/RadioGroup-D2UUOTkY.js +138 -0
  73. package/dist/RadioGroup.css +1 -0
  74. package/dist/RadioGroup.d.ts +111 -0
  75. package/dist/RadioGroup.js +4 -0
  76. package/dist/Row--HIe6vb9.js +8 -0
  77. package/dist/Row.d.ts +23 -7
  78. package/dist/Row.js +1 -1
  79. package/dist/Section.css +1 -1
  80. package/dist/Section.d.ts +23 -3
  81. package/dist/Stack-b0-XWwQ1.js +31 -0
  82. package/dist/Stack.css +1 -0
  83. package/dist/Stack.d.ts +34 -0
  84. package/dist/Stack.js +4 -0
  85. package/dist/TabSections-DL7DufKU.js +50 -0
  86. package/dist/TabSections.css +1 -1
  87. package/dist/TabSections.d.ts +69 -13
  88. package/dist/TabSections.js +1 -1
  89. package/dist/cx.d.ts +8 -1
  90. package/dist/dark.css +24 -0
  91. package/dist/index.css +32 -18
  92. package/dist/index.d.ts +21 -1
  93. package/dist/index.es.js +58 -38
  94. package/dist/lazyRoute.d.ts +19 -3
  95. package/dist/light.css +25 -0
  96. package/dist/stackGap.d.ts +13 -1
  97. package/dist/tokens.css +57 -0
  98. package/package.json +20 -4
  99. package/dist/Avatar-DHNPaIjZ.js +0 -64
  100. package/dist/Block-CVKukh1e.js +0 -28
  101. package/dist/Block.css +0 -1
  102. package/dist/Column-DlNrvFq1.js +0 -26
  103. package/dist/Column.css +0 -1
  104. package/dist/Menu-DS7zKQbY.js +0 -40
  105. package/dist/Row-CnD7Q7pD.js +0 -20
  106. package/dist/Row.css +0 -1
  107. package/dist/TabSections-oeEBx0nM.js +0 -50
  108. package/dist/stackGap-CDsjER0g.js +0 -7
package/dist/index.css CHANGED
@@ -1,35 +1,49 @@
1
- @layer elcrm-components{.car{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;border-radius:var(--avatar-radius);border:var(--avatar-border);background:var(--avatar-background);color:var(--avatar-color);font-weight:var(--avatar-font-weight);line-height:1;-webkit-user-select:none;user-select:none;vertical-align:middle}.car:is(button){-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;font:inherit;font-weight:var(--avatar-font-weight);cursor:pointer}.cas{width:var(--avatar-size-s);height:var(--avatar-size-s);font-size:var(--avatar-font-size-s)}.cam{width:var(--avatar-size-m);height:var(--avatar-size-m);font-size:var(--avatar-font-size-m)}.cal{width:var(--avatar-size-l);height:var(--avatar-size-l);font-size:var(--avatar-font-size-l)}.caa,.car[data-active=true]{outline:var(--avatar-outline-active);outline-offset:var(--avatar-outline-offset)}.cai{width:100%;height:100%;object-fit:cover;display:block}}
1
+ @layer elcrm-components{.car{position:relative;box-sizing:border-box;display:inline-flex;flex-shrink:0;width:fit-content;height:fit-content;border-radius:var(--avatar-radius);-webkit-user-select:none;user-select:none;vertical-align:middle}.car:is(button){-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;font:inherit;cursor:pointer;background:transparent;border:none}.cav{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;width:100%;height:100%;border-radius:inherit;border:var(--avatar-border);background:var(--avatar-background);color:var(--avatar-color);font-weight:var(--avatar-font-weight);line-height:1}.cas{width:var(--avatar-size-s);height:var(--avatar-size-s);font-size:var(--avatar-font-size-s)}.cas .cav{font-size:inherit}.cam{width:var(--avatar-size-m);height:var(--avatar-size-m);font-size:var(--avatar-font-size-m)}.cam .cav{font-size:inherit}.cal{width:var(--avatar-size-l);height:var(--avatar-size-l);font-size:var(--avatar-font-size-l)}.cal .cav{font-size:inherit}.caa .cav,.car[data-active=true] .cav{outline:var(--avatar-outline-active);outline-offset:var(--avatar-outline-offset)}.cai{width:100%;height:100%;object-fit:cover;display:block}.cab{position:absolute;right:0;bottom:0;box-sizing:border-box;width:var(--shell-status-size);height:var(--shell-status-size);border-radius:50%;border:2px solid var(--shell-background);pointer-events:none}.cas .cab{width:8px;height:8px}.cam .cab{width:var(--shell-status-size);height:var(--shell-status-size)}.cal .cab{width:12px;height:12px}.cao{background:var(--shell-color-success)}.caf{background:var(--shell-color-muted)}}
2
2
 
3
- @layer elcrm-components{.cjr{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:var(--badge-padding);border-radius:var(--badge-radius);border:var(--badge-border);font-size:var(--badge-font-size);font-weight:var(--badge-font-weight);line-height:1;white-space:nowrap}.cjn{background:var(--badge-neutral-background);color:var(--badge-neutral-color)}.cja{background:var(--badge-accent-background);color:var(--badge-accent-color)}.cju{background:var(--badge-success-background);color:var(--badge-success-color)}.cjw{background:var(--badge-warning-background);color:var(--badge-warning-color)}.cjd{background:var(--badge-danger-background);color:var(--badge-danger-color)}}
3
+ @layer elcrm-components{.cyr{display:inline-flex;align-items:center;vertical-align:middle}.cyi{position:relative;margin-left:var(--avatar-group-overlap);box-shadow:0 0 0 var(--avatar-group-ring) var(--shell-background);border-radius:var(--avatar-radius)}.cyi:first-child{margin-left:0}.cyo,.cyd{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:var(--avatar-group-overlap);border-radius:var(--avatar-radius);font-weight:var(--avatar-font-weight);line-height:1;-webkit-user-select:none;user-select:none}.cyo{z-index:20;color:var(--shell-color-muted);background:var(--shell-background-muted);border:1px solid var(--shell-border);box-shadow:0 0 0 var(--avatar-group-ring) var(--shell-background)}.cyd{z-index:21;margin-left:var(--shell-gap-sm);color:var(--shell-color-muted);background:var(--shell-background);border:1px dashed var(--shell-border);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;font:inherit;font-weight:var(--avatar-font-weight)}.cyd:hover{background:var(--shell-background-hover)}.cys{width:var(--avatar-size-s);height:var(--avatar-size-s);font-size:var(--avatar-font-size-s)}.cym{width:var(--avatar-size-m);height:var(--avatar-size-m);font-size:var(--avatar-font-size-m)}.cyl{width:var(--avatar-size-l);height:var(--avatar-size-l);font-size:var(--avatar-font-size-l)}}
4
4
 
5
- @layer elcrm-components{.cbr{display:flex;flex-direction:column;gap:var(--block-gap);padding:var(--block-padding)}.cbh{flex-direction:row;flex-wrap:wrap;align-items:center}}
5
+ @layer elcrm-components{.czr{display:inline-flex;align-items:center;gap:var(--shell-gap);max-width:100%;text-align:left;vertical-align:middle}.czr:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;border:none;background:transparent;font:inherit;color:inherit;cursor:pointer;text-decoration:none}.czc{display:flex;flex-direction:column;gap:2px;min-width:0}.czt{margin:0;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.czd{margin:0;font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color-muted);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.czs{gap:var(--shell-gap-sm)}.czs .czt{font-size:var(--shell-font-size-sm)}.czm{gap:var(--shell-gap)}.czl{gap:var(--shell-gap-lg)}.czl .czt{font-size:var(--shell-font-size-lg)}.czl .czd{font-size:var(--shell-font-size)}}
6
6
 
7
- @layer elcrm-components{.cnr{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;border:0;background:transparent;font:inherit;font-weight:var(--brand-font-weight);letter-spacing:var(--brand-letter-spacing);color:var(--brand-color);white-space:nowrap;cursor:pointer;text-decoration:none}.cnr:hover{color:var(--brand-color-hover)}}
7
+ @layer elcrm-components{.cjr{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.2rem .5rem;border-radius:999px;border:0;font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);line-height:1;white-space:nowrap}.cjn{background:var(--shell-background-hover);color:var(--shell-color)}.cja{background:color-mix(in srgb,var(--shell-color-accent) 16%,transparent);color:var(--shell-color-accent)}.cju{background:color-mix(in srgb,var(--shell-color-success) 16%,transparent);color:var(--shell-color-success)}.cjw{background:color-mix(in srgb,var(--shell-color-warning) 16%,transparent);color:var(--shell-color-warning)}.cjd{background:color-mix(in srgb,var(--shell-color-danger) 16%,transparent);color:var(--shell-color-danger)}}
8
8
 
9
- @layer elcrm-components{.cdr{background:var(--card-background);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding);box-shadow:var(--card-shadow)}.cdt{margin:0 0 .5rem;font-size:1.125rem;font-weight:600}}
9
+ @layer elcrm-components{.cnr{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;border:0;background:transparent;font:inherit;font-weight:700;letter-spacing:.02em;color:var(--shell-color);white-space:nowrap;cursor:pointer;text-decoration:none}.cnr:hover{color:var(--shell-color-accent)}}
10
10
 
11
- @layer elcrm-components{.cor{display:flex;flex-direction:column;gap:var(--column-gap)}}
11
+ @layer elcrm-components{.c0r{display:flex;flex-wrap:wrap;align-items:center;gap:var(--shell-gap-sm);list-style:none;margin:0;padding:0;font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);color:var(--shell-color-muted);line-height:1.3}.c0i{display:inline-flex;align-items:center;gap:var(--shell-gap-sm);min-width:0;color:inherit}.c0i:is(a,button){-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;border:none;background:transparent;font:inherit;font-weight:inherit;color:inherit;cursor:pointer;text-decoration:none}.c0i:is(a,button):hover{color:var(--shell-color)}.c0c,.c0i[aria-current=page]{color:var(--shell-color-accent);cursor:default}.c0n{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-icon-size);height:var(--shell-icon-size);overflow:hidden;border-radius:calc(var(--shell-radius) * .5);color:inherit}.c0n img{width:100%;height:100%;object-fit:cover;display:block}.c0l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c0d{display:inline-flex;flex-shrink:0;width:.75rem;height:.75rem;color:var(--shell-color-muted)}.c0s{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;color:var(--shell-color-muted);-webkit-user-select:none;user-select:none}.c0v{width:.75rem;height:.75rem;display:block}.c0e{display:inline-flex;align-items:center;justify-content:center;min-width:1em;color:var(--shell-color-muted);letter-spacing:.05em}.c0e:is(button){-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:.15rem .35rem;border:none;border-radius:calc(var(--shell-radius) * .4);background:transparent;font:inherit;color:inherit;cursor:pointer}.c0e:is(button):hover{background:var(--shell-background-hover);color:var(--shell-color)}}
12
12
 
13
- @layer elcrm-components{.cpr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--empty-state-gap);padding:var(--empty-state-padding);text-align:center;color:var(--empty-state-color)}.cpi{display:flex;margin-bottom:var(--empty-state-icon-gap);color:var(--empty-state-icon-color)}.cpt{margin:0;font-size:var(--empty-state-title-size);font-weight:600;color:var(--empty-state-title-color);line-height:1.3}.cpd{margin:0;max-width:var(--empty-state-max-width);font-size:var(--empty-state-description-size);color:var(--empty-state-description-color);line-height:1.45}.cpa{display:flex;flex-wrap:wrap;gap:var(--empty-state-actions-gap);justify-content:center;margin-top:var(--empty-state-actions-margin-top)}}
13
+ @layer elcrm-components{.cdr{background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);padding:var(--shell-padding);box-shadow:var(--shell-shadow)}.cdt{margin:0 0 var(--shell-gap-sm);font-size:var(--shell-font-size-lg);font-weight:var(--shell-font-weight);color:var(--shell-color)}}
14
14
 
15
- @layer elcrm-components{.cfr{padding:var(--footer-padding);color:var(--footer-color);background:var(--footer-background);border-top:1px solid var(--footer-border);font-size:var(--footer-font-size)}}
15
+ @layer elcrm-components{.crr{position:relative;display:inline-flex;vertical-align:middle}.crt{display:inline-flex;align-items:center;gap:var(--shell-gap-sm);margin:0;padding:var(--shell-padding);box-sizing:border-box;font:inherit;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.2}.crt:hover{background:var(--shell-background-hover)}.crt[data-open=true]{border-color:var(--shell-color-accent);color:var(--shell-color-accent)}.crc{display:inline-flex;width:var(--shell-icon-size);height:var(--shell-icon-size);flex-shrink:0;color:var(--shell-color-muted)}.crt[data-open=true] .crc{color:var(--shell-color-accent)}.crp{position:absolute;top:calc(100% + var(--shell-gap-sm));z-index:var(--shell-z);min-width:var(--dropdown-min-width);max-width:var(--dropdown-max-width);max-height:var(--dropdown-max-height);overflow:auto;padding:var(--shell-gap-sm);box-sizing:border-box;background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);box-shadow:var(--popup-shadow)}.crp[data-align=start]{left:0}.crp[data-align=end]{right:0}.crh{margin:0;padding:var(--shell-padding);font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);color:var(--shell-color-muted);line-height:1.3}.crg{display:flex;flex-direction:column;gap:2px}.crd{height:0;margin:var(--shell-gap-sm) 0;border:0;border-top:1px solid var(--shell-border)}.cri{display:flex;align-items:center;gap:var(--shell-gap-sm);width:100%;margin:0;padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;font-size:var(--shell-font-size);font-weight:500;color:var(--shell-color);background:transparent;border:none;border-radius:calc(var(--shell-radius) * .7);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.35}.cri:hover:not(:disabled),.cri:focus-visible:not(:disabled){background:var(--shell-background-hover);outline:none}.cri[data-checked=true]{background:var(--shell-background-selected)}.cri[data-danger=true]{color:var(--shell-color-danger)}.cri:disabled,.cri[aria-disabled=true]{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.crn,.crk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.crk{color:var(--shell-color-accent)}.crl{flex:1;min-width:0}.cru{flex-shrink:0;margin-left:auto;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.crm{display:inline-flex;flex-shrink:0;margin-left:auto;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.crb{display:inline-flex;flex-shrink:0;width:var(--shell-status-size);height:var(--shell-status-size);border-radius:50%}.cro{background:var(--shell-color-success)}.crf{background:var(--shell-color-muted)}.crx{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;box-sizing:border-box;width:var(--shell-check-size);height:var(--shell-check-size);border:1px solid var(--shell-border);border-radius:calc(var(--shell-radius) * .4);background:var(--shell-background);color:#fff}.cry{border-color:var(--shell-color-accent);background:var(--shell-color-accent)}.crv{width:70%;height:70%;display:block}}
16
16
 
17
- @layer elcrm-components{.chr{display:flex;align-items:center;gap:var(--header-gap);flex-shrink:0;min-height:var(--header-height);padding:var(--header-padding);color:var(--header-color);background:var(--header-background);border-bottom:1px solid var(--header-border);border-radius:var(--header-radius);box-shadow:var(--header-shadow);margin:var(--header-margin);position:relative;z-index:var(--header-z)}.chb{flex-shrink:0}.chn{display:flex;align-items:center;min-width:0}.chs{flex:1;min-width:0;margin-left:auto;max-width:18rem}.cha{display:flex;align-items:center;gap:.5rem;flex-shrink:0;margin-left:auto}.chs+.cha{margin-left:0}}
17
+ @layer elcrm-components{.cpr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--shell-gap);padding:var(--shell-padding);text-align:center;color:var(--shell-color-muted)}.cpi{display:flex;margin-bottom:var(--shell-gap-sm);color:var(--shell-color-muted)}.cpt{margin:0;font-size:var(--shell-font-size-lg);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.cpd{margin:0;max-width:22rem;font-size:var(--shell-font-size);color:var(--shell-color-muted);line-height:1.45}.cpa{display:flex;flex-wrap:wrap;gap:var(--shell-gap-sm);justify-content:center;margin-top:var(--shell-gap)}}
18
18
 
19
- @layer elcrm-components{.cir{display:flex;align-items:center;gap:var(--item-gap);padding:var(--item-padding);color:var(--item-color);background:var(--item-background);border:1px solid var(--item-border);border-radius:var(--item-radius);cursor:default}.cir:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer}.cir:hover{background:var(--item-background-hover)}.cia,.cir[aria-current=true],.cir[data-active=true]{background:var(--item-background-active)}}
19
+ @layer elcrm-components{.cfr{padding:var(--shell-padding);color:var(--shell-color-muted);background:transparent;border-top:1px solid var(--shell-border);font-size:var(--shell-font-size-sm)}}
20
20
 
21
- @layer elcrm-components{.clr{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;max-height:100%;overflow:hidden;background:var(--layout-background);gap:var(--layout-gap)}.clm{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;overflow:hidden}}
21
+ @layer elcrm-components{.chr{display:flex;align-items:center;gap:var(--shell-gap);flex-shrink:0;min-height:var(--header-height);padding:var(--shell-padding);color:var(--shell-color);background:var(--shell-background);border-bottom:1px solid var(--shell-border);border-radius:var(--header-radius);box-shadow:var(--header-shadow);margin:var(--header-margin);position:relative;z-index:var(--header-z)}.chb{flex-shrink:0}.chn{display:flex;align-items:center;min-width:0}.chs{flex:1;min-width:0;margin-left:auto;max-width:18rem}.cha{display:flex;align-items:center;gap:var(--shell-gap-sm);flex-shrink:0;margin-left:auto}.chs+.cha{margin-left:0}}
22
22
 
23
- @layer elcrm-components{.csr{display:flex;flex-direction:column;gap:var(--list-gap);padding:var(--list-padding);margin:0;list-style:none}.csh{flex-direction:row;flex-wrap:wrap}}
23
+ @layer elcrm-components{.cir{display:flex;align-items:center;gap:var(--shell-gap-sm);padding:var(--shell-padding);color:var(--shell-color);background:transparent;border:1px solid transparent;border-radius:var(--shell-radius);cursor:default}.cir:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer}.cir:hover{background:var(--shell-background-hover)}.cia,.cir[aria-current=true],.cir[data-active=true]{background:var(--shell-background-selected)}}
24
24
 
25
- @layer elcrm-components{.cgr{display:flex;align-items:center;justify-content:center;padding:var(--loading-padding);color:var(--loading-color)}}
25
+ @layer elcrm-components{.clr{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;max-height:100%;overflow:hidden;background:var(--shell-background-muted);gap:0}.clm{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;overflow:hidden}}
26
26
 
27
- @layer elcrm-components{.cmr{display:flex;align-items:center;gap:var(--menu-gap);margin:0;padding:0;list-style:none}.cmv{flex-direction:column;align-items:stretch}.cmi{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;border:0;background:var(--menu-item-background);color:var(--menu-item-color);padding:var(--menu-item-padding);border-radius:var(--menu-item-radius);font:inherit;line-height:1;cursor:pointer;text-align:left}.cmi>svg{display:block;flex-shrink:0}.cmi:hover{background:var(--menu-item-background-hover);color:var(--menu-item-color-active)}.cma,.cmi[aria-current=page],.cmi[data-active=true]{background:var(--menu-item-background-active);color:var(--menu-item-color-active)}}
27
+ @layer elcrm-components{.csr{display:flex;flex-direction:column;gap:var(--shell-gap-sm);padding:0;margin:0;list-style:none}.csh{flex-direction:row;flex-wrap:wrap}}
28
28
 
29
- @layer elcrm-components{.cvr{display:flex;align-items:stretch;gap:var(--nav-sections-gap);width:100%;flex:1 1 auto;min-height:0;box-sizing:border-box;padding:var(--nav-sections-padding)}.cvn{display:flex;flex-direction:column;gap:1rem;flex:0 0 var(--nav-sections-nav-width);width:var(--nav-sections-nav-width);min-width:var(--nav-sections-nav-width);box-sizing:border-box}.cvg{display:flex;flex-direction:column;gap:2px;padding-bottom:.75rem;border-bottom:1px solid var(--nav-sections-group-border)}.cvg:last-of-type{border-bottom:none;padding-bottom:0}.cvl{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--nav-sections-label-color);padding:0 10px 6px}.cvi{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:none;border-radius:var(--nav-sections-item-radius);background:transparent;color:var(--nav-sections-item-color);font:inherit;font-size:14px;padding:var(--nav-sections-item-padding);cursor:pointer;position:relative;transition:background .12s ease,color .12s ease}.cvi:hover:not(:disabled){background:var(--nav-sections-item-background-hover)}.cva{background:var(--nav-sections-item-background-active)}.cva:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 2px 2px 0;background:var(--nav-sections-accent)}.cvi:disabled{opacity:.45;cursor:not-allowed}.cvc{display:inline-flex;flex:0 0 auto;color:var(--nav-sections-icon-color);line-height:0}.cva .cvc{color:var(--nav-sections-item-color)}.cvt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cvf{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--nav-sections-footer-border)}.cvm{flex:1 1 auto;min-width:0;max-width:var(--nav-sections-main-max-width);width:100%;min-height:0;overflow:auto;--section-padding: 0}@media (max-width: 720px){.cvr{flex-direction:column}.cvn{flex:none;width:100%;min-width:0;max-width:none}}}
29
+ @layer elcrm-components{.cgr{display:flex;align-items:center;justify-content:center;padding:var(--shell-gap-lg);color:var(--shell-color-muted)}}
30
30
 
31
- @layer elcrm-components{.cwr{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--row-gap)}}
31
+ @layer elcrm-components{.cmr{display:flex;align-items:center;gap:var(--shell-gap-sm);margin:0;padding:0;list-style:none}.cmv{flex-direction:column;align-items:stretch}.cmi{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--shell-color-muted);padding:var(--shell-padding);border-radius:var(--shell-radius);font:inherit;line-height:1;cursor:pointer;text-align:left}.cmi>svg{display:block;flex-shrink:0}.cmi:hover{background:var(--shell-background-hover);color:var(--shell-color)}.cma,.cmi[aria-current=page],.cmi[data-active=true]{background:var(--shell-background-selected);color:var(--shell-color)}}
32
32
 
33
- @layer elcrm-components{.cep{display:flex;flex-direction:column;gap:var(--section-gap);padding:var(--section-padding);flex:1;min-width:0}.ceu{box-sizing:border-box;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:var(--section-auth-padding)}.cek{box-sizing:border-box;width:100%;max-width:var(--section-auth-card-max-width);padding:var(--section-auth-card-padding);background:var(--section-auth-card-background);border:1px solid var(--section-auth-card-border);border-radius:var(--section-auth-card-radius);box-shadow:var(--section-auth-card-shadow);display:flex;flex-direction:column;gap:var(--section-gap)}.ceh{display:flex;flex-direction:column;gap:.35rem}.cec{text-align:center;align-items:center}.cei{display:flex;margin-bottom:var(--section-icon-gap)}.cec .cei{justify-content:center}.cet{margin:0;font-size:var(--section-title-size);font-weight:600;letter-spacing:-.02em;color:var(--section-title-color);line-height:1.25}.ced{font-size:var(--section-title-size-md)}.cee{margin:0;font-size:var(--section-description-size);color:var(--section-description-color);line-height:1.45}.ceb{display:flex;flex-direction:column;gap:var(--section-body-gap);width:100%;text-align:left}.ces{display:flex;flex-direction:column;gap:var(--section-actions-gap);width:100%}.cel{display:flex;flex-direction:column;gap:var(--section-gap);margin-bottom:var(--section-block-margin-bottom);padding-bottom:var(--section-block-padding-bottom);border-bottom:1px solid var(--section-block-border)}.cel:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}.cel .cet{font-size:.95rem;font-weight:600}}
33
+ @layer elcrm-components{.cvr{display:flex;align-items:stretch;gap:var(--shell-gap-lg);width:100%;flex:1 1 auto;min-height:0;box-sizing:border-box;padding:var(--nav-sections-padding)}.cvn{display:flex;flex-direction:column;gap:var(--shell-gap);flex:0 0 var(--nav-sections-nav-width);width:var(--nav-sections-nav-width);min-width:var(--nav-sections-nav-width);box-sizing:border-box}.cvg{display:flex;flex-direction:column;gap:2px;padding-bottom:var(--shell-gap);border-bottom:1px solid var(--shell-border)}.cvg:last-of-type{border-bottom:none;padding-bottom:0}.cvl{font-size:11px;font-weight:var(--shell-font-weight);letter-spacing:.04em;text-transform:uppercase;color:var(--shell-color-muted);padding:0 var(--shell-padding-inline) var(--shell-gap-sm)}.cvi{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;gap:var(--shell-gap-sm);width:100%;text-align:left;border:none;border-radius:var(--shell-radius);background:transparent;color:var(--shell-color);font:inherit;font-size:var(--shell-font-size-sm);padding:var(--shell-padding);cursor:pointer;position:relative}.cvi:hover:not(:disabled){background:var(--shell-background-hover)}.cva{background:var(--shell-background-selected)}.cva:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 2px 2px 0;background:var(--shell-color-accent)}.cvi:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cvc{display:inline-flex;flex:0 0 auto;color:var(--shell-color-muted);line-height:0}.cva .cvc{color:var(--shell-color)}.cvt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cvf{margin-top:auto;padding-top:var(--shell-gap);border-top:1px solid var(--shell-border)}.cvm{flex:1 1 auto;min-width:0;max-width:var(--nav-sections-main-max-width);width:100%;min-height:0;overflow:auto}@media (max-width: 720px){.cvr{flex-direction:column}.cvn{flex:none;width:100%;min-width:0;max-width:none}}}
34
34
 
35
- @layer elcrm-components{.ctr{display:flex;flex-direction:column;gap:var(--tab-sections-gap);width:100%;min-width:0}.ctb{display:flex;align-items:flex-end;gap:1rem;border-bottom:1px solid var(--tab-sections-border);min-width:0}.ctn{display:flex;align-items:stretch;gap:var(--tab-sections-tab-gap);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin}.ctt{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:.4rem;flex:0 0 auto;margin:0 0 -1px;padding:var(--tab-sections-tab-padding);border:none;border-bottom:2px solid transparent;background:transparent;color:var(--tab-sections-color);font:inherit;font-size:.95rem;font-weight:500;white-space:nowrap;cursor:pointer;transition:color .12s ease,border-color .12s ease}.ctt:hover:not(:disabled){color:var(--tab-sections-color-active)}.cta{color:var(--tab-sections-color-active);border-bottom-color:var(--tab-sections-accent)}.ctt:disabled{opacity:.45;cursor:not-allowed}.cte{display:inline-flex;align-items:center;justify-content:center;min-width:1.15em;height:1.15em;padding:0 .35em;border-radius:999px;background:var(--tab-sections-badge-background);color:var(--tab-sections-badge-color);font-size:var(--tab-sections-badge-size);font-style:normal;font-weight:700;line-height:1}.cts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:.35rem}.ctm{min-width:0;width:100%}}
35
+ @layer elcrm-components{.ccr{margin:0 0 var(--shell-gap-lg)}.ccw{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--shell-gap)}.cct{min-width:0;max-width:36rem}.cch{margin:0;font-size:var(--section-title-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.25}.ccs{margin:var(--shell-gap-sm) 0 0;font-size:var(--shell-font-size);color:var(--shell-color-muted);line-height:1.45}.cca{display:flex;flex-wrap:wrap;align-items:center;gap:var(--shell-gap-sm)}}
36
+
37
+ @layer elcrm-components{.ckr{flex:1 1 auto;min-height:0;height:100%;width:100%;display:flex;flex-direction:column;box-sizing:border-box;padding:var(--shell-padding);overflow:hidden}.ckw{max-width:none}.ckb{flex:1 1 auto;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:var(--shell-gap)}.ckf{flex:0 0 auto;padding-top:var(--shell-gap-sm)}}
38
+
39
+ @layer elcrm-components{.cur{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--pricing-card-min-width),1fr));gap:var(--shell-gap-lg);align-items:stretch}.cui{position:relative;display:flex;flex-direction:column;gap:var(--shell-gap);padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;color:var(--shell-color);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);box-shadow:var(--shell-shadow)}.cui[data-selectable=true]{cursor:pointer}.cui:disabled,.cui[aria-disabled=true]{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cus,.cui[data-selected=true],.cui[data-highlighted=true]{border-color:var(--shell-color-accent);background:var(--shell-background-selected);box-shadow:var(--shell-shadow)}.cub{display:flex;align-items:center;justify-content:center;margin:calc(-1 * var(--shell-padding-block)) calc(-1 * var(--shell-padding-inline)) 0;padding:var(--shell-gap-sm) var(--shell-padding-inline);border-radius:var(--shell-radius) var(--shell-radius) 0 0;background:var(--shell-color-accent);color:#fff;font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);text-align:center}.cug{display:inline-flex;align-items:center;width:fit-content;padding:.15rem .5rem;border-radius:999px;background:var(--shell-background-hover);color:var(--shell-color-accent);font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);line-height:1.2}.cua{position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.cum{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:calc(var(--shell-icon-size) * 1.6);height:calc(var(--shell-icon-size) * 1.6);color:var(--shell-color-accent);background:var(--shell-background-hover);border-radius:50%;overflow:hidden}.cuh{display:flex;flex-wrap:wrap;align-items:center;gap:var(--shell-gap-sm)}.cut{margin:0;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.cup{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--shell-gap-sm)}.cuz{font-size:calc(var(--shell-font-size-lg) * 1.35);font-weight:700;color:var(--shell-color);line-height:1.15}.cui[data-highlighted=true] .cuz,.cui[data-selected=true] .cuz{color:var(--shell-color-accent)}.cuo{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);text-decoration:line-through}.cue{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.cud{margin:0;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);line-height:1.45}.cux{display:flex;flex-direction:column;gap:var(--shell-gap-sm)}.cuf{display:flex;flex-direction:column;gap:var(--shell-gap-sm);margin:auto calc(-1 * var(--shell-padding-inline)) calc(-1 * var(--shell-padding-block));padding:var(--shell-padding);background:var(--shell-background-muted);border-top:1px solid var(--shell-border);border-radius:0 0 var(--shell-radius) var(--shell-radius)}.cuy{display:flex;flex-direction:column;gap:var(--shell-gap-sm);margin-top:auto}.cul{margin:0;font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);letter-spacing:.04em;text-transform:uppercase;color:var(--shell-color-muted)}.cuu{margin:0;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);line-height:1.4}.cun{display:flex;flex-direction:column;gap:var(--shell-gap-sm);margin:0;padding:0;list-style:none}.cuc{display:flex;align-items:flex-start;gap:var(--shell-gap-sm);font-size:var(--shell-font-size-sm);color:var(--shell-color);line-height:1.4}.cuk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-check-size);height:var(--shell-check-size);margin-top:.1em;color:#fff;background:var(--shell-color-success);border-radius:50%}.cuw{width:60%;height:60%;display:block}}
40
+
41
+ @layer elcrm-components{.cxr{display:grid;width:100%;column-gap:var(--shell-gap);row-gap:0;align-items:stretch;overflow-x:auto}.cxh{display:flex;flex-direction:column;gap:var(--shell-gap-sm);padding:var(--shell-padding);box-sizing:border-box;color:var(--shell-color);background:var(--shell-background);border:1px solid transparent;border-radius:var(--shell-radius)}.cxh[data-highlighted=true]{border-color:var(--shell-color-accent);background:var(--shell-background-selected)}.cxm{display:flex;align-items:center;justify-content:center;width:calc(var(--shell-icon-size) * 1.4);height:calc(var(--shell-icon-size) * 1.4);color:var(--shell-color-accent);background:var(--shell-background-hover);border-radius:var(--shell-radius);overflow:hidden}.cxn{display:flex;flex-wrap:wrap;align-items:center;gap:var(--shell-gap-sm)}.cxt{margin:0;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.cxg{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:999px;background:var(--shell-background-hover);color:var(--shell-color-accent);font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight)}.cxp{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--shell-gap-sm)}.cxz{font-size:var(--shell-font-size-lg);font-weight:700;color:var(--shell-color);line-height:1.15}.cxo{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);text-decoration:line-through}.cxe{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.cxd{margin:0;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);line-height:1.45}.cxx{display:flex;flex-direction:column;gap:var(--shell-gap-sm)}.cxb{grid-column:1 / -1;margin:var(--shell-gap) 0 var(--shell-gap-sm);padding:0;font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);color:var(--shell-color-accent)}.cxf,.cxy{display:contents}.cxy>*{padding:var(--shell-padding);box-sizing:border-box;border-bottom:1px solid var(--shell-border);background:var(--shell-background)}.cxy[data-alt=true]>*{background:var(--shell-background-muted)}.cxl{display:flex;align-items:center;gap:var(--shell-gap-sm);font-size:var(--shell-font-size-sm);color:var(--shell-color);line-height:1.4}.cxw{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-status-size);height:var(--shell-status-size);padding:0;border:1px solid var(--shell-border);border-radius:50%;background:transparent;color:var(--shell-color-muted);font-size:9px;line-height:1;cursor:help}.cxc{display:flex;align-items:center;justify-content:center;text-align:center;font-size:var(--shell-font-size-sm);color:var(--shell-color);font-weight:500}.cxk{display:inline-flex;align-items:center;justify-content:center;width:var(--shell-check-size);height:var(--shell-check-size);color:#fff;background:var(--shell-color-success);border-radius:50%}.cxv{width:60%;height:60%;display:block}.cxa{color:var(--shell-color-muted)}.cxu{display:flex;flex-direction:column;gap:var(--shell-gap-sm);padding:var(--shell-padding);box-sizing:border-box}.cxq{min-width:var(--pricing-table-label-width)}}
42
+
43
+ @layer elcrm-components{.cqr{display:flex;flex-direction:column;gap:var(--shell-gap)}.cqi{display:flex;align-items:flex-start;gap:var(--shell-gap);width:100%;margin:0;padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;color:var(--shell-color);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.cqi:hover:not(:disabled){background:var(--shell-background-hover)}.cqi:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cqs,.cqi[data-selected=true]{border-color:var(--shell-color-accent);background:var(--shell-background-selected)}.cqp{flex-direction:column;align-items:stretch;padding:0;gap:0}.cqp.cqs .cqh,.cqp[data-selected=true] .cqh{border-bottom-color:var(--shell-color-accent)}.cqn{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cqm{display:flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden}.cqf{width:var(--shell-icon-size);height:var(--shell-icon-size);padding:var(--shell-gap-sm);box-sizing:content-box;color:var(--shell-color-muted);background:var(--shell-background-muted);border:1px solid var(--shell-border);border-radius:var(--shell-radius)}.cqc{display:flex;flex:1;flex-direction:column;gap:var(--shell-gap-sm);min-width:0}.cqt{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--shell-gap-sm);font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.cqe{font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color-muted)}.cqd{margin:0;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);line-height:1.45}.cqx{display:flex;flex-wrap:wrap;gap:var(--shell-gap-sm);margin-top:var(--shell-gap-sm)}.cqh{display:flex;align-items:center;gap:var(--shell-gap);padding:var(--shell-padding);border-bottom:1px solid var(--shell-border)}.cqh .cqt{flex:1;min-width:0}.cqy{display:flex;flex-direction:column;gap:var(--shell-gap-sm);padding:var(--shell-padding)}.cqz{font-size:var(--shell-font-size-lg);font-weight:700;color:var(--shell-color);line-height:1.2}.cqk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-check-size);height:var(--shell-check-size);margin-left:auto;box-sizing:border-box;border:1px solid var(--shell-border);background:var(--shell-background);color:#fff}.cqi[data-indicator=start]>.cqk{margin-left:0;order:-1}.cqo{border-radius:50%}.cqo[data-on=true]{border-color:var(--shell-color-accent);background:var(--shell-color-accent);box-shadow:inset 0 0 0 3px var(--shell-background-selected)}.cqq{border-radius:calc(var(--shell-radius) * .4)}.cqq[data-on=true]{border-color:var(--shell-color-accent);background:var(--shell-color-accent)}.cqw{width:60%;height:60%;display:block}}
44
+
45
+ @layer elcrm-components{.cep{display:flex;flex-direction:column;gap:var(--shell-gap);padding:var(--section-padding);flex:1;min-width:0}.ceu{box-sizing:border-box;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:var(--section-padding)}.cek{box-sizing:border-box;width:100%;max-width:var(--section-auth-card-max-width);padding:var(--shell-gap-lg);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);box-shadow:var(--shell-shadow);display:flex;flex-direction:column;gap:var(--shell-gap)}.ceh{display:flex;flex-direction:column;gap:var(--shell-gap-sm)}.cec{text-align:center;align-items:center}.cei{display:flex;margin-bottom:var(--shell-gap-sm)}.cec .cei{justify-content:center}.cet{margin:0;font-size:var(--section-title-size);font-weight:var(--shell-font-weight);letter-spacing:-.02em;color:var(--shell-color);line-height:1.25}.ced{font-size:var(--section-title-size-md)}.cee{margin:0;font-size:var(--shell-font-size);color:var(--shell-color-muted);line-height:1.45}.ceb{display:flex;flex-direction:column;gap:var(--shell-gap);width:100%;text-align:left}.ces{display:flex;flex-direction:column;gap:var(--shell-gap-sm);width:100%}.cel{display:flex;flex-direction:column;gap:var(--shell-gap);margin-bottom:var(--shell-gap-lg);padding-bottom:var(--shell-gap-lg);border-bottom:1px solid var(--shell-border)}.cel:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}.cel .cet{font-size:var(--shell-font-size);font-weight:var(--shell-font-weight)}}
46
+
47
+ @layer elcrm-components{.c1r{display:flex;flex-direction:column;gap:var(--shell-gap)}.c1h{flex-direction:row;flex-wrap:wrap;align-items:center}}
48
+
49
+ @layer elcrm-components{.ctr{display:flex;flex-direction:column;gap:var(--shell-gap);width:100%;min-width:0}.ctb{display:flex;align-items:flex-end;gap:var(--shell-gap);border-bottom:1px solid var(--shell-border);min-width:0}.ctn{display:flex;align-items:stretch;gap:var(--shell-gap-lg);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin}.ctt{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:var(--shell-gap-sm);flex:0 0 auto;margin:0 0 -1px;padding:var(--shell-padding-block) .15rem;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--shell-color-muted);font:inherit;font-size:var(--shell-font-size);font-weight:500;white-space:nowrap;cursor:pointer}.ctt:hover:not(:disabled){color:var(--shell-color)}.cta{color:var(--shell-color);border-bottom-color:var(--shell-color-accent)}.ctt:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cte{display:inline-flex;align-items:center;justify-content:center;min-width:1.15em;height:1.15em;padding:0 .35em;border-radius:999px;background:var(--shell-color-danger);color:#fff;font-size:11px;font-style:normal;font-weight:700;line-height:1}.cts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:var(--shell-gap-sm)}.ctm{min-width:0;width:100%}}
package/dist/index.d.ts CHANGED
@@ -16,8 +16,14 @@ export { Row } from './Row';
16
16
  export type { RowProps } from './Row';
17
17
  export { Column } from './Column';
18
18
  export type { ColumnProps } from './Column';
19
+ export { Stack } from './Stack';
20
+ export type { StackProps, StackDirection } from './Stack';
19
21
  export { Menu } from './Menu';
20
22
  export type { MenuProps, MenuItem } from './Menu';
23
+ export { Dropdown } from './Dropdown';
24
+ export type { DropdownProps, DropdownItem, DropdownGroup, } from './Dropdown';
25
+ export { Breadcrumb } from './Breadcrumb';
26
+ export type { BreadcrumbProps, BreadcrumbItem, BreadcrumbSeparator, } from './Breadcrumb';
21
27
  export { Loading } from './Loading';
22
28
  export type { LoadingProps } from './Loading';
23
29
  export { Section } from './Section';
@@ -27,13 +33,27 @@ export type { NavSectionsProps, NavSectionsGroup, NavSectionsItem, } from './Nav
27
33
  export { TabSections } from './TabSections';
28
34
  export type { TabSectionsProps, TabSectionsItem } from './TabSections';
29
35
  export { Avatar, initialsFromName } from './Avatar';
30
- export type { AvatarProps } from './Avatar';
36
+ export type { AvatarProps, AvatarStatus } from './Avatar';
37
+ export { AvatarGroup } from './AvatarGroup';
38
+ export type { AvatarGroupProps, AvatarGroupItem } from './AvatarGroup';
39
+ export { AvatarName } from './AvatarName';
40
+ export type { AvatarNameProps } from './AvatarName';
31
41
  export { Badge } from './Badge';
32
42
  export type { BadgeProps } from './Badge';
33
43
  export { Brand } from './Brand';
34
44
  export type { BrandProps } from './Brand';
35
45
  export { EmptyState } from './EmptyState';
36
46
  export type { EmptyStateProps } from './EmptyState';
47
+ export { RadioGroup } from './RadioGroup';
48
+ export type { RadioGroupProps, RadioGroupItem, RadioIndicator, RadioIndicatorSide, } from './RadioGroup';
49
+ export { PricingGroup } from './PricingGroup';
50
+ export type { PricingGroupProps, PricingPlan, PricingGroupItem, PricingFeature, } from './PricingGroup';
51
+ export { PricingTable } from './PricingTable';
52
+ export type { PricingTableProps, PricingTableItem, PricingTableSection, PricingTableRow, PricingTableCellValue, } from './PricingTable';
53
+ export { PageHead } from './PageHead';
54
+ export type { PageHeadProps } from './PageHead';
55
+ export { PageShell } from './PageShell';
56
+ export type { PageShellProps } from './PageShell';
37
57
  export { createLazyResolver } from './lazyRoute';
38
58
  export type { LazyRouteChunk } from './lazyRoute';
39
59
  export { cx } from './cx';
package/dist/index.es.js CHANGED
@@ -1,47 +1,67 @@
1
- import { L as p } from "./Layout-Xb3-xsmA.js";
1
+ import { L as f } from "./Layout-Xb3-xsmA.js";
2
2
  import { H as i } from "./Header-Cf28eyjW.js";
3
3
  import { F as n } from "./Footer-qxUlnPR9.js";
4
- import { L as u } from "./List-BgKkYaGO.js";
5
- import { I as d } from "./Item-CaU4RW2G.js";
4
+ import { L as d } from "./List-BgKkYaGO.js";
5
+ import { I as B } from "./Item-CaU4RW2G.js";
6
6
  import { C as S } from "./Card-hn37Opo3.js";
7
- import { B as C } from "./Block-CVKukh1e.js";
8
- import { R as F } from "./Row-CnD7Q7pD.js";
9
- import { C as R } from "./Column-DlNrvFq1.js";
10
- import { M as A } from "./Menu-DS7zKQbY.js";
11
- import { L as H } from "./Loading-ChGq9peU.js";
12
- import { S as M } from "./Section-Crxk2J-E.js";
13
- import { N as b } from "./NavSections-CM-VPai2.js";
14
- import { T as k } from "./TabSections-oeEBx0nM.js";
15
- import { A as j, i as q } from "./Avatar-DHNPaIjZ.js";
16
- import { B as G } from "./Badge-l6nUkl-H.js";
17
- import { B as K } from "./Brand-Zq-Idks4.js";
18
- import { E as P } from "./EmptyState-mBiWtMIM.js";
19
- import { lazy as t } from "react";
20
- import { c as U } from "./cx-CcykAxZN.js";
21
- function m(a) {
22
- const r = {};
23
- return (o) => (r[o] || (r[o] = t(() => a(o))), r[o]);
7
+ import { B as A } from "./Block-BAXh0PPp.js";
8
+ import { R } from "./Row--HIe6vb9.js";
9
+ import { C } from "./Column-DDaqX-A7.js";
10
+ import { S as b } from "./Stack-b0-XWwQ1.js";
11
+ import { M as F } from "./Menu-DRBHvSdJ.js";
12
+ import { D as H } from "./Dropdown-DQlDiWCR.js";
13
+ import { B as h } from "./Breadcrumb-CAM_e9LN.js";
14
+ import { L as w } from "./Loading-ChGq9peU.js";
15
+ import { S as D } from "./Section-Crxk2J-E.js";
16
+ import { N as I } from "./NavSections-NDcIDD6H.js";
17
+ import { T as j } from "./TabSections-DL7DufKU.js";
18
+ import { A as J, i as K } from "./Avatar-CyNXYvsa.js";
19
+ import { A as Q } from "./AvatarGroup-BAWas4pU.js";
20
+ import { A as V } from "./AvatarName-DhD3TytF.js";
21
+ import { B as X } from "./Badge-l6nUkl-H.js";
22
+ import { B as Z } from "./Brand-Zq-Idks4.js";
23
+ import { E as $ } from "./EmptyState-mBiWtMIM.js";
24
+ import { R as or } from "./RadioGroup-D2UUOTkY.js";
25
+ import { P as er } from "./PricingGroup-DgcdVSq8.js";
26
+ import { P as pr } from "./PricingTable-DALddSwM.js";
27
+ import { P as sr } from "./PageHead-Baz9BLuA.js";
28
+ import { P as xr } from "./PageShell-CghThHS3.js";
29
+ import { lazy as e } from "react";
30
+ import { c as cr } from "./cx-CcykAxZN.js";
31
+ function p(a) {
32
+ const o = {};
33
+ return (r) => (o[r] || (o[r] = e(() => a(r))), o[r]);
24
34
  }
25
35
  export {
26
- j as Avatar,
27
- G as Badge,
28
- C as Block,
29
- K as Brand,
36
+ J as Avatar,
37
+ Q as AvatarGroup,
38
+ V as AvatarName,
39
+ X as Badge,
40
+ A as Block,
41
+ Z as Brand,
42
+ h as Breadcrumb,
30
43
  S as Card,
31
- R as Column,
32
- P as EmptyState,
44
+ C as Column,
45
+ H as Dropdown,
46
+ $ as EmptyState,
33
47
  n as Footer,
34
48
  i as Header,
35
- d as Item,
36
- p as Layout,
37
- u as List,
38
- H as Loading,
39
- A as Menu,
40
- b as NavSections,
41
- F as Row,
42
- M as Section,
43
- k as TabSections,
44
- m as createLazyResolver,
45
- U as cx,
46
- q as initialsFromName
49
+ B as Item,
50
+ f as Layout,
51
+ d as List,
52
+ w as Loading,
53
+ F as Menu,
54
+ I as NavSections,
55
+ sr as PageHead,
56
+ xr as PageShell,
57
+ er as PricingGroup,
58
+ pr as PricingTable,
59
+ or as RadioGroup,
60
+ R as Row,
61
+ D as Section,
62
+ b as Stack,
63
+ j as TabSections,
64
+ p as createLazyResolver,
65
+ cr as cx,
66
+ K as initialsFromName
47
67
  };
@@ -1,9 +1,25 @@
1
1
  import { ComponentType, LazyExoticComponent } from 'react';
2
+ /**
3
+ * Lazy-компонент секции для {@link NavSections} / {@link TabSections}.
4
+ */
2
5
  export type LazyRouteChunk = LazyExoticComponent<ComponentType<Record<string, unknown>>>;
3
6
  /**
4
- * Кэш lazy-чанков: один lazy на сегмент (иначе remount при каждом рендере).
5
- * Шаблон import() должен быть статичным для Vite:
6
- * `createLazyResolver((k) => import(\`./sections/${k}.tsx\`))`
7
+ * Кэш lazy-чанков: один `lazy()` на сегмент (иначе remount при каждом рендере).
8
+ *
9
+ * Когда использовать: `resolveSection` у {@link NavSections} / {@link TabSections}.
10
+ * Шаблон `import()` должен быть статичным для Vite.
11
+ *
12
+ * @param load — функция загрузки модуля по сегменту (`value` пункта меню/вкладки).
13
+ * @returns резолвер `(segment) => LazyRouteChunk`.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const resolveSection = createLazyResolver(
18
+ * (v) => import(`./sections/${v}.tsx`),
19
+ * );
20
+ *
21
+ * <NavSections groups={groups} resolveSection={resolveSection} />
22
+ * ```
7
23
  */
8
24
  export declare function createLazyResolver(load: (segment: string) => Promise<{
9
25
  default: ComponentType<Record<string, unknown>>;
package/dist/light.css ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Цвета shell (@elcrm/components) для светлой темы — `elcrm css`.
3
+ * Палитра (--text, --muted, …) должна быть в theme-light приложения.
4
+ */
5
+ html[data-theme="light"],
6
+ body[data-theme="light"] {
7
+ --shell-color: var(--text);
8
+ --shell-color-muted: var(--muted);
9
+ --shell-color-accent: var(--accent);
10
+ --shell-color-danger: var(--danger);
11
+ --shell-color-success: var(--success);
12
+ --shell-color-warning: var(--warning);
13
+ --shell-border: var(--line);
14
+ --shell-background: var(--panel);
15
+ --shell-background-muted: var(--bg);
16
+ --shell-background-hover: color-mix(in srgb, var(--text) 6%, transparent);
17
+ --shell-background-selected: color-mix(in srgb, var(--accent) 10%, transparent);
18
+ --shell-shadow: var(--shadow);
19
+
20
+ --avatar-background: var(--shell-color-accent);
21
+ --avatar-color: var(--button-primary-fg);
22
+ --avatar-border: 1px solid var(--shell-border);
23
+ --avatar-outline-active: 2px solid
24
+ color-mix(in srgb, var(--accent) 70%, white);
25
+ }
@@ -1,3 +1,15 @@
1
1
  import { CSSProperties } from 'react';
2
- /** Число → px, строка как есть (например `0.75rem`) */
2
+ /**
3
+ * Inline-стиль `gap` для {@link Stack} (и устаревших Block/Row/Column).
4
+ *
5
+ * - число → `"Npx"`
6
+ * - строка → как есть (`"0.75rem"`)
7
+ * - `undefined` / `null` → стиль не задаём (берётся CSS-токен)
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * stackGapStyle(8) // { gap: "8px" }
12
+ * stackGapStyle("1rem") // { gap: "1rem" }
13
+ * ```
14
+ */
3
15
  export declare function stackGapStyle(gap?: number | string): CSSProperties | undefined;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Дефолты геометрии @elcrm/components для `elcrm css`.
3
+ * Цвета — light.css / dark.css. Не импортируй в runtime приложения как themes.css.
4
+ */
5
+ :root {
6
+ /* —— shell —— */
7
+ --shell-radius: var(--control-radius);
8
+ --shell-font-size: var(--control-font-size);
9
+ --shell-font-size-sm: 13px;
10
+ --shell-font-size-lg: 18px;
11
+ --shell-font-weight: 600;
12
+ --shell-gap: 12px;
13
+ --shell-gap-sm: 8px;
14
+ --shell-gap-lg: 16px;
15
+ --shell-padding-block: 10px;
16
+ --shell-padding-inline: 14px;
17
+ --shell-padding: var(--shell-padding-block) var(--shell-padding-inline);
18
+ --shell-icon-size: 20px;
19
+ --shell-check-size: 18px;
20
+ --shell-status-size: 10px;
21
+ --shell-disabled-opacity: 0.55;
22
+ --shell-z: var(--elcrm-z-popover, 1000);
23
+
24
+ /* —— узкие —— */
25
+ --header-radius: var(--shell-radius);
26
+ --header-height: 52px;
27
+ --header-shadow: none;
28
+ --header-margin: 0;
29
+ --header-z: 20;
30
+
31
+ --section-padding: 1.5rem 1.75rem 2.5rem;
32
+ --section-title-size: 1.5rem;
33
+ --section-title-size-md: 1.25rem;
34
+ --section-auth-card-max-width: 22rem;
35
+
36
+ --nav-sections-padding: 1.5rem 1.75rem 2.5rem;
37
+ --nav-sections-nav-width: 220px;
38
+ --nav-sections-main-max-width: 720px;
39
+
40
+ --avatar-size-s: 1.5rem;
41
+ --avatar-size-m: 2rem;
42
+ --avatar-size-l: 2.75rem;
43
+ --avatar-radius: 999px;
44
+ --avatar-font-size-s: 0.6rem;
45
+ --avatar-font-size-m: 0.7rem;
46
+ --avatar-font-size-l: 0.95rem;
47
+ --avatar-font-weight: 700;
48
+ --avatar-outline-offset: 0;
49
+ --avatar-group-overlap: -0.4rem;
50
+ --avatar-group-ring: 2px;
51
+
52
+ --dropdown-min-width: 12rem;
53
+ --dropdown-max-width: 20rem;
54
+ --dropdown-max-height: 20rem;
55
+ --pricing-card-min-width: 16rem;
56
+ --pricing-table-label-width: 10rem;
57
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elcrm/components",
3
- "version": "0.0.3",
4
- "description": "Shell UI elCRM: Layout, Header, Section, NavSections, Avatar и др. — стили через CSS-токены.",
3
+ "version": "0.1.1",
4
+ "description": "Shell UI elCRM: Layout, Header, PageHead, PageShell, Section, Stack, RadioGroup, Avatar и др.",
5
5
  "type": "module",
6
6
  "author": "MaSkal <dev@elcrm.online>",
7
7
  "license": "MIT",
@@ -59,6 +59,21 @@
59
59
  "require": "./dist/index.css",
60
60
  "default": "./dist/index.css"
61
61
  },
62
+ "./tokens.css": {
63
+ "import": "./dist/tokens.css",
64
+ "require": "./dist/tokens.css",
65
+ "default": "./dist/tokens.css"
66
+ },
67
+ "./light.css": {
68
+ "import": "./dist/light.css",
69
+ "require": "./dist/light.css",
70
+ "default": "./dist/light.css"
71
+ },
72
+ "./dark.css": {
73
+ "import": "./dist/dark.css",
74
+ "require": "./dist/dark.css",
75
+ "default": "./dist/dark.css"
76
+ },
62
77
  "./*": {
63
78
  "types": "./dist/*.d.ts",
64
79
  "import": {
@@ -70,7 +85,8 @@
70
85
  "./package.json": "./package.json"
71
86
  },
72
87
  "scripts": {
73
- "build": "vite build && node scripts/postbuild.mjs",
88
+ "build": "vite build",
89
+ "postbuild": "node scripts/postbuild.mjs",
74
90
  "check:css": "node scripts/check-css-scoped.mjs",
75
91
  "check:tokens": "node scripts/check-tokens.mjs",
76
92
  "test": "vitest run",
@@ -93,7 +109,7 @@
93
109
  "@types/react": "^18.2.66",
94
110
  "@types/react-dom": "^18.2.22",
95
111
  "@vitejs/plugin-react": "^4.3.1",
96
- "elcrm": "^1.0.0",
112
+ "elcrm": "file:../elCRM.cli",
97
113
  "jsdom": "^26.0.0",
98
114
  "react": "^18.2.0",
99
115
  "react-dom": "^18.2.0",
@@ -1,64 +0,0 @@
1
- import c from "react";
2
- import { c as b } from "./cx-CcykAxZN.js";
3
- import './Avatar.css';const g = "car", N = "cas", E = "cam", C = "cal", h = "caa", x = "cai", e = {
4
- r: g,
5
- s: N,
6
- m: E,
7
- l: C,
8
- a: h,
9
- i: x
10
- };
11
- function z(n) {
12
- const a = n.trim();
13
- if (!a) return "?";
14
- const s = a.split(/\s+/).filter(Boolean);
15
- return s.length >= 2 ? (s[0][0] + s[1][0]).toUpperCase() : a.slice(0, 2).toUpperCase();
16
- }
17
- function y(n) {
18
- const {
19
- src: a,
20
- alt: s,
21
- name: l,
22
- size: u = "m",
23
- active: r,
24
- children: p,
25
- className: v,
26
- as: d = "span",
27
- ...i
28
- } = n, f = u === "s" ? e.s : u === "l" ? e.l : e.m, o = b(e.r, f, r && e.a, v), t = s ?? l, m = a != null && a !== "" ? /* @__PURE__ */ c.createElement("img", { className: e.i, src: a, alt: t ?? "", draggable: !1 }) : p ?? (l != null ? z(l) : "?");
29
- return d === "button" ? /* @__PURE__ */ c.createElement(
30
- "button",
31
- {
32
- type: "button",
33
- className: o,
34
- "aria-label": t,
35
- "data-active": r ? "true" : void 0,
36
- ...i
37
- },
38
- m
39
- ) : d === "div" ? /* @__PURE__ */ c.createElement(
40
- "div",
41
- {
42
- className: o,
43
- role: t ? "img" : void 0,
44
- "aria-label": t,
45
- "data-active": r ? "true" : void 0,
46
- ...i
47
- },
48
- m
49
- ) : /* @__PURE__ */ c.createElement(
50
- "span",
51
- {
52
- className: o,
53
- role: t ? "img" : void 0,
54
- "aria-label": t,
55
- "data-active": r ? "true" : void 0,
56
- ...i
57
- },
58
- m
59
- );
60
- }
61
- export {
62
- y as A,
63
- z as i
64
- };
@@ -1,28 +0,0 @@
1
- import m from "react";
2
- import { c as n } from "./cx-CcykAxZN.js";
3
- import { s as i } from "./stackGap-CDsjER0g.js";
4
- import './Block.css';const l = "cbr", p = "cbh", t = {
5
- r: l,
6
- h: p
7
- };
8
- function k({
9
- row: r,
10
- gap: c,
11
- children: o,
12
- className: s,
13
- style: e,
14
- ...a
15
- }) {
16
- return /* @__PURE__ */ m.createElement(
17
- "div",
18
- {
19
- className: n(t.r, r && t.h, s),
20
- style: { ...i(c), ...e },
21
- ...a
22
- },
23
- o
24
- );
25
- }
26
- export {
27
- k as B
28
- };
package/dist/Block.css DELETED
@@ -1 +0,0 @@
1
- @layer elcrm-components{.cbr{display:flex;flex-direction:column;gap:var(--block-gap);padding:var(--block-padding)}.cbh{flex-direction:row;flex-wrap:wrap;align-items:center}}
@@ -1,26 +0,0 @@
1
- import e from "react";
2
- import { c as a } from "./cx-CcykAxZN.js";
3
- import { s as m } from "./stackGap-CDsjER0g.js";
4
- import './Column.css';const n = "cor", i = {
5
- r: n
6
- };
7
- function u({
8
- gap: r,
9
- children: t,
10
- className: o,
11
- style: s,
12
- ...c
13
- }) {
14
- return /* @__PURE__ */ e.createElement(
15
- "div",
16
- {
17
- className: a(i.r, o),
18
- style: { ...m(r), ...s },
19
- ...c
20
- },
21
- t
22
- );
23
- }
24
- export {
25
- u as C
26
- };
package/dist/Column.css DELETED
@@ -1 +0,0 @@
1
- @layer elcrm-components{.cor{display:flex;flex-direction:column;gap:var(--column-gap)}}