@dmitriikapustin/ui 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1690,10 +1690,9 @@ function Skeleton({ variant = "line", width, height, className = "" }) {
1690
1690
 
1691
1691
  // css-inject-scss:/Users/dimakozh/Desktop/projects/kapustin.cc/packages/ui/src/atoms/SectionHeading.module.scss
1692
1692
  __styleInject(`@charset "UTF-8";
1693
- /* SectionHeading \u2014 \u0435\u0434\u0438\u043D\u0430\u044F \u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430 \u0434\u043B\u044F section-h2 \u0432 \u043F\u0430\u043A\u0435\u0442\u0435 \u0438 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u044F\u0445.
1694
- \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0437\u0435\u0440\u043A\u0430\u043B\u044F\u0442 PromoSplit-module_heading / PromoTestimonials-module_heading. */
1693
+ /* SectionHeading \u2014 \u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430 \u0434\u043B\u044F section-headings.
1694
+ \u0422\u0440\u0438 \u0440\u0430\u0437\u043C\u0435\u0440\u0430: sm (sub-block), md (default, typical section h2), lg (landing promo). */
1695
1695
  .SectionHeading-module_heading {
1696
- font-size: clamp(1.75rem, 4vw, 2.75rem);
1697
1696
  font-weight: 700;
1698
1697
  line-height: 1.1;
1699
1698
  letter-spacing: -0.03em;
@@ -1702,6 +1701,21 @@ __styleInject(`@charset "UTF-8";
1702
1701
  margin: 0;
1703
1702
  }
1704
1703
 
1704
+ /* \u2014 \u0420\u0430\u0437\u043C\u0435\u0440\u044B (responsive clamp) \u2014 */
1705
+ .SectionHeading-module_sizeSm {
1706
+ font-size: clamp(1.125rem, 2.5vw, 1.375rem);
1707
+ letter-spacing: -0.02em;
1708
+ }
1709
+
1710
+ .SectionHeading-module_sizeMd {
1711
+ font-size: clamp(1.5rem, 3vw, 2rem);
1712
+ }
1713
+
1714
+ .SectionHeading-module_sizeLg {
1715
+ font-size: clamp(1.75rem, 4vw, 2.75rem);
1716
+ }
1717
+
1718
+ /* \u2014 \u0412\u044B\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u043D\u0438\u0435 \u2014 */
1705
1719
  .SectionHeading-module_alignLeft {
1706
1720
  text-align: left;
1707
1721
  }
@@ -1710,6 +1724,7 @@ __styleInject(`@charset "UTF-8";
1710
1724
  text-align: center;
1711
1725
  }
1712
1726
 
1727
+ /* \u2014 Wrapper \u0434\u043B\u044F subtitle \u2014 */
1713
1728
  .SectionHeading-module_wrap {
1714
1729
  display: flex;
1715
1730
  flex-direction: column;
@@ -1737,15 +1752,21 @@ __styleInject(`@charset "UTF-8";
1737
1752
  font-size: 1.125rem;
1738
1753
  }
1739
1754
  }`);
1740
- var __default20 = { "heading": "SectionHeading-module_heading", "alignLeft": "SectionHeading-module_alignLeft", "alignCenter": "SectionHeading-module_alignCenter", "wrap": "SectionHeading-module_wrap", "wrapCenter": "SectionHeading-module_wrapCenter", "subtitle": "SectionHeading-module_subtitle" };
1755
+ var __default20 = { "heading": "SectionHeading-module_heading", "sizeSm": "SectionHeading-module_sizeSm", "sizeMd": "SectionHeading-module_sizeMd", "sizeLg": "SectionHeading-module_sizeLg", "alignLeft": "SectionHeading-module_alignLeft", "alignCenter": "SectionHeading-module_alignCenter", "wrap": "SectionHeading-module_wrap", "wrapCenter": "SectionHeading-module_wrapCenter", "subtitle": "SectionHeading-module_subtitle" };
1756
+ var SIZE_CLASS = {
1757
+ sm: __default20.sizeSm,
1758
+ md: __default20.sizeMd,
1759
+ lg: __default20.sizeLg
1760
+ };
1741
1761
  function SectionHeading({
1742
1762
  children,
1763
+ size = "md",
1743
1764
  as = "h2",
1744
1765
  align = "left",
1745
1766
  subtitle,
1746
1767
  className = ""
1747
1768
  }) {
1748
- const headingClass = `${__default20.heading} ${align === "center" ? __default20.alignCenter : __default20.alignLeft}${className ? ` ${className}` : ""}`;
1769
+ const headingClass = `${__default20.heading} ${SIZE_CLASS[size]} ${align === "center" ? __default20.alignCenter : __default20.alignLeft}${className ? ` ${className}` : ""}`;
1749
1770
  if (subtitle) {
1750
1771
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: align === "center" ? __default20.wrapCenter : __default20.wrap, children: [
1751
1772
  react.createElement(as, { className: headingClass }, children),
@@ -6513,15 +6534,6 @@ __styleInject(`@charset "UTF-8";
6513
6534
  }
6514
6535
  }
6515
6536
 
6516
- .PromoSplit-module_heading {
6517
- font-size: clamp(1.75rem, 4vw, 2.75rem);
6518
- font-weight: 700;
6519
- line-height: 1.1;
6520
- letter-spacing: -0.03em;
6521
- color: var(--fg);
6522
- text-wrap: balance;
6523
- }
6524
-
6525
6537
  .PromoSplit-module_description {
6526
6538
  font-size: 1rem;
6527
6539
  line-height: 1.625;
@@ -6607,7 +6619,7 @@ __styleInject(`@charset "UTF-8";
6607
6619
  align-items: center;
6608
6620
  justify-content: center;
6609
6621
  }`);
6610
- var __default63 = { "root": "PromoSplit-module_root", "rootNoVertical": "PromoSplit-module_rootNoVertical", "grid": "PromoSplit-module_grid", "gridReversed": "PromoSplit-module_gridReversed PromoSplit-module_grid", "textColumn": "PromoSplit-module_textColumn", "textColumnLtr": "PromoSplit-module_textColumnLtr", "heading": "PromoSplit-module_heading", "description": "PromoSplit-module_description", "features": "PromoSplit-module_features", "feature": "PromoSplit-module_feature", "featureTitle": "PromoSplit-module_featureTitle", "featureDesc": "PromoSplit-module_featureDesc", "mediaColumn": "PromoSplit-module_mediaColumn", "mediaColumnLtr": "PromoSplit-module_mediaColumnLtr", "mediaBox": "PromoSplit-module_mediaBox", "mediaContent": "PromoSplit-module_mediaContent", "mediaPlaceholder": "PromoSplit-module_mediaPlaceholder", "placeholderCircle": "PromoSplit-module_placeholderCircle" };
6622
+ var __default63 = { "root": "PromoSplit-module_root", "rootNoVertical": "PromoSplit-module_rootNoVertical", "grid": "PromoSplit-module_grid", "gridReversed": "PromoSplit-module_gridReversed PromoSplit-module_grid", "textColumn": "PromoSplit-module_textColumn", "textColumnLtr": "PromoSplit-module_textColumnLtr", "description": "PromoSplit-module_description", "features": "PromoSplit-module_features", "feature": "PromoSplit-module_feature", "featureTitle": "PromoSplit-module_featureTitle", "featureDesc": "PromoSplit-module_featureDesc", "mediaColumn": "PromoSplit-module_mediaColumn", "mediaColumnLtr": "PromoSplit-module_mediaColumnLtr", "mediaBox": "PromoSplit-module_mediaBox", "mediaContent": "PromoSplit-module_mediaContent", "mediaPlaceholder": "PromoSplit-module_mediaPlaceholder", "placeholderCircle": "PromoSplit-module_placeholderCircle" };
6611
6623
  function PromoSplit({
6612
6624
  heading,
6613
6625
  description,
@@ -6621,7 +6633,7 @@ function PromoSplit({
6621
6633
  const noVerticalClass = verticalPadding === "none" ? ` ${__default63.rootNoVertical}` : "";
6622
6634
  return /* @__PURE__ */ jsxRuntime.jsx("section", { className: `${__default63.root}${noVerticalClass}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: isLeft ? __default63.gridReversed : __default63.grid, children: [
6623
6635
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${__default63.textColumn}${isLeft ? ` ${__default63.textColumnLtr}` : ""}`, children: [
6624
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: __default63.heading, children: heading }),
6636
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { size: "lg", children: heading }),
6625
6637
  description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: __default63.description, children: description }),
6626
6638
  features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: __default63.features, children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: __default63.feature, children: [
6627
6639
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: __default63.featureTitle, children: feature.title }),
@@ -7052,25 +7064,6 @@ __styleInject(`@charset "UTF-8";
7052
7064
  }
7053
7065
  }
7054
7066
 
7055
- .PromoTestimonials-module_heading {
7056
- font-size: clamp(1.75rem, 4vw, 2.75rem);
7057
- font-weight: 700;
7058
- line-height: 1.1;
7059
- letter-spacing: -0.03em;
7060
- color: var(--fg);
7061
- text-wrap: balance;
7062
- }
7063
-
7064
- .PromoTestimonials-module_subtitle {
7065
- margin-top: 0.75rem;
7066
- font-size: 1rem;
7067
- color: var(--fg-secondary);
7068
- line-height: 1.625;
7069
- max-width: 32rem;
7070
- margin-left: auto;
7071
- margin-right: auto;
7072
- }
7073
-
7074
7067
  .PromoTestimonials-module_cardsSection {
7075
7068
  padding: 0 1.5rem 2rem;
7076
7069
  }
@@ -7163,7 +7156,7 @@ __styleInject(`@charset "UTF-8";
7163
7156
  background: var(--bg-secondary);
7164
7157
  overflow: hidden;
7165
7158
  }`);
7166
- var __default66 = { "root": "PromoTestimonials-module_root", "rootNoVertical": "PromoTestimonials-module_rootNoVertical", "wrapper": "PromoTestimonials-module_wrapper", "avatarSection": "PromoTestimonials-module_avatarSection", "avatarStack": "PromoTestimonials-module_avatarStack", "avatarRing": "PromoTestimonials-module_avatarRing", "overflowBadge": "PromoTestimonials-module_overflowBadge", "overflowCircle": "PromoTestimonials-module_overflowCircle", "headingSection": "PromoTestimonials-module_headingSection", "heading": "PromoTestimonials-module_heading", "subtitle": "PromoTestimonials-module_subtitle", "cardsSection": "PromoTestimonials-module_cardsSection", "cardsGrid": "PromoTestimonials-module_cardsGrid", "card": "PromoTestimonials-module_card", "quote": "PromoTestimonials-module_quote", "author": "PromoTestimonials-module_author", "authorInfo": "PromoTestimonials-module_authorInfo", "authorName": "PromoTestimonials-module_authorName", "authorRole": "PromoTestimonials-module_authorRole", "mediaSection": "PromoTestimonials-module_mediaSection", "mediaBox": "PromoTestimonials-module_mediaBox" };
7159
+ var __default66 = { "root": "PromoTestimonials-module_root", "rootNoVertical": "PromoTestimonials-module_rootNoVertical", "wrapper": "PromoTestimonials-module_wrapper", "avatarSection": "PromoTestimonials-module_avatarSection", "avatarStack": "PromoTestimonials-module_avatarStack", "avatarRing": "PromoTestimonials-module_avatarRing", "overflowBadge": "PromoTestimonials-module_overflowBadge", "overflowCircle": "PromoTestimonials-module_overflowCircle", "headingSection": "PromoTestimonials-module_headingSection", "cardsSection": "PromoTestimonials-module_cardsSection", "cardsGrid": "PromoTestimonials-module_cardsGrid", "card": "PromoTestimonials-module_card", "quote": "PromoTestimonials-module_quote", "author": "PromoTestimonials-module_author", "authorInfo": "PromoTestimonials-module_authorInfo", "authorName": "PromoTestimonials-module_authorName", "authorRole": "PromoTestimonials-module_authorRole", "mediaSection": "PromoTestimonials-module_mediaSection", "mediaBox": "PromoTestimonials-module_mediaBox" };
7167
7160
  function PromoTestimonials({
7168
7161
  heading,
7169
7162
  subtitle,
@@ -7199,10 +7192,7 @@ function PromoTestimonials({
7199
7192
  testimonials.length - 5
7200
7193
  ] }) })
7201
7194
  ] }) }),
7202
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: __default66.headingSection, children: [
7203
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: __default66.heading, children: heading }),
7204
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: __default66.subtitle, children: subtitle })
7205
- ] }),
7195
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: __default66.headingSection, children: /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { size: "lg", align: "center", subtitle, children: heading }) }),
7206
7196
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: __default66.cardsSection, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: __default66.cardsGrid, children: testimonials.map((t, i) => {
7207
7197
  const initials = t.name.split(" ").map((n) => n[0]).join("").toUpperCase();
7208
7198
  return /* @__PURE__ */ jsxRuntime.jsxs(
package/dist/index.d.cts CHANGED
@@ -203,9 +203,17 @@ declare function Skeleton({ variant, width, height, className }: SkeletonProps):
203
203
 
204
204
  type HeadingTag = 'h1' | 'h2' | 'h3';
205
205
  type HeadingAlign = 'left' | 'center';
206
+ type HeadingSize = 'sm' | 'md' | 'lg';
206
207
  interface SectionHeadingProps {
207
208
  children: ReactNode;
208
- /** HTML-тег. Default `'h2'` (стандартный section heading). */
209
+ /**
210
+ * Размер заголовка (responsive clamp).
211
+ * - `'sm'` — `clamp(1.125rem, 2.5vw, 1.375rem)` ≈ 18-22px. Sub-block heading, card group titles.
212
+ * - `'md'` (default) — `clamp(1.5rem, 3vw, 2rem)` ≈ 24-32px. Typical section h2 (industry-standard).
213
+ * - `'lg'` — `clamp(1.75rem, 4vw, 2.75rem)` ≈ 28-44px. Landing promo section (= PromoSplit/PromoTestimonials).
214
+ */
215
+ size?: HeadingSize;
216
+ /** HTML-тег. Default `'h2'`. Не привязан к size — используй для семантики. */
209
217
  as?: HeadingTag;
210
218
  /** Выравнивание. Default `'left'`. */
211
219
  align?: HeadingAlign;
@@ -214,20 +222,21 @@ interface SectionHeadingProps {
214
222
  className?: string;
215
223
  }
216
224
  /**
217
- * Единый source для section-h2 типографики во всём пакете и потребителях.
218
- * Берёт ту же типографику что у `PromoSplit.heading` / `PromoTestimonials.heading`:
219
- * `font-size: clamp(1.75rem, 4vw, 2.75rem); line-height: 1.1; letter-spacing: -0.03em`.
225
+ * Единый source типографики для section-headings во всём пакете и потребителях.
226
+ * Три размера:
227
+ * - `sm` (18-22px) подсекции, group titles.
228
+ * - `md` (24-32px, default) — typical section h2 (industry-standard: shadcn / Tailwind UI / Linear).
229
+ * - `lg` (28-44px) — landing promo headings (идентично PromoSplit/PromoTestimonials).
220
230
  *
221
- * Закрывает кейс когда потребитель кладёт `FeatureGrid` / `BentoGrid` / `Gallery`
222
- * без встроенного title и вынужден захардкоживать ту же типографику в своём `.heading`
223
- * — теперь импортирует `<SectionHeading>` и получает единый стиль автоматически.
231
+ * Прop `as` (h1/h2/h3) независим от `size` используй для семантики:
224
232
  *
225
233
  * ```tsx
226
- * <SectionHeading>Почему гости выбирают этот отель</SectionHeading>
227
- * <FeatureGrid features={...} verticalPadding="none" />
234
+ * <SectionHeading>Section h2 default md size</SectionHeading>
235
+ * <SectionHeading size="lg" as="h1">Landing hero h1 — large</SectionHeading>
236
+ * <SectionHeading size="sm" as="h3">Subsection</SectionHeading>
228
237
  * ```
229
238
  */
230
- declare function SectionHeading({ children, as, align, subtitle, className, }: SectionHeadingProps): react_jsx_runtime.JSX.Element;
239
+ declare function SectionHeading({ children, size, as, align, subtitle, className, }: SectionHeadingProps): react_jsx_runtime.JSX.Element;
231
240
 
232
241
  interface TicketButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
233
242
  children: ReactNode;
package/dist/index.d.ts CHANGED
@@ -203,9 +203,17 @@ declare function Skeleton({ variant, width, height, className }: SkeletonProps):
203
203
 
204
204
  type HeadingTag = 'h1' | 'h2' | 'h3';
205
205
  type HeadingAlign = 'left' | 'center';
206
+ type HeadingSize = 'sm' | 'md' | 'lg';
206
207
  interface SectionHeadingProps {
207
208
  children: ReactNode;
208
- /** HTML-тег. Default `'h2'` (стандартный section heading). */
209
+ /**
210
+ * Размер заголовка (responsive clamp).
211
+ * - `'sm'` — `clamp(1.125rem, 2.5vw, 1.375rem)` ≈ 18-22px. Sub-block heading, card group titles.
212
+ * - `'md'` (default) — `clamp(1.5rem, 3vw, 2rem)` ≈ 24-32px. Typical section h2 (industry-standard).
213
+ * - `'lg'` — `clamp(1.75rem, 4vw, 2.75rem)` ≈ 28-44px. Landing promo section (= PromoSplit/PromoTestimonials).
214
+ */
215
+ size?: HeadingSize;
216
+ /** HTML-тег. Default `'h2'`. Не привязан к size — используй для семантики. */
209
217
  as?: HeadingTag;
210
218
  /** Выравнивание. Default `'left'`. */
211
219
  align?: HeadingAlign;
@@ -214,20 +222,21 @@ interface SectionHeadingProps {
214
222
  className?: string;
215
223
  }
216
224
  /**
217
- * Единый source для section-h2 типографики во всём пакете и потребителях.
218
- * Берёт ту же типографику что у `PromoSplit.heading` / `PromoTestimonials.heading`:
219
- * `font-size: clamp(1.75rem, 4vw, 2.75rem); line-height: 1.1; letter-spacing: -0.03em`.
225
+ * Единый source типографики для section-headings во всём пакете и потребителях.
226
+ * Три размера:
227
+ * - `sm` (18-22px) подсекции, group titles.
228
+ * - `md` (24-32px, default) — typical section h2 (industry-standard: shadcn / Tailwind UI / Linear).
229
+ * - `lg` (28-44px) — landing promo headings (идентично PromoSplit/PromoTestimonials).
220
230
  *
221
- * Закрывает кейс когда потребитель кладёт `FeatureGrid` / `BentoGrid` / `Gallery`
222
- * без встроенного title и вынужден захардкоживать ту же типографику в своём `.heading`
223
- * — теперь импортирует `<SectionHeading>` и получает единый стиль автоматически.
231
+ * Прop `as` (h1/h2/h3) независим от `size` используй для семантики:
224
232
  *
225
233
  * ```tsx
226
- * <SectionHeading>Почему гости выбирают этот отель</SectionHeading>
227
- * <FeatureGrid features={...} verticalPadding="none" />
234
+ * <SectionHeading>Section h2 default md size</SectionHeading>
235
+ * <SectionHeading size="lg" as="h1">Landing hero h1 — large</SectionHeading>
236
+ * <SectionHeading size="sm" as="h3">Subsection</SectionHeading>
228
237
  * ```
229
238
  */
230
- declare function SectionHeading({ children, as, align, subtitle, className, }: SectionHeadingProps): react_jsx_runtime.JSX.Element;
239
+ declare function SectionHeading({ children, size, as, align, subtitle, className, }: SectionHeadingProps): react_jsx_runtime.JSX.Element;
231
240
 
232
241
  interface TicketButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
233
242
  children: ReactNode;
package/dist/index.js CHANGED
@@ -1684,10 +1684,9 @@ function Skeleton({ variant = "line", width, height, className = "" }) {
1684
1684
 
1685
1685
  // css-inject-scss:/Users/dimakozh/Desktop/projects/kapustin.cc/packages/ui/src/atoms/SectionHeading.module.scss
1686
1686
  __styleInject(`@charset "UTF-8";
1687
- /* SectionHeading \u2014 \u0435\u0434\u0438\u043D\u0430\u044F \u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430 \u0434\u043B\u044F section-h2 \u0432 \u043F\u0430\u043A\u0435\u0442\u0435 \u0438 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u044F\u0445.
1688
- \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0437\u0435\u0440\u043A\u0430\u043B\u044F\u0442 PromoSplit-module_heading / PromoTestimonials-module_heading. */
1687
+ /* SectionHeading \u2014 \u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430 \u0434\u043B\u044F section-headings.
1688
+ \u0422\u0440\u0438 \u0440\u0430\u0437\u043C\u0435\u0440\u0430: sm (sub-block), md (default, typical section h2), lg (landing promo). */
1689
1689
  .SectionHeading-module_heading {
1690
- font-size: clamp(1.75rem, 4vw, 2.75rem);
1691
1690
  font-weight: 700;
1692
1691
  line-height: 1.1;
1693
1692
  letter-spacing: -0.03em;
@@ -1696,6 +1695,21 @@ __styleInject(`@charset "UTF-8";
1696
1695
  margin: 0;
1697
1696
  }
1698
1697
 
1698
+ /* \u2014 \u0420\u0430\u0437\u043C\u0435\u0440\u044B (responsive clamp) \u2014 */
1699
+ .SectionHeading-module_sizeSm {
1700
+ font-size: clamp(1.125rem, 2.5vw, 1.375rem);
1701
+ letter-spacing: -0.02em;
1702
+ }
1703
+
1704
+ .SectionHeading-module_sizeMd {
1705
+ font-size: clamp(1.5rem, 3vw, 2rem);
1706
+ }
1707
+
1708
+ .SectionHeading-module_sizeLg {
1709
+ font-size: clamp(1.75rem, 4vw, 2.75rem);
1710
+ }
1711
+
1712
+ /* \u2014 \u0412\u044B\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u043D\u0438\u0435 \u2014 */
1699
1713
  .SectionHeading-module_alignLeft {
1700
1714
  text-align: left;
1701
1715
  }
@@ -1704,6 +1718,7 @@ __styleInject(`@charset "UTF-8";
1704
1718
  text-align: center;
1705
1719
  }
1706
1720
 
1721
+ /* \u2014 Wrapper \u0434\u043B\u044F subtitle \u2014 */
1707
1722
  .SectionHeading-module_wrap {
1708
1723
  display: flex;
1709
1724
  flex-direction: column;
@@ -1731,15 +1746,21 @@ __styleInject(`@charset "UTF-8";
1731
1746
  font-size: 1.125rem;
1732
1747
  }
1733
1748
  }`);
1734
- var __default20 = { "heading": "SectionHeading-module_heading", "alignLeft": "SectionHeading-module_alignLeft", "alignCenter": "SectionHeading-module_alignCenter", "wrap": "SectionHeading-module_wrap", "wrapCenter": "SectionHeading-module_wrapCenter", "subtitle": "SectionHeading-module_subtitle" };
1749
+ var __default20 = { "heading": "SectionHeading-module_heading", "sizeSm": "SectionHeading-module_sizeSm", "sizeMd": "SectionHeading-module_sizeMd", "sizeLg": "SectionHeading-module_sizeLg", "alignLeft": "SectionHeading-module_alignLeft", "alignCenter": "SectionHeading-module_alignCenter", "wrap": "SectionHeading-module_wrap", "wrapCenter": "SectionHeading-module_wrapCenter", "subtitle": "SectionHeading-module_subtitle" };
1750
+ var SIZE_CLASS = {
1751
+ sm: __default20.sizeSm,
1752
+ md: __default20.sizeMd,
1753
+ lg: __default20.sizeLg
1754
+ };
1735
1755
  function SectionHeading({
1736
1756
  children,
1757
+ size = "md",
1737
1758
  as = "h2",
1738
1759
  align = "left",
1739
1760
  subtitle,
1740
1761
  className = ""
1741
1762
  }) {
1742
- const headingClass = `${__default20.heading} ${align === "center" ? __default20.alignCenter : __default20.alignLeft}${className ? ` ${className}` : ""}`;
1763
+ const headingClass = `${__default20.heading} ${SIZE_CLASS[size]} ${align === "center" ? __default20.alignCenter : __default20.alignLeft}${className ? ` ${className}` : ""}`;
1743
1764
  if (subtitle) {
1744
1765
  return /* @__PURE__ */ jsxs("div", { className: align === "center" ? __default20.wrapCenter : __default20.wrap, children: [
1745
1766
  createElement(as, { className: headingClass }, children),
@@ -6507,15 +6528,6 @@ __styleInject(`@charset "UTF-8";
6507
6528
  }
6508
6529
  }
6509
6530
 
6510
- .PromoSplit-module_heading {
6511
- font-size: clamp(1.75rem, 4vw, 2.75rem);
6512
- font-weight: 700;
6513
- line-height: 1.1;
6514
- letter-spacing: -0.03em;
6515
- color: var(--fg);
6516
- text-wrap: balance;
6517
- }
6518
-
6519
6531
  .PromoSplit-module_description {
6520
6532
  font-size: 1rem;
6521
6533
  line-height: 1.625;
@@ -6601,7 +6613,7 @@ __styleInject(`@charset "UTF-8";
6601
6613
  align-items: center;
6602
6614
  justify-content: center;
6603
6615
  }`);
6604
- var __default63 = { "root": "PromoSplit-module_root", "rootNoVertical": "PromoSplit-module_rootNoVertical", "grid": "PromoSplit-module_grid", "gridReversed": "PromoSplit-module_gridReversed PromoSplit-module_grid", "textColumn": "PromoSplit-module_textColumn", "textColumnLtr": "PromoSplit-module_textColumnLtr", "heading": "PromoSplit-module_heading", "description": "PromoSplit-module_description", "features": "PromoSplit-module_features", "feature": "PromoSplit-module_feature", "featureTitle": "PromoSplit-module_featureTitle", "featureDesc": "PromoSplit-module_featureDesc", "mediaColumn": "PromoSplit-module_mediaColumn", "mediaColumnLtr": "PromoSplit-module_mediaColumnLtr", "mediaBox": "PromoSplit-module_mediaBox", "mediaContent": "PromoSplit-module_mediaContent", "mediaPlaceholder": "PromoSplit-module_mediaPlaceholder", "placeholderCircle": "PromoSplit-module_placeholderCircle" };
6616
+ var __default63 = { "root": "PromoSplit-module_root", "rootNoVertical": "PromoSplit-module_rootNoVertical", "grid": "PromoSplit-module_grid", "gridReversed": "PromoSplit-module_gridReversed PromoSplit-module_grid", "textColumn": "PromoSplit-module_textColumn", "textColumnLtr": "PromoSplit-module_textColumnLtr", "description": "PromoSplit-module_description", "features": "PromoSplit-module_features", "feature": "PromoSplit-module_feature", "featureTitle": "PromoSplit-module_featureTitle", "featureDesc": "PromoSplit-module_featureDesc", "mediaColumn": "PromoSplit-module_mediaColumn", "mediaColumnLtr": "PromoSplit-module_mediaColumnLtr", "mediaBox": "PromoSplit-module_mediaBox", "mediaContent": "PromoSplit-module_mediaContent", "mediaPlaceholder": "PromoSplit-module_mediaPlaceholder", "placeholderCircle": "PromoSplit-module_placeholderCircle" };
6605
6617
  function PromoSplit({
6606
6618
  heading,
6607
6619
  description,
@@ -6615,7 +6627,7 @@ function PromoSplit({
6615
6627
  const noVerticalClass = verticalPadding === "none" ? ` ${__default63.rootNoVertical}` : "";
6616
6628
  return /* @__PURE__ */ jsx("section", { className: `${__default63.root}${noVerticalClass}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxs("div", { className: isLeft ? __default63.gridReversed : __default63.grid, children: [
6617
6629
  /* @__PURE__ */ jsxs("div", { className: `${__default63.textColumn}${isLeft ? ` ${__default63.textColumnLtr}` : ""}`, children: [
6618
- /* @__PURE__ */ jsx("h2", { className: __default63.heading, children: heading }),
6630
+ /* @__PURE__ */ jsx(SectionHeading, { size: "lg", children: heading }),
6619
6631
  description && /* @__PURE__ */ jsx("p", { className: __default63.description, children: description }),
6620
6632
  features && features.length > 0 && /* @__PURE__ */ jsx("div", { className: __default63.features, children: features.map((feature, i) => /* @__PURE__ */ jsxs("div", { className: __default63.feature, children: [
6621
6633
  /* @__PURE__ */ jsx("h3", { className: __default63.featureTitle, children: feature.title }),
@@ -7046,25 +7058,6 @@ __styleInject(`@charset "UTF-8";
7046
7058
  }
7047
7059
  }
7048
7060
 
7049
- .PromoTestimonials-module_heading {
7050
- font-size: clamp(1.75rem, 4vw, 2.75rem);
7051
- font-weight: 700;
7052
- line-height: 1.1;
7053
- letter-spacing: -0.03em;
7054
- color: var(--fg);
7055
- text-wrap: balance;
7056
- }
7057
-
7058
- .PromoTestimonials-module_subtitle {
7059
- margin-top: 0.75rem;
7060
- font-size: 1rem;
7061
- color: var(--fg-secondary);
7062
- line-height: 1.625;
7063
- max-width: 32rem;
7064
- margin-left: auto;
7065
- margin-right: auto;
7066
- }
7067
-
7068
7061
  .PromoTestimonials-module_cardsSection {
7069
7062
  padding: 0 1.5rem 2rem;
7070
7063
  }
@@ -7157,7 +7150,7 @@ __styleInject(`@charset "UTF-8";
7157
7150
  background: var(--bg-secondary);
7158
7151
  overflow: hidden;
7159
7152
  }`);
7160
- var __default66 = { "root": "PromoTestimonials-module_root", "rootNoVertical": "PromoTestimonials-module_rootNoVertical", "wrapper": "PromoTestimonials-module_wrapper", "avatarSection": "PromoTestimonials-module_avatarSection", "avatarStack": "PromoTestimonials-module_avatarStack", "avatarRing": "PromoTestimonials-module_avatarRing", "overflowBadge": "PromoTestimonials-module_overflowBadge", "overflowCircle": "PromoTestimonials-module_overflowCircle", "headingSection": "PromoTestimonials-module_headingSection", "heading": "PromoTestimonials-module_heading", "subtitle": "PromoTestimonials-module_subtitle", "cardsSection": "PromoTestimonials-module_cardsSection", "cardsGrid": "PromoTestimonials-module_cardsGrid", "card": "PromoTestimonials-module_card", "quote": "PromoTestimonials-module_quote", "author": "PromoTestimonials-module_author", "authorInfo": "PromoTestimonials-module_authorInfo", "authorName": "PromoTestimonials-module_authorName", "authorRole": "PromoTestimonials-module_authorRole", "mediaSection": "PromoTestimonials-module_mediaSection", "mediaBox": "PromoTestimonials-module_mediaBox" };
7153
+ var __default66 = { "root": "PromoTestimonials-module_root", "rootNoVertical": "PromoTestimonials-module_rootNoVertical", "wrapper": "PromoTestimonials-module_wrapper", "avatarSection": "PromoTestimonials-module_avatarSection", "avatarStack": "PromoTestimonials-module_avatarStack", "avatarRing": "PromoTestimonials-module_avatarRing", "overflowBadge": "PromoTestimonials-module_overflowBadge", "overflowCircle": "PromoTestimonials-module_overflowCircle", "headingSection": "PromoTestimonials-module_headingSection", "cardsSection": "PromoTestimonials-module_cardsSection", "cardsGrid": "PromoTestimonials-module_cardsGrid", "card": "PromoTestimonials-module_card", "quote": "PromoTestimonials-module_quote", "author": "PromoTestimonials-module_author", "authorInfo": "PromoTestimonials-module_authorInfo", "authorName": "PromoTestimonials-module_authorName", "authorRole": "PromoTestimonials-module_authorRole", "mediaSection": "PromoTestimonials-module_mediaSection", "mediaBox": "PromoTestimonials-module_mediaBox" };
7161
7154
  function PromoTestimonials({
7162
7155
  heading,
7163
7156
  subtitle,
@@ -7193,10 +7186,7 @@ function PromoTestimonials({
7193
7186
  testimonials.length - 5
7194
7187
  ] }) })
7195
7188
  ] }) }),
7196
- /* @__PURE__ */ jsxs("div", { className: __default66.headingSection, children: [
7197
- /* @__PURE__ */ jsx("h2", { className: __default66.heading, children: heading }),
7198
- subtitle && /* @__PURE__ */ jsx("p", { className: __default66.subtitle, children: subtitle })
7199
- ] }),
7189
+ /* @__PURE__ */ jsx("div", { className: __default66.headingSection, children: /* @__PURE__ */ jsx(SectionHeading, { size: "lg", align: "center", subtitle, children: heading }) }),
7200
7190
  /* @__PURE__ */ jsx("div", { className: __default66.cardsSection, children: /* @__PURE__ */ jsx("div", { className: __default66.cardsGrid, children: testimonials.map((t, i) => {
7201
7191
  const initials = t.name.split(" ").map((n) => n[0]).join("").toUpperCase();
7202
7192
  return /* @__PURE__ */ jsxs(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dmitriikapustin/ui",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "description": "Universal UI/UX Kit — React 19 component library with Atomic Design, CSS custom properties, and SCSS modules",
5
5
  "author": "Kapustin Team",
6
6
  "license": "MIT",